var autoprefixer = (function () {
'use strict';
var global$1 = (typeof global !== "undefined" ? global :
typeof self !== "undefined" ? self :
typeof window !== "undefined" ? window : {});
// shim for using process in browser
// based off https://github.com/defunctzombie/node-process/blob/master/browser.js
function defaultSetTimout() {
throw new Error('setTimeout has not been defined');
}
function defaultClearTimeout () {
throw new Error('clearTimeout has not been defined');
}
var cachedSetTimeout = defaultSetTimout;
var cachedClearTimeout = defaultClearTimeout;
if (typeof global$1.setTimeout === 'function') {
cachedSetTimeout = setTimeout;
}
if (typeof global$1.clearTimeout === 'function') {
cachedClearTimeout = clearTimeout;
}
function runTimeout(fun) {
if (cachedSetTimeout === setTimeout) {
//normal enviroments in sane situations
return setTimeout(fun, 0);
}
// if setTimeout wasn't available but was latter defined
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
cachedSetTimeout = setTimeout;
return setTimeout(fun, 0);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedSetTimeout(fun, 0);
} catch(e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedSetTimeout.call(null, fun, 0);
} catch(e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
return cachedSetTimeout.call(this, fun, 0);
}
}
}
function runClearTimeout(marker) {
if (cachedClearTimeout === clearTimeout) {
//normal enviroments in sane situations
return clearTimeout(marker);
}
// if clearTimeout wasn't available but was latter defined
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
cachedClearTimeout = clearTimeout;
return clearTimeout(marker);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedClearTimeout(marker);
} catch (e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedClearTimeout.call(null, marker);
} catch (e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
return cachedClearTimeout.call(this, marker);
}
}
}
var queue = [];
var draining = false;
var currentQueue;
var queueIndex = -1;
function cleanUpNextTick() {
if (!draining || !currentQueue) {
return;
}
draining = false;
if (currentQueue.length) {
queue = currentQueue.concat(queue);
} else {
queueIndex = -1;
}
if (queue.length) {
drainQueue();
}
}
function drainQueue() {
if (draining) {
return;
}
var timeout = runTimeout(cleanUpNextTick);
draining = true;
var len = queue.length;
while(len) {
currentQueue = queue;
queue = [];
while (++queueIndex 1) {
for (var i = 1; i ';
if (typeof this.line !== 'undefined') {
this.message += ':' + this.line + ':' + this.column;
}
this.message += ': ' + this.reason;
}
showSourceCode (color) {
if (!this.source) return ''
let css = this.source;
if (color == null) color = null;
if (path$2) {
if (color) css = path$2(css);
}
let lines = css.split(/\r?\n/);
let start = Math.max(this.line - 3, 0);
let end = Math.min(this.line + 2, lines.length);
let maxWidth = String(end).length;
let mark, aside;
if (color) {
mark = text => bold(red(text));
aside = text => gray(text);
} else {
mark = aside = str => str;
}
return lines
.slice(start, end)
.map((line, index) => {
let number = start + 1 + index;
let gutter = ' ' + (' ' + number).slice(-maxWidth) + ' | ';
if (number === this.line) {
let spacing =
aside(gutter.replace(/\d/g, ' ')) +
line.slice(0, this.column - 1).replace(/[^\t]/g, ' ');
return mark('>') + aside(gutter) + line + '\n ' + spacing + mark('^')
}
return ' ' + aside(gutter) + line
})
.join('\n')
}
toString () {
let code = this.showSourceCode();
if (code) {
code = '\n\n' + code + '\n';
}
return this.name + ': ' + this.message + code
}
}
var cssSyntaxError = CssSyntaxError;
CssSyntaxError.default = CssSyntaxError;
const DEFAULT_RAW = {
colon: ': ',
indent: ' ',
beforeDecl: '\n',
beforeRule: '\n',
beforeOpen: ' ',
beforeClose: '\n',
beforeComment: '\n',
after: '\n',
emptyBody: '',
commentLeft: ' ',
commentRight: ' ',
semicolon: false
};
function capitalize$1 (str) {
return str[0].toUpperCase() + str.slice(1)
}
class Stringifier {
constructor (builder) {
this.builder = builder;
}
stringify (node, semicolon) {
/* istanbul ignore if */
if (!this[node.type]) {
throw new Error(
'Unknown AST node type ' +
node.type +
'. ' +
'Maybe you need to change PostCSS stringifier.'
)
}
this[node.type](node, semicolon);
}
root (node) {
this.body(node);
if (node.raws.after) this.builder(node.raws.after);
}
comment (node) {
let left = this.raw(node, 'left', 'commentLeft');
let right = this.raw(node, 'right', 'commentRight');
this.builder('/*' + left + node.text + right + '*/', node);
}
decl (node, semicolon) {
let between = this.raw(node, 'between', 'colon');
let string = node.prop + between + this.rawValue(node, 'value');
if (node.important) {
string += node.raws.important || ' !important';
}
if (semicolon) string += ';';
this.builder(string, node);
}
rule (node) {
this.block(node, this.rawValue(node, 'selector'));
if (node.raws.ownSemicolon) {
this.builder(node.raws.ownSemicolon, node, 'end');
}
}
atrule (node, semicolon) {
let name = '@' + node.name;
let params = node.params ? this.rawValue(node, 'params') : '';
if (typeof node.raws.afterName !== 'undefined') {
name += node.raws.afterName;
} else if (params) {
name += ' ';
}
if (node.nodes) {
this.block(node, name + params);
} else {
let end = (node.raws.between || '') + (semicolon ? ';' : '');
this.builder(name + params + end, node);
}
}
body (node) {
let last = node.nodes.length - 1;
while (last > 0) {
if (node.nodes[last].type !== 'comment') break
last -= 1;
}
let semicolon = this.raw(node, 'semicolon');
for (let i = 0; i {
value = i.raws[own];
if (typeof value !== 'undefined') return false
});
}
}
if (typeof value === 'undefined') value = DEFAULT_RAW[detect];
root.rawCache[detect] = value;
return value
}
rawSemicolon (root) {
let value;
root.walk(i => {
if (i.nodes && i.nodes.length && i.last.type === 'decl') {
value = i.raws.semicolon;
if (typeof value !== 'undefined') return false
}
});
return value
}
rawEmptyBody (root) {
let value;
root.walk(i => {
if (i.nodes && i.nodes.length === 0) {
value = i.raws.after;
if (typeof value !== 'undefined') return false
}
});
return value
}
rawIndent (root) {
if (root.raws.indent) return root.raws.indent
let value;
root.walk(i => {
let p = i.parent;
if (p && p !== root && p.parent && p.parent === root) {
if (typeof i.raws.before !== 'undefined') {
let parts = i.raws.before.split('\n');
value = parts[parts.length - 1];
value = value.replace(/\S/g, '');
return false
}
}
});
return value
}
rawBeforeComment (root, node) {
let value;
root.walkComments(i => {
if (typeof i.raws.before !== 'undefined') {
value = i.raws.before;
if (value.includes('\n')) {
value = value.replace(/[^\n]+$/, '');
}
return false
}
});
if (typeof value === 'undefined') {
value = this.raw(node, null, 'beforeDecl');
} else if (value) {
value = value.replace(/\S/g, '');
}
return value
}
rawBeforeDecl (root, node) {
let value;
root.walkDecls(i => {
if (typeof i.raws.before !== 'undefined') {
value = i.raws.before;
if (value.includes('\n')) {
value = value.replace(/[^\n]+$/, '');
}
return false
}
});
if (typeof value === 'undefined') {
value = this.raw(node, null, 'beforeRule');
} else if (value) {
value = value.replace(/\S/g, '');
}
return value
}
rawBeforeRule (root) {
let value;
root.walk(i => {
if (i.nodes && (i.parent !== root || root.first !== i)) {
if (typeof i.raws.before !== 'undefined') {
value = i.raws.before;
if (value.includes('\n')) {
value = value.replace(/[^\n]+$/, '');
}
return false
}
}
});
if (value) value = value.replace(/\S/g, '');
return value
}
rawBeforeClose (root) {
let value;
root.walk(i => {
if (i.nodes && i.nodes.length > 0) {
if (typeof i.raws.after !== 'undefined') {
value = i.raws.after;
if (value.includes('\n')) {
value = value.replace(/[^\n]+$/, '');
}
return false
}
}
});
if (value) value = value.replace(/\S/g, '');
return value
}
rawBeforeOpen (root) {
let value;
root.walk(i => {
if (i.type !== 'decl') {
value = i.raws.between;
if (typeof value !== 'undefined') return false
}
});
return value
}
rawColon (root) {
let value;
root.walkDecls(i => {
if (typeof i.raws.between !== 'undefined') {
value = i.raws.between.replace(/[^\s:]/g, '');
return false
}
});
return value
}
beforeAfter (node, detect) {
let value;
if (node.type === 'decl') {
value = this.raw(node, null, 'beforeDecl');
} else if (node.type === 'comment') {
value = this.raw(node, null, 'beforeComment');
} else if (detect === 'before') {
value = this.raw(node, null, 'beforeRule');
} else {
value = this.raw(node, null, 'beforeClose');
}
let buf = node.parent;
let depth = 0;
while (buf && buf.type !== 'root') {
depth += 1;
buf = buf.parent;
}
if (value.includes('\n')) {
let indent = this.raw(node, null, 'indent');
if (indent.length) {
for (let step = 0; step cloneNode(j, cloned));
} else {
if (type === 'object' && value !== null) value = cloneNode(value);
cloned[i] = value;
}
}
return cloned
}
class Node {
constructor (defaults = {}) {
this.raws = {};
this[isClean$2] = false;
for (let name in defaults) {
if (name === 'nodes') {
this.nodes = [];
for (let node of defaults[name]) {
if (typeof node.clone === 'function') {
this.append(node.clone());
} else {
this.append(node);
}
}
} else {
this[name] = defaults[name];
}
}
}
error (message, opts = {}) {
if (this.source) {
let pos = this.positionBy(opts);
return this.source.input.error(message, pos.line, pos.column, opts)
}
return new cssSyntaxError(message)
}
warn (result, text, opts) {
let data = { node: this };
for (let i in opts) data[i] = opts[i];
return result.warn(text, data)
}
remove () {
if (this.parent) {
this.parent.removeChild(this);
}
this.parent = undefined;
return this
}
toString (stringifier = stringify_1$1) {
if (stringifier.stringify) stringifier = stringifier.stringify;
let result = '';
stringifier(this, i => {
result += i;
});
return result
}
clone (overrides = {}) {
let cloned = cloneNode(this);
for (let name in overrides) {
cloned[name] = overrides[name];
}
return cloned
}
cloneBefore (overrides = {}) {
let cloned = this.clone(overrides);
this.parent.insertBefore(this, cloned);
return cloned
}
cloneAfter (overrides = {}) {
let cloned = this.clone(overrides);
this.parent.insertAfter(this, cloned);
return cloned
}
replaceWith (...nodes) {
if (this.parent) {
let bookmark = this;
let foundSelf = false;
for (let node of nodes) {
if (node === this) {
foundSelf = true;
} else if (foundSelf) {
this.parent.insertAfter(bookmark, node);
bookmark = node;
} else {
this.parent.insertBefore(bookmark, node);
}
}
if (!foundSelf) {
this.remove();
}
}
return this
}
next () {
if (!this.parent) return undefined
let index = this.parent.index(this);
return this.parent.nodes[index + 1]
}
prev () {
if (!this.parent) return undefined
let index = this.parent.index(this);
return this.parent.nodes[index - 1]
}
before (add) {
this.parent.insertBefore(this, add);
return this
}
after (add) {
this.parent.insertAfter(this, add);
return this
}
root () {
let result = this;
while (result.parent) result = result.parent;
return result
}
raw (prop, defaultType) {
let str = new stringifier();
return str.raw(this, prop, defaultType)
}
cleanRaws (keepBetween) {
delete this.raws.before;
delete this.raws.after;
if (!keepBetween) delete this.raws.between;
}
toJSON (_, inputs) {
let fixed = {};
let emitInputs = inputs == null;
inputs = inputs || new Map();
let inputsNextIndex = 0;
for (let name in this) {
if (!Object.prototype.hasOwnProperty.call(this, name)) {
// istanbul ignore next
continue
}
if (name === 'parent') continue
let value = this[name];
if (Array.isArray(value)) {
fixed[name] = value.map(i => {
if (typeof i === 'object' && i.toJSON) {
return i.toJSON(null, inputs)
} else {
return i
}
});
} else if (typeof value === 'object' && value.toJSON) {
fixed[name] = value.toJSON(null, inputs);
} else if (name === 'source') {
let inputId = inputs.get(value.input);
if (inputId == null) {
inputId = inputsNextIndex;
inputs.set(value.input, inputsNextIndex);
inputsNextIndex++;
}
fixed[name] = {
inputId,
start: value.start,
end: value.end
};
} else {
fixed[name] = value;
}
}
if (emitInputs) {
fixed.inputs = [...inputs.keys()].map(input => input.toJSON());
}
return fixed
}
positionInside (index) {
let string = this.toString();
let column = this.source.start.column;
let line = this.source.start.line;
for (let i = 0; i node.root().toProxy()
} else {
return node[prop]
}
}
}
}
toProxy () {
if (!this.proxyCache) {
this.proxyCache = new Proxy(this, this.getProxyProcessor());
}
return this.proxyCache
}
addToError (error) {
error.postcssNode = this;
if (error.stack && this.source && /\n\s{4}at /.test(error.stack)) {
let s = this.source;
error.stack = error.stack.replace(
/\n\s{4}at /,
`$&${s.input.from}:${s.start.line}:${s.start.column}$&`
);
}
return error
}
markDirty () {
if (this[isClean$2]) {
this[isClean$2] = false;
let next = this;
while ((next = next.parent)) {
next[isClean$2] = false;
}
}
}
get proxyOf () {
return this
}
}
var node_1 = Node;
Node.default = Node;
class Declaration$1 extends node_1 {
constructor (defaults) {
if (
defaults &&
typeof defaults.value !== 'undefined' &&
typeof defaults.value !== 'string'
) {
defaults = { ...defaults, value: String(defaults.value) };
}
super(defaults);
this.type = 'decl';
}
get variable () {
return this.prop.startsWith('--') || this.prop[0] === '$'
}
}
var declaration$1 = Declaration$1;
Declaration$1.default = Declaration$1;
var lookup = [];
var revLookup = [];
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
var inited = false;
function init () {
inited = true;
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
for (var i = 0, len = code.length; i 0) {
throw new Error('Invalid string. Length must be a multiple of 4')
}
// the number of equal signs (place holders)
// if there are two placeholders, than the two characters before it
// represent one byte
// if there is only one, then the three characters before it represent 2 bytes
// this is just a cheap hack to not do indexOf twice
placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;
// base64 is 4/3 + up to two characters of the original data
arr = new Arr(len * 3 / 4 - placeHolders);
// if there are placeholders, only get up to the last complete 4 chars
l = placeHolders > 0 ? len - 4 : len;
var L = 0;
for (i = 0, j = 0; i > 16) & 0xFF;
arr[L++] = (tmp >> 8) & 0xFF;
arr[L++] = tmp & 0xFF;
}
if (placeHolders === 2) {
tmp = (revLookup[b64.charCodeAt(i)] > 4);
arr[L++] = tmp & 0xFF;
} else if (placeHolders === 1) {
tmp = (revLookup[b64.charCodeAt(i)] > 2);
arr[L++] = (tmp >> 8) & 0xFF;
arr[L++] = tmp & 0xFF;
}
return arr
}
function tripletToBase64 (num) {
return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
}
function encodeChunk (uint8, start, end) {
var tmp;
var output = [];
for (var i = start; i len2 ? len2 : (i + maxChunkLength)));
}
// pad the end with zeros, but make sure to not forget the extra bytes
if (extraBytes === 1) {
tmp = uint8[len - 1];
output += lookup[tmp >> 2];
output += lookup[(tmp > 10];
output += lookup[(tmp >> 4) & 0x3F];
output += lookup[(tmp > 1;
var nBits = -7;
var i = isLE ? (nBytes - 1) : 0;
var d = isLE ? -1 : 1;
var s = buffer[offset + i];
i += d;
e = s & ((1 >= (-nBits);
nBits += eLen;
for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
m = e & ((1 >= (-nBits);
nBits += mLen;
for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
if (e === 0) {
e = 1 - eBias;
} else if (e === eMax) {
return m ? NaN : ((s ? -1 : 1) * Infinity)
} else {
m = m + Math.pow(2, mLen);
e = e - eBias;
}
return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
}
function write (buffer, value, offset, isLE, mLen, nBytes) {
var e, m, c;
var eLen = nBytes * 8 - mLen - 1;
var eMax = (1 > 1;
var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);
var i = isLE ? 0 : (nBytes - 1);
var d = isLE ? 1 : -1;
var s = value = 1) {
value += rt / c;
} else {
value += rt * Math.pow(2, 1 - eBias);
}
if (value * c >= 2) {
e++;
c /= 2;
}
if (e + eBias >= eMax) {
m = 0;
e = eMax;
} else if (e + eBias >= 1) {
m = (value * c - 1) * Math.pow(2, mLen);
e = e + eBias;
} else {
m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
e = 0;
}
}
for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
e = (e 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
buffer[offset + i - d] |= s * 128;
}
var toString = {}.toString;
var isArray$1 = Array.isArray || function (arr) {
return toString.call(arr) == '[object Array]';
};
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh
* @license MIT
*/
var INSPECT_MAX_BYTES = 50;
/**
* If `Buffer.TYPED_ARRAY_SUPPORT`:
* === true Use Uint8Array implementation (fastest)
* === false Use Object implementation (most compatible, even IE6)
*
* Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
* Opera 11.6+, iOS 4.2+.
*
* Due to various browser bugs, sometimes the Object implementation will be used even
* when the browser supports typed arrays.
*
* Note:
*
* - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
* See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
*
* - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
*
* - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
* incorrect length in some situations.
* We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
* get the Object implementation, which is slower but behaves correctly.
*/
Buffer.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined
? global$1.TYPED_ARRAY_SUPPORT
: true;
/*
* Export kMaxLength after typed array support is determined.
*/
kMaxLength();
function kMaxLength () {
return Buffer.TYPED_ARRAY_SUPPORT
? 0x7fffffff
: 0x3fffffff
}
function createBuffer (that, length) {
if (kMaxLength() = kMaxLength()) {
throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
'size: 0x' + kMaxLength().toString(16) + ' bytes')
}
return length | 0
}
Buffer.isBuffer = isBuffer;
function internalIsBuffer (b) {
return !!(b != null && b._isBuffer)
}
Buffer.compare = function compare (a, b) {
if (!internalIsBuffer(a) || !internalIsBuffer(b)) {
throw new TypeError('Arguments must be Buffers')
}
if (a === b) return 0
var x = a.length;
var y = b.length;
for (var i = 0, len = Math.min(x, y); i >> 1
case 'base64':
return base64ToBytes(string).length
default:
if (loweredCase) return utf8ToBytes(string).length // assume utf8
encoding = ('' + encoding).toLowerCase();
loweredCase = true;
}
}
}
Buffer.byteLength = byteLength;
function slowToString (encoding, start, end) {
var loweredCase = false;
// No need to verify that "this.length this.length. Done here to prevent potential uint32
// coercion fail below.
if (start > this.length) {
return ''
}
if (end === undefined || end > this.length) {
end = this.length;
}
if (end >>= 0;
start >>>= 0;
if (end 0) {
str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');
if (this.length > max) str += ' ... ';
}
return ''
};
Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
if (!internalIsBuffer(target)) {
throw new TypeError('Argument must be a Buffer')
}
if (start === undefined) {
start = 0;
}
if (end === undefined) {
end = target ? target.length : 0;
}
if (thisStart === undefined) {
thisStart = 0;
}
if (thisEnd === undefined) {
thisEnd = this.length;
}
if (start target.length || thisStart this.length) {
throw new RangeError('out of range index')
}
if (thisStart >= thisEnd && start >= end) {
return 0
}
if (thisStart >= thisEnd) {
return -1
}
if (start >= end) {
return 1
}
start >>>= 0;
end >>>= 0;
thisStart >>>= 0;
thisEnd >>>= 0;
if (this === target) return 0
var x = thisEnd - thisStart;
var y = end - start;
var len = Math.min(x, y);
var thisCopy = this.slice(thisStart, thisEnd);
var targetCopy = target.slice(start, end);
for (var i = 0; i = `byteOffset`,
// OR the last index of `val` in `buffer` at offset 0x7fffffff) {
byteOffset = 0x7fffffff;
} else if (byteOffset = buffer.length) {
if (dir) return -1
else byteOffset = buffer.length - 1;
} else if (byteOffset arrLength) byteOffset = arrLength - valLength;
for (i = byteOffset; i >= 0; i--) {
var found = true;
for (var j = 0; j remaining) {
length = remaining;
}
}
// must be an even number of digits
var strLen = string.length;
if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
if (length > strLen / 2) {
length = strLen / 2;
}
for (var i = 0; i remaining) length = remaining;
if ((string.length > 0 && (length this.length) {
throw new RangeError('Attempt to write outside buffer bounds')
}
if (!encoding) encoding = 'utf8';
var loweredCase = false;
for (;;) {
switch (encoding) {
case 'hex':
return hexWrite(this, string, offset, length)
case 'utf8':
case 'utf-8':
return utf8Write(this, string, offset, length)
case 'ascii':
return asciiWrite(this, string, offset, length)
case 'latin1':
case 'binary':
return latin1Write(this, string, offset, length)
case 'base64':
// Warning: maxLength not taken into account in base64Write
return base64Write(this, string, offset, length)
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return ucs2Write(this, string, offset, length)
default:
if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
encoding = ('' + encoding).toLowerCase();
loweredCase = true;
}
}
};
Buffer.prototype.toJSON = function toJSON () {
return {
type: 'Buffer',
data: Array.prototype.slice.call(this._arr || this, 0)
}
};
function base64Slice (buf, start, end) {
if (start === 0 && end === buf.length) {
return fromByteArray(buf)
} else {
return fromByteArray(buf.slice(start, end))
}
}
function utf8Slice (buf, start, end) {
end = Math.min(buf.length, end);
var res = [];
var i = start;
while (i 0xEF) ? 4
: (firstByte > 0xDF) ? 3
: (firstByte > 0xBF) ? 2
: 1;
if (i + bytesPerSequence 0x7F) {
codePoint = tempCodePoint;
}
}
break
case 3:
secondByte = buf[i + 1];
thirdByte = buf[i + 2];
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
tempCodePoint = (firstByte & 0xF) 0x7FF && (tempCodePoint 0xDFFF)) {
codePoint = tempCodePoint;
}
}
break
case 4:
secondByte = buf[i + 1];
thirdByte = buf[i + 2];
fourthByte = buf[i + 3];
if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
tempCodePoint = (firstByte & 0xF) 0xFFFF && tempCodePoint 0xFFFF) {
// encode to utf16 (surrogate pair dance)
codePoint -= 0x10000;
res.push(codePoint >>> 10 & 0x3FF | 0xD800);
codePoint = 0xDC00 | codePoint & 0x3FF;
}
res.push(codePoint);
i += bytesPerSequence;
}
return decodeCodePointsArray(res)
}
// Based on http://stackoverflow.com/a/22747272/680742, the browser with
// the lowest limit is Chrome, with 0x10000 args.
// We go 1 magnitude less, for safety
var MAX_ARGUMENTS_LENGTH = 0x1000;
function decodeCodePointsArray (codePoints) {
var len = codePoints.length;
if (len len) end = len;
var out = '';
for (var i = start; i len) {
start = len;
}
if (end len) {
end = len;
}
if (end length) throw new RangeError('Trying to access beyond buffer length')
}
Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
offset = offset | 0;
byteLength = byteLength | 0;
if (!noAssert) checkOffset(offset, byteLength, this.length);
var val = this[offset];
var mul = 1;
var i = 0;
while (++i 0 && (mul *= 0x100)) {
val += this[offset + --byteLength] * mul;
}
return val
};
Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
if (!noAssert) checkOffset(offset, 1, this.length);
return this[offset]
};
Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 2, this.length);
return this[offset] | (this[offset + 1] = mul) val -= Math.pow(2, 8 * byteLength);
return val
};
Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
offset = offset | 0;
byteLength = byteLength | 0;
if (!noAssert) checkOffset(offset, byteLength, this.length);
var i = byteLength;
var mul = 1;
var val = this[offset + --i];
while (i > 0 && (mul *= 0x100)) {
val += this[offset + --i] * mul;
}
mul *= 0x80;
if (val >= mul) val -= Math.pow(2, 8 * byteLength);
return val
};
Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
if (!noAssert) checkOffset(offset, 1, this.length);
if (!(this[offset] & 0x80)) return (this[offset])
return ((0xff - this[offset] + 1) * -1)
};
Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
if (!noAssert) checkOffset(offset, 2, this.length);
var val = this[offset] | (this[offset + 1] max || value buf.length) throw new RangeError('Index out of range')
}
Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
value = +value;
offset = offset | 0;
byteLength = byteLength | 0;
if (!noAssert) {
var maxBytes = Math.pow(2, 8 * byteLength) - 1;
checkInt(this, value, offset, byteLength, maxBytes, 0);
}
var mul = 1;
var i = 0;
this[offset] = value & 0xFF;
while (++i = 0 && (mul *= 0x100)) {
this[offset + i] = (value / mul) & 0xFF;
}
return offset + byteLength
};
Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
value = +value;
offset = offset | 0;
if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);
if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
this[offset] = (value & 0xff);
return offset + 1
};
function objectWriteUInt16 (buf, value, offset, littleEndian) {
if (value >>
(littleEndian ? i : 1 - i) * 8;
}
}
Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
value = +value;
offset = offset | 0;
if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset] = (value & 0xff);
this[offset + 1] = (value >>> 8);
} else {
objectWriteUInt16(this, value, offset, true);
}
return offset + 2
};
Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
value = +value;
offset = offset | 0;
if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset] = (value >>> 8);
this[offset + 1] = (value & 0xff);
} else {
objectWriteUInt16(this, value, offset, false);
}
return offset + 2
};
function objectWriteUInt32 (buf, value, offset, littleEndian) {
if (value >> (littleEndian ? i : 3 - i) * 8) & 0xff;
}
}
Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
value = +value;
offset = offset | 0;
if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset + 3] = (value >>> 24);
this[offset + 2] = (value >>> 16);
this[offset + 1] = (value >>> 8);
this[offset] = (value & 0xff);
} else {
objectWriteUInt32(this, value, offset, true);
}
return offset + 4
};
Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
value = +value;
offset = offset | 0;
if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset] = (value >>> 24);
this[offset + 1] = (value >>> 16);
this[offset + 2] = (value >>> 8);
this[offset + 3] = (value & 0xff);
} else {
objectWriteUInt32(this, value, offset, false);
}
return offset + 4
};
Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
value = +value;
offset = offset | 0;
if (!noAssert) {
var limit = Math.pow(2, 8 * byteLength - 1);
checkInt(this, value, offset, byteLength, limit - 1, -limit);
}
var i = 0;
var mul = 1;
var sub = 0;
this[offset] = value & 0xFF;
while (++i > 0) - sub & 0xFF;
}
return offset + byteLength
};
Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
value = +value;
offset = offset | 0;
if (!noAssert) {
var limit = Math.pow(2, 8 * byteLength - 1);
checkInt(this, value, offset, byteLength, limit - 1, -limit);
}
var i = byteLength - 1;
var mul = 1;
var sub = 0;
this[offset + i] = value & 0xFF;
while (--i >= 0 && (mul *= 0x100)) {
if (value > 0) - sub & 0xFF;
}
return offset + byteLength
};
Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
value = +value;
offset = offset | 0;
if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);
if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
if (value >> 8);
} else {
objectWriteUInt16(this, value, offset, true);
}
return offset + 2
};
Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
value = +value;
offset = offset | 0;
if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset] = (value >>> 8);
this[offset + 1] = (value & 0xff);
} else {
objectWriteUInt16(this, value, offset, false);
}
return offset + 2
};
Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
value = +value;
offset = offset | 0;
if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
if (Buffer.TYPED_ARRAY_SUPPORT) {
this[offset] = (value & 0xff);
this[offset + 1] = (value >>> 8);
this[offset + 2] = (value >>> 16);
this[offset + 3] = (value >>> 24);
} else {
objectWriteUInt32(this, value, offset, true);
}
return offset + 4
};
Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
value = +value;
offset = offset | 0;
if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
if (value >> 24);
this[offset + 1] = (value >>> 16);
this[offset + 2] = (value >>> 8);
this[offset + 3] = (value & 0xff);
} else {
objectWriteUInt32(this, value, offset, false);
}
return offset + 4
};
function checkIEEE754 (buf, value, offset, ext, max, min) {
if (offset + ext > buf.length) throw new RangeError('Index out of range')
if (offset = target.length) targetStart = target.length;
if (!targetStart) targetStart = 0;
if (end > 0 && end = this.length) throw new RangeError('sourceStart out of bounds')
if (end this.length) end = this.length;
if (target.length - targetStart = 0; --i) {
target[i + targetStart] = this[i + start];
}
} else if (len >> 0;
end = end === undefined ? this.length : end >>> 0;
if (!val) val = 0;
var i;
if (typeof val === 'number') {
for (i = start; i 0xD7FF && codePoint 0xDBFF) {
// unexpected trail
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
continue
} else if (i + 1 === length) {
// unpaired lead
if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
continue
}
// valid lead
leadSurrogate = codePoint;
continue
}
// 2 leads in a row
if (codePoint -1) bytes.push(0xEF, 0xBF, 0xBD);
leadSurrogate = codePoint;
continue
}
// valid surrogate pair
codePoint = (leadSurrogate - 0xD800 -1) bytes.push(0xEF, 0xBF, 0xBD);
}
leadSurrogate = null;
// encode utf8
if (codePoint > 0x6 | 0xC0,
codePoint & 0x3F | 0x80
);
} else if (codePoint > 0xC | 0xE0,
codePoint >> 0x6 & 0x3F | 0x80,
codePoint & 0x3F | 0x80
);
} else if (codePoint > 0x12 | 0xF0,
codePoint >> 0xC & 0x3F | 0x80,
codePoint >> 0x6 & 0x3F | 0x80,
codePoint & 0x3F | 0x80
);
} else {
throw new Error('Invalid code point')
}
}
return bytes
}
function asciiToBytes (str) {
var byteArray = [];
for (var i = 0; i > 8;
lo = c % 256;
byteArray.push(lo);
byteArray.push(hi);
}
return byteArray
}
function base64ToBytes (str) {
return toByteArray(base64clean(str))
}
function blitBuffer (src, dst, offset, length) {
for (var i = 0; i = dst.length) || (i >= src.length)) break
dst[i + offset] = src[i];
}
return i
}
function isnan (val) {
return val !== val // eslint-disable-line no-self-compare
}
// the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence
// The _isBuffer check is for Safari 5-7 support, because it's missing
// Object.prototype.constructor. Remove this eventually
function isBuffer(obj) {
return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))
}
function isFastBuffer (obj) {
return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
}
// For Node v0.10 support. Remove this eventually.
function isSlowBuffer (obj) {
return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))
}
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// resolves . and .. elements in a path array with directory names there
// must be no slashes, empty elements, or device names (c:\) in the array
// (so also no leading and trailing slashes - it does not distinguish
// relative and absolute paths)
function normalizeArray(parts, allowAboveRoot) {
// if the path tries to go above the root, `up` ends up > 0
var up = 0;
for (var i = parts.length - 1; i >= 0; i--) {
var last = parts[i];
if (last === '.') {
parts.splice(i, 1);
} else if (last === '..') {
parts.splice(i, 1);
up++;
} else if (up) {
parts.splice(i, 1);
up--;
}
}
// if the path is allowed to go above the root, restore leading ..s
if (allowAboveRoot) {
for (; up--; up) {
parts.unshift('..');
}
}
return parts;
}
// Split a filename into [root, dir, basename, ext], unix version
// 'root' is just a slash, or nothing.
var splitPathRe =
/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
var splitPath = function(filename) {
return splitPathRe.exec(filename).slice(1);
};
// path.resolve([from ...], to)
// posix version
function resolve$3() {
var resolvedPath = '',
resolvedAbsolute = false;
for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
var path = (i >= 0) ? arguments[i] : '/';
// Skip empty and invalid entries
if (typeof path !== 'string') {
throw new TypeError('Arguments to path.resolve must be strings');
} else if (!path) {
continue;
}
resolvedPath = path + '/' + resolvedPath;
resolvedAbsolute = path.charAt(0) === '/';
}
// At this point the path should be resolved to a full absolute path, but
// handle relative paths to be safe (might happen when process.cwd() fails)
// Normalize the path
resolvedPath = normalizeArray(filter$1(resolvedPath.split('/'), function(p) {
return !!p;
}), !resolvedAbsolute).join('/');
return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
}
// path.normalize(path)
// posix version
function normalize$1(path) {
var isPathAbsolute = isAbsolute$1(path),
trailingSlash = substr(path, -1) === '/';
// Normalize the path
path = normalizeArray(filter$1(path.split('/'), function(p) {
return !!p;
}), !isPathAbsolute).join('/');
if (!path && !isPathAbsolute) {
path = '.';
}
if (path && trailingSlash) {
path += '/';
}
return (isPathAbsolute ? '/' : '') + path;
}
// posix version
function isAbsolute$1(path) {
return path.charAt(0) === '/';
}
// posix version
function join$1() {
var paths = Array.prototype.slice.call(arguments, 0);
return normalize$1(filter$1(paths, function(p, index) {
if (typeof p !== 'string') {
throw new TypeError('Arguments to path.join must be strings');
}
return p;
}).join('/'));
}
// path.relative(from, to)
// posix version
function relative$1(from, to) {
from = resolve$3(from).substr(1);
to = resolve$3(to).substr(1);
function trim(arr) {
var start = 0;
for (; start = 0; end--) {
if (arr[end] !== '') break;
}
if (start > end) return [];
return arr.slice(start, end - start + 1);
}
var fromParts = trim(from.split('/'));
var toParts = trim(to.split('/'));
var length = Math.min(fromParts.length, toParts.length);
var samePartsLength = length;
for (var i = 0; i = 0x80 (not a basic code point)',
'invalid-input': 'Invalid input'
};
/** Convenience shortcuts */
const baseMinusTMin = base - tMin;
const floor = Math.floor;
const stringFromCharCode = String.fromCharCode;
/*--------------------------------------------------------------------------*/
/**
* A generic error utility function.
* @private
* @param {String} type The error type.
* @returns {Error} Throws a `RangeError` with the applicable error message.
*/
function error$2(type) {
throw new RangeError(errors[type]);
}
/**
* A generic `Array#map` utility function.
* @private
* @param {Array} array The array to iterate over.
* @param {Function} callback The function that gets called for every array
* item.
* @returns {Array} A new array of values returned by the callback function.
*/
function map$1(array, fn) {
const result = [];
let length = array.length;
while (length--) {
result[length] = fn(array[length]);
}
return result;
}
/**
* A simple `Array#map`-like wrapper to work with domain name strings or email
* addresses.
* @private
* @param {String} domain The domain name or email address.
* @param {Function} callback The function that gets called for every
* character.
* @returns {Array} A new string of characters returned by the callback
* function.
*/
function mapDomain(string, fn) {
const parts = string.split('@');
let result = '';
if (parts.length > 1) {
// In email addresses, only the domain name should be punycoded. Leave
// the local part (i.e. everything up to `@`) intact.
result = parts[0] + '@';
string = parts[1];
}
// Avoid `split(regex)` for IE8 compatibility. See #17.
string = string.replace(regexSeparators, '\x2E');
const labels = string.split('.');
const encoded = map$1(labels, fn).join('.');
return result + encoded;
}
/**
* Creates an array containing the numeric code points of each Unicode
* character in the string. While JavaScript uses UCS-2 internally,
* this function will convert a pair of surrogate halves (each of which
* UCS-2 exposes as separate characters) into a single code point,
* matching UTF-16.
* @see `punycode.ucs2.encode`
* @see
* @memberOf punycode.ucs2
* @name decode
* @param {String} string The Unicode input string (UCS-2).
* @returns {Array} The new array of code points.
*/
function ucs2decode(string) {
const output = [];
let counter = 0;
const length = string.length;
while (counter = 0xD800 && value String.fromCodePoint(...array);
/**
* Converts a basic code point into a digit/integer.
* @see `digitToBasic()`
* @private
* @param {Number} codePoint The basic numeric code point value.
* @returns {Number} The numeric value of a basic code point (for use in
* representing integers) in the range `0` to `base - 1`, or `base` if
* the code point does not represent a value.
*/
const basicToDigit = function(codePoint) {
if (codePoint - 0x30 > 1;
delta += floor(delta / numPoints);
for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
delta = floor(delta / baseMinusTMin);
}
return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
};
/**
* Converts a Punycode string of ASCII-only symbols to a string of Unicode
* symbols.
* @memberOf punycode
* @param {String} input The Punycode string of ASCII-only symbols.
* @returns {String} The resulting string of Unicode symbols.
*/
const decode$2 = function(input) {
// Don't use UCS-2.
const output = [];
const inputLength = input.length;
let i = 0;
let n = initialN;
let bias = initialBias;
// Handle the basic code points: let `basic` be the number of input code
// points before the last delimiter, or `0` if there is none, then copy
// the first basic code points to the output.
let basic = input.lastIndexOf(delimiter);
if (basic = 0x80) {
error$2('not-basic');
}
output.push(input.charCodeAt(j));
}
// Main decoding loop: start just after the last delimiter if any basic code
// points were copied; start at the beginning otherwise.
for (let index = basic > 0 ? basic + 1 : 0; index = inputLength) {
error$2('invalid-input');
}
const digit = basicToDigit(input.charCodeAt(index++));
if (digit >= base || digit > floor((maxInt - i) / w)) {
error$2('overflow');
}
i += digit * w;
const t = k = bias + tMax ? tMax : k - bias);
if (digit floor(maxInt / baseMinusT)) {
error$2('overflow');
}
w *= baseMinusT;
}
const out = output.length + 1;
bias = adapt(i - oldi, out, oldi == 0);
// `i` was supposed to wrap around from `out` to `0`,
// incrementing `n` each time, so we'll fix that now:
if (floor(i / out) > maxInt - n) {
error$2('overflow');
}
n += floor(i / out);
i %= out;
// Insert `n` at position `i` of the output.
output.splice(i++, 0, n);
}
return String.fromCodePoint(...output);
};
/**
* Converts a string of Unicode symbols (e.g. a domain name label) to a
* Punycode string of ASCII-only symbols.
* @memberOf punycode
* @param {String} input The string of Unicode symbols.
* @returns {String} The resulting Punycode string of ASCII-only symbols.
*/
const encode$2 = function(input) {
const output = [];
// Convert the input in UCS-2 to an array of Unicode code points.
input = ucs2decode(input);
// Cache the length.
let inputLength = input.length;
// Initialize the state.
let n = initialN;
let delta = 0;
let bias = initialBias;
// Handle the basic code points.
for (const currentValue of input) {
if (currentValue = n && currentValue state to ,
// but guard against overflow.
const handledCPCountPlusOne = handledCPCount + 1;
if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
error$2('overflow');
}
delta += (m - n) * handledCPCountPlusOne;
n = m;
for (const currentValue of input) {
if (currentValue maxInt) {
error$2('overflow');
}
if (currentValue == n) {
// Represent delta as a generalized variable-length integer.
let q = delta;
for (let k = base; /* no condition */; k += base) {
const t = k = bias + tMax ? tMax : k - bias);
if (q
* @memberOf punycode
* @type Object
*/
'ucs2': {
'decode': ucs2decode,
'encode': ucs2encode
},
'decode': decode$2,
'encode': encode$2,
'toASCII': toASCII$1,
'toUnicode': toUnicode$1
};
var punycode_es6 = /*#__PURE__*/Object.freeze({
__proto__: null,
ucs2decode: ucs2decode,
ucs2encode: ucs2encode,
decode: decode$2,
encode: encode$2,
toASCII: toASCII$1,
toUnicode: toUnicode$1,
'default': punycode$1
});
function isNull(arg) {
return arg === null;
}
function isNullOrUndefined(arg) {
return arg == null;
}
function isString(arg) {
return typeof arg === 'string';
}
function isObject(arg) {
return typeof arg === 'object' && arg !== null;
}
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// If obj.hasOwnProperty has been overridden, then calling
// obj.hasOwnProperty(prop) will break.
// See: https://github.com/joyent/node/issues/1707
function hasOwnProperty(obj, prop) {
return Object.prototype.hasOwnProperty.call(obj, prop);
}
var isArray = Array.isArray || function (xs) {
return Object.prototype.toString.call(xs) === '[object Array]';
};
function stringifyPrimitive(v) {
switch (typeof v) {
case 'string':
return v;
case 'boolean':
return v ? 'true' : 'false';
case 'number':
return isFinite(v) ? v : '';
default:
return '';
}
}
function stringify$1 (obj, sep, eq, name) {
sep = sep || '&';
eq = eq || '=';
if (obj === null) {
obj = undefined;
}
if (typeof obj === 'object') {
return map(objectKeys(obj), function(k) {
var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
if (isArray(obj[k])) {
return map(obj[k], function(v) {
return ks + encodeURIComponent(stringifyPrimitive(v));
}).join(sep);
} else {
return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
}
}).join(sep);
}
if (!name) return '';
return encodeURIComponent(stringifyPrimitive(name)) + eq +
encodeURIComponent(stringifyPrimitive(obj));
}
function map (xs, f) {
if (xs.map) return xs.map(f);
var res = [];
for (var i = 0; i 0 && len > maxKeys) {
len = maxKeys;
}
for (var i = 0; i = 0) {
kstr = x.substr(0, idx);
vstr = x.substr(idx + 1);
} else {
kstr = x;
vstr = '';
}
k = decodeURIComponent(kstr);
v = decodeURIComponent(vstr);
if (!hasOwnProperty(obj, k)) {
obj[k] = v;
} else if (isArray(obj[k])) {
obj[k].push(v);
} else {
obj[k] = [obj[k], v];
}
}
return obj;
}
// Copyright Joyent, Inc. and other Node contributors.
var url$1 = {
parse: urlParse,
resolve: urlResolve,
resolveObject: urlResolveObject,
format: urlFormat,
Url: Url
};
function Url() {
this.protocol = null;
this.slashes = null;
this.auth = null;
this.host = null;
this.port = null;
this.hostname = null;
this.hash = null;
this.search = null;
this.query = null;
this.pathname = null;
this.path = null;
this.href = null;
}
// Reference: RFC 3986, RFC 1808, RFC 2396
// define these here so at least they only have to be
// compiled once on the first module load.
var protocolPattern = /^([a-z0-9.+-]+:)/i,
portPattern = /:[0-9]*$/,
// Special case for a simple path URL
simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,
// RFC 2396: characters reserved for delimiting URLs.
// We actually just auto-escape these.
delims = ['', '"', '`', ' ', '\r', '\n', '\t'],
// RFC 2396: characters not allowed for various reasons.
unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims),
// Allowed by RFCs, but cause of XSS attacks. Always escape these.
autoEscape = ['\''].concat(unwise),
// Characters that are never ever allowed in a hostname.
// Note that any invalid chars are also handled, but these
// are the ones that are *expected* to be seen, so we fast-path
// them.
nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),
hostEndingChars = ['/', '?', '#'],
hostnameMaxLen = 255,
hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,
hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
// protocols that can allow "unsafe" and "unwise" chars.
unsafeProtocol = {
'javascript': true,
'javascript:': true
},
// protocols that never have a hostname.
hostlessProtocol = {
'javascript': true,
'javascript:': true
},
// protocols that always contain a // bit.
slashedProtocol = {
'http': true,
'https': true,
'ftp': true,
'gopher': true,
'file': true,
'http:': true,
'https:': true,
'ftp:': true,
'gopher:': true,
'file:': true
};
function urlParse(url, parseQueryString, slashesDenoteHost) {
if (url && isObject(url) && url instanceof Url) return url;
var u = new Url;
u.parse(url, parseQueryString, slashesDenoteHost);
return u;
}
Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {
return parse$6(this, url, parseQueryString, slashesDenoteHost);
};
function parse$6(self, url, parseQueryString, slashesDenoteHost) {
if (!isString(url)) {
throw new TypeError('Parameter \'url\' must be a string, not ' + typeof url);
}
// Copy chrome, IE, opera backslash-handling behavior.
// Back slashes before the query string get converted to forward slashes
// See: https://code.google.com/p/chromium/issues/detail?id=25916
var queryIndex = url.indexOf('?'),
splitter =
(queryIndex !== -1 && queryIndex user:a@b host:c
// http://a@b?@c => user:a host:c path:/?@c
// v0.12 TODO(isaacs): This is not quite how Chrome does things.
// Review our test case against browsers more comprehensively.
// find the first instance of any hostEndingChars
var hostEnd = -1;
for (i = 0; i host:b auth:a path:/c@d
atSign = rest.lastIndexOf('@', hostEnd);
}
// Now we have a portion which is definitely the auth.
// Pull that off.
if (atSign !== -1) {
auth = rest.slice(0, atSign);
rest = rest.slice(atSign + 1);
self.auth = decodeURIComponent(auth);
}
// the host is the remaining to the left of the first non-host char
hostEnd = -1;
for (i = 0; i 127) {
// we replace non-ASCII char with a temporary placeholder
// we need this to make sure size of hostname is not
// broken by replacing non-ASCII by nothing
newpart += 'x';
} else {
newpart += part[j];
}
}
// we test again with ASCII char only
if (!newpart.match(hostnamePartPattern)) {
var validParts = hostparts.slice(0, i);
var notHost = hostparts.slice(i + 1);
var bit = part.match(hostnamePartStart);
if (bit) {
validParts.push(bit[1]);
notHost.unshift(bit[2]);
}
if (notHost.length) {
rest = '/' + notHost.join('.') + rest;
}
self.hostname = validParts.join('.');
break;
}
}
}
}
if (self.hostname.length > hostnameMaxLen) {
self.hostname = '';
} else {
// hostnames are always lower case.
self.hostname = self.hostname.toLowerCase();
}
if (!ipv6Hostname) {
// IDNA Support: Returns a punycoded representation of "domain".
// It only converts parts of the domain name that
// have non-ASCII characters, i.e. it doesn't matter if
// you call it with a domain that already is ASCII-only.
self.hostname = toASCII$1(self.hostname);
}
p = self.port ? ':' + self.port : '';
var h = self.hostname || '';
self.host = h + p;
self.href += self.host;
// strip [ and ] from the hostname
// the host field still retains them, though
if (ipv6Hostname) {
self.hostname = self.hostname.substr(1, self.hostname.length - 2);
if (rest[0] !== '/') {
rest = '/' + rest;
}
}
}
// now rest is set to the post-host stuff.
// chop off any delim chars.
if (!unsafeProtocol[lowerProto]) {
// First, make 100% sure that any "autoEscape" chars get
// escaped, even if encodeURIComponent doesn't think they
// need to be.
for (i = 0, l = autoEscape.length; i 0 ?
result.host.split('@') : false;
if (authInHost) {
result.auth = authInHost.shift();
result.host = result.hostname = authInHost.shift();
}
}
result.search = relative.search;
result.query = relative.query;
//to support http.request
if (!isNull(result.pathname) || !isNull(result.search)) {
result.path = (result.pathname ? result.pathname : '') +
(result.search ? result.search : '');
}
result.href = result.format();
return result;
}
if (!srcPath.length) {
// no path at all. easy.
// we've already handled the other stuff above.
result.pathname = null;
//to support http.request
if (result.search) {
result.path = '/' + result.search;
} else {
result.path = null;
}
result.href = result.format();
return result;
}
// if a url ENDs in . or .., then it must get a trailing slash.
// however, if it ends in anything else non-slashy,
// then it must NOT get a trailing slash.
var last = srcPath.slice(-1)[0];
var hasTrailingSlash = (
(result.host || relative.host || srcPath.length > 1) &&
(last === '.' || last === '..') || last === '');
// strip single dots, resolve double dots to parent dir
// if the path tries to go above the root, `up` ends up > 0
var up = 0;
for (var i = srcPath.length; i >= 0; i--) {
last = srcPath[i];
if (last === '.') {
srcPath.splice(i, 1);
} else if (last === '..') {
srcPath.splice(i, 1);
up++;
} else if (up) {
srcPath.splice(i, 1);
up--;
}
}
// if the path is allowed to go above the root, restore leading ..s
if (!mustEndAbs && !removeAllDots) {
for (; up--; up) {
srcPath.unshift('..');
}
}
if (mustEndAbs && srcPath[0] !== '' &&
(!srcPath[0] || srcPath[0].charAt(0) !== '/')) {
srcPath.unshift('');
}
if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {
srcPath.push('');
}
var isAbsolute = srcPath[0] === '' ||
(srcPath[0] && srcPath[0].charAt(0) === '/');
// put the host back
if (psychotic) {
result.hostname = result.host = isAbsolute ? '' :
srcPath.length ? srcPath.shift() : '';
//occationaly the auth can get stuck only in host
//this especially happens in cases like
//url.resolveObject('mailto:local1@domain1', 'local2@domain2')
authInHost = result.host && result.host.indexOf('@') > 0 ?
result.host.split('@') : false;
if (authInHost) {
result.auth = authInHost.shift();
result.host = result.hostname = authInHost.shift();
}
}
mustEndAbs = mustEndAbs || (result.host && srcPath.length);
if (mustEndAbs && !isAbsolute) {
srcPath.unshift('');
}
if (!srcPath.length) {
result.pathname = null;
result.path = null;
} else {
result.pathname = srcPath.join('/');
}
//to support request.http
if (!isNull(result.pathname) || !isNull(result.search)) {
result.path = (result.pathname ? result.pathname : '') +
(result.search ? result.search : '');
}
result.auth = relative.auth || result.auth;
result.slashes = result.slashes || relative.slashes;
result.href = result.format();
return result;
};
Url.prototype.parseHost = function() {
return parseHost(this);
};
function parseHost(self) {
var host = self.host;
var port = portPattern.exec(host);
if (port) {
port = port[0];
if (port !== ':') {
self.port = port.substr(1);
}
host = host.substr(0, host.length - port.length);
}
if (host) self.hostname = host;
}
var url$2 = /*#__PURE__*/Object.freeze({
__proto__: null,
parse: urlParse,
resolve: urlResolve,
resolveObject: urlResolveObject,
format: urlFormat,
'default': url$1,
Url: Url
});
var require$$0 = /*@__PURE__*/getAugmentedNamespace(url$2);
var url = Object.assign(
{},
require$$0,
{
pathToFileURL: (path)=> { return `file:///${encodeURIComponent(path)}` },
fileURLToPath: (fileURL)=> { return decodeURIComponent(fileURL.toString().replace(/^file:\/\/\//, '')) }
}
);
/* -*- Mode: js; js-indent-level: 2; -*- */
/*
* Copyright 2011 Mozilla Foundation and contributors
* Licensed under the New BSD license. See LICENSE or:
* http://opensource.org/licenses/BSD-3-Clause
*/
var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
/**
* Encode an integer in the range of 0 to 63 to a single base 64 digit.
*/
var encode$1 = function (number) {
if (0 > 1;
return isNegative
? -shifted
: shifted;
}
/**
* Returns the base 64 VLQ encoded value.
*/
var encode = function base64VLQ_encode(aValue) {
var encoded = "";
var digit;
var vlq = toVLQSigned(aValue);
do {
digit = vlq & VLQ_BASE_MASK;
vlq >>>= VLQ_BASE_SHIFT;
if (vlq > 0) {
// There are still more digits in this value, so we must make sure the
// continuation bit is marked.
digit |= VLQ_CONTINUATION_BIT;
}
encoded += base64.encode(digit);
} while (vlq > 0);
return encoded;
};
/**
* Decodes the next base 64 VLQ value from the given string and returns the
* value and the rest of the string via the out parameter.
*/
var decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
var strLen = aStr.length;
var result = 0;
var shift = 0;
var continuation, digit;
do {
if (aIndex >= strLen) {
throw new Error("Expected more digits in base 64 VLQ value.");
}
digit = base64.decode(aStr.charCodeAt(aIndex++));
if (digit === -1) {
throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
}
continuation = !!(digit & VLQ_CONTINUATION_BIT);
digit &= VLQ_BASE_MASK;
result = result + (digit /..' parts.
*
* Based on code in the Node.js 'path' core module.
*
* @param aPath The path or url to normalize.
*/
function normalize(aPath) {
var path = aPath;
var url = urlParse(aPath);
if (url) {
if (!url.path) {
return aPath;
}
path = url.path;
}
var isAbsolute = exports.isAbsolute(path);
var parts = path.split(/\/+/);
for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
part = parts[i];
if (part === '.') {
parts.splice(i, 1);
} else if (part === '..') {
up++;
} else if (up > 0) {
if (part === '') {
// The first part is blank if the path is absolute. Trying to go
// above the root is a no-op. Therefore we can remove all '..' parts
// directly after the root.
parts.splice(i + 1, up);
up = 0;
} else {
parts.splice(i, 2);
up--;
}
}
}
path = parts.join('/');
if (path === '') {
path = isAbsolute ? '/' : '.';
}
if (url) {
url.path = path;
return urlGenerate(url);
}
return path;
}
exports.normalize = normalize;
/**
* Joins two paths/URLs.
*
* @param aRoot The root path or URL.
* @param aPath The path or URL to be joined with the root.
*
* - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
* scheme-relative URL: Then the scheme of aRoot, if any, is prepended
* first.
* - Otherwise aPath is a path. If aRoot is a URL, then its path portion
* is updated with the result and aRoot is returned. Otherwise the result
* is returned.
* - If aPath is absolute, the result is aPath.
* - Otherwise the two paths are joined with a slash.
* - Joining for example 'http://' and 'www.example.com' is also supported.
*/
function join(aRoot, aPath) {
if (aRoot === "") {
aRoot = ".";
}
if (aPath === "") {
aPath = ".";
}
var aPathUrl = urlParse(aPath);
var aRootUrl = urlParse(aRoot);
if (aRootUrl) {
aRoot = aRootUrl.path || '/';
}
// `join(foo, '//www.example.org')`
if (aPathUrl && !aPathUrl.scheme) {
if (aRootUrl) {
aPathUrl.scheme = aRootUrl.scheme;
}
return urlGenerate(aPathUrl);
}
if (aPathUrl || aPath.match(dataUrlRegexp)) {
return aPath;
}
// `join('http://', 'www.example.com')`
if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
aRootUrl.host = aPath;
return urlGenerate(aRootUrl);
}
var joined = aPath.charAt(0) === '/'
? aPath
: normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
if (aRootUrl) {
aRootUrl.path = joined;
return urlGenerate(aRootUrl);
}
return joined;
}
exports.join = join;
exports.isAbsolute = function (aPath) {
return aPath.charAt(0) === '/' || urlRegexp.test(aPath);
};
/**
* Make a path relative to a URL or another path.
*
* @param aRoot The root path or URL.
* @param aPath The path or URL to be made relative to aRoot.
*/
function relative(aRoot, aPath) {
if (aRoot === "") {
aRoot = ".";
}
aRoot = aRoot.replace(/\/$/, '');
// It is possible for the path to be above the root. In this case, simply
// checking whether the root is a prefix of the path won't work. Instead, we
// need to remove components from the root one by one, until either we find
// a prefix that fits, or we run out of components to remove.
var level = 0;
while (aPath.indexOf(aRoot + '/') !== 0) {
var index = aRoot.lastIndexOf("/");
if (index = 0; i--) {
if (s.charCodeAt(i) !== 36 /* '$' */) {
return false;
}
}
return true;
}
/**
* Comparator between two mappings where the original positions are compared.
*
* Optionally pass in `true` as `onlyCompareGenerated` to consider two
* mappings with the same original source/line/column, but different generated
* line and column the same. Useful when searching for a mapping with a
* stubbed out mapping.
*/
function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
var cmp = strcmp(mappingA.source, mappingB.source);
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalLine - mappingB.originalLine;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalColumn - mappingB.originalColumn;
if (cmp !== 0 || onlyCompareOriginal) {
return cmp;
}
cmp = mappingA.generatedColumn - mappingB.generatedColumn;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.generatedLine - mappingB.generatedLine;
if (cmp !== 0) {
return cmp;
}
return strcmp(mappingA.name, mappingB.name);
}
exports.compareByOriginalPositions = compareByOriginalPositions;
/**
* Comparator between two mappings with deflated source and name indices where
* the generated positions are compared.
*
* Optionally pass in `true` as `onlyCompareGenerated` to consider two
* mappings with the same generated line and column, but different
* source/name/original line and column the same. Useful when searching for a
* mapping with a stubbed out mapping.
*/
function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
var cmp = mappingA.generatedLine - mappingB.generatedLine;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.generatedColumn - mappingB.generatedColumn;
if (cmp !== 0 || onlyCompareGenerated) {
return cmp;
}
cmp = strcmp(mappingA.source, mappingB.source);
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalLine - mappingB.originalLine;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalColumn - mappingB.originalColumn;
if (cmp !== 0) {
return cmp;
}
return strcmp(mappingA.name, mappingB.name);
}
exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
function strcmp(aStr1, aStr2) {
if (aStr1 === aStr2) {
return 0;
}
if (aStr1 === null) {
return 1; // aStr2 !== null
}
if (aStr2 === null) {
return -1; // aStr1 !== null
}
if (aStr1 > aStr2) {
return 1;
}
return -1;
}
/**
* Comparator between two mappings with inflated source and name strings where
* the generated positions are compared.
*/
function compareByGeneratedPositionsInflated(mappingA, mappingB) {
var cmp = mappingA.generatedLine - mappingB.generatedLine;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.generatedColumn - mappingB.generatedColumn;
if (cmp !== 0) {
return cmp;
}
cmp = strcmp(mappingA.source, mappingB.source);
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalLine - mappingB.originalLine;
if (cmp !== 0) {
return cmp;
}
cmp = mappingA.originalColumn - mappingB.originalColumn;
if (cmp !== 0) {
return cmp;
}
return strcmp(mappingA.name, mappingB.name);
}
exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
/**
* Strip any JSON XSSI avoidance prefix from the string (as documented
* in the source maps specification), and then parse the string as
* JSON.
*/
function parseSourceMapInput(str) {
return JSON.parse(str.replace(/^\)]}'[^\n]*\n/, ''));
}
exports.parseSourceMapInput = parseSourceMapInput;
/**
* Compute the URL of a source given the the source root, the source's
* URL, and the source map's URL.
*/
function computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {
sourceURL = sourceURL || '';
if (sourceRoot) {
// This follows what Chrome does.
if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {
sourceRoot += '/';
}
// The spec says:
// Line 4: An optional source root, useful for relocating source
// files on a server or removing repeated values in the
// âsourcesâ entry. This value is prepended to the individual
// entries in the âsourceâ field.
sourceURL = sourceRoot + sourceURL;
}
// Historically, SourceMapConsumer did not take the sourceMapURL as
// a parameter. This mode is still somewhat supported, which is why
// this code block is conditional. However, it's preferable to pass
// the source map URL to SourceMapConsumer, so that this function
// can implement the source URL resolution algorithm as outlined in
// the spec. This block is basically the equivalent of:
// new URL(sourceURL, sourceMapURL).toString()
// ... except it avoids using URL, which wasn't available in the
// older releases of node still supported by this library.
//
// The spec says:
// If the sources are not absolute URLs after prepending of the
// âsourceRootâ, the sources are resolved relative to the
// SourceMap (like resolving script src in a html document).
if (sourceMapURL) {
var parsed = urlParse(sourceMapURL);
if (!parsed) {
throw new Error("sourceMapURL could not be parsed");
}
if (parsed.path) {
// Strip the last path component, but keep the "/".
var index = parsed.path.lastIndexOf('/');
if (index >= 0) {
parsed.path = parsed.path.substring(0, index + 1);
}
}
sourceURL = join(urlGenerate(parsed), sourceURL);
}
return normalize(sourceURL);
}
exports.computeSourceURL = computeSourceURL;
});
/* -*- Mode: js; js-indent-level: 2; -*- */
/*
* Copyright 2011 Mozilla Foundation and contributors
* Licensed under the New BSD license. See LICENSE or:
* http://opensource.org/licenses/BSD-3-Clause
*/
var has = Object.prototype.hasOwnProperty;
var hasNativeMap = typeof Map !== "undefined";
/**
* A data structure which is a combination of an array and a set. Adding a new
* member is O(1), testing for membership is O(1), and finding the index of an
* element is O(1). Removing elements from the set is not supported. Only
* strings are supported for membership.
*/
function ArraySet$2() {
this._array = [];
this._set = hasNativeMap ? new Map() : Object.create(null);
}
/**
* Static method for creating ArraySet instances from an existing array.
*/
ArraySet$2.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
var set = new ArraySet$2();
for (var i = 0, len = aArray.length; i = 0) {
return idx;
}
} else {
var sStr = util.toSetString(aStr);
if (has.call(this._set, sStr)) {
return this._set[sStr];
}
}
throw new Error('"' + aStr + '" is not in the set.');
};
/**
* What is the element at the given index?
*
* @param Number aIdx
*/
ArraySet$2.prototype.at = function ArraySet_at(aIdx) {
if (aIdx >= 0 && aIdx lineA || lineB == lineA && columnB >= columnA ||
util.compareByGeneratedPositionsInflated(mappingA, mappingB) 0 && aGenerated.column >= 0
&& !aOriginal && !aSource && !aName) {
// Case 1.
return;
}
else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
&& aOriginal && 'line' in aOriginal && 'column' in aOriginal
&& aGenerated.line > 0 && aGenerated.column >= 0
&& aOriginal.line > 0 && aOriginal.column >= 0
&& aSource) {
// Cases 2 and 3.
return;
}
else {
throw new Error('Invalid mapping: ' + JSON.stringify({
generated: aGenerated,
source: aSource,
original: aOriginal,
name: aName
}));
}
};
/**
* Serialize the accumulated mappings in to the stream of base 64 VLQs
* specified by the source map format.
*/
SourceMapGenerator$2.prototype._serializeMappings =
function SourceMapGenerator_serializeMappings() {
var previousGeneratedColumn = 0;
var previousGeneratedLine = 1;
var previousOriginalColumn = 0;
var previousOriginalLine = 0;
var previousName = 0;
var previousSource = 0;
var result = '';
var next;
var mapping;
var nameIdx;
var sourceIdx;
var mappings = this._mappings.toArray();
for (var i = 0, len = mappings.length; i 0) {
if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
continue;
}
next += ',';
}
}
next += base64Vlq.encode(mapping.generatedColumn
- previousGeneratedColumn);
previousGeneratedColumn = mapping.generatedColumn;
if (mapping.source != null) {
sourceIdx = this._sources.indexOf(mapping.source);
next += base64Vlq.encode(sourceIdx - previousSource);
previousSource = sourceIdx;
// lines are stored 0-based in SourceMap spec version 3
next += base64Vlq.encode(mapping.originalLine - 1
- previousOriginalLine);
previousOriginalLine = mapping.originalLine - 1;
next += base64Vlq.encode(mapping.originalColumn
- previousOriginalColumn);
previousOriginalColumn = mapping.originalColumn;
if (mapping.name != null) {
nameIdx = this._names.indexOf(mapping.name);
next += base64Vlq.encode(nameIdx - previousName);
previousName = nameIdx;
}
}
result += next;
}
return result;
};
SourceMapGenerator$2.prototype._generateSourcesContent =
function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
return aSources.map(function (source) {
if (!this._sourcesContents) {
return null;
}
if (aSourceRoot != null) {
source = util.relative(aSourceRoot, source);
}
var key = util.toSetString(source);
return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)
? this._sourcesContents[key]
: null;
}, this);
};
/**
* Externalize the source map.
*/
SourceMapGenerator$2.prototype.toJSON =
function SourceMapGenerator_toJSON() {
var map = {
version: this._version,
sources: this._sources.toArray(),
names: this._names.toArray(),
mappings: this._serializeMappings()
};
if (this._file != null) {
map.file = this._file;
}
if (this._sourceRoot != null) {
map.sourceRoot = this._sourceRoot;
}
if (this._sourcesContents) {
map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
}
return map;
};
/**
* Render the source map being generated to a string.
*/
SourceMapGenerator$2.prototype.toString =
function SourceMapGenerator_toString() {
return JSON.stringify(this.toJSON());
};
var SourceMapGenerator_1 = SourceMapGenerator$2;
var sourceMapGenerator = {
SourceMapGenerator: SourceMapGenerator_1
};
/* -*- Mode: js; js-indent-level: 2; -*- */
var binarySearch = createCommonjsModule(function (module, exports) {
/*
* Copyright 2011 Mozilla Foundation and contributors
* Licensed under the New BSD license. See LICENSE or:
* http://opensource.org/licenses/BSD-3-Clause
*/
exports.GREATEST_LOWER_BOUND = 1;
exports.LEAST_UPPER_BOUND = 2;
/**
* Recursive implementation of binary search.
*
* @param aLow Indices here and lower do not contain the needle.
* @param aHigh Indices here and higher do not contain the needle.
* @param aNeedle The element being searched for.
* @param aHaystack The non-empty array being searched.
* @param aCompare Function which takes two elements and returns -1, 0, or 1.
* @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
* 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
* closest element that is smaller than or greater than the one we are
* searching for, respectively, if the exact element cannot be found.
*/
function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
// This function terminates when one of the following is true:
//
// 1. We find the exact element we are looking for.
//
// 2. We did not find the exact element, but we can return the index of
// the next-closest element.
//
// 3. We did not find the exact element, and there is no next-closest
// element than the one we are searching for, so we return -1.
var mid = Math.floor((aHigh - aLow) / 2) + aLow;
var cmp = aCompare(aNeedle, aHaystack[mid], true);
if (cmp === 0) {
// Found the element we are looking for.
return mid;
}
else if (cmp > 0) {
// Our needle is greater than aHaystack[mid].
if (aHigh - mid > 1) {
// The element is in the upper half.
return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
}
// The exact needle element was not found in this haystack. Determine if
// we are in termination case (3) or (2) and return the appropriate thing.
if (aBias == exports.LEAST_UPPER_BOUND) {
return aHigh 1) {
// The element is in the lower half.
return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
}
// we are in termination case (3) or (2) and return the appropriate thing.
if (aBias == exports.LEAST_UPPER_BOUND) {
return mid;
} else {
return aLow = 0) {
if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
break;
}
--index;
}
return index;
};
});
/* -*- Mode: js; js-indent-level: 2; -*- */
/*
* Copyright 2011 Mozilla Foundation and contributors
* Licensed under the New BSD license. See LICENSE or:
* http://opensource.org/licenses/BSD-3-Clause
*/
// It turns out that some (most?) JavaScript engines don't self-host
// `Array.prototype.sort`. This makes sense because C++ will likely remain
// faster than JS when doing raw CPU-intensive sorting. However, when using a
// custom comparator function, calling back and forth between the VM's C++ and
// JIT'd JS is rather slow *and* loses JIT type information, resulting in
// worse generated code for the comparator function than would be optimal. In
// fact, when sorting with a comparator, these costs outweigh the benefits of
// sorting in C++. By using our own JS-implemented Quick Sort (below), we get
// a ~3500ms mean speed-up in `bench/bench.html`.
/**
* Swap the elements indexed by `x` and `y` in the array `ary`.
*
* @param {Array} ary
* The array.
* @param {Number} x
* The index of the first item.
* @param {Number} y
* The index of the second item.
*/
function swap(ary, x, y) {
var temp = ary[x];
ary[x] = ary[y];
ary[y] = temp;
}
/**
* Returns a random integer within the range `low .. high` inclusive.
*
* @param {Number} low
* The lower bound on the range.
* @param {Number} high
* The upper bound on the range.
*/
function randomIntInRange(low, high) {
return Math.round(low + (Math.random() * (high - low)));
}
/**
* The Quick Sort algorithm.
*
* @param {Array} ary
* An array to sort.
* @param {function} comparator
* Function to use to compare two items.
* @param {Number} p
* Start index of the array
* @param {Number} r
* End index of the array
*/
function doQuickSort(ary, comparator, p, r) {
// If our lower bound is less than our upper bound, we (1) partition the
// array into two pieces and (2) recurse on each half. If it is not, this is
// the empty array and our base case.
if (p = 0) {
var mapping = this._originalMappings[index];
if (aArgs.column === undefined) {
var originalLine = mapping.originalLine;
// Iterate until either we run out of mappings, or we run into
// a mapping for a different line than the one we found. Since
// mappings are sorted, this is guaranteed to find all mappings for
// the line we found.
while (mapping && mapping.originalLine === originalLine) {
mappings.push({
line: util.getArg(mapping, 'generatedLine', null),
column: util.getArg(mapping, 'generatedColumn', null),
lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
});
mapping = this._originalMappings[++index];
}
} else {
var originalColumn = mapping.originalColumn;
// Iterate until either we run out of mappings, or we run into
// a mapping for a different line than the one we were searching for.
// Since mappings are sorted, this is guaranteed to find all mappings for
// the line we are searching for.
while (mapping &&
mapping.originalLine === line &&
mapping.originalColumn == originalColumn) {
mappings.push({
line: util.getArg(mapping, 'generatedLine', null),
column: util.getArg(mapping, 'generatedColumn', null),
lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
});
mapping = this._originalMappings[++index];
}
}
}
return mappings;
};
var SourceMapConsumer_1 = SourceMapConsumer$1;
/**
* A BasicSourceMapConsumer instance represents a parsed source map which we can
* query for information about the original file positions by giving it a file
* position in the generated source.
*
* The first parameter is the raw source map (either as a JSON string, or
* already parsed to an object). According to the spec, source maps have the
* following attributes:
*
* - version: Which version of the source map spec this map is following.
* - sources: An array of URLs to the original source files.
* - names: An array of identifiers which can be referrenced by individual mappings.
* - sourceRoot: Optional. The URL root from which all sources are relative.
* - sourcesContent: Optional. An array of contents of the original source files.
* - mappings: A string of base64 VLQs which contain the actual mappings.
* - file: Optional. The generated file this source map is associated with.
*
* Here is an example source map, taken from the source map spec[0]:
*
* {
* version : 3,
* file: "out.js",
* sourceRoot : "",
* sources: ["foo.js", "bar.js"],
* names: ["src", "maps", "are", "fun"],
* mappings: "AA,AB;;ABCDE;"
* }
*
* The second parameter, if given, is a string whose value is the URL
* at which the source map was found. This URL is used to compute the
* sources array.
*
* [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
*/
function BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {
var sourceMap = aSourceMap;
if (typeof aSourceMap === 'string') {
sourceMap = util.parseSourceMapInput(aSourceMap);
}
var version = util.getArg(sourceMap, 'version');
var sources = util.getArg(sourceMap, 'sources');
// Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
// requires the array) to play nice here.
var names = util.getArg(sourceMap, 'names', []);
var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
var mappings = util.getArg(sourceMap, 'mappings');
var file = util.getArg(sourceMap, 'file', null);
// Once again, Sass deviates from the spec and supplies the version as a
// string rather than a number, so we use loose equality checking here.
if (version != this._version) {
throw new Error('Unsupported version: ' + version);
}
if (sourceRoot) {
sourceRoot = util.normalize(sourceRoot);
}
sources = sources
.map(String)
// Some source maps produce relative source paths like "./foo.js" instead of
// "foo.js". Normalize these first so that future comparisons will succeed.
// See bugzil.la/1090768.
.map(util.normalize)
// Always ensure that absolute sources are internally stored relative to
// the source root, if the source root is absolute. Not doing this would
// be particularly problematic when the source root is a prefix of the
// source (valid, but why??). See github issue #199 and bugzil.la/1188982.
.map(function (source) {
return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
? util.relative(sourceRoot, source)
: source;
});
// Pass `true` below to allow duplicate names and sources. While source maps
// are intended to be compressed and deduplicated, the TypeScript compiler
// sometimes generates source maps with duplicates in them. See Github issue
// #72 and bugzil.la/889492.
this._names = ArraySet.fromArray(names.map(String), true);
this._sources = ArraySet.fromArray(sources, true);
this._absoluteSources = this._sources.toArray().map(function (s) {
return util.computeSourceURL(sourceRoot, s, aSourceMapURL);
});
this.sourceRoot = sourceRoot;
this.sourcesContent = sourcesContent;
this._mappings = mappings;
this._sourceMapURL = aSourceMapURL;
this.file = file;
}
BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer$1.prototype);
BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer$1;
/**
* Utility function to find the index of a source. Returns -1 if not
* found.
*/
BasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {
var relativeSource = aSource;
if (this.sourceRoot != null) {
relativeSource = util.relative(this.sourceRoot, relativeSource);
}
if (this._sources.has(relativeSource)) {
return this._sources.indexOf(relativeSource);
}
// Maybe aSource is an absolute URL as returned by |sources|. In
// this case we can't simply undo the transform.
var i;
for (i = 0; i 1) {
// Original source.
mapping.source = previousSource + segment[1];
previousSource += segment[1];
// Original line.
mapping.originalLine = previousOriginalLine + segment[2];
previousOriginalLine = mapping.originalLine;
// Lines are stored 0-based
mapping.originalLine += 1;
// Original column.
mapping.originalColumn = previousOriginalColumn + segment[3];
previousOriginalColumn = mapping.originalColumn;
if (segment.length > 4) {
// Original name.
mapping.name = previousName + segment[4];
previousName += segment[4];
}
}
generatedMappings.push(mapping);
if (typeof mapping.originalLine === 'number') {
originalMappings.push(mapping);
}
}
}
quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
this.__generatedMappings = generatedMappings;
quickSort(originalMappings, util.compareByOriginalPositions);
this.__originalMappings = originalMappings;
};
/**
* Find the mapping that best matches the hypothetical "needle" mapping that
* we are searching for in the given "haystack" of mappings.
*/
BasicSourceMapConsumer.prototype._findMapping =
function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
aColumnName, aComparator, aBias) {
// To return the position we are searching for, we must first find the
// mapping for the given position and then return the opposite position it
// points to. Because the mappings are sorted, we can use binary search to
// find the best mapping.
if (aNeedle[aLineName] = 0) {
var mapping = this._generatedMappings[index];
if (mapping.generatedLine === needle.generatedLine) {
var source = util.getArg(mapping, 'source', null);
if (source !== null) {
source = this._sources.at(source);
source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);
}
var name = util.getArg(mapping, 'name', null);
if (name !== null) {
name = this._names.at(name);
}
return {
source: source,
line: util.getArg(mapping, 'originalLine', null),
column: util.getArg(mapping, 'originalColumn', null),
name: name
};
}
}
return {
source: null,
line: null,
column: null,
name: null
};
};
/**
* Return true if we have the source content for every source in the source
* map, false otherwise.
*/
BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
function BasicSourceMapConsumer_hasContentsOfAllSources() {
if (!this.sourcesContent) {
return false;
}
return this.sourcesContent.length >= this._sources.size() &&
!this.sourcesContent.some(function (sc) { return sc == null; });
};
/**
* Returns the original source content. The only argument is the url of the
* original source file. Returns null if no original source content is
* available.
*/
BasicSourceMapConsumer.prototype.sourceContentFor =
function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
if (!this.sourcesContent) {
return null;
}
var index = this._findSourceIndex(aSource);
if (index >= 0) {
return this.sourcesContent[index];
}
var relativeSource = aSource;
if (this.sourceRoot != null) {
relativeSource = util.relative(this.sourceRoot, relativeSource);
}
var url;
if (this.sourceRoot != null
&& (url = util.urlParse(this.sourceRoot))) {
// XXX: file:// URIs and absolute paths lead to unexpected behavior for
// many users. We can help them out when they expect file:// URIs to
// behave like it would if they were running a local HTTP server. See
// https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
var fileUriAbsPath = relativeSource.replace(/^file:\/\//, "");
if (url.scheme == "file"
&& this._sources.has(fileUriAbsPath)) {
return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
}
if ((!url.path || url.path == "/")
&& this._sources.has("/" + relativeSource)) {
return this.sourcesContent[this._sources.indexOf("/" + relativeSource)];
}
}
// This function is used recursively from
// IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
// don't want to throw if we can't find the source - we just want to
// return null, so we provide a flag to exit gracefully.
if (nullOnMissing) {
return null;
}
else {
throw new Error('"' + relativeSource + '" is not in the SourceMap.');
}
};
/**
* Returns the generated line and column information for the original source,
* line, and column positions provided. The only argument is an object with
* the following properties:
*
* - source: The filename of the original source.
* - line: The line number in the original source. The line number
* is 1-based.
* - column: The column number in the original source. The column
* number is 0-based.
* - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
* 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
* closest element that is smaller than or greater than the one we are
* searching for, respectively, if the exact element cannot be found.
* Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
*
* and an object is returned with the following properties:
*
* - line: The line number in the generated source, or null. The
* line number is 1-based.
* - column: The column number in the generated source, or null.
* The column number is 0-based.
*/
BasicSourceMapConsumer.prototype.generatedPositionFor =
function SourceMapConsumer_generatedPositionFor(aArgs) {
var source = util.getArg(aArgs, 'source');
source = this._findSourceIndex(source);
if (source = 0) {
var mapping = this._originalMappings[index];
if (mapping.source === needle.source) {
return {
line: util.getArg(mapping, 'generatedLine', null),
column: util.getArg(mapping, 'generatedColumn', null),
lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
};
}
}
return {
line: null,
column: null,
lastColumn: null
};
};
var BasicSourceMapConsumer_1 = BasicSourceMapConsumer;
/**
* An IndexedSourceMapConsumer instance represents a parsed source map which
* we can query for information. It differs from BasicSourceMapConsumer in
* that it takes "indexed" source maps (i.e. ones with a "sections" field) as
* input.
*
* The first parameter is a raw source map (either as a JSON string, or already
* parsed to an object). According to the spec for indexed source maps, they
* have the following attributes:
*
* - version: Which version of the source map spec this map is following.
* - file: Optional. The generated file this source map is associated with.
* - sections: A list of section definitions.
*
* Each value under the "sections" field has two fields:
* - offset: The offset into the original specified at which this section
* begins to apply, defined as an object with a "line" and "column"
* field.
* - map: A source map definition. This source map could also be indexed,
* but doesn't have to be.
*
* Instead of the "map" field, it's also possible to have a "url" field
* specifying a URL to retrieve a source map from, but that's currently
* unsupported.
*
* Here's an example source map, taken from the source map spec[0], but
* modified to omit a section which uses the "url" field.
*
* {
* version : 3,
* file: "app.js",
* sections: [{
* offset: {line:100, column:10},
* map: {
* version : 3,
* file: "section.js",
* sources: ["foo.js", "bar.js"],
* names: ["src", "maps", "are", "fun"],
* mappings: "AAAA,E;;ABCDE;"
* }
* }],
* }
*
* The second parameter, if given, is a string whose value is the URL
* at which the source map was found. This URL is used to compute the
* sources array.
*
* [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
*/
function IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {
var sourceMap = aSourceMap;
if (typeof aSourceMap === 'string') {
sourceMap = util.parseSourceMapInput(aSourceMap);
}
var version = util.getArg(sourceMap, 'version');
var sections = util.getArg(sourceMap, 'sections');
if (version != this._version) {
throw new Error('Unsupported version: ' + version);
}
this._sources = new ArraySet();
this._names = new ArraySet();
var lastOffset = {
line: -1,
column: 0
};
this._sections = sections.map(function (s) {
if (s.url) {
// The url field will require support for asynchronicity.
// See https://github.com/mozilla/source-map/issues/16
throw new Error('Support for url field in sections not implemented.');
}
var offset = util.getArg(s, 'offset');
var offsetLine = util.getArg(offset, 'line');
var offsetColumn = util.getArg(offset, 'column');
if (offsetLine = 0; i--) {
this.prepend(aChunk[i]);
}
}
else if (aChunk[isSourceNode] || typeof aChunk === "string") {
this.children.unshift(aChunk);
}
else {
throw new TypeError(
"Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
);
}
return this;
};
/**
* Walk over the tree of JS snippets in this node and its children. The
* walking function is called once for each snippet of JS and is passed that
* snippet and the its original associated source's line/column location.
*
* @param aFn The traversal function.
*/
SourceNode$1.prototype.walk = function SourceNode_walk(aFn) {
var chunk;
for (var i = 0, len = this.children.length; i 0) {
newChildren = [];
for (i = 0; i 0
}
previous () {
if (!this.previousMaps) {
this.previousMaps = [];
this.root.walk(node => {
if (node.source && node.source.input.map) {
let map = node.source.input.map;
if (!this.previousMaps.includes(map)) {
this.previousMaps.push(map);
}
}
});
}
return this.previousMaps
}
isInline () {
if (typeof this.mapOpts.inline !== 'undefined') {
return this.mapOpts.inline
}
let annotation = this.mapOpts.annotation;
if (typeof annotation !== 'undefined' && annotation !== true) {
return false
}
if (this.previous().length) {
return this.previous().some(i => i.inline)
}
return true
}
isSourcesContent () {
if (typeof this.mapOpts.sourcesContent !== 'undefined') {
return this.mapOpts.sourcesContent
}
if (this.previous().length) {
return this.previous().some(i => i.withContent())
}
return true
}
clearAnnotation () {
if (this.mapOpts.annotation === false) return
let node;
for (let i = this.root.nodes.length - 1; i >= 0; i--) {
node = this.root.nodes[i];
if (node.type !== 'comment') continue
if (node.text.indexOf('# sourceMappingURL=') === 0) {
this.root.removeChild(i);
}
}
}
setSourcesContent () {
let already = {};
this.root.walk(node => {
if (node.source) {
let from = node.source.input.from;
if (from && !already[from]) {
already[from] = true;
this.map.setSourceContent(
this.toUrl(this.path(from)),
node.source.input.css
);
}
}
});
}
applyPrevMaps () {
for (let prev of this.previous()) {
let from = this.toUrl(this.path(prev.file));
let root = prev.root || dirname$1(prev.file);
let map;
if (this.mapOpts.sourcesContent === false) {
map = new sourceMap.SourceMapConsumer(prev.text);
if (map.sourcesContent) {
map.sourcesContent = map.sourcesContent.map(() => null);
}
} else {
map = prev.consumer();
}
this.map.applySourceMap(map, from, this.toUrl(this.path(root)));
}
}
isAnnotation () {
if (this.isInline()) {
return true
}
if (typeof this.mapOpts.annotation !== 'undefined') {
return this.mapOpts.annotation
}
if (this.previous().length) {
return this.previous().some(i => i.annotation)
}
return true
}
toBase64 (str) {
if (Buffer) {
return Buffer.from(str).toString('base64')
} else {
// istanbul ignore next
return window.btoa(unescape(encodeURIComponent(str)))
}
}
addAnnotation () {
let content;
if (this.isInline()) {
content =
'data:application/json;base64,' + this.toBase64(this.map.toString());
} else if (typeof this.mapOpts.annotation === 'string') {
content = this.mapOpts.annotation;
} else if (typeof this.mapOpts.annotation === 'function') {
content = this.mapOpts.annotation(this.opts.to, this.root);
} else {
content = this.outputFile() + '.map';
}
let eol = '\n';
if (this.css.includes('\r\n')) eol = '\r\n';
this.css += eol + '/*# sourceMappingURL=' + content + ' */';
}
outputFile () {
if (this.opts.to) {
return this.path(this.opts.to)
}
if (this.opts.from) {
return this.path(this.opts.from)
}
return 'to.css'
}
generateMap () {
this.generateString();
if (this.isSourcesContent()) this.setSourcesContent();
if (this.previous().length > 0) this.applyPrevMaps();
if (this.isAnnotation()) this.addAnnotation();
if (this.isInline()) {
return [this.css]
}
return [this.css, this.map]
}
path (file) {
if (file.indexOf(' {
this.css += str;
if (node && type !== 'end') {
if (node.source && node.source.start) {
this.map.addMapping({
source: this.sourcePath(node),
generated: { line, column: column - 1 },
original: {
line: node.source.start.line,
column: node.source.start.column - 1
}
});
} else {
this.map.addMapping({
source: '',
original: { line: 1, column: 0 },
generated: { line, column: column - 1 }
});
}
}
lines = str.match(/\n/g);
if (lines) {
line += lines.length;
last = str.lastIndexOf('\n');
column = str.length - last;
} else {
column += str.length;
}
if (node && type !== 'start') {
let p = node.parent || { raws: {} };
if (node.type !== 'decl' || node !== p.last || p.raws.semicolon) {
if (node.source && node.source.end) {
this.map.addMapping({
source: this.sourcePath(node),
generated: { line, column: column - 2 },
original: {
line: node.source.end.line,
column: node.source.end.column - 1
}
});
} else {
this.map.addMapping({
source: '',
original: { line: 1, column: 0 },
generated: { line, column: column - 1 }
});
}
}
}
});
}
generate () {
this.clearAnnotation();
if (this.isMap()) {
return this.generateMap()
}
let result = '';
this.stringify(this.root, i => {
result += i;
});
return [result]
}
}
var mapGenerator = MapGenerator;
let printed = {};
var warnOnce = function warnOnce (message) {
if (printed[message]) return
printed[message] = true;
if (typeof console !== 'undefined' && console.warn) {
console.warn(message);
}
};
class Warning {
constructor (text, opts = {}) {
this.type = 'warning';
this.text = text;
if (opts.node && opts.node.source) {
let pos = opts.node.positionBy(opts);
this.line = pos.line;
this.column = pos.column;
}
for (let opt in opts) this[opt] = opts[opt];
}
toString () {
if (this.node) {
return this.node.error(this.text, {
plugin: this.plugin,
index: this.index,
word: this.word
}).message
}
if (this.plugin) {
return this.plugin + ': ' + this.text
}
return this.text
}
}
var warning = Warning;
Warning.default = Warning;
class Result {
constructor (processor, root, opts) {
this.processor = processor;
this.messages = [];
this.root = root;
this.opts = opts;
this.css = undefined;
this.map = undefined;
}
toString () {
return this.css
}
warn (text, opts = {}) {
if (!opts.plugin) {
if (this.lastPlugin && this.lastPlugin.postcssPlugin) {
opts.plugin = this.lastPlugin.postcssPlugin;
}
}
let warning$1 = new warning(text, opts);
this.messages.push(warning$1);
return warning$1
}
warnings () {
return this.messages.filter(i => i.type === 'warning')
}
get content () {
return this.css
}
}
var result$1 = Result;
Result.default = Result;
class Comment extends node_1 {
constructor (defaults) {
super(defaults);
this.type = 'comment';
}
}
var comment = Comment;
Comment.default = Comment;
let { isClean: isClean$1 } = symbols;
let parse$5, Rule$1, AtRule$2;
function cleanSource (nodes) {
return nodes.map(i => {
if (i.nodes) i.nodes = cleanSource(i.nodes);
delete i.source;
return i
})
}
function markDirtyUp (node) {
node[isClean$1] = false;
if (node.proxyOf.nodes) {
for (let i of node.proxyOf.nodes) {
markDirtyUp(i);
}
}
}
// istanbul ignore next
function rebuild (node) {
if (node.type === 'atrule') {
Object.setPrototypeOf(node, AtRule$2.prototype);
} else if (node.type === 'rule') {
Object.setPrototypeOf(node, Rule$1.prototype);
} else if (node.type === 'decl') {
Object.setPrototypeOf(node, declaration$1.prototype);
} else if (node.type === 'comment') {
Object.setPrototypeOf(node, comment.prototype);
}
if (node.nodes) {
node.nodes.forEach(child => {
rebuild(child);
});
}
}
class Container extends node_1 {
push (child) {
child.parent = this;
this.proxyOf.nodes.push(child);
return this
}
each (callback) {
if (!this.proxyOf.nodes) return undefined
let iterator = this.getIterator();
let index, result;
while (this.indexes[iterator] {
let result;
try {
result = callback(child, i);
} catch (e) {
throw child.addToError(e)
}
if (result !== false && child.walk) {
result = child.walk(callback);
}
return result
})
}
walkDecls (prop, callback) {
if (!callback) {
callback = prop;
return this.walk((child, i) => {
if (child.type === 'decl') {
return callback(child, i)
}
})
}
if (prop instanceof RegExp) {
return this.walk((child, i) => {
if (child.type === 'decl' && prop.test(child.prop)) {
return callback(child, i)
}
})
}
return this.walk((child, i) => {
if (child.type === 'decl' && child.prop === prop) {
return callback(child, i)
}
})
}
walkRules (selector, callback) {
if (!callback) {
callback = selector;
return this.walk((child, i) => {
if (child.type === 'rule') {
return callback(child, i)
}
})
}
if (selector instanceof RegExp) {
return this.walk((child, i) => {
if (child.type === 'rule' && selector.test(child.selector)) {
return callback(child, i)
}
})
}
return this.walk((child, i) => {
if (child.type === 'rule' && child.selector === selector) {
return callback(child, i)
}
})
}
walkAtRules (name, callback) {
if (!callback) {
callback = name;
return this.walk((child, i) => {
if (child.type === 'atrule') {
return callback(child, i)
}
})
}
if (name instanceof RegExp) {
return this.walk((child, i) => {
if (child.type === 'atrule' && name.test(child.name)) {
return callback(child, i)
}
})
}
return this.walk((child, i) => {
if (child.type === 'atrule' && child.name === name) {
return callback(child, i)
}
})
}
walkComments (callback) {
return this.walk((child, i) => {
if (child.type === 'comment') {
return callback(child, i)
}
})
}
append (...children) {
for (let child of children) {
let nodes = this.normalize(child, this.last);
for (let node of nodes) this.proxyOf.nodes.push(node);
}
this.markDirty();
return this
}
prepend (...children) {
children = children.reverse();
for (let child of children) {
let nodes = this.normalize(child, this.first, 'prepend').reverse();
for (let node of nodes) this.proxyOf.nodes.unshift(node);
for (let id in this.indexes) {
this.indexes[id] = this.indexes[id] + nodes.length;
}
}
this.markDirty();
return this
}
cleanRaws (keepBetween) {
super.cleanRaws(keepBetween);
if (this.nodes) {
for (let node of this.nodes) node.cleanRaws(keepBetween);
}
}
insertBefore (exist, add) {
exist = this.index(exist);
let type = exist === 0 ? 'prepend' : false;
let nodes = this.normalize(add, this.proxyOf.nodes[exist], type).reverse();
for (let node of nodes) this.proxyOf.nodes.splice(exist, 0, node);
let index;
for (let id in this.indexes) {
index = this.indexes[id];
if (exist = child) {
this.indexes[id] = index - 1;
}
}
this.markDirty();
return this
}
removeAll () {
for (let node of this.proxyOf.nodes) node.parent = undefined;
this.proxyOf.nodes = [];
this.markDirty();
return this
}
replaceValues (pattern, opts, callback) {
if (!callback) {
callback = opts;
opts = {};
}
this.walkDecls(decl => {
if (opts.props && !opts.props.includes(decl.prop)) return
if (opts.fast && !decl.value.includes(opts.fast)) return
decl.value = decl.value.replace(pattern, callback);
});
this.markDirty();
return this
}
every (condition) {
return this.nodes.every(condition)
}
some (condition) {
return this.nodes.some(condition)
}
index (child) {
if (typeof child === 'number') return child
if (child.proxyOf) child = child.proxyOf;
return this.proxyOf.nodes.indexOf(child)
}
get first () {
if (!this.proxyOf.nodes) return undefined
return this.proxyOf.nodes[0]
}
get last () {
if (!this.proxyOf.nodes) return undefined
return this.proxyOf.nodes[this.proxyOf.nodes.length - 1]
}
normalize (nodes, sample) {
if (typeof nodes === 'string') {
nodes = cleanSource(parse$5(nodes).nodes);
} else if (Array.isArray(nodes)) {
nodes = nodes.slice(0);
for (let i of nodes) {
if (i.parent) i.parent.removeChild(i, 'ignore');
}
} else if (nodes.type === 'root') {
nodes = nodes.nodes.slice(0);
for (let i of nodes) {
if (i.parent) i.parent.removeChild(i, 'ignore');
}
} else if (nodes.type) {
nodes = [nodes];
} else if (nodes.prop) {
if (typeof nodes.value === 'undefined') {
throw new Error('Value field is missed in node creation')
} else if (typeof nodes.value !== 'string') {
nodes.value = String(nodes.value);
}
nodes = [new declaration$1(nodes)];
} else if (nodes.selector) {
nodes = [new Rule$1(nodes)];
} else if (nodes.name) {
nodes = [new AtRule$2(nodes)];
} else if (nodes.text) {
nodes = [new comment(nodes)];
} else {
throw new Error('Unknown node type in node creation')
}
let processed = nodes.map(i => {
// istanbul ignore next
if (typeof i.markDirty !== 'function') rebuild(i);
i = i.proxyOf;
if (i.parent) i.parent.removeChild(i);
if (i[isClean$1]) markDirtyUp(i);
if (typeof i.raws.before === 'undefined') {
if (sample && typeof sample.raws.before !== 'undefined') {
i.raws.before = sample.raws.before.replace(/\S/g, '');
}
}
i.parent = this;
return i
});
return processed
}
getProxyProcessor () {
return {
set (node, prop, value) {
if (node[prop] === value) return true
node[prop] = value;
if (prop === 'name' || prop === 'params' || prop === 'selector') {
node.markDirty();
}
return true
},
get (node, prop) {
if (prop === 'proxyOf') {
return node
} else if (!node[prop]) {
return node[prop]
} else if (
prop === 'each' ||
(typeof prop === 'string' && prop.startsWith('walk'))
) {
return (...args) => {
return node[prop](
...args.map(i => {
if (typeof i === 'function') {
return (child, index) => i(child.toProxy(), index)
} else {
return i
}
})
)
}
} else if (prop === 'every' || prop === 'some') {
return cb => {
return node[prop]((child, ...other) =>
cb(child.toProxy(), ...other)
)
}
} else if (prop === 'root') {
return () => node.root().toProxy()
} else if (prop === 'nodes') {
return node.nodes.map(i => i.toProxy())
} else if (prop === 'first' || prop === 'last') {
return node[prop].toProxy()
} else {
return node[prop]
}
}
}
}
getIterator () {
if (!this.lastEach) this.lastEach = 0;
if (!this.indexes) this.indexes = {};
this.lastEach += 1;
let iterator = this.lastEach;
this.indexes[iterator] = 0;
return iterator
}
}
Container.registerParse = dependant => {
parse$5 = dependant;
};
Container.registerRule = dependant => {
Rule$1 = dependant;
};
Container.registerAtRule = dependant => {
AtRule$2 = dependant;
};
var container = Container;
Container.default = Container;
const SINGLE_QUOTE = "'".charCodeAt(0);
const DOUBLE_QUOTE = '"'.charCodeAt(0);
const BACKSLASH = '\\'.charCodeAt(0);
const SLASH = '/'.charCodeAt(0);
const NEWLINE = '\n'.charCodeAt(0);
const SPACE = ' '.charCodeAt(0);
const FEED = '\f'.charCodeAt(0);
const TAB = '\t'.charCodeAt(0);
const CR = '\r'.charCodeAt(0);
const OPEN_SQUARE = '['.charCodeAt(0);
const CLOSE_SQUARE = ']'.charCodeAt(0);
const OPEN_PARENTHESES = '('.charCodeAt(0);
const CLOSE_PARENTHESES = ')'.charCodeAt(0);
const OPEN_CURLY = '{'.charCodeAt(0);
const CLOSE_CURLY = '}'.charCodeAt(0);
const SEMICOLON = ';'.charCodeAt(0);
const ASTERISK = '*'.charCodeAt(0);
const COLON = ':'.charCodeAt(0);
const AT = '@'.charCodeAt(0);
const RE_AT_END = /[\t\n\f\r "#'()/;[\\\]{}]/g;
const RE_WORD_END = /[\t\n\f\r !"#'():;@[\\\]{}]|\/(?=\*)/g;
const RE_BAD_BRACKET = /.[\n"'(/\\]/;
const RE_HEX_ESCAPE = /[\da-f]/i;
var tokenize = function tokenizer (input, options = {}) {
let css = input.css.valueOf();
let ignore = options.ignoreErrors;
let code, next, quote, content, escape;
let escaped, escapePos, prev, n, currentToken;
let length = css.length;
let pos = 0;
let buffer = [];
let returned = [];
function position () {
return pos
}
function unclosed (what) {
throw input.error('Unclosed ' + what, pos)
}
function endOfFile () {
return returned.length === 0 && pos >= length
}
function nextToken (opts) {
if (returned.length) return returned.pop()
if (pos >= length) return
let ignoreUnclosed = opts ? opts.ignoreUnclosed : false;
code = css.charCodeAt(pos);
switch (code) {
case NEWLINE:
case SPACE:
case TAB:
case CR:
case FEED: {
next = pos;
do {
next += 1;
code = css.charCodeAt(next);
} while (
code === SPACE ||
code === NEWLINE ||
code === TAB ||
code === CR ||
code === FEED
)
currentToken = ['space', css.slice(pos, next)];
pos = next - 1;
break
}
case OPEN_SQUARE:
case CLOSE_SQUARE:
case OPEN_CURLY:
case CLOSE_CURLY:
case COLON:
case SEMICOLON:
case CLOSE_PARENTHESES: {
let controlChar = String.fromCharCode(code);
currentToken = [controlChar, controlChar, pos];
break
}
case OPEN_PARENTHESES: {
prev = buffer.length ? buffer.pop()[1] : '';
n = css.charCodeAt(pos + 1);
if (
prev === 'url' &&
n !== SINGLE_QUOTE &&
n !== DOUBLE_QUOTE &&
n !== SPACE &&
n !== NEWLINE &&
n !== TAB &&
n !== FEED &&
n !== CR
) {
next = pos;
do {
escaped = false;
next = css.indexOf(')', next + 1);
if (next === -1) {
if (ignore || ignoreUnclosed) {
next = pos;
break
} else {
unclosed('bracket');
}
}
escapePos = next;
while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
escapePos -= 1;
escaped = !escaped;
}
} while (escaped)
currentToken = ['brackets', css.slice(pos, next + 1), pos, next];
pos = next;
} else {
next = css.indexOf(')', pos + 1);
content = css.slice(pos, next + 1);
if (next === -1 || RE_BAD_BRACKET.test(content)) {
currentToken = ['(', '(', pos];
} else {
currentToken = ['brackets', content, pos, next];
pos = next;
}
}
break
}
case SINGLE_QUOTE:
case DOUBLE_QUOTE: {
quote = code === SINGLE_QUOTE ? "'" : '"';
next = pos;
do {
escaped = false;
next = css.indexOf(quote, next + 1);
if (next === -1) {
if (ignore || ignoreUnclosed) {
next = pos + 1;
break
} else {
unclosed('string');
}
}
escapePos = next;
while (css.charCodeAt(escapePos - 1) === BACKSLASH) {
escapePos -= 1;
escaped = !escaped;
}
} while (escaped)
currentToken = ['string', css.slice(pos, next + 1), pos, next];
pos = next;
break
}
case AT: {
RE_AT_END.lastIndex = pos + 1;
RE_AT_END.test(css);
if (RE_AT_END.lastIndex === 0) {
next = css.length - 1;
} else {
next = RE_AT_END.lastIndex - 2;
}
currentToken = ['at-word', css.slice(pos, next + 1), pos, next];
pos = next;
break
}
case BACKSLASH: {
next = pos;
escape = true;
while (css.charCodeAt(next + 1) === BACKSLASH) {
next += 1;
escape = !escape;
}
code = css.charCodeAt(next + 1);
if (
escape &&
code !== SLASH &&
code !== SPACE &&
code !== NEWLINE &&
code !== TAB &&
code !== CR &&
code !== FEED
) {
next += 1;
if (RE_HEX_ESCAPE.test(css.charAt(next))) {
while (RE_HEX_ESCAPE.test(css.charAt(next + 1))) {
next += 1;
}
if (css.charCodeAt(next + 1) === SPACE) {
next += 1;
}
}
}
currentToken = ['word', css.slice(pos, next + 1), pos, next];
pos = next;
break
}
default: {
if (code === SLASH && css.charCodeAt(pos + 1) === ASTERISK) {
next = css.indexOf('*/', pos + 2) + 1;
if (next === 0) {
if (ignore || ignoreUnclosed) {
next = css.length;
} else {
unclosed('comment');
}
}
currentToken = ['comment', css.slice(pos, next + 1), pos, next];
pos = next;
} else {
RE_WORD_END.lastIndex = pos + 1;
RE_WORD_END.test(css);
if (RE_WORD_END.lastIndex === 0) {
next = css.length - 1;
} else {
next = RE_WORD_END.lastIndex - 2;
}
currentToken = ['word', css.slice(pos, next + 1), pos, next];
buffer.push(currentToken);
pos = next;
}
break
}
}
pos++;
return currentToken
}
function back (token) {
returned.push(token);
}
return {
back,
nextToken,
endOfFile,
position
}
};
class AtRule$1 extends container {
constructor (defaults) {
super(defaults);
this.type = 'atrule';
}
append (...children) {
if (!this.proxyOf.nodes) this.nodes = [];
return super.append(...children)
}
prepend (...children) {
if (!this.proxyOf.nodes) this.nodes = [];
return super.prepend(...children)
}
}
var atRule$1 = AtRule$1;
AtRule$1.default = AtRule$1;
container.registerAtRule(AtRule$1);
let LazyResult$1, Processor$2;
class Root extends container {
constructor (defaults) {
super(defaults);
this.type = 'root';
if (!this.nodes) this.nodes = [];
}
removeChild (child, ignore) {
let index = this.index(child);
if (!ignore && index === 0 && this.nodes.length > 1) {
this.nodes[1].raws.before = this.nodes[index].raws.before;
}
return super.removeChild(child)
}
normalize (child, sample, type) {
let nodes = super.normalize(child);
if (sample) {
if (type === 'prepend') {
if (this.nodes.length > 1) {
sample.raws.before = this.nodes[1].raws.before;
} else {
delete sample.raws.before;
}
} else if (this.first !== sample) {
for (let node of nodes) {
node.raws.before = sample.raws.before;
}
}
}
return nodes
}
toResult (opts = {}) {
let lazy = new LazyResult$1(new Processor$2(), this, opts);
return lazy.stringify()
}
}
Root.registerLazyResult = dependant => {
LazyResult$1 = dependant;
};
Root.registerProcessor = dependant => {
Processor$2 = dependant;
};
var root = Root;
Root.default = Root;
let list$6 = {
split (string, separators, last) {
let array = [];
let current = '';
let split = false;
let func = 0;
let quote = false;
let escape = false;
for (let letter of string) {
if (quote) {
if (escape) {
escape = false;
} else if (letter === '\\') {
escape = true;
} else if (letter === quote) {
quote = false;
}
} else if (letter === '"' || letter === "'") {
quote = letter;
} else if (letter === '(') {
func += 1;
} else if (letter === ')') {
if (func > 0) func -= 1;
} else if (func === 0) {
if (separators.includes(letter)) split = true;
}
if (split) {
if (current !== '') array.push(current.trim());
current = '';
split = false;
} else {
current += letter;
}
}
if (last || current !== '') array.push(current.trim());
return array
},
space (string) {
let spaces = [' ', '\n', '\t'];
return list$6.split(string, spaces)
},
comma (string) {
return list$6.split(string, [','], true)
}
};
var list_1 = list$6;
list$6.default = list$6;
class Rule extends container {
constructor (defaults) {
super(defaults);
this.type = 'rule';
if (!this.nodes) this.nodes = [];
}
get selectors () {
return list_1.comma(this.selector)
}
set selectors (values) {
let match = this.selector ? this.selector.match(/,\s*/) : null;
let sep = match ? match[0] : ',' + this.raw('between', 'beforeOpen');
this.selector = values.join(sep);
}
}
var rule = Rule;
Rule.default = Rule;
container.registerRule(Rule);
class Parser {
constructor (input) {
this.input = input;
this.root = new root();
this.current = this.root;
this.spaces = '';
this.semicolon = false;
this.customProperty = false;
this.createTokenizer();
this.root.source = { input, start: { offset: 0, line: 1, column: 1 } };
}
createTokenizer () {
this.tokenizer = tokenize(this.input);
}
parse () {
let token;
while (!this.tokenizer.endOfFile()) {
token = this.tokenizer.nextToken();
switch (token[0]) {
case 'space':
this.spaces += token[1];
break
case ';':
this.freeSemicolon(token);
break
case '}':
this.end(token);
break
case 'comment':
this.comment(token);
break
case 'at-word':
this.atrule(token);
break
case '{':
this.emptyRule(token);
break
default:
this.other(token);
break
}
}
this.endFile();
}
comment (token) {
let node = new comment();
this.init(node, token[2]);
node.source.end = this.getPosition(token[3] || token[2]);
let text = token[1].slice(2, -2);
if (/^\s*$/.test(text)) {
node.text = '';
node.raws.left = text;
node.raws.right = '';
} else {
let match = text.match(/^(\s*)([^]*\S)(\s*)$/);
node.text = match[2];
node.raws.left = match[1];
node.raws.right = match[3];
}
}
emptyRule (token) {
let node = new rule();
this.init(node, token[2]);
node.selector = '';
node.raws.between = '';
this.current = node;
}
other (start) {
let end = false;
let type = null;
let colon = false;
let bracket = null;
let brackets = [];
let customProperty = start[1].startsWith('--');
let tokens = [];
let token = start;
while (token) {
type = token[0];
tokens.push(token);
if (type === '(' || type === '[') {
if (!bracket) bracket = token;
brackets.push(type === '(' ? ')' : ']');
} else if (customProperty && colon && type === '{') {
if (!bracket) bracket = token;
brackets.push('}');
} else if (brackets.length === 0) {
if (type === ';') {
if (colon) {
this.decl(tokens, customProperty);
return
} else {
break
}
} else if (type === '{') {
this.rule(tokens);
return
} else if (type === '}') {
this.tokenizer.back(tokens.pop());
end = true;
break
} else if (type === ':') {
colon = true;
}
} else if (type === brackets[brackets.length - 1]) {
brackets.pop();
if (brackets.length === 0) bracket = null;
}
token = this.tokenizer.nextToken();
}
if (this.tokenizer.endOfFile()) end = true;
if (brackets.length > 0) this.unclosedBracket(bracket);
if (end && colon) {
while (tokens.length) {
token = tokens[tokens.length - 1][0];
if (token !== 'space' && token !== 'comment') break
this.tokenizer.back(tokens.pop());
}
this.decl(tokens, customProperty);
} else {
this.unknownWord(tokens);
}
}
rule (tokens) {
tokens.pop();
let node = new rule();
this.init(node, tokens[0][2]);
node.raws.between = this.spacesAndCommentsFromEnd(tokens);
this.raw(node, 'selector', tokens);
this.current = node;
}
decl (tokens, customProperty) {
let node = new declaration$1();
this.init(node, tokens[0][2]);
let last = tokens[tokens.length - 1];
if (last[0] === ';') {
this.semicolon = true;
tokens.pop();
}
node.source.end = this.getPosition(last[3] || last[2]);
while (tokens[0][0] !== 'word') {
if (tokens.length === 1) this.unknownWord(tokens);
node.raws.before += tokens.shift()[1];
}
node.source.start = this.getPosition(tokens[0][2]);
node.prop = '';
while (tokens.length) {
let type = tokens[0][0];
if (type === ':' || type === 'space' || type === 'comment') {
break
}
node.prop += tokens.shift()[1];
}
node.raws.between = '';
let token;
while (tokens.length) {
token = tokens.shift();
if (token[0] === ':') {
node.raws.between += token[1];
break
} else {
if (token[0] === 'word' && /\w/.test(token[1])) {
this.unknownWord([token]);
}
node.raws.between += token[1];
}
}
if (node.prop[0] === '_' || node.prop[0] === '*') {
node.raws.before += node.prop[0];
node.prop = node.prop.slice(1);
}
let firstSpaces = this.spacesAndCommentsFromStart(tokens);
this.precheckMissedSemicolon(tokens);
for (let i = tokens.length - 1; i >= 0; i--) {
token = tokens[i];
if (token[1].toLowerCase() === '!important') {
node.important = true;
let string = this.stringFrom(tokens, i);
string = this.spacesFromEnd(tokens) + string;
if (string !== ' !important') node.raws.important = string;
break
} else if (token[1].toLowerCase() === 'important') {
let cache = tokens.slice(0);
let str = '';
for (let j = i; j > 0; j--) {
let type = cache[j][0];
if (str.trim().indexOf('!') === 0 && type !== 'space') {
break
}
str = cache.pop()[1] + str;
}
if (str.trim().indexOf('!') === 0) {
node.important = true;
node.raws.important = str;
tokens = cache;
}
}
if (token[0] !== 'space' && token[0] !== 'comment') {
break
}
}
let hasWord = tokens.some(i => i[0] !== 'space' && i[0] !== 'comment');
this.raw(node, 'value', tokens);
if (hasWord) {
node.raws.between += firstSpaces;
} else {
node.value = firstSpaces + node.value;
}
if (node.value.includes(':') && !customProperty) {
this.checkMissedSemicolon(tokens);
}
}
atrule (token) {
let node = new atRule$1();
node.name = token[1].slice(1);
if (node.name === '') {
this.unnamedAtrule(node, token);
}
this.init(node, token[2]);
let type;
let prev;
let shift;
let last = false;
let open = false;
let params = [];
let brackets = [];
while (!this.tokenizer.endOfFile()) {
token = this.tokenizer.nextToken();
type = token[0];
if (type === '(' || type === '[') {
brackets.push(type === '(' ? ')' : ']');
} else if (type === '{' && brackets.length > 0) {
brackets.push('}');
} else if (type === brackets[brackets.length - 1]) {
brackets.pop();
}
if (brackets.length === 0) {
if (type === ';') {
node.source.end = this.getPosition(token[2]);
this.semicolon = true;
break
} else if (type === '{') {
open = true;
break
} else if (type === '}') {
if (params.length > 0) {
shift = params.length - 1;
prev = params[shift];
while (prev && prev[0] === 'space') {
prev = params[--shift];
}
if (prev) {
node.source.end = this.getPosition(prev[3] || prev[2]);
}
}
this.end(token);
break
} else {
params.push(token);
}
} else {
params.push(token);
}
if (this.tokenizer.endOfFile()) {
last = true;
break
}
}
node.raws.between = this.spacesAndCommentsFromEnd(params);
if (params.length) {
node.raws.afterName = this.spacesAndCommentsFromStart(params);
this.raw(node, 'params', params);
if (last) {
token = params[params.length - 1];
node.source.end = this.getPosition(token[3] || token[2]);
this.spaces = node.raws.between;
node.raws.between = '';
}
} else {
node.raws.afterName = '';
node.params = '';
}
if (open) {
node.nodes = [];
this.current = node;
}
}
end (token) {
if (this.current.nodes && this.current.nodes.length) {
this.current.raws.semicolon = this.semicolon;
}
this.semicolon = false;
this.current.raws.after = (this.current.raws.after || '') + this.spaces;
this.spaces = '';
if (this.current.parent) {
this.current.source.end = this.getPosition(token[2]);
this.current = this.current.parent;
} else {
this.unexpectedClose(token);
}
}
endFile () {
if (this.current.parent) this.unclosedBlock();
if (this.current.nodes && this.current.nodes.length) {
this.current.raws.semicolon = this.semicolon;
}
this.current.raws.after = (this.current.raws.after || '') + this.spaces;
}
freeSemicolon (token) {
this.spaces += token[1];
if (this.current.nodes) {
let prev = this.current.nodes[this.current.nodes.length - 1];
if (prev && prev.type === 'rule' && !prev.raws.ownSemicolon) {
prev.raws.ownSemicolon = this.spaces;
this.spaces = '';
}
}
}
// Helpers
getPosition (offset) {
let pos = this.input.fromOffset(offset);
return {
offset,
line: pos.line,
column: pos.col
}
}
init (node, offset) {
this.current.push(node);
node.source = {
start: this.getPosition(offset),
input: this.input
};
node.raws.before = this.spaces;
this.spaces = '';
if (node.type !== 'comment') this.semicolon = false;
}
raw (node, prop, tokens) {
let token, type;
let length = tokens.length;
let value = '';
let clean = true;
let next, prev;
let pattern = /^([#.|])?(\w)+/i;
for (let i = 0; i all + i[1], '');
node.raws[prop] = { value, raw };
}
node[prop] = value;
}
spacesAndCommentsFromEnd (tokens) {
let lastTokenType;
let spaces = '';
while (tokens.length) {
lastTokenType = tokens[tokens.length - 1][0];
if (lastTokenType !== 'space' && lastTokenType !== 'comment') break
spaces = tokens.pop()[1] + spaces;
}
return spaces
}
spacesAndCommentsFromStart (tokens) {
let next;
let spaces = '';
while (tokens.length) {
next = tokens[0][0];
if (next !== 'space' && next !== 'comment') break
spaces += tokens.shift()[1];
}
return spaces
}
spacesFromEnd (tokens) {
let lastTokenType;
let spaces = '';
while (tokens.length) {
lastTokenType = tokens[tokens.length - 1][0];
if (lastTokenType !== 'space') break
spaces = tokens.pop()[1] + spaces;
}
return spaces
}
stringFrom (tokens, from) {
let result = '';
for (let i = from; i = 0; j--) {
token = tokens[j];
if (token[0] !== 'space') {
founded += 1;
if (founded === 2) break
}
}
throw this.input.error('Missed semicolon', token[2])
}
}
var parser = Parser;
var lib$1 = createCommonjsModule(function (module, exports) {
function makeException(ErrorType, message, opts = {}) {
if (opts.globals) {
ErrorType = opts.globals[ErrorType.name];
}
return new ErrorType(`${opts.context ? opts.context : "Value"} ${message}.`);
}
function toNumber(value, opts = {}) {
if (!opts.globals) {
return +value;
}
if (typeof value === "bigint") {
throw opts.globals.TypeError("Cannot convert a BigInt value to a number");
}
return opts.globals.Number(value);
}
function type(V) {
if (V === null) {
return "Null";
}
switch (typeof V) {
case "undefined":
return "Undefined";
case "boolean":
return "Boolean";
case "number":
return "Number";
case "string":
return "String";
case "symbol":
return "Symbol";
case "bigint":
return "BigInt";
case "object":
// Falls through
case "function":
// Falls through
default:
// Per ES spec, typeof returns an implemention-defined value that is not any of the existing ones for
// uncallable non-standard exotic objects. Yet Type() which the Web IDL spec depends on returns Object for
// such cases. So treat the default case as an object.
return "Object";
}
}
// Round x to the nearest integer, choosing the even integer if it lies halfway between two.
function evenRound(x) {
// There are four cases for numbers with fractional part being .5:
//
// case | x | floor(x) | round(x) | expected | x 0 | x % 1 | x & 1 | example
// 1 | 2n + 0.5 | 2n | 2n + 1 | 2n | > | 0.5 | 0 | 0.5 -> 0
// 2 | 2n + 1.5 | 2n + 1 | 2n + 2 | 2n + 2 | > | 0.5 | 1 | 1.5 -> 2
// 3 | -2n - 0.5 | -2n - 1 | -2n | -2n | 0
// 4 | -2n - 1.5 | -2n - 2 | -2n - 1 | -2n - 2 | -2
// (where n is a non-negative integer)
//
// Branch here for cases 1 and 4
if ((x > 0 && (x % 1) === +0.5 && (x & 1) === 0) ||
(x {
let x = toNumber(V, opts);
x = censorNegativeZero(x);
if (opts.enforceRange) {
if (!Number.isFinite(x)) {
throw makeException(TypeError, "is not a finite number", opts);
}
x = integerPart(x);
if (x upperBound) {
throw makeException(TypeError,
`is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`, opts);
}
return x;
}
if (!Number.isNaN(x) && opts.clamp) {
x = Math.min(Math.max(x, lowerBound), upperBound);
x = evenRound(x);
return x;
}
if (!Number.isFinite(x) || x === 0) {
return 0;
}
x = integerPart(x);
// Math.pow(2, 64) is not accurately representable in JavaScript, so try to avoid these per-spec operations if
// possible. Hopefully it's an optimization for the non-64-bitLength cases too.
if (x >= lowerBound && x = twoToOneLessThanTheBitLength) {
return x - twoToTheBitLength;
}
return x;
};
}
function createLongLongConversion(bitLength, { unsigned }) {
const upperBound = Number.MAX_SAFE_INTEGER;
const lowerBound = unsigned ? 0 : Number.MIN_SAFE_INTEGER;
const asBigIntN = unsigned ? BigInt.asUintN : BigInt.asIntN;
return (V, opts = {}) => {
if (opts === undefined) {
opts = {};
}
let x = toNumber(V, opts);
x = censorNegativeZero(x);
if (opts.enforceRange) {
if (!Number.isFinite(x)) {
throw makeException(TypeError, "is not a finite number", opts);
}
x = integerPart(x);
if (x upperBound) {
throw makeException(TypeError,
`is outside the accepted range of ${lowerBound} to ${upperBound}, inclusive`, opts);
}
return x;
}
if (!Number.isNaN(x) && opts.clamp) {
x = Math.min(Math.max(x, lowerBound), upperBound);
x = evenRound(x);
return x;
}
if (!Number.isFinite(x) || x === 0) {
return 0;
}
let xBigInt = BigInt(integerPart(x));
xBigInt = asBigIntN(bitLength, xBigInt);
return Number(xBigInt);
};
}
exports.any = V => {
return V;
};
exports.void = function () {
return undefined;
};
exports.boolean = function (val) {
return !!val;
};
exports.byte = createIntegerConversion(8, { unsigned: false });
exports.octet = createIntegerConversion(8, { unsigned: true });
exports.short = createIntegerConversion(16, { unsigned: false });
exports["unsigned short"] = createIntegerConversion(16, { unsigned: true });
exports.long = createIntegerConversion(32, { unsigned: false });
exports["unsigned long"] = createIntegerConversion(32, { unsigned: true });
exports["long long"] = createLongLongConversion(64, { unsigned: false });
exports["unsigned long long"] = createLongLongConversion(64, { unsigned: true });
exports.double = (V, opts) => {
const x = toNumber(V, opts);
if (!Number.isFinite(x)) {
throw makeException(TypeError, "is not a finite floating-point value", opts);
}
return x;
};
exports["unrestricted double"] = (V, opts) => {
const x = toNumber(V, opts);
return x;
};
exports.float = (V, opts) => {
const x = toNumber(V, opts);
if (!Number.isFinite(x)) {
throw makeException(TypeError, "is not a finite floating-point value", opts);
}
if (Object.is(x, -0)) {
return x;
}
const y = Math.fround(x);
if (!Number.isFinite(y)) {
throw makeException(TypeError, "is outside the range of a single-precision floating-point value", opts);
}
return y;
};
exports["unrestricted float"] = (V, opts) => {
const x = toNumber(V, opts);
if (isNaN(x)) {
return x;
}
if (Object.is(x, -0)) {
return x;
}
return Math.fround(x);
};
exports.DOMString = function (V, opts = {}) {
if (opts.treatNullAsEmptyString && V === null) {
return "";
}
if (typeof V === "symbol") {
throw makeException(TypeError, "is a symbol, which cannot be converted to a string", opts);
}
const StringCtor = opts.globals ? opts.globals.String : String;
return StringCtor(V);
};
exports.ByteString = (V, opts) => {
const x = exports.DOMString(V, opts);
let c;
for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {
if (c > 255) {
throw makeException(TypeError, "is not a valid ByteString", opts);
}
}
return x;
};
exports.USVString = (V, opts) => {
const S = exports.DOMString(V, opts);
const n = S.length;
const U = [];
for (let i = 0; i 0xDFFF) {
U.push(String.fromCodePoint(c));
} else if (0xDC00 {
if (type(V) !== "Object") {
throw makeException(TypeError, "is not an object", opts);
}
return V;
};
// Not exported, but used in Function and VoidFunction.
// Neither Function nor VoidFunction is defined with [TreatNonObjectAsNull], so
// handling for that is omitted.
function convertCallbackFunction(V, opts) {
if (typeof V !== "function") {
throw makeException(TypeError, "is not a function", opts);
}
return V;
}
const abByteLengthGetter =
Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength").get;
const sabByteLengthGetter =
Object.getOwnPropertyDescriptor(SharedArrayBuffer.prototype, "byteLength").get;
function isNonSharedArrayBuffer(V) {
try {
// This will throw on SharedArrayBuffers, but not detached ArrayBuffers.
// (The spec says it should throw, but the spec conflicts with implementations: https://github.com/tc39/ecma262/issues/678)
abByteLengthGetter.call(V);
return true;
} catch {
return false;
}
}
function isSharedArrayBuffer(V) {
try {
sabByteLengthGetter.call(V);
return true;
} catch {
return false;
}
}
function isArrayBufferDetached(V) {
try {
// eslint-disable-next-line no-new
new Uint8Array(V);
return false;
} catch {
return true;
}
}
exports.ArrayBuffer = (V, opts = {}) => {
if (!isNonSharedArrayBuffer(V)) {
if (opts.allowShared && !isSharedArrayBuffer(V)) {
throw makeException(TypeError, "is not an ArrayBuffer or SharedArrayBuffer", opts);
}
throw makeException(TypeError, "is not an ArrayBuffer", opts);
}
if (isArrayBufferDetached(V)) {
throw makeException(TypeError, "is a detached ArrayBuffer", opts);
}
return V;
};
const dvByteLengthGetter =
Object.getOwnPropertyDescriptor(DataView.prototype, "byteLength").get;
exports.DataView = (V, opts = {}) => {
try {
dvByteLengthGetter.call(V);
} catch (e) {
throw makeException(TypeError, "is not a DataView", opts);
}
if (!opts.allowShared && isSharedArrayBuffer(V.buffer)) {
throw makeException(TypeError, "is backed by a SharedArrayBuffer, which is not allowed", opts);
}
if (isArrayBufferDetached(V.buffer)) {
throw makeException(TypeError, "is backed by a detached ArrayBuffer", opts);
}
return V;
};
// Returns the unforgeable `TypedArray` constructor name or `undefined`,
// if the `this` value isn't a valid `TypedArray` object.
//
// https://tc39.es/ecma262/#sec-get-%typedarray%.prototype-@@tostringtag
const typedArrayNameGetter = Object.getOwnPropertyDescriptor(
Object.getPrototypeOf(Uint8Array).prototype,
Symbol.toStringTag
).get;
[
Int8Array, Int16Array, Int32Array, Uint8Array,
Uint16Array, Uint32Array, Uint8ClampedArray, Float32Array, Float64Array
].forEach(func => {
const name = func.name;
const article = /^[AEIOU]/.test(name) ? "an" : "a";
exports[name] = (V, opts = {}) => {
if (!ArrayBuffer.isView(V) || typedArrayNameGetter.call(V) !== name) {
throw makeException(TypeError, `is not ${article} ${name} object`, opts);
}
if (!opts.allowShared && isSharedArrayBuffer(V.buffer)) {
throw makeException(TypeError, "is a view on a SharedArrayBuffer, which is not allowed", opts);
}
if (isArrayBufferDetached(V.buffer)) {
throw makeException(TypeError, "is a view on a detached ArrayBuffer", opts);
}
return V;
};
});
// Common definitions
exports.ArrayBufferView = (V, opts = {}) => {
if (!ArrayBuffer.isView(V)) {
throw makeException(TypeError, "is not a view on an ArrayBuffer or SharedArrayBuffer", opts);
}
if (!opts.allowShared && isSharedArrayBuffer(V.buffer)) {
throw makeException(TypeError, "is a view on a SharedArrayBuffer, which is not allowed", opts);
}
if (isArrayBufferDetached(V.buffer)) {
throw makeException(TypeError, "is a view on a detached ArrayBuffer", opts);
}
return V;
};
exports.BufferSource = (V, opts = {}) => {
if (ArrayBuffer.isView(V)) {
if (!opts.allowShared && isSharedArrayBuffer(V.buffer)) {
throw makeException(TypeError, "is a view on a SharedArrayBuffer, which is not allowed", opts);
}
if (isArrayBufferDetached(V.buffer)) {
throw makeException(TypeError, "is a view on a detached ArrayBuffer", opts);
}
return V;
}
if (!opts.allowShared && !isNonSharedArrayBuffer(V)) {
throw makeException(TypeError, "is not an ArrayBuffer or a view on one", opts);
}
if (opts.allowShared && !isSharedArrayBuffer(V) && !isNonSharedArrayBuffer(V)) {
throw makeException(TypeError, "is not an ArrayBuffer, SharedArrayBufer, or a view on one", opts);
}
if (isArrayBufferDetached(V)) {
throw makeException(TypeError, "is a detached ArrayBuffer", opts);
}
return V;
};
exports.DOMTimeStamp = exports["unsigned long long"];
exports.Function = convertCallbackFunction;
exports.VoidFunction = convertCallbackFunction;
});
var utils$1 = createCommonjsModule(function (module, exports) {
// Returns "Type(value) is Object" in ES terminology.
function isObject(value) {
return typeof value === "object" && value !== null || typeof value === "function";
}
const hasOwn = Function.prototype.call.bind(Object.prototype.hasOwnProperty);
const wrapperSymbol = Symbol("wrapper");
const implSymbol = Symbol("impl");
const sameObjectCaches = Symbol("SameObject caches");
const ctorRegistrySymbol = Symbol.for("[webidl2js] constructor registry");
function getSameObject(wrapper, prop, creator) {
if (!wrapper[sameObjectCaches]) {
wrapper[sameObjectCaches] = Object.create(null);
}
if (prop in wrapper[sameObjectCaches]) {
return wrapper[sameObjectCaches][prop];
}
wrapper[sameObjectCaches][prop] = creator();
return wrapper[sameObjectCaches][prop];
}
function wrapperForImpl(impl) {
return impl ? impl[wrapperSymbol] : null;
}
function implForWrapper(wrapper) {
return wrapper ? wrapper[implSymbol] : null;
}
function tryWrapperForImpl(impl) {
const wrapper = wrapperForImpl(impl);
return wrapper ? wrapper : impl;
}
function tryImplForWrapper(wrapper) {
const impl = implForWrapper(wrapper);
return impl ? impl : wrapper;
}
const iterInternalSymbol = Symbol("internal");
const IteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()));
const AsyncIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf(async function* () {}).prototype);
function isArrayIndexPropName(P) {
if (typeof P !== "string") {
return false;
}
const i = P >>> 0;
if (i === Math.pow(2, 32) - 1) {
return false;
}
const s = `${i}`;
if (P !== s) {
return false;
}
return true;
}
const byteLengthGetter =
Object.getOwnPropertyDescriptor(ArrayBuffer.prototype, "byteLength").get;
function isArrayBuffer(value) {
try {
byteLengthGetter.call(value);
return true;
} catch (e) {
return false;
}
}
function iteratorResult([key, value], kind) {
let result;
switch (kind) {
case "key":
result = key;
break;
case "value":
result = value;
break;
case "key+value":
result = [key, value];
break;
}
return { value: result, done: false };
}
const supportsPropertyIndex = Symbol("supports property index");
const supportedPropertyIndices = Symbol("supported property indices");
const supportsPropertyName = Symbol("supports property name");
const supportedPropertyNames = Symbol("supported property names");
const indexedGet = Symbol("indexed property get");
const indexedSetNew = Symbol("indexed property set new");
const indexedSetExisting = Symbol("indexed property set existing");
const namedGet = Symbol("named property get");
const namedSetNew = Symbol("named property set new");
const namedSetExisting = Symbol("named property set existing");
const namedDelete = Symbol("named property delete");
const asyncIteratorNext = Symbol("async iterator get the next iteration result");
const asyncIteratorReturn = Symbol("async iterator return steps");
const asyncIteratorInit = Symbol("async iterator initialization steps");
const asyncIteratorEOI = Symbol("async iterator end of iteration");
module.exports = {
isObject,
hasOwn,
wrapperSymbol,
implSymbol,
getSameObject,
ctorRegistrySymbol,
wrapperForImpl,
implForWrapper,
tryWrapperForImpl,
tryImplForWrapper,
iterInternalSymbol,
IteratorPrototype,
AsyncIteratorPrototype,
isArrayBuffer,
isArrayIndexPropName,
supportsPropertyIndex,
supportedPropertyIndices,
supportsPropertyName,
supportedPropertyNames,
indexedGet,
indexedSetNew,
indexedSetExisting,
namedGet,
namedSetNew,
namedSetExisting,
namedDelete,
asyncIteratorNext,
asyncIteratorReturn,
asyncIteratorInit,
asyncIteratorEOI,
iteratorResult
};
});
const combiningMarks = /[\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u192B\u1930-\u193B\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F\u1AB0-\u1AC0\u1B00-\u1B04\u1B34-\u1B44\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BF3\u1C24-\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9E5\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{10D24}-\u{10D27}\u{10EAB}\u{10EAC}\u{10F46}-\u{10F50}\u{11000}-\u{11002}\u{11038}-\u{11046}\u{1107F}-\u{11082}\u{110B0}-\u{110BA}\u{11100}-\u{11102}\u{11127}-\u{11134}\u{11145}\u{11146}\u{11173}\u{11180}-\u{11182}\u{111B3}-\u{111C0}\u{111C9}-\u{111CC}\u{111CE}\u{111CF}\u{1122C}-\u{11237}\u{1123E}\u{112DF}-\u{112EA}\u{11300}-\u{11303}\u{1133B}\u{1133C}\u{1133E}-\u{11344}\u{11347}\u{11348}\u{1134B}-\u{1134D}\u{11357}\u{11362}\u{11363}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11435}-\u{11446}\u{1145E}\u{114B0}-\u{114C3}\u{115AF}-\u{115B5}\u{115B8}-\u{115C0}\u{115DC}\u{115DD}\u{11630}-\u{11640}\u{116AB}-\u{116B7}\u{1171D}-\u{1172B}\u{1182C}-\u{1183A}\u{11930}-\u{11935}\u{11937}\u{11938}\u{1193B}-\u{1193E}\u{11940}\u{11942}\u{11943}\u{119D1}-\u{119D7}\u{119DA}-\u{119E0}\u{119E4}\u{11A01}-\u{11A0A}\u{11A33}-\u{11A39}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A5B}\u{11A8A}-\u{11A99}\u{11C2F}-\u{11C36}\u{11C38}-\u{11C3F}\u{11C92}-\u{11CA7}\u{11CA9}-\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{11D8A}-\u{11D8E}\u{11D90}\u{11D91}\u{11D93}-\u{11D97}\u{11EF3}-\u{11EF6}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F4F}\u{16F51}-\u{16F87}\u{16F8F}-\u{16F92}\u{16FE4}\u{16FF0}\u{16FF1}\u{1BC9D}\u{1BC9E}\u{1D165}-\u{1D169}\u{1D16D}-\u{1D172}\u{1D17B}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E130}-\u{1E136}\u{1E2EC}-\u{1E2EF}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{E0100}-\u{E01EF}]/u;
const combiningClassVirama = /[\u094D\u09CD\u0A4D\u0ACD\u0B4D\u0BCD\u0C4D\u0CCD\u0D3B\u0D3C\u0D4D\u0DCA\u0E3A\u0EBA\u0F84\u1039\u103A\u1714\u1734\u17D2\u1A60\u1B44\u1BAA\u1BAB\u1BF2\u1BF3\u2D7F\uA806\uA8C4\uA953\uA9C0\uAAF6\uABED\u{10A3F}\u{11046}\u{1107F}\u{110B9}\u{11133}\u{11134}\u{111C0}\u{11235}\u{112EA}\u{1134D}\u{11442}\u{114C2}\u{115BF}\u{1163F}\u{116B6}\u{1172B}\u{11839}\u{119E0}\u{11A34}\u{11A47}\u{11A99}\u{11C3F}\u{11D44}\u{11D45}\u{11D97}]/u;
const validZWNJ = /[\u0620\u0626\u0628\u062A-\u062E\u0633-\u063F\u0641-\u0647\u0649\u064A\u066E\u066F\u0678-\u0687\u069A-\u06BF\u06C1\u06C2\u06CC\u06CE\u06D0\u06D1\u06FA-\u06FC\u06FF\u0712-\u0714\u071A-\u071D\u071F-\u0727\u0729\u072B\u072D\u072E\u074E-\u0758\u075C-\u076A\u076D-\u0770\u0772\u0775-\u0777\u077A-\u077F\u07CA-\u07EA\u0841-\u0845\u0848\u084A-\u0853\u0855\u0860\u0862-\u0865\u0868\u08A0-\u08A9\u08AF\u08B0\u08B3\u08B4\u08B6-\u08B8\u08BA-\u08BD\u1807\u1820-\u1878\u1887-\u18A8\u18AA\uA840-\uA872\u{10AC0}-\u{10AC4}\u{10ACD}\u{10AD3}-\u{10ADC}\u{10ADE}-\u{10AE0}\u{10AEB}-\u{10AEE}\u{10B80}\u{10B82}\u{10B86}-\u{10B88}\u{10B8A}\u{10B8B}\u{10B8D}\u{10B90}\u{10BAD}\u{10BAE}\u{10D00}-\u{10D21}\u{10D23}\u{10F30}-\u{10F32}\u{10F34}-\u{10F44}\u{10F51}-\u{10F53}\u{1E900}-\u{1E943}][\xAD\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u061C\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u070F\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u200B\u200E\u200F\u202A-\u202E\u2060-\u2064\u206A-\u206F\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFEFF\uFFF9-\uFFFB\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{10D24}-\u{10D27}\u{10F46}-\u{10F50}\u{11001}\u{11038}-\u{11046}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111C9}-\u{111CC}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133B}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{1145E}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{1182F}-\u{11837}\u{11839}\u{1183A}\u{119D4}-\u{119D7}\u{119DA}\u{119DB}\u{119E0}\u{11A01}-\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C3F}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{11D90}\u{11D91}\u{11D95}\u{11D97}\u{11EF3}\u{11EF4}\u{13430}-\u{13438}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F4F}\u{16F8F}-\u{16F92}\u{1BC9D}\u{1BC9E}\u{1BCA0}-\u{1BCA3}\u{1D167}-\u{1D169}\u{1D173}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E130}-\u{1E136}\u{1E2EC}-\u{1E2EF}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94B}\u{E0001}\u{E0020}-\u{E007F}\u{E0100}-\u{E01EF}]*\u200C[\xAD\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u061C\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u070F\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CBF\u0CC6\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1ABE\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u200B\u200E\u200F\u202A-\u202E\u2060-\u2064\u206A-\u206F\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFEFF\uFFF9-\uFFFB\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{10D24}-\u{10D27}\u{10F46}-\u{10F50}\u{11001}\u{11038}-\u{11046}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111C9}-\u{111CC}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133B}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{1145E}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{1182F}-\u{11837}\u{11839}\u{1183A}\u{119D4}-\u{119D7}\u{119DA}\u{119DB}\u{119E0}\u{11A01}-\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C3F}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{11D90}\u{11D91}\u{11D95}\u{11D97}\u{11EF3}\u{11EF4}\u{13430}-\u{13438}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F4F}\u{16F8F}-\u{16F92}\u{1BC9D}\u{1BC9E}\u{1BCA0}-\u{1BCA3}\u{1D167}-\u{1D169}\u{1D173}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E130}-\u{1E136}\u{1E2EC}-\u{1E2EF}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94B}\u{E0001}\u{E0020}-\u{E007F}\u{E0100}-\u{E01EF}]*[\u0620\u0622-\u063F\u0641-\u064A\u066E\u066F\u0671-\u0673\u0675-\u06D3\u06D5\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u077F\u07CA-\u07EA\u0840-\u0855\u0860\u0862-\u0865\u0867-\u086A\u08A0-\u08AC\u08AE-\u08B4\u08B6-\u08BD\u1807\u1820-\u1878\u1887-\u18A8\u18AA\uA840-\uA871\u{10AC0}-\u{10AC5}\u{10AC7}\u{10AC9}\u{10ACA}\u{10ACE}-\u{10AD6}\u{10AD8}-\u{10AE1}\u{10AE4}\u{10AEB}-\u{10AEF}\u{10B80}-\u{10B91}\u{10BA9}-\u{10BAE}\u{10D01}-\u{10D23}\u{10F30}-\u{10F44}\u{10F51}-\u{10F54}\u{1E900}-\u{1E943}]/u;
const bidiDomain = /[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05EA\u05EF-\u05F4\u0600-\u0605\u0608\u060B\u060D\u061B\u061C\u061E-\u064A\u0660-\u0669\u066B-\u066F\u0671-\u06D5\u06DD\u06E5\u06E6\u06EE\u06EF\u06FA-\u070D\u070F\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u083E\u0840-\u0858\u085E\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u08E2\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBC1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFC\uFE70-\uFE74\uFE76-\uFEFC\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10857}-\u{1089E}\u{108A7}-\u{108AF}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{108FB}-\u{1091B}\u{10920}-\u{10939}\u{1093F}\u{10980}-\u{109B7}\u{109BC}-\u{109CF}\u{109D2}-\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A40}-\u{10A48}\u{10A50}-\u{10A58}\u{10A60}-\u{10A9F}\u{10AC0}-\u{10AE4}\u{10AEB}-\u{10AF6}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B58}-\u{10B72}\u{10B78}-\u{10B91}\u{10B99}-\u{10B9C}\u{10BA9}-\u{10BAF}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10CFA}-\u{10D23}\u{10D30}-\u{10D39}\u{10E60}-\u{10E7E}\u{10E80}-\u{10EA9}\u{10EAD}\u{10EB0}\u{10EB1}\u{10F00}-\u{10F27}\u{10F30}-\u{10F45}\u{10F51}-\u{10F59}\u{10FB0}-\u{10FCB}\u{10FE0}-\u{10FF6}\u{1E800}-\u{1E8C4}\u{1E8C7}-\u{1E8CF}\u{1E900}-\u{1E943}\u{1E94B}\u{1E950}-\u{1E959}\u{1E95E}\u{1E95F}\u{1EC71}-\u{1ECB4}\u{1ED01}-\u{1ED3D}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}]/u;
const bidiS1LTR = /[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02BB-\u02C1\u02D0\u02D1\u02E0-\u02E4\u02EE\u0370-\u0373\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0482\u048A-\u052F\u0531-\u0556\u0559-\u0589\u0903-\u0939\u093B\u093D-\u0940\u0949-\u094C\u094E-\u0950\u0958-\u0961\u0964-\u0980\u0982\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD-\u09C0\u09C7\u09C8\u09CB\u09CC\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09FA\u09FC\u09FD\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A40\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A76\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD-\u0AC0\u0AC9\u0ACB\u0ACC\u0AD0\u0AE0\u0AE1\u0AE6-\u0AF0\u0AF9\u0B02\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD0\u0BD7\u0BE6-\u0BF2\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C41-\u0C44\u0C58-\u0C5A\u0C60\u0C61\u0C66-\u0C6F\u0C77\u0C7F\u0C80\u0C82-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD-\u0CC4\u0CC6-\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D4E\u0D4F\u0D54-\u0D61\u0D66-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF4\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E4F-\u0E5B\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00-\u0F17\u0F1A-\u0F34\u0F36\u0F38\u0F3E-\u0F47\u0F49-\u0F6C\u0F7F\u0F85\u0F88-\u0F8C\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE-\u0FDA\u1000-\u102C\u1031\u1038\u103B\u103C\u103F-\u1057\u105A-\u105D\u1061-\u1070\u1075-\u1081\u1083\u1084\u1087-\u108C\u108E-\u109C\u109E-\u10C5\u10C7\u10CD\u10D0-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1360-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u167F\u1681-\u169A\u16A0-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1735\u1736\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17B6\u17BE-\u17C5\u17C7\u17C8\u17D4-\u17DA\u17DC\u17E0-\u17E9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A19\u1A1A\u1A1E-\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1A80-\u1A89\u1A90-\u1A99\u1AA0-\u1AAD\u1B04-\u1B33\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B4B\u1B50-\u1B6A\u1B74-\u1B7C\u1B82-\u1BA1\u1BA6\u1BA7\u1BAA\u1BAE-\u1BE5\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1BFC-\u1C2B\u1C34\u1C35\u1C3B-\u1C49\u1C4D-\u1C88\u1C90-\u1CBA\u1CBD-\u1CC7\u1CD3\u1CE1\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5-\u1CF7\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200E\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u214F\u2160-\u2188\u2336-\u237A\u2395\u249C-\u24E9\u26AC\u2800-\u28FF\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D70\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u302E\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3190-\u31BF\u31F0-\u321C\u3220-\u324F\u3260-\u327B\u327F-\u32B0\u32C0-\u32CB\u32D0-\u3376\u337B-\u33DD\u33E0-\u33FE\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA60C\uA610-\uA62B\uA640-\uA66E\uA680-\uA69D\uA6A0-\uA6EF\uA6F2-\uA6F7\uA722-\uA787\uA789-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA824\uA827\uA830-\uA837\uA840-\uA873\uA880-\uA8C3\uA8CE-\uA8D9\uA8F2-\uA8FE\uA900-\uA925\uA92E-\uA946\uA952\uA953\uA95F-\uA97C\uA983-\uA9B2\uA9B4\uA9B5\uA9BA\uA9BB\uA9BE-\uA9CD\uA9CF-\uA9D9\uA9DE-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA2F\uAA30\uAA33\uAA34\uAA40-\uAA42\uAA44-\uAA4B\uAA4D\uAA50-\uAA59\uAA5C-\uAA7B\uAA7D-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAAEB\uAAEE-\uAAF5\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB69\uAB70-\uABE4\uABE6\uABE7\uABE9-\uABEC\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uD800-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10100}\u{10102}\u{10107}-\u{10133}\u{10137}-\u{1013F}\u{1018D}\u{1018E}\u{101D0}-\u{101FC}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{10300}-\u{10323}\u{1032D}-\u{1034A}\u{10350}-\u{10375}\u{10380}-\u{1039D}\u{1039F}-\u{103C3}\u{103C8}-\u{103D5}\u{10400}-\u{1049D}\u{104A0}-\u{104A9}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{1056F}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{11000}\u{11002}-\u{11037}\u{11047}-\u{1104D}\u{11066}-\u{1106F}\u{11082}-\u{110B2}\u{110B7}\u{110B8}\u{110BB}-\u{110C1}\u{110CD}\u{110D0}-\u{110E8}\u{110F0}-\u{110F9}\u{11103}-\u{11126}\u{1112C}\u{11136}-\u{11147}\u{11150}-\u{11172}\u{11174}-\u{11176}\u{11182}-\u{111B5}\u{111BF}-\u{111C8}\u{111CD}\u{111CE}\u{111D0}-\u{111DF}\u{111E1}-\u{111F4}\u{11200}-\u{11211}\u{11213}-\u{1122E}\u{11232}\u{11233}\u{11235}\u{11238}-\u{1123D}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A9}\u{112B0}-\u{112DE}\u{112E0}-\u{112E2}\u{112F0}-\u{112F9}\u{11302}\u{11303}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133D}-\u{1133F}\u{11341}-\u{11344}\u{11347}\u{11348}\u{1134B}-\u{1134D}\u{11350}\u{11357}\u{1135D}-\u{11363}\u{11400}-\u{11437}\u{11440}\u{11441}\u{11445}\u{11447}-\u{1145B}\u{1145D}\u{1145F}-\u{11461}\u{11480}-\u{114B2}\u{114B9}\u{114BB}-\u{114BE}\u{114C1}\u{114C4}-\u{114C7}\u{114D0}-\u{114D9}\u{11580}-\u{115B1}\u{115B8}-\u{115BB}\u{115BE}\u{115C1}-\u{115DB}\u{11600}-\u{11632}\u{1163B}\u{1163C}\u{1163E}\u{11641}-\u{11644}\u{11650}-\u{11659}\u{11680}-\u{116AA}\u{116AC}\u{116AE}\u{116AF}\u{116B6}\u{116B8}\u{116C0}-\u{116C9}\u{11700}-\u{1171A}\u{11720}\u{11721}\u{11726}\u{11730}-\u{1173F}\u{11800}-\u{1182E}\u{11838}\u{1183B}\u{118A0}-\u{118F2}\u{118FF}-\u{11906}\u{11909}\u{1190C}-\u{11913}\u{11915}\u{11916}\u{11918}-\u{11935}\u{11937}\u{11938}\u{1193D}\u{1193F}-\u{11942}\u{11944}-\u{11946}\u{11950}-\u{11959}\u{119A0}-\u{119A7}\u{119AA}-\u{119D3}\u{119DC}-\u{119DF}\u{119E1}-\u{119E4}\u{11A00}\u{11A07}\u{11A08}\u{11A0B}-\u{11A32}\u{11A39}\u{11A3A}\u{11A3F}-\u{11A46}\u{11A50}\u{11A57}\u{11A58}\u{11A5C}-\u{11A89}\u{11A97}\u{11A9A}-\u{11AA2}\u{11AC0}-\u{11AF8}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C2F}\u{11C3E}-\u{11C45}\u{11C50}-\u{11C6C}\u{11C70}-\u{11C8F}\u{11CA9}\u{11CB1}\u{11CB4}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D30}\u{11D46}\u{11D50}-\u{11D59}\u{11D60}-\u{11D65}\u{11D67}\u{11D68}\u{11D6A}-\u{11D8E}\u{11D93}\u{11D94}\u{11D96}\u{11D98}\u{11DA0}-\u{11DA9}\u{11EE0}-\u{11EF2}\u{11EF5}-\u{11EF8}\u{11FB0}\u{11FC0}-\u{11FD4}\u{11FFF}-\u{12399}\u{12400}-\u{1246E}\u{12470}-\u{12474}\u{12480}-\u{12543}\u{13000}-\u{1342E}\u{13430}-\u{13438}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16A60}-\u{16A69}\u{16A6E}\u{16A6F}\u{16AD0}-\u{16AED}\u{16AF5}\u{16B00}-\u{16B2F}\u{16B37}-\u{16B45}\u{16B50}-\u{16B59}\u{16B5B}-\u{16B61}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16E40}-\u{16E9A}\u{16F00}-\u{16F4A}\u{16F50}-\u{16F87}\u{16F93}-\u{16F9F}\u{16FE0}\u{16FE1}\u{16FE3}\u{16FF0}\u{16FF1}\u{17000}-\u{187F7}\u{18800}-\u{18CD5}\u{18D00}-\u{18D08}\u{1B000}-\u{1B11E}\u{1B150}-\u{1B152}\u{1B164}-\u{1B167}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1BC9C}\u{1BC9F}\u{1D000}-\u{1D0F5}\u{1D100}-\u{1D126}\u{1D129}-\u{1D166}\u{1D16A}-\u{1D172}\u{1D183}\u{1D184}\u{1D18C}-\u{1D1A9}\u{1D1AE}-\u{1D1E8}\u{1D2E0}-\u{1D2F3}\u{1D360}-\u{1D378}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D6DA}\u{1D6DC}-\u{1D714}\u{1D716}-\u{1D74E}\u{1D750}-\u{1D788}\u{1D78A}-\u{1D7C2}\u{1D7C4}-\u{1D7CB}\u{1D800}-\u{1D9FF}\u{1DA37}-\u{1DA3A}\u{1DA6D}-\u{1DA74}\u{1DA76}-\u{1DA83}\u{1DA85}-\u{1DA8B}\u{1E100}-\u{1E12C}\u{1E137}-\u{1E13D}\u{1E140}-\u{1E149}\u{1E14E}\u{1E14F}\u{1E2C0}-\u{1E2EB}\u{1E2F0}-\u{1E2F9}\u{1F110}-\u{1F12E}\u{1F130}-\u{1F169}\u{1F170}-\u{1F1AC}\u{1F1E6}-\u{1F202}\u{1F210}-\u{1F23B}\u{1F240}-\u{1F248}\u{1F250}\u{1F251}\u{20000}-\u{2A6DD}\u{2A700}-\u{2B734}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2F800}-\u{2FA1D}\u{30000}-\u{3134A}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]/u;
const bidiS1RTL = /[\u05BE\u05C0\u05C3\u05C6\u05D0-\u05EA\u05EF-\u05F4\u0608\u060B\u060D\u061B\u061C\u061E-\u064A\u066D-\u066F\u0671-\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u070D\u070F\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u083E\u0840-\u0858\u085E\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u200F\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBC1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFC\uFE70-\uFE74\uFE76-\uFEFC\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10857}-\u{1089E}\u{108A7}-\u{108AF}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{108FB}-\u{1091B}\u{10920}-\u{10939}\u{1093F}\u{10980}-\u{109B7}\u{109BC}-\u{109CF}\u{109D2}-\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A40}-\u{10A48}\u{10A50}-\u{10A58}\u{10A60}-\u{10A9F}\u{10AC0}-\u{10AE4}\u{10AEB}-\u{10AF6}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B58}-\u{10B72}\u{10B78}-\u{10B91}\u{10B99}-\u{10B9C}\u{10BA9}-\u{10BAF}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10CFA}-\u{10D23}\u{10E80}-\u{10EA9}\u{10EAD}\u{10EB0}\u{10EB1}\u{10F00}-\u{10F27}\u{10F30}-\u{10F45}\u{10F51}-\u{10F59}\u{10FB0}-\u{10FCB}\u{10FE0}-\u{10FF6}\u{1E800}-\u{1E8C4}\u{1E8C7}-\u{1E8CF}\u{1E900}-\u{1E943}\u{1E94B}\u{1E950}-\u{1E959}\u{1E95E}\u{1E95F}\u{1EC71}-\u{1ECB4}\u{1ED01}-\u{1ED3D}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}]/u;
const bidiS2 = /^[\0-\x08\x0E-\x1B!-@\[-`\{-\x84\x86-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02B9\u02BA\u02C2-\u02CF\u02D2-\u02DF\u02E5-\u02ED\u02EF-\u036F\u0374\u0375\u037E\u0384\u0385\u0387\u03F6\u0483-\u0489\u058A\u058D-\u058F\u0591-\u05C7\u05D0-\u05EA\u05EF-\u05F4\u0600-\u061C\u061E-\u070D\u070F-\u074A\u074D-\u07B1\u07C0-\u07FA\u07FD-\u082D\u0830-\u083E\u0840-\u085B\u085E\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u08D3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09F2\u09F3\u09FB\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AF1\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B55\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0BF3-\u0BFA\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C78-\u0C7E\u0C81\u0CBC\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0D81\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E3F\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39-\u0F3D\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1390-\u1399\u1400\u169B\u169C\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DB\u17DD\u17F0-\u17F9\u1800-\u180E\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1940\u1944\u1945\u19DE-\u19FF\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1AC0\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u1FBD\u1FBF-\u1FC1\u1FCD-\u1FCF\u1FDD-\u1FDF\u1FED-\u1FEF\u1FFD\u1FFE\u200B-\u200D\u200F-\u2027\u202F-\u205E\u2060-\u2064\u206A-\u2070\u2074-\u207E\u2080-\u208E\u20A0-\u20BF\u20D0-\u20F0\u2100\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u2150-\u215F\u2189-\u218B\u2190-\u2335\u237B-\u2394\u2396-\u2426\u2440-\u244A\u2460-\u249B\u24EA-\u26AB\u26AD-\u27FF\u2900-\u2B73\u2B76-\u2B95\u2B97-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF9-\u2CFF\u2D7F\u2DE0-\u2E52\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u3004\u3008-\u3020\u302A-\u302D\u3030\u3036\u3037\u303D-\u303F\u3099-\u309C\u30A0\u30FB\u31C0-\u31E3\u321D\u321E\u3250-\u325F\u327C-\u327E\u32B1-\u32BF\u32CC-\u32CF\u3377-\u337A\u33DE\u33DF\u33FF\u4DC0-\u4DFF\uA490-\uA4C6\uA60D-\uA60F\uA66F-\uA67F\uA69E\uA69F\uA6F0\uA6F1\uA700-\uA721\uA788\uA802\uA806\uA80B\uA825\uA826\uA828-\uA82C\uA838\uA839\uA874-\uA877\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uAB6A\uAB6B\uABE5\uABE8\uABED\uFB1D-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBC1\uFBD3-\uFD3F\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFD\uFE00-\uFE19\uFE20-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFE70-\uFE74\uFE76-\uFEFC\uFEFF\uFF01-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFF9-\uFFFD\u{10101}\u{10140}-\u{1018C}\u{10190}-\u{1019C}\u{101A0}\u{101FD}\u{102E0}-\u{102FB}\u{10376}-\u{1037A}\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10857}-\u{1089E}\u{108A7}-\u{108AF}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{108FB}-\u{1091B}\u{1091F}-\u{10939}\u{1093F}\u{10980}-\u{109B7}\u{109BC}-\u{109CF}\u{109D2}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A38}-\u{10A3A}\u{10A3F}-\u{10A48}\u{10A50}-\u{10A58}\u{10A60}-\u{10A9F}\u{10AC0}-\u{10AE6}\u{10AEB}-\u{10AF6}\u{10B00}-\u{10B35}\u{10B39}-\u{10B55}\u{10B58}-\u{10B72}\u{10B78}-\u{10B91}\u{10B99}-\u{10B9C}\u{10BA9}-\u{10BAF}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10CFA}-\u{10D27}\u{10D30}-\u{10D39}\u{10E60}-\u{10E7E}\u{10E80}-\u{10EA9}\u{10EAB}-\u{10EAD}\u{10EB0}\u{10EB1}\u{10F00}-\u{10F27}\u{10F30}-\u{10F59}\u{10FB0}-\u{10FCB}\u{10FE0}-\u{10FF6}\u{11001}\u{11038}-\u{11046}\u{11052}-\u{11065}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111C9}-\u{111CC}\u{111CF}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133B}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{1145E}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{11660}-\u{1166C}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{1182F}-\u{11837}\u{11839}\u{1183A}\u{1193B}\u{1193C}\u{1193E}\u{11943}\u{119D4}-\u{119D7}\u{119DA}\u{119DB}\u{119E0}\u{11A01}-\u{11A06}\u{11A09}\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{11D90}\u{11D91}\u{11D95}\u{11D97}\u{11EF3}\u{11EF4}\u{11FD5}-\u{11FF1}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F4F}\u{16F8F}-\u{16F92}\u{16FE2}\u{16FE4}\u{1BC9D}\u{1BC9E}\u{1BCA0}-\u{1BCA3}\u{1D167}-\u{1D169}\u{1D173}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D200}-\u{1D245}\u{1D300}-\u{1D356}\u{1D6DB}\u{1D715}\u{1D74F}\u{1D789}\u{1D7C3}\u{1D7CE}-\u{1D7FF}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E130}-\u{1E136}\u{1E2EC}-\u{1E2EF}\u{1E2FF}\u{1E800}-\u{1E8C4}\u{1E8C7}-\u{1E8D6}\u{1E900}-\u{1E94B}\u{1E950}-\u{1E959}\u{1E95E}\u{1E95F}\u{1EC71}-\u{1ECB4}\u{1ED01}-\u{1ED3D}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}\u{1EEF0}\u{1EEF1}\u{1F000}-\u{1F02B}\u{1F030}-\u{1F093}\u{1F0A0}-\u{1F0AE}\u{1F0B1}-\u{1F0BF}\u{1F0C1}-\u{1F0CF}\u{1F0D1}-\u{1F0F5}\u{1F100}-\u{1F10F}\u{1F12F}\u{1F16A}-\u{1F16F}\u{1F1AD}\u{1F260}-\u{1F265}\u{1F300}-\u{1F6D7}\u{1F6E0}-\u{1F6EC}\u{1F6F0}-\u{1F6FC}\u{1F700}-\u{1F773}\u{1F780}-\u{1F7D8}\u{1F7E0}-\u{1F7EB}\u{1F800}-\u{1F80B}\u{1F810}-\u{1F847}\u{1F850}-\u{1F859}\u{1F860}-\u{1F887}\u{1F890}-\u{1F8AD}\u{1F8B0}\u{1F8B1}\u{1F900}-\u{1F978}\u{1F97A}-\u{1F9CB}\u{1F9CD}-\u{1FA53}\u{1FA60}-\u{1FA6D}\u{1FA70}-\u{1FA74}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA86}\u{1FA90}-\u{1FAA8}\u{1FAB0}-\u{1FAB6}\u{1FAC0}-\u{1FAC2}\u{1FAD0}-\u{1FAD6}\u{1FB00}-\u{1FB92}\u{1FB94}-\u{1FBCA}\u{1FBF0}-\u{1FBF9}\u{E0001}\u{E0020}-\u{E007F}\u{E0100}-\u{E01EF}]*$/u;
const bidiS3 = /[0-9\xB2\xB3\xB9\u05BE\u05C0\u05C3\u05C6\u05D0-\u05EA\u05EF-\u05F4\u0600-\u0605\u0608\u060B\u060D\u061B\u061C\u061E-\u064A\u0660-\u0669\u066B-\u066F\u0671-\u06D5\u06DD\u06E5\u06E6\u06EE-\u070D\u070F\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u07FE-\u0815\u081A\u0824\u0828\u0830-\u083E\u0840-\u0858\u085E\u0860-\u086A\u08A0-\u08B4\u08B6-\u08C7\u08E2\u200F\u2070\u2074-\u2079\u2080-\u2089\u2488-\u249B\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBC1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFC\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\u{102E1}-\u{102FB}\u{10800}-\u{10805}\u{10808}\u{1080A}-\u{10835}\u{10837}\u{10838}\u{1083C}\u{1083F}-\u{10855}\u{10857}-\u{1089E}\u{108A7}-\u{108AF}\u{108E0}-\u{108F2}\u{108F4}\u{108F5}\u{108FB}-\u{1091B}\u{10920}-\u{10939}\u{1093F}\u{10980}-\u{109B7}\u{109BC}-\u{109CF}\u{109D2}-\u{10A00}\u{10A10}-\u{10A13}\u{10A15}-\u{10A17}\u{10A19}-\u{10A35}\u{10A40}-\u{10A48}\u{10A50}-\u{10A58}\u{10A60}-\u{10A9F}\u{10AC0}-\u{10AE4}\u{10AEB}-\u{10AF6}\u{10B00}-\u{10B35}\u{10B40}-\u{10B55}\u{10B58}-\u{10B72}\u{10B78}-\u{10B91}\u{10B99}-\u{10B9C}\u{10BA9}-\u{10BAF}\u{10C00}-\u{10C48}\u{10C80}-\u{10CB2}\u{10CC0}-\u{10CF2}\u{10CFA}-\u{10D23}\u{10D30}-\u{10D39}\u{10E60}-\u{10E7E}\u{10E80}-\u{10EA9}\u{10EAD}\u{10EB0}\u{10EB1}\u{10F00}-\u{10F27}\u{10F30}-\u{10F45}\u{10F51}-\u{10F59}\u{10FB0}-\u{10FCB}\u{10FE0}-\u{10FF6}\u{1D7CE}-\u{1D7FF}\u{1E800}-\u{1E8C4}\u{1E8C7}-\u{1E8CF}\u{1E900}-\u{1E943}\u{1E94B}\u{1E950}-\u{1E959}\u{1E95E}\u{1E95F}\u{1EC71}-\u{1ECB4}\u{1ED01}-\u{1ED3D}\u{1EE00}-\u{1EE03}\u{1EE05}-\u{1EE1F}\u{1EE21}\u{1EE22}\u{1EE24}\u{1EE27}\u{1EE29}-\u{1EE32}\u{1EE34}-\u{1EE37}\u{1EE39}\u{1EE3B}\u{1EE42}\u{1EE47}\u{1EE49}\u{1EE4B}\u{1EE4D}-\u{1EE4F}\u{1EE51}\u{1EE52}\u{1EE54}\u{1EE57}\u{1EE59}\u{1EE5B}\u{1EE5D}\u{1EE5F}\u{1EE61}\u{1EE62}\u{1EE64}\u{1EE67}-\u{1EE6A}\u{1EE6C}-\u{1EE72}\u{1EE74}-\u{1EE77}\u{1EE79}-\u{1EE7C}\u{1EE7E}\u{1EE80}-\u{1EE89}\u{1EE8B}-\u{1EE9B}\u{1EEA1}-\u{1EEA3}\u{1EEA5}-\u{1EEA9}\u{1EEAB}-\u{1EEBB}\u{1F100}-\u{1F10A}\u{1FBF0}-\u{1FBF9}][\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B55\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0D81\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1AC0\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA82C\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{10D24}-\u{10D27}\u{10EAB}\u{10EAC}\u{10F46}-\u{10F50}\u{11001}\u{11038}-\u{11046}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111C9}-\u{111CC}\u{111CF}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133B}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{1145E}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{1182F}-\u{11837}\u{11839}\u{1183A}\u{1193B}\u{1193C}\u{1193E}\u{11943}\u{119D4}-\u{119D7}\u{119DA}\u{119DB}\u{119E0}\u{11A01}-\u{11A06}\u{11A09}\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{11D90}\u{11D91}\u{11D95}\u{11D97}\u{11EF3}\u{11EF4}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F4F}\u{16F8F}-\u{16F92}\u{16FE4}\u{1BC9D}\u{1BC9E}\u{1D167}-\u{1D169}\u{1D17B}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E130}-\u{1E136}\u{1E2EC}-\u{1E2EF}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{E0100}-\u{E01EF}]*$/u;
const bidiS4EN = /[0-9\xB2\xB3\xB9\u06F0-\u06F9\u2070\u2074-\u2079\u2080-\u2089\u2488-\u249B\uFF10-\uFF19\u{102E1}-\u{102FB}\u{1D7CE}-\u{1D7FF}\u{1F100}-\u{1F10A}\u{1FBF0}-\u{1FBF9}]/u;
const bidiS4AN = /[\u0600-\u0605\u0660-\u0669\u066B\u066C\u06DD\u08E2\u{10D30}-\u{10D39}\u{10E60}-\u{10E7E}]/u;
const bidiS5 = /^[\0-\x08\x0E-\x1B!-\x84\x86-\u0377\u037A-\u037F\u0384-\u038A\u038C\u038E-\u03A1\u03A3-\u052F\u0531-\u0556\u0559-\u058A\u058D-\u058F\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0606\u0607\u0609\u060A\u060C\u060E-\u061A\u064B-\u065F\u066A\u0670\u06D6-\u06DC\u06DE-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07F6-\u07F9\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09FE\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A76\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AF1\u0AF9-\u0AFF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B77\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BFA\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C77-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D00-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4F\u0D54-\u0D63\u0D66-\u0D7F\u0D81-\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF4\u0E01-\u0E3A\u0E3F-\u0E5B\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00-\u0F47\u0F49-\u0F6C\u0F71-\u0F97\u0F99-\u0FBC\u0FBE-\u0FCC\u0FCE-\u0FDA\u1000-\u10C5\u10C7\u10CD\u10D0-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u137C\u1380-\u1399\u13A0-\u13F5\u13F8-\u13FD\u1400-\u167F\u1681-\u169C\u16A0-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1736\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17DD\u17E0-\u17E9\u17F0-\u17F9\u1800-\u180E\u1810-\u1819\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1940\u1944-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u19DE-\u1A1B\u1A1E-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA0-\u1AAD\u1AB0-\u1AC0\u1B00-\u1B4B\u1B50-\u1B7C\u1B80-\u1BF3\u1BFC-\u1C37\u1C3B-\u1C49\u1C4D-\u1C88\u1C90-\u1CBA\u1CBD-\u1CC7\u1CD0-\u1CFA\u1D00-\u1DF9\u1DFB-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FC4\u1FC6-\u1FD3\u1FD6-\u1FDB\u1FDD-\u1FEF\u1FF2-\u1FF4\u1FF6-\u1FFE\u200B-\u200E\u2010-\u2027\u202F-\u205E\u2060-\u2064\u206A-\u2071\u2074-\u208E\u2090-\u209C\u20A0-\u20BF\u20D0-\u20F0\u2100-\u218B\u2190-\u2426\u2440-\u244A\u2460-\u2B73\u2B76-\u2B95\u2B97-\u2C2E\u2C30-\u2C5E\u2C60-\u2CF3\u2CF9-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D70\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2E52\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303F\u3041-\u3096\u3099-\u30FF\u3105-\u312F\u3131-\u318E\u3190-\u31E3\u31F0-\u321E\u3220-\u9FFC\uA000-\uA48C\uA490-\uA4C6\uA4D0-\uA62B\uA640-\uA6F7\uA700-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA82C\uA830-\uA839\uA840-\uA877\uA880-\uA8C5\uA8CE-\uA8D9\uA8E0-\uA953\uA95F-\uA97C\uA980-\uA9CD\uA9CF-\uA9D9\uA9DE-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA5C-\uAAC2\uAADB-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB6B\uAB70-\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uD800-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1E\uFB29\uFD3E\uFD3F\uFDFD\uFE00-\uFE19\uFE20-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFEFF\uFF01-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFF9-\uFFFD\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10100}-\u{10102}\u{10107}-\u{10133}\u{10137}-\u{1018E}\u{10190}-\u{1019C}\u{101A0}\u{101D0}-\u{101FD}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{102E0}-\u{102FB}\u{10300}-\u{10323}\u{1032D}-\u{1034A}\u{10350}-\u{1037A}\u{10380}-\u{1039D}\u{1039F}-\u{103C3}\u{103C8}-\u{103D5}\u{10400}-\u{1049D}\u{104A0}-\u{104A9}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{1056F}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{1091F}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{10B39}-\u{10B3F}\u{10D24}-\u{10D27}\u{10EAB}\u{10EAC}\u{10F46}-\u{10F50}\u{11000}-\u{1104D}\u{11052}-\u{1106F}\u{1107F}-\u{110C1}\u{110CD}\u{110D0}-\u{110E8}\u{110F0}-\u{110F9}\u{11100}-\u{11134}\u{11136}-\u{11147}\u{11150}-\u{11176}\u{11180}-\u{111DF}\u{111E1}-\u{111F4}\u{11200}-\u{11211}\u{11213}-\u{1123E}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A9}\u{112B0}-\u{112EA}\u{112F0}-\u{112F9}\u{11300}-\u{11303}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133B}-\u{11344}\u{11347}\u{11348}\u{1134B}-\u{1134D}\u{11350}\u{11357}\u{1135D}-\u{11363}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11400}-\u{1145B}\u{1145D}-\u{11461}\u{11480}-\u{114C7}\u{114D0}-\u{114D9}\u{11580}-\u{115B5}\u{115B8}-\u{115DD}\u{11600}-\u{11644}\u{11650}-\u{11659}\u{11660}-\u{1166C}\u{11680}-\u{116B8}\u{116C0}-\u{116C9}\u{11700}-\u{1171A}\u{1171D}-\u{1172B}\u{11730}-\u{1173F}\u{11800}-\u{1183B}\u{118A0}-\u{118F2}\u{118FF}-\u{11906}\u{11909}\u{1190C}-\u{11913}\u{11915}\u{11916}\u{11918}-\u{11935}\u{11937}\u{11938}\u{1193B}-\u{11946}\u{11950}-\u{11959}\u{119A0}-\u{119A7}\u{119AA}-\u{119D7}\u{119DA}-\u{119E4}\u{11A00}-\u{11A47}\u{11A50}-\u{11AA2}\u{11AC0}-\u{11AF8}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C36}\u{11C38}-\u{11C45}\u{11C50}-\u{11C6C}\u{11C70}-\u{11C8F}\u{11C92}-\u{11CA7}\u{11CA9}-\u{11CB6}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D47}\u{11D50}-\u{11D59}\u{11D60}-\u{11D65}\u{11D67}\u{11D68}\u{11D6A}-\u{11D8E}\u{11D90}\u{11D91}\u{11D93}-\u{11D98}\u{11DA0}-\u{11DA9}\u{11EE0}-\u{11EF8}\u{11FB0}\u{11FC0}-\u{11FF1}\u{11FFF}-\u{12399}\u{12400}-\u{1246E}\u{12470}-\u{12474}\u{12480}-\u{12543}\u{13000}-\u{1342E}\u{13430}-\u{13438}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16A60}-\u{16A69}\u{16A6E}\u{16A6F}\u{16AD0}-\u{16AED}\u{16AF0}-\u{16AF5}\u{16B00}-\u{16B45}\u{16B50}-\u{16B59}\u{16B5B}-\u{16B61}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16E40}-\u{16E9A}\u{16F00}-\u{16F4A}\u{16F4F}-\u{16F87}\u{16F8F}-\u{16F9F}\u{16FE0}-\u{16FE4}\u{16FF0}\u{16FF1}\u{17000}-\u{187F7}\u{18800}-\u{18CD5}\u{18D00}-\u{18D08}\u{1B000}-\u{1B11E}\u{1B150}-\u{1B152}\u{1B164}-\u{1B167}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1BC9C}-\u{1BCA3}\u{1D000}-\u{1D0F5}\u{1D100}-\u{1D126}\u{1D129}-\u{1D1E8}\u{1D200}-\u{1D245}\u{1D2E0}-\u{1D2F3}\u{1D300}-\u{1D356}\u{1D360}-\u{1D378}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D7CB}\u{1D7CE}-\u{1DA8B}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E100}-\u{1E12C}\u{1E130}-\u{1E13D}\u{1E140}-\u{1E149}\u{1E14E}\u{1E14F}\u{1E2C0}-\u{1E2F9}\u{1E2FF}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{1EEF0}\u{1EEF1}\u{1F000}-\u{1F02B}\u{1F030}-\u{1F093}\u{1F0A0}-\u{1F0AE}\u{1F0B1}-\u{1F0BF}\u{1F0C1}-\u{1F0CF}\u{1F0D1}-\u{1F0F5}\u{1F100}-\u{1F1AD}\u{1F1E6}-\u{1F202}\u{1F210}-\u{1F23B}\u{1F240}-\u{1F248}\u{1F250}\u{1F251}\u{1F260}-\u{1F265}\u{1F300}-\u{1F6D7}\u{1F6E0}-\u{1F6EC}\u{1F6F0}-\u{1F6FC}\u{1F700}-\u{1F773}\u{1F780}-\u{1F7D8}\u{1F7E0}-\u{1F7EB}\u{1F800}-\u{1F80B}\u{1F810}-\u{1F847}\u{1F850}-\u{1F859}\u{1F860}-\u{1F887}\u{1F890}-\u{1F8AD}\u{1F8B0}\u{1F8B1}\u{1F900}-\u{1F978}\u{1F97A}-\u{1F9CB}\u{1F9CD}-\u{1FA53}\u{1FA60}-\u{1FA6D}\u{1FA70}-\u{1FA74}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA86}\u{1FA90}-\u{1FAA8}\u{1FAB0}-\u{1FAB6}\u{1FAC0}-\u{1FAC2}\u{1FAD0}-\u{1FAD6}\u{1FB00}-\u{1FB92}\u{1FB94}-\u{1FBCA}\u{1FBF0}-\u{1FBF9}\u{20000}-\u{2A6DD}\u{2A700}-\u{2B734}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2F800}-\u{2FA1D}\u{30000}-\u{3134A}\u{E0001}\u{E0020}-\u{E007F}\u{E0100}-\u{E01EF}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}]*$/u;
const bidiS6 = /[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02BB-\u02C1\u02D0\u02D1\u02E0-\u02E4\u02EE\u0370-\u0373\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0482\u048A-\u052F\u0531-\u0556\u0559-\u0589\u06F0-\u06F9\u0903-\u0939\u093B\u093D-\u0940\u0949-\u094C\u094E-\u0950\u0958-\u0961\u0964-\u0980\u0982\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD-\u09C0\u09C7\u09C8\u09CB\u09CC\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09FA\u09FC\u09FD\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A40\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A76\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD-\u0AC0\u0AC9\u0ACB\u0ACC\u0AD0\u0AE0\u0AE1\u0AE6-\u0AF0\u0AF9\u0B02\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B3E\u0B40\u0B47\u0B48\u0B4B\u0B4C\u0B57\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE\u0BBF\u0BC1\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD0\u0BD7\u0BE6-\u0BF2\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C41-\u0C44\u0C58-\u0C5A\u0C60\u0C61\u0C66-\u0C6F\u0C77\u0C7F\u0C80\u0C82-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD-\u0CC4\u0CC6-\u0CC8\u0CCA\u0CCB\u0CD5\u0CD6\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D02-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D40\u0D46-\u0D48\u0D4A-\u0D4C\u0D4E\u0D4F\u0D54-\u0D61\u0D66-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCF-\u0DD1\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2-\u0DF4\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E4F-\u0E5B\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00-\u0F17\u0F1A-\u0F34\u0F36\u0F38\u0F3E-\u0F47\u0F49-\u0F6C\u0F7F\u0F85\u0F88-\u0F8C\u0FBE-\u0FC5\u0FC7-\u0FCC\u0FCE-\u0FDA\u1000-\u102C\u1031\u1038\u103B\u103C\u103F-\u1057\u105A-\u105D\u1061-\u1070\u1075-\u1081\u1083\u1084\u1087-\u108C\u108E-\u109C\u109E-\u10C5\u10C7\u10CD\u10D0-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1360-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u167F\u1681-\u169A\u16A0-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1735\u1736\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17B6\u17BE-\u17C5\u17C7\u17C8\u17D4-\u17DA\u17DC\u17E0-\u17E9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1923-\u1926\u1929-\u192B\u1930\u1931\u1933-\u1938\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A19\u1A1A\u1A1E-\u1A55\u1A57\u1A61\u1A63\u1A64\u1A6D-\u1A72\u1A80-\u1A89\u1A90-\u1A99\u1AA0-\u1AAD\u1B04-\u1B33\u1B35\u1B3B\u1B3D-\u1B41\u1B43-\u1B4B\u1B50-\u1B6A\u1B74-\u1B7C\u1B82-\u1BA1\u1BA6\u1BA7\u1BAA\u1BAE-\u1BE5\u1BE7\u1BEA-\u1BEC\u1BEE\u1BF2\u1BF3\u1BFC-\u1C2B\u1C34\u1C35\u1C3B-\u1C49\u1C4D-\u1C88\u1C90-\u1CBA\u1CBD-\u1CC7\u1CD3\u1CE1\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5-\u1CF7\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200E\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u214F\u2160-\u2188\u2336-\u237A\u2395\u2488-\u24E9\u26AC\u2800-\u28FF\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D70\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u302E\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3190-\u31BF\u31F0-\u321C\u3220-\u324F\u3260-\u327B\u327F-\u32B0\u32C0-\u32CB\u32D0-\u3376\u337B-\u33DD\u33E0-\u33FE\u3400-\u4DBF\u4E00-\u9FFC\uA000-\uA48C\uA4D0-\uA60C\uA610-\uA62B\uA640-\uA66E\uA680-\uA69D\uA6A0-\uA6EF\uA6F2-\uA6F7\uA722-\uA787\uA789-\uA7BF\uA7C2-\uA7CA\uA7F5-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA824\uA827\uA830-\uA837\uA840-\uA873\uA880-\uA8C3\uA8CE-\uA8D9\uA8F2-\uA8FE\uA900-\uA925\uA92E-\uA946\uA952\uA953\uA95F-\uA97C\uA983-\uA9B2\uA9B4\uA9B5\uA9BA\uA9BB\uA9BE-\uA9CD\uA9CF-\uA9D9\uA9DE-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA2F\uAA30\uAA33\uAA34\uAA40-\uAA42\uAA44-\uAA4B\uAA4D\uAA50-\uAA59\uAA5C-\uAA7B\uAA7D-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAAEB\uAAEE-\uAAF5\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB69\uAB70-\uABE4\uABE6\uABE7\uABE9-\uABEC\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uD800-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\u{10000}-\u{1000B}\u{1000D}-\u{10026}\u{10028}-\u{1003A}\u{1003C}\u{1003D}\u{1003F}-\u{1004D}\u{10050}-\u{1005D}\u{10080}-\u{100FA}\u{10100}\u{10102}\u{10107}-\u{10133}\u{10137}-\u{1013F}\u{1018D}\u{1018E}\u{101D0}-\u{101FC}\u{10280}-\u{1029C}\u{102A0}-\u{102D0}\u{102E1}-\u{102FB}\u{10300}-\u{10323}\u{1032D}-\u{1034A}\u{10350}-\u{10375}\u{10380}-\u{1039D}\u{1039F}-\u{103C3}\u{103C8}-\u{103D5}\u{10400}-\u{1049D}\u{104A0}-\u{104A9}\u{104B0}-\u{104D3}\u{104D8}-\u{104FB}\u{10500}-\u{10527}\u{10530}-\u{10563}\u{1056F}\u{10600}-\u{10736}\u{10740}-\u{10755}\u{10760}-\u{10767}\u{11000}\u{11002}-\u{11037}\u{11047}-\u{1104D}\u{11066}-\u{1106F}\u{11082}-\u{110B2}\u{110B7}\u{110B8}\u{110BB}-\u{110C1}\u{110CD}\u{110D0}-\u{110E8}\u{110F0}-\u{110F9}\u{11103}-\u{11126}\u{1112C}\u{11136}-\u{11147}\u{11150}-\u{11172}\u{11174}-\u{11176}\u{11182}-\u{111B5}\u{111BF}-\u{111C8}\u{111CD}\u{111CE}\u{111D0}-\u{111DF}\u{111E1}-\u{111F4}\u{11200}-\u{11211}\u{11213}-\u{1122E}\u{11232}\u{11233}\u{11235}\u{11238}-\u{1123D}\u{11280}-\u{11286}\u{11288}\u{1128A}-\u{1128D}\u{1128F}-\u{1129D}\u{1129F}-\u{112A9}\u{112B0}-\u{112DE}\u{112E0}-\u{112E2}\u{112F0}-\u{112F9}\u{11302}\u{11303}\u{11305}-\u{1130C}\u{1130F}\u{11310}\u{11313}-\u{11328}\u{1132A}-\u{11330}\u{11332}\u{11333}\u{11335}-\u{11339}\u{1133D}-\u{1133F}\u{11341}-\u{11344}\u{11347}\u{11348}\u{1134B}-\u{1134D}\u{11350}\u{11357}\u{1135D}-\u{11363}\u{11400}-\u{11437}\u{11440}\u{11441}\u{11445}\u{11447}-\u{1145B}\u{1145D}\u{1145F}-\u{11461}\u{11480}-\u{114B2}\u{114B9}\u{114BB}-\u{114BE}\u{114C1}\u{114C4}-\u{114C7}\u{114D0}-\u{114D9}\u{11580}-\u{115B1}\u{115B8}-\u{115BB}\u{115BE}\u{115C1}-\u{115DB}\u{11600}-\u{11632}\u{1163B}\u{1163C}\u{1163E}\u{11641}-\u{11644}\u{11650}-\u{11659}\u{11680}-\u{116AA}\u{116AC}\u{116AE}\u{116AF}\u{116B6}\u{116B8}\u{116C0}-\u{116C9}\u{11700}-\u{1171A}\u{11720}\u{11721}\u{11726}\u{11730}-\u{1173F}\u{11800}-\u{1182E}\u{11838}\u{1183B}\u{118A0}-\u{118F2}\u{118FF}-\u{11906}\u{11909}\u{1190C}-\u{11913}\u{11915}\u{11916}\u{11918}-\u{11935}\u{11937}\u{11938}\u{1193D}\u{1193F}-\u{11942}\u{11944}-\u{11946}\u{11950}-\u{11959}\u{119A0}-\u{119A7}\u{119AA}-\u{119D3}\u{119DC}-\u{119DF}\u{119E1}-\u{119E4}\u{11A00}\u{11A07}\u{11A08}\u{11A0B}-\u{11A32}\u{11A39}\u{11A3A}\u{11A3F}-\u{11A46}\u{11A50}\u{11A57}\u{11A58}\u{11A5C}-\u{11A89}\u{11A97}\u{11A9A}-\u{11AA2}\u{11AC0}-\u{11AF8}\u{11C00}-\u{11C08}\u{11C0A}-\u{11C2F}\u{11C3E}-\u{11C45}\u{11C50}-\u{11C6C}\u{11C70}-\u{11C8F}\u{11CA9}\u{11CB1}\u{11CB4}\u{11D00}-\u{11D06}\u{11D08}\u{11D09}\u{11D0B}-\u{11D30}\u{11D46}\u{11D50}-\u{11D59}\u{11D60}-\u{11D65}\u{11D67}\u{11D68}\u{11D6A}-\u{11D8E}\u{11D93}\u{11D94}\u{11D96}\u{11D98}\u{11DA0}-\u{11DA9}\u{11EE0}-\u{11EF2}\u{11EF5}-\u{11EF8}\u{11FB0}\u{11FC0}-\u{11FD4}\u{11FFF}-\u{12399}\u{12400}-\u{1246E}\u{12470}-\u{12474}\u{12480}-\u{12543}\u{13000}-\u{1342E}\u{13430}-\u{13438}\u{14400}-\u{14646}\u{16800}-\u{16A38}\u{16A40}-\u{16A5E}\u{16A60}-\u{16A69}\u{16A6E}\u{16A6F}\u{16AD0}-\u{16AED}\u{16AF5}\u{16B00}-\u{16B2F}\u{16B37}-\u{16B45}\u{16B50}-\u{16B59}\u{16B5B}-\u{16B61}\u{16B63}-\u{16B77}\u{16B7D}-\u{16B8F}\u{16E40}-\u{16E9A}\u{16F00}-\u{16F4A}\u{16F50}-\u{16F87}\u{16F93}-\u{16F9F}\u{16FE0}\u{16FE1}\u{16FE3}\u{16FF0}\u{16FF1}\u{17000}-\u{187F7}\u{18800}-\u{18CD5}\u{18D00}-\u{18D08}\u{1B000}-\u{1B11E}\u{1B150}-\u{1B152}\u{1B164}-\u{1B167}\u{1B170}-\u{1B2FB}\u{1BC00}-\u{1BC6A}\u{1BC70}-\u{1BC7C}\u{1BC80}-\u{1BC88}\u{1BC90}-\u{1BC99}\u{1BC9C}\u{1BC9F}\u{1D000}-\u{1D0F5}\u{1D100}-\u{1D126}\u{1D129}-\u{1D166}\u{1D16A}-\u{1D172}\u{1D183}\u{1D184}\u{1D18C}-\u{1D1A9}\u{1D1AE}-\u{1D1E8}\u{1D2E0}-\u{1D2F3}\u{1D360}-\u{1D378}\u{1D400}-\u{1D454}\u{1D456}-\u{1D49C}\u{1D49E}\u{1D49F}\u{1D4A2}\u{1D4A5}\u{1D4A6}\u{1D4A9}-\u{1D4AC}\u{1D4AE}-\u{1D4B9}\u{1D4BB}\u{1D4BD}-\u{1D4C3}\u{1D4C5}-\u{1D505}\u{1D507}-\u{1D50A}\u{1D50D}-\u{1D514}\u{1D516}-\u{1D51C}\u{1D51E}-\u{1D539}\u{1D53B}-\u{1D53E}\u{1D540}-\u{1D544}\u{1D546}\u{1D54A}-\u{1D550}\u{1D552}-\u{1D6A5}\u{1D6A8}-\u{1D6DA}\u{1D6DC}-\u{1D714}\u{1D716}-\u{1D74E}\u{1D750}-\u{1D788}\u{1D78A}-\u{1D7C2}\u{1D7C4}-\u{1D7CB}\u{1D7CE}-\u{1D9FF}\u{1DA37}-\u{1DA3A}\u{1DA6D}-\u{1DA74}\u{1DA76}-\u{1DA83}\u{1DA85}-\u{1DA8B}\u{1E100}-\u{1E12C}\u{1E137}-\u{1E13D}\u{1E140}-\u{1E149}\u{1E14E}\u{1E14F}\u{1E2C0}-\u{1E2EB}\u{1E2F0}-\u{1E2F9}\u{1F100}-\u{1F10A}\u{1F110}-\u{1F12E}\u{1F130}-\u{1F169}\u{1F170}-\u{1F1AC}\u{1F1E6}-\u{1F202}\u{1F210}-\u{1F23B}\u{1F240}-\u{1F248}\u{1F250}\u{1F251}\u{1FBF0}-\u{1FBF9}\u{20000}-\u{2A6DD}\u{2A700}-\u{2B734}\u{2B740}-\u{2B81D}\u{2B820}-\u{2CEA1}\u{2CEB0}-\u{2EBE0}\u{2F800}-\u{2FA1D}\u{30000}-\u{3134A}\u{F0000}-\u{FFFFD}\u{100000}-\u{10FFFD}][\u0300-\u036F\u0483-\u0489\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u0711\u0730-\u074A\u07A6-\u07B0\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0902\u093A\u093C\u0941-\u0948\u094D\u0951-\u0957\u0962\u0963\u0981\u09BC\u09C1-\u09C4\u09CD\u09E2\u09E3\u09FE\u0A01\u0A02\u0A3C\u0A41\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A70\u0A71\u0A75\u0A81\u0A82\u0ABC\u0AC1-\u0AC5\u0AC7\u0AC8\u0ACD\u0AE2\u0AE3\u0AFA-\u0AFF\u0B01\u0B3C\u0B3F\u0B41-\u0B44\u0B4D\u0B55\u0B56\u0B62\u0B63\u0B82\u0BC0\u0BCD\u0C00\u0C04\u0C3E-\u0C40\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C81\u0CBC\u0CCC\u0CCD\u0CE2\u0CE3\u0D00\u0D01\u0D3B\u0D3C\u0D41-\u0D44\u0D4D\u0D62\u0D63\u0D81\u0DCA\u0DD2-\u0DD4\u0DD6\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECD\u0F18\u0F19\u0F35\u0F37\u0F39\u0F71-\u0F7E\u0F80-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102D-\u1030\u1032-\u1037\u1039\u103A\u103D\u103E\u1058\u1059\u105E-\u1060\u1071-\u1074\u1082\u1085\u1086\u108D\u109D\u135D-\u135F\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4\u17B5\u17B7-\u17BD\u17C6\u17C9-\u17D3\u17DD\u180B-\u180D\u1885\u1886\u18A9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193B\u1A17\u1A18\u1A1B\u1A56\u1A58-\u1A5E\u1A60\u1A62\u1A65-\u1A6C\u1A73-\u1A7C\u1A7F\u1AB0-\u1AC0\u1B00-\u1B03\u1B34\u1B36-\u1B3A\u1B3C\u1B42\u1B6B-\u1B73\u1B80\u1B81\u1BA2-\u1BA5\u1BA8\u1BA9\u1BAB-\u1BAD\u1BE6\u1BE8\u1BE9\u1BED\u1BEF-\u1BF1\u1C2C-\u1C33\u1C36\u1C37\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u20D0-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302D\u3099\u309A\uA66F-\uA672\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA825\uA826\uA82C\uA8C4\uA8C5\uA8E0-\uA8F1\uA8FF\uA926-\uA92D\uA947-\uA951\uA980-\uA982\uA9B3\uA9B6-\uA9B9\uA9BC\uA9BD\uA9E5\uAA29-\uAA2E\uAA31\uAA32\uAA35\uAA36\uAA43\uAA4C\uAA7C\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEC\uAAED\uAAF6\uABE5\uABE8\uABED\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\u{101FD}\u{102E0}\u{10376}-\u{1037A}\u{10A01}-\u{10A03}\u{10A05}\u{10A06}\u{10A0C}-\u{10A0F}\u{10A38}-\u{10A3A}\u{10A3F}\u{10AE5}\u{10AE6}\u{10D24}-\u{10D27}\u{10EAB}\u{10EAC}\u{10F46}-\u{10F50}\u{11001}\u{11038}-\u{11046}\u{1107F}-\u{11081}\u{110B3}-\u{110B6}\u{110B9}\u{110BA}\u{11100}-\u{11102}\u{11127}-\u{1112B}\u{1112D}-\u{11134}\u{11173}\u{11180}\u{11181}\u{111B6}-\u{111BE}\u{111C9}-\u{111CC}\u{111CF}\u{1122F}-\u{11231}\u{11234}\u{11236}\u{11237}\u{1123E}\u{112DF}\u{112E3}-\u{112EA}\u{11300}\u{11301}\u{1133B}\u{1133C}\u{11340}\u{11366}-\u{1136C}\u{11370}-\u{11374}\u{11438}-\u{1143F}\u{11442}-\u{11444}\u{11446}\u{1145E}\u{114B3}-\u{114B8}\u{114BA}\u{114BF}\u{114C0}\u{114C2}\u{114C3}\u{115B2}-\u{115B5}\u{115BC}\u{115BD}\u{115BF}\u{115C0}\u{115DC}\u{115DD}\u{11633}-\u{1163A}\u{1163D}\u{1163F}\u{11640}\u{116AB}\u{116AD}\u{116B0}-\u{116B5}\u{116B7}\u{1171D}-\u{1171F}\u{11722}-\u{11725}\u{11727}-\u{1172B}\u{1182F}-\u{11837}\u{11839}\u{1183A}\u{1193B}\u{1193C}\u{1193E}\u{11943}\u{119D4}-\u{119D7}\u{119DA}\u{119DB}\u{119E0}\u{11A01}-\u{11A06}\u{11A09}\u{11A0A}\u{11A33}-\u{11A38}\u{11A3B}-\u{11A3E}\u{11A47}\u{11A51}-\u{11A56}\u{11A59}-\u{11A5B}\u{11A8A}-\u{11A96}\u{11A98}\u{11A99}\u{11C30}-\u{11C36}\u{11C38}-\u{11C3D}\u{11C92}-\u{11CA7}\u{11CAA}-\u{11CB0}\u{11CB2}\u{11CB3}\u{11CB5}\u{11CB6}\u{11D31}-\u{11D36}\u{11D3A}\u{11D3C}\u{11D3D}\u{11D3F}-\u{11D45}\u{11D47}\u{11D90}\u{11D91}\u{11D95}\u{11D97}\u{11EF3}\u{11EF4}\u{16AF0}-\u{16AF4}\u{16B30}-\u{16B36}\u{16F4F}\u{16F8F}-\u{16F92}\u{16FE4}\u{1BC9D}\u{1BC9E}\u{1D167}-\u{1D169}\u{1D17B}-\u{1D182}\u{1D185}-\u{1D18B}\u{1D1AA}-\u{1D1AD}\u{1D242}-\u{1D244}\u{1DA00}-\u{1DA36}\u{1DA3B}-\u{1DA6C}\u{1DA75}\u{1DA84}\u{1DA9B}-\u{1DA9F}\u{1DAA1}-\u{1DAAF}\u{1E000}-\u{1E006}\u{1E008}-\u{1E018}\u{1E01B}-\u{1E021}\u{1E023}\u{1E024}\u{1E026}-\u{1E02A}\u{1E130}-\u{1E136}\u{1E2EC}-\u{1E2EF}\u{1E8D0}-\u{1E8D6}\u{1E944}-\u{1E94A}\u{E0100}-\u{E01EF}]*$/u;
var regexes = {
combiningMarks,
combiningClassVirama,
validZWNJ,
bidiDomain,
bidiS1LTR,
bidiS1RTL,
bidiS2,
bidiS3,
bidiS4EN,
bidiS4AN,
bidiS5,
bidiS6
};
var mappingTable = [
[
[
0,
44
],
4
],
[
[
45,
46
],
2
],
[
47,
4
],
[
[
48,
57
],
2
],
[
[
58,
64
],
4
],
[
65,
1,
"a"
],
[
66,
1,
"b"
],
[
67,
1,
"c"
],
[
68,
1,
"d"
],
[
69,
1,
"e"
],
[
70,
1,
"f"
],
[
71,
1,
"g"
],
[
72,
1,
"h"
],
[
73,
1,
"i"
],
[
74,
1,
"j"
],
[
75,
1,
"k"
],
[
76,
1,
"l"
],
[
77,
1,
"m"
],
[
78,
1,
"n"
],
[
79,
1,
"o"
],
[
80,
1,
"p"
],
[
81,
1,
"q"
],
[
82,
1,
"r"
],
[
83,
1,
"s"
],
[
84,
1,
"t"
],
[
85,
1,
"u"
],
[
86,
1,
"v"
],
[
87,
1,
"w"
],
[
88,
1,
"x"
],
[
89,
1,
"y"
],
[
90,
1,
"z"
],
[
[
91,
96
],
4
],
[
[
97,
122
],
2
],
[
[
123,
127
],
4
],
[
[
128,
159
],
3
],
[
160,
5,
" "
],
[
[
161,
167
],
2
],
[
168,
5,
" Ì"
],
[
169,
2
],
[
170,
1,
"a"
],
[
[
171,
172
],
2
],
[
173,
7
],
[
174,
2
],
[
175,
5,
" Ì"
],
[
[
176,
177
],
2
],
[
178,
1,
"2"
],
[
179,
1,
"3"
],
[
180,
5,
" Ì"
],
[
181,
1,
"μ"
],
[
182,
2
],
[
183,
2
],
[
184,
5,
" ̧"
],
[
185,
1,
"1"
],
[
186,
1,
"o"
],
[
187,
2
],
[
188,
1,
"1â4"
],
[
189,
1,
"1â2"
],
[
190,
1,
"3â4"
],
[
191,
2
],
[
192,
1,
"Ã "
],
[
193,
1,
"á"
],
[
194,
1,
"â"
],
[
195,
1,
"ã"
],
[
196,
1,
"ä"
],
[
197,
1,
"Ã¥"
],
[
198,
1,
"æ"
],
[
199,
1,
"ç"
],
[
200,
1,
"è"
],
[
201,
1,
"é"
],
[
202,
1,
"ê"
],
[
203,
1,
"ë"
],
[
204,
1,
"ì"
],
[
205,
1,
"Ã"
],
[
206,
1,
"î"
],
[
207,
1,
"ï"
],
[
208,
1,
"ð"
],
[
209,
1,
"ñ"
],
[
210,
1,
"ò"
],
[
211,
1,
"ó"
],
[
212,
1,
"ô"
],
[
213,
1,
"õ"
],
[
214,
1,
"ö"
],
[
215,
2
],
[
216,
1,
"ø"
],
[
217,
1,
"ù"
],
[
218,
1,
"ú"
],
[
219,
1,
"û"
],
[
220,
1,
"ü"
],
[
221,
1,
"ý"
],
[
222,
1,
"þ"
],
[
223,
6,
"ss"
],
[
[
224,
246
],
2
],
[
247,
2
],
[
[
248,
255
],
2
],
[
256,
1,
"Ä"
],
[
257,
2
],
[
258,
1,
"Ä"
],
[
259,
2
],
[
260,
1,
"Ä
"
],
[
261,
2
],
[
262,
1,
"Ä"
],
[
263,
2
],
[
264,
1,
"Ä"
],
[
265,
2
],
[
266,
1,
"Ä"
],
[
267,
2
],
[
268,
1,
"Ä"
],
[
269,
2
],
[
270,
1,
"Ä"
],
[
271,
2
],
[
272,
1,
"Ä"
],
[
273,
2
],
[
274,
1,
"Ä"
],
[
275,
2
],
[
276,
1,
"Ä"
],
[
277,
2
],
[
278,
1,
"Ä"
],
[
279,
2
],
[
280,
1,
"Ä"
],
[
281,
2
],
[
282,
1,
"Ä"
],
[
283,
2
],
[
284,
1,
"Ä"
],
[
285,
2
],
[
286,
1,
"Ä"
],
[
287,
2
],
[
288,
1,
"Ä¡"
],
[
289,
2
],
[
290,
1,
"Ä£"
],
[
291,
2
],
[
292,
1,
"Ä¥"
],
[
293,
2
],
[
294,
1,
"ħ"
],
[
295,
2
],
[
296,
1,
"Ä©"
],
[
297,
2
],
[
298,
1,
"Ä«"
],
[
299,
2
],
[
300,
1,
"Ä"
],
[
301,
2
],
[
302,
1,
"į"
],
[
303,
2
],
[
304,
1,
"iÌ"
],
[
305,
2
],
[
[
306,
307
],
1,
"ij"
],
[
308,
1,
"ĵ"
],
[
309,
2
],
[
310,
1,
"Ä·"
],
[
[
311,
312
],
2
],
[
313,
1,
"ĺ"
],
[
314,
2
],
[
315,
1,
"ļ"
],
[
316,
2
],
[
317,
1,
"ľ"
],
[
318,
2
],
[
[
319,
320
],
1,
"l·"
],
[
321,
1,
"Å"
],
[
322,
2
],
[
323,
1,
"Å"
],
[
324,
2
],
[
325,
1,
"Å"
],
[
326,
2
],
[
327,
1,
"Å"
],
[
328,
2
],
[
329,
1,
"ʼn"
],
[
330,
1,
"Å"
],
[
331,
2
],
[
332,
1,
"Å"
],
[
333,
2
],
[
334,
1,
"Å"
],
[
335,
2
],
[
336,
1,
"Å"
],
[
337,
2
],
[
338,
1,
"Å"
],
[
339,
2
],
[
340,
1,
"Å"
],
[
341,
2
],
[
342,
1,
"Å"
],
[
343,
2
],
[
344,
1,
"Å"
],
[
345,
2
],
[
346,
1,
"Å"
],
[
347,
2
],
[
348,
1,
"Å"
],
[
349,
2
],
[
350,
1,
"Å"
],
[
351,
2
],
[
352,
1,
"Å¡"
],
[
353,
2
],
[
354,
1,
"Å£"
],
[
355,
2
],
[
356,
1,
"Å¥"
],
[
357,
2
],
[
358,
1,
"ŧ"
],
[
359,
2
],
[
360,
1,
"Å©"
],
[
361,
2
],
[
362,
1,
"Å«"
],
[
363,
2
],
[
364,
1,
"Å"
],
[
365,
2
],
[
366,
1,
"ů"
],
[
367,
2
],
[
368,
1,
"ű"
],
[
369,
2
],
[
370,
1,
"ų"
],
[
371,
2
],
[
372,
1,
"ŵ"
],
[
373,
2
],
[
374,
1,
"Å·"
],
[
375,
2
],
[
376,
1,
"ÿ"
],
[
377,
1,
"ź"
],
[
378,
2
],
[
379,
1,
"ż"
],
[
380,
2
],
[
381,
1,
"ž"
],
[
382,
2
],
[
383,
1,
"s"
],
[
384,
2
],
[
385,
1,
"É"
],
[
386,
1,
"Æ"
],
[
387,
2
],
[
388,
1,
"Æ
"
],
[
389,
2
],
[
390,
1,
"É"
],
[
391,
1,
"Æ"
],
[
392,
2
],
[
393,
1,
"É"
],
[
394,
1,
"É"
],
[
395,
1,
"Æ"
],
[
[
396,
397
],
2
],
[
398,
1,
"Ç"
],
[
399,
1,
"É"
],
[
400,
1,
"É"
],
[
401,
1,
"Æ"
],
[
402,
2
],
[
403,
1,
"É "
],
[
404,
1,
"É£"
],
[
405,
2
],
[
406,
1,
"É©"
],
[
407,
1,
"ɨ"
],
[
408,
1,
"Æ"
],
[
[
409,
411
],
2
],
[
412,
1,
"ɯ"
],
[
413,
1,
"ɲ"
],
[
414,
2
],
[
415,
1,
"ɵ"
],
[
416,
1,
"Æ¡"
],
[
417,
2
],
[
418,
1,
"Æ£"
],
[
419,
2
],
[
420,
1,
"Æ¥"
],
[
421,
2
],
[
422,
1,
"Ê"
],
[
423,
1,
"ƨ"
],
[
424,
2
],
[
425,
1,
"Ê"
],
[
[
426,
427
],
2
],
[
428,
1,
"Æ"
],
[
429,
2
],
[
430,
1,
"Ê"
],
[
431,
1,
"ư"
],
[
432,
2
],
[
433,
1,
"Ê"
],
[
434,
1,
"Ê"
],
[
435,
1,
"Æ´"
],
[
436,
2
],
[
437,
1,
"ƶ"
],
[
438,
2
],
[
439,
1,
"Ê"
],
[
440,
1,
"ƹ"
],
[
[
441,
443
],
2
],
[
444,
1,
"ƽ"
],
[
[
445,
451
],
2
],
[
[
452,
454
],
1,
"dž"
],
[
[
455,
457
],
1,
"lj"
],
[
[
458,
460
],
1,
"nj"
],
[
461,
1,
"Ç"
],
[
462,
2
],
[
463,
1,
"Ç"
],
[
464,
2
],
[
465,
1,
"Ç"
],
[
466,
2
],
[
467,
1,
"Ç"
],
[
468,
2
],
[
469,
1,
"Ç"
],
[
470,
2
],
[
471,
1,
"Ç"
],
[
472,
2
],
[
473,
1,
"Ç"
],
[
474,
2
],
[
475,
1,
"Ç"
],
[
[
476,
477
],
2
],
[
478,
1,
"Ç"
],
[
479,
2
],
[
480,
1,
"Ç¡"
],
[
481,
2
],
[
482,
1,
"Ç£"
],
[
483,
2
],
[
484,
1,
"Ç¥"
],
[
485,
2
],
[
486,
1,
"ǧ"
],
[
487,
2
],
[
488,
1,
"Ç©"
],
[
489,
2
],
[
490,
1,
"Ç«"
],
[
491,
2
],
[
492,
1,
"Ç"
],
[
493,
2
],
[
494,
1,
"ǯ"
],
[
[
495,
496
],
2
],
[
[
497,
499
],
1,
"dz"
],
[
500,
1,
"ǵ"
],
[
501,
2
],
[
502,
1,
"Æ"
],
[
503,
1,
"Æ¿"
],
[
504,
1,
"ǹ"
],
[
505,
2
],
[
506,
1,
"Ç»"
],
[
507,
2
],
[
508,
1,
"ǽ"
],
[
509,
2
],
[
510,
1,
"Ç¿"
],
[
511,
2
],
[
512,
1,
"È"
],
[
513,
2
],
[
514,
1,
"È"
],
[
515,
2
],
[
516,
1,
"È
"
],
[
517,
2
],
[
518,
1,
"È"
],
[
519,
2
],
[
520,
1,
"È"
],
[
521,
2
],
[
522,
1,
"È"
],
[
523,
2
],
[
524,
1,
"È"
],
[
525,
2
],
[
526,
1,
"È"
],
[
527,
2
],
[
528,
1,
"È"
],
[
529,
2
],
[
530,
1,
"È"
],
[
531,
2
],
[
532,
1,
"È"
],
[
533,
2
],
[
534,
1,
"È"
],
[
535,
2
],
[
536,
1,
"È"
],
[
537,
2
],
[
538,
1,
"È"
],
[
539,
2
],
[
540,
1,
"È"
],
[
541,
2
],
[
542,
1,
"È"
],
[
543,
2
],
[
544,
1,
"Æ"
],
[
545,
2
],
[
546,
1,
"È£"
],
[
547,
2
],
[
548,
1,
"È¥"
],
[
549,
2
],
[
550,
1,
"ȧ"
],
[
551,
2
],
[
552,
1,
"È©"
],
[
553,
2
],
[
554,
1,
"È«"
],
[
555,
2
],
[
556,
1,
"È"
],
[
557,
2
],
[
558,
1,
"ȯ"
],
[
559,
2
],
[
560,
1,
"ȱ"
],
[
561,
2
],
[
562,
1,
"ȳ"
],
[
563,
2
],
[
[
564,
566
],
2
],
[
[
567,
569
],
2
],
[
570,
1,
"â±¥"
],
[
571,
1,
"ȼ"
],
[
572,
2
],
[
573,
1,
"Æ"
],
[
574,
1,
"ⱦ"
],
[
[
575,
576
],
2
],
[
577,
1,
"É"
],
[
578,
2
],
[
579,
1,
"Æ"
],
[
580,
1,
"Ê"
],
[
581,
1,
"Ê"
],
[
582,
1,
"É"
],
[
583,
2
],
[
584,
1,
"É"
],
[
585,
2
],
[
586,
1,
"É"
],
[
587,
2
],
[
588,
1,
"É"
],
[
589,
2
],
[
590,
1,
"É"
],
[
591,
2
],
[
[
592,
680
],
2
],
[
[
681,
685
],
2
],
[
[
686,
687
],
2
],
[
688,
1,
"h"
],
[
689,
1,
"ɦ"
],
[
690,
1,
"j"
],
[
691,
1,
"r"
],
[
692,
1,
"ɹ"
],
[
693,
1,
"É»"
],
[
694,
1,
"Ê"
],
[
695,
1,
"w"
],
[
696,
1,
"y"
],
[
[
697,
705
],
2
],
[
[
706,
709
],
2
],
[
[
710,
721
],
2
],
[
[
722,
727
],
2
],
[
728,
5,
" Ì"
],
[
729,
5,
" Ì"
],
[
730,
5,
" Ì"
],
[
731,
5,
" ̨"
],
[
732,
5,
" Ì"
],
[
733,
5,
" Ì"
],
[
734,
2
],
[
735,
2
],
[
736,
1,
"É£"
],
[
737,
1,
"l"
],
[
738,
1,
"s"
],
[
739,
1,
"x"
],
[
740,
1,
"Ê"
],
[
[
741,
745
],
2
],
[
[
746,
747
],
2
],
[
748,
2
],
[
749,
2
],
[
750,
2
],
[
[
751,
767
],
2
],
[
[
768,
831
],
2
],
[
832,
1,
"Ì"
],
[
833,
1,
"Ì"
],
[
834,
2
],
[
835,
1,
"Ì"
],
[
836,
1,
"ÌÌ"
],
[
837,
1,
"ι"
],
[
[
838,
846
],
2
],
[
847,
7
],
[
[
848,
855
],
2
],
[
[
856,
860
],
2
],
[
[
861,
863
],
2
],
[
[
864,
865
],
2
],
[
866,
2
],
[
[
867,
879
],
2
],
[
880,
1,
"ͱ"
],
[
881,
2
],
[
882,
1,
"ͳ"
],
[
883,
2
],
[
884,
1,
"ʹ"
],
[
885,
2
],
[
886,
1,
"Í·"
],
[
887,
2
],
[
[
888,
889
],
3
],
[
890,
5,
" ι"
],
[
[
891,
893
],
2
],
[
894,
5,
";"
],
[
895,
1,
"ϳ"
],
[
[
896,
899
],
3
],
[
900,
5,
" Ì"
],
[
901,
5,
" ÌÌ"
],
[
902,
1,
"ά"
],
[
903,
1,
"·"
],
[
904,
1,
"Î"
],
[
905,
1,
"ή"
],
[
906,
1,
"ί"
],
[
907,
3
],
[
908,
1,
"Ï"
],
[
909,
3
],
[
910,
1,
"Ï"
],
[
911,
1,
"Ï"
],
[
912,
2
],
[
913,
1,
"α"
],
[
914,
1,
"β"
],
[
915,
1,
"γ"
],
[
916,
1,
"δ"
],
[
917,
1,
"ε"
],
[
918,
1,
"ζ"
],
[
919,
1,
"η"
],
[
920,
1,
"θ"
],
[
921,
1,
"ι"
],
[
922,
1,
"κ"
],
[
923,
1,
"λ"
],
[
924,
1,
"μ"
],
[
925,
1,
"ν"
],
[
926,
1,
"ξ"
],
[
927,
1,
"ο"
],
[
928,
1,
"Ï"
],
[
929,
1,
"Ï"
],
[
930,
3
],
[
931,
1,
"Ï"
],
[
932,
1,
"Ï"
],
[
933,
1,
"Ï
"
],
[
934,
1,
"Ï"
],
[
935,
1,
"Ï"
],
[
936,
1,
"Ï"
],
[
937,
1,
"Ï"
],
[
938,
1,
"Ï"
],
[
939,
1,
"Ï"
],
[
[
940,
961
],
2
],
[
962,
6,
"Ï"
],
[
[
963,
974
],
2
],
[
975,
1,
"Ï"
],
[
976,
1,
"β"
],
[
977,
1,
"θ"
],
[
978,
1,
"Ï
"
],
[
979,
1,
"Ï"
],
[
980,
1,
"Ï"
],
[
981,
1,
"Ï"
],
[
982,
1,
"Ï"
],
[
983,
2
],
[
984,
1,
"Ï"
],
[
985,
2
],
[
986,
1,
"Ï"
],
[
987,
2
],
[
988,
1,
"Ï"
],
[
989,
2
],
[
990,
1,
"Ï"
],
[
991,
2
],
[
992,
1,
"Ï¡"
],
[
993,
2
],
[
994,
1,
"Ï£"
],
[
995,
2
],
[
996,
1,
"Ï¥"
],
[
997,
2
],
[
998,
1,
"ϧ"
],
[
999,
2
],
[
1000,
1,
"Ï©"
],
[
1001,
2
],
[
1002,
1,
"Ï«"
],
[
1003,
2
],
[
1004,
1,
"Ï"
],
[
1005,
2
],
[
1006,
1,
"ϯ"
],
[
1007,
2
],
[
1008,
1,
"κ"
],
[
1009,
1,
"Ï"
],
[
1010,
1,
"Ï"
],
[
1011,
2
],
[
1012,
1,
"θ"
],
[
1013,
1,
"ε"
],
[
1014,
2
],
[
1015,
1,
"ϸ"
],
[
1016,
2
],
[
1017,
1,
"Ï"
],
[
1018,
1,
"Ï»"
],
[
1019,
2
],
[
1020,
2
],
[
1021,
1,
"Í»"
],
[
1022,
1,
"ͼ"
],
[
1023,
1,
"ͽ"
],
[
1024,
1,
"Ñ"
],
[
1025,
1,
"Ñ"
],
[
1026,
1,
"Ñ"
],
[
1027,
1,
"Ñ"
],
[
1028,
1,
"Ñ"
],
[
1029,
1,
"Ñ"
],
[
1030,
1,
"Ñ"
],
[
1031,
1,
"Ñ"
],
[
1032,
1,
"Ñ"
],
[
1033,
1,
"Ñ"
],
[
1034,
1,
"Ñ"
],
[
1035,
1,
"Ñ"
],
[
1036,
1,
"Ñ"
],
[
1037,
1,
"Ñ"
],
[
1038,
1,
"Ñ"
],
[
1039,
1,
"Ñ"
],
[
1040,
1,
"а"
],
[
1041,
1,
"б"
],
[
1042,
1,
"в"
],
[
1043,
1,
"г"
],
[
1044,
1,
"д"
],
[
1045,
1,
"е"
],
[
1046,
1,
"ж"
],
[
1047,
1,
"з"
],
[
1048,
1,
"и"
],
[
1049,
1,
"й"
],
[
1050,
1,
"к"
],
[
1051,
1,
"л"
],
[
1052,
1,
"м"
],
[
1053,
1,
"н"
],
[
1054,
1,
"о"
],
[
1055,
1,
"п"
],
[
1056,
1,
"Ñ"
],
[
1057,
1,
"Ñ"
],
[
1058,
1,
"Ñ"
],
[
1059,
1,
"Ñ"
],
[
1060,
1,
"Ñ"
],
[
1061,
1,
"Ñ
"
],
[
1062,
1,
"Ñ"
],
[
1063,
1,
"Ñ"
],
[
1064,
1,
"Ñ"
],
[
1065,
1,
"Ñ"
],
[
1066,
1,
"Ñ"
],
[
1067,
1,
"Ñ"
],
[
1068,
1,
"Ñ"
],
[
1069,
1,
"Ñ"
],
[
1070,
1,
"Ñ"
],
[
1071,
1,
"Ñ"
],
[
[
1072,
1103
],
2
],
[
1104,
2
],
[
[
1105,
1116
],
2
],
[
1117,
2
],
[
[
1118,
1119
],
2
],
[
1120,
1,
"Ñ¡"
],
[
1121,
2
],
[
1122,
1,
"Ñ£"
],
[
1123,
2
],
[
1124,
1,
"Ñ¥"
],
[
1125,
2
],
[
1126,
1,
"ѧ"
],
[
1127,
2
],
[
1128,
1,
"Ñ©"
],
[
1129,
2
],
[
1130,
1,
"Ñ«"
],
[
1131,
2
],
[
1132,
1,
"Ñ"
],
[
1133,
2
],
[
1134,
1,
"ѯ"
],
[
1135,
2
],
[
1136,
1,
"ѱ"
],
[
1137,
2
],
[
1138,
1,
"ѳ"
],
[
1139,
2
],
[
1140,
1,
"ѵ"
],
[
1141,
2
],
[
1142,
1,
"Ñ·"
],
[
1143,
2
],
[
1144,
1,
"ѹ"
],
[
1145,
2
],
[
1146,
1,
"Ñ»"
],
[
1147,
2
],
[
1148,
1,
"ѽ"
],
[
1149,
2
],
[
1150,
1,
"Ñ¿"
],
[
1151,
2
],
[
1152,
1,
"Ò"
],
[
1153,
2
],
[
1154,
2
],
[
[
1155,
1158
],
2
],
[
1159,
2
],
[
[
1160,
1161
],
2
],
[
1162,
1,
"Ò"
],
[
1163,
2
],
[
1164,
1,
"Ò"
],
[
1165,
2
],
[
1166,
1,
"Ò"
],
[
1167,
2
],
[
1168,
1,
"Ò"
],
[
1169,
2
],
[
1170,
1,
"Ò"
],
[
1171,
2
],
[
1172,
1,
"Ò"
],
[
1173,
2
],
[
1174,
1,
"Ò"
],
[
1175,
2
],
[
1176,
1,
"Ò"
],
[
1177,
2
],
[
1178,
1,
"Ò"
],
[
1179,
2
],
[
1180,
1,
"Ò"
],
[
1181,
2
],
[
1182,
1,
"Ò"
],
[
1183,
2
],
[
1184,
1,
"Ò¡"
],
[
1185,
2
],
[
1186,
1,
"Ò£"
],
[
1187,
2
],
[
1188,
1,
"Ò¥"
],
[
1189,
2
],
[
1190,
1,
"Ò§"
],
[
1191,
2
],
[
1192,
1,
"Ò©"
],
[
1193,
2
],
[
1194,
1,
"Ò«"
],
[
1195,
2
],
[
1196,
1,
"Ò"
],
[
1197,
2
],
[
1198,
1,
"Ò¯"
],
[
1199,
2
],
[
1200,
1,
"Ò±"
],
[
1201,
2
],
[
1202,
1,
"Ò³"
],
[
1203,
2
],
[
1204,
1,
"Òµ"
],
[
1205,
2
],
[
1206,
1,
"Ò·"
],
[
1207,
2
],
[
1208,
1,
"Ò¹"
],
[
1209,
2
],
[
1210,
1,
"Ò»"
],
[
1211,
2
],
[
1212,
1,
"Ò½"
],
[
1213,
2
],
[
1214,
1,
"Ò¿"
],
[
1215,
2
],
[
1216,
3
],
[
1217,
1,
"Ó"
],
[
1218,
2
],
[
1219,
1,
"Ó"
],
[
1220,
2
],
[
1221,
1,
"Ó"
],
[
1222,
2
],
[
1223,
1,
"Ó"
],
[
1224,
2
],
[
1225,
1,
"Ó"
],
[
1226,
2
],
[
1227,
1,
"Ó"
],
[
1228,
2
],
[
1229,
1,
"Ó"
],
[
1230,
2
],
[
1231,
2
],
[
1232,
1,
"Ó"
],
[
1233,
2
],
[
1234,
1,
"Ó"
],
[
1235,
2
],
[
1236,
1,
"Ó"
],
[
1237,
2
],
[
1238,
1,
"Ó"
],
[
1239,
2
],
[
1240,
1,
"Ó"
],
[
1241,
2
],
[
1242,
1,
"Ó"
],
[
1243,
2
],
[
1244,
1,
"Ó"
],
[
1245,
2
],
[
1246,
1,
"Ó"
],
[
1247,
2
],
[
1248,
1,
"Ó¡"
],
[
1249,
2
],
[
1250,
1,
"Ó£"
],
[
1251,
2
],
[
1252,
1,
"Ó¥"
],
[
1253,
2
],
[
1254,
1,
"Ó§"
],
[
1255,
2
],
[
1256,
1,
"Ó©"
],
[
1257,
2
],
[
1258,
1,
"Ó«"
],
[
1259,
2
],
[
1260,
1,
"Ó"
],
[
1261,
2
],
[
1262,
1,
"Ó¯"
],
[
1263,
2
],
[
1264,
1,
"Ó±"
],
[
1265,
2
],
[
1266,
1,
"Ó³"
],
[
1267,
2
],
[
1268,
1,
"Óµ"
],
[
1269,
2
],
[
1270,
1,
"Ó·"
],
[
1271,
2
],
[
1272,
1,
"Ó¹"
],
[
1273,
2
],
[
1274,
1,
"Ó»"
],
[
1275,
2
],
[
1276,
1,
"Ó½"
],
[
1277,
2
],
[
1278,
1,
"Ó¿"
],
[
1279,
2
],
[
1280,
1,
"Ô"
],
[
1281,
2
],
[
1282,
1,
"Ô"
],
[
1283,
2
],
[
1284,
1,
"Ô
"
],
[
1285,
2
],
[
1286,
1,
"Ô"
],
[
1287,
2
],
[
1288,
1,
"Ô"
],
[
1289,
2
],
[
1290,
1,
"Ô"
],
[
1291,
2
],
[
1292,
1,
"Ô"
],
[
1293,
2
],
[
1294,
1,
"Ô"
],
[
1295,
2
],
[
1296,
1,
"Ô"
],
[
1297,
2
],
[
1298,
1,
"Ô"
],
[
1299,
2
],
[
1300,
1,
"Ô"
],
[
1301,
2
],
[
1302,
1,
"Ô"
],
[
1303,
2
],
[
1304,
1,
"Ô"
],
[
1305,
2
],
[
1306,
1,
"Ô"
],
[
1307,
2
],
[
1308,
1,
"Ô"
],
[
1309,
2
],
[
1310,
1,
"Ô"
],
[
1311,
2
],
[
1312,
1,
"Ô¡"
],
[
1313,
2
],
[
1314,
1,
"Ô£"
],
[
1315,
2
],
[
1316,
1,
"Ô¥"
],
[
1317,
2
],
[
1318,
1,
"Ô§"
],
[
1319,
2
],
[
1320,
1,
"Ô©"
],
[
1321,
2
],
[
1322,
1,
"Ô«"
],
[
1323,
2
],
[
1324,
1,
"Ô"
],
[
1325,
2
],
[
1326,
1,
"Ô¯"
],
[
1327,
2
],
[
1328,
3
],
[
1329,
1,
"Õ¡"
],
[
1330,
1,
"Õ¢"
],
[
1331,
1,
"Õ£"
],
[
1332,
1,
"Õ¤"
],
[
1333,
1,
"Õ¥"
],
[
1334,
1,
"Õ¦"
],
[
1335,
1,
"Õ§"
],
[
1336,
1,
"Õ¨"
],
[
1337,
1,
"Õ©"
],
[
1338,
1,
"Õª"
],
[
1339,
1,
"Õ«"
],
[
1340,
1,
"Õ¬"
],
[
1341,
1,
"Õ"
],
[
1342,
1,
"Õ®"
],
[
1343,
1,
"Õ¯"
],
[
1344,
1,
"Õ°"
],
[
1345,
1,
"Õ±"
],
[
1346,
1,
"Õ²"
],
[
1347,
1,
"Õ³"
],
[
1348,
1,
"Õ´"
],
[
1349,
1,
"Õµ"
],
[
1350,
1,
"Õ¶"
],
[
1351,
1,
"Õ·"
],
[
1352,
1,
"Õ¸"
],
[
1353,
1,
"Õ¹"
],
[
1354,
1,
"Õº"
],
[
1355,
1,
"Õ»"
],
[
1356,
1,
"Õ¼"
],
[
1357,
1,
"Õ½"
],
[
1358,
1,
"Õ¾"
],
[
1359,
1,
"Õ¿"
],
[
1360,
1,
"Ö"
],
[
1361,
1,
"Ö"
],
[
1362,
1,
"Ö"
],
[
1363,
1,
"Ö"
],
[
1364,
1,
"Ö"
],
[
1365,
1,
"Ö
"
],
[
1366,
1,
"Ö"
],
[
[
1367,
1368
],
3
],
[
1369,
2
],
[
[
1370,
1375
],
2
],
[
1376,
2
],
[
[
1377,
1414
],
2
],
[
1415,
1,
"Õ¥Ö"
],
[
1416,
2
],
[
1417,
2
],
[
1418,
2
],
[
[
1419,
1420
],
3
],
[
[
1421,
1422
],
2
],
[
1423,
2
],
[
1424,
3
],
[
[
1425,
1441
],
2
],
[
1442,
2
],
[
[
1443,
1455
],
2
],
[
[
1456,
1465
],
2
],
[
1466,
2
],
[
[
1467,
1469
],
2
],
[
1470,
2
],
[
1471,
2
],
[
1472,
2
],
[
[
1473,
1474
],
2
],
[
1475,
2
],
[
1476,
2
],
[
1477,
2
],
[
1478,
2
],
[
1479,
2
],
[
[
1480,
1487
],
3
],
[
[
1488,
1514
],
2
],
[
[
1515,
1518
],
3
],
[
1519,
2
],
[
[
1520,
1524
],
2
],
[
[
1525,
1535
],
3
],
[
[
1536,
1539
],
3
],
[
1540,
3
],
[
1541,
3
],
[
[
1542,
1546
],
2
],
[
1547,
2
],
[
1548,
2
],
[
[
1549,
1551
],
2
],
[
[
1552,
1557
],
2
],
[
[
1558,
1562
],
2
],
[
1563,
2
],
[
1564,
3
],
[
1565,
3
],
[
1566,
2
],
[
1567,
2
],
[
1568,
2
],
[
[
1569,
1594
],
2
],
[
[
1595,
1599
],
2
],
[
1600,
2
],
[
[
1601,
1618
],
2
],
[
[
1619,
1621
],
2
],
[
[
1622,
1624
],
2
],
[
[
1625,
1630
],
2
],
[
1631,
2
],
[
[
1632,
1641
],
2
],
[
[
1642,
1645
],
2
],
[
[
1646,
1647
],
2
],
[
[
1648,
1652
],
2
],
[
1653,
1,
"اٴ"
],
[
1654,
1,
"ÙÙ´"
],
[
1655,
1,
"ÛÙ´"
],
[
1656,
1,
"ÙÙ´"
],
[
[
1657,
1719
],
2
],
[
[
1720,
1721
],
2
],
[
[
1722,
1726
],
2
],
[
1727,
2
],
[
[
1728,
1742
],
2
],
[
1743,
2
],
[
[
1744,
1747
],
2
],
[
1748,
2
],
[
[
1749,
1756
],
2
],
[
1757,
3
],
[
1758,
2
],
[
[
1759,
1768
],
2
],
[
1769,
2
],
[
[
1770,
1773
],
2
],
[
[
1774,
1775
],
2
],
[
[
1776,
1785
],
2
],
[
[
1786,
1790
],
2
],
[
1791,
2
],
[
[
1792,
1805
],
2
],
[
1806,
3
],
[
1807,
3
],
[
[
1808,
1836
],
2
],
[
[
1837,
1839
],
2
],
[
[
1840,
1866
],
2
],
[
[
1867,
1868
],
3
],
[
[
1869,
1871
],
2
],
[
[
1872,
1901
],
2
],
[
[
1902,
1919
],
2
],
[
[
1920,
1968
],
2
],
[
1969,
2
],
[
[
1970,
1983
],
3
],
[
[
1984,
2037
],
2
],
[
[
2038,
2042
],
2
],
[
[
2043,
2044
],
3
],
[
2045,
2
],
[
[
2046,
2047
],
2
],
[
[
2048,
2093
],
2
],
[
[
2094,
2095
],
3
],
[
[
2096,
2110
],
2
],
[
2111,
3
],
[
[
2112,
2139
],
2
],
[
[
2140,
2141
],
3
],
[
2142,
2
],
[
2143,
3
],
[
[
2144,
2154
],
2
],
[
[
2155,
2207
],
3
],
[
2208,
2
],
[
2209,
2
],
[
[
2210,
2220
],
2
],
[
[
2221,
2226
],
2
],
[
[
2227,
2228
],
2
],
[
2229,
3
],
[
[
2230,
2237
],
2
],
[
[
2238,
2247
],
2
],
[
[
2248,
2258
],
3
],
[
2259,
2
],
[
[
2260,
2273
],
2
],
[
2274,
3
],
[
2275,
2
],
[
[
2276,
2302
],
2
],
[
2303,
2
],
[
2304,
2
],
[
[
2305,
2307
],
2
],
[
2308,
2
],
[
[
2309,
2361
],
2
],
[
[
2362,
2363
],
2
],
[
[
2364,
2381
],
2
],
[
2382,
2
],
[
2383,
2
],
[
[
2384,
2388
],
2
],
[
2389,
2
],
[
[
2390,
2391
],
2
],
[
2392,
1,
"à¤à¤¼"
],
[
2393,
1,
"à¤à¤¼"
],
[
2394,
1,
"à¤à¤¼"
],
[
2395,
1,
"à¤à¤¼"
],
[
2396,
1,
"ड़"
],
[
2397,
1,
"ढ़"
],
[
2398,
1,
"फ़"
],
[
2399,
1,
"य़"
],
[
[
2400,
2403
],
2
],
[
[
2404,
2405
],
2
],
[
[
2406,
2415
],
2
],
[
2416,
2
],
[
[
2417,
2418
],
2
],
[
[
2419,
2423
],
2
],
[
2424,
2
],
[
[
2425,
2426
],
2
],
[
[
2427,
2428
],
2
],
[
2429,
2
],
[
[
2430,
2431
],
2
],
[
2432,
2
],
[
[
2433,
2435
],
2
],
[
2436,
3
],
[
[
2437,
2444
],
2
],
[
[
2445,
2446
],
3
],
[
[
2447,
2448
],
2
],
[
[
2449,
2450
],
3
],
[
[
2451,
2472
],
2
],
[
2473,
3
],
[
[
2474,
2480
],
2
],
[
2481,
3
],
[
2482,
2
],
[
[
2483,
2485
],
3
],
[
[
2486,
2489
],
2
],
[
[
2490,
2491
],
3
],
[
2492,
2
],
[
2493,
2
],
[
[
2494,
2500
],
2
],
[
[
2501,
2502
],
3
],
[
[
2503,
2504
],
2
],
[
[
2505,
2506
],
3
],
[
[
2507,
2509
],
2
],
[
2510,
2
],
[
[
2511,
2518
],
3
],
[
2519,
2
],
[
[
2520,
2523
],
3
],
[
2524,
1,
"ড়"
],
[
2525,
1,
"ঢ়"
],
[
2526,
3
],
[
2527,
1,
"য়"
],
[
[
2528,
2531
],
2
],
[
[
2532,
2533
],
3
],
[
[
2534,
2545
],
2
],
[
[
2546,
2554
],
2
],
[
2555,
2
],
[
2556,
2
],
[
2557,
2
],
[
2558,
2
],
[
[
2559,
2560
],
3
],
[
2561,
2
],
[
2562,
2
],
[
2563,
2
],
[
2564,
3
],
[
[
2565,
2570
],
2
],
[
[
2571,
2574
],
3
],
[
[
2575,
2576
],
2
],
[
[
2577,
2578
],
3
],
[
[
2579,
2600
],
2
],
[
2601,
3
],
[
[
2602,
2608
],
2
],
[
2609,
3
],
[
2610,
2
],
[
2611,
1,
"ਲ਼"
],
[
2612,
3
],
[
2613,
2
],
[
2614,
1,
"ਸ਼"
],
[
2615,
3
],
[
[
2616,
2617
],
2
],
[
[
2618,
2619
],
3
],
[
2620,
2
],
[
2621,
3
],
[
[
2622,
2626
],
2
],
[
[
2627,
2630
],
3
],
[
[
2631,
2632
],
2
],
[
[
2633,
2634
],
3
],
[
[
2635,
2637
],
2
],
[
[
2638,
2640
],
3
],
[
2641,
2
],
[
[
2642,
2648
],
3
],
[
2649,
1,
"à¨à¨¼"
],
[
2650,
1,
"à¨à¨¼"
],
[
2651,
1,
"à¨à¨¼"
],
[
2652,
2
],
[
2653,
3
],
[
2654,
1,
"ਫ਼"
],
[
[
2655,
2661
],
3
],
[
[
2662,
2676
],
2
],
[
2677,
2
],
[
2678,
2
],
[
[
2679,
2688
],
3
],
[
[
2689,
2691
],
2
],
[
2692,
3
],
[
[
2693,
2699
],
2
],
[
2700,
2
],
[
2701,
2
],
[
2702,
3
],
[
[
2703,
2705
],
2
],
[
2706,
3
],
[
[
2707,
2728
],
2
],
[
2729,
3
],
[
[
2730,
2736
],
2
],
[
2737,
3
],
[
[
2738,
2739
],
2
],
[
2740,
3
],
[
[
2741,
2745
],
2
],
[
[
2746,
2747
],
3
],
[
[
2748,
2757
],
2
],
[
2758,
3
],
[
[
2759,
2761
],
2
],
[
2762,
3
],
[
[
2763,
2765
],
2
],
[
[
2766,
2767
],
3
],
[
2768,
2
],
[
[
2769,
2783
],
3
],
[
2784,
2
],
[
[
2785,
2787
],
2
],
[
[
2788,
2789
],
3
],
[
[
2790,
2799
],
2
],
[
2800,
2
],
[
2801,
2
],
[
[
2802,
2808
],
3
],
[
2809,
2
],
[
[
2810,
2815
],
2
],
[
2816,
3
],
[
[
2817,
2819
],
2
],
[
2820,
3
],
[
[
2821,
2828
],
2
],
[
[
2829,
2830
],
3
],
[
[
2831,
2832
],
2
],
[
[
2833,
2834
],
3
],
[
[
2835,
2856
],
2
],
[
2857,
3
],
[
[
2858,
2864
],
2
],
[
2865,
3
],
[
[
2866,
2867
],
2
],
[
2868,
3
],
[
2869,
2
],
[
[
2870,
2873
],
2
],
[
[
2874,
2875
],
3
],
[
[
2876,
2883
],
2
],
[
2884,
2
],
[
[
2885,
2886
],
3
],
[
[
2887,
2888
],
2
],
[
[
2889,
2890
],
3
],
[
[
2891,
2893
],
2
],
[
[
2894,
2900
],
3
],
[
2901,
2
],
[
[
2902,
2903
],
2
],
[
[
2904,
2907
],
3
],
[
2908,
1,
"ଡ଼"
],
[
2909,
1,
"ଢ଼"
],
[
2910,
3
],
[
[
2911,
2913
],
2
],
[
[
2914,
2915
],
2
],
[
[
2916,
2917
],
3
],
[
[
2918,
2927
],
2
],
[
2928,
2
],
[
2929,
2
],
[
[
2930,
2935
],
2
],
[
[
2936,
2945
],
3
],
[
[
2946,
2947
],
2
],
[
2948,
3
],
[
[
2949,
2954
],
2
],
[
[
2955,
2957
],
3
],
[
[
2958,
2960
],
2
],
[
2961,
3
],
[
[
2962,
2965
],
2
],
[
[
2966,
2968
],
3
],
[
[
2969,
2970
],
2
],
[
2971,
3
],
[
2972,
2
],
[
2973,
3
],
[
[
2974,
2975
],
2
],
[
[
2976,
2978
],
3
],
[
[
2979,
2980
],
2
],
[
[
2981,
2983
],
3
],
[
[
2984,
2986
],
2
],
[
[
2987,
2989
],
3
],
[
[
2990,
2997
],
2
],
[
2998,
2
],
[
[
2999,
3001
],
2
],
[
[
3002,
3005
],
3
],
[
[
3006,
3010
],
2
],
[
[
3011,
3013
],
3
],
[
[
3014,
3016
],
2
],
[
3017,
3
],
[
[
3018,
3021
],
2
],
[
[
3022,
3023
],
3
],
[
3024,
2
],
[
[
3025,
3030
],
3
],
[
3031,
2
],
[
[
3032,
3045
],
3
],
[
3046,
2
],
[
[
3047,
3055
],
2
],
[
[
3056,
3058
],
2
],
[
[
3059,
3066
],
2
],
[
[
3067,
3071
],
3
],
[
3072,
2
],
[
[
3073,
3075
],
2
],
[
3076,
2
],
[
[
3077,
3084
],
2
],
[
3085,
3
],
[
[
3086,
3088
],
2
],
[
3089,
3
],
[
[
3090,
3112
],
2
],
[
3113,
3
],
[
[
3114,
3123
],
2
],
[
3124,
2
],
[
[
3125,
3129
],
2
],
[
[
3130,
3132
],
3
],
[
3133,
2
],
[
[
3134,
3140
],
2
],
[
3141,
3
],
[
[
3142,
3144
],
2
],
[
3145,
3
],
[
[
3146,
3149
],
2
],
[
[
3150,
3156
],
3
],
[
[
3157,
3158
],
2
],
[
3159,
3
],
[
[
3160,
3161
],
2
],
[
3162,
2
],
[
[
3163,
3167
],
3
],
[
[
3168,
3169
],
2
],
[
[
3170,
3171
],
2
],
[
[
3172,
3173
],
3
],
[
[
3174,
3183
],
2
],
[
[
3184,
3190
],
3
],
[
3191,
2
],
[
[
3192,
3199
],
2
],
[
3200,
2
],
[
3201,
2
],
[
[
3202,
3203
],
2
],
[
3204,
2
],
[
[
3205,
3212
],
2
],
[
3213,
3
],
[
[
3214,
3216
],
2
],
[
3217,
3
],
[
[
3218,
3240
],
2
],
[
3241,
3
],
[
[
3242,
3251
],
2
],
[
3252,
3
],
[
[
3253,
3257
],
2
],
[
[
3258,
3259
],
3
],
[
[
3260,
3261
],
2
],
[
[
3262,
3268
],
2
],
[
3269,
3
],
[
[
3270,
3272
],
2
],
[
3273,
3
],
[
[
3274,
3277
],
2
],
[
[
3278,
3284
],
3
],
[
[
3285,
3286
],
2
],
[
[
3287,
3293
],
3
],
[
3294,
2
],
[
3295,
3
],
[
[
3296,
3297
],
2
],
[
[
3298,
3299
],
2
],
[
[
3300,
3301
],
3
],
[
[
3302,
3311
],
2
],
[
3312,
3
],
[
[
3313,
3314
],
2
],
[
[
3315,
3327
],
3
],
[
3328,
2
],
[
3329,
2
],
[
[
3330,
3331
],
2
],
[
3332,
2
],
[
[
3333,
3340
],
2
],
[
3341,
3
],
[
[
3342,
3344
],
2
],
[
3345,
3
],
[
[
3346,
3368
],
2
],
[
3369,
2
],
[
[
3370,
3385
],
2
],
[
3386,
2
],
[
[
3387,
3388
],
2
],
[
3389,
2
],
[
[
3390,
3395
],
2
],
[
3396,
2
],
[
3397,
3
],
[
[
3398,
3400
],
2
],
[
3401,
3
],
[
[
3402,
3405
],
2
],
[
3406,
2
],
[
3407,
2
],
[
[
3408,
3411
],
3
],
[
[
3412,
3414
],
2
],
[
3415,
2
],
[
[
3416,
3422
],
2
],
[
3423,
2
],
[
[
3424,
3425
],
2
],
[
[
3426,
3427
],
2
],
[
[
3428,
3429
],
3
],
[
[
3430,
3439
],
2
],
[
[
3440,
3445
],
2
],
[
[
3446,
3448
],
2
],
[
3449,
2
],
[
[
3450,
3455
],
2
],
[
3456,
3
],
[
3457,
2
],
[
[
3458,
3459
],
2
],
[
3460,
3
],
[
[
3461,
3478
],
2
],
[
[
3479,
3481
],
3
],
[
[
3482,
3505
],
2
],
[
3506,
3
],
[
[
3507,
3515
],
2
],
[
3516,
3
],
[
3517,
2
],
[
[
3518,
3519
],
3
],
[
[
3520,
3526
],
2
],
[
[
3527,
3529
],
3
],
[
3530,
2
],
[
[
3531,
3534
],
3
],
[
[
3535,
3540
],
2
],
[
3541,
3
],
[
3542,
2
],
[
3543,
3
],
[
[
3544,
3551
],
2
],
[
[
3552,
3557
],
3
],
[
[
3558,
3567
],
2
],
[
[
3568,
3569
],
3
],
[
[
3570,
3571
],
2
],
[
3572,
2
],
[
[
3573,
3584
],
3
],
[
[
3585,
3634
],
2
],
[
3635,
1,
"à¹à¸²"
],
[
[
3636,
3642
],
2
],
[
[
3643,
3646
],
3
],
[
3647,
2
],
[
[
3648,
3662
],
2
],
[
3663,
2
],
[
[
3664,
3673
],
2
],
[
[
3674,
3675
],
2
],
[
[
3676,
3712
],
3
],
[
[
3713,
3714
],
2
],
[
3715,
3
],
[
3716,
2
],
[
3717,
3
],
[
3718,
2
],
[
[
3719,
3720
],
2
],
[
3721,
2
],
[
3722,
2
],
[
3723,
3
],
[
3724,
2
],
[
3725,
2
],
[
[
3726,
3731
],
2
],
[
[
3732,
3735
],
2
],
[
3736,
2
],
[
[
3737,
3743
],
2
],
[
3744,
2
],
[
[
3745,
3747
],
2
],
[
3748,
3
],
[
3749,
2
],
[
3750,
3
],
[
3751,
2
],
[
[
3752,
3753
],
2
],
[
[
3754,
3755
],
2
],
[
3756,
2
],
[
[
3757,
3762
],
2
],
[
3763,
1,
"à»àº²"
],
[
[
3764,
3769
],
2
],
[
3770,
2
],
[
[
3771,
3773
],
2
],
[
[
3774,
3775
],
3
],
[
[
3776,
3780
],
2
],
[
3781,
3
],
[
3782,
2
],
[
3783,
3
],
[
[
3784,
3789
],
2
],
[
[
3790,
3791
],
3
],
[
[
3792,
3801
],
2
],
[
[
3802,
3803
],
3
],
[
3804,
1,
"ຫàº"
],
[
3805,
1,
"ຫມ"
],
[
[
3806,
3807
],
2
],
[
[
3808,
3839
],
3
],
[
3840,
2
],
[
[
3841,
3850
],
2
],
[
3851,
2
],
[
3852,
1,
"à¼"
],
[
[
3853,
3863
],
2
],
[
[
3864,
3865
],
2
],
[
[
3866,
3871
],
2
],
[
[
3872,
3881
],
2
],
[
[
3882,
3892
],
2
],
[
3893,
2
],
[
3894,
2
],
[
3895,
2
],
[
3896,
2
],
[
3897,
2
],
[
[
3898,
3901
],
2
],
[
[
3902,
3906
],
2
],
[
3907,
1,
"à½à¾·"
],
[
[
3908,
3911
],
2
],
[
3912,
3
],
[
[
3913,
3916
],
2
],
[
3917,
1,
"à½à¾·"
],
[
[
3918,
3921
],
2
],
[
3922,
1,
"à½à¾·"
],
[
[
3923,
3926
],
2
],
[
3927,
1,
"à½à¾·"
],
[
[
3928,
3931
],
2
],
[
3932,
1,
"à½à¾·"
],
[
[
3933,
3944
],
2
],
[
3945,
1,
"à½à¾µ"
],
[
3946,
2
],
[
[
3947,
3948
],
2
],
[
[
3949,
3952
],
3
],
[
[
3953,
3954
],
2
],
[
3955,
1,
"ཱི"
],
[
3956,
2
],
[
3957,
1,
"ཱུ"
],
[
3958,
1,
"ྲà¾"
],
[
3959,
1,
"ྲཱà¾"
],
[
3960,
1,
"ླà¾"
],
[
3961,
1,
"ླཱà¾"
],
[
[
3962,
3968
],
2
],
[
3969,
1,
"ཱà¾"
],
[
[
3970,
3972
],
2
],
[
3973,
2
],
[
[
3974,
3979
],
2
],
[
[
3980,
3983
],
2
],
[
[
3984,
3986
],
2
],
[
3987,
1,
"à¾à¾·"
],
[
[
3988,
3989
],
2
],
[
3990,
2
],
[
3991,
2
],
[
3992,
3
],
[
[
3993,
3996
],
2
],
[
3997,
1,
"à¾à¾·"
],
[
[
3998,
4001
],
2
],
[
4002,
1,
"ྡྷ"
],
[
[
4003,
4006
],
2
],
[
4007,
1,
"ྦྷ"
],
[
[
4008,
4011
],
2
],
[
4012,
1,
"ྫྷ"
],
[
4013,
2
],
[
[
4014,
4016
],
2
],
[
[
4017,
4023
],
2
],
[
4024,
2
],
[
4025,
1,
"à¾à¾µ"
],
[
[
4026,
4028
],
2
],
[
4029,
3
],
[
[
4030,
4037
],
2
],
[
4038,
2
],
[
[
4039,
4044
],
2
],
[
4045,
3
],
[
4046,
2
],
[
4047,
2
],
[
[
4048,
4049
],
2
],
[
[
4050,
4052
],
2
],
[
[
4053,
4056
],
2
],
[
[
4057,
4058
],
2
],
[
[
4059,
4095
],
3
],
[
[
4096,
4129
],
2
],
[
4130,
2
],
[
[
4131,
4135
],
2
],
[
4136,
2
],
[
[
4137,
4138
],
2
],
[
4139,
2
],
[
[
4140,
4146
],
2
],
[
[
4147,
4149
],
2
],
[
[
4150,
4153
],
2
],
[
[
4154,
4159
],
2
],
[
[
4160,
4169
],
2
],
[
[
4170,
4175
],
2
],
[
[
4176,
4185
],
2
],
[
[
4186,
4249
],
2
],
[
[
4250,
4253
],
2
],
[
[
4254,
4255
],
2
],
[
[
4256,
4293
],
3
],
[
4294,
3
],
[
4295,
1,
"â´§"
],
[
[
4296,
4300
],
3
],
[
4301,
1,
"â´"
],
[
[
4302,
4303
],
3
],
[
[
4304,
4342
],
2
],
[
[
4343,
4344
],
2
],
[
[
4345,
4346
],
2
],
[
4347,
2
],
[
4348,
1,
"á"
],
[
[
4349,
4351
],
2
],
[
[
4352,
4441
],
2
],
[
[
4442,
4446
],
2
],
[
[
4447,
4448
],
3
],
[
[
4449,
4514
],
2
],
[
[
4515,
4519
],
2
],
[
[
4520,
4601
],
2
],
[
[
4602,
4607
],
2
],
[
[
4608,
4614
],
2
],
[
4615,
2
],
[
[
4616,
4678
],
2
],
[
4679,
2
],
[
4680,
2
],
[
4681,
3
],
[
[
4682,
4685
],
2
],
[
[
4686,
4687
],
3
],
[
[
4688,
4694
],
2
],
[
4695,
3
],
[
4696,
2
],
[
4697,
3
],
[
[
4698,
4701
],
2
],
[
[
4702,
4703
],
3
],
[
[
4704,
4742
],
2
],
[
4743,
2
],
[
4744,
2
],
[
4745,
3
],
[
[
4746,
4749
],
2
],
[
[
4750,
4751
],
3
],
[
[
4752,
4782
],
2
],
[
4783,
2
],
[
4784,
2
],
[
4785,
3
],
[
[
4786,
4789
],
2
],
[
[
4790,
4791
],
3
],
[
[
4792,
4798
],
2
],
[
4799,
3
],
[
4800,
2
],
[
4801,
3
],
[
[
4802,
4805
],
2
],
[
[
4806,
4807
],
3
],
[
[
4808,
4814
],
2
],
[
4815,
2
],
[
[
4816,
4822
],
2
],
[
4823,
3
],
[
[
4824,
4846
],
2
],
[
4847,
2
],
[
[
4848,
4878
],
2
],
[
4879,
2
],
[
4880,
2
],
[
4881,
3
],
[
[
4882,
4885
],
2
],
[
[
4886,
4887
],
3
],
[
[
4888,
4894
],
2
],
[
4895,
2
],
[
[
4896,
4934
],
2
],
[
4935,
2
],
[
[
4936,
4954
],
2
],
[
[
4955,
4956
],
3
],
[
[
4957,
4958
],
2
],
[
4959,
2
],
[
4960,
2
],
[
[
4961,
4988
],
2
],
[
[
4989,
4991
],
3
],
[
[
4992,
5007
],
2
],
[
[
5008,
5017
],
2
],
[
[
5018,
5023
],
3
],
[
[
5024,
5108
],
2
],
[
5109,
2
],
[
[
5110,
5111
],
3
],
[
5112,
1,
"á°"
],
[
5113,
1,
"á±"
],
[
5114,
1,
"á²"
],
[
5115,
1,
"á³"
],
[
5116,
1,
"á´"
],
[
5117,
1,
"áµ"
],
[
[
5118,
5119
],
3
],
[
5120,
2
],
[
[
5121,
5740
],
2
],
[
[
5741,
5742
],
2
],
[
[
5743,
5750
],
2
],
[
[
5751,
5759
],
2
],
[
5760,
3
],
[
[
5761,
5786
],
2
],
[
[
5787,
5788
],
2
],
[
[
5789,
5791
],
3
],
[
[
5792,
5866
],
2
],
[
[
5867,
5872
],
2
],
[
[
5873,
5880
],
2
],
[
[
5881,
5887
],
3
],
[
[
5888,
5900
],
2
],
[
5901,
3
],
[
[
5902,
5908
],
2
],
[
[
5909,
5919
],
3
],
[
[
5920,
5940
],
2
],
[
[
5941,
5942
],
2
],
[
[
5943,
5951
],
3
],
[
[
5952,
5971
],
2
],
[
[
5972,
5983
],
3
],
[
[
5984,
5996
],
2
],
[
5997,
3
],
[
[
5998,
6000
],
2
],
[
6001,
3
],
[
[
6002,
6003
],
2
],
[
[
6004,
6015
],
3
],
[
[
6016,
6067
],
2
],
[
[
6068,
6069
],
3
],
[
[
6070,
6099
],
2
],
[
[
6100,
6102
],
2
],
[
6103,
2
],
[
[
6104,
6107
],
2
],
[
6108,
2
],
[
6109,
2
],
[
[
6110,
6111
],
3
],
[
[
6112,
6121
],
2
],
[
[
6122,
6127
],
3
],
[
[
6128,
6137
],
2
],
[
[
6138,
6143
],
3
],
[
[
6144,
6149
],
2
],
[
6150,
3
],
[
[
6151,
6154
],
2
],
[
[
6155,
6157
],
7
],
[
6158,
3
],
[
6159,
3
],
[
[
6160,
6169
],
2
],
[
[
6170,
6175
],
3
],
[
[
6176,
6263
],
2
],
[
6264,
2
],
[
[
6265,
6271
],
3
],
[
[
6272,
6313
],
2
],
[
6314,
2
],
[
[
6315,
6319
],
3
],
[
[
6320,
6389
],
2
],
[
[
6390,
6399
],
3
],
[
[
6400,
6428
],
2
],
[
[
6429,
6430
],
2
],
[
6431,
3
],
[
[
6432,
6443
],
2
],
[
[
6444,
6447
],
3
],
[
[
6448,
6459
],
2
],
[
[
6460,
6463
],
3
],
[
6464,
2
],
[
[
6465,
6467
],
3
],
[
[
6468,
6469
],
2
],
[
[
6470,
6509
],
2
],
[
[
6510,
6511
],
3
],
[
[
6512,
6516
],
2
],
[
[
6517,
6527
],
3
],
[
[
6528,
6569
],
2
],
[
[
6570,
6571
],
2
],
[
[
6572,
6575
],
3
],
[
[
6576,
6601
],
2
],
[
[
6602,
6607
],
3
],
[
[
6608,
6617
],
2
],
[
6618,
2
],
[
[
6619,
6621
],
3
],
[
[
6622,
6623
],
2
],
[
[
6624,
6655
],
2
],
[
[
6656,
6683
],
2
],
[
[
6684,
6685
],
3
],
[
[
6686,
6687
],
2
],
[
[
6688,
6750
],
2
],
[
6751,
3
],
[
[
6752,
6780
],
2
],
[
[
6781,
6782
],
3
],
[
[
6783,
6793
],
2
],
[
[
6794,
6799
],
3
],
[
[
6800,
6809
],
2
],
[
[
6810,
6815
],
3
],
[
[
6816,
6822
],
2
],
[
6823,
2
],
[
[
6824,
6829
],
2
],
[
[
6830,
6831
],
3
],
[
[
6832,
6845
],
2
],
[
6846,
2
],
[
[
6847,
6848
],
2
],
[
[
6849,
6911
],
3
],
[
[
6912,
6987
],
2
],
[
[
6988,
6991
],
3
],
[
[
6992,
7001
],
2
],
[
[
7002,
7018
],
2
],
[
[
7019,
7027
],
2
],
[
[
7028,
7036
],
2
],
[
[
7037,
7039
],
3
],
[
[
7040,
7082
],
2
],
[
[
7083,
7085
],
2
],
[
[
7086,
7097
],
2
],
[
[
7098,
7103
],
2
],
[
[
7104,
7155
],
2
],
[
[
7156,
7163
],
3
],
[
[
7164,
7167
],
2
],
[
[
7168,
7223
],
2
],
[
[
7224,
7226
],
3
],
[
[
7227,
7231
],
2
],
[
[
7232,
7241
],
2
],
[
[
7242,
7244
],
3
],
[
[
7245,
7293
],
2
],
[
[
7294,
7295
],
2
],
[
7296,
1,
"в"
],
[
7297,
1,
"д"
],
[
7298,
1,
"о"
],
[
7299,
1,
"Ñ"
],
[
[
7300,
7301
],
1,
"Ñ"
],
[
7302,
1,
"Ñ"
],
[
7303,
1,
"Ñ£"
],
[
7304,
1,
"ê"
],
[
[
7305,
7311
],
3
],
[
7312,
1,
"á"
],
[
7313,
1,
"á"
],
[
7314,
1,
"á"
],
[
7315,
1,
"á"
],
[
7316,
1,
"á"
],
[
7317,
1,
"á"
],
[
7318,
1,
"á"
],
[
7319,
1,
"á"
],
[
7320,
1,
"á"
],
[
7321,
1,
"á"
],
[
7322,
1,
"á"
],
[
7323,
1,
"á"
],
[
7324,
1,
"á"
],
[
7325,
1,
"á"
],
[
7326,
1,
"á"
],
[
7327,
1,
"á"
],
[
7328,
1,
"á "
],
[
7329,
1,
"á¡"
],
[
7330,
1,
"á¢"
],
[
7331,
1,
"á£"
],
[
7332,
1,
"á¤"
],
[
7333,
1,
"á¥"
],
[
7334,
1,
"á¦"
],
[
7335,
1,
"á§"
],
[
7336,
1,
"á¨"
],
[
7337,
1,
"á©"
],
[
7338,
1,
"áª"
],
[
7339,
1,
"á«"
],
[
7340,
1,
"á¬"
],
[
7341,
1,
"á"
],
[
7342,
1,
"á®"
],
[
7343,
1,
"á¯"
],
[
7344,
1,
"á°"
],
[
7345,
1,
"á±"
],
[
7346,
1,
"á²"
],
[
7347,
1,
"á³"
],
[
7348,
1,
"á´"
],
[
7349,
1,
"áµ"
],
[
7350,
1,
"á¶"
],
[
7351,
1,
"á·"
],
[
7352,
1,
"á¸"
],
[
7353,
1,
"á¹"
],
[
7354,
1,
"áº"
],
[
[
7355,
7356
],
3
],
[
7357,
1,
"á½"
],
[
7358,
1,
"á¾"
],
[
7359,
1,
"á¿"
],
[
[
7360,
7367
],
2
],
[
[
7368,
7375
],
3
],
[
[
7376,
7378
],
2
],
[
7379,
2
],
[
[
7380,
7410
],
2
],
[
[
7411,
7414
],
2
],
[
7415,
2
],
[
[
7416,
7417
],
2
],
[
7418,
2
],
[
[
7419,
7423
],
3
],
[
[
7424,
7467
],
2
],
[
7468,
1,
"a"
],
[
7469,
1,
"æ"
],
[
7470,
1,
"b"
],
[
7471,
2
],
[
7472,
1,
"d"
],
[
7473,
1,
"e"
],
[
7474,
1,
"Ç"
],
[
7475,
1,
"g"
],
[
7476,
1,
"h"
],
[
7477,
1,
"i"
],
[
7478,
1,
"j"
],
[
7479,
1,
"k"
],
[
7480,
1,
"l"
],
[
7481,
1,
"m"
],
[
7482,
1,
"n"
],
[
7483,
2
],
[
7484,
1,
"o"
],
[
7485,
1,
"È£"
],
[
7486,
1,
"p"
],
[
7487,
1,
"r"
],
[
7488,
1,
"t"
],
[
7489,
1,
"u"
],
[
7490,
1,
"w"
],
[
7491,
1,
"a"
],
[
7492,
1,
"É"
],
[
7493,
1,
"É"
],
[
7494,
1,
"á´"
],
[
7495,
1,
"b"
],
[
7496,
1,
"d"
],
[
7497,
1,
"e"
],
[
7498,
1,
"É"
],
[
7499,
1,
"É"
],
[
7500,
1,
"É"
],
[
7501,
1,
"g"
],
[
7502,
2
],
[
7503,
1,
"k"
],
[
7504,
1,
"m"
],
[
7505,
1,
"Å"
],
[
7506,
1,
"o"
],
[
7507,
1,
"É"
],
[
7508,
1,
"á´"
],
[
7509,
1,
"á´"
],
[
7510,
1,
"p"
],
[
7511,
1,
"t"
],
[
7512,
1,
"u"
],
[
7513,
1,
"á´"
],
[
7514,
1,
"ɯ"
],
[
7515,
1,
"v"
],
[
7516,
1,
"á´¥"
],
[
7517,
1,
"β"
],
[
7518,
1,
"γ"
],
[
7519,
1,
"δ"
],
[
7520,
1,
"Ï"
],
[
7521,
1,
"Ï"
],
[
7522,
1,
"i"
],
[
7523,
1,
"r"
],
[
7524,
1,
"u"
],
[
7525,
1,
"v"
],
[
7526,
1,
"β"
],
[
7527,
1,
"γ"
],
[
7528,
1,
"Ï"
],
[
7529,
1,
"Ï"
],
[
7530,
1,
"Ï"
],
[
7531,
2
],
[
[
7532,
7543
],
2
],
[
7544,
1,
"н"
],
[
[
7545,
7578
],
2
],
[
7579,
1,
"É"
],
[
7580,
1,
"c"
],
[
7581,
1,
"É"
],
[
7582,
1,
"ð"
],
[
7583,
1,
"É"
],
[
7584,
1,
"f"
],
[
7585,
1,
"É"
],
[
7586,
1,
"É¡"
],
[
7587,
1,
"É¥"
],
[
7588,
1,
"ɨ"
],
[
7589,
1,
"É©"
],
[
7590,
1,
"ɪ"
],
[
7591,
1,
"áµ»"
],
[
7592,
1,
"Ê"
],
[
7593,
1,
"É"
],
[
7594,
1,
"á¶
"
],
[
7595,
1,
"Ê"
],
[
7596,
1,
"ɱ"
],
[
7597,
1,
"ɰ"
],
[
7598,
1,
"ɲ"
],
[
7599,
1,
"ɳ"
],
[
7600,
1,
"É´"
],
[
7601,
1,
"ɵ"
],
[
7602,
1,
"ɸ"
],
[
7603,
1,
"Ê"
],
[
7604,
1,
"Ê"
],
[
7605,
1,
"Æ«"
],
[
7606,
1,
"Ê"
],
[
7607,
1,
"Ê"
],
[
7608,
1,
"á´"
],
[
7609,
1,
"Ê"
],
[
7610,
1,
"Ê"
],
[
7611,
1,
"z"
],
[
7612,
1,
"Ê"
],
[
7613,
1,
"Ê"
],
[
7614,
1,
"Ê"
],
[
7615,
1,
"θ"
],
[
[
7616,
7619
],
2
],
[
[
7620,
7626
],
2
],
[
[
7627,
7654
],
2
],
[
[
7655,
7669
],
2
],
[
[
7670,
7673
],
2
],
[
7674,
3
],
[
7675,
2
],
[
7676,
2
],
[
7677,
2
],
[
[
7678,
7679
],
2
],
[
7680,
1,
"á¸"
],
[
7681,
2
],
[
7682,
1,
"á¸"
],
[
7683,
2
],
[
7684,
1,
"á¸
"
],
[
7685,
2
],
[
7686,
1,
"á¸"
],
[
7687,
2
],
[
7688,
1,
"á¸"
],
[
7689,
2
],
[
7690,
1,
"á¸"
],
[
7691,
2
],
[
7692,
1,
"á¸"
],
[
7693,
2
],
[
7694,
1,
"á¸"
],
[
7695,
2
],
[
7696,
1,
"á¸"
],
[
7697,
2
],
[
7698,
1,
"á¸"
],
[
7699,
2
],
[
7700,
1,
"á¸"
],
[
7701,
2
],
[
7702,
1,
"á¸"
],
[
7703,
2
],
[
7704,
1,
"á¸"
],
[
7705,
2
],
[
7706,
1,
"á¸"
],
[
7707,
2
],
[
7708,
1,
"á¸"
],
[
7709,
2
],
[
7710,
1,
"á¸"
],
[
7711,
2
],
[
7712,
1,
"ḡ"
],
[
7713,
2
],
[
7714,
1,
"ḣ"
],
[
7715,
2
],
[
7716,
1,
"ḥ"
],
[
7717,
2
],
[
7718,
1,
"ḧ"
],
[
7719,
2
],
[
7720,
1,
"ḩ"
],
[
7721,
2
],
[
7722,
1,
"ḫ"
],
[
7723,
2
],
[
7724,
1,
"á¸"
],
[
7725,
2
],
[
7726,
1,
"ḯ"
],
[
7727,
2
],
[
7728,
1,
"ḱ"
],
[
7729,
2
],
[
7730,
1,
"ḳ"
],
[
7731,
2
],
[
7732,
1,
"ḵ"
],
[
7733,
2
],
[
7734,
1,
"ḷ"
],
[
7735,
2
],
[
7736,
1,
"ḹ"
],
[
7737,
2
],
[
7738,
1,
"ḻ"
],
[
7739,
2
],
[
7740,
1,
"ḽ"
],
[
7741,
2
],
[
7742,
1,
"ḿ"
],
[
7743,
2
],
[
7744,
1,
"á¹"
],
[
7745,
2
],
[
7746,
1,
"á¹"
],
[
7747,
2
],
[
7748,
1,
"á¹
"
],
[
7749,
2
],
[
7750,
1,
"á¹"
],
[
7751,
2
],
[
7752,
1,
"á¹"
],
[
7753,
2
],
[
7754,
1,
"á¹"
],
[
7755,
2
],
[
7756,
1,
"á¹"
],
[
7757,
2
],
[
7758,
1,
"á¹"
],
[
7759,
2
],
[
7760,
1,
"á¹"
],
[
7761,
2
],
[
7762,
1,
"á¹"
],
[
7763,
2
],
[
7764,
1,
"á¹"
],
[
7765,
2
],
[
7766,
1,
"á¹"
],
[
7767,
2
],
[
7768,
1,
"á¹"
],
[
7769,
2
],
[
7770,
1,
"á¹"
],
[
7771,
2
],
[
7772,
1,
"á¹"
],
[
7773,
2
],
[
7774,
1,
"á¹"
],
[
7775,
2
],
[
7776,
1,
"ṡ"
],
[
7777,
2
],
[
7778,
1,
"á¹£"
],
[
7779,
2
],
[
7780,
1,
"á¹¥"
],
[
7781,
2
],
[
7782,
1,
"á¹§"
],
[
7783,
2
],
[
7784,
1,
"ṩ"
],
[
7785,
2
],
[
7786,
1,
"ṫ"
],
[
7787,
2
],
[
7788,
1,
"á¹"
],
[
7789,
2
],
[
7790,
1,
"ṯ"
],
[
7791,
2
],
[
7792,
1,
"á¹±"
],
[
7793,
2
],
[
7794,
1,
"á¹³"
],
[
7795,
2
],
[
7796,
1,
"á¹µ"
],
[
7797,
2
],
[
7798,
1,
"á¹·"
],
[
7799,
2
],
[
7800,
1,
"á¹¹"
],
[
7801,
2
],
[
7802,
1,
"á¹»"
],
[
7803,
2
],
[
7804,
1,
"á¹½"
],
[
7805,
2
],
[
7806,
1,
"ṿ"
],
[
7807,
2
],
[
7808,
1,
"áº"
],
[
7809,
2
],
[
7810,
1,
"áº"
],
[
7811,
2
],
[
7812,
1,
"áº
"
],
[
7813,
2
],
[
7814,
1,
"áº"
],
[
7815,
2
],
[
7816,
1,
"áº"
],
[
7817,
2
],
[
7818,
1,
"áº"
],
[
7819,
2
],
[
7820,
1,
"áº"
],
[
7821,
2
],
[
7822,
1,
"áº"
],
[
7823,
2
],
[
7824,
1,
"áº"
],
[
7825,
2
],
[
7826,
1,
"áº"
],
[
7827,
2
],
[
7828,
1,
"áº"
],
[
[
7829,
7833
],
2
],
[
7834,
1,
"aʾ"
],
[
7835,
1,
"ṡ"
],
[
[
7836,
7837
],
2
],
[
7838,
1,
"ss"
],
[
7839,
2
],
[
7840,
1,
"ạ"
],
[
7841,
2
],
[
7842,
1,
"ả"
],
[
7843,
2
],
[
7844,
1,
"ấ"
],
[
7845,
2
],
[
7846,
1,
"ầ"
],
[
7847,
2
],
[
7848,
1,
"ẩ"
],
[
7849,
2
],
[
7850,
1,
"ẫ"
],
[
7851,
2
],
[
7852,
1,
"áº"
],
[
7853,
2
],
[
7854,
1,
"ắ"
],
[
7855,
2
],
[
7856,
1,
"ằ"
],
[
7857,
2
],
[
7858,
1,
"ẳ"
],
[
7859,
2
],
[
7860,
1,
"ẵ"
],
[
7861,
2
],
[
7862,
1,
"ặ"
],
[
7863,
2
],
[
7864,
1,
"ẹ"
],
[
7865,
2
],
[
7866,
1,
"ẻ"
],
[
7867,
2
],
[
7868,
1,
"ẽ"
],
[
7869,
2
],
[
7870,
1,
"ế"
],
[
7871,
2
],
[
7872,
1,
"á»"
],
[
7873,
2
],
[
7874,
1,
"á»"
],
[
7875,
2
],
[
7876,
1,
"á»
"
],
[
7877,
2
],
[
7878,
1,
"á»"
],
[
7879,
2
],
[
7880,
1,
"á»"
],
[
7881,
2
],
[
7882,
1,
"á»"
],
[
7883,
2
],
[
7884,
1,
"á»"
],
[
7885,
2
],
[
7886,
1,
"á»"
],
[
7887,
2
],
[
7888,
1,
"á»"
],
[
7889,
2
],
[
7890,
1,
"á»"
],
[
7891,
2
],
[
7892,
1,
"á»"
],
[
7893,
2
],
[
7894,
1,
"á»"
],
[
7895,
2
],
[
7896,
1,
"á»"
],
[
7897,
2
],
[
7898,
1,
"á»"
],
[
7899,
2
],
[
7900,
1,
"á»"
],
[
7901,
2
],
[
7902,
1,
"á»"
],
[
7903,
2
],
[
7904,
1,
"ỡ"
],
[
7905,
2
],
[
7906,
1,
"ợ"
],
[
7907,
2
],
[
7908,
1,
"ụ"
],
[
7909,
2
],
[
7910,
1,
"á»§"
],
[
7911,
2
],
[
7912,
1,
"ứ"
],
[
7913,
2
],
[
7914,
1,
"ừ"
],
[
7915,
2
],
[
7916,
1,
"á»"
],
[
7917,
2
],
[
7918,
1,
"ữ"
],
[
7919,
2
],
[
7920,
1,
"á»±"
],
[
7921,
2
],
[
7922,
1,
"ỳ"
],
[
7923,
2
],
[
7924,
1,
"ỵ"
],
[
7925,
2
],
[
7926,
1,
"á»·"
],
[
7927,
2
],
[
7928,
1,
"ỹ"
],
[
7929,
2
],
[
7930,
1,
"á»»"
],
[
7931,
2
],
[
7932,
1,
"ỽ"
],
[
7933,
2
],
[
7934,
1,
"ỿ"
],
[
7935,
2
],
[
[
7936,
7943
],
2
],
[
7944,
1,
"á¼"
],
[
7945,
1,
"á¼"
],
[
7946,
1,
"á¼"
],
[
7947,
1,
"á¼"
],
[
7948,
1,
"á¼"
],
[
7949,
1,
"á¼
"
],
[
7950,
1,
"á¼"
],
[
7951,
1,
"á¼"
],
[
[
7952,
7957
],
2
],
[
[
7958,
7959
],
3
],
[
7960,
1,
"á¼"
],
[
7961,
1,
"á¼"
],
[
7962,
1,
"á¼"
],
[
7963,
1,
"á¼"
],
[
7964,
1,
"á¼"
],
[
7965,
1,
"á¼"
],
[
[
7966,
7967
],
3
],
[
[
7968,
7975
],
2
],
[
7976,
1,
"á¼ "
],
[
7977,
1,
"ἡ"
],
[
7978,
1,
"á¼¢"
],
[
7979,
1,
"á¼£"
],
[
7980,
1,
"ἤ"
],
[
7981,
1,
"á¼¥"
],
[
7982,
1,
"ἦ"
],
[
7983,
1,
"á¼§"
],
[
[
7984,
7991
],
2
],
[
7992,
1,
"á¼°"
],
[
7993,
1,
"á¼±"
],
[
7994,
1,
"á¼²"
],
[
7995,
1,
"á¼³"
],
[
7996,
1,
"á¼´"
],
[
7997,
1,
"á¼µ"
],
[
7998,
1,
"á¼¶"
],
[
7999,
1,
"á¼·"
],
[
[
8000,
8005
],
2
],
[
[
8006,
8007
],
3
],
[
8008,
1,
"á½"
],
[
8009,
1,
"á½"
],
[
8010,
1,
"á½"
],
[
8011,
1,
"á½"
],
[
8012,
1,
"á½"
],
[
8013,
1,
"á½
"
],
[
[
8014,
8015
],
3
],
[
[
8016,
8023
],
2
],
[
8024,
3
],
[
8025,
1,
"á½"
],
[
8026,
3
],
[
8027,
1,
"á½"
],
[
8028,
3
],
[
8029,
1,
"á½"
],
[
8030,
3
],
[
8031,
1,
"á½"
],
[
[
8032,
8039
],
2
],
[
8040,
1,
"á½ "
],
[
8041,
1,
"ὡ"
],
[
8042,
1,
"á½¢"
],
[
8043,
1,
"á½£"
],
[
8044,
1,
"ὤ"
],
[
8045,
1,
"á½¥"
],
[
8046,
1,
"ὦ"
],
[
8047,
1,
"á½§"
],
[
8048,
2
],
[
8049,
1,
"ά"
],
[
8050,
2
],
[
8051,
1,
"Î"
],
[
8052,
2
],
[
8053,
1,
"ή"
],
[
8054,
2
],
[
8055,
1,
"ί"
],
[
8056,
2
],
[
8057,
1,
"Ï"
],
[
8058,
2
],
[
8059,
1,
"Ï"
],
[
8060,
2
],
[
8061,
1,
"Ï"
],
[
[
8062,
8063
],
3
],
[
8064,
1,
"á¼Î¹"
],
[
8065,
1,
"á¼Î¹"
],
[
8066,
1,
"á¼Î¹"
],
[
8067,
1,
"á¼Î¹"
],
[
8068,
1,
"á¼Î¹"
],
[
8069,
1,
"á¼
ι"
],
[
8070,
1,
"á¼Î¹"
],
[
8071,
1,
"á¼Î¹"
],
[
8072,
1,
"á¼Î¹"
],
[
8073,
1,
"á¼Î¹"
],
[
8074,
1,
"á¼Î¹"
],
[
8075,
1,
"á¼Î¹"
],
[
8076,
1,
"á¼Î¹"
],
[
8077,
1,
"á¼
ι"
],
[
8078,
1,
"á¼Î¹"
],
[
8079,
1,
"á¼Î¹"
],
[
8080,
1,
"ἠι"
],
[
8081,
1,
"ἡι"
],
[
8082,
1,
"ἢι"
],
[
8083,
1,
"ἣι"
],
[
8084,
1,
"ἤι"
],
[
8085,
1,
"ἥι"
],
[
8086,
1,
"ἦι"
],
[
8087,
1,
"ἧι"
],
[
8088,
1,
"ἠι"
],
[
8089,
1,
"ἡι"
],
[
8090,
1,
"ἢι"
],
[
8091,
1,
"ἣι"
],
[
8092,
1,
"ἤι"
],
[
8093,
1,
"ἥι"
],
[
8094,
1,
"ἦι"
],
[
8095,
1,
"ἧι"
],
[
8096,
1,
"ὠι"
],
[
8097,
1,
"ὡι"
],
[
8098,
1,
"ὢι"
],
[
8099,
1,
"ὣι"
],
[
8100,
1,
"ὤι"
],
[
8101,
1,
"ὥι"
],
[
8102,
1,
"ὦι"
],
[
8103,
1,
"ὧι"
],
[
8104,
1,
"ὠι"
],
[
8105,
1,
"ὡι"
],
[
8106,
1,
"ὢι"
],
[
8107,
1,
"ὣι"
],
[
8108,
1,
"ὤι"
],
[
8109,
1,
"ὥι"
],
[
8110,
1,
"ὦι"
],
[
8111,
1,
"ὧι"
],
[
[
8112,
8113
],
2
],
[
8114,
1,
"ὰι"
],
[
8115,
1,
"αι"
],
[
8116,
1,
"άι"
],
[
8117,
3
],
[
8118,
2
],
[
8119,
1,
"ᾶι"
],
[
8120,
1,
"á¾°"
],
[
8121,
1,
"á¾±"
],
[
8122,
1,
"á½°"
],
[
8123,
1,
"ά"
],
[
8124,
1,
"αι"
],
[
8125,
5,
" Ì"
],
[
8126,
1,
"ι"
],
[
8127,
5,
" Ì"
],
[
8128,
5,
" Í"
],
[
8129,
5,
" ÌÍ"
],
[
8130,
1,
"ὴι"
],
[
8131,
1,
"ηι"
],
[
8132,
1,
"ήι"
],
[
8133,
3
],
[
8134,
2
],
[
8135,
1,
"á¿Î¹"
],
[
8136,
1,
"á½²"
],
[
8137,
1,
"Î"
],
[
8138,
1,
"á½´"
],
[
8139,
1,
"ή"
],
[
8140,
1,
"ηι"
],
[
8141,
5,
" ÌÌ"
],
[
8142,
5,
" ÌÌ"
],
[
8143,
5,
" ÌÍ"
],
[
[
8144,
8146
],
2
],
[
8147,
1,
"Î"
],
[
[
8148,
8149
],
3
],
[
[
8150,
8151
],
2
],
[
8152,
1,
"á¿"
],
[
8153,
1,
"á¿"
],
[
8154,
1,
"á½¶"
],
[
8155,
1,
"ί"
],
[
8156,
3
],
[
8157,
5,
" ÌÌ"
],
[
8158,
5,
" ÌÌ"
],
[
8159,
5,
" ÌÍ"
],
[
[
8160,
8162
],
2
],
[
8163,
1,
"ΰ"
],
[
[
8164,
8167
],
2
],
[
8168,
1,
"á¿ "
],
[
8169,
1,
"á¿¡"
],
[
8170,
1,
"ὺ"
],
[
8171,
1,
"Ï"
],
[
8172,
1,
"á¿¥"
],
[
8173,
5,
" ÌÌ"
],
[
8174,
5,
" ÌÌ"
],
[
8175,
5,
"`"
],
[
[
8176,
8177
],
3
],
[
8178,
1,
"ὼι"
],
[
8179,
1,
"Ïι"
],
[
8180,
1,
"Ïι"
],
[
8181,
3
],
[
8182,
2
],
[
8183,
1,
"ῶι"
],
[
8184,
1,
"ὸ"
],
[
8185,
1,
"Ï"
],
[
8186,
1,
"á½¼"
],
[
8187,
1,
"Ï"
],
[
8188,
1,
"Ïι"
],
[
8189,
5,
" Ì"
],
[
8190,
5,
" Ì"
],
[
8191,
3
],
[
[
8192,
8202
],
5,
" "
],
[
8203,
7
],
[
[
8204,
8205
],
6,
""
],
[
[
8206,
8207
],
3
],
[
8208,
2
],
[
8209,
1,
"â"
],
[
[
8210,
8214
],
2
],
[
8215,
5,
" ̳"
],
[
[
8216,
8227
],
2
],
[
[
8228,
8230
],
3
],
[
8231,
2
],
[
[
8232,
8238
],
3
],
[
8239,
5,
" "
],
[
[
8240,
8242
],
2
],
[
8243,
1,
"â²â²"
],
[
8244,
1,
"â²â²â²"
],
[
8245,
2
],
[
8246,
1,
"âµâµ"
],
[
8247,
1,
"âµâµâµ"
],
[
[
8248,
8251
],
2
],
[
8252,
5,
"!!"
],
[
8253,
2
],
[
8254,
5,
" Ì
"
],
[
[
8255,
8262
],
2
],
[
8263,
5,
"??"
],
[
8264,
5,
"?!"
],
[
8265,
5,
"!?"
],
[
[
8266,
8269
],
2
],
[
[
8270,
8274
],
2
],
[
[
8275,
8276
],
2
],
[
[
8277,
8278
],
2
],
[
8279,
1,
"â²â²â²â²"
],
[
[
8280,
8286
],
2
],
[
8287,
5,
" "
],
[
8288,
7
],
[
[
8289,
8291
],
3
],
[
8292,
7
],
[
8293,
3
],
[
[
8294,
8297
],
3
],
[
[
8298,
8303
],
3
],
[
8304,
1,
"0"
],
[
8305,
1,
"i"
],
[
[
8306,
8307
],
3
],
[
8308,
1,
"4"
],
[
8309,
1,
"5"
],
[
8310,
1,
"6"
],
[
8311,
1,
"7"
],
[
8312,
1,
"8"
],
[
8313,
1,
"9"
],
[
8314,
5,
"+"
],
[
8315,
1,
"â"
],
[
8316,
5,
"="
],
[
8317,
5,
"("
],
[
8318,
5,
")"
],
[
8319,
1,
"n"
],
[
8320,
1,
"0"
],
[
8321,
1,
"1"
],
[
8322,
1,
"2"
],
[
8323,
1,
"3"
],
[
8324,
1,
"4"
],
[
8325,
1,
"5"
],
[
8326,
1,
"6"
],
[
8327,
1,
"7"
],
[
8328,
1,
"8"
],
[
8329,
1,
"9"
],
[
8330,
5,
"+"
],
[
8331,
1,
"â"
],
[
8332,
5,
"="
],
[
8333,
5,
"("
],
[
8334,
5,
")"
],
[
8335,
3
],
[
8336,
1,
"a"
],
[
8337,
1,
"e"
],
[
8338,
1,
"o"
],
[
8339,
1,
"x"
],
[
8340,
1,
"É"
],
[
8341,
1,
"h"
],
[
8342,
1,
"k"
],
[
8343,
1,
"l"
],
[
8344,
1,
"m"
],
[
8345,
1,
"n"
],
[
8346,
1,
"p"
],
[
8347,
1,
"s"
],
[
8348,
1,
"t"
],
[
[
8349,
8351
],
3
],
[
[
8352,
8359
],
2
],
[
8360,
1,
"rs"
],
[
[
8361,
8362
],
2
],
[
8363,
2
],
[
8364,
2
],
[
[
8365,
8367
],
2
],
[
[
8368,
8369
],
2
],
[
[
8370,
8373
],
2
],
[
[
8374,
8376
],
2
],
[
8377,
2
],
[
8378,
2
],
[
[
8379,
8381
],
2
],
[
8382,
2
],
[
8383,
2
],
[
[
8384,
8399
],
3
],
[
[
8400,
8417
],
2
],
[
[
8418,
8419
],
2
],
[
[
8420,
8426
],
2
],
[
8427,
2
],
[
[
8428,
8431
],
2
],
[
8432,
2
],
[
[
8433,
8447
],
3
],
[
8448,
5,
"a/c"
],
[
8449,
5,
"a/s"
],
[
8450,
1,
"c"
],
[
8451,
1,
"°c"
],
[
8452,
2
],
[
8453,
5,
"c/o"
],
[
8454,
5,
"c/u"
],
[
8455,
1,
"É"
],
[
8456,
2
],
[
8457,
1,
"°f"
],
[
8458,
1,
"g"
],
[
[
8459,
8462
],
1,
"h"
],
[
8463,
1,
"ħ"
],
[
[
8464,
8465
],
1,
"i"
],
[
[
8466,
8467
],
1,
"l"
],
[
8468,
2
],
[
8469,
1,
"n"
],
[
8470,
1,
"no"
],
[
[
8471,
8472
],
2
],
[
8473,
1,
"p"
],
[
8474,
1,
"q"
],
[
[
8475,
8477
],
1,
"r"
],
[
[
8478,
8479
],
2
],
[
8480,
1,
"sm"
],
[
8481,
1,
"tel"
],
[
8482,
1,
"tm"
],
[
8483,
2
],
[
8484,
1,
"z"
],
[
8485,
2
],
[
8486,
1,
"Ï"
],
[
8487,
2
],
[
8488,
1,
"z"
],
[
8489,
2
],
[
8490,
1,
"k"
],
[
8491,
1,
"Ã¥"
],
[
8492,
1,
"b"
],
[
8493,
1,
"c"
],
[
8494,
2
],
[
[
8495,
8496
],
1,
"e"
],
[
8497,
1,
"f"
],
[
8498,
3
],
[
8499,
1,
"m"
],
[
8500,
1,
"o"
],
[
8501,
1,
"×"
],
[
8502,
1,
"×"
],
[
8503,
1,
"×"
],
[
8504,
1,
"×"
],
[
8505,
1,
"i"
],
[
8506,
2
],
[
8507,
1,
"fax"
],
[
8508,
1,
"Ï"
],
[
[
8509,
8510
],
1,
"γ"
],
[
8511,
1,
"Ï"
],
[
8512,
1,
"â"
],
[
[
8513,
8516
],
2
],
[
[
8517,
8518
],
1,
"d"
],
[
8519,
1,
"e"
],
[
8520,
1,
"i"
],
[
8521,
1,
"j"
],
[
[
8522,
8523
],
2
],
[
8524,
2
],
[
8525,
2
],
[
8526,
2
],
[
8527,
2
],
[
8528,
1,
"1â7"
],
[
8529,
1,
"1â9"
],
[
8530,
1,
"1â10"
],
[
8531,
1,
"1â3"
],
[
8532,
1,
"2â3"
],
[
8533,
1,
"1â5"
],
[
8534,
1,
"2â5"
],
[
8535,
1,
"3â5"
],
[
8536,
1,
"4â5"
],
[
8537,
1,
"1â6"
],
[
8538,
1,
"5â6"
],
[
8539,
1,
"1â8"
],
[
8540,
1,
"3â8"
],
[
8541,
1,
"5â8"
],
[
8542,
1,
"7â8"
],
[
8543,
1,
"1â"
],
[
8544,
1,
"i"
],
[
8545,
1,
"ii"
],
[
8546,
1,
"iii"
],
[
8547,
1,
"iv"
],
[
8548,
1,
"v"
],
[
8549,
1,
"vi"
],
[
8550,
1,
"vii"
],
[
8551,
1,
"viii"
],
[
8552,
1,
"ix"
],
[
8553,
1,
"x"
],
[
8554,
1,
"xi"
],
[
8555,
1,
"xii"
],
[
8556,
1,
"l"
],
[
8557,
1,
"c"
],
[
8558,
1,
"d"
],
[
8559,
1,
"m"
],
[
8560,
1,
"i"
],
[
8561,
1,
"ii"
],
[
8562,
1,
"iii"
],
[
8563,
1,
"iv"
],
[
8564,
1,
"v"
],
[
8565,
1,
"vi"
],
[
8566,
1,
"vii"
],
[
8567,
1,
"viii"
],
[
8568,
1,
"ix"
],
[
8569,
1,
"x"
],
[
8570,
1,
"xi"
],
[
8571,
1,
"xii"
],
[
8572,
1,
"l"
],
[
8573,
1,
"c"
],
[
8574,
1,
"d"
],
[
8575,
1,
"m"
],
[
[
8576,
8578
],
2
],
[
8579,
3
],
[
8580,
2
],
[
[
8581,
8584
],
2
],
[
8585,
1,
"0â3"
],
[
[
8586,
8587
],
2
],
[
[
8588,
8591
],
3
],
[
[
8592,
8682
],
2
],
[
[
8683,
8691
],
2
],
[
[
8692,
8703
],
2
],
[
[
8704,
8747
],
2
],
[
8748,
1,
"â«â«"
],
[
8749,
1,
"â«â«â«"
],
[
8750,
2
],
[
8751,
1,
"â®â®"
],
[
8752,
1,
"â®â®â®"
],
[
[
8753,
8799
],
2
],
[
8800,
4
],
[
[
8801,
8813
],
2
],
[
[
8814,
8815
],
4
],
[
[
8816,
8945
],
2
],
[
[
8946,
8959
],
2
],
[
8960,
2
],
[
8961,
2
],
[
[
8962,
9000
],
2
],
[
9001,
1,
"ã"
],
[
9002,
1,
"ã"
],
[
[
9003,
9082
],
2
],
[
9083,
2
],
[
9084,
2
],
[
[
9085,
9114
],
2
],
[
[
9115,
9166
],
2
],
[
[
9167,
9168
],
2
],
[
[
9169,
9179
],
2
],
[
[
9180,
9191
],
2
],
[
9192,
2
],
[
[
9193,
9203
],
2
],
[
[
9204,
9210
],
2
],
[
[
9211,
9214
],
2
],
[
9215,
2
],
[
[
9216,
9252
],
2
],
[
[
9253,
9254
],
2
],
[
[
9255,
9279
],
3
],
[
[
9280,
9290
],
2
],
[
[
9291,
9311
],
3
],
[
9312,
1,
"1"
],
[
9313,
1,
"2"
],
[
9314,
1,
"3"
],
[
9315,
1,
"4"
],
[
9316,
1,
"5"
],
[
9317,
1,
"6"
],
[
9318,
1,
"7"
],
[
9319,
1,
"8"
],
[
9320,
1,
"9"
],
[
9321,
1,
"10"
],
[
9322,
1,
"11"
],
[
9323,
1,
"12"
],
[
9324,
1,
"13"
],
[
9325,
1,
"14"
],
[
9326,
1,
"15"
],
[
9327,
1,
"16"
],
[
9328,
1,
"17"
],
[
9329,
1,
"18"
],
[
9330,
1,
"19"
],
[
9331,
1,
"20"
],
[
9332,
5,
"(1)"
],
[
9333,
5,
"(2)"
],
[
9334,
5,
"(3)"
],
[
9335,
5,
"(4)"
],
[
9336,
5,
"(5)"
],
[
9337,
5,
"(6)"
],
[
9338,
5,
"(7)"
],
[
9339,
5,
"(8)"
],
[
9340,
5,
"(9)"
],
[
9341,
5,
"(10)"
],
[
9342,
5,
"(11)"
],
[
9343,
5,
"(12)"
],
[
9344,
5,
"(13)"
],
[
9345,
5,
"(14)"
],
[
9346,
5,
"(15)"
],
[
9347,
5,
"(16)"
],
[
9348,
5,
"(17)"
],
[
9349,
5,
"(18)"
],
[
9350,
5,
"(19)"
],
[
9351,
5,
"(20)"
],
[
[
9352,
9371
],
3
],
[
9372,
5,
"(a)"
],
[
9373,
5,
"(b)"
],
[
9374,
5,
"(c)"
],
[
9375,
5,
"(d)"
],
[
9376,
5,
"(e)"
],
[
9377,
5,
"(f)"
],
[
9378,
5,
"(g)"
],
[
9379,
5,
"(h)"
],
[
9380,
5,
"(i)"
],
[
9381,
5,
"(j)"
],
[
9382,
5,
"(k)"
],
[
9383,
5,
"(l)"
],
[
9384,
5,
"(m)"
],
[
9385,
5,
"(n)"
],
[
9386,
5,
"(o)"
],
[
9387,
5,
"(p)"
],
[
9388,
5,
"(q)"
],
[
9389,
5,
"(r)"
],
[
9390,
5,
"(s)"
],
[
9391,
5,
"(t)"
],
[
9392,
5,
"(u)"
],
[
9393,
5,
"(v)"
],
[
9394,
5,
"(w)"
],
[
9395,
5,
"(x)"
],
[
9396,
5,
"(y)"
],
[
9397,
5,
"(z)"
],
[
9398,
1,
"a"
],
[
9399,
1,
"b"
],
[
9400,
1,
"c"
],
[
9401,
1,
"d"
],
[
9402,
1,
"e"
],
[
9403,
1,
"f"
],
[
9404,
1,
"g"
],
[
9405,
1,
"h"
],
[
9406,
1,
"i"
],
[
9407,
1,
"j"
],
[
9408,
1,
"k"
],
[
9409,
1,
"l"
],
[
9410,
1,
"m"
],
[
9411,
1,
"n"
],
[
9412,
1,
"o"
],
[
9413,
1,
"p"
],
[
9414,
1,
"q"
],
[
9415,
1,
"r"
],
[
9416,
1,
"s"
],
[
9417,
1,
"t"
],
[
9418,
1,
"u"
],
[
9419,
1,
"v"
],
[
9420,
1,
"w"
],
[
9421,
1,
"x"
],
[
9422,
1,
"y"
],
[
9423,
1,
"z"
],
[
9424,
1,
"a"
],
[
9425,
1,
"b"
],
[
9426,
1,
"c"
],
[
9427,
1,
"d"
],
[
9428,
1,
"e"
],
[
9429,
1,
"f"
],
[
9430,
1,
"g"
],
[
9431,
1,
"h"
],
[
9432,
1,
"i"
],
[
9433,
1,
"j"
],
[
9434,
1,
"k"
],
[
9435,
1,
"l"
],
[
9436,
1,
"m"
],
[
9437,
1,
"n"
],
[
9438,
1,
"o"
],
[
9439,
1,
"p"
],
[
9440,
1,
"q"
],
[
9441,
1,
"r"
],
[
9442,
1,
"s"
],
[
9443,
1,
"t"
],
[
9444,
1,
"u"
],
[
9445,
1,
"v"
],
[
9446,
1,
"w"
],
[
9447,
1,
"x"
],
[
9448,
1,
"y"
],
[
9449,
1,
"z"
],
[
9450,
1,
"0"
],
[
[
9451,
9470
],
2
],
[
9471,
2
],
[
[
9472,
9621
],
2
],
[
[
9622,
9631
],
2
],
[
[
9632,
9711
],
2
],
[
[
9712,
9719
],
2
],
[
[
9720,
9727
],
2
],
[
[
9728,
9747
],
2
],
[
[
9748,
9749
],
2
],
[
[
9750,
9751
],
2
],
[
9752,
2
],
[
9753,
2
],
[
[
9754,
9839
],
2
],
[
[
9840,
9841
],
2
],
[
[
9842,
9853
],
2
],
[
[
9854,
9855
],
2
],
[
[
9856,
9865
],
2
],
[
[
9866,
9873
],
2
],
[
[
9874,
9884
],
2
],
[
9885,
2
],
[
[
9886,
9887
],
2
],
[
[
9888,
9889
],
2
],
[
[
9890,
9905
],
2
],
[
9906,
2
],
[
[
9907,
9916
],
2
],
[
[
9917,
9919
],
2
],
[
[
9920,
9923
],
2
],
[
[
9924,
9933
],
2
],
[
9934,
2
],
[
[
9935,
9953
],
2
],
[
9954,
2
],
[
9955,
2
],
[
[
9956,
9959
],
2
],
[
[
9960,
9983
],
2
],
[
9984,
2
],
[
[
9985,
9988
],
2
],
[
9989,
2
],
[
[
9990,
9993
],
2
],
[
[
9994,
9995
],
2
],
[
[
9996,
10023
],
2
],
[
10024,
2
],
[
[
10025,
10059
],
2
],
[
10060,
2
],
[
10061,
2
],
[
10062,
2
],
[
[
10063,
10066
],
2
],
[
[
10067,
10069
],
2
],
[
10070,
2
],
[
10071,
2
],
[
[
10072,
10078
],
2
],
[
[
10079,
10080
],
2
],
[
[
10081,
10087
],
2
],
[
[
10088,
10101
],
2
],
[
[
10102,
10132
],
2
],
[
[
10133,
10135
],
2
],
[
[
10136,
10159
],
2
],
[
10160,
2
],
[
[
10161,
10174
],
2
],
[
10175,
2
],
[
[
10176,
10182
],
2
],
[
[
10183,
10186
],
2
],
[
10187,
2
],
[
10188,
2
],
[
10189,
2
],
[
[
10190,
10191
],
2
],
[
[
10192,
10219
],
2
],
[
[
10220,
10223
],
2
],
[
[
10224,
10239
],
2
],
[
[
10240,
10495
],
2
],
[
[
10496,
10763
],
2
],
[
10764,
1,
"â«â«â«â«"
],
[
[
10765,
10867
],
2
],
[
10868,
5,
"::="
],
[
10869,
5,
"=="
],
[
10870,
5,
"==="
],
[
[
10871,
10971
],
2
],
[
10972,
1,
"â«Ì¸"
],
[
[
10973,
11007
],
2
],
[
[
11008,
11021
],
2
],
[
[
11022,
11027
],
2
],
[
[
11028,
11034
],
2
],
[
[
11035,
11039
],
2
],
[
[
11040,
11043
],
2
],
[
[
11044,
11084
],
2
],
[
[
11085,
11087
],
2
],
[
[
11088,
11092
],
2
],
[
[
11093,
11097
],
2
],
[
[
11098,
11123
],
2
],
[
[
11124,
11125
],
3
],
[
[
11126,
11157
],
2
],
[
11158,
3
],
[
11159,
2
],
[
[
11160,
11193
],
2
],
[
[
11194,
11196
],
2
],
[
[
11197,
11208
],
2
],
[
11209,
2
],
[
[
11210,
11217
],
2
],
[
11218,
2
],
[
[
11219,
11243
],
2
],
[
[
11244,
11247
],
2
],
[
[
11248,
11262
],
2
],
[
11263,
2
],
[
11264,
1,
"â°°"
],
[
11265,
1,
"â°±"
],
[
11266,
1,
"â°²"
],
[
11267,
1,
"â°³"
],
[
11268,
1,
"â°´"
],
[
11269,
1,
"â°µ"
],
[
11270,
1,
"â°¶"
],
[
11271,
1,
"â°·"
],
[
11272,
1,
"â°¸"
],
[
11273,
1,
"â°¹"
],
[
11274,
1,
"â°º"
],
[
11275,
1,
"â°»"
],
[
11276,
1,
"â°¼"
],
[
11277,
1,
"â°½"
],
[
11278,
1,
"â°¾"
],
[
11279,
1,
"â°¿"
],
[
11280,
1,
"â±"
],
[
11281,
1,
"â±"
],
[
11282,
1,
"â±"
],
[
11283,
1,
"â±"
],
[
11284,
1,
"â±"
],
[
11285,
1,
"â±
"
],
[
11286,
1,
"â±"
],
[
11287,
1,
"â±"
],
[
11288,
1,
"â±"
],
[
11289,
1,
"â±"
],
[
11290,
1,
"â±"
],
[
11291,
1,
"â±"
],
[
11292,
1,
"â±"
],
[
11293,
1,
"â±"
],
[
11294,
1,
"â±"
],
[
11295,
1,
"â±"
],
[
11296,
1,
"â±"
],
[
11297,
1,
"â±"
],
[
11298,
1,
"â±"
],
[
11299,
1,
"â±"
],
[
11300,
1,
"â±"
],
[
11301,
1,
"â±"
],
[
11302,
1,
"â±"
],
[
11303,
1,
"â±"
],
[
11304,
1,
"â±"
],
[
11305,
1,
"â±"
],
[
11306,
1,
"â±"
],
[
11307,
1,
"â±"
],
[
11308,
1,
"â±"
],
[
11309,
1,
"â±"
],
[
11310,
1,
"â±"
],
[
11311,
3
],
[
[
11312,
11358
],
2
],
[
11359,
3
],
[
11360,
1,
"ⱡ"
],
[
11361,
2
],
[
11362,
1,
"É«"
],
[
11363,
1,
"áµ½"
],
[
11364,
1,
"ɽ"
],
[
[
11365,
11366
],
2
],
[
11367,
1,
"ⱨ"
],
[
11368,
2
],
[
11369,
1,
"ⱪ"
],
[
11370,
2
],
[
11371,
1,
"ⱬ"
],
[
11372,
2
],
[
11373,
1,
"É"
],
[
11374,
1,
"ɱ"
],
[
11375,
1,
"É"
],
[
11376,
1,
"É"
],
[
11377,
2
],
[
11378,
1,
"â±³"
],
[
11379,
2
],
[
11380,
2
],
[
11381,
1,
"â±¶"
],
[
[
11382,
11383
],
2
],
[
[
11384,
11387
],
2
],
[
11388,
1,
"j"
],
[
11389,
1,
"v"
],
[
11390,
1,
"È¿"
],
[
11391,
1,
"É"
],
[
11392,
1,
"â²"
],
[
11393,
2
],
[
11394,
1,
"â²"
],
[
11395,
2
],
[
11396,
1,
"â²
"
],
[
11397,
2
],
[
11398,
1,
"â²"
],
[
11399,
2
],
[
11400,
1,
"â²"
],
[
11401,
2
],
[
11402,
1,
"â²"
],
[
11403,
2
],
[
11404,
1,
"â²"
],
[
11405,
2
],
[
11406,
1,
"â²"
],
[
11407,
2
],
[
11408,
1,
"â²"
],
[
11409,
2
],
[
11410,
1,
"â²"
],
[
11411,
2
],
[
11412,
1,
"â²"
],
[
11413,
2
],
[
11414,
1,
"â²"
],
[
11415,
2
],
[
11416,
1,
"â²"
],
[
11417,
2
],
[
11418,
1,
"â²"
],
[
11419,
2
],
[
11420,
1,
"â²"
],
[
11421,
2
],
[
11422,
1,
"â²"
],
[
11423,
2
],
[
11424,
1,
"ⲡ"
],
[
11425,
2
],
[
11426,
1,
"â²£"
],
[
11427,
2
],
[
11428,
1,
"â²¥"
],
[
11429,
2
],
[
11430,
1,
"â²§"
],
[
11431,
2
],
[
11432,
1,
"ⲩ"
],
[
11433,
2
],
[
11434,
1,
"ⲫ"
],
[
11435,
2
],
[
11436,
1,
"â²"
],
[
11437,
2
],
[
11438,
1,
"ⲯ"
],
[
11439,
2
],
[
11440,
1,
"â²±"
],
[
11441,
2
],
[
11442,
1,
"â²³"
],
[
11443,
2
],
[
11444,
1,
"â²µ"
],
[
11445,
2
],
[
11446,
1,
"â²·"
],
[
11447,
2
],
[
11448,
1,
"â²¹"
],
[
11449,
2
],
[
11450,
1,
"â²»"
],
[
11451,
2
],
[
11452,
1,
"â²½"
],
[
11453,
2
],
[
11454,
1,
"ⲿ"
],
[
11455,
2
],
[
11456,
1,
"â³"
],
[
11457,
2
],
[
11458,
1,
"â³"
],
[
11459,
2
],
[
11460,
1,
"â³
"
],
[
11461,
2
],
[
11462,
1,
"â³"
],
[
11463,
2
],
[
11464,
1,
"â³"
],
[
11465,
2
],
[
11466,
1,
"â³"
],
[
11467,
2
],
[
11468,
1,
"â³"
],
[
11469,
2
],
[
11470,
1,
"â³"
],
[
11471,
2
],
[
11472,
1,
"â³"
],
[
11473,
2
],
[
11474,
1,
"â³"
],
[
11475,
2
],
[
11476,
1,
"â³"
],
[
11477,
2
],
[
11478,
1,
"â³"
],
[
11479,
2
],
[
11480,
1,
"â³"
],
[
11481,
2
],
[
11482,
1,
"â³"
],
[
11483,
2
],
[
11484,
1,
"â³"
],
[
11485,
2
],
[
11486,
1,
"â³"
],
[
11487,
2
],
[
11488,
1,
"ⳡ"
],
[
11489,
2
],
[
11490,
1,
"â³£"
],
[
[
11491,
11492
],
2
],
[
[
11493,
11498
],
2
],
[
11499,
1,
"ⳬ"
],
[
11500,
2
],
[
11501,
1,
"â³®"
],
[
[
11502,
11505
],
2
],
[
11506,
1,
"â³³"
],
[
11507,
2
],
[
[
11508,
11512
],
3
],
[
[
11513,
11519
],
2
],
[
[
11520,
11557
],
2
],
[
11558,
3
],
[
11559,
2
],
[
[
11560,
11564
],
3
],
[
11565,
2
],
[
[
11566,
11567
],
3
],
[
[
11568,
11621
],
2
],
[
[
11622,
11623
],
2
],
[
[
11624,
11630
],
3
],
[
11631,
1,
"ⵡ"
],
[
11632,
2
],
[
[
11633,
11646
],
3
],
[
11647,
2
],
[
[
11648,
11670
],
2
],
[
[
11671,
11679
],
3
],
[
[
11680,
11686
],
2
],
[
11687,
3
],
[
[
11688,
11694
],
2
],
[
11695,
3
],
[
[
11696,
11702
],
2
],
[
11703,
3
],
[
[
11704,
11710
],
2
],
[
11711,
3
],
[
[
11712,
11718
],
2
],
[
11719,
3
],
[
[
11720,
11726
],
2
],
[
11727,
3
],
[
[
11728,
11734
],
2
],
[
11735,
3
],
[
[
11736,
11742
],
2
],
[
11743,
3
],
[
[
11744,
11775
],
2
],
[
[
11776,
11799
],
2
],
[
[
11800,
11803
],
2
],
[
[
11804,
11805
],
2
],
[
[
11806,
11822
],
2
],
[
11823,
2
],
[
11824,
2
],
[
11825,
2
],
[
[
11826,
11835
],
2
],
[
[
11836,
11842
],
2
],
[
[
11843,
11844
],
2
],
[
[
11845,
11849
],
2
],
[
[
11850,
11854
],
2
],
[
11855,
2
],
[
[
11856,
11858
],
2
],
[
[
11859,
11903
],
3
],
[
[
11904,
11929
],
2
],
[
11930,
3
],
[
[
11931,
11934
],
2
],
[
11935,
1,
"æ¯"
],
[
[
11936,
12018
],
2
],
[
12019,
1,
"é¾"
],
[
[
12020,
12031
],
3
],
[
12032,
1,
"ä¸"
],
[
12033,
1,
"丨"
],
[
12034,
1,
"丶"
],
[
12035,
1,
"丿"
],
[
12036,
1,
"ä¹"
],
[
12037,
1,
"äº
"
],
[
12038,
1,
"äº"
],
[
12039,
1,
"äº "
],
[
12040,
1,
"人"
],
[
12041,
1,
"å¿"
],
[
12042,
1,
"å
¥"
],
[
12043,
1,
"å
«"
],
[
12044,
1,
"å"
],
[
12045,
1,
"å"
],
[
12046,
1,
"å«"
],
[
12047,
1,
"å "
],
[
12048,
1,
"åµ"
],
[
12049,
1,
"å"
],
[
12050,
1,
"å"
],
[
12051,
1,
"å¹"
],
[
12052,
1,
"å"
],
[
12053,
1,
"å"
],
[
12054,
1,
"å¸"
],
[
12055,
1,
"å"
],
[
12056,
1,
"å"
],
[
12057,
1,
"å©"
],
[
12058,
1,
"å"
],
[
12059,
1,
"å¶"
],
[
12060,
1,
"å"
],
[
12061,
1,
"å£"
],
[
12062,
1,
"å"
],
[
12063,
1,
"å"
],
[
12064,
1,
"士"
],
[
12065,
1,
"å¤"
],
[
12066,
1,
"å¤"
],
[
12067,
1,
"å¤"
],
[
12068,
1,
"大"
],
[
12069,
1,
"女"
],
[
12070,
1,
"å"
],
[
12071,
1,
"å®"
],
[
12072,
1,
"寸"
],
[
12073,
1,
"å°"
],
[
12074,
1,
"å°¢"
],
[
12075,
1,
"å°¸"
],
[
12076,
1,
"å±®"
],
[
12077,
1,
"å±±"
],
[
12078,
1,
"å·"
],
[
12079,
1,
"å·¥"
],
[
12080,
1,
"å·±"
],
[
12081,
1,
"å·¾"
],
[
12082,
1,
"å¹²"
],
[
12083,
1,
"幺"
],
[
12084,
1,
"广"
],
[
12085,
1,
"å»´"
],
[
12086,
1,
"廾"
],
[
12087,
1,
"å¼"
],
[
12088,
1,
"å¼"
],
[
12089,
1,
"å½"
],
[
12090,
1,
"彡"
],
[
12091,
1,
"å½³"
],
[
12092,
1,
"å¿"
],
[
12093,
1,
"æ"
],
[
12094,
1,
"æ¶"
],
[
12095,
1,
"æ"
],
[
12096,
1,
"æ¯"
],
[
12097,
1,
"æ´"
],
[
12098,
1,
"æ"
],
[
12099,
1,
"æ"
],
[
12100,
1,
"æ¤"
],
[
12101,
1,
"æ¹"
],
[
12102,
1,
"æ "
],
[
12103,
1,
"æ¥"
],
[
12104,
1,
"æ°"
],
[
12105,
1,
"æ"
],
[
12106,
1,
"æ¨"
],
[
12107,
1,
"æ¬ "
],
[
12108,
1,
"æ¢"
],
[
12109,
1,
"æ¹"
],
[
12110,
1,
"殳"
],
[
12111,
1,
"æ¯"
],
[
12112,
1,
"æ¯"
],
[
12113,
1,
"æ¯"
],
[
12114,
1,
"æ°"
],
[
12115,
1,
"æ°"
],
[
12116,
1,
"æ°´"
],
[
12117,
1,
"ç«"
],
[
12118,
1,
"çª"
],
[
12119,
1,
"ç¶"
],
[
12120,
1,
"ç»"
],
[
12121,
1,
"ç¿"
],
[
12122,
1,
"ç"
],
[
12123,
1,
"ç"
],
[
12124,
1,
"ç"
],
[
12125,
1,
"ç¬"
],
[
12126,
1,
"ç"
],
[
12127,
1,
"ç"
],
[
12128,
1,
"ç"
],
[
12129,
1,
"ç¦"
],
[
12130,
1,
"ç"
],
[
12131,
1,
"ç"
],
[
12132,
1,
"ç¨"
],
[
12133,
1,
"ç°"
],
[
12134,
1,
"ç"
],
[
12135,
1,
"ç"
],
[
12136,
1,
"ç¶"
],
[
12137,
1,
"ç½"
],
[
12138,
1,
"ç®"
],
[
12139,
1,
"ç¿"
],
[
12140,
1,
"ç®"
],
[
12141,
1,
"ç"
],
[
12142,
1,
"ç¢"
],
[
12143,
1,
"ç³"
],
[
12144,
1,
"示"
],
[
12145,
1,
"禸"
],
[
12146,
1,
"禾"
],
[
12147,
1,
"ç©´"
],
[
12148,
1,
"ç«"
],
[
12149,
1,
"竹"
],
[
12150,
1,
"ç±³"
],
[
12151,
1,
"糸"
],
[
12152,
1,
"ç¼¶"
],
[
12153,
1,
"ç½"
],
[
12154,
1,
"ç¾"
],
[
12155,
1,
"ç¾½"
],
[
12156,
1,
"è"
],
[
12157,
1,
"è"
],
[
12158,
1,
"è"
],
[
12159,
1,
"è³"
],
[
12160,
1,
"è¿"
],
[
12161,
1,
"è"
],
[
12162,
1,
"è£"
],
[
12163,
1,
"èª"
],
[
12164,
1,
"è³"
],
[
12165,
1,
"è¼"
],
[
12166,
1,
"è"
],
[
12167,
1,
"è"
],
[
12168,
1,
"è"
],
[
12169,
1,
"è®"
],
[
12170,
1,
"è²"
],
[
12171,
1,
"è¸"
],
[
12172,
1,
"è"
],
[
12173,
1,
"è«"
],
[
12174,
1,
"è¡"
],
[
12175,
1,
"è¡"
],
[
12176,
1,
"è¡£"
],
[
12177,
1,
"襾"
],
[
12178,
1,
"è¦"
],
[
12179,
1,
"è§"
],
[
12180,
1,
"è¨"
],
[
12181,
1,
"è°·"
],
[
12182,
1,
"è±"
],
[
12183,
1,
"è±"
],
[
12184,
1,
"豸"
],
[
12185,
1,
"è²"
],
[
12186,
1,
"赤"
],
[
12187,
1,
"èµ°"
],
[
12188,
1,
"è¶³"
],
[
12189,
1,
"身"
],
[
12190,
1,
"è»"
],
[
12191,
1,
"è¾"
],
[
12192,
1,
"è¾°"
],
[
12193,
1,
"è¾µ"
],
[
12194,
1,
"é"
],
[
12195,
1,
"é
"
],
[
12196,
1,
"é"
],
[
12197,
1,
"é"
],
[
12198,
1,
"é"
],
[
12199,
1,
"é·"
],
[
12200,
1,
"é"
],
[
12201,
1,
"é"
],
[
12202,
1,
"é¶"
],
[
12203,
1,
"é¹"
],
[
12204,
1,
"é¨"
],
[
12205,
1,
"é"
],
[
12206,
1,
"é"
],
[
12207,
1,
"é¢"
],
[
12208,
1,
"é©"
],
[
12209,
1,
"é"
],
[
12210,
1,
"é"
],
[
12211,
1,
"é³"
],
[
12212,
1,
"é "
],
[
12213,
1,
"風"
],
[
12214,
1,
"é£"
],
[
12215,
1,
"é£"
],
[
12216,
1,
"é¦"
],
[
12217,
1,
"é¦"
],
[
12218,
1,
"馬"
],
[
12219,
1,
"骨"
],
[
12220,
1,
"é«"
],
[
12221,
1,
"é«"
],
[
12222,
1,
"鬥"
],
[
12223,
1,
"鬯"
],
[
12224,
1,
"鬲"
],
[
12225,
1,
"鬼"
],
[
12226,
1,
"é"
],
[
12227,
1,
"é³¥"
],
[
12228,
1,
"é¹µ"
],
[
12229,
1,
"鹿"
],
[
12230,
1,
"麥"
],
[
12231,
1,
"麻"
],
[
12232,
1,
"é»"
],
[
12233,
1,
"é»"
],
[
12234,
1,
"é»"
],
[
12235,
1,
"黹"
],
[
12236,
1,
"黽"
],
[
12237,
1,
"é¼"
],
[
12238,
1,
"é¼"
],
[
12239,
1,
"é¼ "
],
[
12240,
1,
"é¼»"
],
[
12241,
1,
"é½"
],
[
12242,
1,
"é½"
],
[
12243,
1,
"é¾"
],
[
12244,
1,
"é¾"
],
[
12245,
1,
"é¾ "
],
[
[
12246,
12271
],
3
],
[
[
12272,
12283
],
3
],
[
[
12284,
12287
],
3
],
[
12288,
5,
" "
],
[
12289,
2
],
[
12290,
1,
"."
],
[
[
12291,
12292
],
2
],
[
[
12293,
12295
],
2
],
[
[
12296,
12329
],
2
],
[
[
12330,
12333
],
2
],
[
[
12334,
12341
],
2
],
[
12342,
1,
"ã"
],
[
12343,
2
],
[
12344,
1,
"å"
],
[
12345,
1,
"å"
],
[
12346,
1,
"å
"
],
[
12347,
2
],
[
12348,
2
],
[
12349,
2
],
[
12350,
2
],
[
12351,
2
],
[
12352,
3
],
[
[
12353,
12436
],
2
],
[
[
12437,
12438
],
2
],
[
[
12439,
12440
],
3
],
[
[
12441,
12442
],
2
],
[
12443,
5,
" ã"
],
[
12444,
5,
" ã"
],
[
[
12445,
12446
],
2
],
[
12447,
1,
"ãã"
],
[
12448,
2
],
[
[
12449,
12542
],
2
],
[
12543,
1,
"ã³ã"
],
[
[
12544,
12548
],
3
],
[
[
12549,
12588
],
2
],
[
12589,
2
],
[
12590,
2
],
[
12591,
2
],
[
12592,
3
],
[
12593,
1,
"á"
],
[
12594,
1,
"á"
],
[
12595,
1,
"áª"
],
[
12596,
1,
"á"
],
[
12597,
1,
"á¬"
],
[
12598,
1,
"á"
],
[
12599,
1,
"á"
],
[
12600,
1,
"á"
],
[
12601,
1,
"á
"
],
[
12602,
1,
"á°"
],
[
12603,
1,
"á±"
],
[
12604,
1,
"á²"
],
[
12605,
1,
"á³"
],
[
12606,
1,
"á´"
],
[
12607,
1,
"áµ"
],
[
12608,
1,
"á"
],
[
12609,
1,
"á"
],
[
12610,
1,
"á"
],
[
12611,
1,
"á"
],
[
12612,
1,
"á¡"
],
[
12613,
1,
"á"
],
[
12614,
1,
"á"
],
[
12615,
1,
"á"
],
[
12616,
1,
"á"
],
[
12617,
1,
"á"
],
[
12618,
1,
"á"
],
[
12619,
1,
"á"
],
[
12620,
1,
"á"
],
[
12621,
1,
"á"
],
[
12622,
1,
"á"
],
[
12623,
1,
"á
¡"
],
[
12624,
1,
"á
¢"
],
[
12625,
1,
"á
£"
],
[
12626,
1,
"á
¤"
],
[
12627,
1,
"á
¥"
],
[
12628,
1,
"á
¦"
],
[
12629,
1,
"á
§"
],
[
12630,
1,
"á
¨"
],
[
12631,
1,
"á
©"
],
[
12632,
1,
"á
ª"
],
[
12633,
1,
"á
«"
],
[
12634,
1,
"á
¬"
],
[
12635,
1,
"á
"
],
[
12636,
1,
"á
®"
],
[
12637,
1,
"á
¯"
],
[
12638,
1,
"á
°"
],
[
12639,
1,
"á
±"
],
[
12640,
1,
"á
²"
],
[
12641,
1,
"á
³"
],
[
12642,
1,
"á
´"
],
[
12643,
1,
"á
µ"
],
[
12644,
3
],
[
12645,
1,
"á"
],
[
12646,
1,
"á"
],
[
12647,
1,
"á"
],
[
12648,
1,
"á"
],
[
12649,
1,
"á"
],
[
12650,
1,
"á"
],
[
12651,
1,
"á"
],
[
12652,
1,
"á"
],
[
12653,
1,
"á"
],
[
12654,
1,
"á"
],
[
12655,
1,
"á"
],
[
12656,
1,
"á"
],
[
12657,
1,
"á"
],
[
12658,
1,
"á"
],
[
12659,
1,
"á "
],
[
12660,
1,
"á¢"
],
[
12661,
1,
"á£"
],
[
12662,
1,
"á§"
],
[
12663,
1,
"á©"
],
[
12664,
1,
"á«"
],
[
12665,
1,
"á¬"
],
[
12666,
1,
"á"
],
[
12667,
1,
"á®"
],
[
12668,
1,
"á¯"
],
[
12669,
1,
"á²"
],
[
12670,
1,
"á¶"
],
[
12671,
1,
"á
"
],
[
12672,
1,
"á
"
],
[
12673,
1,
"á
"
],
[
12674,
1,
"á±"
],
[
12675,
1,
"á²"
],
[
12676,
1,
"á
"
],
[
12677,
1,
"á
"
],
[
12678,
1,
"á
"
],
[
12679,
1,
"á"
],
[
12680,
1,
"á
"
],
[
12681,
1,
"á"
],
[
12682,
1,
"á"
],
[
12683,
1,
"á"
],
[
12684,
1,
"á"
],
[
12685,
1,
"á"
],
[
12686,
1,
"á¡"
],
[
12687,
3
],
[
[
12688,
12689
],
2
],
[
12690,
1,
"ä¸"
],
[
12691,
1,
"äº"
],
[
12692,
1,
"ä¸"
],
[
12693,
1,
"å"
],
[
12694,
1,
"ä¸"
],
[
12695,
1,
"ä¸"
],
[
12696,
1,
"ä¸"
],
[
12697,
1,
"ç²"
],
[
12698,
1,
"ä¹"
],
[
12699,
1,
"ä¸"
],
[
12700,
1,
"ä¸"
],
[
12701,
1,
"天"
],
[
12702,
1,
"å°"
],
[
12703,
1,
"人"
],
[
[
12704,
12727
],
2
],
[
[
12728,
12730
],
2
],
[
[
12731,
12735
],
2
],
[
[
12736,
12751
],
2
],
[
[
12752,
12771
],
2
],
[
[
12772,
12783
],
3
],
[
[
12784,
12799
],
2
],
[
12800,
5,
"(á)"
],
[
12801,
5,
"(á)"
],
[
12802,
5,
"(á)"
],
[
12803,
5,
"(á
)"
],
[
12804,
5,
"(á)"
],
[
12805,
5,
"(á)"
],
[
12806,
5,
"(á)"
],
[
12807,
5,
"(á)"
],
[
12808,
5,
"(á)"
],
[
12809,
5,
"(á)"
],
[
12810,
5,
"(á)"
],
[
12811,
5,
"(á)"
],
[
12812,
5,
"(á)"
],
[
12813,
5,
"(á)"
],
[
12814,
5,
"(ê°)"
],
[
12815,
5,
"(ë)"
],
[
12816,
5,
"(ë¤)"
],
[
12817,
5,
"(ë¼)"
],
[
12818,
5,
"(ë§)"
],
[
12819,
5,
"(ë°)"
],
[
12820,
5,
"(ì¬)"
],
[
12821,
5,
"(ì)"
],
[
12822,
5,
"(ì)"
],
[
12823,
5,
"(ì°¨)"
],
[
12824,
5,
"(ì¹´)"
],
[
12825,
5,
"(í)"
],
[
12826,
5,
"(í)"
],
[
12827,
5,
"(í)"
],
[
12828,
5,
"(주)"
],
[
12829,
5,
"(ì¤ì )"
],
[
12830,
5,
"(ì¤í)"
],
[
12831,
3
],
[
12832,
5,
"(ä¸)"
],
[
12833,
5,
"(äº)"
],
[
12834,
5,
"(ä¸)"
],
[
12835,
5,
"(å)"
],
[
12836,
5,
"(äº)"
],
[
12837,
5,
"(å
)"
],
[
12838,
5,
"(ä¸)"
],
[
12839,
5,
"(å
«)"
],
[
12840,
5,
"(ä¹)"
],
[
12841,
5,
"(å)"
],
[
12842,
5,
"(æ)"
],
[
12843,
5,
"(ç«)"
],
[
12844,
5,
"(æ°´)"
],
[
12845,
5,
"(æ¨)"
],
[
12846,
5,
"(é)"
],
[
12847,
5,
"(å)"
],
[
12848,
5,
"(æ¥)"
],
[
12849,
5,
"(æ ª)"
],
[
12850,
5,
"(æ)"
],
[
12851,
5,
"(社)"
],
[
12852,
5,
"(å)"
],
[
12853,
5,
"(ç¹)"
],
[
12854,
5,
"(財)"
],
[
12855,
5,
"(ç¥)"
],
[
12856,
5,
"(å´)"
],
[
12857,
5,
"(代)"
],
[
12858,
5,
"(å¼)"
],
[
12859,
5,
"(å¦)"
],
[
12860,
5,
"(ç£)"
],
[
12861,
5,
"(ä¼)"
],
[
12862,
5,
"(è³)"
],
[
12863,
5,
"(å)"
],
[
12864,
5,
"(ç¥)"
],
[
12865,
5,
"(ä¼)"
],
[
12866,
5,
"(èª)"
],
[
12867,
5,
"(è³)"
],
[
12868,
1,
"å"
],
[
12869,
1,
"å¹¼"
],
[
12870,
1,
"æ"
],
[
12871,
1,
"ç®"
],
[
[
12872,
12879
],
2
],
[
12880,
1,
"pte"
],
[
12881,
1,
"21"
],
[
12882,
1,
"22"
],
[
12883,
1,
"23"
],
[
12884,
1,
"24"
],
[
12885,
1,
"25"
],
[
12886,
1,
"26"
],
[
12887,
1,
"27"
],
[
12888,
1,
"28"
],
[
12889,
1,
"29"
],
[
12890,
1,
"30"
],
[
12891,
1,
"31"
],
[
12892,
1,
"32"
],
[
12893,
1,
"33"
],
[
12894,
1,
"34"
],
[
12895,
1,
"35"
],
[
12896,
1,
"á"
],
[
12897,
1,
"á"
],
[
12898,
1,
"á"
],
[
12899,
1,
"á
"
],
[
12900,
1,
"á"
],
[
12901,
1,
"á"
],
[
12902,
1,
"á"
],
[
12903,
1,
"á"
],
[
12904,
1,
"á"
],
[
12905,
1,
"á"
],
[
12906,
1,
"á"
],
[
12907,
1,
"á"
],
[
12908,
1,
"á"
],
[
12909,
1,
"á"
],
[
12910,
1,
"ê°"
],
[
12911,
1,
"ë"
],
[
12912,
1,
"ë¤"
],
[
12913,
1,
"ë¼"
],
[
12914,
1,
"ë§"
],
[
12915,
1,
"ë°"
],
[
12916,
1,
"ì¬"
],
[
12917,
1,
"ì"
],
[
12918,
1,
"ì"
],
[
12919,
1,
"ì°¨"
],
[
12920,
1,
"ì¹´"
],
[
12921,
1,
"í"
],
[
12922,
1,
"í"
],
[
12923,
1,
"í"
],
[
12924,
1,
"ì°¸ê³ "
],
[
12925,
1,
"주ì"
],
[
12926,
1,
"ì°"
],
[
12927,
2
],
[
12928,
1,
"ä¸"
],
[
12929,
1,
"äº"
],
[
12930,
1,
"ä¸"
],
[
12931,
1,
"å"
],
[
12932,
1,
"äº"
],
[
12933,
1,
"å
"
],
[
12934,
1,
"ä¸"
],
[
12935,
1,
"å
«"
],
[
12936,
1,
"ä¹"
],
[
12937,
1,
"å"
],
[
12938,
1,
"æ"
],
[
12939,
1,
"ç«"
],
[
12940,
1,
"æ°´"
],
[
12941,
1,
"æ¨"
],
[
12942,
1,
"é"
],
[
12943,
1,
"å"
],
[
12944,
1,
"æ¥"
],
[
12945,
1,
"æ ª"
],
[
12946,
1,
"æ"
],
[
12947,
1,
"社"
],
[
12948,
1,
"å"
],
[
12949,
1,
"ç¹"
],
[
12950,
1,
"財"
],
[
12951,
1,
"ç¥"
],
[
12952,
1,
"å´"
],
[
12953,
1,
"ç§"
],
[
12954,
1,
"ç·"
],
[
12955,
1,
"女"
],
[
12956,
1,
"é©"
],
[
12957,
1,
"åª"
],
[
12958,
1,
"å°"
],
[
12959,
1,
"注"
],
[
12960,
1,
"é
"
],
[
12961,
1,
"ä¼"
],
[
12962,
1,
"å"
],
[
12963,
1,
"æ£"
],
[
12964,
1,
"ä¸"
],
[
12965,
1,
"ä¸"
],
[
12966,
1,
"ä¸"
],
[
12967,
1,
"å·¦"
],
[
12968,
1,
"å³"
],
[
12969,
1,
"å»"
],
[
12970,
1,
"å®"
],
[
12971,
1,
"å¦"
],
[
12972,
1,
"ç£"
],
[
12973,
1,
"ä¼"
],
[
12974,
1,
"è³"
],
[
12975,
1,
"å"
],
[
12976,
1,
"å¤"
],
[
12977,
1,
"36"
],
[
12978,
1,
"37"
],
[
12979,
1,
"38"
],
[
12980,
1,
"39"
],
[
12981,
1,
"40"
],
[
12982,
1,
"41"
],
[
12983,
1,
"42"
],
[
12984,
1,
"43"
],
[
12985,
1,
"44"
],
[
12986,
1,
"45"
],
[
12987,
1,
"46"
],
[
12988,
1,
"47"
],
[
12989,
1,
"48"
],
[
12990,
1,
"49"
],
[
12991,
1,
"50"
],
[
12992,
1,
"1æ"
],
[
12993,
1,
"2æ"
],
[
12994,
1,
"3æ"
],
[
12995,
1,
"4æ"
],
[
12996,
1,
"5æ"
],
[
12997,
1,
"6æ"
],
[
12998,
1,
"7æ"
],
[
12999,
1,
"8æ"
],
[
13000,
1,
"9æ"
],
[
13001,
1,
"10æ"
],
[
13002,
1,
"11æ"
],
[
13003,
1,
"12æ"
],
[
13004,
1,
"hg"
],
[
13005,
1,
"erg"
],
[
13006,
1,
"ev"
],
[
13007,
1,
"ltd"
],
[
13008,
1,
"ã¢"
],
[
13009,
1,
"ã¤"
],
[
13010,
1,
"ã¦"
],
[
13011,
1,
"ã¨"
],
[
13012,
1,
"ãª"
],
[
13013,
1,
"ã«"
],
[
13014,
1,
"ã"
],
[
13015,
1,
"ã¯"
],
[
13016,
1,
"ã±"
],
[
13017,
1,
"ã³"
],
[
13018,
1,
"ãµ"
],
[
13019,
1,
"ã·"
],
[
13020,
1,
"ã¹"
],
[
13021,
1,
"ã»"
],
[
13022,
1,
"ã½"
],
[
13023,
1,
"ã¿"
],
[
13024,
1,
"ã"
],
[
13025,
1,
"ã"
],
[
13026,
1,
"ã"
],
[
13027,
1,
"ã"
],
[
13028,
1,
"ã"
],
[
13029,
1,
"ã"
],
[
13030,
1,
"ã"
],
[
13031,
1,
"ã"
],
[
13032,
1,
"ã"
],
[
13033,
1,
"ã"
],
[
13034,
1,
"ã"
],
[
13035,
1,
"ã"
],
[
13036,
1,
"ã"
],
[
13037,
1,
"ã"
],
[
13038,
1,
"ã"
],
[
13039,
1,
"ã"
],
[
13040,
1,
"ã "
],
[
13041,
1,
"ã¡"
],
[
13042,
1,
"ã¢"
],
[
13043,
1,
"ã¤"
],
[
13044,
1,
"ã¦"
],
[
13045,
1,
"ã¨"
],
[
13046,
1,
"ã©"
],
[
13047,
1,
"ãª"
],
[
13048,
1,
"ã«"
],
[
13049,
1,
"ã¬"
],
[
13050,
1,
"ã"
],
[
13051,
1,
"ã¯"
],
[
13052,
1,
"ã°"
],
[
13053,
1,
"ã±"
],
[
13054,
1,
"ã²"
],
[
13055,
1,
"令å"
],
[
13056,
1,
"ã¢ãã¼ã"
],
[
13057,
1,
"ã¢ã«ãã¡"
],
[
13058,
1,
"ã¢ã³ãã¢"
],
[
13059,
1,
"ã¢ã¼ã«"
],
[
13060,
1,
"ã¤ãã³ã°"
],
[
13061,
1,
"ã¤ã³ã"
],
[
13062,
1,
"ã¦ã©ã³"
],
[
13063,
1,
"ã¨ã¹ã¯ã¼ã"
],
[
13064,
1,
"ã¨ã¼ã«ã¼"
],
[
13065,
1,
"ãªã³ã¹"
],
[
13066,
1,
"ãªã¼ã "
],
[
13067,
1,
"ã«ã¤ãª"
],
[
13068,
1,
"ã«ã©ãã"
],
[
13069,
1,
"ã«ããªã¼"
],
[
13070,
1,
"ã¬ãã³"
],
[
13071,
1,
"ã¬ã³ã"
],
[
13072,
1,
"ã®ã¬"
],
[
13073,
1,
"ã®ãã¼"
],
[
13074,
1,
"ãã¥ãªã¼"
],
[
13075,
1,
"ã®ã«ãã¼"
],
[
13076,
1,
"ãã"
],
[
13077,
1,
"ããã°ã©ã "
],
[
13078,
1,
"ããã¡ã¼ãã«"
],
[
13079,
1,
"ããã¯ãã"
],
[
13080,
1,
"ã°ã©ã "
],
[
13081,
1,
"ã°ã©ã ãã³"
],
[
13082,
1,
"ã¯ã«ã¼ã¤ã"
],
[
13083,
1,
"ã¯ãã¼ã"
],
[
13084,
1,
"ã±ã¼ã¹"
],
[
13085,
1,
"ã³ã«ã"
],
[
13086,
1,
"ã³ã¼ã"
],
[
13087,
1,
"ãµã¤ã¯ã«"
],
[
13088,
1,
"ãµã³ãã¼ã "
],
[
13089,
1,
"ã·ãªã³ã°"
],
[
13090,
1,
"ã»ã³ã"
],
[
13091,
1,
"ã»ã³ã"
],
[
13092,
1,
"ãã¼ã¹"
],
[
13093,
1,
"ãã·"
],
[
13094,
1,
"ãã«"
],
[
13095,
1,
"ãã³"
],
[
13096,
1,
"ãã"
],
[
13097,
1,
"ããã"
],
[
13098,
1,
"ãã¤ã"
],
[
13099,
1,
"ãã¼ã»ã³ã"
],
[
13100,
1,
"ãã¼ã"
],
[
13101,
1,
"ãã¼ã¬ã«"
],
[
13102,
1,
"ãã¢ã¹ãã«"
],
[
13103,
1,
"ãã¯ã«"
],
[
13104,
1,
"ãã³"
],
[
13105,
1,
"ãã«"
],
[
13106,
1,
"ãã¡ã©ãã"
],
[
13107,
1,
"ãã£ã¼ã"
],
[
13108,
1,
"ããã·ã§ã«"
],
[
13109,
1,
"ãã©ã³"
],
[
13110,
1,
"ãã¯ã¿ã¼ã«"
],
[
13111,
1,
"ãã½"
],
[
13112,
1,
"ããã"
],
[
13113,
1,
"ãã«ã"
],
[
13114,
1,
"ãã³ã¹"
],
[
13115,
1,
"ãã¼ã¸"
],
[
13116,
1,
"ãã¼ã¿"
],
[
13117,
1,
"ãã¤ã³ã"
],
[
13118,
1,
"ãã«ã"
],
[
13119,
1,
"ãã³"
],
[
13120,
1,
"ãã³ã"
],
[
13121,
1,
"ãã¼ã«"
],
[
13122,
1,
"ãã¼ã³"
],
[
13123,
1,
"ãã¤ã¯ã"
],
[
13124,
1,
"ãã¤ã«"
],
[
13125,
1,
"ããã"
],
[
13126,
1,
"ãã«ã¯"
],
[
13127,
1,
"ãã³ã·ã§ã³"
],
[
13128,
1,
"ãã¯ãã³"
],
[
13129,
1,
"ããª"
],
[
13130,
1,
"ããªãã¼ã«"
],
[
13131,
1,
"ã¡ã¬"
],
[
13132,
1,
"ã¡ã¬ãã³"
],
[
13133,
1,
"ã¡ã¼ãã«"
],
[
13134,
1,
"ã¤ã¼ã"
],
[
13135,
1,
"ã¤ã¼ã«"
],
[
13136,
1,
"ã¦ã¢ã³"
],
[
13137,
1,
"ãªããã«"
],
[
13138,
1,
"ãªã©"
],
[
13139,
1,
"ã«ãã¼"
],
[
13140,
1,
"ã«ã¼ãã«"
],
[
13141,
1,
"ã¬ã "
],
[
13142,
1,
"ã¬ã³ãã²ã³"
],
[
13143,
1,
"ã¯ãã"
],
[
13144,
1,
"0ç¹"
],
[
13145,
1,
"1ç¹"
],
[
13146,
1,
"2ç¹"
],
[
13147,
1,
"3ç¹"
],
[
13148,
1,
"4ç¹"
],
[
13149,
1,
"5ç¹"
],
[
13150,
1,
"6ç¹"
],
[
13151,
1,
"7ç¹"
],
[
13152,
1,
"8ç¹"
],
[
13153,
1,
"9ç¹"
],
[
13154,
1,
"10ç¹"
],
[
13155,
1,
"11ç¹"
],
[
13156,
1,
"12ç¹"
],
[
13157,
1,
"13ç¹"
],
[
13158,
1,
"14ç¹"
],
[
13159,
1,
"15ç¹"
],
[
13160,
1,
"16ç¹"
],
[
13161,
1,
"17ç¹"
],
[
13162,
1,
"18ç¹"
],
[
13163,
1,
"19ç¹"
],
[
13164,
1,
"20ç¹"
],
[
13165,
1,
"21ç¹"
],
[
13166,
1,
"22ç¹"
],
[
13167,
1,
"23ç¹"
],
[
13168,
1,
"24ç¹"
],
[
13169,
1,
"hpa"
],
[
13170,
1,
"da"
],
[
13171,
1,
"au"
],
[
13172,
1,
"bar"
],
[
13173,
1,
"ov"
],
[
13174,
1,
"pc"
],
[
13175,
1,
"dm"
],
[
13176,
1,
"dm2"
],
[
13177,
1,
"dm3"
],
[
13178,
1,
"iu"
],
[
13179,
1,
"å¹³æ"
],
[
13180,
1,
"æå"
],
[
13181,
1,
"大æ£"
],
[
13182,
1,
"ææ²»"
],
[
13183,
1,
"æ ªå¼ä¼ç¤¾"
],
[
13184,
1,
"pa"
],
[
13185,
1,
"na"
],
[
13186,
1,
"μa"
],
[
13187,
1,
"ma"
],
[
13188,
1,
"ka"
],
[
13189,
1,
"kb"
],
[
13190,
1,
"mb"
],
[
13191,
1,
"gb"
],
[
13192,
1,
"cal"
],
[
13193,
1,
"kcal"
],
[
13194,
1,
"pf"
],
[
13195,
1,
"nf"
],
[
13196,
1,
"μf"
],
[
13197,
1,
"μg"
],
[
13198,
1,
"mg"
],
[
13199,
1,
"kg"
],
[
13200,
1,
"hz"
],
[
13201,
1,
"khz"
],
[
13202,
1,
"mhz"
],
[
13203,
1,
"ghz"
],
[
13204,
1,
"thz"
],
[
13205,
1,
"μl"
],
[
13206,
1,
"ml"
],
[
13207,
1,
"dl"
],
[
13208,
1,
"kl"
],
[
13209,
1,
"fm"
],
[
13210,
1,
"nm"
],
[
13211,
1,
"μm"
],
[
13212,
1,
"mm"
],
[
13213,
1,
"cm"
],
[
13214,
1,
"km"
],
[
13215,
1,
"mm2"
],
[
13216,
1,
"cm2"
],
[
13217,
1,
"m2"
],
[
13218,
1,
"km2"
],
[
13219,
1,
"mm3"
],
[
13220,
1,
"cm3"
],
[
13221,
1,
"m3"
],
[
13222,
1,
"km3"
],
[
13223,
1,
"mâs"
],
[
13224,
1,
"mâs2"
],
[
13225,
1,
"pa"
],
[
13226,
1,
"kpa"
],
[
13227,
1,
"mpa"
],
[
13228,
1,
"gpa"
],
[
13229,
1,
"rad"
],
[
13230,
1,
"radâs"
],
[
13231,
1,
"radâs2"
],
[
13232,
1,
"ps"
],
[
13233,
1,
"ns"
],
[
13234,
1,
"μs"
],
[
13235,
1,
"ms"
],
[
13236,
1,
"pv"
],
[
13237,
1,
"nv"
],
[
13238,
1,
"μv"
],
[
13239,
1,
"mv"
],
[
13240,
1,
"kv"
],
[
13241,
1,
"mv"
],
[
13242,
1,
"pw"
],
[
13243,
1,
"nw"
],
[
13244,
1,
"μw"
],
[
13245,
1,
"mw"
],
[
13246,
1,
"kw"
],
[
13247,
1,
"mw"
],
[
13248,
1,
"kÏ"
],
[
13249,
1,
"mÏ"
],
[
13250,
3
],
[
13251,
1,
"bq"
],
[
13252,
1,
"cc"
],
[
13253,
1,
"cd"
],
[
13254,
1,
"câkg"
],
[
13255,
3
],
[
13256,
1,
"db"
],
[
13257,
1,
"gy"
],
[
13258,
1,
"ha"
],
[
13259,
1,
"hp"
],
[
13260,
1,
"in"
],
[
13261,
1,
"kk"
],
[
13262,
1,
"km"
],
[
13263,
1,
"kt"
],
[
13264,
1,
"lm"
],
[
13265,
1,
"ln"
],
[
13266,
1,
"log"
],
[
13267,
1,
"lx"
],
[
13268,
1,
"mb"
],
[
13269,
1,
"mil"
],
[
13270,
1,
"mol"
],
[
13271,
1,
"ph"
],
[
13272,
3
],
[
13273,
1,
"ppm"
],
[
13274,
1,
"pr"
],
[
13275,
1,
"sr"
],
[
13276,
1,
"sv"
],
[
13277,
1,
"wb"
],
[
13278,
1,
"vâm"
],
[
13279,
1,
"aâm"
],
[
13280,
1,
"1æ¥"
],
[
13281,
1,
"2æ¥"
],
[
13282,
1,
"3æ¥"
],
[
13283,
1,
"4æ¥"
],
[
13284,
1,
"5æ¥"
],
[
13285,
1,
"6æ¥"
],
[
13286,
1,
"7æ¥"
],
[
13287,
1,
"8æ¥"
],
[
13288,
1,
"9æ¥"
],
[
13289,
1,
"10æ¥"
],
[
13290,
1,
"11æ¥"
],
[
13291,
1,
"12æ¥"
],
[
13292,
1,
"13æ¥"
],
[
13293,
1,
"14æ¥"
],
[
13294,
1,
"15æ¥"
],
[
13295,
1,
"16æ¥"
],
[
13296,
1,
"17æ¥"
],
[
13297,
1,
"18æ¥"
],
[
13298,
1,
"19æ¥"
],
[
13299,
1,
"20æ¥"
],
[
13300,
1,
"21æ¥"
],
[
13301,
1,
"22æ¥"
],
[
13302,
1,
"23æ¥"
],
[
13303,
1,
"24æ¥"
],
[
13304,
1,
"25æ¥"
],
[
13305,
1,
"26æ¥"
],
[
13306,
1,
"27æ¥"
],
[
13307,
1,
"28æ¥"
],
[
13308,
1,
"29æ¥"
],
[
13309,
1,
"30æ¥"
],
[
13310,
1,
"31æ¥"
],
[
13311,
1,
"gal"
],
[
[
13312,
19893
],
2
],
[
[
19894,
19903
],
2
],
[
[
19904,
19967
],
2
],
[
[
19968,
40869
],
2
],
[
[
40870,
40891
],
2
],
[
[
40892,
40899
],
2
],
[
[
40900,
40907
],
2
],
[
40908,
2
],
[
[
40909,
40917
],
2
],
[
[
40918,
40938
],
2
],
[
[
40939,
40943
],
2
],
[
[
40944,
40956
],
2
],
[
[
40957,
40959
],
3
],
[
[
40960,
42124
],
2
],
[
[
42125,
42127
],
3
],
[
[
42128,
42145
],
2
],
[
[
42146,
42147
],
2
],
[
[
42148,
42163
],
2
],
[
42164,
2
],
[
[
42165,
42176
],
2
],
[
42177,
2
],
[
[
42178,
42180
],
2
],
[
42181,
2
],
[
42182,
2
],
[
[
42183,
42191
],
3
],
[
[
42192,
42237
],
2
],
[
[
42238,
42239
],
2
],
[
[
42240,
42508
],
2
],
[
[
42509,
42511
],
2
],
[
[
42512,
42539
],
2
],
[
[
42540,
42559
],
3
],
[
42560,
1,
"ê"
],
[
42561,
2
],
[
42562,
1,
"ê"
],
[
42563,
2
],
[
42564,
1,
"ê
"
],
[
42565,
2
],
[
42566,
1,
"ê"
],
[
42567,
2
],
[
42568,
1,
"ê"
],
[
42569,
2
],
[
42570,
1,
"ê"
],
[
42571,
2
],
[
42572,
1,
"ê"
],
[
42573,
2
],
[
42574,
1,
"ê"
],
[
42575,
2
],
[
42576,
1,
"ê"
],
[
42577,
2
],
[
42578,
1,
"ê"
],
[
42579,
2
],
[
42580,
1,
"ê"
],
[
42581,
2
],
[
42582,
1,
"ê"
],
[
42583,
2
],
[
42584,
1,
"ê"
],
[
42585,
2
],
[
42586,
1,
"ê"
],
[
42587,
2
],
[
42588,
1,
"ê"
],
[
42589,
2
],
[
42590,
1,
"ê"
],
[
42591,
2
],
[
42592,
1,
"ê¡"
],
[
42593,
2
],
[
42594,
1,
"ê£"
],
[
42595,
2
],
[
42596,
1,
"ê¥"
],
[
42597,
2
],
[
42598,
1,
"ê§"
],
[
42599,
2
],
[
42600,
1,
"ê©"
],
[
42601,
2
],
[
42602,
1,
"ê«"
],
[
42603,
2
],
[
42604,
1,
"ê"
],
[
[
42605,
42607
],
2
],
[
[
42608,
42611
],
2
],
[
[
42612,
42619
],
2
],
[
[
42620,
42621
],
2
],
[
42622,
2
],
[
42623,
2
],
[
42624,
1,
"ê"
],
[
42625,
2
],
[
42626,
1,
"ê"
],
[
42627,
2
],
[
42628,
1,
"ê
"
],
[
42629,
2
],
[
42630,
1,
"ê"
],
[
42631,
2
],
[
42632,
1,
"ê"
],
[
42633,
2
],
[
42634,
1,
"ê"
],
[
42635,
2
],
[
42636,
1,
"ê"
],
[
42637,
2
],
[
42638,
1,
"ê"
],
[
42639,
2
],
[
42640,
1,
"ê"
],
[
42641,
2
],
[
42642,
1,
"ê"
],
[
42643,
2
],
[
42644,
1,
"ê"
],
[
42645,
2
],
[
42646,
1,
"ê"
],
[
42647,
2
],
[
42648,
1,
"ê"
],
[
42649,
2
],
[
42650,
1,
"ê"
],
[
42651,
2
],
[
42652,
1,
"Ñ"
],
[
42653,
1,
"Ñ"
],
[
42654,
2
],
[
42655,
2
],
[
[
42656,
42725
],
2
],
[
[
42726,
42735
],
2
],
[
[
42736,
42737
],
2
],
[
[
42738,
42743
],
2
],
[
[
42744,
42751
],
3
],
[
[
42752,
42774
],
2
],
[
[
42775,
42778
],
2
],
[
[
42779,
42783
],
2
],
[
[
42784,
42785
],
2
],
[
42786,
1,
"ê£"
],
[
42787,
2
],
[
42788,
1,
"ê¥"
],
[
42789,
2
],
[
42790,
1,
"ê§"
],
[
42791,
2
],
[
42792,
1,
"ê©"
],
[
42793,
2
],
[
42794,
1,
"ê«"
],
[
42795,
2
],
[
42796,
1,
"ê"
],
[
42797,
2
],
[
42798,
1,
"ê¯"
],
[
[
42799,
42801
],
2
],
[
42802,
1,
"ê³"
],
[
42803,
2
],
[
42804,
1,
"êµ"
],
[
42805,
2
],
[
42806,
1,
"ê·"
],
[
42807,
2
],
[
42808,
1,
"ê¹"
],
[
42809,
2
],
[
42810,
1,
"ê»"
],
[
42811,
2
],
[
42812,
1,
"ê½"
],
[
42813,
2
],
[
42814,
1,
"ê¿"
],
[
42815,
2
],
[
42816,
1,
"ê"
],
[
42817,
2
],
[
42818,
1,
"ê"
],
[
42819,
2
],
[
42820,
1,
"ê
"
],
[
42821,
2
],
[
42822,
1,
"ê"
],
[
42823,
2
],
[
42824,
1,
"ê"
],
[
42825,
2
],
[
42826,
1,
"ê"
],
[
42827,
2
],
[
42828,
1,
"ê"
],
[
42829,
2
],
[
42830,
1,
"ê"
],
[
42831,
2
],
[
42832,
1,
"ê"
],
[
42833,
2
],
[
42834,
1,
"ê"
],
[
42835,
2
],
[
42836,
1,
"ê"
],
[
42837,
2
],
[
42838,
1,
"ê"
],
[
42839,
2
],
[
42840,
1,
"ê"
],
[
42841,
2
],
[
42842,
1,
"ê"
],
[
42843,
2
],
[
42844,
1,
"ê"
],
[
42845,
2
],
[
42846,
1,
"ê"
],
[
42847,
2
],
[
42848,
1,
"ê¡"
],
[
42849,
2
],
[
42850,
1,
"ê£"
],
[
42851,
2
],
[
42852,
1,
"ê¥"
],
[
42853,
2
],
[
42854,
1,
"ê§"
],
[
42855,
2
],
[
42856,
1,
"ê©"
],
[
42857,
2
],
[
42858,
1,
"ê«"
],
[
42859,
2
],
[
42860,
1,
"ê"
],
[
42861,
2
],
[
42862,
1,
"ê¯"
],
[
42863,
2
],
[
42864,
1,
"ê¯"
],
[
[
42865,
42872
],
2
],
[
42873,
1,
"êº"
],
[
42874,
2
],
[
42875,
1,
"ê¼"
],
[
42876,
2
],
[
42877,
1,
"áµ¹"
],
[
42878,
1,
"ê¿"
],
[
42879,
2
],
[
42880,
1,
"ê"
],
[
42881,
2
],
[
42882,
1,
"ê"
],
[
42883,
2
],
[
42884,
1,
"ê
"
],
[
42885,
2
],
[
42886,
1,
"ê"
],
[
[
42887,
42888
],
2
],
[
[
42889,
42890
],
2
],
[
42891,
1,
"ê"
],
[
42892,
2
],
[
42893,
1,
"É¥"
],
[
42894,
2
],
[
42895,
2
],
[
42896,
1,
"ê"
],
[
42897,
2
],
[
42898,
1,
"ê"
],
[
42899,
2
],
[
[
42900,
42901
],
2
],
[
42902,
1,
"ê"
],
[
42903,
2
],
[
42904,
1,
"ê"
],
[
42905,
2
],
[
42906,
1,
"ê"
],
[
42907,
2
],
[
42908,
1,
"ê"
],
[
42909,
2
],
[
42910,
1,
"ê"
],
[
42911,
2
],
[
42912,
1,
"ê¡"
],
[
42913,
2
],
[
42914,
1,
"ê£"
],
[
42915,
2
],
[
42916,
1,
"ê¥"
],
[
42917,
2
],
[
42918,
1,
"ê§"
],
[
42919,
2
],
[
42920,
1,
"ê©"
],
[
42921,
2
],
[
42922,
1,
"ɦ"
],
[
42923,
1,
"É"
],
[
42924,
1,
"É¡"
],
[
42925,
1,
"ɬ"
],
[
42926,
1,
"ɪ"
],
[
42927,
2
],
[
42928,
1,
"Ê"
],
[
42929,
1,
"Ê"
],
[
42930,
1,
"Ê"
],
[
42931,
1,
"ê"
],
[
42932,
1,
"êµ"
],
[
42933,
2
],
[
42934,
1,
"ê·"
],
[
42935,
2
],
[
42936,
1,
"ê¹"
],
[
42937,
2
],
[
42938,
1,
"ê»"
],
[
42939,
2
],
[
42940,
1,
"ê½"
],
[
42941,
2
],
[
42942,
1,
"ê¿"
],
[
42943,
2
],
[
[
42944,
42945
],
3
],
[
42946,
1,
"ê"
],
[
42947,
2
],
[
42948,
1,
"ê"
],
[
42949,
1,
"Ê"
],
[
42950,
1,
"á¶"
],
[
42951,
1,
"ê"
],
[
42952,
2
],
[
42953,
1,
"ê"
],
[
42954,
2
],
[
[
42955,
42996
],
3
],
[
42997,
1,
"ê¶"
],
[
42998,
2
],
[
42999,
2
],
[
43000,
1,
"ħ"
],
[
43001,
1,
"Å"
],
[
43002,
2
],
[
[
43003,
43007
],
2
],
[
[
43008,
43047
],
2
],
[
[
43048,
43051
],
2
],
[
43052,
2
],
[
[
43053,
43055
],
3
],
[
[
43056,
43065
],
2
],
[
[
43066,
43071
],
3
],
[
[
43072,
43123
],
2
],
[
[
43124,
43127
],
2
],
[
[
43128,
43135
],
3
],
[
[
43136,
43204
],
2
],
[
43205,
2
],
[
[
43206,
43213
],
3
],
[
[
43214,
43215
],
2
],
[
[
43216,
43225
],
2
],
[
[
43226,
43231
],
3
],
[
[
43232,
43255
],
2
],
[
[
43256,
43258
],
2
],
[
43259,
2
],
[
43260,
2
],
[
43261,
2
],
[
[
43262,
43263
],
2
],
[
[
43264,
43309
],
2
],
[
[
43310,
43311
],
2
],
[
[
43312,
43347
],
2
],
[
[
43348,
43358
],
3
],
[
43359,
2
],
[
[
43360,
43388
],
2
],
[
[
43389,
43391
],
3
],
[
[
43392,
43456
],
2
],
[
[
43457,
43469
],
2
],
[
43470,
3
],
[
[
43471,
43481
],
2
],
[
[
43482,
43485
],
3
],
[
[
43486,
43487
],
2
],
[
[
43488,
43518
],
2
],
[
43519,
3
],
[
[
43520,
43574
],
2
],
[
[
43575,
43583
],
3
],
[
[
43584,
43597
],
2
],
[
[
43598,
43599
],
3
],
[
[
43600,
43609
],
2
],
[
[
43610,
43611
],
3
],
[
[
43612,
43615
],
2
],
[
[
43616,
43638
],
2
],
[
[
43639,
43641
],
2
],
[
[
43642,
43643
],
2
],
[
[
43644,
43647
],
2
],
[
[
43648,
43714
],
2
],
[
[
43715,
43738
],
3
],
[
[
43739,
43741
],
2
],
[
[
43742,
43743
],
2
],
[
[
43744,
43759
],
2
],
[
[
43760,
43761
],
2
],
[
[
43762,
43766
],
2
],
[
[
43767,
43776
],
3
],
[
[
43777,
43782
],
2
],
[
[
43783,
43784
],
3
],
[
[
43785,
43790
],
2
],
[
[
43791,
43792
],
3
],
[
[
43793,
43798
],
2
],
[
[
43799,
43807
],
3
],
[
[
43808,
43814
],
2
],
[
43815,
3
],
[
[
43816,
43822
],
2
],
[
43823,
3
],
[
[
43824,
43866
],
2
],
[
43867,
2
],
[
43868,
1,
"ê§"
],
[
43869,
1,
"ꬷ"
],
[
43870,
1,
"É«"
],
[
43871,
1,
"ê"
],
[
[
43872,
43875
],
2
],
[
[
43876,
43877
],
2
],
[
[
43878,
43879
],
2
],
[
43880,
2
],
[
43881,
1,
"Ê"
],
[
[
43882,
43883
],
2
],
[
[
43884,
43887
],
3
],
[
43888,
1,
"á "
],
[
43889,
1,
"á¡"
],
[
43890,
1,
"á¢"
],
[
43891,
1,
"á£"
],
[
43892,
1,
"á¤"
],
[
43893,
1,
"á¥"
],
[
43894,
1,
"á¦"
],
[
43895,
1,
"á§"
],
[
43896,
1,
"á¨"
],
[
43897,
1,
"á©"
],
[
43898,
1,
"áª"
],
[
43899,
1,
"á«"
],
[
43900,
1,
"á¬"
],
[
43901,
1,
"á"
],
[
43902,
1,
"á®"
],
[
43903,
1,
"á¯"
],
[
43904,
1,
"á°"
],
[
43905,
1,
"á±"
],
[
43906,
1,
"á²"
],
[
43907,
1,
"á³"
],
[
43908,
1,
"á´"
],
[
43909,
1,
"áµ"
],
[
43910,
1,
"á¶"
],
[
43911,
1,
"á·"
],
[
43912,
1,
"á¸"
],
[
43913,
1,
"á¹"
],
[
43914,
1,
"áº"
],
[
43915,
1,
"á»"
],
[
43916,
1,
"á¼"
],
[
43917,
1,
"á½"
],
[
43918,
1,
"á¾"
],
[
43919,
1,
"á¿"
],
[
43920,
1,
"á"
],
[
43921,
1,
"á"
],
[
43922,
1,
"á"
],
[
43923,
1,
"á"
],
[
43924,
1,
"á"
],
[
43925,
1,
"á
"
],
[
43926,
1,
"á"
],
[
43927,
1,
"á"
],
[
43928,
1,
"á"
],
[
43929,
1,
"á"
],
[
43930,
1,
"á"
],
[
43931,
1,
"á"
],
[
43932,
1,
"á"
],
[
43933,
1,
"á"
],
[
43934,
1,
"á"
],
[
43935,
1,
"á"
],
[
43936,
1,
"á"
],
[
43937,
1,
"á"
],
[
43938,
1,
"á"
],
[
43939,
1,
"á"
],
[
43940,
1,
"á"
],
[
43941,
1,
"á"
],
[
43942,
1,
"á"
],
[
43943,
1,
"á"
],
[
43944,
1,
"á"
],
[
43945,
1,
"á"
],
[
43946,
1,
"á"
],
[
43947,
1,
"á"
],
[
43948,
1,
"á"
],
[
43949,
1,
"á"
],
[
43950,
1,
"á"
],
[
43951,
1,
"á"
],
[
43952,
1,
"á "
],
[
43953,
1,
"á¡"
],
[
43954,
1,
"á¢"
],
[
43955,
1,
"á£"
],
[
43956,
1,
"á¤"
],
[
43957,
1,
"á¥"
],
[
43958,
1,
"á¦"
],
[
43959,
1,
"á§"
],
[
43960,
1,
"á¨"
],
[
43961,
1,
"á©"
],
[
43962,
1,
"áª"
],
[
43963,
1,
"á«"
],
[
43964,
1,
"á¬"
],
[
43965,
1,
"á"
],
[
43966,
1,
"á®"
],
[
43967,
1,
"á¯"
],
[
[
43968,
44010
],
2
],
[
44011,
2
],
[
[
44012,
44013
],
2
],
[
[
44014,
44015
],
3
],
[
[
44016,
44025
],
2
],
[
[
44026,
44031
],
3
],
[
[
44032,
55203
],
2
],
[
[
55204,
55215
],
3
],
[
[
55216,
55238
],
2
],
[
[
55239,
55242
],
3
],
[
[
55243,
55291
],
2
],
[
[
55292,
55295
],
3
],
[
[
55296,
57343
],
3
],
[
[
57344,
63743
],
3
],
[
63744,
1,
"è±"
],
[
63745,
1,
"æ´"
],
[
63746,
1,
"è»"
],
[
63747,
1,
"è³"
],
[
63748,
1,
"æ»"
],
[
63749,
1,
"串"
],
[
63750,
1,
"å¥"
],
[
[
63751,
63752
],
1,
"é¾"
],
[
63753,
1,
"å¥"
],
[
63754,
1,
"é"
],
[
63755,
1,
"å"
],
[
63756,
1,
"å¥"
],
[
63757,
1,
"æ¶"
],
[
63758,
1,
"ç©"
],
[
63759,
1,
"ç¾
"
],
[
63760,
1,
"è¿"
],
[
63761,
1,
"èº"
],
[
63762,
1,
"裸"
],
[
63763,
1,
"é"
],
[
63764,
1,
"æ¨"
],
[
63765,
1,
"æ´"
],
[
63766,
1,
"ç"
],
[
63767,
1,
"ç"
],
[
63768,
1,
"è½"
],
[
63769,
1,
"é
ª"
],
[
63770,
1,
"é§±"
],
[
63771,
1,
"äº"
],
[
63772,
1,
"åµ"
],
[
63773,
1,
"æ¬"
],
[
63774,
1,
"ç"
],
[
63775,
1,
"è"
],
[
63776,
1,
"é¸"
],
[
63777,
1,
"åµ"
],
[
63778,
1,
"æ¿«"
],
[
63779,
1,
"è"
],
[
63780,
1,
"襤"
],
[
63781,
1,
"æ"
],
[
63782,
1,
"è"
],
[
63783,
1,
"è "
],
[
63784,
1,
"å»"
],
[
63785,
1,
"æ"
],
[
63786,
1,
"浪"
],
[
63787,
1,
"ç¼"
],
[
63788,
1,
"é"
],
[
63789,
1,
"ä¾"
],
[
63790,
1,
"å·"
],
[
63791,
1,
"å"
],
[
63792,
1,
"æ"
],
[
63793,
1,
"æ«"
],
[
63794,
1,
"ç"
],
[
63795,
1,
"ç§"
],
[
63796,
1,
"è"
],
[
63797,
1,
"è"
],
[
63798,
1,
"è"
],
[
63799,
1,
"è·¯"
],
[
63800,
1,
"é²"
],
[
63801,
1,
"é¯"
],
[
63802,
1,
"é·º"
],
[
63803,
1,
"ç¢"
],
[
63804,
1,
"祿"
],
[
63805,
1,
"ç¶ "
],
[
63806,
1,
"è"
],
[
63807,
1,
"é"
],
[
63808,
1,
"鹿"
],
[
63809,
1,
"è«"
],
[
63810,
1,
"å£"
],
[
63811,
1,
"å¼"
],
[
63812,
1,
"ç± "
],
[
63813,
1,
"è¾"
],
[
63814,
1,
"ç¢"
],
[
63815,
1,
"ç£"
],
[
63816,
1,
"è³"
],
[
63817,
1,
"é·"
],
[
63818,
1,
"å£"
],
[
63819,
1,
"å±¢"
],
[
63820,
1,
"æ¨"
],
[
63821,
1,
"æ·"
],
[
63822,
1,
"æ¼"
],
[
63823,
1,
"ç´¯"
],
[
63824,
1,
"縷"
],
[
63825,
1,
"é"
],
[
63826,
1,
"å"
],
[
63827,
1,
"è"
],
[
63828,
1,
"å"
],
[
63829,
1,
"å"
],
[
63830,
1,
"ç¨"
],
[
63831,
1,
"ç¶¾"
],
[
63832,
1,
"è±"
],
[
63833,
1,
"éµ"
],
[
63834,
1,
"è®"
],
[
63835,
1,
"æ"
],
[
63836,
1,
"æ¨"
],
[
63837,
1,
"諾"
],
[
63838,
1,
"丹"
],
[
63839,
1,
"寧"
],
[
63840,
1,
"æ"
],
[
63841,
1,
"ç"
],
[
63842,
1,
"ç°"
],
[
63843,
1,
"å"
],
[
63844,
1,
"磻"
],
[
63845,
1,
"便"
],
[
63846,
1,
"復"
],
[
63847,
1,
"ä¸"
],
[
63848,
1,
"æ³"
],
[
63849,
1,
"æ¸"
],
[
63850,
1,
"ç´¢"
],
[
63851,
1,
"å"
],
[
63852,
1,
"å¡"
],
[
63853,
1,
"ç"
],
[
63854,
1,
"è"
],
[
63855,
1,
"說"
],
[
63856,
1,
"殺"
],
[
63857,
1,
"è¾°"
],
[
63858,
1,
"æ²"
],
[
63859,
1,
"æ¾"
],
[
63860,
1,
"è¥"
],
[
63861,
1,
"æ "
],
[
63862,
1,
"ç¥"
],
[
63863,
1,
"亮"
],
[
63864,
1,
"å
©"
],
[
63865,
1,
"å"
],
[
63866,
1,
"æ¢"
],
[
63867,
1,
"ç³§"
],
[
63868,
1,
"è¯"
],
[
63869,
1,
"è«"
],
[
63870,
1,
"é"
],
[
63871,
1,
"åµ"
],
[
63872,
1,
"å"
],
[
63873,
1,
"女"
],
[
63874,
1,
"廬"
],
[
63875,
1,
"æ
"
],
[
63876,
1,
"濾"
],
[
63877,
1,
"礪"
],
[
63878,
1,
"é"
],
[
63879,
1,
"驪"
],
[
63880,
1,
"éº"
],
[
63881,
1,
"é»"
],
[
63882,
1,
"å"
],
[
63883,
1,
"æ"
],
[
63884,
1,
"æ·"
],
[
63885,
1,
"è½¢"
],
[
63886,
1,
"å¹´"
],
[
63887,
1,
"æ"
],
[
63888,
1,
"æ"
],
[
63889,
1,
"æ"
],
[
63890,
1,
"æ¼£"
],
[
63891,
1,
"ç
"
],
[
63892,
1,
"ç"
],
[
63893,
1,
"ç§"
],
[
63894,
1,
"ç·´"
],
[
63895,
1,
"è¯"
],
[
63896,
1,
"輦"
],
[
63897,
1,
"è®"
],
[
63898,
1,
"é£"
],
[
63899,
1,
"é"
],
[
63900,
1,
"å"
],
[
63901,
1,
"å£"
],
[
63902,
1,
"å½"
],
[
63903,
1,
"ç"
],
[
63904,
1,
"è£"
],
[
63905,
1,
"說"
],
[
63906,
1,
"å»"
],
[
63907,
1,
"念"
],
[
63908,
1,
"æ»"
],
[
63909,
1,
"æ®®"
],
[
63910,
1,
"ç°¾"
],
[
63911,
1,
"çµ"
],
[
63912,
1,
"令"
],
[
63913,
1,
"å¹"
],
[
63914,
1,
"寧"
],
[
63915,
1,
"嶺"
],
[
63916,
1,
"æ"
],
[
63917,
1,
"ç²"
],
[
63918,
1,
"ç©"
],
[
63919,
1,
"ç¾"
],
[
63920,
1,
"è"
],
[
63921,
1,
"é´"
],
[
63922,
1,
"é¶"
],
[
63923,
1,
"é"
],
[
63924,
1,
"é "
],
[
63925,
1,
"ä¾"
],
[
63926,
1,
"禮"
],
[
63927,
1,
"é´"
],
[
63928,
1,
"é¸"
],
[
63929,
1,
"æ¡"
],
[
63930,
1,
"äº"
],
[
63931,
1,
"å"
],
[
63932,
1,
"寮"
],
[
63933,
1,
"å°¿"
],
[
63934,
1,
"æ"
],
[
63935,
1,
"æ¨"
],
[
63936,
1,
"ç"
],
[
63937,
1,
"ç"
],
[
63938,
1,
"è¼"
],
[
63939,
1,
"é¼"
],
[
63940,
1,
"é¾"
],
[
63941,
1,
"æ"
],
[
63942,
1,
"é®"
],
[
63943,
1,
"å"
],
[
63944,
1,
"æ»"
],
[
63945,
1,
"æ³"
],
[
63946,
1,
"æµ"
],
[
63947,
1,
"æº"
],
[
63948,
1,
"ç"
],
[
63949,
1,
"ç"
],
[
63950,
1,
"ç¡«"
],
[
63951,
1,
"ç´"
],
[
63952,
1,
"é¡"
],
[
63953,
1,
"å
"
],
[
63954,
1,
"æ®"
],
[
63955,
1,
"é¸"
],
[
63956,
1,
"å«"
],
[
63957,
1,
"å´"
],
[
63958,
1,
"æ·ª"
],
[
63959,
1,
"輪"
],
[
63960,
1,
"å¾"
],
[
63961,
1,
"æ
"
],
[
63962,
1,
"æ "
],
[
63963,
1,
"ç"
],
[
63964,
1,
"é"
],
[
63965,
1,
"å©"
],
[
63966,
1,
"å"
],
[
63967,
1,
"å±¥"
],
[
63968,
1,
"æ"
],
[
63969,
1,
"æ"
],
[
63970,
1,
"梨"
],
[
63971,
1,
"æ³¥"
],
[
63972,
1,
"ç"
],
[
63973,
1,
"ç¢"
],
[
63974,
1,
"ç½¹"
],
[
63975,
1,
"è£"
],
[
63976,
1,
"裡"
],
[
63977,
1,
"é"
],
[
63978,
1,
"é¢"
],
[
63979,
1,
"å¿"
],
[
63980,
1,
"溺"
],
[
63981,
1,
"å"
],
[
63982,
1,
"ç"
],
[
63983,
1,
"ç"
],
[
63984,
1,
"èº"
],
[
63985,
1,
"é£"
],
[
63986,
1,
"é±"
],
[
63987,
1,
"éº"
],
[
63988,
1,
"æ"
],
[
63989,
1,
"æ·"
],
[
63990,
1,
"è¨"
],
[
63991,
1,
"ç«"
],
[
63992,
1,
"ç¬ "
],
[
63993,
1,
"ç²"
],
[
63994,
1,
"ç"
],
[
63995,
1,
"ç"
],
[
63996,
1,
"è"
],
[
63997,
1,
"ä»"
],
[
63998,
1,
"è¶"
],
[
63999,
1,
"åº"
],
[
64000,
1,
"å"
],
[
64001,
1,
"度"
],
[
64002,
1,
"æ"
],
[
64003,
1,
"ç³"
],
[
64004,
1,
"å®
"
],
[
64005,
1,
"æ´"
],
[
64006,
1,
"æ´"
],
[
64007,
1,
"è¼»"
],
[
64008,
1,
"è¡"
],
[
64009,
1,
"é"
],
[
64010,
1,
"è¦"
],
[
64011,
1,
"å»"
],
[
64012,
1,
"å
"
],
[
64013,
1,
"å"
],
[
[
64014,
64015
],
2
],
[
64016,
1,
"å¡"
],
[
64017,
2
],
[
64018,
1,
"æ´"
],
[
[
64019,
64020
],
2
],
[
64021,
1,
"å"
],
[
64022,
1,
"çª"
],
[
64023,
1,
"ç"
],
[
64024,
1,
"礼"
],
[
64025,
1,
"ç¥"
],
[
64026,
1,
"祥"
],
[
64027,
1,
"ç¦"
],
[
64028,
1,
"é"
],
[
64029,
1,
"ç²¾"
],
[
64030,
1,
"ç¾½"
],
[
64031,
2
],
[
64032,
1,
"è"
],
[
64033,
2
],
[
64034,
1,
"諸"
],
[
[
64035,
64036
],
2
],
[
64037,
1,
"é¸"
],
[
64038,
1,
"é½"
],
[
[
64039,
64041
],
2
],
[
64042,
1,
"飯"
],
[
64043,
1,
"飼"
],
[
64044,
1,
"館"
],
[
64045,
1,
"é¶´"
],
[
64046,
1,
"é"
],
[
64047,
1,
"é·"
],
[
64048,
1,
"ä¾®"
],
[
64049,
1,
"å§"
],
[
64050,
1,
"å
"
],
[
64051,
1,
"å"
],
[
64052,
1,
"å¤"
],
[
64053,
1,
"å"
],
[
64054,
1,
"å"
],
[
64055,
1,
"å"
],
[
64056,
1,
"å¨"
],
[
64057,
1,
"å¡"
],
[
64058,
1,
"墨"
],
[
64059,
1,
"層"
],
[
64060,
1,
"å±®"
],
[
64061,
1,
"æ"
],
[
64062,
1,
"æ
¨"
],
[
64063,
1,
"æ"
],
[
64064,
1,
"æ²"
],
[
64065,
1,
"æ"
],
[
64066,
1,
"æ¢"
],
[
64067,
1,
"æ"
],
[
64068,
1,
"æ¢
"
],
[
64069,
1,
"æµ·"
],
[
64070,
1,
"æ¸"
],
[
64071,
1,
"æ¼¢"
],
[
64072,
1,
"ç
®"
],
[
64073,
1,
"ç«"
],
[
64074,
1,
"ç¢"
],
[
64075,
1,
"ç¢"
],
[
64076,
1,
"社"
],
[
64077,
1,
"ç¥"
],
[
64078,
1,
"ç¥"
],
[
64079,
1,
"ç¥"
],
[
64080,
1,
"ç¥"
],
[
64081,
1,
"ç¥"
],
[
64082,
1,
"ç¦"
],
[
64083,
1,
"ç¦"
],
[
64084,
1,
"ç©"
],
[
64085,
1,
"çª"
],
[
64086,
1,
"ç¯"
],
[
64087,
1,
"ç·´"
],
[
64088,
1,
"ç¸"
],
[
64089,
1,
"ç¹"
],
[
64090,
1,
"ç½²"
],
[
64091,
1,
"è
"
],
[
64092,
1,
"è"
],
[
[
64093,
64094
],
1,
"è¹"
],
[
64095,
1,
"è"
],
[
64096,
1,
"è¤"
],
[
64097,
1,
"è¦"
],
[
64098,
1,
"è¬"
],
[
64099,
1,
"謹"
],
[
64100,
1,
"è³"
],
[
64101,
1,
"è´"
],
[
64102,
1,
"è¾¶"
],
[
64103,
1,
"é¸"
],
[
64104,
1,
"é£"
],
[
64105,
1,
"é¿"
],
[
64106,
1,
"é »"
],
[
64107,
1,
"æµ"
],
[
64108,
1,
"ð¤®"
],
[
64109,
1,
"è"
],
[
[
64110,
64111
],
3
],
[
64112,
1,
"並"
],
[
64113,
1,
"åµ"
],
[
64114,
1,
"å
¨"
],
[
64115,
1,
"ä¾"
],
[
64116,
1,
"å
"
],
[
64117,
1,
"å"
],
[
64118,
1,
"å"
],
[
64119,
1,
"åº"
],
[
64120,
1,
"å"
],
[
64121,
1,
"å"
],
[
64122,
1,
"å"
],
[
64123,
1,
"å¢"
],
[
64124,
1,
"å¡"
],
[
64125,
1,
"墳"
],
[
64126,
1,
"å¥"
],
[
64127,
1,
"å¥"
],
[
64128,
1,
"å©¢"
],
[
64129,
1,
"嬨"
],
[
64130,
1,
"å»"
],
[
64131,
1,
"å»"
],
[
64132,
1,
"彩"
],
[
64133,
1,
"å¾"
],
[
64134,
1,
"æ"
],
[
64135,
1,
"æ
"
],
[
64136,
1,
"æ"
],
[
64137,
1,
"æ"
],
[
64138,
1,
"æ
"
],
[
64139,
1,
"æ²"
],
[
64140,
1,
"æ´"
],
[
64141,
1,
"æ"
],
[
64142,
1,
"æ"
],
[
64143,
1,
"æ"
],
[
64144,
1,
"æ"
],
[
64145,
1,
"æ´"
],
[
64146,
1,
"æ"
],
[
64147,
1,
"æ"
],
[
64148,
1,
"æ"
],
[
64149,
1,
"æ¹"
],
[
64150,
1,
"殺"
],
[
64151,
1,
"æµ"
],
[
64152,
1,
"æ»"
],
[
64153,
1,
"æ»"
],
[
64154,
1,
"æ¼¢"
],
[
64155,
1,
"ç"
],
[
64156,
1,
"ç
®"
],
[
64157,
1,
"ç§"
],
[
64158,
1,
"çµ"
],
[
64159,
1,
"ç¯"
],
[
64160,
1,
"çª"
],
[
64161,
1,
"ç±"
],
[
64162,
1,
"ç"
],
[
64163,
1,
"ç»"
],
[
64164,
1,
"ç"
],
[
64165,
1,
"ç"
],
[
64166,
1,
"ç"
],
[
64167,
1,
"ç"
],
[
64168,
1,
"ç´"
],
[
64169,
1,
"ç"
],
[
64170,
1,
"ç"
],
[
64171,
1,
"ç£"
],
[
64172,
1,
"窱"
],
[
64173,
1,
"ç¯"
],
[
64174,
1,
"ç±»"
],
[
64175,
1,
"çµ"
],
[
64176,
1,
"ç·´"
],
[
64177,
1,
"ç¼¾"
],
[
64178,
1,
"è
"
],
[
64179,
1,
"è"
],
[
64180,
1,
"è¯"
],
[
64181,
1,
"è¹"
],
[
64182,
1,
"è¥"
],
[
64183,
1,
"è¦"
],
[
64184,
1,
"è¦"
],
[
64185,
1,
"調"
],
[
64186,
1,
"諸"
],
[
64187,
1,
"è«"
],
[
64188,
1,
"è¬"
],
[
64189,
1,
"諾"
],
[
64190,
1,
"è«"
],
[
64191,
1,
"謹"
],
[
64192,
1,
"è®"
],
[
64193,
1,
"è´"
],
[
64194,
1,
"輸"
],
[
64195,
1,
"é²"
],
[
64196,
1,
"é"
],
[
64197,
1,
"é¶"
],
[
64198,
1,
"é¼"
],
[
64199,
1,
"é£"
],
[
64200,
1,
"é"
],
[
64201,
1,
"é"
],
[
64202,
1,
"é¿"
],
[
64203,
1,
"é "
],
[
64204,
1,
"é »"
],
[
64205,
1,
"é¬"
],
[
64206,
1,
"é¾"
],
[
64207,
1,
"ð¢¡"
],
[
64208,
1,
"ð¢¡"
],
[
64209,
1,
"ð£"
],
[
64210,
1,
"ã®"
],
[
64211,
1,
"ä"
],
[
64212,
1,
"ä¹"
],
[
64213,
1,
"ð¥"
],
[
64214,
1,
"ð¥³"
],
[
64215,
1,
"ð§»"
],
[
64216,
1,
"é½"
],
[
64217,
1,
"é¾"
],
[
[
64218,
64255
],
3
],
[
64256,
1,
"ff"
],
[
64257,
1,
"fi"
],
[
64258,
1,
"fl"
],
[
64259,
1,
"ffi"
],
[
64260,
1,
"ffl"
],
[
[
64261,
64262
],
1,
"st"
],
[
[
64263,
64274
],
3
],
[
64275,
1,
"Õ´Õ¶"
],
[
64276,
1,
"Õ´Õ¥"
],
[
64277,
1,
"Õ´Õ«"
],
[
64278,
1,
"Õ¾Õ¶"
],
[
64279,
1,
"Õ´Õ"
],
[
[
64280,
64284
],
3
],
[
64285,
1,
"×Ö´"
],
[
64286,
2
],
[
64287,
1,
"ײַ"
],
[
64288,
1,
"×¢"
],
[
64289,
1,
"×"
],
[
64290,
1,
"×"
],
[
64291,
1,
"×"
],
[
64292,
1,
"×"
],
[
64293,
1,
"×"
],
[
64294,
1,
"×"
],
[
64295,
1,
"ר"
],
[
64296,
1,
"ת"
],
[
64297,
5,
"+"
],
[
64298,
1,
"ש×"
],
[
64299,
1,
"ש×"
],
[
64300,
1,
"שּ×"
],
[
64301,
1,
"שּ×"
],
[
64302,
1,
"×Ö·"
],
[
64303,
1,
"×Ö¸"
],
[
64304,
1,
"×Ö¼"
],
[
64305,
1,
"×Ö¼"
],
[
64306,
1,
"×Ö¼"
],
[
64307,
1,
"×Ö¼"
],
[
64308,
1,
"×Ö¼"
],
[
64309,
1,
"×Ö¼"
],
[
64310,
1,
"×Ö¼"
],
[
64311,
3
],
[
64312,
1,
"×Ö¼"
],
[
64313,
1,
"×Ö¼"
],
[
64314,
1,
"×Ö¼"
],
[
64315,
1,
"×Ö¼"
],
[
64316,
1,
"×Ö¼"
],
[
64317,
3
],
[
64318,
1,
"×Ö¼"
],
[
64319,
3
],
[
64320,
1,
"× Ö¼"
],
[
64321,
1,
"סּ"
],
[
64322,
3
],
[
64323,
1,
"×£Ö¼"
],
[
64324,
1,
"פּ"
],
[
64325,
3
],
[
64326,
1,
"צּ"
],
[
64327,
1,
"×§Ö¼"
],
[
64328,
1,
"רּ"
],
[
64329,
1,
"שּ"
],
[
64330,
1,
"תּ"
],
[
64331,
1,
"×Ö¹"
],
[
64332,
1,
"×Ö¿"
],
[
64333,
1,
"×Ö¿"
],
[
64334,
1,
"פֿ"
],
[
64335,
1,
"××"
],
[
[
64336,
64337
],
1,
"Ù±"
],
[
[
64338,
64341
],
1,
"Ù»"
],
[
[
64342,
64345
],
1,
"Ù¾"
],
[
[
64346,
64349
],
1,
"Ú"
],
[
[
64350,
64353
],
1,
"Ùº"
],
[
[
64354,
64357
],
1,
"Ù¿"
],
[
[
64358,
64361
],
1,
"Ù¹"
],
[
[
64362,
64365
],
1,
"Ú¤"
],
[
[
64366,
64369
],
1,
"Ú¦"
],
[
[
64370,
64373
],
1,
"Ú"
],
[
[
64374,
64377
],
1,
"Ú"
],
[
[
64378,
64381
],
1,
"Ú"
],
[
[
64382,
64385
],
1,
"Ú"
],
[
[
64386,
64387
],
1,
"Ú"
],
[
[
64388,
64389
],
1,
"Ú"
],
[
[
64390,
64391
],
1,
"Ú"
],
[
[
64392,
64393
],
1,
"Ú"
],
[
[
64394,
64395
],
1,
"Ú"
],
[
[
64396,
64397
],
1,
"Ú"
],
[
[
64398,
64401
],
1,
"Ú©"
],
[
[
64402,
64405
],
1,
"Ú¯"
],
[
[
64406,
64409
],
1,
"Ú³"
],
[
[
64410,
64413
],
1,
"Ú±"
],
[
[
64414,
64415
],
1,
"Úº"
],
[
[
64416,
64419
],
1,
"Ú»"
],
[
[
64420,
64421
],
1,
"Û"
],
[
[
64422,
64425
],
1,
"Û"
],
[
[
64426,
64429
],
1,
"Ú¾"
],
[
[
64430,
64431
],
1,
"Û"
],
[
[
64432,
64433
],
1,
"Û"
],
[
[
64434,
64449
],
2
],
[
[
64450,
64466
],
3
],
[
[
64467,
64470
],
1,
"Ú"
],
[
[
64471,
64472
],
1,
"Û"
],
[
[
64473,
64474
],
1,
"Û"
],
[
[
64475,
64476
],
1,
"Û"
],
[
64477,
1,
"ÛÙ´"
],
[
[
64478,
64479
],
1,
"Û"
],
[
[
64480,
64481
],
1,
"Û
"
],
[
[
64482,
64483
],
1,
"Û"
],
[
[
64484,
64487
],
1,
"Û"
],
[
[
64488,
64489
],
1,
"Ù"
],
[
[
64490,
64491
],
1,
"ئا"
],
[
[
64492,
64493
],
1,
"ئÛ"
],
[
[
64494,
64495
],
1,
"ئÙ"
],
[
[
64496,
64497
],
1,
"ئÛ"
],
[
[
64498,
64499
],
1,
"ئÛ"
],
[
[
64500,
64501
],
1,
"ئÛ"
],
[
[
64502,
64504
],
1,
"ئÛ"
],
[
[
64505,
64507
],
1,
"ئÙ"
],
[
[
64508,
64511
],
1,
"Û"
],
[
64512,
1,
"ئج"
],
[
64513,
1,
"ئØ"
],
[
64514,
1,
"ئÙ
"
],
[
64515,
1,
"ئÙ"
],
[
64516,
1,
"ئÙ"
],
[
64517,
1,
"بج"
],
[
64518,
1,
"بØ"
],
[
64519,
1,
"بخ"
],
[
64520,
1,
"بÙ
"
],
[
64521,
1,
"بÙ"
],
[
64522,
1,
"بÙ"
],
[
64523,
1,
"تج"
],
[
64524,
1,
"تØ"
],
[
64525,
1,
"تخ"
],
[
64526,
1,
"تÙ
"
],
[
64527,
1,
"تÙ"
],
[
64528,
1,
"تÙ"
],
[
64529,
1,
"ثج"
],
[
64530,
1,
"Ø«Ù
"
],
[
64531,
1,
"Ø«Ù"
],
[
64532,
1,
"Ø«Ù"
],
[
64533,
1,
"جØ"
],
[
64534,
1,
"جÙ
"
],
[
64535,
1,
"ØØ¬"
],
[
64536,
1,
"ØÙ
"
],
[
64537,
1,
"خج"
],
[
64538,
1,
"Ø®Ø"
],
[
64539,
1,
"Ø®Ù
"
],
[
64540,
1,
"سج"
],
[
64541,
1,
"سØ"
],
[
64542,
1,
"سخ"
],
[
64543,
1,
"سÙ
"
],
[
64544,
1,
"صØ"
],
[
64545,
1,
"صÙ
"
],
[
64546,
1,
"ضج"
],
[
64547,
1,
"ضØ"
],
[
64548,
1,
"ضخ"
],
[
64549,
1,
"ضÙ
"
],
[
64550,
1,
"Ø·Ø"
],
[
64551,
1,
"Ø·Ù
"
],
[
64552,
1,
"ظÙ
"
],
[
64553,
1,
"عج"
],
[
64554,
1,
"عÙ
"
],
[
64555,
1,
"غج"
],
[
64556,
1,
"غÙ
"
],
[
64557,
1,
"ÙØ¬"
],
[
64558,
1,
"ÙØ"
],
[
64559,
1,
"ÙØ®"
],
[
64560,
1,
"ÙÙ
"
],
[
64561,
1,
"ÙÙ"
],
[
64562,
1,
"ÙÙ"
],
[
64563,
1,
"ÙØ"
],
[
64564,
1,
"ÙÙ
"
],
[
64565,
1,
"ÙÙ"
],
[
64566,
1,
"ÙÙ"
],
[
64567,
1,
"ÙØ§"
],
[
64568,
1,
"ÙØ¬"
],
[
64569,
1,
"ÙØ"
],
[
64570,
1,
"ÙØ®"
],
[
64571,
1,
"ÙÙ"
],
[
64572,
1,
"ÙÙ
"
],
[
64573,
1,
"ÙÙ"
],
[
64574,
1,
"ÙÙ"
],
[
64575,
1,
"ÙØ¬"
],
[
64576,
1,
"ÙØ"
],
[
64577,
1,
"ÙØ®"
],
[
64578,
1,
"ÙÙ
"
],
[
64579,
1,
"ÙÙ"
],
[
64580,
1,
"ÙÙ"
],
[
64581,
1,
"Ù
ج"
],
[
64582,
1,
"Ù
Ø"
],
[
64583,
1,
"Ù
Ø®"
],
[
64584,
1,
"Ù
Ù
"
],
[
64585,
1,
"Ù
Ù"
],
[
64586,
1,
"Ù
Ù"
],
[
64587,
1,
"ÙØ¬"
],
[
64588,
1,
"ÙØ"
],
[
64589,
1,
"ÙØ®"
],
[
64590,
1,
"ÙÙ
"
],
[
64591,
1,
"ÙÙ"
],
[
64592,
1,
"ÙÙ"
],
[
64593,
1,
"ÙØ¬"
],
[
64594,
1,
"ÙÙ
"
],
[
64595,
1,
"ÙÙ"
],
[
64596,
1,
"ÙÙ"
],
[
64597,
1,
"ÙØ¬"
],
[
64598,
1,
"ÙØ"
],
[
64599,
1,
"ÙØ®"
],
[
64600,
1,
"ÙÙ
"
],
[
64601,
1,
"ÙÙ"
],
[
64602,
1,
"ÙÙ"
],
[
64603,
1,
"ذٰ"
],
[
64604,
1,
"رٰ"
],
[
64605,
1,
"ÙÙ°"
],
[
64606,
5,
" ÙÙ"
],
[
64607,
5,
" ÙÙ"
],
[
64608,
5,
" ÙÙ"
],
[
64609,
5,
" ÙÙ"
],
[
64610,
5,
" ÙÙ"
],
[
64611,
5,
" ÙÙ°"
],
[
64612,
1,
"ئر"
],
[
64613,
1,
"ئز"
],
[
64614,
1,
"ئÙ
"
],
[
64615,
1,
"ئÙ"
],
[
64616,
1,
"ئÙ"
],
[
64617,
1,
"ئÙ"
],
[
64618,
1,
"بر"
],
[
64619,
1,
"بز"
],
[
64620,
1,
"بÙ
"
],
[
64621,
1,
"بÙ"
],
[
64622,
1,
"بÙ"
],
[
64623,
1,
"بÙ"
],
[
64624,
1,
"تر"
],
[
64625,
1,
"تز"
],
[
64626,
1,
"تÙ
"
],
[
64627,
1,
"تÙ"
],
[
64628,
1,
"تÙ"
],
[
64629,
1,
"تÙ"
],
[
64630,
1,
"ثر"
],
[
64631,
1,
"ثز"
],
[
64632,
1,
"Ø«Ù
"
],
[
64633,
1,
"Ø«Ù"
],
[
64634,
1,
"Ø«Ù"
],
[
64635,
1,
"Ø«Ù"
],
[
64636,
1,
"ÙÙ"
],
[
64637,
1,
"ÙÙ"
],
[
64638,
1,
"ÙÙ"
],
[
64639,
1,
"ÙÙ"
],
[
64640,
1,
"ÙØ§"
],
[
64641,
1,
"ÙÙ"
],
[
64642,
1,
"ÙÙ
"
],
[
64643,
1,
"ÙÙ"
],
[
64644,
1,
"ÙÙ"
],
[
64645,
1,
"ÙÙ
"
],
[
64646,
1,
"ÙÙ"
],
[
64647,
1,
"ÙÙ"
],
[
64648,
1,
"Ù
ا"
],
[
64649,
1,
"Ù
Ù
"
],
[
64650,
1,
"ÙØ±"
],
[
64651,
1,
"ÙØ²"
],
[
64652,
1,
"ÙÙ
"
],
[
64653,
1,
"ÙÙ"
],
[
64654,
1,
"ÙÙ"
],
[
64655,
1,
"ÙÙ"
],
[
64656,
1,
"ÙÙ°"
],
[
64657,
1,
"ÙØ±"
],
[
64658,
1,
"ÙØ²"
],
[
64659,
1,
"ÙÙ
"
],
[
64660,
1,
"ÙÙ"
],
[
64661,
1,
"ÙÙ"
],
[
64662,
1,
"ÙÙ"
],
[
64663,
1,
"ئج"
],
[
64664,
1,
"ئØ"
],
[
64665,
1,
"ئخ"
],
[
64666,
1,
"ئÙ
"
],
[
64667,
1,
"ئÙ"
],
[
64668,
1,
"بج"
],
[
64669,
1,
"بØ"
],
[
64670,
1,
"بخ"
],
[
64671,
1,
"بÙ
"
],
[
64672,
1,
"بÙ"
],
[
64673,
1,
"تج"
],
[
64674,
1,
"تØ"
],
[
64675,
1,
"تخ"
],
[
64676,
1,
"تÙ
"
],
[
64677,
1,
"تÙ"
],
[
64678,
1,
"Ø«Ù
"
],
[
64679,
1,
"جØ"
],
[
64680,
1,
"جÙ
"
],
[
64681,
1,
"ØØ¬"
],
[
64682,
1,
"ØÙ
"
],
[
64683,
1,
"خج"
],
[
64684,
1,
"Ø®Ù
"
],
[
64685,
1,
"سج"
],
[
64686,
1,
"سØ"
],
[
64687,
1,
"سخ"
],
[
64688,
1,
"سÙ
"
],
[
64689,
1,
"صØ"
],
[
64690,
1,
"صخ"
],
[
64691,
1,
"صÙ
"
],
[
64692,
1,
"ضج"
],
[
64693,
1,
"ضØ"
],
[
64694,
1,
"ضخ"
],
[
64695,
1,
"ضÙ
"
],
[
64696,
1,
"Ø·Ø"
],
[
64697,
1,
"ظÙ
"
],
[
64698,
1,
"عج"
],
[
64699,
1,
"عÙ
"
],
[
64700,
1,
"غج"
],
[
64701,
1,
"غÙ
"
],
[
64702,
1,
"ÙØ¬"
],
[
64703,
1,
"ÙØ"
],
[
64704,
1,
"ÙØ®"
],
[
64705,
1,
"ÙÙ
"
],
[
64706,
1,
"ÙØ"
],
[
64707,
1,
"ÙÙ
"
],
[
64708,
1,
"ÙØ¬"
],
[
64709,
1,
"ÙØ"
],
[
64710,
1,
"ÙØ®"
],
[
64711,
1,
"ÙÙ"
],
[
64712,
1,
"ÙÙ
"
],
[
64713,
1,
"ÙØ¬"
],
[
64714,
1,
"ÙØ"
],
[
64715,
1,
"ÙØ®"
],
[
64716,
1,
"ÙÙ
"
],
[
64717,
1,
"ÙÙ"
],
[
64718,
1,
"Ù
ج"
],
[
64719,
1,
"Ù
Ø"
],
[
64720,
1,
"Ù
Ø®"
],
[
64721,
1,
"Ù
Ù
"
],
[
64722,
1,
"ÙØ¬"
],
[
64723,
1,
"ÙØ"
],
[
64724,
1,
"ÙØ®"
],
[
64725,
1,
"ÙÙ
"
],
[
64726,
1,
"ÙÙ"
],
[
64727,
1,
"ÙØ¬"
],
[
64728,
1,
"ÙÙ
"
],
[
64729,
1,
"ÙÙ°"
],
[
64730,
1,
"ÙØ¬"
],
[
64731,
1,
"ÙØ"
],
[
64732,
1,
"ÙØ®"
],
[
64733,
1,
"ÙÙ
"
],
[
64734,
1,
"ÙÙ"
],
[
64735,
1,
"ئÙ
"
],
[
64736,
1,
"ئÙ"
],
[
64737,
1,
"بÙ
"
],
[
64738,
1,
"بÙ"
],
[
64739,
1,
"تÙ
"
],
[
64740,
1,
"تÙ"
],
[
64741,
1,
"Ø«Ù
"
],
[
64742,
1,
"Ø«Ù"
],
[
64743,
1,
"سÙ
"
],
[
64744,
1,
"سÙ"
],
[
64745,
1,
"Ø´Ù
"
],
[
64746,
1,
"Ø´Ù"
],
[
64747,
1,
"ÙÙ"
],
[
64748,
1,
"ÙÙ
"
],
[
64749,
1,
"ÙÙ
"
],
[
64750,
1,
"ÙÙ
"
],
[
64751,
1,
"ÙÙ"
],
[
64752,
1,
"ÙÙ
"
],
[
64753,
1,
"ÙÙ"
],
[
64754,
1,
"ÙÙÙ"
],
[
64755,
1,
"ÙÙÙ"
],
[
64756,
1,
"ÙÙÙ"
],
[
64757,
1,
"Ø·Ù"
],
[
64758,
1,
"Ø·Ù"
],
[
64759,
1,
"عÙ"
],
[
64760,
1,
"عÙ"
],
[
64761,
1,
"غÙ"
],
[
64762,
1,
"غÙ"
],
[
64763,
1,
"سÙ"
],
[
64764,
1,
"سÙ"
],
[
64765,
1,
"Ø´Ù"
],
[
64766,
1,
"Ø´Ù"
],
[
64767,
1,
"ØÙ"
],
[
64768,
1,
"ØÙ"
],
[
64769,
1,
"جÙ"
],
[
64770,
1,
"جÙ"
],
[
64771,
1,
"Ø®Ù"
],
[
64772,
1,
"Ø®Ù"
],
[
64773,
1,
"صÙ"
],
[
64774,
1,
"صÙ"
],
[
64775,
1,
"ضÙ"
],
[
64776,
1,
"ضÙ"
],
[
64777,
1,
"شج"
],
[
64778,
1,
"Ø´Ø"
],
[
64779,
1,
"شخ"
],
[
64780,
1,
"Ø´Ù
"
],
[
64781,
1,
"شر"
],
[
64782,
1,
"سر"
],
[
64783,
1,
"صر"
],
[
64784,
1,
"ضر"
],
[
64785,
1,
"Ø·Ù"
],
[
64786,
1,
"Ø·Ù"
],
[
64787,
1,
"عÙ"
],
[
64788,
1,
"عÙ"
],
[
64789,
1,
"غÙ"
],
[
64790,
1,
"غÙ"
],
[
64791,
1,
"سÙ"
],
[
64792,
1,
"سÙ"
],
[
64793,
1,
"Ø´Ù"
],
[
64794,
1,
"Ø´Ù"
],
[
64795,
1,
"ØÙ"
],
[
64796,
1,
"ØÙ"
],
[
64797,
1,
"جÙ"
],
[
64798,
1,
"جÙ"
],
[
64799,
1,
"Ø®Ù"
],
[
64800,
1,
"Ø®Ù"
],
[
64801,
1,
"صÙ"
],
[
64802,
1,
"صÙ"
],
[
64803,
1,
"ضÙ"
],
[
64804,
1,
"ضÙ"
],
[
64805,
1,
"شج"
],
[
64806,
1,
"Ø´Ø"
],
[
64807,
1,
"شخ"
],
[
64808,
1,
"Ø´Ù
"
],
[
64809,
1,
"شر"
],
[
64810,
1,
"سر"
],
[
64811,
1,
"صر"
],
[
64812,
1,
"ضر"
],
[
64813,
1,
"شج"
],
[
64814,
1,
"Ø´Ø"
],
[
64815,
1,
"شخ"
],
[
64816,
1,
"Ø´Ù
"
],
[
64817,
1,
"سÙ"
],
[
64818,
1,
"Ø´Ù"
],
[
64819,
1,
"Ø·Ù
"
],
[
64820,
1,
"سج"
],
[
64821,
1,
"سØ"
],
[
64822,
1,
"سخ"
],
[
64823,
1,
"شج"
],
[
64824,
1,
"Ø´Ø"
],
[
64825,
1,
"شخ"
],
[
64826,
1,
"Ø·Ù
"
],
[
64827,
1,
"ظÙ
"
],
[
[
64828,
64829
],
1,
"اÙ"
],
[
[
64830,
64831
],
2
],
[
[
64832,
64847
],
3
],
[
64848,
1,
"تجÙ
"
],
[
[
64849,
64850
],
1,
"ØªØØ¬"
],
[
64851,
1,
"تØÙ
"
],
[
64852,
1,
"تخÙ
"
],
[
64853,
1,
"تÙ
ج"
],
[
64854,
1,
"تÙ
Ø"
],
[
64855,
1,
"تÙ
Ø®"
],
[
[
64856,
64857
],
1,
"جÙ
Ø"
],
[
64858,
1,
"ØÙ
Ù"
],
[
64859,
1,
"ØÙ
Ù"
],
[
64860,
1,
"Ø³ØØ¬"
],
[
64861,
1,
"سجØ"
],
[
64862,
1,
"سجÙ"
],
[
[
64863,
64864
],
1,
"سÙ
Ø"
],
[
64865,
1,
"سÙ
ج"
],
[
[
64866,
64867
],
1,
"سÙ
Ù
"
],
[
[
64868,
64869
],
1,
"ØµØØ"
],
[
64870,
1,
"صÙ
Ù
"
],
[
[
64871,
64872
],
1,
"Ø´ØÙ
"
],
[
64873,
1,
"شجÙ"
],
[
[
64874,
64875
],
1,
"Ø´Ù
Ø®"
],
[
[
64876,
64877
],
1,
"Ø´Ù
Ù
"
],
[
64878,
1,
"ضØÙ"
],
[
[
64879,
64880
],
1,
"ضخÙ
"
],
[
[
64881,
64882
],
1,
"Ø·Ù
Ø"
],
[
64883,
1,
"Ø·Ù
Ù
"
],
[
64884,
1,
"Ø·Ù
Ù"
],
[
64885,
1,
"عجÙ
"
],
[
[
64886,
64887
],
1,
"عÙ
Ù
"
],
[
64888,
1,
"عÙ
Ù"
],
[
64889,
1,
"غÙ
Ù
"
],
[
64890,
1,
"غÙ
Ù"
],
[
64891,
1,
"غÙ
Ù"
],
[
[
64892,
64893
],
1,
"ÙØ®Ù
"
],
[
64894,
1,
"ÙÙ
Ø"
],
[
64895,
1,
"ÙÙ
Ù
"
],
[
64896,
1,
"ÙØÙ
"
],
[
64897,
1,
"ÙØÙ"
],
[
64898,
1,
"ÙØÙ"
],
[
[
64899,
64900
],
1,
"ÙØ¬Ø¬"
],
[
[
64901,
64902
],
1,
"ÙØ®Ù
"
],
[
[
64903,
64904
],
1,
"ÙÙ
Ø"
],
[
64905,
1,
"Ù
ØØ¬"
],
[
64906,
1,
"Ù
ØÙ
"
],
[
64907,
1,
"Ù
ØÙ"
],
[
64908,
1,
"Ù
جØ"
],
[
64909,
1,
"Ù
جÙ
"
],
[
64910,
1,
"Ù
خج"
],
[
64911,
1,
"Ù
Ø®Ù
"
],
[
[
64912,
64913
],
3
],
[
64914,
1,
"Ù
جخ"
],
[
64915,
1,
"ÙÙ
ج"
],
[
64916,
1,
"ÙÙ
Ù
"
],
[
64917,
1,
"ÙØÙ
"
],
[
64918,
1,
"ÙØÙ"
],
[
[
64919,
64920
],
1,
"ÙØ¬Ù
"
],
[
64921,
1,
"ÙØ¬Ù"
],
[
64922,
1,
"ÙÙ
Ù"
],
[
64923,
1,
"ÙÙ
Ù"
],
[
[
64924,
64925
],
1,
"ÙÙ
Ù
"
],
[
64926,
1,
"بخÙ"
],
[
64927,
1,
"تجÙ"
],
[
64928,
1,
"تجÙ"
],
[
64929,
1,
"تخÙ"
],
[
64930,
1,
"تخÙ"
],
[
64931,
1,
"تÙ
Ù"
],
[
64932,
1,
"تÙ
Ù"
],
[
64933,
1,
"جÙ
Ù"
],
[
64934,
1,
"جØÙ"
],
[
64935,
1,
"جÙ
Ù"
],
[
64936,
1,
"سخÙ"
],
[
64937,
1,
"صØÙ"
],
[
64938,
1,
"Ø´ØÙ"
],
[
64939,
1,
"ضØÙ"
],
[
64940,
1,
"ÙØ¬Ù"
],
[
64941,
1,
"ÙÙ
Ù"
],
[
64942,
1,
"ÙØÙ"
],
[
64943,
1,
"ÙØ¬Ù"
],
[
64944,
1,
"ÙÙ
Ù"
],
[
64945,
1,
"Ù
Ù
Ù"
],
[
64946,
1,
"ÙÙ
Ù"
],
[
64947,
1,
"ÙØÙ"
],
[
64948,
1,
"ÙÙ
Ø"
],
[
64949,
1,
"ÙØÙ
"
],
[
64950,
1,
"عÙ
Ù"
],
[
64951,
1,
"ÙÙ
Ù"
],
[
64952,
1,
"ÙØ¬Ø"
],
[
64953,
1,
"Ù
Ø®Ù"
],
[
64954,
1,
"ÙØ¬Ù
"
],
[
64955,
1,
"ÙÙ
Ù
"
],
[
64956,
1,
"ÙØ¬Ù
"
],
[
64957,
1,
"ÙØ¬Ø"
],
[
64958,
1,
"جØÙ"
],
[
64959,
1,
"ØØ¬Ù"
],
[
64960,
1,
"Ù
جÙ"
],
[
64961,
1,
"ÙÙ
Ù"
],
[
64962,
1,
"بØÙ"
],
[
64963,
1,
"ÙÙ
Ù
"
],
[
64964,
1,
"عجÙ
"
],
[
64965,
1,
"صÙ
Ù
"
],
[
64966,
1,
"سخÙ"
],
[
64967,
1,
"ÙØ¬Ù"
],
[
[
64968,
64975
],
3
],
[
[
64976,
65007
],
3
],
[
65008,
1,
"صÙÛ"
],
[
65009,
1,
"ÙÙÛ"
],
[
65010,
1,
"اÙÙÙ"
],
[
65011,
1,
"Ø§ÙØ¨Ø±"
],
[
65012,
1,
"Ù
ØÙ
د"
],
[
65013,
1,
"ØµÙØ¹Ù
"
],
[
65014,
1,
"رسÙÙ"
],
[
65015,
1,
"عÙÙÙ"
],
[
65016,
1,
"ÙØ³ÙÙ
"
],
[
65017,
1,
"صÙÙ"
],
[
65018,
5,
"صÙ٠اÙÙ٠عÙÙÙ ÙØ³ÙÙ
"
],
[
65019,
5,
"Ø¬Ù Ø¬ÙØ§ÙÙ"
],
[
65020,
1,
"Ø±ÛØ§Ù"
],
[
65021,
2
],
[
[
65022,
65023
],
3
],
[
[
65024,
65039
],
7
],
[
65040,
5,
","
],
[
65041,
1,
"ã"
],
[
65042,
3
],
[
65043,
5,
":"
],
[
65044,
5,
";"
],
[
65045,
5,
"!"
],
[
65046,
5,
"?"
],
[
65047,
1,
"ã"
],
[
65048,
1,
"ã"
],
[
65049,
3
],
[
[
65050,
65055
],
3
],
[
[
65056,
65059
],
2
],
[
[
65060,
65062
],
2
],
[
[
65063,
65069
],
2
],
[
[
65070,
65071
],
2
],
[
65072,
3
],
[
65073,
1,
"â"
],
[
65074,
1,
"â"
],
[
[
65075,
65076
],
5,
"_"
],
[
65077,
5,
"("
],
[
65078,
5,
")"
],
[
65079,
5,
"{"
],
[
65080,
5,
"}"
],
[
65081,
1,
"ã"
],
[
65082,
1,
"ã"
],
[
65083,
1,
"ã"
],
[
65084,
1,
"ã"
],
[
65085,
1,
"ã"
],
[
65086,
1,
"ã"
],
[
65087,
1,
"ã"
],
[
65088,
1,
"ã"
],
[
65089,
1,
"ã"
],
[
65090,
1,
"ã"
],
[
65091,
1,
"ã"
],
[
65092,
1,
"ã"
],
[
[
65093,
65094
],
2
],
[
65095,
5,
"["
],
[
65096,
5,
"]"
],
[
[
65097,
65100
],
5,
" Ì
"
],
[
[
65101,
65103
],
5,
"_"
],
[
65104,
5,
","
],
[
65105,
1,
"ã"
],
[
65106,
3
],
[
65107,
3
],
[
65108,
5,
";"
],
[
65109,
5,
":"
],
[
65110,
5,
"?"
],
[
65111,
5,
"!"
],
[
65112,
1,
"â"
],
[
65113,
5,
"("
],
[
65114,
5,
")"
],
[
65115,
5,
"{"
],
[
65116,
5,
"}"
],
[
65117,
1,
"ã"
],
[
65118,
1,
"ã"
],
[
65119,
5,
"#"
],
[
65120,
5,
"&"
],
[
65121,
5,
"*"
],
[
65122,
5,
"+"
],
[
65123,
1,
"-"
],
[
65124,
5,
""
],
[
65126,
5,
"="
],
[
65127,
3
],
[
65128,
5,
"\\"
],
[
65129,
5,
"$"
],
[
65130,
5,
"%"
],
[
65131,
5,
"@"
],
[
[
65132,
65135
],
3
],
[
65136,
5,
" Ù"
],
[
65137,
1,
"ÙÙ"
],
[
65138,
5,
" Ù"
],
[
65139,
2
],
[
65140,
5,
" Ù"
],
[
65141,
3
],
[
65142,
5,
" Ù"
],
[
65143,
1,
"ÙÙ"
],
[
65144,
5,
" Ù"
],
[
65145,
1,
"ÙÙ"
],
[
65146,
5,
" Ù"
],
[
65147,
1,
"ÙÙ"
],
[
65148,
5,
" Ù"
],
[
65149,
1,
"ÙÙ"
],
[
65150,
5,
" Ù"
],
[
65151,
1,
"ÙÙ"
],
[
65152,
1,
"Ø¡"
],
[
[
65153,
65154
],
1,
"Ø¢"
],
[
[
65155,
65156
],
1,
"Ø£"
],
[
[
65157,
65158
],
1,
"ؤ"
],
[
[
65159,
65160
],
1,
"Ø¥"
],
[
[
65161,
65164
],
1,
"ئ"
],
[
[
65165,
65166
],
1,
"ا"
],
[
[
65167,
65170
],
1,
"ب"
],
[
[
65171,
65172
],
1,
"Ø©"
],
[
[
65173,
65176
],
1,
"ت"
],
[
[
65177,
65180
],
1,
"Ø«"
],
[
[
65181,
65184
],
1,
"ج"
],
[
[
65185,
65188
],
1,
"Ø"
],
[
[
65189,
65192
],
1,
"Ø®"
],
[
[
65193,
65194
],
1,
"د"
],
[
[
65195,
65196
],
1,
"ذ"
],
[
[
65197,
65198
],
1,
"ر"
],
[
[
65199,
65200
],
1,
"ز"
],
[
[
65201,
65204
],
1,
"س"
],
[
[
65205,
65208
],
1,
"Ø´"
],
[
[
65209,
65212
],
1,
"ص"
],
[
[
65213,
65216
],
1,
"ض"
],
[
[
65217,
65220
],
1,
"Ø·"
],
[
[
65221,
65224
],
1,
"ظ"
],
[
[
65225,
65228
],
1,
"ع"
],
[
[
65229,
65232
],
1,
"غ"
],
[
[
65233,
65236
],
1,
"Ù"
],
[
[
65237,
65240
],
1,
"Ù"
],
[
[
65241,
65244
],
1,
"Ù"
],
[
[
65245,
65248
],
1,
"Ù"
],
[
[
65249,
65252
],
1,
"Ù
"
],
[
[
65253,
65256
],
1,
"Ù"
],
[
[
65257,
65260
],
1,
"Ù"
],
[
[
65261,
65262
],
1,
"Ù"
],
[
[
65263,
65264
],
1,
"Ù"
],
[
[
65265,
65268
],
1,
"Ù"
],
[
[
65269,
65270
],
1,
"ÙØ¢"
],
[
[
65271,
65272
],
1,
"ÙØ£"
],
[
[
65273,
65274
],
1,
"ÙØ¥"
],
[
[
65275,
65276
],
1,
"ÙØ§"
],
[
[
65277,
65278
],
3
],
[
65279,
7
],
[
65280,
3
],
[
65281,
5,
"!"
],
[
65282,
5,
"\""
],
[
65283,
5,
"#"
],
[
65284,
5,
"$"
],
[
65285,
5,
"%"
],
[
65286,
5,
"&"
],
[
65287,
5,
"'"
],
[
65288,
5,
"("
],
[
65289,
5,
")"
],
[
65290,
5,
"*"
],
[
65291,
5,
"+"
],
[
65292,
5,
","
],
[
65293,
1,
"-"
],
[
65294,
1,
"."
],
[
65295,
5,
"/"
],
[
65296,
1,
"0"
],
[
65297,
1,
"1"
],
[
65298,
1,
"2"
],
[
65299,
1,
"3"
],
[
65300,
1,
"4"
],
[
65301,
1,
"5"
],
[
65302,
1,
"6"
],
[
65303,
1,
"7"
],
[
65304,
1,
"8"
],
[
65305,
1,
"9"
],
[
65306,
5,
":"
],
[
65307,
5,
";"
],
[
65308,
5,
""
],
[
65311,
5,
"?"
],
[
65312,
5,
"@"
],
[
65313,
1,
"a"
],
[
65314,
1,
"b"
],
[
65315,
1,
"c"
],
[
65316,
1,
"d"
],
[
65317,
1,
"e"
],
[
65318,
1,
"f"
],
[
65319,
1,
"g"
],
[
65320,
1,
"h"
],
[
65321,
1,
"i"
],
[
65322,
1,
"j"
],
[
65323,
1,
"k"
],
[
65324,
1,
"l"
],
[
65325,
1,
"m"
],
[
65326,
1,
"n"
],
[
65327,
1,
"o"
],
[
65328,
1,
"p"
],
[
65329,
1,
"q"
],
[
65330,
1,
"r"
],
[
65331,
1,
"s"
],
[
65332,
1,
"t"
],
[
65333,
1,
"u"
],
[
65334,
1,
"v"
],
[
65335,
1,
"w"
],
[
65336,
1,
"x"
],
[
65337,
1,
"y"
],
[
65338,
1,
"z"
],
[
65339,
5,
"["
],
[
65340,
5,
"\\"
],
[
65341,
5,
"]"
],
[
65342,
5,
"^"
],
[
65343,
5,
"_"
],
[
65344,
5,
"`"
],
[
65345,
1,
"a"
],
[
65346,
1,
"b"
],
[
65347,
1,
"c"
],
[
65348,
1,
"d"
],
[
65349,
1,
"e"
],
[
65350,
1,
"f"
],
[
65351,
1,
"g"
],
[
65352,
1,
"h"
],
[
65353,
1,
"i"
],
[
65354,
1,
"j"
],
[
65355,
1,
"k"
],
[
65356,
1,
"l"
],
[
65357,
1,
"m"
],
[
65358,
1,
"n"
],
[
65359,
1,
"o"
],
[
65360,
1,
"p"
],
[
65361,
1,
"q"
],
[
65362,
1,
"r"
],
[
65363,
1,
"s"
],
[
65364,
1,
"t"
],
[
65365,
1,
"u"
],
[
65366,
1,
"v"
],
[
65367,
1,
"w"
],
[
65368,
1,
"x"
],
[
65369,
1,
"y"
],
[
65370,
1,
"z"
],
[
65371,
5,
"{"
],
[
65372,
5,
"|"
],
[
65373,
5,
"}"
],
[
65374,
5,
"~"
],
[
65375,
1,
"â¦
"
],
[
65376,
1,
"â¦"
],
[
65377,
1,
"."
],
[
65378,
1,
"ã"
],
[
65379,
1,
"ã"
],
[
65380,
1,
"ã"
],
[
65381,
1,
"ã»"
],
[
65382,
1,
"ã²"
],
[
65383,
1,
"ã¡"
],
[
65384,
1,
"ã£"
],
[
65385,
1,
"ã¥"
],
[
65386,
1,
"ã§"
],
[
65387,
1,
"ã©"
],
[
65388,
1,
"ã£"
],
[
65389,
1,
"ã¥"
],
[
65390,
1,
"ã§"
],
[
65391,
1,
"ã"
],
[
65392,
1,
"ã¼"
],
[
65393,
1,
"ã¢"
],
[
65394,
1,
"ã¤"
],
[
65395,
1,
"ã¦"
],
[
65396,
1,
"ã¨"
],
[
65397,
1,
"ãª"
],
[
65398,
1,
"ã«"
],
[
65399,
1,
"ã"
],
[
65400,
1,
"ã¯"
],
[
65401,
1,
"ã±"
],
[
65402,
1,
"ã³"
],
[
65403,
1,
"ãµ"
],
[
65404,
1,
"ã·"
],
[
65405,
1,
"ã¹"
],
[
65406,
1,
"ã»"
],
[
65407,
1,
"ã½"
],
[
65408,
1,
"ã¿"
],
[
65409,
1,
"ã"
],
[
65410,
1,
"ã"
],
[
65411,
1,
"ã"
],
[
65412,
1,
"ã"
],
[
65413,
1,
"ã"
],
[
65414,
1,
"ã"
],
[
65415,
1,
"ã"
],
[
65416,
1,
"ã"
],
[
65417,
1,
"ã"
],
[
65418,
1,
"ã"
],
[
65419,
1,
"ã"
],
[
65420,
1,
"ã"
],
[
65421,
1,
"ã"
],
[
65422,
1,
"ã"
],
[
65423,
1,
"ã"
],
[
65424,
1,
"ã"
],
[
65425,
1,
"ã "
],
[
65426,
1,
"ã¡"
],
[
65427,
1,
"ã¢"
],
[
65428,
1,
"ã¤"
],
[
65429,
1,
"ã¦"
],
[
65430,
1,
"ã¨"
],
[
65431,
1,
"ã©"
],
[
65432,
1,
"ãª"
],
[
65433,
1,
"ã«"
],
[
65434,
1,
"ã¬"
],
[
65435,
1,
"ã"
],
[
65436,
1,
"ã¯"
],
[
65437,
1,
"ã³"
],
[
65438,
1,
"ã"
],
[
65439,
1,
"ã"
],
[
65440,
3
],
[
65441,
1,
"á"
],
[
65442,
1,
"á"
],
[
65443,
1,
"áª"
],
[
65444,
1,
"á"
],
[
65445,
1,
"á¬"
],
[
65446,
1,
"á"
],
[
65447,
1,
"á"
],
[
65448,
1,
"á"
],
[
65449,
1,
"á
"
],
[
65450,
1,
"á°"
],
[
65451,
1,
"á±"
],
[
65452,
1,
"á²"
],
[
65453,
1,
"á³"
],
[
65454,
1,
"á´"
],
[
65455,
1,
"áµ"
],
[
65456,
1,
"á"
],
[
65457,
1,
"á"
],
[
65458,
1,
"á"
],
[
65459,
1,
"á"
],
[
65460,
1,
"á¡"
],
[
65461,
1,
"á"
],
[
65462,
1,
"á"
],
[
65463,
1,
"á"
],
[
65464,
1,
"á"
],
[
65465,
1,
"á"
],
[
65466,
1,
"á"
],
[
65467,
1,
"á"
],
[
65468,
1,
"á"
],
[
65469,
1,
"á"
],
[
65470,
1,
"á"
],
[
[
65471,
65473
],
3
],
[
65474,
1,
"á
¡"
],
[
65475,
1,
"á
¢"
],
[
65476,
1,
"á
£"
],
[
65477,
1,
"á
¤"
],
[
65478,
1,
"á
¥"
],
[
65479,
1,
"á
¦"
],
[
[
65480,
65481
],
3
],
[
65482,
1,
"á
§"
],
[
65483,
1,
"á
¨"
],
[
65484,
1,
"á
©"
],
[
65485,
1,
"á
ª"
],
[
65486,
1,
"á
«"
],
[
65487,
1,
"á
¬"
],
[
[
65488,
65489
],
3
],
[
65490,
1,
"á
"
],
[
65491,
1,
"á
®"
],
[
65492,
1,
"á
¯"
],
[
65493,
1,
"á
°"
],
[
65494,
1,
"á
±"
],
[
65495,
1,
"á
²"
],
[
[
65496,
65497
],
3
],
[
65498,
1,
"á
³"
],
[
65499,
1,
"á
´"
],
[
65500,
1,
"á
µ"
],
[
[
65501,
65503
],
3
],
[
65504,
1,
"¢"
],
[
65505,
1,
"£"
],
[
65506,
1,
"¬"
],
[
65507,
5,
" Ì"
],
[
65508,
1,
"¦"
],
[
65509,
1,
"Â¥"
],
[
65510,
1,
"â©"
],
[
65511,
3
],
[
65512,
1,
"â"
],
[
65513,
1,
"â"
],
[
65514,
1,
"â"
],
[
65515,
1,
"â"
],
[
65516,
1,
"â"
],
[
65517,
1,
"â "
],
[
65518,
1,
"â"
],
[
[
65519,
65528
],
3
],
[
[
65529,
65531
],
3
],
[
65532,
3
],
[
65533,
3
],
[
[
65534,
65535
],
3
],
[
[
65536,
65547
],
2
],
[
65548,
3
],
[
[
65549,
65574
],
2
],
[
65575,
3
],
[
[
65576,
65594
],
2
],
[
65595,
3
],
[
[
65596,
65597
],
2
],
[
65598,
3
],
[
[
65599,
65613
],
2
],
[
[
65614,
65615
],
3
],
[
[
65616,
65629
],
2
],
[
[
65630,
65663
],
3
],
[
[
65664,
65786
],
2
],
[
[
65787,
65791
],
3
],
[
[
65792,
65794
],
2
],
[
[
65795,
65798
],
3
],
[
[
65799,
65843
],
2
],
[
[
65844,
65846
],
3
],
[
[
65847,
65855
],
2
],
[
[
65856,
65930
],
2
],
[
[
65931,
65932
],
2
],
[
[
65933,
65934
],
2
],
[
65935,
3
],
[
[
65936,
65947
],
2
],
[
65948,
2
],
[
[
65949,
65951
],
3
],
[
65952,
2
],
[
[
65953,
65999
],
3
],
[
[
66000,
66044
],
2
],
[
66045,
2
],
[
[
66046,
66175
],
3
],
[
[
66176,
66204
],
2
],
[
[
66205,
66207
],
3
],
[
[
66208,
66256
],
2
],
[
[
66257,
66271
],
3
],
[
66272,
2
],
[
[
66273,
66299
],
2
],
[
[
66300,
66303
],
3
],
[
[
66304,
66334
],
2
],
[
66335,
2
],
[
[
66336,
66339
],
2
],
[
[
66340,
66348
],
3
],
[
[
66349,
66351
],
2
],
[
[
66352,
66368
],
2
],
[
66369,
2
],
[
[
66370,
66377
],
2
],
[
66378,
2
],
[
[
66379,
66383
],
3
],
[
[
66384,
66426
],
2
],
[
[
66427,
66431
],
3
],
[
[
66432,
66461
],
2
],
[
66462,
3
],
[
66463,
2
],
[
[
66464,
66499
],
2
],
[
[
66500,
66503
],
3
],
[
[
66504,
66511
],
2
],
[
[
66512,
66517
],
2
],
[
[
66518,
66559
],
3
],
[
66560,
1,
"ð¨"
],
[
66561,
1,
"ð©"
],
[
66562,
1,
"ðª"
],
[
66563,
1,
"ð«"
],
[
66564,
1,
"ð¬"
],
[
66565,
1,
"ð"
],
[
66566,
1,
"ð®"
],
[
66567,
1,
"ð¯"
],
[
66568,
1,
"ð°"
],
[
66569,
1,
"ð±"
],
[
66570,
1,
"ð²"
],
[
66571,
1,
"ð³"
],
[
66572,
1,
"ð´"
],
[
66573,
1,
"ðµ"
],
[
66574,
1,
"ð¶"
],
[
66575,
1,
"ð·"
],
[
66576,
1,
"ð¸"
],
[
66577,
1,
"ð¹"
],
[
66578,
1,
"ðº"
],
[
66579,
1,
"ð»"
],
[
66580,
1,
"ð¼"
],
[
66581,
1,
"ð½"
],
[
66582,
1,
"ð¾"
],
[
66583,
1,
"ð¿"
],
[
66584,
1,
"ð"
],
[
66585,
1,
"ð"
],
[
66586,
1,
"ð"
],
[
66587,
1,
"ð"
],
[
66588,
1,
"ð"
],
[
66589,
1,
"ð
"
],
[
66590,
1,
"ð"
],
[
66591,
1,
"ð"
],
[
66592,
1,
"ð"
],
[
66593,
1,
"ð"
],
[
66594,
1,
"ð"
],
[
66595,
1,
"ð"
],
[
66596,
1,
"ð"
],
[
66597,
1,
"ð"
],
[
66598,
1,
"ð"
],
[
66599,
1,
"ð"
],
[
[
66600,
66637
],
2
],
[
[
66638,
66717
],
2
],
[
[
66718,
66719
],
3
],
[
[
66720,
66729
],
2
],
[
[
66730,
66735
],
3
],
[
66736,
1,
"ð"
],
[
66737,
1,
"ð"
],
[
66738,
1,
"ð"
],
[
66739,
1,
"ð"
],
[
66740,
1,
"ð"
],
[
66741,
1,
"ð"
],
[
66742,
1,
"ð"
],
[
66743,
1,
"ð"
],
[
66744,
1,
"ð "
],
[
66745,
1,
"ð¡"
],
[
66746,
1,
"ð¢"
],
[
66747,
1,
"ð£"
],
[
66748,
1,
"ð¤"
],
[
66749,
1,
"ð¥"
],
[
66750,
1,
"ð¦"
],
[
66751,
1,
"ð§"
],
[
66752,
1,
"ð¨"
],
[
66753,
1,
"ð©"
],
[
66754,
1,
"ðª"
],
[
66755,
1,
"ð«"
],
[
66756,
1,
"ð¬"
],
[
66757,
1,
"ð"
],
[
66758,
1,
"ð®"
],
[
66759,
1,
"ð¯"
],
[
66760,
1,
"ð°"
],
[
66761,
1,
"ð±"
],
[
66762,
1,
"ð²"
],
[
66763,
1,
"ð³"
],
[
66764,
1,
"ð´"
],
[
66765,
1,
"ðµ"
],
[
66766,
1,
"ð¶"
],
[
66767,
1,
"ð·"
],
[
66768,
1,
"ð¸"
],
[
66769,
1,
"ð¹"
],
[
66770,
1,
"ðº"
],
[
66771,
1,
"ð»"
],
[
[
66772,
66775
],
3
],
[
[
66776,
66811
],
2
],
[
[
66812,
66815
],
3
],
[
[
66816,
66855
],
2
],
[
[
66856,
66863
],
3
],
[
[
66864,
66915
],
2
],
[
[
66916,
66926
],
3
],
[
66927,
2
],
[
[
66928,
67071
],
3
],
[
[
67072,
67382
],
2
],
[
[
67383,
67391
],
3
],
[
[
67392,
67413
],
2
],
[
[
67414,
67423
],
3
],
[
[
67424,
67431
],
2
],
[
[
67432,
67583
],
3
],
[
[
67584,
67589
],
2
],
[
[
67590,
67591
],
3
],
[
67592,
2
],
[
67593,
3
],
[
[
67594,
67637
],
2
],
[
67638,
3
],
[
[
67639,
67640
],
2
],
[
[
67641,
67643
],
3
],
[
67644,
2
],
[
[
67645,
67646
],
3
],
[
67647,
2
],
[
[
67648,
67669
],
2
],
[
67670,
3
],
[
[
67671,
67679
],
2
],
[
[
67680,
67702
],
2
],
[
[
67703,
67711
],
2
],
[
[
67712,
67742
],
2
],
[
[
67743,
67750
],
3
],
[
[
67751,
67759
],
2
],
[
[
67760,
67807
],
3
],
[
[
67808,
67826
],
2
],
[
67827,
3
],
[
[
67828,
67829
],
2
],
[
[
67830,
67834
],
3
],
[
[
67835,
67839
],
2
],
[
[
67840,
67861
],
2
],
[
[
67862,
67865
],
2
],
[
[
67866,
67867
],
2
],
[
[
67868,
67870
],
3
],
[
67871,
2
],
[
[
67872,
67897
],
2
],
[
[
67898,
67902
],
3
],
[
67903,
2
],
[
[
67904,
67967
],
3
],
[
[
67968,
68023
],
2
],
[
[
68024,
68027
],
3
],
[
[
68028,
68029
],
2
],
[
[
68030,
68031
],
2
],
[
[
68032,
68047
],
2
],
[
[
68048,
68049
],
3
],
[
[
68050,
68095
],
2
],
[
[
68096,
68099
],
2
],
[
68100,
3
],
[
[
68101,
68102
],
2
],
[
[
68103,
68107
],
3
],
[
[
68108,
68115
],
2
],
[
68116,
3
],
[
[
68117,
68119
],
2
],
[
68120,
3
],
[
[
68121,
68147
],
2
],
[
[
68148,
68149
],
2
],
[
[
68150,
68151
],
3
],
[
[
68152,
68154
],
2
],
[
[
68155,
68158
],
3
],
[
68159,
2
],
[
[
68160,
68167
],
2
],
[
68168,
2
],
[
[
68169,
68175
],
3
],
[
[
68176,
68184
],
2
],
[
[
68185,
68191
],
3
],
[
[
68192,
68220
],
2
],
[
[
68221,
68223
],
2
],
[
[
68224,
68252
],
2
],
[
[
68253,
68255
],
2
],
[
[
68256,
68287
],
3
],
[
[
68288,
68295
],
2
],
[
68296,
2
],
[
[
68297,
68326
],
2
],
[
[
68327,
68330
],
3
],
[
[
68331,
68342
],
2
],
[
[
68343,
68351
],
3
],
[
[
68352,
68405
],
2
],
[
[
68406,
68408
],
3
],
[
[
68409,
68415
],
2
],
[
[
68416,
68437
],
2
],
[
[
68438,
68439
],
3
],
[
[
68440,
68447
],
2
],
[
[
68448,
68466
],
2
],
[
[
68467,
68471
],
3
],
[
[
68472,
68479
],
2
],
[
[
68480,
68497
],
2
],
[
[
68498,
68504
],
3
],
[
[
68505,
68508
],
2
],
[
[
68509,
68520
],
3
],
[
[
68521,
68527
],
2
],
[
[
68528,
68607
],
3
],
[
[
68608,
68680
],
2
],
[
[
68681,
68735
],
3
],
[
68736,
1,
"ð³"
],
[
68737,
1,
"ð³"
],
[
68738,
1,
"ð³"
],
[
68739,
1,
"ð³"
],
[
68740,
1,
"ð³"
],
[
68741,
1,
"ð³
"
],
[
68742,
1,
"ð³"
],
[
68743,
1,
"ð³"
],
[
68744,
1,
"ð³"
],
[
68745,
1,
"ð³"
],
[
68746,
1,
"ð³"
],
[
68747,
1,
"ð³"
],
[
68748,
1,
"ð³"
],
[
68749,
1,
"ð³"
],
[
68750,
1,
"ð³"
],
[
68751,
1,
"ð³"
],
[
68752,
1,
"ð³"
],
[
68753,
1,
"ð³"
],
[
68754,
1,
"ð³"
],
[
68755,
1,
"ð³"
],
[
68756,
1,
"ð³"
],
[
68757,
1,
"ð³"
],
[
68758,
1,
"ð³"
],
[
68759,
1,
"ð³"
],
[
68760,
1,
"ð³"
],
[
68761,
1,
"ð³"
],
[
68762,
1,
"ð³"
],
[
68763,
1,
"ð³"
],
[
68764,
1,
"ð³"
],
[
68765,
1,
"ð³"
],
[
68766,
1,
"ð³"
],
[
68767,
1,
"ð³"
],
[
68768,
1,
"ð³ "
],
[
68769,
1,
"ð³¡"
],
[
68770,
1,
"ð³¢"
],
[
68771,
1,
"ð³£"
],
[
68772,
1,
"ð³¤"
],
[
68773,
1,
"ð³¥"
],
[
68774,
1,
"ð³¦"
],
[
68775,
1,
"ð³§"
],
[
68776,
1,
"ð³¨"
],
[
68777,
1,
"ð³©"
],
[
68778,
1,
"ð³ª"
],
[
68779,
1,
"ð³«"
],
[
68780,
1,
"ð³¬"
],
[
68781,
1,
"ð³"
],
[
68782,
1,
"ð³®"
],
[
68783,
1,
"ð³¯"
],
[
68784,
1,
"ð³°"
],
[
68785,
1,
"ð³±"
],
[
68786,
1,
"ð³²"
],
[
[
68787,
68799
],
3
],
[
[
68800,
68850
],
2
],
[
[
68851,
68857
],
3
],
[
[
68858,
68863
],
2
],
[
[
68864,
68903
],
2
],
[
[
68904,
68911
],
3
],
[
[
68912,
68921
],
2
],
[
[
68922,
69215
],
3
],
[
[
69216,
69246
],
2
],
[
69247,
3
],
[
[
69248,
69289
],
2
],
[
69290,
3
],
[
[
69291,
69292
],
2
],
[
69293,
2
],
[
[
69294,
69295
],
3
],
[
[
69296,
69297
],
2
],
[
[
69298,
69375
],
3
],
[
[
69376,
69404
],
2
],
[
[
69405,
69414
],
2
],
[
69415,
2
],
[
[
69416,
69423
],
3
],
[
[
69424,
69456
],
2
],
[
[
69457,
69465
],
2
],
[
[
69466,
69551
],
3
],
[
[
69552,
69572
],
2
],
[
[
69573,
69579
],
2
],
[
[
69580,
69599
],
3
],
[
[
69600,
69622
],
2
],
[
[
69623,
69631
],
3
],
[
[
69632,
69702
],
2
],
[
[
69703,
69709
],
2
],
[
[
69710,
69713
],
3
],
[
[
69714,
69733
],
2
],
[
[
69734,
69743
],
2
],
[
[
69744,
69758
],
3
],
[
69759,
2
],
[
[
69760,
69818
],
2
],
[
[
69819,
69820
],
2
],
[
69821,
3
],
[
[
69822,
69825
],
2
],
[
[
69826,
69836
],
3
],
[
69837,
3
],
[
[
69838,
69839
],
3
],
[
[
69840,
69864
],
2
],
[
[
69865,
69871
],
3
],
[
[
69872,
69881
],
2
],
[
[
69882,
69887
],
3
],
[
[
69888,
69940
],
2
],
[
69941,
3
],
[
[
69942,
69951
],
2
],
[
[
69952,
69955
],
2
],
[
[
69956,
69958
],
2
],
[
69959,
2
],
[
[
69960,
69967
],
3
],
[
[
69968,
70003
],
2
],
[
[
70004,
70005
],
2
],
[
70006,
2
],
[
[
70007,
70015
],
3
],
[
[
70016,
70084
],
2
],
[
[
70085,
70088
],
2
],
[
[
70089,
70092
],
2
],
[
70093,
2
],
[
[
70094,
70095
],
2
],
[
[
70096,
70105
],
2
],
[
70106,
2
],
[
70107,
2
],
[
70108,
2
],
[
[
70109,
70111
],
2
],
[
70112,
3
],
[
[
70113,
70132
],
2
],
[
[
70133,
70143
],
3
],
[
[
70144,
70161
],
2
],
[
70162,
3
],
[
[
70163,
70199
],
2
],
[
[
70200,
70205
],
2
],
[
70206,
2
],
[
[
70207,
70271
],
3
],
[
[
70272,
70278
],
2
],
[
70279,
3
],
[
70280,
2
],
[
70281,
3
],
[
[
70282,
70285
],
2
],
[
70286,
3
],
[
[
70287,
70301
],
2
],
[
70302,
3
],
[
[
70303,
70312
],
2
],
[
70313,
2
],
[
[
70314,
70319
],
3
],
[
[
70320,
70378
],
2
],
[
[
70379,
70383
],
3
],
[
[
70384,
70393
],
2
],
[
[
70394,
70399
],
3
],
[
70400,
2
],
[
[
70401,
70403
],
2
],
[
70404,
3
],
[
[
70405,
70412
],
2
],
[
[
70413,
70414
],
3
],
[
[
70415,
70416
],
2
],
[
[
70417,
70418
],
3
],
[
[
70419,
70440
],
2
],
[
70441,
3
],
[
[
70442,
70448
],
2
],
[
70449,
3
],
[
[
70450,
70451
],
2
],
[
70452,
3
],
[
[
70453,
70457
],
2
],
[
70458,
3
],
[
70459,
2
],
[
[
70460,
70468
],
2
],
[
[
70469,
70470
],
3
],
[
[
70471,
70472
],
2
],
[
[
70473,
70474
],
3
],
[
[
70475,
70477
],
2
],
[
[
70478,
70479
],
3
],
[
70480,
2
],
[
[
70481,
70486
],
3
],
[
70487,
2
],
[
[
70488,
70492
],
3
],
[
[
70493,
70499
],
2
],
[
[
70500,
70501
],
3
],
[
[
70502,
70508
],
2
],
[
[
70509,
70511
],
3
],
[
[
70512,
70516
],
2
],
[
[
70517,
70655
],
3
],
[
[
70656,
70730
],
2
],
[
[
70731,
70735
],
2
],
[
[
70736,
70745
],
2
],
[
70746,
2
],
[
70747,
2
],
[
70748,
3
],
[
70749,
2
],
[
70750,
2
],
[
70751,
2
],
[
[
70752,
70753
],
2
],
[
[
70754,
70783
],
3
],
[
[
70784,
70853
],
2
],
[
70854,
2
],
[
70855,
2
],
[
[
70856,
70863
],
3
],
[
[
70864,
70873
],
2
],
[
[
70874,
71039
],
3
],
[
[
71040,
71093
],
2
],
[
[
71094,
71095
],
3
],
[
[
71096,
71104
],
2
],
[
[
71105,
71113
],
2
],
[
[
71114,
71127
],
2
],
[
[
71128,
71133
],
2
],
[
[
71134,
71167
],
3
],
[
[
71168,
71232
],
2
],
[
[
71233,
71235
],
2
],
[
71236,
2
],
[
[
71237,
71247
],
3
],
[
[
71248,
71257
],
2
],
[
[
71258,
71263
],
3
],
[
[
71264,
71276
],
2
],
[
[
71277,
71295
],
3
],
[
[
71296,
71351
],
2
],
[
71352,
2
],
[
[
71353,
71359
],
3
],
[
[
71360,
71369
],
2
],
[
[
71370,
71423
],
3
],
[
[
71424,
71449
],
2
],
[
71450,
2
],
[
[
71451,
71452
],
3
],
[
[
71453,
71467
],
2
],
[
[
71468,
71471
],
3
],
[
[
71472,
71481
],
2
],
[
[
71482,
71487
],
2
],
[
[
71488,
71679
],
3
],
[
[
71680,
71738
],
2
],
[
71739,
2
],
[
[
71740,
71839
],
3
],
[
71840,
1,
"ð£"
],
[
71841,
1,
"ð£"
],
[
71842,
1,
"ð£"
],
[
71843,
1,
"ð£"
],
[
71844,
1,
"ð£"
],
[
71845,
1,
"ð£
"
],
[
71846,
1,
"ð£"
],
[
71847,
1,
"ð£"
],
[
71848,
1,
"ð£"
],
[
71849,
1,
"ð£"
],
[
71850,
1,
"ð£"
],
[
71851,
1,
"ð£"
],
[
71852,
1,
"ð£"
],
[
71853,
1,
"ð£"
],
[
71854,
1,
"ð£"
],
[
71855,
1,
"ð£"
],
[
71856,
1,
"ð£"
],
[
71857,
1,
"ð£"
],
[
71858,
1,
"ð£"
],
[
71859,
1,
"ð£"
],
[
71860,
1,
"ð£"
],
[
71861,
1,
"ð£"
],
[
71862,
1,
"ð£"
],
[
71863,
1,
"ð£"
],
[
71864,
1,
"ð£"
],
[
71865,
1,
"ð£"
],
[
71866,
1,
"ð£"
],
[
71867,
1,
"ð£"
],
[
71868,
1,
"ð£"
],
[
71869,
1,
"ð£"
],
[
71870,
1,
"ð£"
],
[
71871,
1,
"ð£"
],
[
[
71872,
71913
],
2
],
[
[
71914,
71922
],
2
],
[
[
71923,
71934
],
3
],
[
71935,
2
],
[
[
71936,
71942
],
2
],
[
[
71943,
71944
],
3
],
[
71945,
2
],
[
[
71946,
71947
],
3
],
[
[
71948,
71955
],
2
],
[
71956,
3
],
[
[
71957,
71958
],
2
],
[
71959,
3
],
[
[
71960,
71989
],
2
],
[
71990,
3
],
[
[
71991,
71992
],
2
],
[
[
71993,
71994
],
3
],
[
[
71995,
72003
],
2
],
[
[
72004,
72006
],
2
],
[
[
72007,
72015
],
3
],
[
[
72016,
72025
],
2
],
[
[
72026,
72095
],
3
],
[
[
72096,
72103
],
2
],
[
[
72104,
72105
],
3
],
[
[
72106,
72151
],
2
],
[
[
72152,
72153
],
3
],
[
[
72154,
72161
],
2
],
[
72162,
2
],
[
[
72163,
72164
],
2
],
[
[
72165,
72191
],
3
],
[
[
72192,
72254
],
2
],
[
[
72255,
72262
],
2
],
[
72263,
2
],
[
[
72264,
72271
],
3
],
[
[
72272,
72323
],
2
],
[
[
72324,
72325
],
2
],
[
[
72326,
72345
],
2
],
[
[
72346,
72348
],
2
],
[
72349,
2
],
[
[
72350,
72354
],
2
],
[
[
72355,
72383
],
3
],
[
[
72384,
72440
],
2
],
[
[
72441,
72703
],
3
],
[
[
72704,
72712
],
2
],
[
72713,
3
],
[
[
72714,
72758
],
2
],
[
72759,
3
],
[
[
72760,
72768
],
2
],
[
[
72769,
72773
],
2
],
[
[
72774,
72783
],
3
],
[
[
72784,
72793
],
2
],
[
[
72794,
72812
],
2
],
[
[
72813,
72815
],
3
],
[
[
72816,
72817
],
2
],
[
[
72818,
72847
],
2
],
[
[
72848,
72849
],
3
],
[
[
72850,
72871
],
2
],
[
72872,
3
],
[
[
72873,
72886
],
2
],
[
[
72887,
72959
],
3
],
[
[
72960,
72966
],
2
],
[
72967,
3
],
[
[
72968,
72969
],
2
],
[
72970,
3
],
[
[
72971,
73014
],
2
],
[
[
73015,
73017
],
3
],
[
73018,
2
],
[
73019,
3
],
[
[
73020,
73021
],
2
],
[
73022,
3
],
[
[
73023,
73031
],
2
],
[
[
73032,
73039
],
3
],
[
[
73040,
73049
],
2
],
[
[
73050,
73055
],
3
],
[
[
73056,
73061
],
2
],
[
73062,
3
],
[
[
73063,
73064
],
2
],
[
73065,
3
],
[
[
73066,
73102
],
2
],
[
73103,
3
],
[
[
73104,
73105
],
2
],
[
73106,
3
],
[
[
73107,
73112
],
2
],
[
[
73113,
73119
],
3
],
[
[
73120,
73129
],
2
],
[
[
73130,
73439
],
3
],
[
[
73440,
73462
],
2
],
[
[
73463,
73464
],
2
],
[
[
73465,
73647
],
3
],
[
73648,
2
],
[
[
73649,
73663
],
3
],
[
[
73664,
73713
],
2
],
[
[
73714,
73726
],
3
],
[
73727,
2
],
[
[
73728,
74606
],
2
],
[
[
74607,
74648
],
2
],
[
74649,
2
],
[
[
74650,
74751
],
3
],
[
[
74752,
74850
],
2
],
[
[
74851,
74862
],
2
],
[
74863,
3
],
[
[
74864,
74867
],
2
],
[
74868,
2
],
[
[
74869,
74879
],
3
],
[
[
74880,
75075
],
2
],
[
[
75076,
77823
],
3
],
[
[
77824,
78894
],
2
],
[
78895,
3
],
[
[
78896,
78904
],
3
],
[
[
78905,
82943
],
3
],
[
[
82944,
83526
],
2
],
[
[
83527,
92159
],
3
],
[
[
92160,
92728
],
2
],
[
[
92729,
92735
],
3
],
[
[
92736,
92766
],
2
],
[
92767,
3
],
[
[
92768,
92777
],
2
],
[
[
92778,
92781
],
3
],
[
[
92782,
92783
],
2
],
[
[
92784,
92879
],
3
],
[
[
92880,
92909
],
2
],
[
[
92910,
92911
],
3
],
[
[
92912,
92916
],
2
],
[
92917,
2
],
[
[
92918,
92927
],
3
],
[
[
92928,
92982
],
2
],
[
[
92983,
92991
],
2
],
[
[
92992,
92995
],
2
],
[
[
92996,
92997
],
2
],
[
[
92998,
93007
],
3
],
[
[
93008,
93017
],
2
],
[
93018,
3
],
[
[
93019,
93025
],
2
],
[
93026,
3
],
[
[
93027,
93047
],
2
],
[
[
93048,
93052
],
3
],
[
[
93053,
93071
],
2
],
[
[
93072,
93759
],
3
],
[
93760,
1,
"ð¹ "
],
[
93761,
1,
"ð¹¡"
],
[
93762,
1,
"ð¹¢"
],
[
93763,
1,
"ð¹£"
],
[
93764,
1,
"ð¹¤"
],
[
93765,
1,
"ð¹¥"
],
[
93766,
1,
"ð¹¦"
],
[
93767,
1,
"ð¹§"
],
[
93768,
1,
"ð¹¨"
],
[
93769,
1,
"ð¹©"
],
[
93770,
1,
"ð¹ª"
],
[
93771,
1,
"ð¹«"
],
[
93772,
1,
"ð¹¬"
],
[
93773,
1,
"ð¹"
],
[
93774,
1,
"ð¹®"
],
[
93775,
1,
"ð¹¯"
],
[
93776,
1,
"ð¹°"
],
[
93777,
1,
"ð¹±"
],
[
93778,
1,
"ð¹²"
],
[
93779,
1,
"ð¹³"
],
[
93780,
1,
"ð¹´"
],
[
93781,
1,
"ð¹µ"
],
[
93782,
1,
"ð¹¶"
],
[
93783,
1,
"ð¹·"
],
[
93784,
1,
"ð¹¸"
],
[
93785,
1,
"ð¹¹"
],
[
93786,
1,
"ð¹º"
],
[
93787,
1,
"ð¹»"
],
[
93788,
1,
"ð¹¼"
],
[
93789,
1,
"ð¹½"
],
[
93790,
1,
"ð¹¾"
],
[
93791,
1,
"ð¹¿"
],
[
[
93792,
93823
],
2
],
[
[
93824,
93850
],
2
],
[
[
93851,
93951
],
3
],
[
[
93952,
94020
],
2
],
[
[
94021,
94026
],
2
],
[
[
94027,
94030
],
3
],
[
94031,
2
],
[
[
94032,
94078
],
2
],
[
[
94079,
94087
],
2
],
[
[
94088,
94094
],
3
],
[
[
94095,
94111
],
2
],
[
[
94112,
94175
],
3
],
[
94176,
2
],
[
94177,
2
],
[
94178,
2
],
[
94179,
2
],
[
94180,
2
],
[
[
94181,
94191
],
3
],
[
[
94192,
94193
],
2
],
[
[
94194,
94207
],
3
],
[
[
94208,
100332
],
2
],
[
[
100333,
100337
],
2
],
[
[
100338,
100343
],
2
],
[
[
100344,
100351
],
3
],
[
[
100352,
101106
],
2
],
[
[
101107,
101589
],
2
],
[
[
101590,
101631
],
3
],
[
[
101632,
101640
],
2
],
[
[
101641,
110591
],
3
],
[
[
110592,
110593
],
2
],
[
[
110594,
110878
],
2
],
[
[
110879,
110927
],
3
],
[
[
110928,
110930
],
2
],
[
[
110931,
110947
],
3
],
[
[
110948,
110951
],
2
],
[
[
110952,
110959
],
3
],
[
[
110960,
111355
],
2
],
[
[
111356,
113663
],
3
],
[
[
113664,
113770
],
2
],
[
[
113771,
113775
],
3
],
[
[
113776,
113788
],
2
],
[
[
113789,
113791
],
3
],
[
[
113792,
113800
],
2
],
[
[
113801,
113807
],
3
],
[
[
113808,
113817
],
2
],
[
[
113818,
113819
],
3
],
[
113820,
2
],
[
[
113821,
113822
],
2
],
[
113823,
2
],
[
[
113824,
113827
],
7
],
[
[
113828,
118783
],
3
],
[
[
118784,
119029
],
2
],
[
[
119030,
119039
],
3
],
[
[
119040,
119078
],
2
],
[
[
119079,
119080
],
3
],
[
119081,
2
],
[
[
119082,
119133
],
2
],
[
119134,
1,
"ð
ð
¥"
],
[
119135,
1,
"ð
ð
¥"
],
[
119136,
1,
"ð
ð
¥ð
®"
],
[
119137,
1,
"ð
ð
¥ð
¯"
],
[
119138,
1,
"ð
ð
¥ð
°"
],
[
119139,
1,
"ð
ð
¥ð
±"
],
[
119140,
1,
"ð
ð
¥ð
²"
],
[
[
119141,
119154
],
2
],
[
[
119155,
119162
],
3
],
[
[
119163,
119226
],
2
],
[
119227,
1,
"ð¹ð
¥"
],
[
119228,
1,
"ðºð
¥"
],
[
119229,
1,
"ð¹ð
¥ð
®"
],
[
119230,
1,
"ðºð
¥ð
®"
],
[
119231,
1,
"ð¹ð
¥ð
¯"
],
[
119232,
1,
"ðºð
¥ð
¯"
],
[
[
119233,
119261
],
2
],
[
[
119262,
119272
],
2
],
[
[
119273,
119295
],
3
],
[
[
119296,
119365
],
2
],
[
[
119366,
119519
],
3
],
[
[
119520,
119539
],
2
],
[
[
119540,
119551
],
3
],
[
[
119552,
119638
],
2
],
[
[
119639,
119647
],
3
],
[
[
119648,
119665
],
2
],
[
[
119666,
119672
],
2
],
[
[
119673,
119807
],
3
],
[
119808,
1,
"a"
],
[
119809,
1,
"b"
],
[
119810,
1,
"c"
],
[
119811,
1,
"d"
],
[
119812,
1,
"e"
],
[
119813,
1,
"f"
],
[
119814,
1,
"g"
],
[
119815,
1,
"h"
],
[
119816,
1,
"i"
],
[
119817,
1,
"j"
],
[
119818,
1,
"k"
],
[
119819,
1,
"l"
],
[
119820,
1,
"m"
],
[
119821,
1,
"n"
],
[
119822,
1,
"o"
],
[
119823,
1,
"p"
],
[
119824,
1,
"q"
],
[
119825,
1,
"r"
],
[
119826,
1,
"s"
],
[
119827,
1,
"t"
],
[
119828,
1,
"u"
],
[
119829,
1,
"v"
],
[
119830,
1,
"w"
],
[
119831,
1,
"x"
],
[
119832,
1,
"y"
],
[
119833,
1,
"z"
],
[
119834,
1,
"a"
],
[
119835,
1,
"b"
],
[
119836,
1,
"c"
],
[
119837,
1,
"d"
],
[
119838,
1,
"e"
],
[
119839,
1,
"f"
],
[
119840,
1,
"g"
],
[
119841,
1,
"h"
],
[
119842,
1,
"i"
],
[
119843,
1,
"j"
],
[
119844,
1,
"k"
],
[
119845,
1,
"l"
],
[
119846,
1,
"m"
],
[
119847,
1,
"n"
],
[
119848,
1,
"o"
],
[
119849,
1,
"p"
],
[
119850,
1,
"q"
],
[
119851,
1,
"r"
],
[
119852,
1,
"s"
],
[
119853,
1,
"t"
],
[
119854,
1,
"u"
],
[
119855,
1,
"v"
],
[
119856,
1,
"w"
],
[
119857,
1,
"x"
],
[
119858,
1,
"y"
],
[
119859,
1,
"z"
],
[
119860,
1,
"a"
],
[
119861,
1,
"b"
],
[
119862,
1,
"c"
],
[
119863,
1,
"d"
],
[
119864,
1,
"e"
],
[
119865,
1,
"f"
],
[
119866,
1,
"g"
],
[
119867,
1,
"h"
],
[
119868,
1,
"i"
],
[
119869,
1,
"j"
],
[
119870,
1,
"k"
],
[
119871,
1,
"l"
],
[
119872,
1,
"m"
],
[
119873,
1,
"n"
],
[
119874,
1,
"o"
],
[
119875,
1,
"p"
],
[
119876,
1,
"q"
],
[
119877,
1,
"r"
],
[
119878,
1,
"s"
],
[
119879,
1,
"t"
],
[
119880,
1,
"u"
],
[
119881,
1,
"v"
],
[
119882,
1,
"w"
],
[
119883,
1,
"x"
],
[
119884,
1,
"y"
],
[
119885,
1,
"z"
],
[
119886,
1,
"a"
],
[
119887,
1,
"b"
],
[
119888,
1,
"c"
],
[
119889,
1,
"d"
],
[
119890,
1,
"e"
],
[
119891,
1,
"f"
],
[
119892,
1,
"g"
],
[
119893,
3
],
[
119894,
1,
"i"
],
[
119895,
1,
"j"
],
[
119896,
1,
"k"
],
[
119897,
1,
"l"
],
[
119898,
1,
"m"
],
[
119899,
1,
"n"
],
[
119900,
1,
"o"
],
[
119901,
1,
"p"
],
[
119902,
1,
"q"
],
[
119903,
1,
"r"
],
[
119904,
1,
"s"
],
[
119905,
1,
"t"
],
[
119906,
1,
"u"
],
[
119907,
1,
"v"
],
[
119908,
1,
"w"
],
[
119909,
1,
"x"
],
[
119910,
1,
"y"
],
[
119911,
1,
"z"
],
[
119912,
1,
"a"
],
[
119913,
1,
"b"
],
[
119914,
1,
"c"
],
[
119915,
1,
"d"
],
[
119916,
1,
"e"
],
[
119917,
1,
"f"
],
[
119918,
1,
"g"
],
[
119919,
1,
"h"
],
[
119920,
1,
"i"
],
[
119921,
1,
"j"
],
[
119922,
1,
"k"
],
[
119923,
1,
"l"
],
[
119924,
1,
"m"
],
[
119925,
1,
"n"
],
[
119926,
1,
"o"
],
[
119927,
1,
"p"
],
[
119928,
1,
"q"
],
[
119929,
1,
"r"
],
[
119930,
1,
"s"
],
[
119931,
1,
"t"
],
[
119932,
1,
"u"
],
[
119933,
1,
"v"
],
[
119934,
1,
"w"
],
[
119935,
1,
"x"
],
[
119936,
1,
"y"
],
[
119937,
1,
"z"
],
[
119938,
1,
"a"
],
[
119939,
1,
"b"
],
[
119940,
1,
"c"
],
[
119941,
1,
"d"
],
[
119942,
1,
"e"
],
[
119943,
1,
"f"
],
[
119944,
1,
"g"
],
[
119945,
1,
"h"
],
[
119946,
1,
"i"
],
[
119947,
1,
"j"
],
[
119948,
1,
"k"
],
[
119949,
1,
"l"
],
[
119950,
1,
"m"
],
[
119951,
1,
"n"
],
[
119952,
1,
"o"
],
[
119953,
1,
"p"
],
[
119954,
1,
"q"
],
[
119955,
1,
"r"
],
[
119956,
1,
"s"
],
[
119957,
1,
"t"
],
[
119958,
1,
"u"
],
[
119959,
1,
"v"
],
[
119960,
1,
"w"
],
[
119961,
1,
"x"
],
[
119962,
1,
"y"
],
[
119963,
1,
"z"
],
[
119964,
1,
"a"
],
[
119965,
3
],
[
119966,
1,
"c"
],
[
119967,
1,
"d"
],
[
[
119968,
119969
],
3
],
[
119970,
1,
"g"
],
[
[
119971,
119972
],
3
],
[
119973,
1,
"j"
],
[
119974,
1,
"k"
],
[
[
119975,
119976
],
3
],
[
119977,
1,
"n"
],
[
119978,
1,
"o"
],
[
119979,
1,
"p"
],
[
119980,
1,
"q"
],
[
119981,
3
],
[
119982,
1,
"s"
],
[
119983,
1,
"t"
],
[
119984,
1,
"u"
],
[
119985,
1,
"v"
],
[
119986,
1,
"w"
],
[
119987,
1,
"x"
],
[
119988,
1,
"y"
],
[
119989,
1,
"z"
],
[
119990,
1,
"a"
],
[
119991,
1,
"b"
],
[
119992,
1,
"c"
],
[
119993,
1,
"d"
],
[
119994,
3
],
[
119995,
1,
"f"
],
[
119996,
3
],
[
119997,
1,
"h"
],
[
119998,
1,
"i"
],
[
119999,
1,
"j"
],
[
120000,
1,
"k"
],
[
120001,
1,
"l"
],
[
120002,
1,
"m"
],
[
120003,
1,
"n"
],
[
120004,
3
],
[
120005,
1,
"p"
],
[
120006,
1,
"q"
],
[
120007,
1,
"r"
],
[
120008,
1,
"s"
],
[
120009,
1,
"t"
],
[
120010,
1,
"u"
],
[
120011,
1,
"v"
],
[
120012,
1,
"w"
],
[
120013,
1,
"x"
],
[
120014,
1,
"y"
],
[
120015,
1,
"z"
],
[
120016,
1,
"a"
],
[
120017,
1,
"b"
],
[
120018,
1,
"c"
],
[
120019,
1,
"d"
],
[
120020,
1,
"e"
],
[
120021,
1,
"f"
],
[
120022,
1,
"g"
],
[
120023,
1,
"h"
],
[
120024,
1,
"i"
],
[
120025,
1,
"j"
],
[
120026,
1,
"k"
],
[
120027,
1,
"l"
],
[
120028,
1,
"m"
],
[
120029,
1,
"n"
],
[
120030,
1,
"o"
],
[
120031,
1,
"p"
],
[
120032,
1,
"q"
],
[
120033,
1,
"r"
],
[
120034,
1,
"s"
],
[
120035,
1,
"t"
],
[
120036,
1,
"u"
],
[
120037,
1,
"v"
],
[
120038,
1,
"w"
],
[
120039,
1,
"x"
],
[
120040,
1,
"y"
],
[
120041,
1,
"z"
],
[
120042,
1,
"a"
],
[
120043,
1,
"b"
],
[
120044,
1,
"c"
],
[
120045,
1,
"d"
],
[
120046,
1,
"e"
],
[
120047,
1,
"f"
],
[
120048,
1,
"g"
],
[
120049,
1,
"h"
],
[
120050,
1,
"i"
],
[
120051,
1,
"j"
],
[
120052,
1,
"k"
],
[
120053,
1,
"l"
],
[
120054,
1,
"m"
],
[
120055,
1,
"n"
],
[
120056,
1,
"o"
],
[
120057,
1,
"p"
],
[
120058,
1,
"q"
],
[
120059,
1,
"r"
],
[
120060,
1,
"s"
],
[
120061,
1,
"t"
],
[
120062,
1,
"u"
],
[
120063,
1,
"v"
],
[
120064,
1,
"w"
],
[
120065,
1,
"x"
],
[
120066,
1,
"y"
],
[
120067,
1,
"z"
],
[
120068,
1,
"a"
],
[
120069,
1,
"b"
],
[
120070,
3
],
[
120071,
1,
"d"
],
[
120072,
1,
"e"
],
[
120073,
1,
"f"
],
[
120074,
1,
"g"
],
[
[
120075,
120076
],
3
],
[
120077,
1,
"j"
],
[
120078,
1,
"k"
],
[
120079,
1,
"l"
],
[
120080,
1,
"m"
],
[
120081,
1,
"n"
],
[
120082,
1,
"o"
],
[
120083,
1,
"p"
],
[
120084,
1,
"q"
],
[
120085,
3
],
[
120086,
1,
"s"
],
[
120087,
1,
"t"
],
[
120088,
1,
"u"
],
[
120089,
1,
"v"
],
[
120090,
1,
"w"
],
[
120091,
1,
"x"
],
[
120092,
1,
"y"
],
[
120093,
3
],
[
120094,
1,
"a"
],
[
120095,
1,
"b"
],
[
120096,
1,
"c"
],
[
120097,
1,
"d"
],
[
120098,
1,
"e"
],
[
120099,
1,
"f"
],
[
120100,
1,
"g"
],
[
120101,
1,
"h"
],
[
120102,
1,
"i"
],
[
120103,
1,
"j"
],
[
120104,
1,
"k"
],
[
120105,
1,
"l"
],
[
120106,
1,
"m"
],
[
120107,
1,
"n"
],
[
120108,
1,
"o"
],
[
120109,
1,
"p"
],
[
120110,
1,
"q"
],
[
120111,
1,
"r"
],
[
120112,
1,
"s"
],
[
120113,
1,
"t"
],
[
120114,
1,
"u"
],
[
120115,
1,
"v"
],
[
120116,
1,
"w"
],
[
120117,
1,
"x"
],
[
120118,
1,
"y"
],
[
120119,
1,
"z"
],
[
120120,
1,
"a"
],
[
120121,
1,
"b"
],
[
120122,
3
],
[
120123,
1,
"d"
],
[
120124,
1,
"e"
],
[
120125,
1,
"f"
],
[
120126,
1,
"g"
],
[
120127,
3
],
[
120128,
1,
"i"
],
[
120129,
1,
"j"
],
[
120130,
1,
"k"
],
[
120131,
1,
"l"
],
[
120132,
1,
"m"
],
[
120133,
3
],
[
120134,
1,
"o"
],
[
[
120135,
120137
],
3
],
[
120138,
1,
"s"
],
[
120139,
1,
"t"
],
[
120140,
1,
"u"
],
[
120141,
1,
"v"
],
[
120142,
1,
"w"
],
[
120143,
1,
"x"
],
[
120144,
1,
"y"
],
[
120145,
3
],
[
120146,
1,
"a"
],
[
120147,
1,
"b"
],
[
120148,
1,
"c"
],
[
120149,
1,
"d"
],
[
120150,
1,
"e"
],
[
120151,
1,
"f"
],
[
120152,
1,
"g"
],
[
120153,
1,
"h"
],
[
120154,
1,
"i"
],
[
120155,
1,
"j"
],
[
120156,
1,
"k"
],
[
120157,
1,
"l"
],
[
120158,
1,
"m"
],
[
120159,
1,
"n"
],
[
120160,
1,
"o"
],
[
120161,
1,
"p"
],
[
120162,
1,
"q"
],
[
120163,
1,
"r"
],
[
120164,
1,
"s"
],
[
120165,
1,
"t"
],
[
120166,
1,
"u"
],
[
120167,
1,
"v"
],
[
120168,
1,
"w"
],
[
120169,
1,
"x"
],
[
120170,
1,
"y"
],
[
120171,
1,
"z"
],
[
120172,
1,
"a"
],
[
120173,
1,
"b"
],
[
120174,
1,
"c"
],
[
120175,
1,
"d"
],
[
120176,
1,
"e"
],
[
120177,
1,
"f"
],
[
120178,
1,
"g"
],
[
120179,
1,
"h"
],
[
120180,
1,
"i"
],
[
120181,
1,
"j"
],
[
120182,
1,
"k"
],
[
120183,
1,
"l"
],
[
120184,
1,
"m"
],
[
120185,
1,
"n"
],
[
120186,
1,
"o"
],
[
120187,
1,
"p"
],
[
120188,
1,
"q"
],
[
120189,
1,
"r"
],
[
120190,
1,
"s"
],
[
120191,
1,
"t"
],
[
120192,
1,
"u"
],
[
120193,
1,
"v"
],
[
120194,
1,
"w"
],
[
120195,
1,
"x"
],
[
120196,
1,
"y"
],
[
120197,
1,
"z"
],
[
120198,
1,
"a"
],
[
120199,
1,
"b"
],
[
120200,
1,
"c"
],
[
120201,
1,
"d"
],
[
120202,
1,
"e"
],
[
120203,
1,
"f"
],
[
120204,
1,
"g"
],
[
120205,
1,
"h"
],
[
120206,
1,
"i"
],
[
120207,
1,
"j"
],
[
120208,
1,
"k"
],
[
120209,
1,
"l"
],
[
120210,
1,
"m"
],
[
120211,
1,
"n"
],
[
120212,
1,
"o"
],
[
120213,
1,
"p"
],
[
120214,
1,
"q"
],
[
120215,
1,
"r"
],
[
120216,
1,
"s"
],
[
120217,
1,
"t"
],
[
120218,
1,
"u"
],
[
120219,
1,
"v"
],
[
120220,
1,
"w"
],
[
120221,
1,
"x"
],
[
120222,
1,
"y"
],
[
120223,
1,
"z"
],
[
120224,
1,
"a"
],
[
120225,
1,
"b"
],
[
120226,
1,
"c"
],
[
120227,
1,
"d"
],
[
120228,
1,
"e"
],
[
120229,
1,
"f"
],
[
120230,
1,
"g"
],
[
120231,
1,
"h"
],
[
120232,
1,
"i"
],
[
120233,
1,
"j"
],
[
120234,
1,
"k"
],
[
120235,
1,
"l"
],
[
120236,
1,
"m"
],
[
120237,
1,
"n"
],
[
120238,
1,
"o"
],
[
120239,
1,
"p"
],
[
120240,
1,
"q"
],
[
120241,
1,
"r"
],
[
120242,
1,
"s"
],
[
120243,
1,
"t"
],
[
120244,
1,
"u"
],
[
120245,
1,
"v"
],
[
120246,
1,
"w"
],
[
120247,
1,
"x"
],
[
120248,
1,
"y"
],
[
120249,
1,
"z"
],
[
120250,
1,
"a"
],
[
120251,
1,
"b"
],
[
120252,
1,
"c"
],
[
120253,
1,
"d"
],
[
120254,
1,
"e"
],
[
120255,
1,
"f"
],
[
120256,
1,
"g"
],
[
120257,
1,
"h"
],
[
120258,
1,
"i"
],
[
120259,
1,
"j"
],
[
120260,
1,
"k"
],
[
120261,
1,
"l"
],
[
120262,
1,
"m"
],
[
120263,
1,
"n"
],
[
120264,
1,
"o"
],
[
120265,
1,
"p"
],
[
120266,
1,
"q"
],
[
120267,
1,
"r"
],
[
120268,
1,
"s"
],
[
120269,
1,
"t"
],
[
120270,
1,
"u"
],
[
120271,
1,
"v"
],
[
120272,
1,
"w"
],
[
120273,
1,
"x"
],
[
120274,
1,
"y"
],
[
120275,
1,
"z"
],
[
120276,
1,
"a"
],
[
120277,
1,
"b"
],
[
120278,
1,
"c"
],
[
120279,
1,
"d"
],
[
120280,
1,
"e"
],
[
120281,
1,
"f"
],
[
120282,
1,
"g"
],
[
120283,
1,
"h"
],
[
120284,
1,
"i"
],
[
120285,
1,
"j"
],
[
120286,
1,
"k"
],
[
120287,
1,
"l"
],
[
120288,
1,
"m"
],
[
120289,
1,
"n"
],
[
120290,
1,
"o"
],
[
120291,
1,
"p"
],
[
120292,
1,
"q"
],
[
120293,
1,
"r"
],
[
120294,
1,
"s"
],
[
120295,
1,
"t"
],
[
120296,
1,
"u"
],
[
120297,
1,
"v"
],
[
120298,
1,
"w"
],
[
120299,
1,
"x"
],
[
120300,
1,
"y"
],
[
120301,
1,
"z"
],
[
120302,
1,
"a"
],
[
120303,
1,
"b"
],
[
120304,
1,
"c"
],
[
120305,
1,
"d"
],
[
120306,
1,
"e"
],
[
120307,
1,
"f"
],
[
120308,
1,
"g"
],
[
120309,
1,
"h"
],
[
120310,
1,
"i"
],
[
120311,
1,
"j"
],
[
120312,
1,
"k"
],
[
120313,
1,
"l"
],
[
120314,
1,
"m"
],
[
120315,
1,
"n"
],
[
120316,
1,
"o"
],
[
120317,
1,
"p"
],
[
120318,
1,
"q"
],
[
120319,
1,
"r"
],
[
120320,
1,
"s"
],
[
120321,
1,
"t"
],
[
120322,
1,
"u"
],
[
120323,
1,
"v"
],
[
120324,
1,
"w"
],
[
120325,
1,
"x"
],
[
120326,
1,
"y"
],
[
120327,
1,
"z"
],
[
120328,
1,
"a"
],
[
120329,
1,
"b"
],
[
120330,
1,
"c"
],
[
120331,
1,
"d"
],
[
120332,
1,
"e"
],
[
120333,
1,
"f"
],
[
120334,
1,
"g"
],
[
120335,
1,
"h"
],
[
120336,
1,
"i"
],
[
120337,
1,
"j"
],
[
120338,
1,
"k"
],
[
120339,
1,
"l"
],
[
120340,
1,
"m"
],
[
120341,
1,
"n"
],
[
120342,
1,
"o"
],
[
120343,
1,
"p"
],
[
120344,
1,
"q"
],
[
120345,
1,
"r"
],
[
120346,
1,
"s"
],
[
120347,
1,
"t"
],
[
120348,
1,
"u"
],
[
120349,
1,
"v"
],
[
120350,
1,
"w"
],
[
120351,
1,
"x"
],
[
120352,
1,
"y"
],
[
120353,
1,
"z"
],
[
120354,
1,
"a"
],
[
120355,
1,
"b"
],
[
120356,
1,
"c"
],
[
120357,
1,
"d"
],
[
120358,
1,
"e"
],
[
120359,
1,
"f"
],
[
120360,
1,
"g"
],
[
120361,
1,
"h"
],
[
120362,
1,
"i"
],
[
120363,
1,
"j"
],
[
120364,
1,
"k"
],
[
120365,
1,
"l"
],
[
120366,
1,
"m"
],
[
120367,
1,
"n"
],
[
120368,
1,
"o"
],
[
120369,
1,
"p"
],
[
120370,
1,
"q"
],
[
120371,
1,
"r"
],
[
120372,
1,
"s"
],
[
120373,
1,
"t"
],
[
120374,
1,
"u"
],
[
120375,
1,
"v"
],
[
120376,
1,
"w"
],
[
120377,
1,
"x"
],
[
120378,
1,
"y"
],
[
120379,
1,
"z"
],
[
120380,
1,
"a"
],
[
120381,
1,
"b"
],
[
120382,
1,
"c"
],
[
120383,
1,
"d"
],
[
120384,
1,
"e"
],
[
120385,
1,
"f"
],
[
120386,
1,
"g"
],
[
120387,
1,
"h"
],
[
120388,
1,
"i"
],
[
120389,
1,
"j"
],
[
120390,
1,
"k"
],
[
120391,
1,
"l"
],
[
120392,
1,
"m"
],
[
120393,
1,
"n"
],
[
120394,
1,
"o"
],
[
120395,
1,
"p"
],
[
120396,
1,
"q"
],
[
120397,
1,
"r"
],
[
120398,
1,
"s"
],
[
120399,
1,
"t"
],
[
120400,
1,
"u"
],
[
120401,
1,
"v"
],
[
120402,
1,
"w"
],
[
120403,
1,
"x"
],
[
120404,
1,
"y"
],
[
120405,
1,
"z"
],
[
120406,
1,
"a"
],
[
120407,
1,
"b"
],
[
120408,
1,
"c"
],
[
120409,
1,
"d"
],
[
120410,
1,
"e"
],
[
120411,
1,
"f"
],
[
120412,
1,
"g"
],
[
120413,
1,
"h"
],
[
120414,
1,
"i"
],
[
120415,
1,
"j"
],
[
120416,
1,
"k"
],
[
120417,
1,
"l"
],
[
120418,
1,
"m"
],
[
120419,
1,
"n"
],
[
120420,
1,
"o"
],
[
120421,
1,
"p"
],
[
120422,
1,
"q"
],
[
120423,
1,
"r"
],
[
120424,
1,
"s"
],
[
120425,
1,
"t"
],
[
120426,
1,
"u"
],
[
120427,
1,
"v"
],
[
120428,
1,
"w"
],
[
120429,
1,
"x"
],
[
120430,
1,
"y"
],
[
120431,
1,
"z"
],
[
120432,
1,
"a"
],
[
120433,
1,
"b"
],
[
120434,
1,
"c"
],
[
120435,
1,
"d"
],
[
120436,
1,
"e"
],
[
120437,
1,
"f"
],
[
120438,
1,
"g"
],
[
120439,
1,
"h"
],
[
120440,
1,
"i"
],
[
120441,
1,
"j"
],
[
120442,
1,
"k"
],
[
120443,
1,
"l"
],
[
120444,
1,
"m"
],
[
120445,
1,
"n"
],
[
120446,
1,
"o"
],
[
120447,
1,
"p"
],
[
120448,
1,
"q"
],
[
120449,
1,
"r"
],
[
120450,
1,
"s"
],
[
120451,
1,
"t"
],
[
120452,
1,
"u"
],
[
120453,
1,
"v"
],
[
120454,
1,
"w"
],
[
120455,
1,
"x"
],
[
120456,
1,
"y"
],
[
120457,
1,
"z"
],
[
120458,
1,
"a"
],
[
120459,
1,
"b"
],
[
120460,
1,
"c"
],
[
120461,
1,
"d"
],
[
120462,
1,
"e"
],
[
120463,
1,
"f"
],
[
120464,
1,
"g"
],
[
120465,
1,
"h"
],
[
120466,
1,
"i"
],
[
120467,
1,
"j"
],
[
120468,
1,
"k"
],
[
120469,
1,
"l"
],
[
120470,
1,
"m"
],
[
120471,
1,
"n"
],
[
120472,
1,
"o"
],
[
120473,
1,
"p"
],
[
120474,
1,
"q"
],
[
120475,
1,
"r"
],
[
120476,
1,
"s"
],
[
120477,
1,
"t"
],
[
120478,
1,
"u"
],
[
120479,
1,
"v"
],
[
120480,
1,
"w"
],
[
120481,
1,
"x"
],
[
120482,
1,
"y"
],
[
120483,
1,
"z"
],
[
120484,
1,
"ı"
],
[
120485,
1,
"È·"
],
[
[
120486,
120487
],
3
],
[
120488,
1,
"α"
],
[
120489,
1,
"β"
],
[
120490,
1,
"γ"
],
[
120491,
1,
"δ"
],
[
120492,
1,
"ε"
],
[
120493,
1,
"ζ"
],
[
120494,
1,
"η"
],
[
120495,
1,
"θ"
],
[
120496,
1,
"ι"
],
[
120497,
1,
"κ"
],
[
120498,
1,
"λ"
],
[
120499,
1,
"μ"
],
[
120500,
1,
"ν"
],
[
120501,
1,
"ξ"
],
[
120502,
1,
"ο"
],
[
120503,
1,
"Ï"
],
[
120504,
1,
"Ï"
],
[
120505,
1,
"θ"
],
[
120506,
1,
"Ï"
],
[
120507,
1,
"Ï"
],
[
120508,
1,
"Ï
"
],
[
120509,
1,
"Ï"
],
[
120510,
1,
"Ï"
],
[
120511,
1,
"Ï"
],
[
120512,
1,
"Ï"
],
[
120513,
1,
"â"
],
[
120514,
1,
"α"
],
[
120515,
1,
"β"
],
[
120516,
1,
"γ"
],
[
120517,
1,
"δ"
],
[
120518,
1,
"ε"
],
[
120519,
1,
"ζ"
],
[
120520,
1,
"η"
],
[
120521,
1,
"θ"
],
[
120522,
1,
"ι"
],
[
120523,
1,
"κ"
],
[
120524,
1,
"λ"
],
[
120525,
1,
"μ"
],
[
120526,
1,
"ν"
],
[
120527,
1,
"ξ"
],
[
120528,
1,
"ο"
],
[
120529,
1,
"Ï"
],
[
120530,
1,
"Ï"
],
[
[
120531,
120532
],
1,
"Ï"
],
[
120533,
1,
"Ï"
],
[
120534,
1,
"Ï
"
],
[
120535,
1,
"Ï"
],
[
120536,
1,
"Ï"
],
[
120537,
1,
"Ï"
],
[
120538,
1,
"Ï"
],
[
120539,
1,
"â"
],
[
120540,
1,
"ε"
],
[
120541,
1,
"θ"
],
[
120542,
1,
"κ"
],
[
120543,
1,
"Ï"
],
[
120544,
1,
"Ï"
],
[
120545,
1,
"Ï"
],
[
120546,
1,
"α"
],
[
120547,
1,
"β"
],
[
120548,
1,
"γ"
],
[
120549,
1,
"δ"
],
[
120550,
1,
"ε"
],
[
120551,
1,
"ζ"
],
[
120552,
1,
"η"
],
[
120553,
1,
"θ"
],
[
120554,
1,
"ι"
],
[
120555,
1,
"κ"
],
[
120556,
1,
"λ"
],
[
120557,
1,
"μ"
],
[
120558,
1,
"ν"
],
[
120559,
1,
"ξ"
],
[
120560,
1,
"ο"
],
[
120561,
1,
"Ï"
],
[
120562,
1,
"Ï"
],
[
120563,
1,
"θ"
],
[
120564,
1,
"Ï"
],
[
120565,
1,
"Ï"
],
[
120566,
1,
"Ï
"
],
[
120567,
1,
"Ï"
],
[
120568,
1,
"Ï"
],
[
120569,
1,
"Ï"
],
[
120570,
1,
"Ï"
],
[
120571,
1,
"â"
],
[
120572,
1,
"α"
],
[
120573,
1,
"β"
],
[
120574,
1,
"γ"
],
[
120575,
1,
"δ"
],
[
120576,
1,
"ε"
],
[
120577,
1,
"ζ"
],
[
120578,
1,
"η"
],
[
120579,
1,
"θ"
],
[
120580,
1,
"ι"
],
[
120581,
1,
"κ"
],
[
120582,
1,
"λ"
],
[
120583,
1,
"μ"
],
[
120584,
1,
"ν"
],
[
120585,
1,
"ξ"
],
[
120586,
1,
"ο"
],
[
120587,
1,
"Ï"
],
[
120588,
1,
"Ï"
],
[
[
120589,
120590
],
1,
"Ï"
],
[
120591,
1,
"Ï"
],
[
120592,
1,
"Ï
"
],
[
120593,
1,
"Ï"
],
[
120594,
1,
"Ï"
],
[
120595,
1,
"Ï"
],
[
120596,
1,
"Ï"
],
[
120597,
1,
"â"
],
[
120598,
1,
"ε"
],
[
120599,
1,
"θ"
],
[
120600,
1,
"κ"
],
[
120601,
1,
"Ï"
],
[
120602,
1,
"Ï"
],
[
120603,
1,
"Ï"
],
[
120604,
1,
"α"
],
[
120605,
1,
"β"
],
[
120606,
1,
"γ"
],
[
120607,
1,
"δ"
],
[
120608,
1,
"ε"
],
[
120609,
1,
"ζ"
],
[
120610,
1,
"η"
],
[
120611,
1,
"θ"
],
[
120612,
1,
"ι"
],
[
120613,
1,
"κ"
],
[
120614,
1,
"λ"
],
[
120615,
1,
"μ"
],
[
120616,
1,
"ν"
],
[
120617,
1,
"ξ"
],
[
120618,
1,
"ο"
],
[
120619,
1,
"Ï"
],
[
120620,
1,
"Ï"
],
[
120621,
1,
"θ"
],
[
120622,
1,
"Ï"
],
[
120623,
1,
"Ï"
],
[
120624,
1,
"Ï
"
],
[
120625,
1,
"Ï"
],
[
120626,
1,
"Ï"
],
[
120627,
1,
"Ï"
],
[
120628,
1,
"Ï"
],
[
120629,
1,
"â"
],
[
120630,
1,
"α"
],
[
120631,
1,
"β"
],
[
120632,
1,
"γ"
],
[
120633,
1,
"δ"
],
[
120634,
1,
"ε"
],
[
120635,
1,
"ζ"
],
[
120636,
1,
"η"
],
[
120637,
1,
"θ"
],
[
120638,
1,
"ι"
],
[
120639,
1,
"κ"
],
[
120640,
1,
"λ"
],
[
120641,
1,
"μ"
],
[
120642,
1,
"ν"
],
[
120643,
1,
"ξ"
],
[
120644,
1,
"ο"
],
[
120645,
1,
"Ï"
],
[
120646,
1,
"Ï"
],
[
[
120647,
120648
],
1,
"Ï"
],
[
120649,
1,
"Ï"
],
[
120650,
1,
"Ï
"
],
[
120651,
1,
"Ï"
],
[
120652,
1,
"Ï"
],
[
120653,
1,
"Ï"
],
[
120654,
1,
"Ï"
],
[
120655,
1,
"â"
],
[
120656,
1,
"ε"
],
[
120657,
1,
"θ"
],
[
120658,
1,
"κ"
],
[
120659,
1,
"Ï"
],
[
120660,
1,
"Ï"
],
[
120661,
1,
"Ï"
],
[
120662,
1,
"α"
],
[
120663,
1,
"β"
],
[
120664,
1,
"γ"
],
[
120665,
1,
"δ"
],
[
120666,
1,
"ε"
],
[
120667,
1,
"ζ"
],
[
120668,
1,
"η"
],
[
120669,
1,
"θ"
],
[
120670,
1,
"ι"
],
[
120671,
1,
"κ"
],
[
120672,
1,
"λ"
],
[
120673,
1,
"μ"
],
[
120674,
1,
"ν"
],
[
120675,
1,
"ξ"
],
[
120676,
1,
"ο"
],
[
120677,
1,
"Ï"
],
[
120678,
1,
"Ï"
],
[
120679,
1,
"θ"
],
[
120680,
1,
"Ï"
],
[
120681,
1,
"Ï"
],
[
120682,
1,
"Ï
"
],
[
120683,
1,
"Ï"
],
[
120684,
1,
"Ï"
],
[
120685,
1,
"Ï"
],
[
120686,
1,
"Ï"
],
[
120687,
1,
"â"
],
[
120688,
1,
"α"
],
[
120689,
1,
"β"
],
[
120690,
1,
"γ"
],
[
120691,
1,
"δ"
],
[
120692,
1,
"ε"
],
[
120693,
1,
"ζ"
],
[
120694,
1,
"η"
],
[
120695,
1,
"θ"
],
[
120696,
1,
"ι"
],
[
120697,
1,
"κ"
],
[
120698,
1,
"λ"
],
[
120699,
1,
"μ"
],
[
120700,
1,
"ν"
],
[
120701,
1,
"ξ"
],
[
120702,
1,
"ο"
],
[
120703,
1,
"Ï"
],
[
120704,
1,
"Ï"
],
[
[
120705,
120706
],
1,
"Ï"
],
[
120707,
1,
"Ï"
],
[
120708,
1,
"Ï
"
],
[
120709,
1,
"Ï"
],
[
120710,
1,
"Ï"
],
[
120711,
1,
"Ï"
],
[
120712,
1,
"Ï"
],
[
120713,
1,
"â"
],
[
120714,
1,
"ε"
],
[
120715,
1,
"θ"
],
[
120716,
1,
"κ"
],
[
120717,
1,
"Ï"
],
[
120718,
1,
"Ï"
],
[
120719,
1,
"Ï"
],
[
120720,
1,
"α"
],
[
120721,
1,
"β"
],
[
120722,
1,
"γ"
],
[
120723,
1,
"δ"
],
[
120724,
1,
"ε"
],
[
120725,
1,
"ζ"
],
[
120726,
1,
"η"
],
[
120727,
1,
"θ"
],
[
120728,
1,
"ι"
],
[
120729,
1,
"κ"
],
[
120730,
1,
"λ"
],
[
120731,
1,
"μ"
],
[
120732,
1,
"ν"
],
[
120733,
1,
"ξ"
],
[
120734,
1,
"ο"
],
[
120735,
1,
"Ï"
],
[
120736,
1,
"Ï"
],
[
120737,
1,
"θ"
],
[
120738,
1,
"Ï"
],
[
120739,
1,
"Ï"
],
[
120740,
1,
"Ï
"
],
[
120741,
1,
"Ï"
],
[
120742,
1,
"Ï"
],
[
120743,
1,
"Ï"
],
[
120744,
1,
"Ï"
],
[
120745,
1,
"â"
],
[
120746,
1,
"α"
],
[
120747,
1,
"β"
],
[
120748,
1,
"γ"
],
[
120749,
1,
"δ"
],
[
120750,
1,
"ε"
],
[
120751,
1,
"ζ"
],
[
120752,
1,
"η"
],
[
120753,
1,
"θ"
],
[
120754,
1,
"ι"
],
[
120755,
1,
"κ"
],
[
120756,
1,
"λ"
],
[
120757,
1,
"μ"
],
[
120758,
1,
"ν"
],
[
120759,
1,
"ξ"
],
[
120760,
1,
"ο"
],
[
120761,
1,
"Ï"
],
[
120762,
1,
"Ï"
],
[
[
120763,
120764
],
1,
"Ï"
],
[
120765,
1,
"Ï"
],
[
120766,
1,
"Ï
"
],
[
120767,
1,
"Ï"
],
[
120768,
1,
"Ï"
],
[
120769,
1,
"Ï"
],
[
120770,
1,
"Ï"
],
[
120771,
1,
"â"
],
[
120772,
1,
"ε"
],
[
120773,
1,
"θ"
],
[
120774,
1,
"κ"
],
[
120775,
1,
"Ï"
],
[
120776,
1,
"Ï"
],
[
120777,
1,
"Ï"
],
[
[
120778,
120779
],
1,
"Ï"
],
[
[
120780,
120781
],
3
],
[
120782,
1,
"0"
],
[
120783,
1,
"1"
],
[
120784,
1,
"2"
],
[
120785,
1,
"3"
],
[
120786,
1,
"4"
],
[
120787,
1,
"5"
],
[
120788,
1,
"6"
],
[
120789,
1,
"7"
],
[
120790,
1,
"8"
],
[
120791,
1,
"9"
],
[
120792,
1,
"0"
],
[
120793,
1,
"1"
],
[
120794,
1,
"2"
],
[
120795,
1,
"3"
],
[
120796,
1,
"4"
],
[
120797,
1,
"5"
],
[
120798,
1,
"6"
],
[
120799,
1,
"7"
],
[
120800,
1,
"8"
],
[
120801,
1,
"9"
],
[
120802,
1,
"0"
],
[
120803,
1,
"1"
],
[
120804,
1,
"2"
],
[
120805,
1,
"3"
],
[
120806,
1,
"4"
],
[
120807,
1,
"5"
],
[
120808,
1,
"6"
],
[
120809,
1,
"7"
],
[
120810,
1,
"8"
],
[
120811,
1,
"9"
],
[
120812,
1,
"0"
],
[
120813,
1,
"1"
],
[
120814,
1,
"2"
],
[
120815,
1,
"3"
],
[
120816,
1,
"4"
],
[
120817,
1,
"5"
],
[
120818,
1,
"6"
],
[
120819,
1,
"7"
],
[
120820,
1,
"8"
],
[
120821,
1,
"9"
],
[
120822,
1,
"0"
],
[
120823,
1,
"1"
],
[
120824,
1,
"2"
],
[
120825,
1,
"3"
],
[
120826,
1,
"4"
],
[
120827,
1,
"5"
],
[
120828,
1,
"6"
],
[
120829,
1,
"7"
],
[
120830,
1,
"8"
],
[
120831,
1,
"9"
],
[
[
120832,
121343
],
2
],
[
[
121344,
121398
],
2
],
[
[
121399,
121402
],
2
],
[
[
121403,
121452
],
2
],
[
[
121453,
121460
],
2
],
[
121461,
2
],
[
[
121462,
121475
],
2
],
[
121476,
2
],
[
[
121477,
121483
],
2
],
[
[
121484,
121498
],
3
],
[
[
121499,
121503
],
2
],
[
121504,
3
],
[
[
121505,
121519
],
2
],
[
[
121520,
122879
],
3
],
[
[
122880,
122886
],
2
],
[
122887,
3
],
[
[
122888,
122904
],
2
],
[
[
122905,
122906
],
3
],
[
[
122907,
122913
],
2
],
[
122914,
3
],
[
[
122915,
122916
],
2
],
[
122917,
3
],
[
[
122918,
122922
],
2
],
[
[
122923,
123135
],
3
],
[
[
123136,
123180
],
2
],
[
[
123181,
123183
],
3
],
[
[
123184,
123197
],
2
],
[
[
123198,
123199
],
3
],
[
[
123200,
123209
],
2
],
[
[
123210,
123213
],
3
],
[
123214,
2
],
[
123215,
2
],
[
[
123216,
123583
],
3
],
[
[
123584,
123641
],
2
],
[
[
123642,
123646
],
3
],
[
123647,
2
],
[
[
123648,
124927
],
3
],
[
[
124928,
125124
],
2
],
[
[
125125,
125126
],
3
],
[
[
125127,
125135
],
2
],
[
[
125136,
125142
],
2
],
[
[
125143,
125183
],
3
],
[
125184,
1,
"ð¤¢"
],
[
125185,
1,
"ð¤£"
],
[
125186,
1,
"ð¤¤"
],
[
125187,
1,
"ð¤¥"
],
[
125188,
1,
"ð¤¦"
],
[
125189,
1,
"ð¤§"
],
[
125190,
1,
"ð¤¨"
],
[
125191,
1,
"ð¤©"
],
[
125192,
1,
"ð¤ª"
],
[
125193,
1,
"ð¤«"
],
[
125194,
1,
"ð¤¬"
],
[
125195,
1,
"ð¤"
],
[
125196,
1,
"ð¤®"
],
[
125197,
1,
"ð¤¯"
],
[
125198,
1,
"ð¤°"
],
[
125199,
1,
"ð¤±"
],
[
125200,
1,
"ð¤²"
],
[
125201,
1,
"ð¤³"
],
[
125202,
1,
"ð¤´"
],
[
125203,
1,
"ð¤µ"
],
[
125204,
1,
"ð¤¶"
],
[
125205,
1,
"ð¤·"
],
[
125206,
1,
"ð¤¸"
],
[
125207,
1,
"ð¤¹"
],
[
125208,
1,
"ð¤º"
],
[
125209,
1,
"ð¤»"
],
[
125210,
1,
"ð¤¼"
],
[
125211,
1,
"ð¤½"
],
[
125212,
1,
"ð¤¾"
],
[
125213,
1,
"ð¤¿"
],
[
125214,
1,
"ð¥"
],
[
125215,
1,
"ð¥"
],
[
125216,
1,
"ð¥"
],
[
125217,
1,
"ð¥"
],
[
[
125218,
125258
],
2
],
[
125259,
2
],
[
[
125260,
125263
],
3
],
[
[
125264,
125273
],
2
],
[
[
125274,
125277
],
3
],
[
[
125278,
125279
],
2
],
[
[
125280,
126064
],
3
],
[
[
126065,
126132
],
2
],
[
[
126133,
126208
],
3
],
[
[
126209,
126269
],
2
],
[
[
126270,
126463
],
3
],
[
126464,
1,
"ا"
],
[
126465,
1,
"ب"
],
[
126466,
1,
"ج"
],
[
126467,
1,
"د"
],
[
126468,
3
],
[
126469,
1,
"Ù"
],
[
126470,
1,
"ز"
],
[
126471,
1,
"Ø"
],
[
126472,
1,
"Ø·"
],
[
126473,
1,
"Ù"
],
[
126474,
1,
"Ù"
],
[
126475,
1,
"Ù"
],
[
126476,
1,
"Ù
"
],
[
126477,
1,
"Ù"
],
[
126478,
1,
"س"
],
[
126479,
1,
"ع"
],
[
126480,
1,
"Ù"
],
[
126481,
1,
"ص"
],
[
126482,
1,
"Ù"
],
[
126483,
1,
"ر"
],
[
126484,
1,
"Ø´"
],
[
126485,
1,
"ت"
],
[
126486,
1,
"Ø«"
],
[
126487,
1,
"Ø®"
],
[
126488,
1,
"ذ"
],
[
126489,
1,
"ض"
],
[
126490,
1,
"ظ"
],
[
126491,
1,
"غ"
],
[
126492,
1,
"Ù®"
],
[
126493,
1,
"Úº"
],
[
126494,
1,
"Ú¡"
],
[
126495,
1,
"Ù¯"
],
[
126496,
3
],
[
126497,
1,
"ب"
],
[
126498,
1,
"ج"
],
[
126499,
3
],
[
126500,
1,
"Ù"
],
[
[
126501,
126502
],
3
],
[
126503,
1,
"Ø"
],
[
126504,
3
],
[
126505,
1,
"Ù"
],
[
126506,
1,
"Ù"
],
[
126507,
1,
"Ù"
],
[
126508,
1,
"Ù
"
],
[
126509,
1,
"Ù"
],
[
126510,
1,
"س"
],
[
126511,
1,
"ع"
],
[
126512,
1,
"Ù"
],
[
126513,
1,
"ص"
],
[
126514,
1,
"Ù"
],
[
126515,
3
],
[
126516,
1,
"Ø´"
],
[
126517,
1,
"ت"
],
[
126518,
1,
"Ø«"
],
[
126519,
1,
"Ø®"
],
[
126520,
3
],
[
126521,
1,
"ض"
],
[
126522,
3
],
[
126523,
1,
"غ"
],
[
[
126524,
126529
],
3
],
[
126530,
1,
"ج"
],
[
[
126531,
126534
],
3
],
[
126535,
1,
"Ø"
],
[
126536,
3
],
[
126537,
1,
"Ù"
],
[
126538,
3
],
[
126539,
1,
"Ù"
],
[
126540,
3
],
[
126541,
1,
"Ù"
],
[
126542,
1,
"س"
],
[
126543,
1,
"ع"
],
[
126544,
3
],
[
126545,
1,
"ص"
],
[
126546,
1,
"Ù"
],
[
126547,
3
],
[
126548,
1,
"Ø´"
],
[
[
126549,
126550
],
3
],
[
126551,
1,
"Ø®"
],
[
126552,
3
],
[
126553,
1,
"ض"
],
[
126554,
3
],
[
126555,
1,
"غ"
],
[
126556,
3
],
[
126557,
1,
"Úº"
],
[
126558,
3
],
[
126559,
1,
"Ù¯"
],
[
126560,
3
],
[
126561,
1,
"ب"
],
[
126562,
1,
"ج"
],
[
126563,
3
],
[
126564,
1,
"Ù"
],
[
[
126565,
126566
],
3
],
[
126567,
1,
"Ø"
],
[
126568,
1,
"Ø·"
],
[
126569,
1,
"Ù"
],
[
126570,
1,
"Ù"
],
[
126571,
3
],
[
126572,
1,
"Ù
"
],
[
126573,
1,
"Ù"
],
[
126574,
1,
"س"
],
[
126575,
1,
"ع"
],
[
126576,
1,
"Ù"
],
[
126577,
1,
"ص"
],
[
126578,
1,
"Ù"
],
[
126579,
3
],
[
126580,
1,
"Ø´"
],
[
126581,
1,
"ت"
],
[
126582,
1,
"Ø«"
],
[
126583,
1,
"Ø®"
],
[
126584,
3
],
[
126585,
1,
"ض"
],
[
126586,
1,
"ظ"
],
[
126587,
1,
"غ"
],
[
126588,
1,
"Ù®"
],
[
126589,
3
],
[
126590,
1,
"Ú¡"
],
[
126591,
3
],
[
126592,
1,
"ا"
],
[
126593,
1,
"ب"
],
[
126594,
1,
"ج"
],
[
126595,
1,
"د"
],
[
126596,
1,
"Ù"
],
[
126597,
1,
"Ù"
],
[
126598,
1,
"ز"
],
[
126599,
1,
"Ø"
],
[
126600,
1,
"Ø·"
],
[
126601,
1,
"Ù"
],
[
126602,
3
],
[
126603,
1,
"Ù"
],
[
126604,
1,
"Ù
"
],
[
126605,
1,
"Ù"
],
[
126606,
1,
"س"
],
[
126607,
1,
"ع"
],
[
126608,
1,
"Ù"
],
[
126609,
1,
"ص"
],
[
126610,
1,
"Ù"
],
[
126611,
1,
"ر"
],
[
126612,
1,
"Ø´"
],
[
126613,
1,
"ت"
],
[
126614,
1,
"Ø«"
],
[
126615,
1,
"Ø®"
],
[
126616,
1,
"ذ"
],
[
126617,
1,
"ض"
],
[
126618,
1,
"ظ"
],
[
126619,
1,
"غ"
],
[
[
126620,
126624
],
3
],
[
126625,
1,
"ب"
],
[
126626,
1,
"ج"
],
[
126627,
1,
"د"
],
[
126628,
3
],
[
126629,
1,
"Ù"
],
[
126630,
1,
"ز"
],
[
126631,
1,
"Ø"
],
[
126632,
1,
"Ø·"
],
[
126633,
1,
"Ù"
],
[
126634,
3
],
[
126635,
1,
"Ù"
],
[
126636,
1,
"Ù
"
],
[
126637,
1,
"Ù"
],
[
126638,
1,
"س"
],
[
126639,
1,
"ع"
],
[
126640,
1,
"Ù"
],
[
126641,
1,
"ص"
],
[
126642,
1,
"Ù"
],
[
126643,
1,
"ر"
],
[
126644,
1,
"Ø´"
],
[
126645,
1,
"ت"
],
[
126646,
1,
"Ø«"
],
[
126647,
1,
"Ø®"
],
[
126648,
1,
"ذ"
],
[
126649,
1,
"ض"
],
[
126650,
1,
"ظ"
],
[
126651,
1,
"غ"
],
[
[
126652,
126703
],
3
],
[
[
126704,
126705
],
2
],
[
[
126706,
126975
],
3
],
[
[
126976,
127019
],
2
],
[
[
127020,
127023
],
3
],
[
[
127024,
127123
],
2
],
[
[
127124,
127135
],
3
],
[
[
127136,
127150
],
2
],
[
[
127151,
127152
],
3
],
[
[
127153,
127166
],
2
],
[
127167,
2
],
[
127168,
3
],
[
[
127169,
127183
],
2
],
[
127184,
3
],
[
[
127185,
127199
],
2
],
[
[
127200,
127221
],
2
],
[
[
127222,
127231
],
3
],
[
127232,
3
],
[
127233,
5,
"0,"
],
[
127234,
5,
"1,"
],
[
127235,
5,
"2,"
],
[
127236,
5,
"3,"
],
[
127237,
5,
"4,"
],
[
127238,
5,
"5,"
],
[
127239,
5,
"6,"
],
[
127240,
5,
"7,"
],
[
127241,
5,
"8,"
],
[
127242,
5,
"9,"
],
[
[
127243,
127244
],
2
],
[
[
127245,
127247
],
2
],
[
127248,
5,
"(a)"
],
[
127249,
5,
"(b)"
],
[
127250,
5,
"(c)"
],
[
127251,
5,
"(d)"
],
[
127252,
5,
"(e)"
],
[
127253,
5,
"(f)"
],
[
127254,
5,
"(g)"
],
[
127255,
5,
"(h)"
],
[
127256,
5,
"(i)"
],
[
127257,
5,
"(j)"
],
[
127258,
5,
"(k)"
],
[
127259,
5,
"(l)"
],
[
127260,
5,
"(m)"
],
[
127261,
5,
"(n)"
],
[
127262,
5,
"(o)"
],
[
127263,
5,
"(p)"
],
[
127264,
5,
"(q)"
],
[
127265,
5,
"(r)"
],
[
127266,
5,
"(s)"
],
[
127267,
5,
"(t)"
],
[
127268,
5,
"(u)"
],
[
127269,
5,
"(v)"
],
[
127270,
5,
"(w)"
],
[
127271,
5,
"(x)"
],
[
127272,
5,
"(y)"
],
[
127273,
5,
"(z)"
],
[
127274,
1,
"ãsã"
],
[
127275,
1,
"c"
],
[
127276,
1,
"r"
],
[
127277,
1,
"cd"
],
[
127278,
1,
"wz"
],
[
127279,
2
],
[
127280,
1,
"a"
],
[
127281,
1,
"b"
],
[
127282,
1,
"c"
],
[
127283,
1,
"d"
],
[
127284,
1,
"e"
],
[
127285,
1,
"f"
],
[
127286,
1,
"g"
],
[
127287,
1,
"h"
],
[
127288,
1,
"i"
],
[
127289,
1,
"j"
],
[
127290,
1,
"k"
],
[
127291,
1,
"l"
],
[
127292,
1,
"m"
],
[
127293,
1,
"n"
],
[
127294,
1,
"o"
],
[
127295,
1,
"p"
],
[
127296,
1,
"q"
],
[
127297,
1,
"r"
],
[
127298,
1,
"s"
],
[
127299,
1,
"t"
],
[
127300,
1,
"u"
],
[
127301,
1,
"v"
],
[
127302,
1,
"w"
],
[
127303,
1,
"x"
],
[
127304,
1,
"y"
],
[
127305,
1,
"z"
],
[
127306,
1,
"hv"
],
[
127307,
1,
"mv"
],
[
127308,
1,
"sd"
],
[
127309,
1,
"ss"
],
[
127310,
1,
"ppv"
],
[
127311,
1,
"wc"
],
[
[
127312,
127318
],
2
],
[
127319,
2
],
[
[
127320,
127326
],
2
],
[
127327,
2
],
[
[
127328,
127337
],
2
],
[
127338,
1,
"mc"
],
[
127339,
1,
"md"
],
[
127340,
1,
"mr"
],
[
[
127341,
127343
],
2
],
[
[
127344,
127352
],
2
],
[
127353,
2
],
[
127354,
2
],
[
[
127355,
127356
],
2
],
[
[
127357,
127358
],
2
],
[
127359,
2
],
[
[
127360,
127369
],
2
],
[
[
127370,
127373
],
2
],
[
[
127374,
127375
],
2
],
[
127376,
1,
"dj"
],
[
[
127377,
127386
],
2
],
[
[
127387,
127404
],
2
],
[
127405,
2
],
[
[
127406,
127461
],
3
],
[
[
127462,
127487
],
2
],
[
127488,
1,
"ã»ã"
],
[
127489,
1,
"ã³ã³"
],
[
127490,
1,
"ãµ"
],
[
[
127491,
127503
],
3
],
[
127504,
1,
"æ"
],
[
127505,
1,
"å"
],
[
127506,
1,
"å"
],
[
127507,
1,
"ã"
],
[
127508,
1,
"äº"
],
[
127509,
1,
"å¤"
],
[
127510,
1,
"è§£"
],
[
127511,
1,
"天"
],
[
127512,
1,
"交"
],
[
127513,
1,
"æ "
],
[
127514,
1,
"ç¡"
],
[
127515,
1,
"æ"
],
[
127516,
1,
"å"
],
[
127517,
1,
"å¾"
],
[
127518,
1,
"å"
],
[
127519,
1,
"æ°"
],
[
127520,
1,
"å"
],
[
127521,
1,
"çµ"
],
[
127522,
1,
"ç"
],
[
127523,
1,
"販"
],
[
127524,
1,
"声"
],
[
127525,
1,
"å¹"
],
[
127526,
1,
"æ¼"
],
[
127527,
1,
"æ"
],
[
127528,
1,
"æ"
],
[
127529,
1,
"ä¸"
],
[
127530,
1,
"ä¸"
],
[
127531,
1,
"é"
],
[
127532,
1,
"å·¦"
],
[
127533,
1,
"ä¸"
],
[
127534,
1,
"å³"
],
[
127535,
1,
"æ"
],
[
127536,
1,
"èµ°"
],
[
127537,
1,
"æ"
],
[
127538,
1,
"ç¦"
],
[
127539,
1,
"空"
],
[
127540,
1,
"å"
],
[
127541,
1,
"æº"
],
[
127542,
1,
"æ"
],
[
127543,
1,
"æ"
],
[
127544,
1,
"ç³"
],
[
127545,
1,
"å²"
],
[
127546,
1,
"å¶"
],
[
127547,
1,
"é
"
],
[
[
127548,
127551
],
3
],
[
127552,
1,
"ãæ¬ã"
],
[
127553,
1,
"ãä¸ã"
],
[
127554,
1,
"ãäºã"
],
[
127555,
1,
"ãå®ã"
],
[
127556,
1,
"ãç¹ã"
],
[
127557,
1,
"ãæã"
],
[
127558,
1,
"ãçã"
],
[
127559,
1,
"ãåã"
],
[
127560,
1,
"ãæã"
],
[
[
127561,
127567
],
3
],
[
127568,
1,
"å¾"
],
[
127569,
1,
"å¯"
],
[
[
127570,
127583
],
3
],
[
[
127584,
127589
],
2
],
[
[
127590,
127743
],
3
],
[
[
127744,
127776
],
2
],
[
[
127777,
127788
],
2
],
[
[
127789,
127791
],
2
],
[
[
127792,
127797
],
2
],
[
127798,
2
],
[
[
127799,
127868
],
2
],
[
127869,
2
],
[
[
127870,
127871
],
2
],
[
[
127872,
127891
],
2
],
[
[
127892,
127903
],
2
],
[
[
127904,
127940
],
2
],
[
127941,
2
],
[
[
127942,
127946
],
2
],
[
[
127947,
127950
],
2
],
[
[
127951,
127955
],
2
],
[
[
127956,
127967
],
2
],
[
[
127968,
127984
],
2
],
[
[
127985,
127991
],
2
],
[
[
127992,
127999
],
2
],
[
[
128000,
128062
],
2
],
[
128063,
2
],
[
128064,
2
],
[
128065,
2
],
[
[
128066,
128247
],
2
],
[
128248,
2
],
[
[
128249,
128252
],
2
],
[
[
128253,
128254
],
2
],
[
128255,
2
],
[
[
128256,
128317
],
2
],
[
[
128318,
128319
],
2
],
[
[
128320,
128323
],
2
],
[
[
128324,
128330
],
2
],
[
[
128331,
128335
],
2
],
[
[
128336,
128359
],
2
],
[
[
128360,
128377
],
2
],
[
128378,
2
],
[
[
128379,
128419
],
2
],
[
128420,
2
],
[
[
128421,
128506
],
2
],
[
[
128507,
128511
],
2
],
[
128512,
2
],
[
[
128513,
128528
],
2
],
[
128529,
2
],
[
[
128530,
128532
],
2
],
[
128533,
2
],
[
128534,
2
],
[
128535,
2
],
[
128536,
2
],
[
128537,
2
],
[
128538,
2
],
[
128539,
2
],
[
[
128540,
128542
],
2
],
[
128543,
2
],
[
[
128544,
128549
],
2
],
[
[
128550,
128551
],
2
],
[
[
128552,
128555
],
2
],
[
128556,
2
],
[
128557,
2
],
[
[
128558,
128559
],
2
],
[
[
128560,
128563
],
2
],
[
128564,
2
],
[
[
128565,
128576
],
2
],
[
[
128577,
128578
],
2
],
[
[
128579,
128580
],
2
],
[
[
128581,
128591
],
2
],
[
[
128592,
128639
],
2
],
[
[
128640,
128709
],
2
],
[
[
128710,
128719
],
2
],
[
128720,
2
],
[
[
128721,
128722
],
2
],
[
[
128723,
128724
],
2
],
[
128725,
2
],
[
[
128726,
128727
],
2
],
[
[
128728,
128735
],
3
],
[
[
128736,
128748
],
2
],
[
[
128749,
128751
],
3
],
[
[
128752,
128755
],
2
],
[
[
128756,
128758
],
2
],
[
[
128759,
128760
],
2
],
[
128761,
2
],
[
128762,
2
],
[
[
128763,
128764
],
2
],
[
[
128765,
128767
],
3
],
[
[
128768,
128883
],
2
],
[
[
128884,
128895
],
3
],
[
[
128896,
128980
],
2
],
[
[
128981,
128984
],
2
],
[
[
128985,
128991
],
3
],
[
[
128992,
129003
],
2
],
[
[
129004,
129023
],
3
],
[
[
129024,
129035
],
2
],
[
[
129036,
129039
],
3
],
[
[
129040,
129095
],
2
],
[
[
129096,
129103
],
3
],
[
[
129104,
129113
],
2
],
[
[
129114,
129119
],
3
],
[
[
129120,
129159
],
2
],
[
[
129160,
129167
],
3
],
[
[
129168,
129197
],
2
],
[
[
129198,
129199
],
3
],
[
[
129200,
129201
],
2
],
[
[
129202,
129279
],
3
],
[
[
129280,
129291
],
2
],
[
129292,
2
],
[
[
129293,
129295
],
2
],
[
[
129296,
129304
],
2
],
[
[
129305,
129310
],
2
],
[
129311,
2
],
[
[
129312,
129319
],
2
],
[
[
129320,
129327
],
2
],
[
129328,
2
],
[
[
129329,
129330
],
2
],
[
[
129331,
129342
],
2
],
[
129343,
2
],
[
[
129344,
129355
],
2
],
[
129356,
2
],
[
[
129357,
129359
],
2
],
[
[
129360,
129374
],
2
],
[
[
129375,
129387
],
2
],
[
[
129388,
129392
],
2
],
[
129393,
2
],
[
129394,
2
],
[
[
129395,
129398
],
2
],
[
[
129399,
129400
],
2
],
[
129401,
3
],
[
129402,
2
],
[
129403,
2
],
[
[
129404,
129407
],
2
],
[
[
129408,
129412
],
2
],
[
[
129413,
129425
],
2
],
[
[
129426,
129431
],
2
],
[
[
129432,
129442
],
2
],
[
[
129443,
129444
],
2
],
[
[
129445,
129450
],
2
],
[
[
129451,
129453
],
2
],
[
[
129454,
129455
],
2
],
[
[
129456,
129465
],
2
],
[
[
129466,
129471
],
2
],
[
129472,
2
],
[
[
129473,
129474
],
2
],
[
[
129475,
129482
],
2
],
[
129483,
2
],
[
129484,
3
],
[
[
129485,
129487
],
2
],
[
[
129488,
129510
],
2
],
[
[
129511,
129535
],
2
],
[
[
129536,
129619
],
2
],
[
[
129620,
129631
],
3
],
[
[
129632,
129645
],
2
],
[
[
129646,
129647
],
3
],
[
[
129648,
129651
],
2
],
[
129652,
2
],
[
[
129653,
129655
],
3
],
[
[
129656,
129658
],
2
],
[
[
129659,
129663
],
3
],
[
[
129664,
129666
],
2
],
[
[
129667,
129670
],
2
],
[
[
129671,
129679
],
3
],
[
[
129680,
129685
],
2
],
[
[
129686,
129704
],
2
],
[
[
129705,
129711
],
3
],
[
[
129712,
129718
],
2
],
[
[
129719,
129727
],
3
],
[
[
129728,
129730
],
2
],
[
[
129731,
129743
],
3
],
[
[
129744,
129750
],
2
],
[
[
129751,
129791
],
3
],
[
[
129792,
129938
],
2
],
[
129939,
3
],
[
[
129940,
129994
],
2
],
[
[
129995,
130031
],
3
],
[
130032,
1,
"0"
],
[
130033,
1,
"1"
],
[
130034,
1,
"2"
],
[
130035,
1,
"3"
],
[
130036,
1,
"4"
],
[
130037,
1,
"5"
],
[
130038,
1,
"6"
],
[
130039,
1,
"7"
],
[
130040,
1,
"8"
],
[
130041,
1,
"9"
],
[
[
130042,
131069
],
3
],
[
[
131070,
131071
],
3
],
[
[
131072,
173782
],
2
],
[
[
173783,
173789
],
2
],
[
[
173790,
173823
],
3
],
[
[
173824,
177972
],
2
],
[
[
177973,
177983
],
3
],
[
[
177984,
178205
],
2
],
[
[
178206,
178207
],
3
],
[
[
178208,
183969
],
2
],
[
[
183970,
183983
],
3
],
[
[
183984,
191456
],
2
],
[
[
191457,
194559
],
3
],
[
194560,
1,
"丽"
],
[
194561,
1,
"丸"
],
[
194562,
1,
"ä¹"
],
[
194563,
1,
"ð ¢"
],
[
194564,
1,
"ä½ "
],
[
194565,
1,
"ä¾®"
],
[
194566,
1,
"ä¾»"
],
[
194567,
1,
"å"
],
[
194568,
1,
"åº"
],
[
194569,
1,
"å"
],
[
194570,
1,
"å§"
],
[
194571,
1,
"å"
],
[
194572,
1,
"ã"
],
[
194573,
1,
"ð º"
],
[
194574,
1,
"å
"
],
[
194575,
1,
"å
"
],
[
194576,
1,
"å
¤"
],
[
194577,
1,
"å
·"
],
[
194578,
1,
"ð "
],
[
194579,
1,
"ã¹"
],
[
194580,
1,
"å
§"
],
[
194581,
1,
"å"
],
[
194582,
1,
"ð "
],
[
194583,
1,
"å"
],
[
194584,
1,
"å¤"
],
[
194585,
1,
"ä»"
],
[
194586,
1,
"å¬"
],
[
194587,
1,
"åµ"
],
[
194588,
1,
"ð©"
],
[
194589,
1,
"åµ"
],
[
194590,
1,
"å"
],
[
194591,
1,
"ã"
],
[
194592,
1,
"å»"
],
[
194593,
1,
"å"
],
[
194594,
1,
"å²"
],
[
194595,
1,
"å·"
],
[
194596,
1,
"ã"
],
[
194597,
1,
"å"
],
[
194598,
1,
"å"
],
[
194599,
1,
"å¤"
],
[
194600,
1,
"åº"
],
[
194601,
1,
"å
"
],
[
194602,
1,
"å"
],
[
194603,
1,
"å"
],
[
194604,
1,
"å"
],
[
194605,
1,
"å"
],
[
194606,
1,
"å"
],
[
194607,
1,
"å³"
],
[
194608,
1,
"å½"
],
[
[
194609,
194611
],
1,
"å¿"
],
[
194612,
1,
"𠨬"
],
[
194613,
1,
"ç°"
],
[
194614,
1,
"å"
],
[
194615,
1,
"å"
],
[
194616,
1,
"ð £"
],
[
194617,
1,
"å«"
],
[
194618,
1,
"å±"
],
[
194619,
1,
"å"
],
[
194620,
1,
"å"
],
[
194621,
1,
"å¸"
],
[
194622,
1,
"å"
],
[
194623,
1,
"å¨"
],
[
194624,
1,
"å¢"
],
[
194625,
1,
"å¶"
],
[
194626,
1,
"å"
],
[
194627,
1,
"å"
],
[
194628,
1,
"å£"
],
[
[
194629,
194630
],
1,
"å"
],
[
194631,
1,
"å"
],
[
194632,
1,
"å«"
],
[
194633,
1,
"å³"
],
[
194634,
1,
"å"
],
[
194635,
1,
"å"
],
[
194636,
1,
"å"
],
[
194637,
1,
"å"
],
[
194638,
1,
"å"
],
[
194639,
1,
"å´"
],
[
194640,
1,
"å"
],
[
194641,
1,
"壮"
],
[
194642,
1,
"å"
],
[
194643,
1,
"å´"
],
[
194644,
1,
"å "
],
[
194645,
1,
"å"
],
[
194646,
1,
"å ²"
],
[
194647,
1,
"å ±"
],
[
194648,
1,
"墬"
],
[
194649,
1,
"ð¡¤"
],
[
194650,
1,
"売"
],
[
194651,
1,
"壷"
],
[
194652,
1,
"å¤"
],
[
194653,
1,
"å¤"
],
[
194654,
1,
"夢"
],
[
194655,
1,
"奢"
],
[
194656,
1,
"ð¡¨"
],
[
194657,
1,
"ð¡ª"
],
[
194658,
1,
"姬"
],
[
194659,
1,
"å¨"
],
[
194660,
1,
"娧"
],
[
194661,
1,
"å§"
],
[
194662,
1,
"婦"
],
[
194663,
1,
"ã®"
],
[
194664,
3
],
[
194665,
1,
"å¬"
],
[
[
194666,
194667
],
1,
"嬾"
],
[
194668,
1,
"ð¡§"
],
[
194669,
1,
"å¯"
],
[
194670,
1,
"å¯"
],
[
194671,
1,
"寧"
],
[
194672,
1,
"寳"
],
[
194673,
1,
"ð¡¬"
],
[
194674,
1,
"寿"
],
[
194675,
1,
"å°"
],
[
194676,
3
],
[
194677,
1,
"å°¢"
],
[
194678,
1,
"ã"
],
[
194679,
1,
"å± "
],
[
194680,
1,
"å±®"
],
[
194681,
1,
"å³"
],
[
194682,
1,
"å²"
],
[
194683,
1,
"ð¡·¤"
],
[
194684,
1,
"åµ"
],
[
194685,
1,
"ð¡·¦"
],
[
194686,
1,
"åµ®"
],
[
194687,
1,
"嵫"
],
[
194688,
1,
"åµ¼"
],
[
194689,
1,
"å·¡"
],
[
194690,
1,
"å·¢"
],
[
194691,
1,
"ã ¯"
],
[
194692,
1,
"å·½"
],
[
194693,
1,
"帨"
],
[
194694,
1,
"帽"
],
[
194695,
1,
"幩"
],
[
194696,
1,
"ã¡¢"
],
[
194697,
1,
"ð¢"
],
[
194698,
1,
"㡼"
],
[
194699,
1,
"庰"
],
[
194700,
1,
"庳"
],
[
194701,
1,
"庶"
],
[
194702,
1,
"å»"
],
[
194703,
1,
"ðª"
],
[
194704,
1,
"廾"
],
[
[
194705,
194706
],
1,
"ð¢±"
],
[
194707,
1,
"è"
],
[
[
194708,
194709
],
1,
"å¼¢"
],
[
194710,
1,
"ã£"
],
[
194711,
1,
"ð£¸"
],
[
194712,
1,
"ð¦"
],
[
194713,
1,
"å½¢"
],
[
194714,
1,
"彫"
],
[
194715,
1,
"㣣"
],
[
194716,
1,
"å¾"
],
[
194717,
1,
"å¿"
],
[
194718,
1,
"å¿"
],
[
194719,
1,
"忹"
],
[
194720,
1,
"æ"
],
[
194721,
1,
"㤺"
],
[
194722,
1,
"ã¤"
],
[
194723,
1,
"æ"
],
[
194724,
1,
"ð¢"
],
[
194725,
1,
"æ"
],
[
194726,
1,
"æ
"
],
[
194727,
1,
"æ
"
],
[
194728,
1,
"æ
"
],
[
194729,
1,
"æ
"
],
[
194730,
1,
"æ
º"
],
[
194731,
1,
"æ"
],
[
194732,
1,
"æ²"
],
[
194733,
1,
"æ¤"
],
[
194734,
1,
"æ¯"
],
[
194735,
1,
"æ"
],
[
194736,
1,
"æ²"
],
[
194737,
1,
"æ¶"
],
[
194738,
1,
"æ"
],
[
194739,
1,
"æ"
],
[
194740,
1,
"æ"
],
[
194741,
1,
"æ±"
],
[
194742,
1,
"æ"
],
[
194743,
1,
"æ"
],
[
194744,
1,
"ð¢¬"
],
[
194745,
1,
"æ½"
],
[
194746,
1,
"æ¼"
],
[
194747,
1,
"æ¨"
],
[
194748,
1,
"æ"
],
[
194749,
1,
"æ¤"
],
[
194750,
1,
"𢯱"
],
[
194751,
1,
"æ¢"
],
[
194752,
1,
"æ
"
],
[
194753,
1,
"æ©"
],
[
194754,
1,
"㨮"
],
[
194755,
1,
"æ©"
],
[
194756,
1,
"æ¾"
],
[
194757,
1,
"æ"
],
[
194758,
1,
"æ·"
],
[
194759,
1,
"㩬"
],
[
194760,
1,
"æ"
],
[
194761,
1,
"æ¬"
],
[
194762,
1,
"ð£"
],
[
194763,
1,
"æ£"
],
[
194764,
1,
"æ¸"
],
[
194765,
1,
"æ"
],
[
194766,
1,
"ã¬"
],
[
194767,
1,
"æ"
],
[
194768,
1,
"ã¬"
],
[
194769,
1,
"㫤"
],
[
194770,
1,
"å"
],
[
194771,
1,
"å"
],
[
194772,
1,
"æ"
],
[
194773,
1,
"æ"
],
[
194774,
1,
"è"
],
[
194775,
1,
"ä"
],
[
194776,
1,
"æ"
],
[
194777,
1,
"æ"
],
[
194778,
1,
"æ¡"
],
[
194779,
1,
"æ"
],
[
194780,
1,
"æ"
],
[
194781,
1,
"ð£"
],
[
194782,
1,
"ã"
],
[
194783,
1,
"æº"
],
[
194784,
1,
"æ
"
],
[
194785,
1,
"æ¡"
],
[
194786,
1,
"æ¢
"
],
[
194787,
1,
"ð£"
],
[
194788,
1,
"æ¢"
],
[
194789,
1,
"æ "
],
[
194790,
1,
"æ¤"
],
[
194791,
1,
"ã®"
],
[
194792,
1,
"æ¥"
],
[
194793,
1,
"榣"
],
[
194794,
1,
"槪"
],
[
194795,
1,
"檨"
],
[
194796,
1,
"ð££"
],
[
194797,
1,
"æ«"
],
[
194798,
1,
"ã°"
],
[
194799,
1,
"次"
],
[
194800,
1,
"𣢧"
],
[
194801,
1,
"æ"
],
[
194802,
1,
"ã±"
],
[
194803,
1,
"æ²"
],
[
194804,
1,
"æ®"
],
[
194805,
1,
"殺"
],
[
194806,
1,
"æ®»"
],
[
194807,
1,
"ð£ª"
],
[
194808,
1,
"ð¡´"
],
[
194809,
1,
"𣫺"
],
[
194810,
1,
"æ±"
],
[
194811,
1,
"𣲼"
],
[
194812,
1,
"沿"
],
[
194813,
1,
"æ³"
],
[
194814,
1,
"æ±§"
],
[
194815,
1,
"æ´"
],
[
194816,
1,
"æ´¾"
],
[
194817,
1,
"æµ·"
],
[
194818,
1,
"æµ"
],
[
194819,
1,
"浩"
],
[
194820,
1,
"浸"
],
[
194821,
1,
"æ¶
"
],
[
194822,
1,
"ð£´"
],
[
194823,
1,
"æ´´"
],
[
194824,
1,
"港"
],
[
194825,
1,
"æ¹®"
],
[
194826,
1,
"ã´³"
],
[
194827,
1,
"æ»"
],
[
194828,
1,
"æ»"
],
[
194829,
1,
"ð£»"
],
[
194830,
1,
"æ·¹"
],
[
194831,
1,
"æ½®"
],
[
194832,
1,
"ð£½"
],
[
194833,
1,
"ð£¾"
],
[
194834,
1,
"æ¿"
],
[
194835,
1,
"ç¹"
],
[
194836,
1,
"ç"
],
[
194837,
1,
"ç"
],
[
194838,
1,
"ã¶"
],
[
194839,
1,
"ç"
],
[
194840,
1,
"ç½"
],
[
194841,
1,
"ç·"
],
[
194842,
1,
"ç"
],
[
194843,
1,
"ð ¥"
],
[
194844,
1,
"ç
"
],
[
194845,
1,
"ð¤£"
],
[
194846,
1,
"ç"
],
[
194847,
3
],
[
194848,
1,
"ç¨"
],
[
194849,
1,
"çµ"
],
[
194850,
1,
"ç"
],
[
194851,
1,
"ð¤"
],
[
194852,
1,
"ç"
],
[
194853,
1,
"ç"
],
[
194854,
1,
"ð¤µ"
],
[
194855,
1,
"ð¤ "
],
[
194856,
1,
"çº"
],
[
194857,
1,
"ç"
],
[
194858,
1,
"㺬"
],
[
194859,
1,
"ç¥"
],
[
[
194860,
194861
],
1,
"㺸"
],
[
194862,
1,
"ç"
],
[
194863,
1,
"ç"
],
[
194864,
1,
"ç±"
],
[
194865,
1,
"ç
"
],
[
194866,
1,
"ç"
],
[
194867,
1,
"ã¼"
],
[
194868,
1,
"ç¤"
],
[
194869,
1,
"𤰶"
],
[
194870,
1,
"ç¾"
],
[
194871,
1,
"ð¤²"
],
[
194872,
1,
"ç°"
],
[
194873,
1,
"ð¢"
],
[
194874,
1,
"ç"
],
[
194875,
1,
"𤾡"
],
[
194876,
1,
"𤾸"
],
[
194877,
1,
"ð¥"
],
[
194878,
1,
"㿼"
],
[
194879,
1,
"ä"
],
[
194880,
1,
"ç´"
],
[
194881,
1,
"ð¥³"
],
[
194882,
1,
"ð¥²"
],
[
194883,
1,
"ð¥"
],
[
194884,
1,
"ð¥³"
],
[
194885,
1,
"ç"
],
[
[
194886,
194887
],
1,
"ç"
],
[
194888,
1,
"ç"
],
[
194889,
1,
"ä¹"
],
[
194890,
1,
"ç"
],
[
194891,
1,
"ä"
],
[
194892,
1,
"ä"
],
[
194893,
1,
"ð¥"
],
[
194894,
1,
"ç¡"
],
[
194895,
1,
"ç¢"
],
[
194896,
1,
"ç£"
],
[
194897,
1,
"ä£"
],
[
194898,
1,
"ð¥¦"
],
[
194899,
1,
"ç¥"
],
[
194900,
1,
"ð¥"
],
[
194901,
1,
"ð¥
"
],
[
194902,
1,
"ç¦"
],
[
194903,
1,
"ç§«"
],
[
194904,
1,
"ä¯"
],
[
194905,
1,
"ç©"
],
[
194906,
1,
"ç©"
],
[
194907,
1,
"ç©"
],
[
194908,
1,
"𥥼"
],
[
[
194909,
194910
],
1,
"𥪧"
],
[
194911,
3
],
[
194912,
1,
"ä"
],
[
194913,
1,
"𥮫"
],
[
194914,
1,
"ç¯"
],
[
194915,
1,
"ç¯"
],
[
194916,
1,
"ä§"
],
[
194917,
1,
"ð¥²"
],
[
194918,
1,
"ç³"
],
[
194919,
1,
"ä "
],
[
194920,
1,
"糨"
],
[
194921,
1,
"ç³£"
],
[
194922,
1,
"ç´"
],
[
194923,
1,
"ð¥¾"
],
[
194924,
1,
"çµ£"
],
[
194925,
1,
"ä"
],
[
194926,
1,
"ç·"
],
[
194927,
1,
"ç¸"
],
[
194928,
1,
"ç¹
"
],
[
194929,
1,
"ä´"
],
[
194930,
1,
"ð¦¨"
],
[
194931,
1,
"ð¦"
],
[
194932,
1,
"ä"
],
[
194933,
1,
"ð¦"
],
[
194934,
1,
"罺"
],
[
194935,
1,
"ð¦¾"
],
[
194936,
1,
"ç¾"
],
[
194937,
1,
"翺"
],
[
194938,
1,
"è
"
],
[
194939,
1,
"ð¦"
],
[
194940,
1,
"ð¦£"
],
[
194941,
1,
"è "
],
[
194942,
1,
"ð¦¨"
],
[
194943,
1,
"è°"
],
[
194944,
1,
"ð£"
],
[
194945,
1,
"ä"
],
[
194946,
1,
"è²"
],
[
194947,
1,
"è"
],
[
194948,
1,
"ä"
],
[
194949,
1,
"è¾"
],
[
194950,
1,
"媵"
],
[
194951,
1,
"ð¦§"
],
[
194952,
1,
"ð¦µ"
],
[
194953,
1,
"ð£"
],
[
194954,
1,
"ð£"
],
[
194955,
1,
"è"
],
[
194956,
1,
"è"
],
[
194957,
1,
"è¾"
],
[
194958,
1,
"ä«"
],
[
194959,
1,
"è"
],
[
194960,
1,
"è"
],
[
194961,
1,
"è"
],
[
194962,
1,
"å³"
],
[
194963,
1,
"è±"
],
[
194964,
1,
"è³"
],
[
194965,
1,
"è½"
],
[
194966,
1,
"è¦"
],
[
194967,
1,
"𦬼"
],
[
194968,
1,
"è¥"
],
[
194969,
1,
"è"
],
[
194970,
1,
"è£"
],
[
194971,
1,
"è"
],
[
194972,
1,
"è£"
],
[
194973,
1,
"è½"
],
[
194974,
1,
"è§"
],
[
194975,
1,
"è"
],
[
194976,
1,
"è"
],
[
194977,
1,
"è"
],
[
194978,
1,
"è"
],
[
194979,
1,
"è"
],
[
194980,
1,
"𦰶"
],
[
194981,
1,
"𦵫"
],
[
194982,
1,
"ð¦³"
],
[
194983,
1,
"ä«"
],
[
194984,
1,
"è±"
],
[
194985,
1,
"è³"
],
[
194986,
1,
"è"
],
[
194987,
1,
"ð§"
],
[
194988,
1,
"è¤"
],
[
194989,
1,
"𦼬"
],
[
194990,
1,
"ä"
],
[
194991,
1,
"ä¡"
],
[
194992,
1,
"𦾱"
],
[
194993,
1,
"ð§"
],
[
194994,
1,
"ä«"
],
[
194995,
1,
"è"
],
[
194996,
1,
"è"
],
[
194997,
1,
"è§"
],
[
194998,
1,
"è©"
],
[
194999,
1,
"è©"
],
[
195000,
1,
"è"
],
[
195001,
1,
"è"
],
[
195002,
1,
"è¢"
],
[
195003,
1,
"è¹"
],
[
195004,
1,
"è¨"
],
[
195005,
1,
"è«"
],
[
195006,
1,
"è"
],
[
195007,
3
],
[
195008,
1,
"è¡"
],
[
195009,
1,
"è "
],
[
195010,
1,
"ä¹"
],
[
195011,
1,
"è¡ "
],
[
195012,
1,
"è¡£"
],
[
195013,
1,
"ð§§"
],
[
195014,
1,
"è£"
],
[
195015,
1,
"è£"
],
[
195016,
1,
"äµ"
],
[
195017,
1,
"裺"
],
[
195018,
1,
"ã»"
],
[
195019,
1,
"ð§¢®"
],
[
195020,
1,
"𧥦"
],
[
195021,
1,
"ä¾"
],
[
195022,
1,
"ä"
],
[
195023,
1,
"èª "
],
[
195024,
1,
"è«"
],
[
195025,
1,
"è®"
],
[
195026,
1,
"è±"
],
[
195027,
1,
"𧲨"
],
[
195028,
1,
"貫"
],
[
195029,
1,
"è³"
],
[
195030,
1,
"è´"
],
[
195031,
1,
"èµ·"
],
[
195032,
1,
"𧼯"
],
[
195033,
1,
"ð "
],
[
195034,
1,
"è·"
],
[
195035,
1,
"è¶¼"
],
[
195036,
1,
"è·°"
],
[
195037,
1,
"ð £"
],
[
195038,
1,
"è»"
],
[
195039,
1,
"輸"
],
[
195040,
1,
"ð¨"
],
[
195041,
1,
"ð¨"
],
[
195042,
1,
"é"
],
[
195043,
1,
"é±"
],
[
195044,
1,
"é"
],
[
195045,
1,
"ð¨®"
],
[
195046,
1,
"é"
],
[
195047,
1,
"é¸"
],
[
195048,
1,
"é"
],
[
195049,
1,
"é"
],
[
195050,
1,
"é¼"
],
[
195051,
1,
"é¹"
],
[
195052,
1,
"é"
],
[
195053,
1,
"𨯺"
],
[
195054,
1,
"é"
],
[
195055,
1,
"ä¦"
],
[
195056,
1,
"é·"
],
[
195057,
1,
"𨵷"
],
[
195058,
1,
"䧦"
],
[
195059,
1,
"é"
],
[
195060,
1,
"å¶²"
],
[
195061,
1,
"é£"
],
[
195062,
1,
"ð©
"
],
[
195063,
1,
"ð©"
],
[
195064,
1,
"ä©®"
],
[
195065,
1,
"ä©¶"
],
[
195066,
1,
"é "
],
[
195067,
1,
"ð©"
],
[
195068,
1,
"䪲"
],
[
195069,
1,
"ð©"
],
[
[
195070,
195071
],
1,
"é "
],
[
195072,
1,
"é ©"
],
[
195073,
1,
"ð©¶"
],
[
195074,
1,
"飢"
],
[
195075,
1,
"䬳"
],
[
195076,
1,
"餩"
],
[
195077,
1,
"馧"
],
[
195078,
1,
"é§"
],
[
195079,
1,
"é§¾"
],
[
195080,
1,
"ä¯"
],
[
195081,
1,
"𩬰"
],
[
195082,
1,
"é¬"
],
[
195083,
1,
"é±"
],
[
195084,
1,
"é³½"
],
[
195085,
1,
"ä³"
],
[
195086,
1,
"ä³"
],
[
195087,
1,
"éµ§"
],
[
195088,
1,
"ðª"
],
[
195089,
1,
"䳸"
],
[
195090,
1,
"ðª
"
],
[
195091,
1,
"ðª"
],
[
195092,
1,
"ðª"
],
[
195093,
1,
"麻"
],
[
195094,
1,
"äµ"
],
[
195095,
1,
"黹"
],
[
195096,
1,
"黾"
],
[
195097,
1,
"é¼
"
],
[
195098,
1,
"é¼"
],
[
195099,
1,
"é¼"
],
[
195100,
1,
"é¼»"
],
[
195101,
1,
"ðª"
],
[
[
195102,
196605
],
3
],
[
[
196606,
196607
],
3
],
[
[
196608,
201546
],
2
],
[
[
201547,
262141
],
3
],
[
[
262142,
262143
],
3
],
[
[
262144,
327677
],
3
],
[
[
327678,
327679
],
3
],
[
[
327680,
393213
],
3
],
[
[
393214,
393215
],
3
],
[
[
393216,
458749
],
3
],
[
[
458750,
458751
],
3
],
[
[
458752,
524285
],
3
],
[
[
524286,
524287
],
3
],
[
[
524288,
589821
],
3
],
[
[
589822,
589823
],
3
],
[
[
589824,
655357
],
3
],
[
[
655358,
655359
],
3
],
[
[
655360,
720893
],
3
],
[
[
720894,
720895
],
3
],
[
[
720896,
786429
],
3
],
[
[
786430,
786431
],
3
],
[
[
786432,
851965
],
3
],
[
[
851966,
851967
],
3
],
[
[
851968,
917501
],
3
],
[
[
917502,
917503
],
3
],
[
917504,
3
],
[
917505,
3
],
[
[
917506,
917535
],
3
],
[
[
917536,
917631
],
3
],
[
[
917632,
917759
],
3
],
[
[
917760,
917999
],
7
],
[
[
918000,
983037
],
3
],
[
[
983038,
983039
],
3
],
[
[
983040,
1048573
],
3
],
[
[
1048574,
1048575
],
3
],
[
[
1048576,
1114109
],
3
],
[
[
1114110,
1114111
],
3
]
];
var STATUS_MAPPING$1 = {
mapped: 1,
valid: 2,
disallowed: 3,
disallowed_STD3_valid: 4, // eslint-disable-line camelcase
disallowed_STD3_mapped: 5, // eslint-disable-line camelcase
deviation: 6,
ignored: 7
};
var statusMapping = {
STATUS_MAPPING: STATUS_MAPPING$1
};
var punycode = /*@__PURE__*/getAugmentedNamespace(punycode_es6);
const { STATUS_MAPPING } = statusMapping;
function containsNonASCII(str) {
return /[^\x00-\x7F]/.test(str);
}
function findStatus(val, { useSTD3ASCIIRules }) {
let start = 0;
let end = mappingTable.length - 1;
while (start = val) {
if (useSTD3ASCIIRules &&
(target[1] === STATUS_MAPPING.disallowed_STD3_valid || target[1] === STATUS_MAPPING.disallowed_STD3_mapped)) {
return [STATUS_MAPPING.disallowed, ...target.slice(2)];
} else if (target[1] === STATUS_MAPPING.disallowed_STD3_valid) {
return [STATUS_MAPPING.valid, ...target.slice(2)];
} else if (target[1] === STATUS_MAPPING.disallowed_STD3_mapped) {
return [STATUS_MAPPING.mapped, ...target.slice(2)];
}
return target.slice(1);
} else if (min > val) {
end = mid - 1;
} else {
start = mid + 1;
}
}
return null;
}
function mapChars(domainName, { useSTD3ASCIIRules, processingOption }) {
let hasError = false;
let processed = "";
for (const ch of domainName) {
const [status, mapping] = findStatus(ch.codePointAt(0), { useSTD3ASCIIRules });
switch (status) {
case STATUS_MAPPING.disallowed:
hasError = true;
processed += ch;
break;
case STATUS_MAPPING.ignored:
break;
case STATUS_MAPPING.mapped:
processed += mapping;
break;
case STATUS_MAPPING.deviation:
if (processingOption === "transitional") {
processed += mapping;
} else {
processed += ch;
}
break;
case STATUS_MAPPING.valid:
processed += ch;
break;
}
}
return {
string: processed,
error: hasError
};
}
function validateLabel(label, { checkHyphens, checkBidi, checkJoiners, processingOption, useSTD3ASCIIRules }) {
if (label.normalize("NFC") !== label) {
return false;
}
const codePoints = Array.from(label);
if (checkHyphens) {
if ((codePoints[2] === "-" && codePoints[3] === "-") ||
(label.startsWith("-") || label.endsWith("-"))) {
return false;
}
}
if (label.includes(".") ||
(codePoints.length > 0 && regexes.combiningMarks.test(codePoints[0]))) {
return false;
}
for (const ch of codePoints) {
const [status] = findStatus(ch.codePointAt(0), { useSTD3ASCIIRules });
if ((processingOption === "transitional" && status !== STATUS_MAPPING.valid) ||
(processingOption === "nontransitional" &&
status !== STATUS_MAPPING.valid && status !== STATUS_MAPPING.deviation)) {
return false;
}
}
// https://tools.ietf.org/html/rfc5892#appendix-A
if (checkJoiners) {
let last = 0;
for (const [i, ch] of codePoints.entries()) {
if (ch === "\u200C" || ch === "\u200D") {
if (i > 0) {
if (regexes.combiningClassVirama.test(codePoints[i - 1])) {
continue;
}
if (ch === "\u200C") {
// TODO: make this more efficient
const next = codePoints.indexOf("\u200C", i + 1);
const test = next {
if (label.startsWith("xn--")) {
try {
return punycode.decode(label.substring(4));
} catch (err) {
return "";
}
}
return label;
}).join(".");
return regexes.bidiDomain.test(domain);
}
function processing(domainName, options) {
const { processingOption } = options;
// 1. Map.
let { string, error } = mapChars(domainName, options);
// 2. Normalize.
string = string.normalize("NFC");
// 3. Break.
const labels = string.split(".");
const isBidi = isBidiDomain(labels);
// 4. Convert/Validate.
for (const [i, origLabel] of labels.entries()) {
let label = origLabel;
let curProcessing = processingOption;
if (label.startsWith("xn--")) {
try {
label = punycode.decode(label.substring(4));
labels[i] = label;
} catch (err) {
error = true;
continue;
}
curProcessing = "nontransitional";
}
// No need to validate if we already know there is an error.
if (error) {
continue;
}
const validation = validateLabel(label, Object.assign({}, options, {
processingOption: curProcessing,
checkBidi: options.checkBidi && isBidi
}));
if (!validation) {
error = true;
}
}
return {
string: labels.join("."),
error
};
}
function toASCII(domainName, {
checkHyphens = false,
checkBidi = false,
checkJoiners = false,
useSTD3ASCIIRules = false,
processingOption = "nontransitional",
verifyDNSLength = false
} = {}) {
if (processingOption !== "transitional" && processingOption !== "nontransitional") {
throw new RangeError("processingOption must be either transitional or nontransitional");
}
const result = processing(domainName, {
processingOption,
checkHyphens,
checkBidi,
checkJoiners,
useSTD3ASCIIRules
});
let labels = result.string.split(".");
labels = labels.map(l => {
if (containsNonASCII(l)) {
try {
return "xn--" + punycode.encode(l);
} catch (e) {
result.error = true;
}
}
return l;
});
if (verifyDNSLength) {
const total = labels.join(".").length;
if (total > 253 || total === 0) {
result.error = true;
}
for (let i = 0; i 63 || labels[i].length === 0) {
result.error = true;
break;
}
}
}
if (result.error) {
return null;
}
return labels.join(".");
}
function toUnicode(domainName, {
checkHyphens = false,
checkBidi = false,
checkJoiners = false,
useSTD3ASCIIRules = false,
processingOption = "nontransitional"
} = {}) {
const result = processing(domainName, {
processingOption,
checkHyphens,
checkBidi,
checkJoiners,
useSTD3ASCIIRules
});
return {
domain: result.string,
error: result.error
};
}
var tr46 = {
toASCII,
toUnicode
};
// Note that we take code points as JS numbers, not JS strings.
function isASCIIDigit(c) {
return c >= 0x30 && c = 0x41 && c = 0x61 && c = 0x41 && c = 0x61 && c = min and a } array The array to check.
* @param {*} item The item to look for in the array.
* @return {boolean} True if the item appears in the array.
*/
function includes(array, item) {
return array.indexOf(item) !== -1;
}
var floor = Math.floor;
/**
* @param {*} o
* @return {Object}
*/
function ToDictionary(o) {
if (o === undefined) return {};
if (o === Object(o)) return o;
throw TypeError('Could not convert argument to dictionary');
}
/**
* @param {string} string Input string of UTF-16 code units.
* @return {!Array.} Code points.
*/
function stringToCodePoints(string) {
// https://heycam.github.io/webidl/#dfn-obtain-unicode
// 1. Let S be the DOMString value.
var s = String(string);
// 2. Let n be the length of S.
var n = s.length;
// 3. Initialize i to 0.
var i = 0;
// 4. Initialize U to be an empty sequence of Unicode characters.
var u = [];
// 5. While i 0xDFFF
if (c 0xDFFF) {
// Append to U the Unicode character with code point c.
u.push(c);
}
// 0xDC00 ⤠c ⤠0xDFFF
else if (0xDC00 0xDFFF. Append to U a
// U+FFFD REPLACEMENT CHARACTER.
else {
u.push(0xFFFD);
}
}
}
// 3. Set i to i+1.
i += 1;
}
// 6. Return U.
return u;
}
/**
* @param {!Array.} code_points Array of code points.
* @return {string} string String of UTF-16 code units.
*/
function codePointsToString(code_points) {
var s = '';
for (var i = 0; i > 10) + 0xD800,
(cp & 0x3FF) + 0xDC00);
}
}
return s;
}
//
// Implementation of Encoding specification
// https://encoding.spec.whatwg.org/
//
//
// 4. Terminology
//
/**
* An ASCII byte is a byte in the range 0x00 to 0x7F, inclusive.
* @param {number} a The number to test.
* @return {boolean} True if a is in the range 0x00 to 0x7F, inclusive.
*/
function isASCIIByte(a) {
return 0x00 |Uint8Array)} tokens Array of tokens that provide
* the stream.
*/
function Stream(tokens) {
/** @type {!Array.} */
this.tokens = [].slice.call(tokens);
// Reversed as push/pop is more efficient than shift/unshift.
this.tokens.reverse();
}
Stream.prototype = {
/**
* @return {boolean} True if end-of-stream has been hit.
*/
endOfStream: function() {
return !this.tokens.length;
},
/**
* When a token is read from a stream, the first token in the
* stream must be returned and subsequently removed, and
* end-of-stream must be returned otherwise.
*
* @return {number} Get the next token from the stream, or
* end_of_stream.
*/
read: function() {
if (!this.tokens.length)
return end_of_stream;
return this.tokens.pop();
},
/**
* When one or more tokens are prepended to a stream, those tokens
* must be inserted, in given order, before the first token in the
* stream.
*
* @param {(number|!Array.)} token The token(s) to prepend to the
* stream.
*/
prepend: function(token) {
if (Array.isArray(token)) {
var tokens = /**@type {!Array.}*/(token);
while (tokens.length)
this.tokens.push(tokens.pop());
} else {
this.tokens.push(token);
}
},
/**
* When one or more tokens are pushed to a stream, those tokens
* must be inserted, in given order, after the last token in the
* stream.
*
* @param {(number|!Array.)} token The tokens(s) to push to the
* stream.
*/
push: function(token) {
if (Array.isArray(token)) {
var tokens = /**@type {!Array.}*/(token);
while (tokens.length)
this.tokens.unshift(tokens.shift());
} else {
this.tokens.unshift(token);
}
}
};
//
// 5. Encodings
//
// 5.1 Encoders and decoders
/** @const */
var finished = -1;
/**
* @param {boolean} fatal If true, decoding errors raise an exception.
* @param {number=} opt_code_point Override the standard fallback code point.
* @return {number} The code point to insert on a decoding error.
*/
function decoderError(fatal, opt_code_point) {
if (fatal)
throw TypeError('Decoder error');
return opt_code_point || 0xFFFD;
}
/**
* @param {number} code_point The code point that could not be encoded.
* @return {number} Always throws, no value is actually returned.
*/
function encoderError(code_point) {
throw TypeError('The code point ' + code_point + ' could not be encoded.');
}
// 5.2 Names and labels
// TODO: Define @typedef for Encoding: {name:string,labels:Array.}
// https://github.com/google/closure-compiler/issues/247
/**
* @param {string} label The encoding label.
* @return {?{name:string,labels:Array.}}
*/
function getEncoding(label) {
// 1. Remove any leading and trailing ASCII whitespace from label.
label = String(label).trim().toLowerCase();
// 2. If label is an ASCII case-insensitive match for any of the
// labels listed in the table below, return the corresponding
// encoding, and failure otherwise.
if (Object.prototype.hasOwnProperty.call(label_to_encoding, label)) {
return label_to_encoding[label];
}
return null;
}
/**
* Encodings table: https://encoding.spec.whatwg.org/encodings.json
* @const
* @type {!Array.}>
* }>}
*/
var encodings = [
{
"encodings": [
{
"labels": [
"unicode-1-1-utf-8",
"utf-8",
"utf8"
],
"name": "UTF-8"
}
],
"heading": "The Encoding"
},
{
"encodings": [
{
"labels": [
"866",
"cp866",
"csibm866",
"ibm866"
],
"name": "IBM866"
},
{
"labels": [
"csisolatin2",
"iso-8859-2",
"iso-ir-101",
"iso8859-2",
"iso88592",
"iso_8859-2",
"iso_8859-2:1987",
"l2",
"latin2"
],
"name": "ISO-8859-2"
},
{
"labels": [
"csisolatin3",
"iso-8859-3",
"iso-ir-109",
"iso8859-3",
"iso88593",
"iso_8859-3",
"iso_8859-3:1988",
"l3",
"latin3"
],
"name": "ISO-8859-3"
},
{
"labels": [
"csisolatin4",
"iso-8859-4",
"iso-ir-110",
"iso8859-4",
"iso88594",
"iso_8859-4",
"iso_8859-4:1988",
"l4",
"latin4"
],
"name": "ISO-8859-4"
},
{
"labels": [
"csisolatincyrillic",
"cyrillic",
"iso-8859-5",
"iso-ir-144",
"iso8859-5",
"iso88595",
"iso_8859-5",
"iso_8859-5:1988"
],
"name": "ISO-8859-5"
},
{
"labels": [
"arabic",
"asmo-708",
"csiso88596e",
"csiso88596i",
"csisolatinarabic",
"ecma-114",
"iso-8859-6",
"iso-8859-6-e",
"iso-8859-6-i",
"iso-ir-127",
"iso8859-6",
"iso88596",
"iso_8859-6",
"iso_8859-6:1987"
],
"name": "ISO-8859-6"
},
{
"labels": [
"csisolatingreek",
"ecma-118",
"elot_928",
"greek",
"greek8",
"iso-8859-7",
"iso-ir-126",
"iso8859-7",
"iso88597",
"iso_8859-7",
"iso_8859-7:1987",
"sun_eu_greek"
],
"name": "ISO-8859-7"
},
{
"labels": [
"csiso88598e",
"csisolatinhebrew",
"hebrew",
"iso-8859-8",
"iso-8859-8-e",
"iso-ir-138",
"iso8859-8",
"iso88598",
"iso_8859-8",
"iso_8859-8:1988",
"visual"
],
"name": "ISO-8859-8"
},
{
"labels": [
"csiso88598i",
"iso-8859-8-i",
"logical"
],
"name": "ISO-8859-8-I"
},
{
"labels": [
"csisolatin6",
"iso-8859-10",
"iso-ir-157",
"iso8859-10",
"iso885910",
"l6",
"latin6"
],
"name": "ISO-8859-10"
},
{
"labels": [
"iso-8859-13",
"iso8859-13",
"iso885913"
],
"name": "ISO-8859-13"
},
{
"labels": [
"iso-8859-14",
"iso8859-14",
"iso885914"
],
"name": "ISO-8859-14"
},
{
"labels": [
"csisolatin9",
"iso-8859-15",
"iso8859-15",
"iso885915",
"iso_8859-15",
"l9"
],
"name": "ISO-8859-15"
},
{
"labels": [
"iso-8859-16"
],
"name": "ISO-8859-16"
},
{
"labels": [
"cskoi8r",
"koi",
"koi8",
"koi8-r",
"koi8_r"
],
"name": "KOI8-R"
},
{
"labels": [
"koi8-ru",
"koi8-u"
],
"name": "KOI8-U"
},
{
"labels": [
"csmacintosh",
"mac",
"macintosh",
"x-mac-roman"
],
"name": "macintosh"
},
{
"labels": [
"dos-874",
"iso-8859-11",
"iso8859-11",
"iso885911",
"tis-620",
"windows-874"
],
"name": "windows-874"
},
{
"labels": [
"cp1250",
"windows-1250",
"x-cp1250"
],
"name": "windows-1250"
},
{
"labels": [
"cp1251",
"windows-1251",
"x-cp1251"
],
"name": "windows-1251"
},
{
"labels": [
"ansi_x3.4-1968",
"ascii",
"cp1252",
"cp819",
"csisolatin1",
"ibm819",
"iso-8859-1",
"iso-ir-100",
"iso8859-1",
"iso88591",
"iso_8859-1",
"iso_8859-1:1987",
"l1",
"latin1",
"us-ascii",
"windows-1252",
"x-cp1252"
],
"name": "windows-1252"
},
{
"labels": [
"cp1253",
"windows-1253",
"x-cp1253"
],
"name": "windows-1253"
},
{
"labels": [
"cp1254",
"csisolatin5",
"iso-8859-9",
"iso-ir-148",
"iso8859-9",
"iso88599",
"iso_8859-9",
"iso_8859-9:1989",
"l5",
"latin5",
"windows-1254",
"x-cp1254"
],
"name": "windows-1254"
},
{
"labels": [
"cp1255",
"windows-1255",
"x-cp1255"
],
"name": "windows-1255"
},
{
"labels": [
"cp1256",
"windows-1256",
"x-cp1256"
],
"name": "windows-1256"
},
{
"labels": [
"cp1257",
"windows-1257",
"x-cp1257"
],
"name": "windows-1257"
},
{
"labels": [
"cp1258",
"windows-1258",
"x-cp1258"
],
"name": "windows-1258"
},
{
"labels": [
"x-mac-cyrillic",
"x-mac-ukrainian"
],
"name": "x-mac-cyrillic"
}
],
"heading": "Legacy single-byte encodings"
},
{
"encodings": [
{
"labels": [
"chinese",
"csgb2312",
"csiso58gb231280",
"gb2312",
"gb_2312",
"gb_2312-80",
"gbk",
"iso-ir-58",
"x-gbk"
],
"name": "GBK"
},
{
"labels": [
"gb18030"
],
"name": "gb18030"
}
],
"heading": "Legacy multi-byte Chinese (simplified) encodings"
},
{
"encodings": [
{
"labels": [
"big5",
"big5-hkscs",
"cn-big5",
"csbig5",
"x-x-big5"
],
"name": "Big5"
}
],
"heading": "Legacy multi-byte Chinese (traditional) encodings"
},
{
"encodings": [
{
"labels": [
"cseucpkdfmtjapanese",
"euc-jp",
"x-euc-jp"
],
"name": "EUC-JP"
},
{
"labels": [
"csiso2022jp",
"iso-2022-jp"
],
"name": "ISO-2022-JP"
},
{
"labels": [
"csshiftjis",
"ms932",
"ms_kanji",
"shift-jis",
"shift_jis",
"sjis",
"windows-31j",
"x-sjis"
],
"name": "Shift_JIS"
}
],
"heading": "Legacy multi-byte Japanese encodings"
},
{
"encodings": [
{
"labels": [
"cseuckr",
"csksc56011987",
"euc-kr",
"iso-ir-149",
"korean",
"ks_c_5601-1987",
"ks_c_5601-1989",
"ksc5601",
"ksc_5601",
"windows-949"
],
"name": "EUC-KR"
}
],
"heading": "Legacy multi-byte Korean encodings"
},
{
"encodings": [
{
"labels": [
"csiso2022kr",
"hz-gb-2312",
"iso-2022-cn",
"iso-2022-cn-ext",
"iso-2022-kr"
],
"name": "replacement"
},
{
"labels": [
"utf-16be"
],
"name": "UTF-16BE"
},
{
"labels": [
"utf-16",
"utf-16le"
],
"name": "UTF-16LE"
},
{
"labels": [
"x-user-defined"
],
"name": "x-user-defined"
}
],
"heading": "Legacy miscellaneous encodings"
}
];
// Label to encoding registry.
/** @type {Object.}>} */
var label_to_encoding = {};
encodings.forEach(function(category) {
category.encodings.forEach(function(encoding) {
encoding.labels.forEach(function(label) {
label_to_encoding[label] = encoding;
});
});
});
// Registry of of encoder/decoder factories, by encoding name.
/** @type {Object.} */
var encoders = {};
/** @type {Object.} */
var decoders = {};
//
// 6. Indexes
//
/**
* @param {number} pointer The |pointer| to search for.
* @param {(!Array.|undefined)} index The |index| to search within.
* @return {?number} The code point corresponding to |pointer| in |index|,
* or null if |code point| is not in |index|.
*/
function indexCodePointFor(pointer, index) {
if (!index) return null;
return index[pointer] || null;
}
/**
* @param {number} code_point The |code point| to search for.
* @param {!Array.} index The |index| to search within.
* @return {?number} The first pointer corresponding to |code point| in
* |index|, or null if |code point| is not in |index|.
*/
function indexPointerFor(code_point, index) {
var pointer = index.indexOf(code_point);
return pointer === -1 ? null : pointer;
}
/**
* @param {string} name Name of the index.
* @return {(!Array.|!Array.>)}
* */
function index(name) {
if (!('encoding-indexes' in global)) {
throw Error("Indexes missing." +
" Did you forget to include encoding-indexes.js first?");
}
return global['encoding-indexes'][name];
}
/**
* @param {number} pointer The |pointer| to search for in the gb18030 index.
* @return {?number} The code point corresponding to |pointer| in |index|,
* or null if |code point| is not in the gb18030 index.
*/
function indexGB18030RangesCodePointFor(pointer) {
// 1. If pointer is greater than 39419 and less than 189000, or
// pointer is greater than 1237575, return null.
if ((pointer > 39419 && pointer 1237575))
return null;
// 2. If pointer is 7457, return code point U+E7C7.
if (pointer === 7457) return 0xE7C7;
// 3. Let offset be the last pointer in index gb18030 ranges that
// is equal to or less than pointer and let code point offset be
// its corresponding code point.
var offset = 0;
var code_point_offset = 0;
var idx = index('gb18030-ranges');
var i;
for (i = 0; i } */
var entry = idx[i];
if (entry[0] } */
var entry = idx[i];
if (entry[1] )} */
var result;
// 5. While true:
while (true) {
// 1. Let token be the result of reading from stream.
var token = input_stream.read();
// 2. If token is end-of-stream and the do not flush flag is
// set, return output, serialized.
// TODO: Align with spec algorithm.
if (token === end_of_stream)
break;
// 3. Otherwise, run these subsubsteps:
// 1. Let result be the result of processing token for decoder,
// stream, output, and error mode.
result = this._decoder.handler(input_stream, token);
// 2. If result is finished, return output, serialized.
if (result === finished)
break;
if (result !== null) {
if (Array.isArray(result))
output.push.apply(output, /**@type {!Array.}*/(result));
else
output.push(result);
}
// 3. Otherwise, if result is error, throw a TypeError.
// (Thrown in handler)
// 4. Otherwise, do nothing.
}
// TODO: Align with spec algorithm.
if (!this._do_not_flush) {
do {
result = this._decoder.handler(input_stream, input_stream.read());
if (result === finished)
break;
if (result === null)
continue;
if (Array.isArray(result))
output.push.apply(output, /**@type {!Array.}*/(result));
else
output.push(result);
} while (!input_stream.endOfStream());
this._decoder = null;
}
// A TextDecoder object also has an associated serialize stream
// algorithm...
/**
* @param {!Array.} stream
* @return {string}
* @this {TextDecoder}
*/
function serializeStream(stream) {
// 1. Let token be the result of reading from stream.
// (Done in-place on array, rather than as a stream)
// 2. If encoding is UTF-8, UTF-16BE, or UTF-16LE, and ignore
// BOM flag and BOM seen flag are unset, run these subsubsteps:
if (includes(['UTF-8', 'UTF-16LE', 'UTF-16BE'], this._encoding.name) &&
!this._ignoreBOM && !this._BOMseen) {
if (stream.length > 0 && stream[0] === 0xFEFF) {
// 1. If token is U+FEFF, set BOM seen flag.
this._BOMseen = true;
stream.shift();
} else if (stream.length > 0) {
// 2. Otherwise, if token is not end-of-stream, set BOM seen
// flag and append token to stream.
this._BOMseen = true;
} else ;
}
// 4. Otherwise, return output.
return codePointsToString(stream);
}
return serializeStream.call(this, output);
};
// 8.2 Interface TextEncoder
/**
* @constructor
* @param {string=} label The label of the encoding. NONSTANDARD.
* @param {Object=} options NONSTANDARD.
*/
function TextEncoder(label, options) {
// Web IDL conventions
if (!(this instanceof TextEncoder))
throw TypeError('Called as a function. Did you forget \'new\'?');
options = ToDictionary(options);
// A TextEncoder object has an associated encoding and encoder.
/** @private */
this._encoding = null;
/** @private @type {?Encoder} */
this._encoder = null;
// Non-standard
/** @private @type {boolean} */
this._do_not_flush = false;
/** @private @type {string} */
this._fatal = Boolean(options['fatal']) ? 'fatal' : 'replacement';
// 1. Let enc be a new TextEncoder object.
var enc = this;
// 2. Set enc's encoding to UTF-8's encoder.
if (Boolean(options['NONSTANDARD_allowLegacyEncoding'])) {
// NONSTANDARD behavior.
label = label !== undefined ? String(label) : DEFAULT_ENCODING;
var encoding = getEncoding(label);
if (encoding === null || encoding.name === 'replacement')
throw RangeError('Unknown encoding: ' + label);
if (!encoders[encoding.name]) {
throw Error('Encoder not present.' +
' Did you forget to include encoding-indexes.js first?');
}
enc._encoding = encoding;
} else {
// Standard behavior.
enc._encoding = getEncoding('utf-8');
if (label !== undefined && 'console' in global) {
console.warn('TextEncoder constructor called with encoding label, '
+ 'which is ignored.');
}
}
// For pre-ES5 runtimes:
if (!Object.defineProperty)
this.encoding = enc._encoding.name.toLowerCase();
// 3. Return enc.
return enc;
}
if (Object.defineProperty) {
// The encoding attribute's getter must return encoding's name.
Object.defineProperty(TextEncoder.prototype, 'encoding', {
/** @this {TextEncoder} */
get: function() { return this._encoding.name.toLowerCase(); }
});
}
/**
* @param {string=} opt_string The string to encode.
* @param {Object=} options
* @return {!Uint8Array} Encoded bytes, as a Uint8Array.
*/
TextEncoder.prototype.encode = function encode(opt_string, options) {
opt_string = opt_string === undefined ? '' : String(opt_string);
options = ToDictionary(options);
// NOTE: This option is nonstandard. None of the encodings
// permitted for encoding (i.e. UTF-8, UTF-16) are stateful when
// the input is a USVString so streaming is not necessary.
if (!this._do_not_flush)
this._encoder = encoders[this._encoding.name]({
fatal: this._fatal === 'fatal'});
this._do_not_flush = Boolean(options['stream']);
// 1. Convert input to a stream.
var input = new Stream(stringToCodePoints(opt_string));
// 2. Let output be a new stream
var output = [];
/** @type {?(number|!Array.)} */
var result;
// 3. While true, run these substeps:
while (true) {
// 1. Let token be the result of reading from input.
var token = input.read();
if (token === end_of_stream)
break;
// 2. Let result be the result of processing token for encoder,
// input, output.
result = this._encoder.handler(input, token);
if (result === finished)
break;
if (Array.isArray(result))
output.push.apply(output, /**@type {!Array.}*/(result));
else
output.push(result);
}
// TODO: Align with spec algorithm.
if (!this._do_not_flush) {
while (true) {
result = this._encoder.handler(input, input.read());
if (result === finished)
break;
if (Array.isArray(result))
output.push.apply(output, /**@type {!Array.}*/(result));
else
output.push(result);
}
this._encoder = null;
}
// 3. If result is finished, convert output into a byte sequence,
// and then return a Uint8Array object wrapping an ArrayBuffer
// containing output.
return new Uint8Array(output);
};
//
// 9. The encoding
//
// 9.1 utf-8
// 9.1.1 utf-8 decoder
/**
* @constructor
* @implements {Decoder}
* @param {{fatal: boolean}} options
*/
function UTF8Decoder(options) {
var fatal = options.fatal;
// utf-8's decoder's has an associated utf-8 code point, utf-8
// bytes seen, and utf-8 bytes needed (all initially 0), a utf-8
// lower boundary (initially 0x80), and a utf-8 upper boundary
// (initially 0xBF).
var /** @type {number} */ utf8_code_point = 0,
/** @type {number} */ utf8_bytes_seen = 0,
/** @type {number} */ utf8_bytes_needed = 0,
/** @type {number} */ utf8_lower_boundary = 0x80,
/** @type {number} */ utf8_upper_boundary = 0xBF;
/**
* @param {Stream} stream The stream of bytes being decoded.
* @param {number} bite The next byte read from the stream.
* @return {?(number|!Array.)} The next code point(s)
* decoded, or null if not enough data exists in the input
* stream to decode a complete code point.
*/
this.handler = function(stream, bite) {
// 1. If byte is end-of-stream and utf-8 bytes needed is not 0,
// set utf-8 bytes needed to 0 and return error.
if (bite === end_of_stream && utf8_bytes_needed !== 0) {
utf8_bytes_needed = 0;
return decoderError(fatal);
}
// 2. If byte is end-of-stream, return finished.
if (bite === end_of_stream)
return finished;
// 3. If utf-8 bytes needed is 0, based on byte:
if (utf8_bytes_needed === 0) {
// 0x00 to 0x7F
if (inRange(bite, 0x00, 0x7F)) {
// Return a code point whose value is byte.
return bite;
}
// 0xC2 to 0xDF
else if (inRange(bite, 0xC2, 0xDF)) {
// 1. Set utf-8 bytes needed to 1.
utf8_bytes_needed = 1;
// 2. Set UTF-8 code point to byte & 0x1F.
utf8_code_point = bite & 0x1F;
}
// 0xE0 to 0xEF
else if (inRange(bite, 0xE0, 0xEF)) {
// 1. If byte is 0xE0, set utf-8 lower boundary to 0xA0.
if (bite === 0xE0)
utf8_lower_boundary = 0xA0;
// 2. If byte is 0xED, set utf-8 upper boundary to 0x9F.
if (bite === 0xED)
utf8_upper_boundary = 0x9F;
// 3. Set utf-8 bytes needed to 2.
utf8_bytes_needed = 2;
// 4. Set UTF-8 code point to byte & 0xF.
utf8_code_point = bite & 0xF;
}
// 0xF0 to 0xF4
else if (inRange(bite, 0xF0, 0xF4)) {
// 1. If byte is 0xF0, set utf-8 lower boundary to 0x90.
if (bite === 0xF0)
utf8_lower_boundary = 0x90;
// 2. If byte is 0xF4, set utf-8 upper boundary to 0x8F.
if (bite === 0xF4)
utf8_upper_boundary = 0x8F;
// 3. Set utf-8 bytes needed to 3.
utf8_bytes_needed = 3;
// 4. Set UTF-8 code point to byte & 0x7.
utf8_code_point = bite & 0x7;
}
// Otherwise
else {
// Return error.
return decoderError(fatal);
}
// Return continue.
return null;
}
// 4. If byte is not in the range utf-8 lower boundary to utf-8
// upper boundary, inclusive, run these substeps:
if (!inRange(bite, utf8_lower_boundary, utf8_upper_boundary)) {
// 1. Set utf-8 code point, utf-8 bytes needed, and utf-8
// bytes seen to 0, set utf-8 lower boundary to 0x80, and set
// utf-8 upper boundary to 0xBF.
utf8_code_point = utf8_bytes_needed = utf8_bytes_seen = 0;
utf8_lower_boundary = 0x80;
utf8_upper_boundary = 0xBF;
// 2. Prepend byte to stream.
stream.prepend(bite);
// 3. Return error.
return decoderError(fatal);
}
// 5. Set utf-8 lower boundary to 0x80 and utf-8 upper boundary
// to 0xBF.
utf8_lower_boundary = 0x80;
utf8_upper_boundary = 0xBF;
// 6. Set UTF-8 code point to (UTF-8 code point )} Byte(s) to emit.
*/
this.handler = function(stream, code_point) {
// 1. If code point is end-of-stream, return finished.
if (code_point === end_of_stream)
return finished;
// 2. If code point is an ASCII code point, return a byte whose
// value is code point.
if (isASCIICodePoint(code_point))
return code_point;
// 3. Set count and offset based on the range code point is in:
var count, offset;
// U+0080 to U+07FF, inclusive:
if (inRange(code_point, 0x0080, 0x07FF)) {
// 1 and 0xC0
count = 1;
offset = 0xC0;
}
// U+0800 to U+FFFF, inclusive:
else if (inRange(code_point, 0x0800, 0xFFFF)) {
// 2 and 0xE0
count = 2;
offset = 0xE0;
}
// U+10000 to U+10FFFF, inclusive:
else if (inRange(code_point, 0x10000, 0x10FFFF)) {
// 3 and 0xF0
count = 3;
offset = 0xF0;
}
// 4. Let bytes be a byte sequence whose first byte is (code
// point >> (6 Ã count)) + offset.
var bytes = [(code_point >> (6 * count)) + offset];
// 5. Run these substeps while count is greater than 0:
while (count > 0) {
// 1. Set temp to code point >> (6 Ã (count â 1)).
var temp = code_point >> (6 * (count - 1));
// 2. Append to bytes 0x80 | (temp & 0x3F).
bytes.push(0x80 | (temp & 0x3F));
// 3. Decrease count by one.
count -= 1;
}
// 6. Return bytes bytes, in order.
return bytes;
};
}
/** @param {{fatal: boolean}} options */
encoders['UTF-8'] = function(options) {
return new UTF8Encoder(options);
};
/** @param {{fatal: boolean}} options */
decoders['UTF-8'] = function(options) {
return new UTF8Decoder(options);
};
//
// 10. Legacy single-byte encodings
//
// 10.1 single-byte decoder
/**
* @constructor
* @implements {Decoder}
* @param {!Array.} index The encoding index.
* @param {{fatal: boolean}} options
*/
function SingleByteDecoder(index, options) {
var fatal = options.fatal;
/**
* @param {Stream} stream The stream of bytes being decoded.
* @param {number} bite The next byte read from the stream.
* @return {?(number|!Array.)} The next code point(s)
* decoded, or null if not enough data exists in the input
* stream to decode a complete code point.
*/
this.handler = function(stream, bite) {
// 1. If byte is end-of-stream, return finished.
if (bite === end_of_stream)
return finished;
// 2. If byte is an ASCII byte, return a code point whose value
// is byte.
if (isASCIIByte(bite))
return bite;
// 3. Let code point be the index code point for byte â 0x80 in
// index single-byte.
var code_point = index[bite - 0x80];
// 4. If code point is null, return error.
if (code_point === null)
return decoderError(fatal);
// 5. Return a code point whose value is code point.
return code_point;
};
}
// 10.2 single-byte encoder
/**
* @constructor
* @implements {Encoder}
* @param {!Array.} index The encoding index.
* @param {{fatal: boolean}} options
*/
function SingleByteEncoder(index, options) {
options.fatal;
/**
* @param {Stream} stream Input stream.
* @param {number} code_point Next code point read from the stream.
* @return {(number|!Array.)} Byte(s) to emit.
*/
this.handler = function(stream, code_point) {
// 1. If code point is end-of-stream, return finished.
if (code_point === end_of_stream)
return finished;
// 2. If code point is an ASCII code point, return a byte whose
// value is code point.
if (isASCIICodePoint(code_point))
return code_point;
// 3. Let pointer be the index pointer for code point in index
// single-byte.
var pointer = indexPointerFor(code_point, index);
// 4. If pointer is null, return error with code point.
if (pointer === null)
encoderError(code_point);
// 5. Return a byte whose value is pointer + 0x80.
return pointer + 0x80;
};
}
(function() {
if (!('encoding-indexes' in global))
return;
encodings.forEach(function(category) {
if (category.heading !== 'Legacy single-byte encodings')
return;
category.encodings.forEach(function(encoding) {
var name = encoding.name;
var idx = index(name.toLowerCase());
/** @param {{fatal: boolean}} options */
decoders[name] = function(options) {
return new SingleByteDecoder(idx, options);
};
/** @param {{fatal: boolean}} options */
encoders[name] = function(options) {
return new SingleByteEncoder(idx, options);
};
});
});
}());
//
// 11. Legacy multi-byte Chinese (simplified) encodings
//
// 11.1 gbk
// 11.1.1 gbk decoder
// gbk's decoder is gb18030's decoder.
/** @param {{fatal: boolean}} options */
decoders['GBK'] = function(options) {
return new GB18030Decoder(options);
};
// 11.1.2 gbk encoder
// gbk's encoder is gb18030's encoder with its gbk flag set.
/** @param {{fatal: boolean}} options */
encoders['GBK'] = function(options) {
return new GB18030Encoder(options, true);
};
// 11.2 gb18030
// 11.2.1 gb18030 decoder
/**
* @constructor
* @implements {Decoder}
* @param {{fatal: boolean}} options
*/
function GB18030Decoder(options) {
var fatal = options.fatal;
// gb18030's decoder has an associated gb18030 first, gb18030
// second, and gb18030 third (all initially 0x00).
var /** @type {number} */ gb18030_first = 0x00,
/** @type {number} */ gb18030_second = 0x00,
/** @type {number} */ gb18030_third = 0x00;
/**
* @param {Stream} stream The stream of bytes being decoded.
* @param {number} bite The next byte read from the stream.
* @return {?(number|!Array.)} The next code point(s)
* decoded, or null if not enough data exists in the input
* stream to decode a complete code point.
*/
this.handler = function(stream, bite) {
// 1. If byte is end-of-stream and gb18030 first, gb18030
// second, and gb18030 third are 0x00, return finished.
if (bite === end_of_stream && gb18030_first === 0x00 &&
gb18030_second === 0x00 && gb18030_third === 0x00) {
return finished;
}
// 2. If byte is end-of-stream, and gb18030 first, gb18030
// second, or gb18030 third is not 0x00, set gb18030 first,
// gb18030 second, and gb18030 third to 0x00, and return error.
if (bite === end_of_stream &&
(gb18030_first !== 0x00 || gb18030_second !== 0x00 ||
gb18030_third !== 0x00)) {
gb18030_first = 0x00;
gb18030_second = 0x00;
gb18030_third = 0x00;
decoderError(fatal);
}
var code_point;
// 3. If gb18030 third is not 0x00, run these substeps:
if (gb18030_third !== 0x00) {
// 1. Let code point be null.
code_point = null;
// 2. If byte is in the range 0x30 to 0x39, inclusive, set
// code point to the index gb18030 ranges code point for
// (((gb18030 first â 0x81) Ã 10 + gb18030 second â 0x30) Ã
// 126 + gb18030 third â 0x81) Ã 10 + byte â 0x30.
if (inRange(bite, 0x30, 0x39)) {
code_point = indexGB18030RangesCodePointFor(
(((gb18030_first - 0x81) * 10 + gb18030_second - 0x30) * 126 +
gb18030_third - 0x81) * 10 + bite - 0x30);
}
// 3. Let buffer be a byte sequence consisting of gb18030
// second, gb18030 third, and byte, in order.
var buffer = [gb18030_second, gb18030_third, bite];
// 4. Set gb18030 first, gb18030 second, and gb18030 third to
// 0x00.
gb18030_first = 0x00;
gb18030_second = 0x00;
gb18030_third = 0x00;
// 5. If code point is null, prepend buffer to stream and
// return error.
if (code_point === null) {
stream.prepend(buffer);
return decoderError(fatal);
}
// 6. Return a code point whose value is code point.
return code_point;
}
// 4. If gb18030 second is not 0x00, run these substeps:
if (gb18030_second !== 0x00) {
// 1. If byte is in the range 0x81 to 0xFE, inclusive, set
// gb18030 third to byte and return continue.
if (inRange(bite, 0x81, 0xFE)) {
gb18030_third = bite;
return null;
}
// 2. Prepend gb18030 second followed by byte to stream, set
// gb18030 first and gb18030 second to 0x00, and return error.
stream.prepend([gb18030_second, bite]);
gb18030_first = 0x00;
gb18030_second = 0x00;
return decoderError(fatal);
}
// 5. If gb18030 first is not 0x00, run these substeps:
if (gb18030_first !== 0x00) {
// 1. If byte is in the range 0x30 to 0x39, inclusive, set
// gb18030 second to byte and return continue.
if (inRange(bite, 0x30, 0x39)) {
gb18030_second = bite;
return null;
}
// 2. Let lead be gb18030 first, let pointer be null, and set
// gb18030 first to 0x00.
var lead = gb18030_first;
var pointer = null;
gb18030_first = 0x00;
// 3. Let offset be 0x40 if byte is less than 0x7F and 0x41
// otherwise.
var offset = bite )} Byte(s) to emit.
*/
this.handler = function(stream, code_point) {
// 1. If code point is end-of-stream, return finished.
if (code_point === end_of_stream)
return finished;
// 2. If code point is an ASCII code point, return a byte whose
// value is code point.
if (isASCIICodePoint(code_point))
return code_point;
// 3. If code point is U+E5E5, return error with code point.
if (code_point === 0xE5E5)
return encoderError(code_point);
// 4. If the gbk flag is set and code point is U+20AC, return
// byte 0x80.
if (gbk_flag && code_point === 0x20AC)
return 0x80;
// 5. Let pointer be the index pointer for code point in index
// gb18030.
var pointer = indexPointerFor(code_point, index('gb18030'));
// 6. If pointer is not null, run these substeps:
if (pointer !== null) {
// 1. Let lead be floor(pointer / 190) + 0x81.
var lead = floor(pointer / 190) + 0x81;
// 2. Let trail be pointer % 190.
var trail = pointer % 190;
// 3. Let offset be 0x40 if trail is less than 0x3F and 0x41 otherwise.
var offset = trail )} The next code point(s)
* decoded, or null if not enough data exists in the input
* stream to decode a complete code point.
*/
this.handler = function(stream, bite) {
// 1. If byte is end-of-stream and Big5 lead is not 0x00, set
// Big5 lead to 0x00 and return error.
if (bite === end_of_stream && Big5_lead !== 0x00) {
Big5_lead = 0x00;
return decoderError(fatal);
}
// 2. If byte is end-of-stream and Big5 lead is 0x00, return
// finished.
if (bite === end_of_stream && Big5_lead === 0x00)
return finished;
// 3. If Big5 lead is not 0x00, let lead be Big5 lead, let
// pointer be null, set Big5 lead to 0x00, and then run these
// substeps:
if (Big5_lead !== 0x00) {
var lead = Big5_lead;
var pointer = null;
Big5_lead = 0x00;
// 1. Let offset be 0x40 if byte is less than 0x7F and 0x62
// otherwise.
var offset = bite )} Byte(s) to emit.
*/
this.handler = function(stream, code_point) {
// 1. If code point is end-of-stream, return finished.
if (code_point === end_of_stream)
return finished;
// 2. If code point is an ASCII code point, return a byte whose
// value is code point.
if (isASCIICodePoint(code_point))
return code_point;
// 3. Let pointer be the index Big5 pointer for code point.
var pointer = indexBig5PointerFor(code_point);
// 4. If pointer is null, return error with code point.
if (pointer === null)
return encoderError(code_point);
// 5. Let lead be floor(pointer / 157) + 0x81.
var lead = floor(pointer / 157) + 0x81;
// 6. If lead is less than 0xA1, return error with code point.
if (lead )} The next code point(s)
* decoded, or null if not enough data exists in the input
* stream to decode a complete code point.
*/
this.handler = function(stream, bite) {
// 1. If byte is end-of-stream and euc-jp lead is not 0x00, set
// euc-jp lead to 0x00, and return error.
if (bite === end_of_stream && eucjp_lead !== 0x00) {
eucjp_lead = 0x00;
return decoderError(fatal);
}
// 2. If byte is end-of-stream and euc-jp lead is 0x00, return
// finished.
if (bite === end_of_stream && eucjp_lead === 0x00)
return finished;
// 3. If euc-jp lead is 0x8E and byte is in the range 0xA1 to
// 0xDF, inclusive, set euc-jp lead to 0x00 and return a code
// point whose value is 0xFF61 â 0xA1 + byte.
if (eucjp_lead === 0x8E && inRange(bite, 0xA1, 0xDF)) {
eucjp_lead = 0x00;
return 0xFF61 - 0xA1 + bite;
}
// 4. If euc-jp lead is 0x8F and byte is in the range 0xA1 to
// 0xFE, inclusive, set the euc-jp jis0212 flag, set euc-jp lead
// to byte, and return continue.
if (eucjp_lead === 0x8F && inRange(bite, 0xA1, 0xFE)) {
eucjp_jis0212_flag = true;
eucjp_lead = bite;
return null;
}
// 5. If euc-jp lead is not 0x00, let lead be euc-jp lead, set
// euc-jp lead to 0x00, and run these substeps:
if (eucjp_lead !== 0x00) {
var lead = eucjp_lead;
eucjp_lead = 0x00;
// 1. Let code point be null.
var code_point = null;
// 2. If lead and byte are both in the range 0xA1 to 0xFE,
// inclusive, set code point to the index code point for (lead
// â 0xA1) Ã 94 + byte â 0xA1 in index jis0208 if the euc-jp
// jis0212 flag is unset and in index jis0212 otherwise.
if (inRange(lead, 0xA1, 0xFE) && inRange(bite, 0xA1, 0xFE)) {
code_point = indexCodePointFor(
(lead - 0xA1) * 94 + (bite - 0xA1),
index(!eucjp_jis0212_flag ? 'jis0208' : 'jis0212'));
}
// 3. Unset the euc-jp jis0212 flag.
eucjp_jis0212_flag = false;
// 4. If byte is not in the range 0xA1 to 0xFE, inclusive,
// prepend byte to stream.
if (!inRange(bite, 0xA1, 0xFE))
stream.prepend(bite);
// 5. If code point is null, return error.
if (code_point === null)
return decoderError(fatal);
// 6. Return a code point whose value is code point.
return code_point;
}
// 6. If byte is an ASCII byte, return a code point whose value
// is byte.
if (isASCIIByte(bite))
return bite;
// 7. If byte is 0x8E, 0x8F, or in the range 0xA1 to 0xFE,
// inclusive, set euc-jp lead to byte and return continue.
if (bite === 0x8E || bite === 0x8F || inRange(bite, 0xA1, 0xFE)) {
eucjp_lead = bite;
return null;
}
// 8. Return error.
return decoderError(fatal);
};
}
// 13.1.2 euc-jp encoder
/**
* @constructor
* @implements {Encoder}
* @param {{fatal: boolean}} options
*/
function EUCJPEncoder(options) {
options.fatal;
/**
* @param {Stream} stream Input stream.
* @param {number} code_point Next code point read from the stream.
* @return {(number|!Array.)} Byte(s) to emit.
*/
this.handler = function(stream, code_point) {
// 1. If code point is end-of-stream, return finished.
if (code_point === end_of_stream)
return finished;
// 2. If code point is an ASCII code point, return a byte whose
// value is code point.
if (isASCIICodePoint(code_point))
return code_point;
// 3. If code point is U+00A5, return byte 0x5C.
if (code_point === 0x00A5)
return 0x5C;
// 4. If code point is U+203E, return byte 0x7E.
if (code_point === 0x203E)
return 0x7E;
// 5. If code point is in the range U+FF61 to U+FF9F, inclusive,
// return two bytes whose values are 0x8E and code point â
// 0xFF61 + 0xA1.
if (inRange(code_point, 0xFF61, 0xFF9F))
return [0x8E, code_point - 0xFF61 + 0xA1];
// 6. If code point is U+2212, set it to U+FF0D.
if (code_point === 0x2212)
code_point = 0xFF0D;
// 7. Let pointer be the index pointer for code point in index
// jis0208.
var pointer = indexPointerFor(code_point, index('jis0208'));
// 8. If pointer is null, return error with code point.
if (pointer === null)
return encoderError(code_point);
// 9. Let lead be floor(pointer / 94) + 0xA1.
var lead = floor(pointer / 94) + 0xA1;
// 10. Let trail be pointer % 94 + 0xA1.
var trail = pointer % 94 + 0xA1;
// 11. Return two bytes whose values are lead and trail.
return [lead, trail];
};
}
/** @param {{fatal: boolean}} options */
encoders['EUC-JP'] = function(options) {
return new EUCJPEncoder(options);
};
/** @param {{fatal: boolean}} options */
decoders['EUC-JP'] = function(options) {
return new EUCJPDecoder(options);
};
// 13.2 iso-2022-jp
// 13.2.1 iso-2022-jp decoder
/**
* @constructor
* @implements {Decoder}
* @param {{fatal: boolean}} options
*/
function ISO2022JPDecoder(options) {
var fatal = options.fatal;
/** @enum */
var states = {
ASCII: 0,
Roman: 1,
Katakana: 2,
LeadByte: 3,
TrailByte: 4,
EscapeStart: 5,
Escape: 6
};
// iso-2022-jp's decoder has an associated iso-2022-jp decoder
// state (initially ASCII), iso-2022-jp decoder output state
// (initially ASCII), iso-2022-jp lead (initially 0x00), and
// iso-2022-jp output flag (initially unset).
var /** @type {number} */ iso2022jp_decoder_state = states.ASCII,
/** @type {number} */ iso2022jp_decoder_output_state = states.ASCII,
/** @type {number} */ iso2022jp_lead = 0x00,
/** @type {boolean} */ iso2022jp_output_flag = false;
/**
* @param {Stream} stream The stream of bytes being decoded.
* @param {number} bite The next byte read from the stream.
* @return {?(number|!Array.)} The next code point(s)
* decoded, or null if not enough data exists in the input
* stream to decode a complete code point.
*/
this.handler = function(stream, bite) {
// switching on iso-2022-jp decoder state:
switch (iso2022jp_decoder_state) {
default:
case states.ASCII:
// ASCII
// Based on byte:
// 0x1B
if (bite === 0x1B) {
// Set iso-2022-jp decoder state to escape start and return
// continue.
iso2022jp_decoder_state = states.EscapeStart;
return null;
}
// 0x00 to 0x7F, excluding 0x0E, 0x0F, and 0x1B
if (inRange(bite, 0x00, 0x7F) && bite !== 0x0E
&& bite !== 0x0F && bite !== 0x1B) {
// Unset the iso-2022-jp output flag and return a code point
// whose value is byte.
iso2022jp_output_flag = false;
return bite;
}
// end-of-stream
if (bite === end_of_stream) {
// Return finished.
return finished;
}
// Otherwise
// Unset the iso-2022-jp output flag and return error.
iso2022jp_output_flag = false;
return decoderError(fatal);
case states.Roman:
// Roman
// Based on byte:
// 0x1B
if (bite === 0x1B) {
// Set iso-2022-jp decoder state to escape start and return
// continue.
iso2022jp_decoder_state = states.EscapeStart;
return null;
}
// 0x5C
if (bite === 0x5C) {
// Unset the iso-2022-jp output flag and return code point
// U+00A5.
iso2022jp_output_flag = false;
return 0x00A5;
}
// 0x7E
if (bite === 0x7E) {
// Unset the iso-2022-jp output flag and return code point
// U+203E.
iso2022jp_output_flag = false;
return 0x203E;
}
// 0x00 to 0x7F, excluding 0x0E, 0x0F, 0x1B, 0x5C, and 0x7E
if (inRange(bite, 0x00, 0x7F) && bite !== 0x0E && bite !== 0x0F
&& bite !== 0x1B && bite !== 0x5C && bite !== 0x7E) {
// Unset the iso-2022-jp output flag and return a code point
// whose value is byte.
iso2022jp_output_flag = false;
return bite;
}
// end-of-stream
if (bite === end_of_stream) {
// Return finished.
return finished;
}
// Otherwise
// Unset the iso-2022-jp output flag and return error.
iso2022jp_output_flag = false;
return decoderError(fatal);
case states.Katakana:
// Katakana
// Based on byte:
// 0x1B
if (bite === 0x1B) {
// Set iso-2022-jp decoder state to escape start and return
// continue.
iso2022jp_decoder_state = states.EscapeStart;
return null;
}
// 0x21 to 0x5F
if (inRange(bite, 0x21, 0x5F)) {
// Unset the iso-2022-jp output flag and return a code point
// whose value is 0xFF61 â 0x21 + byte.
iso2022jp_output_flag = false;
return 0xFF61 - 0x21 + bite;
}
// end-of-stream
if (bite === end_of_stream) {
// Return finished.
return finished;
}
// Otherwise
// Unset the iso-2022-jp output flag and return error.
iso2022jp_output_flag = false;
return decoderError(fatal);
case states.LeadByte:
// Lead byte
// Based on byte:
// 0x1B
if (bite === 0x1B) {
// Set iso-2022-jp decoder state to escape start and return
// continue.
iso2022jp_decoder_state = states.EscapeStart;
return null;
}
// 0x21 to 0x7E
if (inRange(bite, 0x21, 0x7E)) {
// Unset the iso-2022-jp output flag, set iso-2022-jp lead
// to byte, iso-2022-jp decoder state to trail byte, and
// return continue.
iso2022jp_output_flag = false;
iso2022jp_lead = bite;
iso2022jp_decoder_state = states.TrailByte;
return null;
}
// end-of-stream
if (bite === end_of_stream) {
// Return finished.
return finished;
}
// Otherwise
// Unset the iso-2022-jp output flag and return error.
iso2022jp_output_flag = false;
return decoderError(fatal);
case states.TrailByte:
// Trail byte
// Based on byte:
// 0x1B
if (bite === 0x1B) {
// Set iso-2022-jp decoder state to escape start and return
// continue.
iso2022jp_decoder_state = states.EscapeStart;
return decoderError(fatal);
}
// 0x21 to 0x7E
if (inRange(bite, 0x21, 0x7E)) {
// 1. Set the iso-2022-jp decoder state to lead byte.
iso2022jp_decoder_state = states.LeadByte;
// 2. Let pointer be (iso-2022-jp lead â 0x21) Ã 94 + byte â 0x21.
var pointer = (iso2022jp_lead - 0x21) * 94 + bite - 0x21;
// 3. Let code point be the index code point for pointer in
// index jis0208.
var code_point = indexCodePointFor(pointer, index('jis0208'));
// 4. If code point is null, return error.
if (code_point === null)
return decoderError(fatal);
// 5. Return a code point whose value is code point.
return code_point;
}
// end-of-stream
if (bite === end_of_stream) {
// Set the iso-2022-jp decoder state to lead byte, prepend
// byte to stream, and return error.
iso2022jp_decoder_state = states.LeadByte;
stream.prepend(bite);
return decoderError(fatal);
}
// Otherwise
// Set iso-2022-jp decoder state to lead byte and return
// error.
iso2022jp_decoder_state = states.LeadByte;
return decoderError(fatal);
case states.EscapeStart:
// Escape start
// 1. If byte is either 0x24 or 0x28, set iso-2022-jp lead to
// byte, iso-2022-jp decoder state to escape, and return
// continue.
if (bite === 0x24 || bite === 0x28) {
iso2022jp_lead = bite;
iso2022jp_decoder_state = states.Escape;
return null;
}
// 2. Prepend byte to stream.
stream.prepend(bite);
// 3. Unset the iso-2022-jp output flag, set iso-2022-jp
// decoder state to iso-2022-jp decoder output state, and
// return error.
iso2022jp_output_flag = false;
iso2022jp_decoder_state = iso2022jp_decoder_output_state;
return decoderError(fatal);
case states.Escape:
// Escape
// 1. Let lead be iso-2022-jp lead and set iso-2022-jp lead to
// 0x00.
var lead = iso2022jp_lead;
iso2022jp_lead = 0x00;
// 2. Let state be null.
var state = null;
// 3. If lead is 0x28 and byte is 0x42, set state to ASCII.
if (lead === 0x28 && bite === 0x42)
state = states.ASCII;
// 4. If lead is 0x28 and byte is 0x4A, set state to Roman.
if (lead === 0x28 && bite === 0x4A)
state = states.Roman;
// 5. If lead is 0x28 and byte is 0x49, set state to Katakana.
if (lead === 0x28 && bite === 0x49)
state = states.Katakana;
// 6. If lead is 0x24 and byte is either 0x40 or 0x42, set
// state to lead byte.
if (lead === 0x24 && (bite === 0x40 || bite === 0x42))
state = states.LeadByte;
// 7. If state is non-null, run these substeps:
if (state !== null) {
// 1. Set iso-2022-jp decoder state and iso-2022-jp decoder
// output state to states.
iso2022jp_decoder_state = iso2022jp_decoder_state = state;
// 2. Let output flag be the iso-2022-jp output flag.
var output_flag = iso2022jp_output_flag;
// 3. Set the iso-2022-jp output flag.
iso2022jp_output_flag = true;
// 4. Return continue, if output flag is unset, and error
// otherwise.
return !output_flag ? null : decoderError(fatal);
}
// 8. Prepend lead and byte to stream.
stream.prepend([lead, bite]);
// 9. Unset the iso-2022-jp output flag, set iso-2022-jp
// decoder state to iso-2022-jp decoder output state and
// return error.
iso2022jp_output_flag = false;
iso2022jp_decoder_state = iso2022jp_decoder_output_state;
return decoderError(fatal);
}
};
}
// 13.2.2 iso-2022-jp encoder
/**
* @constructor
* @implements {Encoder}
* @param {{fatal: boolean}} options
*/
function ISO2022JPEncoder(options) {
options.fatal;
// iso-2022-jp's encoder has an associated iso-2022-jp encoder
// state which is one of ASCII, Roman, and jis0208 (initially
// ASCII).
/** @enum */
var states = {
ASCII: 0,
Roman: 1,
jis0208: 2
};
var /** @type {number} */ iso2022jp_state = states.ASCII;
/**
* @param {Stream} stream Input stream.
* @param {number} code_point Next code point read from the stream.
* @return {(number|!Array.)} Byte(s) to emit.
*/
this.handler = function(stream, code_point) {
// 1. If code point is end-of-stream and iso-2022-jp encoder
// state is not ASCII, prepend code point to stream, set
// iso-2022-jp encoder state to ASCII, and return three bytes
// 0x1B 0x28 0x42.
if (code_point === end_of_stream &&
iso2022jp_state !== states.ASCII) {
stream.prepend(code_point);
iso2022jp_state = states.ASCII;
return [0x1B, 0x28, 0x42];
}
// 2. If code point is end-of-stream and iso-2022-jp encoder
// state is ASCII, return finished.
if (code_point === end_of_stream && iso2022jp_state === states.ASCII)
return finished;
// 3. If ISO-2022-JP encoder state is ASCII or Roman, and code
// point is U+000E, U+000F, or U+001B, return error with U+FFFD.
if ((iso2022jp_state === states.ASCII ||
iso2022jp_state === states.Roman) &&
(code_point === 0x000E || code_point === 0x000F ||
code_point === 0x001B)) {
return encoderError(0xFFFD);
}
// 4. If iso-2022-jp encoder state is ASCII and code point is an
// ASCII code point, return a byte whose value is code point.
if (iso2022jp_state === states.ASCII &&
isASCIICodePoint(code_point))
return code_point;
// 5. If iso-2022-jp encoder state is Roman and code point is an
// ASCII code point, excluding U+005C and U+007E, or is U+00A5
// or U+203E, run these substeps:
if (iso2022jp_state === states.Roman &&
((isASCIICodePoint(code_point) &&
code_point !== 0x005C && code_point !== 0x007E) ||
(code_point == 0x00A5 || code_point == 0x203E))) {
// 1. If code point is an ASCII code point, return a byte
// whose value is code point.
if (isASCIICodePoint(code_point))
return code_point;
// 2. If code point is U+00A5, return byte 0x5C.
if (code_point === 0x00A5)
return 0x5C;
// 3. If code point is U+203E, return byte 0x7E.
if (code_point === 0x203E)
return 0x7E;
}
// 6. If code point is an ASCII code point, and iso-2022-jp
// encoder state is not ASCII, prepend code point to stream, set
// iso-2022-jp encoder state to ASCII, and return three bytes
// 0x1B 0x28 0x42.
if (isASCIICodePoint(code_point) &&
iso2022jp_state !== states.ASCII) {
stream.prepend(code_point);
iso2022jp_state = states.ASCII;
return [0x1B, 0x28, 0x42];
}
// 7. If code point is either U+00A5 or U+203E, and iso-2022-jp
// encoder state is not Roman, prepend code point to stream, set
// iso-2022-jp encoder state to Roman, and return three bytes
// 0x1B 0x28 0x4A.
if ((code_point === 0x00A5 || code_point === 0x203E) &&
iso2022jp_state !== states.Roman) {
stream.prepend(code_point);
iso2022jp_state = states.Roman;
return [0x1B, 0x28, 0x4A];
}
// 8. If code point is U+2212, set it to U+FF0D.
if (code_point === 0x2212)
code_point = 0xFF0D;
// 9. Let pointer be the index pointer for code point in index
// jis0208.
var pointer = indexPointerFor(code_point, index('jis0208'));
// 10. If pointer is null, return error with code point.
if (pointer === null)
return encoderError(code_point);
// 11. If iso-2022-jp encoder state is not jis0208, prepend code
// point to stream, set iso-2022-jp encoder state to jis0208,
// and return three bytes 0x1B 0x24 0x42.
if (iso2022jp_state !== states.jis0208) {
stream.prepend(code_point);
iso2022jp_state = states.jis0208;
return [0x1B, 0x24, 0x42];
}
// 12. Let lead be floor(pointer / 94) + 0x21.
var lead = floor(pointer / 94) + 0x21;
// 13. Let trail be pointer % 94 + 0x21.
var trail = pointer % 94 + 0x21;
// 14. Return two bytes whose values are lead and trail.
return [lead, trail];
};
}
/** @param {{fatal: boolean}} options */
encoders['ISO-2022-JP'] = function(options) {
return new ISO2022JPEncoder(options);
};
/** @param {{fatal: boolean}} options */
decoders['ISO-2022-JP'] = function(options) {
return new ISO2022JPDecoder(options);
};
// 13.3 Shift_JIS
// 13.3.1 Shift_JIS decoder
/**
* @constructor
* @implements {Decoder}
* @param {{fatal: boolean}} options
*/
function ShiftJISDecoder(options) {
var fatal = options.fatal;
// Shift_JIS's decoder has an associated Shift_JIS lead (initially
// 0x00).
var /** @type {number} */ Shift_JIS_lead = 0x00;
/**
* @param {Stream} stream The stream of bytes being decoded.
* @param {number} bite The next byte read from the stream.
* @return {?(number|!Array.)} The next code point(s)
* decoded, or null if not enough data exists in the input
* stream to decode a complete code point.
*/
this.handler = function(stream, bite) {
// 1. If byte is end-of-stream and Shift_JIS lead is not 0x00,
// set Shift_JIS lead to 0x00 and return error.
if (bite === end_of_stream && Shift_JIS_lead !== 0x00) {
Shift_JIS_lead = 0x00;
return decoderError(fatal);
}
// 2. If byte is end-of-stream and Shift_JIS lead is 0x00,
// return finished.
if (bite === end_of_stream && Shift_JIS_lead === 0x00)
return finished;
// 3. If Shift_JIS lead is not 0x00, let lead be Shift_JIS lead,
// let pointer be null, set Shift_JIS lead to 0x00, and then run
// these substeps:
if (Shift_JIS_lead !== 0x00) {
var lead = Shift_JIS_lead;
var pointer = null;
Shift_JIS_lead = 0x00;
// 1. Let offset be 0x40, if byte is less than 0x7F, and 0x41
// otherwise.
var offset = (bite )} Byte(s) to emit.
*/
this.handler = function(stream, code_point) {
// 1. If code point is end-of-stream, return finished.
if (code_point === end_of_stream)
return finished;
// 2. If code point is an ASCII code point or U+0080, return a
// byte whose value is code point.
if (isASCIICodePoint(code_point) || code_point === 0x0080)
return code_point;
// 3. If code point is U+00A5, return byte 0x5C.
if (code_point === 0x00A5)
return 0x5C;
// 4. If code point is U+203E, return byte 0x7E.
if (code_point === 0x203E)
return 0x7E;
// 5. If code point is in the range U+FF61 to U+FF9F, inclusive,
// return a byte whose value is code point â 0xFF61 + 0xA1.
if (inRange(code_point, 0xFF61, 0xFF9F))
return code_point - 0xFF61 + 0xA1;
// 6. If code point is U+2212, set it to U+FF0D.
if (code_point === 0x2212)
code_point = 0xFF0D;
// 7. Let pointer be the index Shift_JIS pointer for code point.
var pointer = indexShiftJISPointerFor(code_point);
// 8. If pointer is null, return error with code point.
if (pointer === null)
return encoderError(code_point);
// 9. Let lead be floor(pointer / 188).
var lead = floor(pointer / 188);
// 10. Let lead offset be 0x81, if lead is less than 0x1F, and
// 0xC1 otherwise.
var lead_offset = (lead )} The next code point(s)
* decoded, or null if not enough data exists in the input
* stream to decode a complete code point.
*/
this.handler = function(stream, bite) {
// 1. If byte is end-of-stream and euc-kr lead is not 0x00, set
// euc-kr lead to 0x00 and return error.
if (bite === end_of_stream && euckr_lead !== 0) {
euckr_lead = 0x00;
return decoderError(fatal);
}
// 2. If byte is end-of-stream and euc-kr lead is 0x00, return
// finished.
if (bite === end_of_stream && euckr_lead === 0)
return finished;
// 3. If euc-kr lead is not 0x00, let lead be euc-kr lead, let
// pointer be null, set euc-kr lead to 0x00, and then run these
// substeps:
if (euckr_lead !== 0x00) {
var lead = euckr_lead;
var pointer = null;
euckr_lead = 0x00;
// 1. If byte is in the range 0x41 to 0xFE, inclusive, set
// pointer to (lead â 0x81) Ã 190 + (byte â 0x41).
if (inRange(bite, 0x41, 0xFE))
pointer = (lead - 0x81) * 190 + (bite - 0x41);
// 2. Let code point be null, if pointer is null, and the
// index code point for pointer in index euc-kr otherwise.
var code_point = (pointer === null)
? null : indexCodePointFor(pointer, index('euc-kr'));
// 3. If code point is null and byte is an ASCII byte, prepend
// byte to stream.
if (pointer === null && isASCIIByte(bite))
stream.prepend(bite);
// 4. If code point is null, return error.
if (code_point === null)
return decoderError(fatal);
// 5. Return a code point whose value is code point.
return code_point;
}
// 4. If byte is an ASCII byte, return a code point whose value
// is byte.
if (isASCIIByte(bite))
return bite;
// 5. If byte is in the range 0x81 to 0xFE, inclusive, set
// euc-kr lead to byte and return continue.
if (inRange(bite, 0x81, 0xFE)) {
euckr_lead = bite;
return null;
}
// 6. Return error.
return decoderError(fatal);
};
}
// 14.1.2 euc-kr encoder
/**
* @constructor
* @implements {Encoder}
* @param {{fatal: boolean}} options
*/
function EUCKREncoder(options) {
options.fatal;
/**
* @param {Stream} stream Input stream.
* @param {number} code_point Next code point read from the stream.
* @return {(number|!Array.)} Byte(s) to emit.
*/
this.handler = function(stream, code_point) {
// 1. If code point is end-of-stream, return finished.
if (code_point === end_of_stream)
return finished;
// 2. If code point is an ASCII code point, return a byte whose
// value is code point.
if (isASCIICodePoint(code_point))
return code_point;
// 3. Let pointer be the index pointer for code point in index
// euc-kr.
var pointer = indexPointerFor(code_point, index('euc-kr'));
// 4. If pointer is null, return error with code point.
if (pointer === null)
return encoderError(code_point);
// 5. Let lead be floor(pointer / 190) + 0x81.
var lead = floor(pointer / 190) + 0x81;
// 6. Let trail be pointer % 190 + 0x41.
var trail = (pointer % 190) + 0x41;
// 7. Return two bytes whose values are lead and trail.
return [lead, trail];
};
}
/** @param {{fatal: boolean}} options */
encoders['EUC-KR'] = function(options) {
return new EUCKREncoder(options);
};
/** @param {{fatal: boolean}} options */
decoders['EUC-KR'] = function(options) {
return new EUCKRDecoder(options);
};
//
// 15. Legacy miscellaneous encodings
//
// 15.1 replacement
// Not needed - API throws RangeError
// 15.2 Common infrastructure for utf-16be and utf-16le
/**
* @param {number} code_unit
* @param {boolean} utf16be
* @return {!Array.} bytes
*/
function convertCodeUnitToBytes(code_unit, utf16be) {
// 1. Let byte1 be code unit >> 8.
var byte1 = code_unit >> 8;
// 2. Let byte2 be code unit & 0x00FF.
var byte2 = code_unit & 0x00FF;
// 3. Then return the bytes in order:
// utf-16be flag is set: byte1, then byte2.
if (utf16be)
return [byte1, byte2];
// utf-16be flag is unset: byte2, then byte1.
return [byte2, byte1];
}
// 15.2.1 shared utf-16 decoder
/**
* @constructor
* @implements {Decoder}
* @param {boolean} utf16_be True if big-endian, false if little-endian.
* @param {{fatal: boolean}} options
*/
function UTF16Decoder(utf16_be, options) {
var fatal = options.fatal;
var /** @type {?number} */ utf16_lead_byte = null,
/** @type {?number} */ utf16_lead_surrogate = null;
/**
* @param {Stream} stream The stream of bytes being decoded.
* @param {number} bite The next byte read from the stream.
* @return {?(number|!Array.)} The next code point(s)
* decoded, or null if not enough data exists in the input
* stream to decode a complete code point.
*/
this.handler = function(stream, bite) {
// 1. If byte is end-of-stream and either utf-16 lead byte or
// utf-16 lead surrogate is not null, set utf-16 lead byte and
// utf-16 lead surrogate to null, and return error.
if (bite === end_of_stream && (utf16_lead_byte !== null ||
utf16_lead_surrogate !== null)) {
return decoderError(fatal);
}
// 2. If byte is end-of-stream and utf-16 lead byte and utf-16
// lead surrogate are null, return finished.
if (bite === end_of_stream && utf16_lead_byte === null &&
utf16_lead_surrogate === null) {
return finished;
}
// 3. If utf-16 lead byte is null, set utf-16 lead byte to byte
// and return continue.
if (utf16_lead_byte === null) {
utf16_lead_byte = bite;
return null;
}
// 4. Let code unit be the result of:
var code_unit;
if (utf16_be) {
// utf-16be decoder flag is set
// (utf-16 lead byte )} Byte(s) to emit.
*/
this.handler = function(stream, code_point) {
// 1. If code point is end-of-stream, return finished.
if (code_point === end_of_stream)
return finished;
// 2. If code point is in the range U+0000 to U+FFFF, inclusive,
// return the sequence resulting of converting code point to
// bytes using utf-16be encoder flag.
if (inRange(code_point, 0x0000, 0xFFFF))
return convertCodeUnitToBytes(code_point, utf16_be);
// 3. Let lead be ((code point â 0x10000) >> 10) + 0xD800,
// converted to bytes using utf-16be encoder flag.
var lead = convertCodeUnitToBytes(
((code_point - 0x10000) >> 10) + 0xD800, utf16_be);
// 4. Let trail be ((code point â 0x10000) & 0x3FF) + 0xDC00,
// converted to bytes using utf-16be encoder flag.
var trail = convertCodeUnitToBytes(
((code_point - 0x10000) & 0x3FF) + 0xDC00, utf16_be);
// 5. Return a byte sequence of lead followed by trail.
return lead.concat(trail);
};
}
// 15.3 utf-16be
// 15.3.1 utf-16be decoder
/** @param {{fatal: boolean}} options */
encoders['UTF-16BE'] = function(options) {
return new UTF16Encoder(true, options);
};
// 15.3.2 utf-16be encoder
/** @param {{fatal: boolean}} options */
decoders['UTF-16BE'] = function(options) {
return new UTF16Decoder(true, options);
};
// 15.4 utf-16le
// 15.4.1 utf-16le decoder
/** @param {{fatal: boolean}} options */
encoders['UTF-16LE'] = function(options) {
return new UTF16Encoder(false, options);
};
// 15.4.2 utf-16le encoder
/** @param {{fatal: boolean}} options */
decoders['UTF-16LE'] = function(options) {
return new UTF16Decoder(false, options);
};
// 15.5 x-user-defined
// 15.5.1 x-user-defined decoder
/**
* @constructor
* @implements {Decoder}
* @param {{fatal: boolean}} options
*/
function XUserDefinedDecoder(options) {
options.fatal;
/**
* @param {Stream} stream The stream of bytes being decoded.
* @param {number} bite The next byte read from the stream.
* @return {?(number|!Array.)} The next code point(s)
* decoded, or null if not enough data exists in the input
* stream to decode a complete code point.
*/
this.handler = function(stream, bite) {
// 1. If byte is end-of-stream, return finished.
if (bite === end_of_stream)
return finished;
// 2. If byte is an ASCII byte, return a code point whose value
// is byte.
if (isASCIIByte(bite))
return bite;
// 3. Return a code point whose value is 0xF780 + byte â 0x80.
return 0xF780 + bite - 0x80;
};
}
// 15.5.2 x-user-defined encoder
/**
* @constructor
* @implements {Encoder}
* @param {{fatal: boolean}} options
*/
function XUserDefinedEncoder(options) {
options.fatal;
/**
* @param {Stream} stream Input stream.
* @param {number} code_point Next code point read from the stream.
* @return {(number|!Array.)} Byte(s) to emit.
*/
this.handler = function(stream, code_point) {
// 1.If code point is end-of-stream, return finished.
if (code_point === end_of_stream)
return finished;
// 2. If code point is an ASCII code point, return a byte whose
// value is code point.
if (isASCIICodePoint(code_point))
return code_point;
// 3. If code point is in the range U+F780 to U+F7FF, inclusive,
// return a byte whose value is code point â 0xF780 + 0x80.
if (inRange(code_point, 0xF780, 0xF7FF))
return code_point - 0xF780 + 0x80;
// 4. Return error with code point.
return encoderError(code_point);
};
}
/** @param {{fatal: boolean}} options */
encoders['x-user-defined'] = function(options) {
return new XUserDefinedEncoder(options);
};
/** @param {{fatal: boolean}} options */
decoders['x-user-defined'] = function(options) {
return new XUserDefinedDecoder(options);
};
if (!global['TextEncoder'])
global['TextEncoder'] = TextEncoder;
if (!global['TextDecoder'])
global['TextDecoder'] = TextDecoder;
if (module.exports) {
module.exports = {
TextEncoder: global['TextEncoder'],
TextDecoder: global['TextDecoder'],
EncodingIndexes: global["encoding-indexes"]
};
}
// For strict environments where `this` inside the global scope
// is `undefined`, take a pure object instead
}(commonjsGlobal || {}));
});
// This is free and unencumbered software released into the public domain.
// See LICENSE.md for more information.
var textEncoding = {
TextEncoder: encoding$1.TextEncoder,
TextDecoder: encoding$1.TextDecoder,
};
const utf8Encoder = new textEncoding.TextEncoder();
const utf8Decoder = new textEncoding.TextDecoder("utf-8", { ignoreBOM: true });
function utf8Encode$2(string) {
return utf8Encoder.encode(string);
}
function utf8DecodeWithoutBOM$1(bytes) {
return utf8Decoder.decode(bytes);
}
var encoding = {
utf8Encode: utf8Encode$2,
utf8DecodeWithoutBOM: utf8DecodeWithoutBOM$1
};
const { isASCIIHex } = infra;
const { utf8Encode: utf8Encode$1 } = encoding;
// https://url.spec.whatwg.org/#percent-encode
function percentEncode(c) {
let hex = c.toString(16).toUpperCase();
if (hex.length === 1) {
hex = `0${hex}`;
}
return `%${hex}`;
}
// https://url.spec.whatwg.org/#percent-decode
function percentDecodeBytes$1(input) {
const output = new Uint8Array(input.byteLength);
let outputIndex = 0;
for (let i = 0; i 0x7E;
}
// https://url.spec.whatwg.org/#fragment-percent-encode-set
const extraFragmentPercentEncodeSet = new Set([32, 34, 60, 62, 96]);
function isFragmentPercentEncode(c) {
return isC0ControlPercentEncode(c) || extraFragmentPercentEncodeSet.has(c);
}
// https://url.spec.whatwg.org/#query-percent-encode-set
const extraQueryPercentEncodeSet = new Set([32, 34, 35, 60, 62]);
function isQueryPercentEncode(c) {
return isC0ControlPercentEncode(c) || extraQueryPercentEncodeSet.has(c);
}
// https://url.spec.whatwg.org/#special-query-percent-encode-set
function isSpecialQueryPercentEncode(c) {
return isQueryPercentEncode(c) || c === 39;
}
// https://url.spec.whatwg.org/#path-percent-encode-set
const extraPathPercentEncodeSet = new Set([63, 96, 123, 125]);
function isPathPercentEncode(c) {
return isQueryPercentEncode(c) || extraPathPercentEncodeSet.has(c);
}
// https://url.spec.whatwg.org/#userinfo-percent-encode-set
const extraUserinfoPercentEncodeSet =
new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);
function isUserinfoPercentEncode(c) {
return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);
}
// https://url.spec.whatwg.org/#component-percent-encode-set
const extraComponentPercentEncodeSet = new Set([36, 37, 38, 43, 44]);
function isComponentPercentEncode(c) {
return isUserinfoPercentEncode(c) || extraComponentPercentEncodeSet.has(c);
}
// https://url.spec.whatwg.org/#application-x-www-form-urlencoded-percent-encode-set
const extraURLEncodedPercentEncodeSet = new Set([33, 39, 40, 41, 126]);
function isURLEncodedPercentEncode$1(c) {
return isComponentPercentEncode(c) || extraURLEncodedPercentEncodeSet.has(c);
}
// https://url.spec.whatwg.org/#code-point-percent-encode-after-encoding
// https://url.spec.whatwg.org/#utf-8-percent-encode
// Assuming encoding is always utf-8 allows us to trim one of the logic branches. TODO: support encoding.
// The "-Internal" variant here has code points as JS strings. The external version used by other files has code points
// as JS numbers, like the rest of the codebase.
function utf8PercentEncodeCodePointInternal(codePoint, percentEncodePredicate) {
const bytes = utf8Encode$1(codePoint);
let output = "";
for (const byte of bytes) {
// Our percentEncodePredicate operates on bytes, not code points, so this is slightly different from the spec.
if (!percentEncodePredicate(byte)) {
output += String.fromCharCode(byte);
} else {
output += percentEncode(byte);
}
}
return output;
}
function utf8PercentEncodeCodePoint(codePoint, percentEncodePredicate) {
return utf8PercentEncodeCodePointInternal(String.fromCodePoint(codePoint), percentEncodePredicate);
}
// https://url.spec.whatwg.org/#string-percent-encode-after-encoding
// https://url.spec.whatwg.org/#string-utf-8-percent-encode
function utf8PercentEncodeString$1(input, percentEncodePredicate, spaceAsPlus = false) {
let output = "";
for (const codePoint of input) {
if (spaceAsPlus && codePoint === " ") {
output += "+";
} else {
output += utf8PercentEncodeCodePointInternal(codePoint, percentEncodePredicate);
}
}
return output;
}
var percentEncoding = {
isC0ControlPercentEncode,
isFragmentPercentEncode,
isQueryPercentEncode,
isSpecialQueryPercentEncode,
isPathPercentEncode,
isUserinfoPercentEncode,
isURLEncodedPercentEncode: isURLEncodedPercentEncode$1,
percentDecodeString,
percentDecodeBytes: percentDecodeBytes$1,
utf8PercentEncodeString: utf8PercentEncodeString$1,
utf8PercentEncodeCodePoint
};
var urlStateMachine = createCommonjsModule(function (module) {
const { utf8DecodeWithoutBOM } = encoding;
const { percentDecodeString, utf8PercentEncodeCodePoint, utf8PercentEncodeString, isC0ControlPercentEncode,
isFragmentPercentEncode, isQueryPercentEncode, isSpecialQueryPercentEncode, isPathPercentEncode,
isUserinfoPercentEncode } = percentEncoding;
const specialSchemes = {
ftp: 21,
file: null,
http: 80,
https: 443,
ws: 80,
wss: 443
};
const failure = Symbol("failure");
function countSymbols(str) {
return [...str].length;
}
function at(input, idx) {
const c = input[idx];
return isNaN(c) ? undefined : String.fromCodePoint(c);
}
function isSingleDot(buffer) {
return buffer === "." || buffer.toLowerCase() === "%2e";
}
function isDoubleDot(buffer) {
buffer = buffer.toLowerCase();
return buffer === ".." || buffer === "%2e." || buffer === ".%2e" || buffer === "%2e%2e";
}
function isWindowsDriveLetterCodePoints(cp1, cp2) {
return infra.isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);
}
function isWindowsDriveLetterString(string) {
return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && (string[1] === ":" || string[1] === "|");
}
function isNormalizedWindowsDriveLetterString(string) {
return string.length === 2 && infra.isASCIIAlpha(string.codePointAt(0)) && string[1] === ":";
}
function containsForbiddenHostCodePoint(string) {
return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|%|\/|:||\?|@|\[|\\|\]|\^|\|/u) !== -1;
}
function containsForbiddenHostCodePointExcludingPercent(string) {
return string.search(/\u0000|\u0009|\u000A|\u000D|\u0020|#|\/|:||\?|@|\[|\\|\]|\^|\|/u) !== -1;
}
function isSpecialScheme(scheme) {
return specialSchemes[scheme] !== undefined;
}
function isSpecial(url) {
return isSpecialScheme(url.scheme);
}
function isNotSpecial(url) {
return !isSpecialScheme(url.scheme);
}
function defaultPort(scheme) {
return specialSchemes[scheme];
}
function parseIPv4Number(input) {
let R = 10;
if (input.length >= 2 && input.charAt(0) === "0" && input.charAt(1).toLowerCase() === "x") {
input = input.substring(2);
R = 16;
} else if (input.length >= 2 && input.charAt(0) === "0") {
input = input.substring(1);
R = 8;
}
if (input === "") {
return 0;
}
let regex = /[^0-7]/u;
if (R === 10) {
regex = /[^0-9]/u;
}
if (R === 16) {
regex = /[^0-9A-Fa-f]/u;
}
if (regex.test(input)) {
return failure;
}
return parseInt(input, R);
}
function parseIPv4(input) {
const parts = input.split(".");
if (parts[parts.length - 1] === "") {
if (parts.length > 1) {
parts.pop();
}
}
if (parts.length > 4) {
return input;
}
const numbers = [];
for (const part of parts) {
if (part === "") {
return input;
}
const n = parseIPv4Number(part);
if (n === failure) {
return input;
}
numbers.push(n);
}
for (let i = 0; i 255) {
return failure;
}
}
if (numbers[numbers.length - 1] >= 256 ** (5 - numbers.length)) {
return failure;
}
let ipv4 = numbers.pop();
let counter = 0;
for (const n of numbers) {
ipv4 += n * 256 ** (3 - counter);
++counter;
}
return ipv4;
}
function serializeIPv4(address) {
let output = "";
let n = address;
for (let i = 1; i c.codePointAt(0));
if (input[pointer] === 58) {
if (input[pointer + 1] !== 58) {
return failure;
}
pointer += 2;
++pieceIndex;
compress = pieceIndex;
}
while (pointer 6) {
return failure;
}
let numbersSeen = 0;
while (input[pointer] !== undefined) {
let ipv4Piece = null;
if (numbersSeen > 0) {
if (input[pointer] === 46 && numbersSeen 255) {
return failure;
}
++pointer;
}
address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;
++numbersSeen;
if (numbersSeen === 2 || numbersSeen === 4) {
++pieceIndex;
}
}
if (numbersSeen !== 4) {
return failure;
}
break;
} else if (input[pointer] === 58) {
++pointer;
if (input[pointer] === undefined) {
return failure;
}
} else if (input[pointer] !== undefined) {
return failure;
}
address[pieceIndex] = value;
++pieceIndex;
}
if (compress !== null) {
let swaps = pieceIndex - compress;
pieceIndex = 7;
while (pieceIndex !== 0 && swaps > 0) {
const temp = address[compress + swaps - 1];
address[compress + swaps - 1] = address[pieceIndex];
address[pieceIndex] = temp;
--pieceIndex;
--swaps;
}
} else if (compress === null && pieceIndex !== 8) {
return failure;
}
return address;
}
function serializeIPv6(address) {
let output = "";
const compress = findLongestZeroSequence(address);
let ignore0 = false;
for (let pieceIndex = 0; pieceIndex 1
let currStart = null;
let currLen = 0;
for (let i = 0; i maxLen) {
maxIdx = currStart;
maxLen = currLen;
}
currStart = null;
currLen = 0;
} else {
if (currStart === null) {
currStart = i;
}
++currLen;
}
}
// if trailing zeros
if (currLen > maxLen) {
return currStart;
}
return maxIdx;
}
function serializeHost(host) {
if (typeof host === "number") {
return serializeIPv4(host);
}
// IPv6 serializer
if (host instanceof Array) {
return `[${serializeIPv6(host)}]`;
}
return host;
}
function domainToASCII(domain, beStrict = false) {
const result = tr46.toASCII(domain, {
checkBidi: true,
checkHyphens: false,
checkJoiners: true,
useSTD3ASCIIRules: beStrict,
verifyDNSLength: beStrict
});
if (result === null || result === "") {
return failure;
}
return result;
}
function trimControlChars(url) {
return url.replace(/^[\u0000-\u001F\u0020]+|[\u0000-\u001F\u0020]+$/ug, "");
}
function trimTabAndNewline(url) {
return url.replace(/\u0009|\u000A|\u000D/ug, "");
}
function shortenPath(url) {
const { path } = url;
if (path.length === 0) {
return;
}
if (url.scheme === "file" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {
return;
}
path.pop();
}
function includesCredentials(url) {
return url.username !== "" || url.password !== "";
}
function cannotHaveAUsernamePasswordPort(url) {
return url.host === null || url.host === "" || url.cannotBeABaseURL || url.scheme === "file";
}
function isNormalizedWindowsDriveLetter(string) {
return /^[A-Za-z]:$/u.test(string);
}
function URLStateMachine(input, base, encodingOverride, url, stateOverride) {
this.pointer = 0;
this.input = input;
this.base = base || null;
this.encodingOverride = encodingOverride || "utf-8";
this.stateOverride = stateOverride;
this.url = url;
this.failure = false;
this.parseError = false;
if (!this.url) {
this.url = {
scheme: "",
username: "",
password: "",
host: null,
port: null,
path: [],
query: null,
fragment: null,
cannotBeABaseURL: false
};
const res = trimControlChars(this.input);
if (res !== this.input) {
this.parseError = true;
}
this.input = res;
}
const res = trimTabAndNewline(this.input);
if (res !== this.input) {
this.parseError = true;
}
this.input = res;
this.state = stateOverride || "scheme start";
this.buffer = "";
this.atFlag = false;
this.arrFlag = false;
this.passwordTokenSeenFlag = false;
this.input = Array.from(this.input, c => c.codePointAt(0));
for (; this.pointer 2 ** 16 - 1) {
this.parseError = true;
return failure;
}
this.url.port = port === defaultPort(this.url.scheme) ? null : port;
this.buffer = "";
}
if (this.stateOverride) {
return false;
}
this.state = "path start";
--this.pointer;
} else {
this.parseError = true;
return failure;
}
return true;
};
const fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);
function startsWithWindowsDriveLetter(input, pointer) {
const length = input.length - pointer;
return length >= 2 &&
isWindowsDriveLetterCodePoints(input[pointer], input[pointer + 1]) &&
(length === 2 || fileOtherwiseCodePoints.has(input[pointer + 2]));
}
URLStateMachine.prototype["parse file"] = function parseFile(c) {
this.url.scheme = "file";
this.url.host = "";
if (c === 47 || c === 92) {
if (c === 92) {
this.parseError = true;
}
this.state = "file slash";
} else if (this.base !== null && this.base.scheme === "file") {
this.url.host = this.base.host;
this.url.path = this.base.path.slice();
this.url.query = this.base.query;
if (c === 63) {
this.url.query = "";
this.state = "query";
} else if (c === 35) {
this.url.fragment = "";
this.state = "fragment";
} else if (!isNaN(c)) {
this.url.query = null;
if (!startsWithWindowsDriveLetter(this.input, this.pointer)) {
shortenPath(this.url);
} else {
this.parseError = true;
this.url.path = [];
}
this.state = "path";
--this.pointer;
}
} else {
this.state = "path";
--this.pointer;
}
return true;
};
URLStateMachine.prototype["parse file slash"] = function parseFileSlash(c) {
if (c === 47 || c === 92) {
if (c === 92) {
this.parseError = true;
}
this.state = "file host";
} else {
if (this.base !== null && this.base.scheme === "file") {
if (!startsWithWindowsDriveLetter(this.input, this.pointer) &&
isNormalizedWindowsDriveLetterString(this.base.path[0])) {
this.url.path.push(this.base.path[0]);
}
this.url.host = this.base.host;
}
this.state = "path";
--this.pointer;
}
return true;
};
URLStateMachine.prototype["parse file host"] = function parseFileHost(c, cStr) {
if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {
--this.pointer;
if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {
this.parseError = true;
this.state = "path";
} else if (this.buffer === "") {
this.url.host = "";
if (this.stateOverride) {
return false;
}
this.state = "path start";
} else {
let host = parseHost(this.buffer, isNotSpecial(this.url));
if (host === failure) {
return failure;
}
if (host === "localhost") {
host = "";
}
this.url.host = host;
if (this.stateOverride) {
return false;
}
this.buffer = "";
this.state = "path start";
}
} else {
this.buffer += cStr;
}
return true;
};
URLStateMachine.prototype["parse path start"] = function parsePathStart(c) {
if (isSpecial(this.url)) {
if (c === 92) {
this.parseError = true;
}
this.state = "path";
if (c !== 47 && c !== 92) {
--this.pointer;
}
} else if (!this.stateOverride && c === 63) {
this.url.query = "";
this.state = "query";
} else if (!this.stateOverride && c === 35) {
this.url.fragment = "";
this.state = "fragment";
} else if (c !== undefined) {
this.state = "path";
if (c !== 47) {
--this.pointer;
}
} else if (this.stateOverride && this.url.host === null) {
this.url.path.push("");
}
return true;
};
URLStateMachine.prototype["parse path"] = function parsePath(c) {
if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||
(!this.stateOverride && (c === 63 || c === 35))) {
if (isSpecial(this.url) && c === 92) {
this.parseError = true;
}
if (isDoubleDot(this.buffer)) {
shortenPath(this.url);
if (c !== 47 && !(isSpecial(this.url) && c === 92)) {
this.url.path.push("");
}
} else if (isSingleDot(this.buffer) && c !== 47 &&
!(isSpecial(this.url) && c === 92)) {
this.url.path.push("");
} else if (!isSingleDot(this.buffer)) {
if (this.url.scheme === "file" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {
this.buffer = `${this.buffer[0]}:`;
}
this.url.path.push(this.buffer);
}
this.buffer = "";
if (c === 63) {
this.url.query = "";
this.state = "query";
}
if (c === 35) {
this.url.fragment = "";
this.state = "fragment";
}
} else {
// TODO: If c is not a URL code point and not "%", parse error.
if (c === 37 &&
(!infra.isASCIIHex(this.input[this.pointer + 1]) ||
!infra.isASCIIHex(this.input[this.pointer + 2]))) {
this.parseError = true;
}
this.buffer += utf8PercentEncodeCodePoint(c, isPathPercentEncode);
}
return true;
};
URLStateMachine.prototype["parse cannot-be-a-base-URL path"] = function parseCannotBeABaseURLPath(c) {
if (c === 63) {
this.url.query = "";
this.state = "query";
} else if (c === 35) {
this.url.fragment = "";
this.state = "fragment";
} else {
// TODO: Add: not a URL code point
if (!isNaN(c) && c !== 37) {
this.parseError = true;
}
if (c === 37 &&
(!infra.isASCIIHex(this.input[this.pointer + 1]) ||
!infra.isASCIIHex(this.input[this.pointer + 2]))) {
this.parseError = true;
}
if (!isNaN(c)) {
this.url.path[0] += utf8PercentEncodeCodePoint(c, isC0ControlPercentEncode);
}
}
return true;
};
URLStateMachine.prototype["parse query"] = function parseQuery(c, cStr) {
if (!isSpecial(this.url) || this.url.scheme === "ws" || this.url.scheme === "wss") {
this.encodingOverride = "utf-8";
}
if ((!this.stateOverride && c === 35) || isNaN(c)) {
const queryPercentEncodePredicate = isSpecial(this.url) ? isSpecialQueryPercentEncode : isQueryPercentEncode;
this.url.query += utf8PercentEncodeString(this.buffer, queryPercentEncodePredicate);
this.buffer = "";
if (c === 35) {
this.url.fragment = "";
this.state = "fragment";
}
} else if (!isNaN(c)) {
// TODO: If c is not a URL code point and not "%", parse error.
if (c === 37 &&
(!infra.isASCIIHex(this.input[this.pointer + 1]) ||
!infra.isASCIIHex(this.input[this.pointer + 2]))) {
this.parseError = true;
}
this.buffer += cStr;
}
return true;
};
URLStateMachine.prototype["parse fragment"] = function parseFragment(c) {
if (!isNaN(c)) {
// TODO: If c is not a URL code point and not "%", parse error.
if (c === 37 &&
(!infra.isASCIIHex(this.input[this.pointer + 1]) ||
!infra.isASCIIHex(this.input[this.pointer + 2]))) {
this.parseError = true;
}
this.url.fragment += utf8PercentEncodeCodePoint(c, isFragmentPercentEncode);
}
return true;
};
function serializeURL(url, excludeFragment) {
let output = `${url.scheme}:`;
if (url.host !== null) {
output += "//";
if (url.username !== "" || url.password !== "") {
output += url.username;
if (url.password !== "") {
output += `:${url.password}`;
}
output += "@";
}
output += serializeHost(url.host);
if (url.port !== null) {
output += `:${url.port}`;
}
}
if (url.cannotBeABaseURL) {
output += url.path[0];
} else {
if (url.host === null && url.path.length > 1 && url.path[0] === "") {
output += "/.";
}
for (const segment of url.path) {
output += `/${segment}`;
}
}
if (url.query !== null) {
output += `?${url.query}`;
}
if (!excludeFragment && url.fragment !== null) {
output += `#${url.fragment}`;
}
return output;
}
function serializeOrigin(tuple) {
let result = `${tuple.scheme}://`;
result += serializeHost(tuple.host);
if (tuple.port !== null) {
result += `:${tuple.port}`;
}
return result;
}
module.exports.serializeURL = serializeURL;
module.exports.serializeURLOrigin = function (url) {
// https://url.spec.whatwg.org/#concept-url-origin
switch (url.scheme) {
case "blob":
try {
return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));
} catch (e) {
// serializing an opaque origin returns "null"
return "null";
}
case "ftp":
case "http":
case "https":
case "ws":
case "wss":
return serializeOrigin({
scheme: url.scheme,
host: url.host,
port: url.port
});
case "file":
// The spec says:
// > Unfortunate as it is, this is left as an exercise to the reader. When in doubt, return a new opaque origin.
// Browsers tested so far:
// - Chrome says "file://", but treats file: URLs as cross-origin for most (all?) purposes; see e.g.
// https://bugs.chromium.org/p/chromium/issues/detail?id=37586
// - Firefox says "null", but treats file: URLs as same-origin sometimes based on directory stuff; see
// https://developer.mozilla.org/en-US/docs/Archive/Misc_top_level/Same-origin_policy_for_file:_URIs
return "null";
default:
// serializing an opaque origin returns "null"
return "null";
}
};
module.exports.basicURLParse = function (input, options) {
if (options === undefined) {
options = {};
}
const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);
if (usm.failure) {
return null;
}
return usm.url;
};
module.exports.setTheUsername = function (url, username) {
url.username = utf8PercentEncodeString(username, isUserinfoPercentEncode);
};
module.exports.setThePassword = function (url, password) {
url.password = utf8PercentEncodeString(password, isUserinfoPercentEncode);
};
module.exports.serializeHost = serializeHost;
module.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;
module.exports.serializeInteger = function (integer) {
return String(integer);
};
module.exports.parseURL = function (input, options) {
if (options === undefined) {
options = {};
}
// We don't handle blobs, so this just delegates:
return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });
};
});
const { utf8Encode, utf8DecodeWithoutBOM } = encoding;
const { percentDecodeBytes, utf8PercentEncodeString, isURLEncodedPercentEncode } = percentEncoding;
// https://url.spec.whatwg.org/#concept-urlencoded-parser
function parseUrlencoded(input) {
const sequences = strictlySplitByteSequence(input, 38);
const output = [];
for (const bytes of sequences) {
if (bytes.length === 0) {
continue;
}
let name, value;
const indexOfEqual = bytes.indexOf(61);
if (indexOfEqual >= 0) {
name = bytes.slice(0, indexOfEqual);
value = bytes.slice(indexOfEqual + 1);
} else {
name = bytes;
value = new Uint8Array(0);
}
name = replaceByteInByteSequence(name, 0x2B, 0x20);
value = replaceByteInByteSequence(value, 0x2B, 0x20);
const nameString = utf8DecodeWithoutBOM(percentDecodeBytes(name));
const valueString = utf8DecodeWithoutBOM(percentDecodeBytes(value));
output.push([nameString, valueString]);
}
return output;
}
// https://url.spec.whatwg.org/#concept-urlencoded-string-parser
function parseUrlencodedString(input) {
return parseUrlencoded(utf8Encode(input));
}
// https://url.spec.whatwg.org/#concept-urlencoded-serializer
function serializeUrlencoded(tuples, encodingOverride = undefined) {
let encoding = "utf-8";
if (encodingOverride !== undefined) {
// TODO "get the output encoding", i.e. handle encoding labels vs. names.
encoding = encodingOverride;
}
let output = "";
for (const [i, tuple] of tuples.entries()) {
// TODO: handle encoding override
const name = utf8PercentEncodeString(tuple[0], isURLEncodedPercentEncode, true);
let value = tuple[1];
if (tuple.length > 2 && tuple[2] !== undefined) {
if (tuple[2] === "hidden" && name === "_charset_") {
value = encoding;
} else if (tuple[2] === "file") {
// value is a File object
value = value.name;
}
}
value = utf8PercentEncodeString(value, isURLEncodedPercentEncode, true);
if (i !== 0) {
output += "&";
}
output += `${name}=${value}`;
}
return output;
}
function strictlySplitByteSequence(buf, cp) {
const list = [];
let last = 0;
let i = buf.indexOf(cp);
while (i >= 0) {
list.push(buf.slice(last, i));
last = i + 1;
i = buf.indexOf(cp, last);
}
if (last !== buf.length) {
list.push(buf.slice(last));
}
return list;
}
function replaceByteInByteSequence(buf, from, to) {
let i = buf.indexOf(from);
while (i >= 0) {
buf[i] = to;
i = buf.indexOf(from, i + 1);
}
return buf;
}
var urlencoded = {
parseUrlencodedString,
serializeUrlencoded
};
var convert$1 = (value, { context = "The provided value" } = {}) => {
if (typeof value !== "function") {
throw new TypeError(context + " is not a function");
}
function invokeTheCallbackFunction(...args) {
if (new.target !== undefined) {
throw new Error("Internal error: invokeTheCallbackFunction is not a constructor");
}
const thisArg = utils$1.tryWrapperForImpl(this);
let callResult;
for (let i = 0; i {
for (let i = 0; i {
if (a[0] b[0]) {
return 1;
}
return 0;
});
this._updateSteps();
}
[Symbol.iterator]() {
return this._list[Symbol.iterator]();
}
toString() {
return urlencoded.serializeUrlencoded(this._list);
}
};
var URLSearchParamsImpl_1 = {
implementation: implementation$1
};
var URLSearchParams$1 = createCommonjsModule(function (module, exports) {
const implSymbol = utils$1.implSymbol;
const ctorRegistrySymbol = utils$1.ctorRegistrySymbol;
const interfaceName = "URLSearchParams";
const IteratorPrototype = Object.create(utils$1.IteratorPrototype, {
next: {
value: function next() {
const internal = this && this[utils$1.iterInternalSymbol];
if (!internal) {
throw new TypeError("next() called on a value that is not an iterator prototype object");
}
const { target, kind, index } = internal;
const values = Array.from(target[implSymbol]);
const len = values.length;
if (index >= len) {
return { value: undefined, done: true };
}
const pair = values[index];
internal.index = index + 1;
return utils$1.iteratorResult(pair.map(utils$1.tryWrapperForImpl), kind);
},
writable: true,
enumerable: true,
configurable: true
},
[Symbol.toStringTag]: {
value: "URLSearchParams Iterator",
configurable: true
}
});
exports.is = value => {
return utils$1.isObject(value) && utils$1.hasOwn(value, implSymbol) && value[implSymbol] instanceof URLSearchParamsImpl_1.implementation;
};
exports.isImpl = value => {
return utils$1.isObject(value) && value instanceof URLSearchParamsImpl_1.implementation;
};
exports.convert = (value, { context = "The provided value" } = {}) => {
if (exports.is(value)) {
return utils$1.implForWrapper(value);
}
throw new TypeError(`${context} is not of type 'URLSearchParams'.`);
};
exports.createDefaultIterator = (target, kind) => {
const iterator = Object.create(IteratorPrototype);
Object.defineProperty(iterator, utils$1.iterInternalSymbol, {
value: { target, kind, index: 0 },
configurable: true
});
return iterator;
};
function makeWrapper(globalObject) {
if (globalObject[ctorRegistrySymbol] === undefined) {
throw new Error("Internal error: invalid global object");
}
const ctor = globalObject[ctorRegistrySymbol]["URLSearchParams"];
if (ctor === undefined) {
throw new Error("Internal error: constructor URLSearchParams is not installed on the passed global object");
}
return Object.create(ctor.prototype);
}
exports.create = (globalObject, constructorArgs, privateData) => {
const wrapper = makeWrapper(globalObject);
return exports.setup(wrapper, globalObject, constructorArgs, privateData);
};
exports.createImpl = (globalObject, constructorArgs, privateData) => {
const wrapper = exports.create(globalObject, constructorArgs, privateData);
return utils$1.implForWrapper(wrapper);
};
exports._internalSetup = (wrapper, globalObject) => {};
exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {
privateData.wrapper = wrapper;
exports._internalSetup(wrapper, globalObject);
Object.defineProperty(wrapper, implSymbol, {
value: new URLSearchParamsImpl_1.implementation(globalObject, constructorArgs, privateData),
configurable: true
});
wrapper[implSymbol][utils$1.wrapperSymbol] = wrapper;
if (URLSearchParamsImpl_1.init) {
URLSearchParamsImpl_1.init(wrapper[implSymbol]);
}
return wrapper;
};
exports.new = globalObject => {
const wrapper = makeWrapper(globalObject);
exports._internalSetup(wrapper, globalObject);
Object.defineProperty(wrapper, implSymbol, {
value: Object.create(URLSearchParamsImpl_1.implementation.prototype),
configurable: true
});
wrapper[implSymbol][utils$1.wrapperSymbol] = wrapper;
if (URLSearchParamsImpl_1.init) {
URLSearchParamsImpl_1.init(wrapper[implSymbol]);
}
return wrapper[implSymbol];
};
const exposed = new Set(["Window", "Worker"]);
exports.install = (globalObject, globalNames) => {
if (!globalNames.some(globalName => exposed.has(globalName))) {
return;
}
class URLSearchParams {
constructor() {
const args = [];
{
let curArg = arguments[0];
if (curArg !== undefined) {
if (utils$1.isObject(curArg)) {
if (curArg[Symbol.iterator] !== undefined) {
if (!utils$1.isObject(curArg)) {
throw new TypeError(
"Failed to construct 'URLSearchParams': parameter 1" + " sequence" + " is not an iterable object."
);
} else {
const V = [];
const tmp = curArg;
for (let nextItem of tmp) {
if (!utils$1.isObject(nextItem)) {
throw new TypeError(
"Failed to construct 'URLSearchParams': parameter 1" +
" sequence" +
"'s element" +
" is not an iterable object."
);
} else {
const V = [];
const tmp = nextItem;
for (let nextItem of tmp) {
nextItem = lib$1["USVString"](nextItem, {
context:
"Failed to construct 'URLSearchParams': parameter 1" +
" sequence" +
"'s element" +
"'s element"
});
V.push(nextItem);
}
nextItem = V;
}
V.push(nextItem);
}
curArg = V;
}
} else {
if (!utils$1.isObject(curArg)) {
throw new TypeError(
"Failed to construct 'URLSearchParams': parameter 1" + " record" + " is not an object."
);
} else {
const result = Object.create(null);
for (const key of Reflect.ownKeys(curArg)) {
const desc = Object.getOwnPropertyDescriptor(curArg, key);
if (desc && desc.enumerable) {
let typedKey = key;
typedKey = lib$1["USVString"](typedKey, {
context: "Failed to construct 'URLSearchParams': parameter 1" + " record" + "'s key"
});
let typedValue = curArg[key];
typedValue = lib$1["USVString"](typedValue, {
context: "Failed to construct 'URLSearchParams': parameter 1" + " record" + "'s value"
});
result[typedKey] = typedValue;
}
}
curArg = result;
}
}
} else {
curArg = lib$1["USVString"](curArg, {
context: "Failed to construct 'URLSearchParams': parameter 1"
});
}
} else {
curArg = "";
}
args.push(curArg);
}
return exports.setup(Object.create(new.target.prototype), globalObject, args);
}
append(name, value) {
const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) {
throw new TypeError("'append' called on an object that is not a valid instance of URLSearchParams.");
}
if (arguments.length {
return utils$1.isObject(value) && utils$1.hasOwn(value, implSymbol) && value[implSymbol] instanceof URLImpl_1.implementation;
};
exports.isImpl = value => {
return utils$1.isObject(value) && value instanceof URLImpl_1.implementation;
};
exports.convert = (value, { context = "The provided value" } = {}) => {
if (exports.is(value)) {
return utils$1.implForWrapper(value);
}
throw new TypeError(`${context} is not of type 'URL'.`);
};
function makeWrapper(globalObject) {
if (globalObject[ctorRegistrySymbol] === undefined) {
throw new Error("Internal error: invalid global object");
}
const ctor = globalObject[ctorRegistrySymbol]["URL"];
if (ctor === undefined) {
throw new Error("Internal error: constructor URL is not installed on the passed global object");
}
return Object.create(ctor.prototype);
}
exports.create = (globalObject, constructorArgs, privateData) => {
const wrapper = makeWrapper(globalObject);
return exports.setup(wrapper, globalObject, constructorArgs, privateData);
};
exports.createImpl = (globalObject, constructorArgs, privateData) => {
const wrapper = exports.create(globalObject, constructorArgs, privateData);
return utils$1.implForWrapper(wrapper);
};
exports._internalSetup = (wrapper, globalObject) => {};
exports.setup = (wrapper, globalObject, constructorArgs = [], privateData = {}) => {
privateData.wrapper = wrapper;
exports._internalSetup(wrapper, globalObject);
Object.defineProperty(wrapper, implSymbol, {
value: new URLImpl_1.implementation(globalObject, constructorArgs, privateData),
configurable: true
});
wrapper[implSymbol][utils$1.wrapperSymbol] = wrapper;
if (URLImpl_1.init) {
URLImpl_1.init(wrapper[implSymbol]);
}
return wrapper;
};
exports.new = globalObject => {
const wrapper = makeWrapper(globalObject);
exports._internalSetup(wrapper, globalObject);
Object.defineProperty(wrapper, implSymbol, {
value: Object.create(URLImpl_1.implementation.prototype),
configurable: true
});
wrapper[implSymbol][utils$1.wrapperSymbol] = wrapper;
if (URLImpl_1.init) {
URLImpl_1.init(wrapper[implSymbol]);
}
return wrapper[implSymbol];
};
const exposed = new Set(["Window", "Worker"]);
exports.install = (globalObject, globalNames) => {
if (!globalNames.some(globalName => exposed.has(globalName))) {
return;
}
class URL {
constructor(url) {
if (arguments.length {
return utils$1.tryWrapperForImpl(esValue[implSymbol]["searchParams"]);
});
}
get hash() {
const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) {
throw new TypeError("'get hash' called on an object that is not a valid instance of URL.");
}
return esValue[implSymbol]["hash"];
}
set hash(V) {
const esValue = this !== null && this !== undefined ? this : globalObject;
if (!exports.is(esValue)) {
throw new TypeError("'set hash' called on an object that is not a valid instance of URL.");
}
V = lib$1["USVString"](V, { context: "Failed to set the 'hash' property on 'URL': The provided value" });
esValue[implSymbol]["hash"] = V;
}
}
Object.defineProperties(URL.prototype, {
toJSON: { enumerable: true },
href: { enumerable: true },
toString: { enumerable: true },
origin: { enumerable: true },
protocol: { enumerable: true },
username: { enumerable: true },
password: { enumerable: true },
host: { enumerable: true },
hostname: { enumerable: true },
port: { enumerable: true },
pathname: { enumerable: true },
search: { enumerable: true },
searchParams: { enumerable: true },
hash: { enumerable: true },
[Symbol.toStringTag]: { value: "URL", configurable: true }
});
if (globalObject[ctorRegistrySymbol] === undefined) {
globalObject[ctorRegistrySymbol] = Object.create(null);
}
globalObject[ctorRegistrySymbol][interfaceName] = URL;
Object.defineProperty(globalObject, interfaceName, {
configurable: true,
writable: true,
value: URL
});
if (globalNames.includes("Window")) {
Object.defineProperty(globalObject, "webkitURL", {
configurable: true,
writable: true,
value: URL
});
}
};
});
var URL_1$1 = URL$1;
var URLSearchParams_1 = URLSearchParams$1;
var webidl2jsWrapper = {
URL: URL_1$1,
URLSearchParams: URLSearchParams_1
};
const { URL, URLSearchParams } = webidl2jsWrapper;
const sharedGlobalObject = {};
URL.install(sharedGlobalObject, ["Window"]);
URLSearchParams.install(sharedGlobalObject, ["Window"]);
var URL_1 = sharedGlobalObject.URL;
sharedGlobalObject.URLSearchParams;
urlStateMachine.parseURL;
urlStateMachine.basicURLParse;
urlStateMachine.serializeURL;
urlStateMachine.serializeHost;
urlStateMachine.serializeInteger;
urlStateMachine.serializeURLOrigin;
urlStateMachine.setTheUsername;
urlStateMachine.setThePassword;
urlStateMachine.cannotHaveAUsernamePasswordPort;
// This alphabet uses `A-Za-z0-9_-` symbols.
// The order of characters is optimized for better gzip and brotli compression.
// References to the same file (works both for gzip and brotli):
// `'use`, `andom`, and `rict'`
// References to the brotli default dictionary:
// `-26T`, `1983`, `40px`, `75px`, `bush`, `jack`, `mind`, `very`, and `wolf`
let urlAlphabet =
'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict';
let customAlphabet = (alphabet, defaultSize = 21) => {
return (size = defaultSize) => {
let id = '';
// A compact alternative for `for (var i = 0; i {
let id = '';
// A compact alternative for `for (var i = 0; i 0
)
}
startWith (string, start) {
if (!string) return false
return string.substr(0, start.length) === start
}
getAnnotationURL (sourceMapString) {
return sourceMapString
.match(/\/\*\s*# sourceMappingURL=(.*)\s*\*\//)[1]
.trim()
}
loadAnnotation (css) {
let annotations = css.match(/\/\*\s*# sourceMappingURL=.*\s*\*\//gm);
if (annotations && annotations.length > 0) {
// Locate the last sourceMappingURL to avoid picking up
// sourceMappingURLs from comments, strings, etc.
let lastAnnotation = annotations[annotations.length - 1];
if (lastAnnotation) {
this.annotation = this.getAnnotationURL(lastAnnotation);
}
}
}
decodeInline (text) {
let baseCharsetUri = /^data:application\/json;charset=utf-?8;base64,/;
let baseUri = /^data:application\/json;base64,/;
let charsetUri = /^data:application\/json;charset=utf-?8,/;
let uri = /^data:application\/json,/;
if (charsetUri.test(text) || uri.test(text)) {
return decodeURIComponent(text.substr(RegExp.lastMatch.length))
}
if (baseCharsetUri.test(text) || baseUri.test(text)) {
return fromBase64(text.substr(RegExp.lastMatch.length))
}
let encoding = text.match(/data:application\/json;([^,]+),/)[1];
throw new Error('Unsupported source map encoding ' + encoding)
}
loadFile (path) {
this.root = dirname(path);
if (void(path)) {
this.mapFile = path;
return readFileSync(path, 'utf-8').toString().trim()
}
}
loadMap (file, prev) {
if (prev === false) return false
if (prev) {
if (typeof prev === 'string') {
return prev
} else if (typeof prev === 'function') {
let prevPath = prev(file);
if (prevPath) {
let map = this.loadFile(prevPath);
if (!map) {
throw new Error(
'Unable to load previous source map: ' + prevPath.toString()
)
}
return map
}
} else if (prev instanceof sourceMap.SourceMapConsumer) {
return sourceMap.SourceMapGenerator.fromSourceMap(prev).toString()
} else if (prev instanceof sourceMap.SourceMapGenerator) {
return prev.toString()
} else if (this.isMap(prev)) {
return JSON.stringify(prev)
} else {
throw new Error(
'Unsupported previous source map format: ' + prev.toString()
)
}
} else if (this.inline) {
return this.decodeInline(this.annotation)
} else if (this.annotation) {
let map = this.annotation;
if (file) map = join(dirname(file), map);
return this.loadFile(map)
}
}
isMap (map) {
if (typeof map !== 'object') return false
return (
typeof map.mappings === 'string' ||
typeof map._mappings === 'string' ||
Array.isArray(map.sections)
)
}
}
var previousMap = PreviousMap;
PreviousMap.default = PreviousMap;
var require$$2 = nonSecure;
let { fileURLToPath, pathToFileURL } = url;
let { resolve: resolve$1, isAbsolute } = require$$1;
let { nanoid } = require$$2;
let fromOffsetCache = Symbol('fromOffset cache');
class Input {
constructor (css, opts = {}) {
if (
css === null ||
typeof css === 'undefined' ||
(typeof css === 'object' && !css.toString)
) {
throw new Error(`PostCSS received ${css} instead of CSS string`)
}
this.css = css.toString();
if (this.css[0] === '\uFEFF' || this.css[0] === '\uFFFE') {
this.hasBOM = true;
this.css = this.css.slice(1);
} else {
this.hasBOM = false;
}
if (opts.from) {
if (/^\w+:\/\//.test(opts.from) || isAbsolute(opts.from)) {
this.file = opts.from;
} else {
this.file = resolve$1(opts.from);
}
}
let map = new previousMap(this.css, opts);
if (map.text) {
this.map = map;
let file = map.consumer().file;
if (!this.file && file) this.file = this.mapResolve(file);
}
if (!this.file) {
this.id = '';
}
if (this.map) this.map.file = this.from;
}
fromOffset (offset) {
let lastLine, lineToIndex;
if (!this[fromOffsetCache]) {
let lines = this.css.split('\n');
lineToIndex = new Array(lines.length);
let prevIndex = 0;
for (let i = 0, l = lines.length; i = lastLine) {
min = lineToIndex.length - 1;
} else {
let max = lineToIndex.length - 2;
let mid;
while (min > 1);
if (offset = lineToIndex[mid + 1]) {
min = mid + 1;
} else {
min = mid;
break
}
}
}
return {
line: min + 1,
col: offset - lineToIndex[min] + 1
}
}
error (message, line, column, opts = {}) {
let result;
if (!column) {
let pos = this.fromOffset(line);
line = pos.line;
column = pos.col;
}
let origin = this.origin(line, column);
if (origin) {
result = new cssSyntaxError(
message,
origin.line,
origin.column,
origin.source,
origin.file,
opts.plugin
);
} else {
result = new cssSyntaxError(
message,
line,
column,
this.css,
this.file,
opts.plugin
);
}
result.input = { line, column, source: this.css };
if (this.file) {
result.input.url = pathToFileURL(this.file).toString();
result.input.file = this.file;
}
return result
}
origin (line, column) {
if (!this.map) return false
let consumer = this.map.consumer();
let from = consumer.originalPositionFor({ line, column });
if (!from.source) return false
let fromUrl;
if (isAbsolute(from.source)) {
fromUrl = pathToFileURL(from.source);
} else {
fromUrl = new URL_1(
from.source,
this.map.consumer().sourceRoot || pathToFileURL(this.map.mapFile)
);
}
let result = {
url: fromUrl.toString(),
line: from.line,
column: from.column
};
if (fromUrl.protocol === 'file:') {
result.file = fileURLToPath(fromUrl);
}
let source = consumer.sourceContentFor(from.source);
if (source) result.source = source;
return result
}
mapResolve (file) {
if (/^\w+:\/\//.test(file)) {
return file
}
return resolve$1(this.map.consumer().sourceRoot || this.map.root || '.', file)
}
get from () {
return this.file || this.id
}
toJSON () {
let json = {};
for (let name of ['hasBOM', 'css', 'file', 'id']) {
if (this[name] != null) {
json[name] = this[name];
}
}
if (this.map) {
json.map = { ...this.map };
if (json.map.consumerCache) {
json.map.consumerCache = undefined;
}
}
return json
}
}
var input = Input;
Input.default = Input;
if (path$2 && path$2.registerInput) {
path$2.registerInput(Input);
}
function parse$4 (css, opts) {
let input$1 = new input(css, opts);
let parser$1 = new parser(input$1);
try {
parser$1.parse();
} catch (e) {
if (process.env.NODE_ENV !== 'production') {
if (e.name === 'CssSyntaxError' && opts && opts.from) {
if (/\.scss$/i.test(opts.from)) {
e.message +=
'\nYou tried to parse SCSS with ' +
'the standard CSS parser; ' +
'try again with the postcss-scss parser';
} else if (/\.sass/i.test(opts.from)) {
e.message +=
'\nYou tried to parse Sass with ' +
'the standard CSS parser; ' +
'try again with the postcss-sass parser';
} else if (/\.less$/i.test(opts.from)) {
e.message +=
'\nYou tried to parse Less with ' +
'the standard CSS parser; ' +
'try again with the postcss-less parser';
}
}
}
throw e
}
return parser$1.root
}
var parse_1$1 = parse$4;
parse$4.default = parse$4;
container.registerParse(parse$4);
let { isClean } = symbols;
const TYPE_TO_CLASS_NAME = {
root: 'Root',
atrule: 'AtRule',
rule: 'Rule',
decl: 'Declaration',
comment: 'Comment'
};
const PLUGIN_PROPS = {
postcssPlugin: true,
prepare: true,
Once: true,
Root: true,
Declaration: true,
Rule: true,
AtRule: true,
Comment: true,
DeclarationExit: true,
RuleExit: true,
AtRuleExit: true,
CommentExit: true,
RootExit: true,
OnceExit: true
};
const NOT_VISITORS = {
postcssPlugin: true,
prepare: true,
Once: true
};
const CHILDREN = 0;
function isPromise (obj) {
return typeof obj === 'object' && typeof obj.then === 'function'
}
function getEvents (node) {
let key = false;
let type = TYPE_TO_CLASS_NAME[node.type];
if (node.type === 'decl') {
key = node.prop.toLowerCase();
} else if (node.type === 'atrule') {
key = node.name.toLowerCase();
}
if (key && node.append) {
return [
type,
type + '-' + key,
CHILDREN,
type + 'Exit',
type + 'Exit-' + key
]
} else if (key) {
return [type, type + '-' + key, type + 'Exit', type + 'Exit-' + key]
} else if (node.append) {
return [type, CHILDREN, type + 'Exit']
} else {
return [type, type + 'Exit']
}
}
function toStack (node) {
let events;
if (node.type === 'root') {
events = ['Root', CHILDREN, 'RootExit'];
} else {
events = getEvents(node);
}
return {
node,
events,
eventIndex: 0,
visitors: [],
visitorIndex: 0,
iterator: 0
}
}
function cleanMarks (node) {
node[isClean] = false;
if (node.nodes) node.nodes.forEach(i => cleanMarks(i));
return node
}
let postcss$1 = {};
class LazyResult {
constructor (processor, css, opts) {
this.stringified = false;
this.processed = false;
let root;
if (typeof css === 'object' && css !== null && css.type === 'root') {
root = cleanMarks(css);
} else if (css instanceof LazyResult || css instanceof result$1) {
root = cleanMarks(css.root);
if (css.map) {
if (typeof opts.map === 'undefined') opts.map = {};
if (!opts.map.inline) opts.map.inline = false;
opts.map.prev = css.map;
}
} else {
let parser = parse_1$1;
if (opts.syntax) parser = opts.syntax.parse;
if (opts.parser) parser = opts.parser;
if (parser.parse) parser = parser.parse;
try {
root = parser(css, opts);
} catch (error) {
this.processed = true;
this.error = error;
}
}
this.result = new result$1(processor, root, opts);
this.helpers = { ...postcss$1, result: this.result, postcss: postcss$1 };
this.plugins = this.processor.plugins.map(plugin => {
if (typeof plugin === 'object' && plugin.prepare) {
return { ...plugin, ...plugin.prepare(this.result) }
} else {
return plugin
}
});
}
get [Symbol.toStringTag] () {
return 'LazyResult'
}
get processor () {
return this.result.processor
}
get opts () {
return this.result.opts
}
get css () {
return this.stringify().css
}
get content () {
return this.stringify().content
}
get map () {
return this.stringify().map
}
get root () {
return this.sync().root
}
get messages () {
return this.sync().messages
}
warnings () {
return this.sync().warnings()
}
toString () {
return this.css
}
then (onFulfilled, onRejected) {
if (process.env.NODE_ENV !== 'production') {
if (!('from' in this.opts)) {
warnOnce(
'Without `from` option PostCSS could generate wrong source map ' +
'and will not find Browserslist config. Set it to CSS file path ' +
'or to `undefined` to prevent this warning.'
);
}
}
return this.async().then(onFulfilled, onRejected)
}
catch (onRejected) {
return this.async().catch(onRejected)
}
finally (onFinally) {
return this.async().then(onFinally, onFinally)
}
async () {
if (this.error) return Promise.reject(this.error)
if (this.processed) return Promise.resolve(this.result)
if (!this.processing) {
this.processing = this.runAsync();
}
return this.processing
}
sync () {
if (this.error) throw this.error
if (this.processed) return this.result
this.processed = true;
if (this.processing) {
throw this.getAsyncError()
}
for (let plugin of this.plugins) {
let promise = this.runOnRoot(plugin);
if (isPromise(promise)) {
throw this.getAsyncError()
}
}
this.prepareVisitors();
if (this.hasListener) {
let root = this.result.root;
while (!root[isClean]) {
root[isClean] = true;
this.walkSync(root);
}
if (this.listeners.OnceExit) {
this.visitSync(this.listeners.OnceExit, root);
}
}
return this.result
}
stringify () {
if (this.error) throw this.error
if (this.stringified) return this.result
this.stringified = true;
this.sync();
let opts = this.result.opts;
let str = stringify_1$1;
if (opts.syntax) str = opts.syntax.stringify;
if (opts.stringifier) str = opts.stringifier;
if (str.stringify) str = str.stringify;
let map = new mapGenerator(str, this.result.root, this.result.opts);
let data = map.generate();
this.result.css = data[0];
this.result.map = data[1];
return this.result
}
walkSync (node) {
node[isClean] = true;
let events = getEvents(node);
for (let event of events) {
if (event === CHILDREN) {
if (node.nodes) {
node.each(child => {
if (!child[isClean]) this.walkSync(child);
});
}
} else {
let visitors = this.listeners[event];
if (visitors) {
if (this.visitSync(visitors, node.toProxy())) return
}
}
}
}
visitSync (visitors, node) {
for (let [plugin, visitor] of visitors) {
this.result.lastPlugin = plugin;
let promise;
try {
promise = visitor(node, this.helpers);
} catch (e) {
throw this.handleError(e, node.proxyOf)
}
if (node.type !== 'root' && !node.parent) return true
if (isPromise(promise)) {
throw this.getAsyncError()
}
}
}
runOnRoot (plugin) {
this.result.lastPlugin = plugin;
try {
if (typeof plugin === 'object' && plugin.Once) {
return plugin.Once(this.result.root, this.helpers)
} else if (typeof plugin === 'function') {
return plugin(this.result.root, this.result)
}
} catch (error) {
throw this.handleError(error)
}
}
getAsyncError () {
throw new Error('Use process(css).then(cb) to work with async plugins')
}
handleError (error, node) {
let plugin = this.result.lastPlugin;
try {
if (node) node.addToError(error);
this.error = error;
if (error.name === 'CssSyntaxError' && !error.plugin) {
error.plugin = plugin.postcssPlugin;
error.setMessage();
} else if (plugin.postcssVersion) {
if (process.env.NODE_ENV !== 'production') {
let pluginName = plugin.postcssPlugin;
let pluginVer = plugin.postcssVersion;
let runtimeVer = this.result.processor.version;
let a = pluginVer.split('.');
let b = runtimeVer.split('.');
if (a[0] !== b[0] || parseInt(a[1]) > parseInt(b[1])) {
console.error(
'Unknown error from PostCSS plugin. Your current PostCSS ' +
'version is ' +
runtimeVer +
', but ' +
pluginName +
' uses ' +
pluginVer +
'. Perhaps this is the source of the error below.'
);
}
}
}
} catch (err) {
// istanbul ignore next
if (console && console.error) console.error(err);
}
return error
}
async runAsync () {
this.plugin = 0;
for (let i = 0; i 0) {
let promise = this.visitTick(stack);
if (isPromise(promise)) {
try {
await promise;
} catch (e) {
let node = stack[stack.length - 1].node;
throw this.handleError(e, node)
}
}
}
}
if (this.listeners.OnceExit) {
for (let [plugin, visitor] of this.listeners.OnceExit) {
this.result.lastPlugin = plugin;
try {
await visitor(root, this.helpers);
} catch (e) {
throw this.handleError(e)
}
}
}
}
this.processed = true;
return this.stringify()
}
prepareVisitors () {
this.listeners = {};
let add = (plugin, type, cb) => {
if (!this.listeners[type]) this.listeners[type] = [];
this.listeners[type].push([plugin, cb]);
};
for (let plugin of this.plugins) {
if (typeof plugin === 'object') {
for (let event in plugin) {
if (!PLUGIN_PROPS[event] && /^[A-Z]/.test(event)) {
throw new Error(
`Unknown event ${event} in ${plugin.postcssPlugin}. ` +
`Try to update PostCSS (${this.processor.version} now).`
)
}
if (!NOT_VISITORS[event]) {
if (typeof plugin[event] === 'object') {
for (let filter in plugin[event]) {
if (filter === '*') {
add(plugin, event, plugin[event][filter]);
} else {
add(
plugin,
event + '-' + filter.toLowerCase(),
plugin[event][filter]
);
}
}
} else if (typeof plugin[event] === 'function') {
add(plugin, event, plugin[event]);
}
}
}
}
}
this.hasListener = Object.keys(this.listeners).length > 0;
}
visitTick (stack) {
let visit = stack[stack.length - 1];
let { node, visitors } = visit;
if (node.type !== 'root' && !node.parent) {
stack.pop();
return
}
if (visitors.length > 0 && visit.visitorIndex {
postcss$1 = dependant;
};
var lazyResult = LazyResult;
LazyResult.default = LazyResult;
root.registerLazyResult(LazyResult);
class Processor$1 {
constructor (plugins = []) {
this.version = '8.2.4';
this.plugins = this.normalize(plugins);
}
use (plugin) {
this.plugins = this.plugins.concat(this.normalize([plugin]));
return this
}
process (css, opts = {}) {
if (
this.plugins.length === 0 &&
opts.parser === opts.stringifier &&
!opts.hideNothingWarning
) {
if (process.env.NODE_ENV !== 'production') {
if (typeof console !== 'undefined' && console.warn) {
console.warn(
'You did not set any plugins, parser, or stringifier. ' +
'Right now, PostCSS does nothing. Pick plugins for your case ' +
'on https://www.postcss.parts/ and use them in postcss.config.js.'
);
}
}
}
return new lazyResult(this, css, opts)
}
normalize (plugins) {
let normalized = [];
for (let i of plugins) {
if (i.postcss === true) {
i = i();
} else if (i.postcss) {
i = i.postcss;
}
if (typeof i === 'object' && Array.isArray(i.plugins)) {
normalized = normalized.concat(i.plugins);
} else if (typeof i === 'object' && i.postcssPlugin) {
normalized.push(i);
} else if (typeof i === 'function') {
normalized.push(i);
} else if (typeof i === 'object' && (i.parse || i.stringify)) {
if (process.env.NODE_ENV !== 'production') {
throw new Error(
'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +
'one of the syntax/parser/stringifier options as outlined ' +
'in your PostCSS runner documentation.'
)
}
} else {
throw new Error(i + ' is not a PostCSS plugin')
}
}
return normalized
}
}
var processor$1 = Processor$1;
Processor$1.default = Processor$1;
root.registerProcessor(Processor$1);
function fromJSON (json, inputs) {
if (Array.isArray(json)) return json.map(n => fromJSON(n))
let { inputs: ownInputs, ...defaults } = json;
if (ownInputs) {
inputs = [];
for (let input$1 of ownInputs) {
let inputHydrated = { ...input$1, __proto__: input.prototype };
if (inputHydrated.map) {
inputHydrated.map = {
...inputHydrated.map,
__proto__: previousMap.prototype
};
}
inputs.push(inputHydrated);
}
}
if (defaults.nodes) {
defaults.nodes = json.nodes.map(n => fromJSON(n, inputs));
}
if (defaults.source) {
let { inputId, ...source } = defaults.source;
defaults.source = source;
if (inputId != null) {
defaults.source.input = inputs[inputId];
}
}
if (defaults.type === 'root') {
return new root(defaults)
} else if (defaults.type === 'decl') {
return new declaration$1(defaults)
} else if (defaults.type === 'rule') {
return new rule(defaults)
} else if (defaults.type === 'comment') {
return new comment(defaults)
} else if (defaults.type === 'atrule') {
return new atRule$1(defaults)
} else {
throw new Error('Unknown node type: ' + json.type)
}
}
var fromJSON_1 = fromJSON;
fromJSON.default = fromJSON;
function postcss (...plugins) {
if (plugins.length === 1 && Array.isArray(plugins[0])) {
plugins = plugins[0];
}
return new processor$1(plugins)
}
postcss.plugin = function plugin (name, initializer) {
if (console && console.warn) {
console.warn(
name +
': postcss.plugin was deprecated. Migration guide:\n' +
'https://evilmartians.com/chronicles/postcss-8-plugin-migration'
);
if (process.env.LANG && process.env.LANG.startsWith('cn')) {
// istanbul ignore next
console.warn(
name +
': éé¢ postcss.plugin 被å¼ç¨. è¿ç§»æå:\n' +
'https://www.w3ctech.com/topic/2226'
);
}
}
function creator (...args) {
let transformer = initializer(...args);
transformer.postcssPlugin = name;
transformer.postcssVersion = new processor$1().version;
return transformer
}
let cache;
Object.defineProperty(creator, 'postcss', {
get () {
if (!cache) cache = creator();
return cache
}
});
creator.process = function (css, processOpts, pluginOpts) {
return postcss([creator(pluginOpts)]).process(css, processOpts)
};
return creator
};
postcss.stringify = stringify_1$1;
postcss.parse = parse_1$1;
postcss.fromJSON = fromJSON_1;
postcss.list = list_1;
postcss.comment = defaults => new comment(defaults);
postcss.atRule = defaults => new atRule$1(defaults);
postcss.decl = defaults => new declaration$1(defaults);
postcss.rule = defaults => new rule(defaults);
postcss.root = defaults => new root(defaults);
postcss.CssSyntaxError = cssSyntaxError;
postcss.Declaration = declaration$1;
postcss.Container = container;
postcss.Comment = comment;
postcss.Warning = warning;
postcss.AtRule = atRule$1;
postcss.Result = result$1;
postcss.Input = input;
postcss.Rule = rule;
postcss.Root = root;
postcss.Node = node_1;
lazyResult.registerPostcss(postcss);
var postcss_1 = postcss;
postcss.default = postcss;
postcss_1.stringify;
postcss_1.fromJSON;
postcss_1.plugin;
postcss_1.parse;
postcss_1.list;
postcss_1.comment;
postcss_1.atRule;
postcss_1.rule;
postcss_1.decl;
postcss_1.root;
postcss_1.CssSyntaxError;
postcss_1.Declaration;
postcss_1.Container;
postcss_1.Comment;
postcss_1.Warning;
postcss_1.AtRule;
postcss_1.Result;
postcss_1.Input;
postcss_1.Rule;
postcss_1.Root;
postcss_1.Node;
var jsReleases = [
{
name: "nodejs",
version: "0.2.0",
date: "2011-08-26",
lts: false,
security: false,
v8: "2.3.8.0"
},
{
name: "nodejs",
version: "0.3.0",
date: "2011-08-26",
lts: false,
security: false,
v8: "2.5.1.0"
},
{
name: "nodejs",
version: "0.4.0",
date: "2011-08-26",
lts: false,
security: false,
v8: "3.1.2.0"
},
{
name: "nodejs",
version: "0.5.0",
date: "2011-08-26",
lts: false,
security: false,
v8: "3.1.8.25"
},
{
name: "nodejs",
version: "0.6.0",
date: "2011-11-04",
lts: false,
security: false,
v8: "3.6.6.6"
},
{
name: "nodejs",
version: "0.7.0",
date: "2012-01-17",
lts: false,
security: false,
v8: "3.8.6.0"
},
{
name: "nodejs",
version: "0.8.0",
date: "2012-06-22",
lts: false,
security: false,
v8: "3.11.10.10"
},
{
name: "nodejs",
version: "0.9.0",
date: "2012-07-20",
lts: false,
security: false,
v8: "3.11.10.15"
},
{
name: "nodejs",
version: "0.10.0",
date: "2013-03-11",
lts: false,
security: false,
v8: "3.14.5.8"
},
{
name: "nodejs",
version: "0.11.0",
date: "2013-03-28",
lts: false,
security: false,
v8: "3.17.13.0"
},
{
name: "nodejs",
version: "0.12.0",
date: "2015-02-06",
lts: false,
security: false,
v8: "3.28.73.0"
},
{
name: "nodejs",
version: "4.0.0",
date: "2015-09-08",
lts: false,
security: false,
v8: "4.5.103.30"
},
{
name: "nodejs",
version: "4.1.0",
date: "2015-09-17",
lts: false,
security: false,
v8: "4.5.103.33"
},
{
name: "nodejs",
version: "4.2.0",
date: "2015-10-12",
lts: "Argon",
security: false,
v8: "4.5.103.35"
},
{
name: "nodejs",
version: "4.3.0",
date: "2016-02-09",
lts: "Argon",
security: false,
v8: "4.5.103.35"
},
{
name: "nodejs",
version: "4.4.0",
date: "2016-03-08",
lts: "Argon",
security: false,
v8: "4.5.103.35"
},
{
name: "nodejs",
version: "4.5.0",
date: "2016-08-16",
lts: "Argon",
security: false,
v8: "4.5.103.37"
},
{
name: "nodejs",
version: "4.6.0",
date: "2016-09-27",
lts: "Argon",
security: true,
v8: "4.5.103.37"
},
{
name: "nodejs",
version: "4.7.0",
date: "2016-12-06",
lts: "Argon",
security: false,
v8: "4.5.103.43"
},
{
name: "nodejs",
version: "4.8.0",
date: "2017-02-21",
lts: "Argon",
security: false,
v8: "4.5.103.45"
},
{
name: "nodejs",
version: "4.9.0",
date: "2018-03-28",
lts: "Argon",
security: true,
v8: "4.5.103.53"
},
{
name: "nodejs",
version: "5.0.0",
date: "2015-10-29",
lts: false,
security: false,
v8: "4.6.85.28"
},
{
name: "nodejs",
version: "5.1.0",
date: "2015-11-17",
lts: false,
security: false,
v8: "4.6.85.31"
},
{
name: "nodejs",
version: "5.2.0",
date: "2015-12-09",
lts: false,
security: false,
v8: "4.6.85.31"
},
{
name: "nodejs",
version: "5.3.0",
date: "2015-12-15",
lts: false,
security: false,
v8: "4.6.85.31"
},
{
name: "nodejs",
version: "5.4.0",
date: "2016-01-06",
lts: false,
security: false,
v8: "4.6.85.31"
},
{
name: "nodejs",
version: "5.5.0",
date: "2016-01-21",
lts: false,
security: false,
v8: "4.6.85.31"
},
{
name: "nodejs",
version: "5.6.0",
date: "2016-02-09",
lts: false,
security: false,
v8: "4.6.85.31"
},
{
name: "nodejs",
version: "5.7.0",
date: "2016-02-23",
lts: false,
security: false,
v8: "4.6.85.31"
},
{
name: "nodejs",
version: "5.8.0",
date: "2016-03-09",
lts: false,
security: false,
v8: "4.6.85.31"
},
{
name: "nodejs",
version: "5.9.0",
date: "2016-03-16",
lts: false,
security: false,
v8: "4.6.85.31"
},
{
name: "nodejs",
version: "5.10.0",
date: "2016-04-01",
lts: false,
security: false,
v8: "4.6.85.31"
},
{
name: "nodejs",
version: "5.11.0",
date: "2016-04-21",
lts: false,
security: false,
v8: "4.6.85.31"
},
{
name: "nodejs",
version: "5.12.0",
date: "2016-06-23",
lts: false,
security: false,
v8: "4.6.85.32"
},
{
name: "nodejs",
version: "6.0.0",
date: "2016-04-26",
lts: false,
security: false,
v8: "5.0.71.35"
},
{
name: "nodejs",
version: "6.1.0",
date: "2016-05-05",
lts: false,
security: false,
v8: "5.0.71.35"
},
{
name: "nodejs",
version: "6.2.0",
date: "2016-05-17",
lts: false,
security: false,
v8: "5.0.71.47"
},
{
name: "nodejs",
version: "6.3.0",
date: "2016-07-06",
lts: false,
security: false,
v8: "5.0.71.52"
},
{
name: "nodejs",
version: "6.4.0",
date: "2016-08-12",
lts: false,
security: false,
v8: "5.0.71.60"
},
{
name: "nodejs",
version: "6.5.0",
date: "2016-08-26",
lts: false,
security: false,
v8: "5.1.281.81"
},
{
name: "nodejs",
version: "6.6.0",
date: "2016-09-14",
lts: false,
security: false,
v8: "5.1.281.83"
},
{
name: "nodejs",
version: "6.7.0",
date: "2016-09-27",
lts: false,
security: true,
v8: "5.1.281.83"
},
{
name: "nodejs",
version: "6.8.0",
date: "2016-10-12",
lts: false,
security: false,
v8: "5.1.281.84"
},
{
name: "nodejs",
version: "6.9.0",
date: "2016-10-18",
lts: "Boron",
security: false,
v8: "5.1.281.84"
},
{
name: "nodejs",
version: "6.10.0",
date: "2017-02-21",
lts: "Boron",
security: false,
v8: "5.1.281.93"
},
{
name: "nodejs",
version: "6.11.0",
date: "2017-06-06",
lts: "Boron",
security: false,
v8: "5.1.281.102"
},
{
name: "nodejs",
version: "6.12.0",
date: "2017-11-06",
lts: "Boron",
security: false,
v8: "5.1.281.108"
},
{
name: "nodejs",
version: "6.13.0",
date: "2018-02-10",
lts: "Boron",
security: false,
v8: "5.1.281.111"
},
{
name: "nodejs",
version: "6.14.0",
date: "2018-03-28",
lts: "Boron",
security: true,
v8: "5.1.281.111"
},
{
name: "nodejs",
version: "6.15.0",
date: "2018-11-27",
lts: "Boron",
security: true,
v8: "5.1.281.111"
},
{
name: "nodejs",
version: "6.16.0",
date: "2018-12-26",
lts: "Boron",
security: false,
v8: "5.1.281.111"
},
{
name: "nodejs",
version: "6.17.0",
date: "2019-02-28",
lts: "Boron",
security: true,
v8: "5.1.281.111"
},
{
name: "nodejs",
version: "7.0.0",
date: "2016-10-25",
lts: false,
security: false,
v8: "5.4.500.36"
},
{
name: "nodejs",
version: "7.1.0",
date: "2016-11-08",
lts: false,
security: false,
v8: "5.4.500.36"
},
{
name: "nodejs",
version: "7.2.0",
date: "2016-11-22",
lts: false,
security: false,
v8: "5.4.500.43"
},
{
name: "nodejs",
version: "7.3.0",
date: "2016-12-20",
lts: false,
security: false,
v8: "5.4.500.45"
},
{
name: "nodejs",
version: "7.4.0",
date: "2017-01-04",
lts: false,
security: false,
v8: "5.4.500.45"
},
{
name: "nodejs",
version: "7.5.0",
date: "2017-01-31",
lts: false,
security: false,
v8: "5.4.500.48"
},
{
name: "nodejs",
version: "7.6.0",
date: "2017-02-21",
lts: false,
security: false,
v8: "5.5.372.40"
},
{
name: "nodejs",
version: "7.7.0",
date: "2017-02-28",
lts: false,
security: false,
v8: "5.5.372.41"
},
{
name: "nodejs",
version: "7.8.0",
date: "2017-03-29",
lts: false,
security: false,
v8: "5.5.372.43"
},
{
name: "nodejs",
version: "7.9.0",
date: "2017-04-11",
lts: false,
security: false,
v8: "5.5.372.43"
},
{
name: "nodejs",
version: "7.10.0",
date: "2017-05-02",
lts: false,
security: false,
v8: "5.5.372.43"
},
{
name: "nodejs",
version: "8.0.0",
date: "2017-05-30",
lts: false,
security: false,
v8: "5.8.283.41"
},
{
name: "nodejs",
version: "8.1.0",
date: "2017-06-08",
lts: false,
security: false,
v8: "5.8.283.41"
},
{
name: "nodejs",
version: "8.2.0",
date: "2017-07-19",
lts: false,
security: false,
v8: "5.8.283.41"
},
{
name: "nodejs",
version: "8.3.0",
date: "2017-08-08",
lts: false,
security: false,
v8: "6.0.286.52"
},
{
name: "nodejs",
version: "8.4.0",
date: "2017-08-15",
lts: false,
security: false,
v8: "6.0.286.52"
},
{
name: "nodejs",
version: "8.5.0",
date: "2017-09-12",
lts: false,
security: false,
v8: "6.0.287.53"
},
{
name: "nodejs",
version: "8.6.0",
date: "2017-09-26",
lts: false,
security: false,
v8: "6.0.287.53"
},
{
name: "nodejs",
version: "8.7.0",
date: "2017-10-11",
lts: false,
security: false,
v8: "6.1.534.42"
},
{
name: "nodejs",
version: "8.8.0",
date: "2017-10-24",
lts: false,
security: false,
v8: "6.1.534.42"
},
{
name: "nodejs",
version: "8.9.0",
date: "2017-10-31",
lts: "Carbon",
security: false,
v8: "6.1.534.46"
},
{
name: "nodejs",
version: "8.10.0",
date: "2018-03-06",
lts: "Carbon",
security: false,
v8: "6.2.414.50"
},
{
name: "nodejs",
version: "8.11.0",
date: "2018-03-28",
lts: "Carbon",
security: true,
v8: "6.2.414.50"
},
{
name: "nodejs",
version: "8.12.0",
date: "2018-09-10",
lts: "Carbon",
security: false,
v8: "6.2.414.66"
},
{
name: "nodejs",
version: "8.13.0",
date: "2018-11-20",
lts: "Carbon",
security: false,
v8: "6.2.414.72"
},
{
name: "nodejs",
version: "8.14.0",
date: "2018-11-27",
lts: "Carbon",
security: true,
v8: "6.2.414.72"
},
{
name: "nodejs",
version: "8.15.0",
date: "2018-12-26",
lts: "Carbon",
security: false,
v8: "6.2.414.75"
},
{
name: "nodejs",
version: "8.16.0",
date: "2019-04-16",
lts: "Carbon",
security: false,
v8: "6.2.414.77"
},
{
name: "nodejs",
version: "8.17.0",
date: "2019-12-17",
lts: "Carbon",
security: true,
v8: "6.2.414.78"
},
{
name: "nodejs",
version: "9.0.0",
date: "2017-10-31",
lts: false,
security: false,
v8: "6.2.414.32"
},
{
name: "nodejs",
version: "9.1.0",
date: "2017-11-07",
lts: false,
security: false,
v8: "6.2.414.32"
},
{
name: "nodejs",
version: "9.2.0",
date: "2017-11-14",
lts: false,
security: false,
v8: "6.2.414.44"
},
{
name: "nodejs",
version: "9.3.0",
date: "2017-12-12",
lts: false,
security: false,
v8: "6.2.414.46"
},
{
name: "nodejs",
version: "9.4.0",
date: "2018-01-10",
lts: false,
security: false,
v8: "6.2.414.46"
},
{
name: "nodejs",
version: "9.5.0",
date: "2018-01-31",
lts: false,
security: false,
v8: "6.2.414.46"
},
{
name: "nodejs",
version: "9.6.0",
date: "2018-02-21",
lts: false,
security: false,
v8: "6.2.414.46"
},
{
name: "nodejs",
version: "9.7.0",
date: "2018-03-01",
lts: false,
security: false,
v8: "6.2.414.46"
},
{
name: "nodejs",
version: "9.8.0",
date: "2018-03-07",
lts: false,
security: false,
v8: "6.2.414.46"
},
{
name: "nodejs",
version: "9.9.0",
date: "2018-03-21",
lts: false,
security: false,
v8: "6.2.414.46"
},
{
name: "nodejs",
version: "9.10.0",
date: "2018-03-28",
lts: false,
security: true,
v8: "6.2.414.46"
},
{
name: "nodejs",
version: "9.11.0",
date: "2018-04-04",
lts: false,
security: false,
v8: "6.2.414.46"
},
{
name: "nodejs",
version: "10.0.0",
date: "2018-04-24",
lts: false,
security: false,
v8: "6.6.346.24"
},
{
name: "nodejs",
version: "10.1.0",
date: "2018-05-08",
lts: false,
security: false,
v8: "6.6.346.27"
},
{
name: "nodejs",
version: "10.2.0",
date: "2018-05-23",
lts: false,
security: false,
v8: "6.6.346.32"
},
{
name: "nodejs",
version: "10.3.0",
date: "2018-05-29",
lts: false,
security: false,
v8: "6.6.346.32"
},
{
name: "nodejs",
version: "10.4.0",
date: "2018-06-06",
lts: false,
security: false,
v8: "6.7.288.43"
},
{
name: "nodejs",
version: "10.5.0",
date: "2018-06-20",
lts: false,
security: false,
v8: "6.7.288.46"
},
{
name: "nodejs",
version: "10.6.0",
date: "2018-07-04",
lts: false,
security: false,
v8: "6.7.288.46"
},
{
name: "nodejs",
version: "10.7.0",
date: "2018-07-18",
lts: false,
security: false,
v8: "6.7.288.49"
},
{
name: "nodejs",
version: "10.8.0",
date: "2018-08-01",
lts: false,
security: false,
v8: "6.7.288.49"
},
{
name: "nodejs",
version: "10.9.0",
date: "2018-08-15",
lts: false,
security: false,
v8: "6.8.275.24"
},
{
name: "nodejs",
version: "10.10.0",
date: "2018-09-06",
lts: false,
security: false,
v8: "6.8.275.30"
},
{
name: "nodejs",
version: "10.11.0",
date: "2018-09-19",
lts: false,
security: false,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "10.12.0",
date: "2018-10-10",
lts: false,
security: false,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "10.13.0",
date: "2018-10-30",
lts: "Dubnium",
security: false,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "10.14.0",
date: "2018-11-27",
lts: "Dubnium",
security: true,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "10.15.0",
date: "2018-12-26",
lts: "Dubnium",
security: false,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "10.16.0",
date: "2019-05-28",
lts: "Dubnium",
security: false,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "10.17.0",
date: "2019-10-22",
lts: "Dubnium",
security: false,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "10.18.0",
date: "2019-12-17",
lts: "Dubnium",
security: true,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "10.19.0",
date: "2020-02-05",
lts: "Dubnium",
security: true,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "10.20.0",
date: "2020-03-26",
lts: "Dubnium",
security: false,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "10.21.0",
date: "2020-06-02",
lts: "Dubnium",
security: true,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "10.22.0",
date: "2020-07-21",
lts: "Dubnium",
security: false,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "10.23.0",
date: "2020-10-27",
lts: "Dubnium",
security: false,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "10.24.0",
date: "2021-02-23",
lts: "Dubnium",
security: true,
v8: "6.8.275.32"
},
{
name: "nodejs",
version: "11.0.0",
date: "2018-10-23",
lts: false,
security: false,
v8: "7.0.276.28"
},
{
name: "nodejs",
version: "11.1.0",
date: "2018-10-30",
lts: false,
security: false,
v8: "7.0.276.32"
},
{
name: "nodejs",
version: "11.2.0",
date: "2018-11-15",
lts: false,
security: false,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "11.3.0",
date: "2018-11-27",
lts: false,
security: true,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "11.4.0",
date: "2018-12-07",
lts: false,
security: false,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "11.5.0",
date: "2018-12-18",
lts: false,
security: false,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "11.6.0",
date: "2018-12-26",
lts: false,
security: false,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "11.7.0",
date: "2019-01-17",
lts: false,
security: false,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "11.8.0",
date: "2019-01-24",
lts: false,
security: false,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "11.9.0",
date: "2019-01-30",
lts: false,
security: false,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "11.10.0",
date: "2019-02-14",
lts: false,
security: false,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "11.11.0",
date: "2019-03-05",
lts: false,
security: false,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "11.12.0",
date: "2019-03-14",
lts: false,
security: false,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "11.13.0",
date: "2019-03-28",
lts: false,
security: false,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "11.14.0",
date: "2019-04-10",
lts: false,
security: false,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "11.15.0",
date: "2019-04-30",
lts: false,
security: false,
v8: "7.0.276.38"
},
{
name: "nodejs",
version: "12.0.0",
date: "2019-04-23",
lts: false,
security: false,
v8: "7.4.288.21"
},
{
name: "nodejs",
version: "12.1.0",
date: "2019-04-29",
lts: false,
security: false,
v8: "7.4.288.21"
},
{
name: "nodejs",
version: "12.2.0",
date: "2019-05-07",
lts: false,
security: false,
v8: "7.4.288.21"
},
{
name: "nodejs",
version: "12.3.0",
date: "2019-05-21",
lts: false,
security: false,
v8: "7.4.288.27"
},
{
name: "nodejs",
version: "12.4.0",
date: "2019-06-04",
lts: false,
security: false,
v8: "7.4.288.27"
},
{
name: "nodejs",
version: "12.5.0",
date: "2019-06-26",
lts: false,
security: false,
v8: "7.5.288.22"
},
{
name: "nodejs",
version: "12.6.0",
date: "2019-07-03",
lts: false,
security: false,
v8: "7.5.288.22"
},
{
name: "nodejs",
version: "12.7.0",
date: "2019-07-23",
lts: false,
security: false,
v8: "7.5.288.22"
},
{
name: "nodejs",
version: "12.8.0",
date: "2019-08-06",
lts: false,
security: false,
v8: "7.5.288.22"
},
{
name: "nodejs",
version: "12.9.0",
date: "2019-08-20",
lts: false,
security: false,
v8: "7.6.303.29"
},
{
name: "nodejs",
version: "12.10.0",
date: "2019-09-04",
lts: false,
security: false,
v8: "7.6.303.29"
},
{
name: "nodejs",
version: "12.11.0",
date: "2019-09-25",
lts: false,
security: false,
v8: "7.7.299.11"
},
{
name: "nodejs",
version: "12.12.0",
date: "2019-10-11",
lts: false,
security: false,
v8: "7.7.299.13"
},
{
name: "nodejs",
version: "12.13.0",
date: "2019-10-21",
lts: "Erbium",
security: false,
v8: "7.7.299.13"
},
{
name: "nodejs",
version: "12.14.0",
date: "2019-12-17",
lts: "Erbium",
security: true,
v8: "7.7.299.13"
},
{
name: "nodejs",
version: "12.15.0",
date: "2020-02-05",
lts: "Erbium",
security: true,
v8: "7.7.299.13"
},
{
name: "nodejs",
version: "12.16.0",
date: "2020-02-11",
lts: "Erbium",
security: false,
v8: "7.8.279.23"
},
{
name: "nodejs",
version: "12.17.0",
date: "2020-05-26",
lts: "Erbium",
security: false,
v8: "7.8.279.23"
},
{
name: "nodejs",
version: "12.18.0",
date: "2020-06-02",
lts: "Erbium",
security: true,
v8: "7.8.279.23"
},
{
name: "nodejs",
version: "12.19.0",
date: "2020-10-06",
lts: "Erbium",
security: false,
v8: "7.8.279.23"
},
{
name: "nodejs",
version: "12.20.0",
date: "2020-11-24",
lts: "Erbium",
security: false,
v8: "7.8.279.23"
},
{
name: "nodejs",
version: "12.21.0",
date: "2021-02-23",
lts: "Erbium",
security: true,
v8: "7.8.279.23"
},
{
name: "nodejs",
version: "12.22.0",
date: "2021-03-30",
lts: "Erbium",
security: false,
v8: "7.8.279.23"
},
{
name: "nodejs",
version: "13.0.0",
date: "2019-10-22",
lts: false,
security: false,
v8: "7.8.279.17"
},
{
name: "nodejs",
version: "13.1.0",
date: "2019-11-05",
lts: false,
security: false,
v8: "7.8.279.17"
},
{
name: "nodejs",
version: "13.2.0",
date: "2019-11-21",
lts: false,
security: false,
v8: "7.9.317.23"
},
{
name: "nodejs",
version: "13.3.0",
date: "2019-12-03",
lts: false,
security: false,
v8: "7.9.317.25"
},
{
name: "nodejs",
version: "13.4.0",
date: "2019-12-17",
lts: false,
security: true,
v8: "7.9.317.25"
},
{
name: "nodejs",
version: "13.5.0",
date: "2019-12-18",
lts: false,
security: false,
v8: "7.9.317.25"
},
{
name: "nodejs",
version: "13.6.0",
date: "2020-01-07",
lts: false,
security: false,
v8: "7.9.317.25"
},
{
name: "nodejs",
version: "13.7.0",
date: "2020-01-21",
lts: false,
security: false,
v8: "7.9.317.25"
},
{
name: "nodejs",
version: "13.8.0",
date: "2020-02-05",
lts: false,
security: true,
v8: "7.9.317.25"
},
{
name: "nodejs",
version: "13.9.0",
date: "2020-02-18",
lts: false,
security: false,
v8: "7.9.317.25"
},
{
name: "nodejs",
version: "13.10.0",
date: "2020-03-04",
lts: false,
security: false,
v8: "7.9.317.25"
},
{
name: "nodejs",
version: "13.11.0",
date: "2020-03-12",
lts: false,
security: false,
v8: "7.9.317.25"
},
{
name: "nodejs",
version: "13.12.0",
date: "2020-03-26",
lts: false,
security: false,
v8: "7.9.317.25"
},
{
name: "nodejs",
version: "13.13.0",
date: "2020-04-14",
lts: false,
security: false,
v8: "7.9.317.25"
},
{
name: "nodejs",
version: "13.14.0",
date: "2020-04-29",
lts: false,
security: false,
v8: "7.9.317.25"
},
{
name: "nodejs",
version: "14.0.0",
date: "2020-04-21",
lts: false,
security: false,
v8: "8.1.307.30"
},
{
name: "nodejs",
version: "14.1.0",
date: "2020-04-29",
lts: false,
security: false,
v8: "8.1.307.31"
},
{
name: "nodejs",
version: "14.2.0",
date: "2020-05-05",
lts: false,
security: false,
v8: "8.1.307.31"
},
{
name: "nodejs",
version: "14.3.0",
date: "2020-05-19",
lts: false,
security: false,
v8: "8.1.307.31"
},
{
name: "nodejs",
version: "14.4.0",
date: "2020-06-02",
lts: false,
security: true,
v8: "8.1.307.31"
},
{
name: "nodejs",
version: "14.5.0",
date: "2020-06-30",
lts: false,
security: false,
v8: "8.3.110.9"
},
{
name: "nodejs",
version: "14.6.0",
date: "2020-07-20",
lts: false,
security: false,
v8: "8.4.371.19"
},
{
name: "nodejs",
version: "14.7.0",
date: "2020-07-29",
lts: false,
security: false,
v8: "8.4.371.19"
},
{
name: "nodejs",
version: "14.8.0",
date: "2020-08-11",
lts: false,
security: false,
v8: "8.4.371.19"
},
{
name: "nodejs",
version: "14.9.0",
date: "2020-08-27",
lts: false,
security: false,
v8: "8.4.371.19"
},
{
name: "nodejs",
version: "14.10.0",
date: "2020-09-08",
lts: false,
security: false,
v8: "8.4.371.19"
},
{
name: "nodejs",
version: "14.11.0",
date: "2020-09-15",
lts: false,
security: true,
v8: "8.4.371.19"
},
{
name: "nodejs",
version: "14.12.0",
date: "2020-09-22",
lts: false,
security: false,
v8: "8.4.371.19"
},
{
name: "nodejs",
version: "14.13.0",
date: "2020-09-29",
lts: false,
security: false,
v8: "8.4.371.19"
},
{
name: "nodejs",
version: "14.14.0",
date: "2020-10-15",
lts: false,
security: false,
v8: "8.4.371.19"
},
{
name: "nodejs",
version: "14.15.0",
date: "2020-10-27",
lts: "Fermium",
security: false,
v8: "8.4.371.19"
},
{
name: "nodejs",
version: "14.16.0",
date: "2021-02-23",
lts: "Fermium",
security: true,
v8: "8.4.371.19"
},
{
name: "nodejs",
version: "14.17.0",
date: "2021-05-11",
lts: "Fermium",
security: false,
v8: "8.4.371.23"
},
{
name: "nodejs",
version: "14.18.0",
date: "2021-09-28",
lts: "Fermium",
security: false,
v8: "8.4.371.23"
},
{
name: "nodejs",
version: "14.19.0",
date: "2022-02-01",
lts: "Fermium",
security: false,
v8: "8.4.371.23"
},
{
name: "nodejs",
version: "14.20.0",
date: "2022-07-07",
lts: "Fermium",
security: true,
v8: "8.4.371.23"
},
{
name: "nodejs",
version: "14.21.0",
date: "2022-11-01",
lts: "Fermium",
security: false,
v8: "8.4.371.23"
},
{
name: "nodejs",
version: "15.0.0",
date: "2020-10-20",
lts: false,
security: false,
v8: "8.6.395.16"
},
{
name: "nodejs",
version: "15.1.0",
date: "2020-11-04",
lts: false,
security: false,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "15.2.0",
date: "2020-11-10",
lts: false,
security: false,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "15.3.0",
date: "2020-11-24",
lts: false,
security: false,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "15.4.0",
date: "2020-12-09",
lts: false,
security: false,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "15.5.0",
date: "2020-12-22",
lts: false,
security: false,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "15.6.0",
date: "2021-01-14",
lts: false,
security: false,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "15.7.0",
date: "2021-01-25",
lts: false,
security: false,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "15.8.0",
date: "2021-02-02",
lts: false,
security: false,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "15.9.0",
date: "2021-02-18",
lts: false,
security: false,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "15.10.0",
date: "2021-02-23",
lts: false,
security: true,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "15.11.0",
date: "2021-03-03",
lts: false,
security: false,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "15.12.0",
date: "2021-03-17",
lts: false,
security: false,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "15.13.0",
date: "2021-03-31",
lts: false,
security: false,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "15.14.0",
date: "2021-04-06",
lts: false,
security: false,
v8: "8.6.395.17"
},
{
name: "nodejs",
version: "16.0.0",
date: "2021-04-20",
lts: false,
security: false,
v8: "9.0.257.17"
},
{
name: "nodejs",
version: "16.1.0",
date: "2021-05-04",
lts: false,
security: false,
v8: "9.0.257.24"
},
{
name: "nodejs",
version: "16.2.0",
date: "2021-05-19",
lts: false,
security: false,
v8: "9.0.257.25"
},
{
name: "nodejs",
version: "16.3.0",
date: "2021-06-03",
lts: false,
security: false,
v8: "9.0.257.25"
},
{
name: "nodejs",
version: "16.4.0",
date: "2021-06-23",
lts: false,
security: false,
v8: "9.1.269.36"
},
{
name: "nodejs",
version: "16.5.0",
date: "2021-07-14",
lts: false,
security: false,
v8: "9.1.269.38"
},
{
name: "nodejs",
version: "16.6.0",
date: "2021-07-29",
lts: false,
security: true,
v8: "9.2.230.21"
},
{
name: "nodejs",
version: "16.7.0",
date: "2021-08-18",
lts: false,
security: false,
v8: "9.2.230.21"
},
{
name: "nodejs",
version: "16.8.0",
date: "2021-08-25",
lts: false,
security: false,
v8: "9.2.230.21"
},
{
name: "nodejs",
version: "16.9.0",
date: "2021-09-07",
lts: false,
security: false,
v8: "9.3.345.16"
},
{
name: "nodejs",
version: "16.10.0",
date: "2021-09-22",
lts: false,
security: false,
v8: "9.3.345.19"
},
{
name: "nodejs",
version: "16.11.0",
date: "2021-10-08",
lts: false,
security: false,
v8: "9.4.146.19"
},
{
name: "nodejs",
version: "16.12.0",
date: "2021-10-20",
lts: false,
security: false,
v8: "9.4.146.19"
},
{
name: "nodejs",
version: "16.13.0",
date: "2021-10-26",
lts: "Gallium",
security: false,
v8: "9.4.146.19"
},
{
name: "nodejs",
version: "16.14.0",
date: "2022-02-08",
lts: "Gallium",
security: false,
v8: "9.4.146.24"
},
{
name: "nodejs",
version: "16.15.0",
date: "2022-04-26",
lts: "Gallium",
security: false,
v8: "9.4.146.24"
},
{
name: "nodejs",
version: "16.16.0",
date: "2022-07-07",
lts: "Gallium",
security: true,
v8: "9.4.146.24"
},
{
name: "nodejs",
version: "16.17.0",
date: "2022-08-16",
lts: "Gallium",
security: false,
v8: "9.4.146.26"
},
{
name: "nodejs",
version: "16.18.0",
date: "2022-10-12",
lts: "Gallium",
security: false,
v8: "9.4.146.26"
},
{
name: "nodejs",
version: "16.19.0",
date: "2022-12-13",
lts: "Gallium",
security: false,
v8: "9.4.146.26"
},
{
name: "nodejs",
version: "16.20.0",
date: "2023-03-28",
lts: "Gallium",
security: false,
v8: "9.4.146.26"
},
{
name: "nodejs",
version: "17.0.0",
date: "2021-10-19",
lts: false,
security: false,
v8: "9.5.172.21"
},
{
name: "nodejs",
version: "17.1.0",
date: "2021-11-09",
lts: false,
security: false,
v8: "9.5.172.25"
},
{
name: "nodejs",
version: "17.2.0",
date: "2021-11-30",
lts: false,
security: false,
v8: "9.6.180.14"
},
{
name: "nodejs",
version: "17.3.0",
date: "2021-12-17",
lts: false,
security: false,
v8: "9.6.180.15"
},
{
name: "nodejs",
version: "17.4.0",
date: "2022-01-18",
lts: false,
security: false,
v8: "9.6.180.15"
},
{
name: "nodejs",
version: "17.5.0",
date: "2022-02-10",
lts: false,
security: false,
v8: "9.6.180.15"
},
{
name: "nodejs",
version: "17.6.0",
date: "2022-02-22",
lts: false,
security: false,
v8: "9.6.180.15"
},
{
name: "nodejs",
version: "17.7.0",
date: "2022-03-09",
lts: false,
security: false,
v8: "9.6.180.15"
},
{
name: "nodejs",
version: "17.8.0",
date: "2022-03-22",
lts: false,
security: false,
v8: "9.6.180.15"
},
{
name: "nodejs",
version: "17.9.0",
date: "2022-04-07",
lts: false,
security: false,
v8: "9.6.180.15"
},
{
name: "nodejs",
version: "18.0.0",
date: "2022-04-18",
lts: false,
security: false,
v8: "10.1.124.8"
},
{
name: "nodejs",
version: "18.1.0",
date: "2022-05-03",
lts: false,
security: false,
v8: "10.1.124.8"
},
{
name: "nodejs",
version: "18.2.0",
date: "2022-05-17",
lts: false,
security: false,
v8: "10.1.124.8"
},
{
name: "nodejs",
version: "18.3.0",
date: "2022-06-02",
lts: false,
security: false,
v8: "10.2.154.4"
},
{
name: "nodejs",
version: "18.4.0",
date: "2022-06-16",
lts: false,
security: false,
v8: "10.2.154.4"
},
{
name: "nodejs",
version: "18.5.0",
date: "2022-07-06",
lts: false,
security: true,
v8: "10.2.154.4"
},
{
name: "nodejs",
version: "18.6.0",
date: "2022-07-13",
lts: false,
security: false,
v8: "10.2.154.13"
},
{
name: "nodejs",
version: "18.7.0",
date: "2022-07-26",
lts: false,
security: false,
v8: "10.2.154.13"
},
{
name: "nodejs",
version: "18.8.0",
date: "2022-08-24",
lts: false,
security: false,
v8: "10.2.154.13"
},
{
name: "nodejs",
version: "18.9.0",
date: "2022-09-07",
lts: false,
security: false,
v8: "10.2.154.15"
},
{
name: "nodejs",
version: "18.10.0",
date: "2022-09-28",
lts: false,
security: false,
v8: "10.2.154.15"
},
{
name: "nodejs",
version: "18.11.0",
date: "2022-10-13",
lts: false,
security: false,
v8: "10.2.154.15"
},
{
name: "nodejs",
version: "18.12.0",
date: "2022-10-25",
lts: "Hydrogen",
security: false,
v8: "10.2.154.15"
},
{
name: "nodejs",
version: "18.13.0",
date: "2023-01-05",
lts: "Hydrogen",
security: false,
v8: "10.2.154.23"
},
{
name: "nodejs",
version: "18.14.0",
date: "2023-02-01",
lts: "Hydrogen",
security: false,
v8: "10.2.154.23"
},
{
name: "nodejs",
version: "18.15.0",
date: "2023-03-05",
lts: "Hydrogen",
security: false,
v8: "10.2.154.26"
},
{
name: "nodejs",
version: "18.16.0",
date: "2023-04-12",
lts: "Hydrogen",
security: false,
v8: "10.2.154.26"
},
{
name: "nodejs",
version: "18.17.0",
date: "2023-07-18",
lts: "Hydrogen",
security: false,
v8: "10.2.154.26"
},
{
name: "nodejs",
version: "18.18.0",
date: "2023-09-18",
lts: "Hydrogen",
security: false,
v8: "10.2.154.26"
},
{
name: "nodejs",
version: "18.19.0",
date: "2023-11-29",
lts: "Hydrogen",
security: false,
v8: "10.2.154.26"
},
{
name: "nodejs",
version: "18.20.0",
date: "2024-03-26",
lts: "Hydrogen",
security: false,
v8: "10.2.154.26"
},
{
name: "nodejs",
version: "19.0.0",
date: "2022-10-17",
lts: false,
security: false,
v8: "10.7.193.13"
},
{
name: "nodejs",
version: "19.1.0",
date: "2022-11-14",
lts: false,
security: false,
v8: "10.7.193.20"
},
{
name: "nodejs",
version: "19.2.0",
date: "2022-11-29",
lts: false,
security: false,
v8: "10.8.168.20"
},
{
name: "nodejs",
version: "19.3.0",
date: "2022-12-14",
lts: false,
security: false,
v8: "10.8.168.21"
},
{
name: "nodejs",
version: "19.4.0",
date: "2023-01-05",
lts: false,
security: false,
v8: "10.8.168.25"
},
{
name: "nodejs",
version: "19.5.0",
date: "2023-01-24",
lts: false,
security: false,
v8: "10.8.168.25"
},
{
name: "nodejs",
version: "19.6.0",
date: "2023-02-01",
lts: false,
security: false,
v8: "10.8.168.25"
},
{
name: "nodejs",
version: "19.7.0",
date: "2023-02-21",
lts: false,
security: false,
v8: "10.8.168.25"
},
{
name: "nodejs",
version: "19.8.0",
date: "2023-03-14",
lts: false,
security: false,
v8: "10.8.168.25"
},
{
name: "nodejs",
version: "19.9.0",
date: "2023-04-10",
lts: false,
security: false,
v8: "10.8.168.25"
},
{
name: "nodejs",
version: "20.0.0",
date: "2023-04-17",
lts: false,
security: false,
v8: "11.3.244.4"
},
{
name: "nodejs",
version: "20.1.0",
date: "2023-05-03",
lts: false,
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.2.0",
date: "2023-05-16",
lts: false,
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.3.0",
date: "2023-06-08",
lts: false,
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.4.0",
date: "2023-07-04",
lts: false,
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.5.0",
date: "2023-07-19",
lts: false,
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.6.0",
date: "2023-08-23",
lts: false,
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.7.0",
date: "2023-09-18",
lts: false,
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.8.0",
date: "2023-09-28",
lts: false,
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.9.0",
date: "2023-10-24",
lts: "Iron",
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.10.0",
date: "2023-11-22",
lts: "Iron",
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.11.0",
date: "2024-01-09",
lts: "Iron",
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.12.0",
date: "2024-03-26",
lts: "Iron",
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.13.0",
date: "2024-05-07",
lts: "Iron",
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.14.0",
date: "2024-05-28",
lts: "Iron",
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.15.0",
date: "2024-06-20",
lts: "Iron",
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.16.0",
date: "2024-07-24",
lts: "Iron",
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.17.0",
date: "2024-08-21",
lts: "Iron",
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "20.18.0",
date: "2024-10-03",
lts: "Iron",
security: false,
v8: "11.3.244.8"
},
{
name: "nodejs",
version: "21.0.0",
date: "2023-10-17",
lts: false,
security: false,
v8: "11.8.172.13"
},
{
name: "nodejs",
version: "21.1.0",
date: "2023-10-24",
lts: false,
security: false,
v8: "11.8.172.15"
},
{
name: "nodejs",
version: "21.2.0",
date: "2023-11-14",
lts: false,
security: false,
v8: "11.8.172.17"
},
{
name: "nodejs",
version: "21.3.0",
date: "2023-11-30",
lts: false,
security: false,
v8: "11.8.172.17"
},
{
name: "nodejs",
version: "21.4.0",
date: "2023-12-05",
lts: false,
security: false,
v8: "11.8.172.17"
},
{
name: "nodejs",
version: "21.5.0",
date: "2023-12-19",
lts: false,
security: false,
v8: "11.8.172.17"
},
{
name: "nodejs",
version: "21.6.0",
date: "2024-01-14",
lts: false,
security: false,
v8: "11.8.172.17"
},
{
name: "nodejs",
version: "21.7.0",
date: "2024-03-06",
lts: false,
security: false,
v8: "11.8.172.17"
},
{
name: "nodejs",
version: "22.0.0",
date: "2024-04-24",
lts: false,
security: false,
v8: "12.4.254.14"
},
{
name: "nodejs",
version: "22.1.0",
date: "2024-05-02",
lts: false,
security: false,
v8: "12.4.254.14"
},
{
name: "nodejs",
version: "22.2.0",
date: "2024-05-15",
lts: false,
security: false,
v8: "12.4.254.14"
},
{
name: "nodejs",
version: "22.3.0",
date: "2024-06-11",
lts: false,
security: false,
v8: "12.4.254.20"
},
{
name: "nodejs",
version: "22.4.0",
date: "2024-07-02",
lts: false,
security: false,
v8: "12.4.254.21"
},
{
name: "nodejs",
version: "22.5.0",
date: "2024-07-17",
lts: false,
security: false,
v8: "12.4.254.21"
},
{
name: "nodejs",
version: "22.6.0",
date: "2024-08-06",
lts: false,
security: false,
v8: "12.4.254.21"
},
{
name: "nodejs",
version: "22.7.0",
date: "2024-08-21",
lts: false,
security: false,
v8: "12.4.254.21"
},
{
name: "nodejs",
version: "22.8.0",
date: "2024-09-03",
lts: false,
security: false,
v8: "12.4.254.21"
},
{
name: "nodejs",
version: "22.9.0",
date: "2024-09-17",
lts: false,
security: false,
v8: "12.4.254.21"
},
{
name: "nodejs",
version: "22.10.0",
date: "2024-10-16",
lts: false,
security: false,
v8: "12.4.254.21"
},
{
name: "nodejs",
version: "22.11.0",
date: "2024-10-29",
lts: "Jod",
security: false,
v8: "12.4.254.21"
},
{
name: "nodejs",
version: "22.12.0",
date: "2024-12-02",
lts: "Jod",
security: false,
v8: "12.4.254.21"
},
{
name: "nodejs",
version: "23.0.0",
date: "2024-10-16",
lts: false,
security: false,
v8: "12.9.202.26"
},
{
name: "nodejs",
version: "23.1.0",
date: "2024-10-24",
lts: false,
security: false,
v8: "12.9.202.28"
},
{
name: "nodejs",
version: "23.2.0",
date: "2024-11-11",
lts: false,
security: false,
v8: "12.9.202.28"
},
{
name: "nodejs",
version: "23.3.0",
date: "2024-11-20",
lts: false,
security: false,
v8: "12.9.202.28"
}
];
var browsers$4={A:"ie",B:"edge",C:"firefox",D:"chrome",E:"safari",F:"opera",G:"ios_saf",H:"op_mini",I:"android",J:"bb",K:"op_mob",L:"and_chr",M:"and_ff",N:"ie_mob",O:"and_uc",P:"samsung",Q:"and_qq",R:"baidu",S:"kaios"};
var browsers_1 = browsers$4;
var browsers$3 = {
browsers: browsers_1
};
var browserVersions$1={"0":"117","1":"20","2":"21","3":"22","4":"23","5":"24","6":"25","7":"26","8":"27","9":"118",A:"10",B:"11",C:"12",D:"7",E:"8",F:"9",G:"15",H:"80",I:"135",J:"4",K:"6",L:"13",M:"14",N:"16",O:"17",P:"18",Q:"79",R:"81",S:"83",T:"84",U:"85",V:"86",W:"87",X:"88",Y:"89",Z:"90",a:"91",b:"92",c:"93",d:"94",e:"95",f:"96",g:"97",h:"98",i:"99",j:"100",k:"101",l:"102",m:"103",n:"104",o:"105",p:"106",q:"107",r:"108",s:"109",t:"110",u:"111",v:"112",w:"113",x:"114",y:"115",z:"116",AB:"119",BB:"120",CB:"121",DB:"122",EB:"123",FB:"124",GB:"125",HB:"126",IB:"127",JB:"128",KB:"129",LB:"130",MB:"131",NB:"132",OB:"133",PB:"134",QB:"5",RB:"19",SB:"28",TB:"29",UB:"30",VB:"31",WB:"32",XB:"33",YB:"34",ZB:"35",aB:"36",bB:"37",cB:"38",dB:"39",eB:"40",fB:"41",gB:"42",hB:"43",iB:"44",jB:"45",kB:"46",lB:"47",mB:"48",nB:"49",oB:"50",pB:"51",qB:"52",rB:"53",sB:"54",tB:"55",uB:"56",vB:"57",wB:"58",xB:"60",yB:"62",zB:"63","0B":"64","1B":"65","2B":"66","3B":"67","4B":"68","5B":"69","6B":"70","7B":"71","8B":"72","9B":"73",AC:"74",BC:"75",CC:"76",DC:"77",EC:"78",FC:"137",GC:"11.1",HC:"12.1",IC:"15.5",JC:"16.0",KC:"17.0",LC:"18.0",MC:"3",NC:"59",OC:"61",PC:"82",QC:"136",RC:"138",SC:"3.2",TC:"10.1",UC:"15.2-15.3",VC:"15.4",WC:"16.1",XC:"16.2",YC:"16.3",ZC:"16.4",aC:"16.5",bC:"17.1",cC:"17.2",dC:"17.3",eC:"17.4",fC:"17.5",gC:"18.1",hC:"18.2",iC:"18.3",jC:"18.4",kC:"18.5",lC:"11.5",mC:"4.2-4.3",nC:"5.5",oC:"2",pC:"139",qC:"140",rC:"3.5",sC:"3.6",tC:"3.1",uC:"5.1",vC:"6.1",wC:"7.1",xC:"9.1",yC:"13.1",zC:"14.1","0C":"15.1","1C":"15.6","2C":"16.6","3C":"17.6","4C":"TP","5C":"9.5-9.6","6C":"10.0-10.1","7C":"10.5","8C":"10.6","9C":"11.6",AD:"4.0-4.1",BD:"5.0-5.1",CD:"6.0-6.1",DD:"7.0-7.1",ED:"8.1-8.4",FD:"9.0-9.2",GD:"9.3",HD:"10.0-10.2",ID:"10.3",JD:"11.0-11.2",KD:"11.3-11.4",LD:"12.0-12.1",MD:"12.2-12.5",ND:"13.0-13.1",OD:"13.2",PD:"13.3",QD:"13.4-13.7",RD:"14.0-14.4",SD:"14.5-14.8",TD:"15.0-15.1",UD:"15.6-15.8",VD:"16.6-16.7",WD:"17.6-17.7",XD:"all",YD:"2.1",ZD:"2.2",aD:"2.3",bD:"4.1",cD:"4.4",dD:"4.4.3-4.4.4",eD:"5.0-5.4",fD:"6.2-6.4",gD:"7.2-7.4",hD:"8.2",iD:"9.2",jD:"11.1-11.2",kD:"12.0",lD:"13.0",mD:"14.0",nD:"15.0",oD:"19.0",pD:"14.9",qD:"13.52",rD:"2.5",sD:"3.0-3.1"};
var browserVersions_1 = browserVersions$1;
var browserVersions = {
browserVersions: browserVersions_1
};
var agents$4={A:{A:{K:0,D:0,E:0,F:0.0324821,A:0,B:0.438508,nC:0},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","nC","K","D","E","F","A","B","","",""],E:"IE",F:{nC:962323200,K:998870400,D:1161129600,E:1237420800,F:1300060800,A:1346716800,B:1381968000}},B:{A:{"0":0.003623,"9":0.003623,C:0,L:0,M:0,G:0,N:0,O:0,P:0.097821,Q:0,H:0,R:0,S:0,T:0,U:0,V:0,W:0,X:0,Y:0,Z:0,a:0,b:0.010869,c:0,d:0,e:0,f:0,g:0,h:0,i:0,j:0,k:0,l:0,m:0,n:0,o:0,p:0,q:0,r:0.003623,s:0.047099,t:0,u:0,v:0,w:0.007246,x:0.014492,y:0.007246,z:0,AB:0.003623,BB:0.03623,CB:0.007246,DB:0.014492,EB:0.007246,FB:0.007246,GB:0.007246,HB:0.021738,IB:0.014492,JB:0.014492,KB:0.014492,LB:0.025361,MB:0.065214,NB:0.079706,OB:1.34051,PB:3.0252,I:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","C","L","M","G","N","O","P","Q","H","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","I","","",""],E:"Edge",F:{"0":1694649600,"9":1697155200,C:1438128000,L:1447286400,M:1470096000,G:1491868800,N:1508198400,O:1525046400,P:1542067200,Q:1579046400,H:1581033600,R:1586736000,S:1590019200,T:1594857600,U:1598486400,V:1602201600,W:1605830400,X:1611360000,Y:1614816000,Z:1618358400,a:1622073600,b:1626912000,c:1630627200,d:1632441600,e:1634774400,f:1637539200,g:1641427200,h:1643932800,i:1646265600,j:1649635200,k:1651190400,l:1653955200,m:1655942400,n:1659657600,o:1661990400,p:1664755200,q:1666915200,r:1670198400,s:1673481600,t:1675900800,u:1678665600,v:1680825600,w:1683158400,x:1685664000,y:1689897600,z:1692576000,AB:1698969600,BB:1701993600,CB:1706227200,DB:1708732800,EB:1711152000,FB:1713398400,GB:1715990400,HB:1718841600,IB:1721865600,JB:1724371200,KB:1726704000,LB:1729123200,MB:1731542400,NB:1737417600,OB:1740614400,PB:1741219200,I:1743984000},D:{C:"ms",L:"ms",M:"ms",G:"ms",N:"ms",O:"ms",P:"ms"}},C:{A:{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.094198,oC:0.007246,MC:0,J:0,QB:0,K:0,D:0,E:0,F:0,A:0,B:0.025361,C:0,L:0,M:0,G:0,N:0,O:0,P:0,RB:0,SB:0,TB:0,UB:0,VB:0,WB:0,XB:0,YB:0,ZB:0,aB:0,bB:0,cB:0,dB:0,eB:0,fB:0,gB:0,hB:0,iB:0.003623,jB:0,kB:0,lB:0,mB:0,nB:0,oB:0,pB:0,qB:0.028984,rB:0.014492,sB:0,tB:0.007246,uB:0.007246,vB:0,wB:0,NC:0.007246,xB:0,OC:0,yB:0,zB:0,"0B":0,"1B":0,"2B":0,"3B":0,"4B":0,"5B":0,"6B":0,"7B":0,"8B":0.003623,"9B":0,AC:0,BC:0,CC:0,DC:0,EC:0.010869,Q:0,H:0,R:0,PC:0,S:0,T:0,U:0,V:0,W:0,X:0.007246,Y:0,Z:0,a:0,b:0,c:0,d:0.003623,e:0,f:0,g:0,h:0,i:0,j:0,k:0,l:0,m:0,n:0,o:0,p:0,q:0,r:0,s:0.003623,t:0,u:0,v:0,w:0.003623,x:0,y:0.213757,z:0,AB:0,BB:0.003623,CB:0,DB:0,EB:0,FB:0,GB:0.014492,HB:0,IB:0.007246,JB:0.083329,KB:0,LB:0,MB:0.003623,NB:0.007246,OB:0.018115,PB:0.025361,I:0.347808,QC:1.11951,FC:0.007246,RC:0,pC:0,qC:0,rC:0,sC:0},B:"moz",C:["oC","MC","rC","sC","J","QB","K","D","E","F","A","B","C","L","M","G","N","O","P","RB","1","2","3","4","5","6","7","8","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","iB","jB","kB","lB","mB","nB","oB","pB","qB","rB","sB","tB","uB","vB","wB","NC","xB","OC","yB","zB","0B","1B","2B","3B","4B","5B","6B","7B","8B","9B","AC","BC","CC","DC","EC","Q","H","R","PC","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","I","QC","FC","RC","pC","qC"],E:"Firefox",F:{"0":1693267200,"1":1361232000,"2":1364860800,"3":1368489600,"4":1372118400,"5":1375747200,"6":1379376000,"7":1386633600,"8":1391472000,"9":1695686400,oC:1161648000,MC:1213660800,rC:1246320000,sC:1264032000,J:1300752000,QB:1308614400,K:1313452800,D:1317081600,E:1317081600,F:1320710400,A:1324339200,B:1327968000,C:1331596800,L:1335225600,M:1338854400,G:1342483200,N:1346112000,O:1349740800,P:1353628800,RB:1357603200,SB:1395100800,TB:1398729600,UB:1402358400,VB:1405987200,WB:1409616000,XB:1413244800,YB:1417392000,ZB:1421107200,aB:1424736000,bB:1428278400,cB:1431475200,dB:1435881600,eB:1439251200,fB:1442880000,gB:1446508800,hB:1450137600,iB:1453852800,jB:1457395200,kB:1461628800,lB:1465257600,mB:1470096000,nB:1474329600,oB:1479168000,pB:1485216000,qB:1488844800,rB:1492560000,sB:1497312000,tB:1502150400,uB:1506556800,vB:1510617600,wB:1516665600,NC:1520985600,xB:1525824000,OC:1529971200,yB:1536105600,zB:1540252800,"0B":1544486400,"1B":1548720000,"2B":1552953600,"3B":1558396800,"4B":1562630400,"5B":1567468800,"6B":1571788800,"7B":1575331200,"8B":1578355200,"9B":1581379200,AC:1583798400,BC:1586304000,CC:1588636800,DC:1591056000,EC:1593475200,Q:1595894400,H:1598313600,R:1600732800,PC:1603152000,S:1605571200,T:1607990400,U:1611619200,V:1614038400,W:1616457600,X:1618790400,Y:1622505600,Z:1626134400,a:1628553600,b:1630972800,c:1633392000,d:1635811200,e:1638835200,f:1641859200,g:1644364800,h:1646697600,i:1649116800,j:1651536000,k:1653955200,l:1656374400,m:1658793600,n:1661212800,o:1663632000,p:1666051200,q:1668470400,r:1670889600,s:1673913600,t:1676332800,u:1678752000,v:1681171200,w:1683590400,x:1686009600,y:1688428800,z:1690848000,AB:1698105600,BB:1700524800,CB:1702944000,DB:1705968000,EB:1708387200,FB:1710806400,GB:1713225600,HB:1715644800,IB:1718064000,JB:1720483200,KB:1722902400,LB:1725321600,MB:1727740800,NB:1730160000,OB:1732579200,PB:1736208000,I:1738627200,QC:1741046400,FC:1743465600,RC:null,pC:null,qC:null}},D:{A:{"0":0.094198,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0.057968,J:0,QB:0,K:0,D:0,E:0,F:0,A:0,B:0,C:0,L:0,M:0,G:0,N:0,O:0,P:0,RB:0,SB:0,TB:0,UB:0,VB:0,WB:0,XB:0,YB:0,ZB:0,aB:0,bB:0,cB:0.003623,dB:0.007246,eB:0.003623,fB:0.007246,gB:0.007246,hB:0.007246,iB:0.007246,jB:0.007246,kB:0.003623,lB:0.007246,mB:0.018115,nB:0.018115,oB:0.007246,pB:0.007246,qB:0.010869,rB:0.007246,sB:0.007246,tB:0.007246,uB:0.014492,vB:0.007246,wB:0.010869,NC:0.007246,xB:0.007246,OC:0,yB:0,zB:0,"0B":0,"1B":0,"2B":0.021738,"3B":0,"4B":0,"5B":0.010869,"6B":0.010869,"7B":0,"8B":0,"9B":0.007246,AC:0.003623,BC:0.007246,CC:0.003623,DC:0.014492,EC:0.010869,Q:0.068837,H:0.010869,R:0.014492,S:0.028984,T:0.003623,U:0.010869,V:0.014492,W:0.057968,X:0.014492,Y:0.003623,Z:0.007246,a:0.03623,b:0.010869,c:0.014492,d:0.028984,e:0.007246,f:0.007246,g:0.018115,h:0.03623,i:0.010869,j:0.028984,k:0.014492,l:0.014492,m:0.076083,n:0.050722,o:0.010869,p:0.021738,q:0.025361,r:0.039853,s:0.912996,t:0.018115,u:0.03623,v:0.03623,w:0.10869,x:0.054345,y:0.032607,z:0.101444,AB:0.03623,BB:0.086952,CB:0.094198,DB:0.076083,EB:0.086952,FB:0.123182,GB:0.344185,HB:0.152166,IB:0.101444,JB:0.130428,KB:0.101444,LB:0.152166,MB:1.17747,NB:0.815175,OB:5.89462,PB:9.91615,I:0.021738,QC:0.014492,FC:0,RC:0},B:"webkit",C:["","","","","","","","J","QB","K","D","E","F","A","B","C","L","M","G","N","O","P","RB","1","2","3","4","5","6","7","8","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","iB","jB","kB","lB","mB","nB","oB","pB","qB","rB","sB","tB","uB","vB","wB","NC","xB","OC","yB","zB","0B","1B","2B","3B","4B","5B","6B","7B","8B","9B","AC","BC","CC","DC","EC","Q","H","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","9","AB","BB","CB","DB","EB","FB","GB","HB","IB","JB","KB","LB","MB","NB","OB","PB","I","QC","FC","RC"],E:"Chrome",F:{"0":1694476800,"1":1337040000,"2":1340668800,"3":1343692800,"4":1348531200,"5":1352246400,"6":1357862400,"7":1361404800,"8":1364428800,"9":1696896000,J:1264377600,QB:1274745600,K:1283385600,D:1287619200,E:1291248000,F:1296777600,A:1299542400,B:1303862400,C:1307404800,L:1312243200,M:1316131200,G:1316131200,N:1319500800,O:1323734400,P:1328659200,RB:1332892800,SB:1369094400,TB:1374105600,UB:1376956800,VB:1384214400,WB:1389657600,XB:1392940800,YB:1397001600,ZB:1400544000,aB:1405468800,bB:1409011200,cB:1412640000,dB:1416268800,eB:1421798400,fB:1425513600,gB:1429401600,hB:1432080000,iB:1437523200,jB:1441152000,kB:1444780800,lB:1449014400,mB:1453248000,nB:1456963200,oB:1460592000,pB:1464134400,qB:1469059200,rB:1472601600,sB:1476230400,tB:1480550400,uB:1485302400,vB:1489017600,wB:1492560000,NC:1496707200,xB:1500940800,OC:1504569600,yB:1508198400,zB:1512518400,"0B":1516752000,"1B":1520294400,"2B":1523923200,"3B":1527552000,"4B":1532390400,"5B":1536019200,"6B":1539648000,"7B":1543968000,"8B":1548720000,"9B":1552348800,AC:1555977600,BC:1559606400,CC:1564444800,DC:1568073600,EC:1571702400,Q:1575936000,H:1580860800,R:1586304000,S:1589846400,T:1594684800,U:1598313600,V:1601942400,W:1605571200,X:1611014400,Y:1614556800,Z:1618272000,a:1621987200,b:1626739200,c:1630368000,d:1632268800,e:1634601600,f:1637020800,g:1641340800,h:1643673600,i:1646092800,j:1648512000,k:1650931200,l:1653350400,m:1655769600,n:1659398400,o:1661817600,p:1664236800,q:1666656000,r:1669680000,s:1673308800,t:1675728000,u:1678147200,v:1680566400,w:1682985600,x:1685404800,y:1689724800,z:1692057600,AB:1698710400,BB:1701993600,CB:1705968000,DB:1708387200,EB:1710806400,FB:1713225600,GB:1715644800,HB:1718064000,IB:1721174400,JB:1724112000,KB:1726531200,LB:1728950400,MB:1731369600,NB:1736812800,OB:1738627200,PB:1741046400,I:1743465600,QC:null,FC:null,RC:null}},E:{A:{J:0,QB:0,K:0,D:0,E:0,F:0,A:0,B:0,C:0,L:0,M:0.014492,G:0.003623,tC:0,SC:0,uC:0,vC:0,wC:0,xC:0,TC:0,GC:0.007246,HC:0.007246,yC:0.032607,zC:0.043476,"0C":0.014492,UC:0.003623,VC:0.010869,IC:0.014492,"1C":0.148543,JC:0.032607,WC:0.021738,XC:0.018115,YC:0.039853,ZC:0.014492,aC:0.025361,"2C":0.199265,KC:0.010869,bC:0.123182,cC:0.018115,dC:0.021738,eC:0.050722,fC:0.086952,"3C":0.264479,LC:0.03623,gC:0.115936,hC:0.057968,iC:1.4021,jC:0.018115,kC:0,"4C":0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","tC","SC","J","QB","uC","K","vC","D","wC","E","F","xC","A","TC","B","GC","C","HC","L","yC","M","zC","G","0C","UC","VC","IC","1C","JC","WC","XC","YC","ZC","aC","2C","KC","bC","cC","dC","eC","fC","3C","LC","gC","hC","iC","jC","kC","4C",""],E:"Safari",F:{tC:1205798400,SC:1226534400,J:1244419200,QB:1275868800,uC:1311120000,K:1343174400,vC:1382400000,D:1382400000,wC:1410998400,E:1413417600,F:1443657600,xC:1458518400,A:1474329600,TC:1490572800,B:1505779200,GC:1522281600,C:1537142400,HC:1553472000,L:1568851200,yC:1585008000,M:1600214400,zC:1619395200,G:1632096000,"0C":1635292800,UC:1639353600,VC:1647216000,IC:1652745600,"1C":1658275200,JC:1662940800,WC:1666569600,XC:1670889600,YC:1674432000,ZC:1679875200,aC:1684368000,"2C":1690156800,KC:1695686400,bC:1698192000,cC:1702252800,dC:1705881600,eC:1709596800,fC:1715558400,"3C":1722211200,LC:1726444800,gC:1730073600,hC:1733875200,iC:1737936000,jC:1743379200,kC:null,"4C":null}},F:{A:{"0":0.684747,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,F:0,B:0,C:0,G:0,N:0,O:0,P:0,RB:0,SB:0,TB:0,UB:0,VB:0,WB:0,XB:0,YB:0,ZB:0,aB:0,bB:0,cB:0,dB:0,eB:0.003623,fB:0,gB:0,hB:0,iB:0,jB:0,kB:0.010869,lB:0,mB:0,nB:0,oB:0,pB:0,qB:0,rB:0,sB:0,tB:0,uB:0,vB:0,wB:0,xB:0,yB:0,zB:0,"0B":0,"1B":0,"2B":0,"3B":0,"4B":0,"5B":0,"6B":0,"7B":0,"8B":0,"9B":0,AC:0,BC:0,CC:0,DC:0,EC:0,Q:0,H:0,R:0,PC:0,S:0,T:0,U:0,V:0,W:0.025361,X:0.007246,Y:0,Z:0,a:0,b:0,c:0,d:0,e:0.032607,f:0,g:0,h:0,i:0,j:0,k:0,l:0.018115,m:0,n:0,o:0,p:0,q:0,r:0,s:0,t:0,u:0,v:0,w:0,x:0.003623,y:0,z:0.202888,"5C":0,"6C":0,"7C":0,"8C":0,GC:0,lC:0,"9C":0,HC:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","F","5C","6C","7C","8C","B","GC","lC","9C","C","HC","G","N","O","P","RB","1","2","3","4","5","6","7","8","SB","TB","UB","VB","WB","XB","YB","ZB","aB","bB","cB","dB","eB","fB","gB","hB","iB","jB","kB","lB","mB","nB","oB","pB","qB","rB","sB","tB","uB","vB","wB","xB","yB","zB","0B","1B","2B","3B","4B","5B","6B","7B","8B","9B","AC","BC","CC","DC","EC","Q","H","R","PC","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","","",""],E:"Opera",F:{"0":1739404800,"1":1393891200,"2":1399334400,"3":1401753600,"4":1405987200,"5":1409616000,"6":1413331200,"7":1417132800,"8":1422316800,F:1150761600,"5C":1223424000,"6C":1251763200,"7C":1267488000,"8C":1277942400,B:1292457600,GC:1302566400,lC:1309219200,"9C":1323129600,C:1323129600,HC:1352073600,G:1372723200,N:1377561600,O:1381104000,P:1386288000,RB:1390867200,SB:1425945600,TB:1430179200,UB:1433808000,VB:1438646400,WB:1442448000,XB:1445904000,YB:1449100800,ZB:1454371200,aB:1457308800,bB:1462320000,cB:1465344000,dB:1470096000,eB:1474329600,fB:1477267200,gB:1481587200,hB:1486425600,iB:1490054400,jB:1494374400,kB:1498003200,lB:1502236800,mB:1506470400,nB:1510099200,oB:1515024000,pB:1517961600,qB:1521676800,rB:1525910400,sB:1530144000,tB:1534982400,uB:1537833600,vB:1543363200,wB:1548201600,xB:1554768000,yB:1561593600,zB:1566259200,"0B":1570406400,"1B":1573689600,"2B":1578441600,"3B":1583971200,"4B":1587513600,"5B":1592956800,"6B":1595894400,"7B":1600128000,"8B":1603238400,"9B":1613520000,AC:1612224000,BC:1616544000,CC:1619568000,DC:1623715200,EC:1627948800,Q:1631577600,H:1633392000,R:1635984000,PC:1638403200,S:1642550400,T:1644969600,U:1647993600,V:1650412800,W:1652745600,X:1654646400,Y:1657152000,Z:1660780800,a:1663113600,b:1668816000,c:1668643200,d:1671062400,e:1675209600,f:1677024000,g:1679529600,h:1681948800,i:1684195200,j:1687219200,k:1690329600,l:1692748800,m:1696204800,n:1699920000,o:1699920000,p:1702944000,q:1707264000,r:1710115200,s:1711497600,t:1716336000,u:1719273600,v:1721088000,w:1724284800,x:1727222400,y:1732665600,z:1736294400},D:{F:"o",B:"o",C:"o","5C":"o","6C":"o","7C":"o","8C":"o",GC:"o",lC:"o","9C":"o",HC:"o"}},G:{A:{E:0,SC:0,AD:0,mC:0.00289898,BD:0,CD:0.00869695,DD:0.00724746,ED:0,FD:0.00434848,GD:0.0202929,HD:0.00144949,ID:0.0333383,JD:0.153646,KD:0.0101464,LD:0.00579797,MD:0.14205,ND:0.00289898,OD:0.00579797,PD:0.00579797,QD:0.0202929,RD:0.124656,SD:0.0608787,TD:0.0333383,UC:0.0333383,VC:0.0405858,IC:0.0463837,UD:0.568201,JC:0.0797221,WC:0.165242,XC:0.08552,YC:0.150747,ZC:0.0333383,aC:0.0623282,VD:0.672564,KC:0.0405858,bC:0.0724746,cC:0.0550807,dC:0.0768231,eC:0.153646,fC:0.340631,WD:0.988554,LC:0.276853,gC:0.905933,hC:0.405858,iC:8.46503,jC:0.126106,kC:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","SC","AD","mC","BD","CD","DD","E","ED","FD","GD","HD","ID","JD","KD","LD","MD","ND","OD","PD","QD","RD","SD","TD","UC","VC","IC","UD","JC","WC","XC","YC","ZC","aC","VD","KC","bC","cC","dC","eC","fC","WD","LC","gC","hC","iC","jC","kC","",""],E:"Safari on iOS",F:{SC:1270252800,AD:1283904000,mC:1299628800,BD:1331078400,CD:1359331200,DD:1394409600,E:1410912000,ED:1413763200,FD:1442361600,GD:1458518400,HD:1473724800,ID:1490572800,JD:1505779200,KD:1522281600,LD:1537142400,MD:1553472000,ND:1568851200,OD:1572220800,PD:1580169600,QD:1585008000,RD:1600214400,SD:1619395200,TD:1632096000,UC:1639353600,VC:1647216000,IC:1652659200,UD:1658275200,JC:1662940800,WC:1666569600,XC:1670889600,YC:1674432000,ZC:1679875200,aC:1684368000,VD:1690156800,KC:1694995200,bC:1698192000,cC:1702252800,dC:1705881600,eC:1709596800,fC:1715558400,WD:1722211200,LC:1726444800,gC:1730073600,hC:1733875200,iC:1737936000,jC:1743379200,kC:null}},H:{A:{XD:0.05},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","XD","","",""],E:"Opera Mini",F:{XD:1426464000}},I:{A:{MC:0,J:0,I:0.871727,YD:0,ZD:0,aD:0,bD:0,mC:0.000262095,cD:0,dD:0.000961014},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","YD","ZD","aD","MC","J","bD","mC","cD","dD","I","","",""],E:"Android Browser",F:{YD:1256515200,ZD:1274313600,aD:1291593600,MC:1298332800,J:1318896000,bD:1341792000,mC:1374624000,cD:1386547200,dD:1401667200,I:1743379200}},J:{A:{D:0,A:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","D","A","","",""],E:"Blackberry Browser",F:{D:1325376000,A:1359504000}},K:{A:{A:0,B:0,C:0,H:1.04047,GC:0,lC:0,HC:0},B:"o",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","GC","lC","C","HC","H","","",""],E:"Opera Mobile",F:{A:1287100800,B:1300752000,GC:1314835200,lC:1318291200,C:1330300800,HC:1349740800,H:1709769600},D:{H:"webkit"}},L:{A:{I:44.6783},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","I","","",""],E:"Chrome for Android",F:{I:1743379200}},M:{A:{FC:0.350735},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","FC","","",""],E:"Firefox for Android",F:{FC:1743465600}},N:{A:{A:0,B:0},B:"ms",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","A","B","","",""],E:"IE Mobile",F:{A:1340150400,B:1353456000}},O:{A:{IC:0.848141},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","IC","","",""],E:"UC Browser for Android",F:{IC:1710115200},D:{IC:"webkit"}},P:{A:{"1":0,"2":0.0219344,"3":0.0219344,"4":0.0329016,"5":0.0438688,"6":0.0438688,"7":0.0877377,"8":1.96313,J:0.0329016,eD:0,fD:0,gD:0.0109672,hD:0,iD:0,TC:0,jD:0,kD:0,lD:0,mD:0,nD:0,JC:0,KC:0.0109672,LC:0,oD:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","J","eD","fD","gD","hD","iD","TC","jD","kD","lD","mD","nD","JC","KC","LC","oD","1","2","3","4","5","6","7","8","","",""],E:"Samsung Internet",F:{"1":1677369600,"2":1684454400,"3":1689292800,"4":1697587200,"5":1711497600,"6":1715126400,"7":1717718400,"8":1725667200,J:1461024000,eD:1481846400,fD:1509408000,gD:1528329600,hD:1546128000,iD:1554163200,TC:1567900800,jD:1582588800,kD:1593475200,lD:1605657600,mD:1618531200,nD:1629072000,JC:1640736000,KC:1651708800,LC:1659657600,oD:1667260800}},Q:{A:{pD:0.229572},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","pD","","",""],E:"QQ Browser",F:{pD:1710288000}},R:{A:{qD:0},B:"webkit",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","qD","","",""],E:"Baidu Browser",F:{qD:1710201600}},S:{A:{rD:0.012754,sD:0},B:"moz",C:["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","rD","sD","","",""],E:"KaiOS Browser",F:{rD:1527811200,sD:1631664000}}};
const browsers$2 = browsers$3.browsers;
const versions$2 = browserVersions.browserVersions;
function unpackBrowserVersions(versionsData) {
return Object.keys(versionsData).reduce((usage, version) => {
usage[versions$2[version]] = versionsData[version];
return usage
}, {})
}
var agents_1 = Object.keys(agents$4).reduce((map, key) => {
let versionsData = agents$4[key];
map[browsers$2[key]] = Object.keys(versionsData).reduce((data, entry) => {
if (entry === 'A') {
data.usage_global = unpackBrowserVersions(versionsData[entry]);
} else if (entry === 'C') {
data.versions = versionsData[entry].reduce((list, version) => {
if (version === '') {
list.push(null);
} else {
list.push(versions$2[version]);
}
return list
}, []);
} else if (entry === 'D') {
data.prefix_exceptions = unpackBrowserVersions(versionsData[entry]);
} else if (entry === 'E') {
data.browser = versionsData[entry];
} else if (entry === 'F') {
data.release_date = Object.keys(versionsData[entry]).reduce(
(map2, key2) => {
map2[versions$2[key2]] = versionsData[entry][key2];
return map2
},
{}
);
} else {
// entry is B
data.prefix = versionsData[entry];
}
return data
}, {});
return map
}, {});
var agents$3 = {
agents: agents_1
};
var versions$1 = {
"0.20": "39",
"0.21": "41",
"0.22": "41",
"0.23": "41",
"0.24": "41",
"0.25": "42",
"0.26": "42",
"0.27": "43",
"0.28": "43",
"0.29": "43",
"0.30": "44",
"0.31": "45",
"0.32": "45",
"0.33": "45",
"0.34": "45",
"0.35": "45",
"0.36": "47",
"0.37": "49",
"1.0": "49",
"1.1": "50",
"1.2": "51",
"1.3": "52",
"1.4": "53",
"1.5": "54",
"1.6": "56",
"1.7": "58",
"1.8": "59",
"2.0": "61",
"2.1": "61",
"3.0": "66",
"3.1": "66",
"4.0": "69",
"4.1": "69",
"4.2": "69",
"5.0": "73",
"6.0": "76",
"6.1": "76",
"7.0": "78",
"7.1": "78",
"7.2": "78",
"7.3": "78",
"8.0": "80",
"8.1": "80",
"8.2": "80",
"8.3": "80",
"8.4": "80",
"8.5": "80",
"9.0": "83",
"9.1": "83",
"9.2": "83",
"9.3": "83",
"9.4": "83",
"10.0": "85",
"10.1": "85",
"10.2": "85",
"10.3": "85",
"10.4": "85",
"11.0": "87",
"11.1": "87",
"11.2": "87",
"11.3": "87",
"11.4": "87",
"11.5": "87",
"12.0": "89",
"12.1": "89",
"12.2": "89",
"13.0": "91",
"13.1": "91",
"13.2": "91",
"13.3": "91",
"13.4": "91",
"13.5": "91",
"13.6": "91",
"14.0": "93",
"14.1": "93",
"14.2": "93",
"15.0": "94",
"15.1": "94",
"15.2": "94",
"15.3": "94",
"15.4": "94",
"15.5": "94",
"16.0": "96",
"16.1": "96",
"16.2": "96",
"17.0": "98",
"17.1": "98",
"17.2": "98",
"17.3": "98",
"17.4": "98",
"18.0": "100",
"18.1": "100",
"18.2": "100",
"18.3": "100",
"19.0": "102",
"19.1": "102",
"20.0": "104",
"20.1": "104",
"20.2": "104",
"20.3": "104",
"21.0": "106",
"21.1": "106",
"21.2": "106",
"21.3": "106",
"21.4": "106",
"22.0": "108",
"22.1": "108",
"22.2": "108",
"22.3": "108",
"23.0": "110",
"23.1": "110",
"23.2": "110",
"23.3": "110",
"24.0": "112",
"24.1": "112",
"24.2": "112",
"24.3": "112",
"24.4": "112",
"24.5": "112",
"24.6": "112",
"24.7": "112",
"24.8": "112",
"25.0": "114",
"25.1": "114",
"25.2": "114",
"25.3": "114",
"25.4": "114",
"25.5": "114",
"25.6": "114",
"25.7": "114",
"25.8": "114",
"25.9": "114",
"26.0": "116",
"26.1": "116",
"26.2": "116",
"26.3": "116",
"26.4": "116",
"26.5": "116",
"26.6": "116",
"27.0": "118",
"27.1": "118",
"27.2": "118",
"27.3": "118",
"28.0": "120",
"28.1": "120",
"28.2": "120",
"28.3": "120",
"29.0": "122",
"29.1": "122",
"29.2": "122",
"29.3": "122",
"29.4": "122",
"30.0": "124",
"30.1": "124",
"30.2": "124",
"30.3": "124",
"30.4": "124",
"30.5": "124",
"31.0": "126",
"31.1": "126",
"31.2": "126",
"31.3": "126",
"31.4": "126",
"31.5": "126",
"31.6": "126",
"31.7": "126",
"32.0": "128",
"32.1": "128",
"32.2": "128",
"32.3": "128",
"33.0": "130",
"33.1": "130",
"33.2": "130",
"33.3": "130",
"33.4": "130",
"34.0": "132",
"34.1": "132",
"34.2": "132",
"34.3": "132",
"34.4": "132",
"34.5": "132",
"35.0": "134",
"35.1": "134",
"36.0": "136"
};
var v4 = {
start: "2015-09-08",
lts: "2015-10-12",
maintenance: "2017-04-01",
end: "2018-04-30",
codename: "Argon"
};
var v5 = {
start: "2015-10-29",
maintenance: "2016-04-30",
end: "2016-06-30"
};
var v6 = {
start: "2016-04-26",
lts: "2016-10-18",
maintenance: "2018-04-30",
end: "2019-04-30",
codename: "Boron"
};
var v7 = {
start: "2016-10-25",
maintenance: "2017-04-30",
end: "2017-06-30"
};
var v8 = {
start: "2017-05-30",
lts: "2017-10-31",
maintenance: "2019-01-01",
end: "2019-12-31",
codename: "Carbon"
};
var v9 = {
start: "2017-10-01",
maintenance: "2018-04-01",
end: "2018-06-30"
};
var v10 = {
start: "2018-04-24",
lts: "2018-10-30",
maintenance: "2020-05-19",
end: "2021-04-30",
codename: "Dubnium"
};
var v11 = {
start: "2018-10-23",
maintenance: "2019-04-22",
end: "2019-06-01"
};
var v12 = {
start: "2019-04-23",
lts: "2019-10-21",
maintenance: "2020-11-30",
end: "2022-04-30",
codename: "Erbium"
};
var v13 = {
start: "2019-10-22",
maintenance: "2020-04-01",
end: "2020-06-01"
};
var v14 = {
start: "2020-04-21",
lts: "2020-10-27",
maintenance: "2021-10-19",
end: "2023-04-30",
codename: "Fermium"
};
var v15 = {
start: "2020-10-20",
maintenance: "2021-04-01",
end: "2021-06-01"
};
var v16 = {
start: "2021-04-20",
lts: "2021-10-26",
maintenance: "2022-10-18",
end: "2023-09-11",
codename: "Gallium"
};
var v17 = {
start: "2021-10-19",
maintenance: "2022-04-01",
end: "2022-06-01"
};
var v18 = {
start: "2022-04-19",
lts: "2022-10-25",
maintenance: "2023-10-18",
end: "2025-04-30",
codename: "Hydrogen"
};
var v19 = {
start: "2022-10-18",
maintenance: "2023-04-01",
end: "2023-06-01"
};
var v20 = {
start: "2023-04-18",
lts: "2023-10-24",
maintenance: "2024-10-22",
end: "2026-04-30",
codename: "Iron"
};
var v21 = {
start: "2023-10-17",
maintenance: "2024-04-01",
end: "2024-06-01"
};
var v22 = {
start: "2024-04-24",
lts: "2024-10-29",
maintenance: "2025-10-21",
end: "2027-04-30",
codename: "Jod"
};
var v23 = {
start: "2024-10-16",
maintenance: "2025-04-01",
end: "2025-06-01"
};
var v24 = {
start: "2025-04-22",
lts: "2025-10-28",
maintenance: "2026-10-20",
end: "2028-04-30",
codename: ""
};
var jsEOL = {
"v0.8": {
start: "2012-06-25",
end: "2014-07-31"
},
"v0.10": {
start: "2013-03-11",
end: "2016-10-31"
},
"v0.12": {
start: "2015-02-06",
end: "2016-12-31"
},
v4: v4,
v5: v5,
v6: v6,
v7: v7,
v8: v8,
v9: v9,
v10: v10,
v11: v11,
v12: v12,
v13: v13,
v14: v14,
v15: v15,
v16: v16,
v17: v17,
v18: v18,
v19: v19,
v20: v20,
v21: v21,
v22: v22,
v23: v23,
v24: v24
};
function BrowserslistError(message) {
this.name = 'BrowserslistError';
this.message = message;
this.browserslist = true;
if (Error.captureStackTrace) {
Error.captureStackTrace(this, BrowserslistError);
}
}
BrowserslistError.prototype = Error.prototype;
var error$1 = BrowserslistError;
function noop() {}
var browser = {
loadQueries: function loadQueries() {
throw new error$1(
'Sharable configs are not supported in client-side build of Browserslist'
)
},
getStat: function getStat(opts) {
return opts.stats
},
loadConfig: function loadConfig(opts) {
if (opts.config) {
throw new error$1(
'Browserslist config are not supported in client-side build'
)
}
},
loadCountry: function loadCountry() {
throw new error$1(
'Country statistics are not supported ' +
'in client-side build of Browserslist'
)
},
loadFeature: function loadFeature() {
throw new error$1(
'Supports queries are not available in client-side build of Browserslist'
)
},
currentNode: function currentNode(resolve, context) {
return resolve(['maintained node versions'], context)[0]
},
parseConfig: noop,
readConfig: noop,
findConfig: noop,
findConfigFile: noop,
clearCaches: noop,
oldDataWarning: noop,
env: {}
};
var AND_REGEXP = /^\s+and\s+(.*)/i;
var OR_REGEXP = /^(?:,\s*|\s+or\s+)(.*)/i;
function flatten(array) {
if (!Array.isArray(array)) return [array]
return array.reduce(function (a, b) {
return a.concat(flatten(b))
}, [])
}
function find(string, predicate) {
for (var max = string.length, n = 1; n = 0; i--) {
if (minimum > getMajor(released[i])) break
selected.unshift(released[i]);
}
return selected
}
function uniq$2(array) {
var filtered = [];
for (var i = 0; i ') {
return function (v) {
return parseLatestFloat(v) > version
}
} else if (sign === '>=') {
return function (v) {
return parseLatestFloat(v) >= version
}
} else if (sign === '') {
return function (v) {
v = v.split('.').map(parseSimpleInt);
return compareSemver(v, version) > 0
}
} else if (sign === '>=') {
return function (v) {
v = v.split('.').map(parseSimpleInt);
return compareSemver(v, version) >= 0
}
} else if (sign === ' 0
}
} else {
return function (v) {
v = v.split('.').map(parseSimpleInt);
return compareSemver(version, v) >= 0
}
}
}
function parseSimpleInt(x) {
return parseInt(x)
}
function compare(a, b) {
if (a b) return +1
return 0
}
function compareSemver(a, b) {
return (
compare(parseInt(a[0]), parseInt(b[0])) ||
compare(parseInt(a[1] || '0'), parseInt(b[1] || '0')) ||
compare(parseInt(a[2] || '0'), parseInt(b[2] || '0'))
)
}
// this follows the npm-like semver behavior
function semverFilterLoose(operator, range) {
range = range.split('.').map(parseSimpleInt);
if (typeof range[1] === 'undefined') {
range[1] = 'x';
}
// ignore any patch version because we only return minor versions
// range[2] = 'x'
switch (operator) {
case '=':
default:
return function (version) {
version = version.split('.').map(parseSimpleInt);
return compareSemverLoose(version, range) >= 0
}
}
}
// this follows the npm-like semver behavior
function compareSemverLoose(version, range) {
if (version[0] !== range[0]) {
return version[0] = since
});
return selected.concat(versions.map(nameMapper(data.name)))
}, [])
}
function cloneData(data) {
return {
name: data.name,
versions: data.versions,
released: data.released,
releaseDate: data.releaseDate
}
}
function byName(name, context) {
name = name.toLowerCase();
name = browserslist.aliases[name] || name;
if (context.mobileToDesktop && browserslist.desktopNames[name]) {
var desktop = browserslist.data[browserslist.desktopNames[name]];
if (name === 'android') {
return normalizeAndroidData(cloneData(browserslist.data[name]), desktop)
} else {
var cloned = cloneData(desktop);
cloned.name = name;
return cloned
}
}
return browserslist.data[name]
}
function normalizeAndroidVersions(androidVersions, chromeVersions) {
var iFirstEvergreen = chromeVersions.indexOf(ANDROID_EVERGREEN_FIRST);
return androidVersions
.filter(function (version) {
return /^(?:[2-4]\.|[34]$)/.test(version)
})
.concat(chromeVersions.slice(iFirstEvergreen))
}
function copyObject(obj) {
var copy = {};
for (var key in obj) {
copy[key] = obj[key];
}
return copy
}
function normalizeAndroidData(android, chrome) {
android.released = normalizeAndroidVersions(android.released, chrome.released);
android.versions = normalizeAndroidVersions(android.versions, chrome.versions);
android.releaseDate = copyObject(android.releaseDate);
android.released.forEach(function (v) {
if (android.releaseDate[v] === undefined) {
android.releaseDate[v] = chrome.releaseDate[v];
}
});
return android
}
function checkName(name, context) {
var data = byName(name, context);
if (!data) throw new error$1('Unknown browser ' + name)
return data
}
function unknownQuery(query) {
return new error$1(
'Unknown browser query `' +
query +
'`. ' +
'Maybe you are using old Browserslist or made typo in query.'
)
}
// Adjusts last X versions queries for some mobile browsers,
// where caniuse data jumps from a legacy version to the latest
function filterJumps(list, name, nVersions, context) {
var jump = 1;
switch (name) {
case 'android':
if (context.mobileToDesktop) return list
var released = browserslist.data.chrome.released;
jump = released.length - released.indexOf(ANDROID_EVERGREEN_FIRST);
break
case 'op_mob':
var latest = browserslist.data.op_mob.released.slice(-1)[0];
jump = getMajor(latest) - OP_MOB_BLINK_FIRST + 1;
break
default:
return list
}
if (nVersions = 0 || (withPartial && flags.indexOf('a') >= 0))
)
}
function resolve(queries, context) {
return parseQueries(queries).reduce(function (result, node, index) {
if (node.not && index === 0) {
throw new error$1(
'Write any browsers query (for instance, `defaults`) ' +
'before `' +
node.query +
'`'
)
}
var type = QUERIES[node.type];
var array = type.select.call(browserslist, context, node).map(function (j) {
var parts = j.split(' ');
if (parts[1] === '0') {
return parts[0] + ' ' + byName(parts[0], context).versions[0]
} else {
return j
}
});
if (node.compose === 'and') {
if (node.not) {
return result.filter(function (j) {
return array.indexOf(j) === -1
})
} else {
return result.filter(function (j) {
return array.indexOf(j) !== -1
})
}
} else {
if (node.not) {
var filter = {};
array.forEach(function (j) {
filter[j] = true;
});
return result.filter(function (j) {
return !filter[j]
})
}
return result.concat(array)
}
}, [])
}
function prepareOpts(opts) {
if (typeof opts === 'undefined') opts = {};
if (typeof opts.path === 'undefined') {
opts.path = path$2.resolve ? path$2.resolve('.') : '.';
}
return opts
}
function prepareQueries(queries, opts) {
if (typeof queries === 'undefined' || queries === null) {
var config = browserslist.loadConfig(opts);
if (config) {
queries = config;
} else {
queries = browserslist.defaults;
}
}
return queries
}
function checkQueries(queries) {
if (!(typeof queries === 'string' || Array.isArray(queries))) {
throw new error$1(
'Browser queries must be an array or string. Got ' + typeof queries + '.'
)
}
}
var cache$1 = {};
var parseCache = {};
function browserslist(queries, opts) {
opts = prepareOpts(opts);
queries = prepareQueries(queries, opts);
checkQueries(queries);
var needsPath = parseQueries(queries).some(function (node) {
return QUERIES[node.type].needsPath
});
var context = {
ignoreUnknownVersions: opts.ignoreUnknownVersions,
dangerousExtend: opts.dangerousExtend,
mobileToDesktop: opts.mobileToDesktop,
env: opts.env
};
// Removing to avoid using context.path without marking query as needsPath
if (needsPath) {
context.path = opts.path;
}
browser.oldDataWarning(browserslist.data);
var stats = browser.getStat(opts, browserslist.data);
if (stats) {
context.customUsage = {};
for (var browser$1 in stats) {
fillUsage(context.customUsage, browser$1, stats[browser$1]);
}
}
var cacheKey = JSON.stringify([queries, context]);
if (cache$1[cacheKey]) return cache$1[cacheKey]
var result = uniq$2(resolve(queries, context)).sort(function (name1, name2) {
name1 = name1.split(' ');
name2 = name2.split(' ');
if (name1[0] === name2[0]) {
// assumptions on caniuse data
// 1) version ranges never overlaps
// 2) if version is not a range, it never contains `-`
var version1 = name1[1].split('-')[0];
var version2 = name2[1].split('-')[0];
return compareSemver(version2.split('.'), version1.split('.'))
} else {
return compare(name1[0], name2[0])
}
});
if (!browser.env.BROWSERSLIST_DISABLE_CACHE) {
cache$1[cacheKey] = result;
}
return result
}
function parseQueries(queries) {
var cacheKey = JSON.stringify(queries);
if (cacheKey in parseCache) return parseCache[cacheKey]
var result = parse$3(QUERIES, queries);
if (!browser.env.BROWSERSLIST_DISABLE_CACHE) {
parseCache[cacheKey] = result;
}
return result
}
browserslist.parse = function (queries, opts) {
opts = prepareOpts(opts);
queries = prepareQueries(queries, opts);
checkQueries(queries);
return parseQueries(queries)
};
// Will be filled by Can I Use data below
browserslist.cache = {};
browserslist.data = {};
browserslist.usage = {
global: {},
custom: null
};
// Default browsers query
browserslist.defaults = ['> 0.5%', 'last 2 versions', 'Firefox ESR', 'not dead'];
// Browser names aliases
browserslist.aliases = {
fx: 'firefox',
ff: 'firefox',
ios: 'ios_saf',
explorer: 'ie',
blackberry: 'bb',
explorermobile: 'ie_mob',
operamini: 'op_mini',
operamobile: 'op_mob',
chromeandroid: 'and_chr',
firefoxandroid: 'and_ff',
ucandroid: 'and_uc',
qqandroid: 'and_qq'
};
// Can I Use only provides a few versions for some browsers (e.g. and_chr).
// Fallback to a similar browser for unknown versions
// Note op_mob is not included as its chromium versions are not in sync with Opera desktop
browserslist.desktopNames = {
and_chr: 'chrome',
and_ff: 'firefox',
ie_mob: 'ie',
android: 'chrome' // has extra processing logic
};
// Aliases to work with joined versions like `ios_saf 7.0-7.1`
browserslist.versionAliases = {};
browserslist.clearCaches = browser.clearCaches;
browserslist.parseConfig = browser.parseConfig;
browserslist.readConfig = browser.readConfig;
browserslist.findConfigFile = browser.findConfigFile;
browserslist.findConfig = browser.findConfig;
browserslist.loadConfig = browser.loadConfig;
browserslist.coverage = function (browsers, stats) {
var data;
if (typeof stats === 'undefined') {
data = browserslist.usage.global;
} else if (stats === 'my stats') {
var opts = {};
opts.path = path$2.resolve ? path$2.resolve('.') : '.';
var customStats = browser.getStat(opts);
if (!customStats) {
throw new error$1('Custom usage statistics was not provided')
}
data = {};
for (var browser$1 in customStats) {
fillUsage(data, browser$1, customStats[browser$1]);
}
} else if (typeof stats === 'string') {
if (stats.length > 2) {
stats = stats.toLowerCase();
} else {
stats = stats.toUpperCase();
}
browser.loadCountry(browserslist.usage, stats, browserslist.data);
data = browserslist.usage[stats];
} else {
if ('dataByBrowser' in stats) {
stats = stats.dataByBrowser;
}
data = {};
for (var name in stats) {
for (var version in stats[name]) {
data[name + ' ' + version] = stats[name][version];
}
}
}
return browsers.reduce(function (all, i) {
var usage = data[i];
if (usage === undefined) {
usage = data[i.replace(/ \S+$/, ' 0')];
}
return all + (usage || 0)
}, 0)
};
function nodeQuery(context, node) {
var matched = browserslist.nodeVersions.filter(function (i) {
return isVersionsMatch(i, node.version)
});
if (matched.length === 0) {
if (context.ignoreUnknownVersions) {
return []
} else {
throw new error$1(
'Unknown version ' + node.version + ' of Node.js'
)
}
}
return ['node ' + matched[matched.length - 1]]
}
function sinceQuery(context, node) {
var year = parseInt(node.year);
var month = parseInt(node.month || '01') - 1;
var day = parseInt(node.day || '01');
return filterByYear(Date.UTC(year, month, day, 0, 0, 0), context)
}
function coverQuery(context, node) {
var coverage = parseFloat(node.coverage);
var usage = browserslist.usage.global;
if (node.place) {
if (node.place.match(/^my\s+stats$/i)) {
if (!context.customUsage) {
throw new error$1('Custom usage statistics was not provided')
}
usage = context.customUsage;
} else {
var place;
if (node.place.length === 2) {
place = node.place.toUpperCase();
} else {
place = node.place.toLowerCase();
}
browser.loadCountry(browserslist.usage, place, browserslist.data);
usage = browserslist.usage[place];
}
}
var versions = Object.keys(usage).sort(function (a, b) {
return usage[b] - usage[a]
});
var coveraged = 0;
var result = [];
var version;
for (var i = 0; i = coverage) break
}
return result
}
var QUERIES = {
last_major_versions: {
matches: ['versions'],
regexp: /^last\s+(\d+)\s+major\s+versions?$/i,
select: function (context, node) {
return Object.keys(agents$2).reduce(function (selected, name) {
var data = byName(name, context);
if (!data) return selected
var list = getMajorVersions(data.released, node.versions);
list = list.map(nameMapper(data.name));
list = filterJumps(list, data.name, node.versions, context);
return selected.concat(list)
}, [])
}
},
last_versions: {
matches: ['versions'],
regexp: /^last\s+(\d+)\s+versions?$/i,
select: function (context, node) {
return Object.keys(agents$2).reduce(function (selected, name) {
var data = byName(name, context);
if (!data) return selected
var list = data.released.slice(-node.versions);
list = list.map(nameMapper(data.name));
list = filterJumps(list, data.name, node.versions, context);
return selected.concat(list)
}, [])
}
},
last_electron_major_versions: {
matches: ['versions'],
regexp: /^last\s+(\d+)\s+electron\s+major\s+versions?$/i,
select: function (context, node) {
var validVersions = getMajorVersions(Object.keys(versions$1), node.versions);
return validVersions.map(function (i) {
return 'chrome ' + versions$1[i]
})
}
},
last_node_major_versions: {
matches: ['versions'],
regexp: /^last\s+(\d+)\s+node\s+major\s+versions?$/i,
select: function (context, node) {
return getMajorVersions(browserslist.nodeVersions, node.versions).map(
function (version) {
return 'node ' + version
}
)
}
},
last_browser_major_versions: {
matches: ['versions', 'browser'],
regexp: /^last\s+(\d+)\s+(\w+)\s+major\s+versions?$/i,
select: function (context, node) {
var data = checkName(node.browser, context);
var validVersions = getMajorVersions(data.released, node.versions);
var list = validVersions.map(nameMapper(data.name));
list = filterJumps(list, data.name, node.versions, context);
return list
}
},
last_electron_versions: {
matches: ['versions'],
regexp: /^last\s+(\d+)\s+electron\s+versions?$/i,
select: function (context, node) {
return Object.keys(versions$1)
.slice(-node.versions)
.map(function (i) {
return 'chrome ' + versions$1[i]
})
}
},
last_node_versions: {
matches: ['versions'],
regexp: /^last\s+(\d+)\s+node\s+versions?$/i,
select: function (context, node) {
return browserslist.nodeVersions
.slice(-node.versions)
.map(function (version) {
return 'node ' + version
})
}
},
last_browser_versions: {
matches: ['versions', 'browser'],
regexp: /^last\s+(\d+)\s+(\w+)\s+versions?$/i,
select: function (context, node) {
var data = checkName(node.browser, context);
var list = data.released.slice(-node.versions).map(nameMapper(data.name));
list = filterJumps(list, data.name, node.versions, context);
return list
}
},
unreleased_versions: {
matches: [],
regexp: /^unreleased\s+versions$/i,
select: function (context) {
return Object.keys(agents$2).reduce(function (selected, name) {
var data = byName(name, context);
if (!data) return selected
var list = data.versions.filter(function (v) {
return data.released.indexOf(v) === -1
});
list = list.map(nameMapper(data.name));
return selected.concat(list)
}, [])
}
},
unreleased_electron_versions: {
matches: [],
regexp: /^unreleased\s+electron\s+versions?$/i,
select: function () {
return []
}
},
unreleased_browser_versions: {
matches: ['browser'],
regexp: /^unreleased\s+(\w+)\s+versions?$/i,
select: function (context, node) {
var data = checkName(node.browser, context);
return data.versions
.filter(function (v) {
return data.released.indexOf(v) === -1
})
.map(nameMapper(data.name))
}
},
last_years: {
matches: ['years'],
regexp: /^last\s+(\d*.?\d+)\s+years?$/i,
select: function (context, node) {
return filterByYear(Date.now() - YEAR * node.years, context)
}
},
since_y: {
matches: ['year'],
regexp: /^since (\d+)$/i,
select: sinceQuery
},
since_y_m: {
matches: ['year', 'month'],
regexp: /^since (\d+)-(\d+)$/i,
select: sinceQuery
},
since_y_m_d: {
matches: ['year', 'month', 'day'],
regexp: /^since (\d+)-(\d+)-(\d+)$/i,
select: sinceQuery
},
popularity: {
matches: ['sign', 'popularity'],
regexp: /^(>=?|') {
if (usage[version] > popularity) {
result.push(version);
}
} else if (node.sign === '= popularity) {
result.push(version);
}
return result
}, [])
}
},
popularity_in_my_stats: {
matches: ['sign', 'popularity'],
regexp: /^(>=?|') {
if (percentage > popularity) {
result.push(version);
}
} else if (node.sign === '= popularity) {
result.push(version);
}
return result
}, [])
}
},
popularity_in_config_stats: {
matches: ['sign', 'popularity', 'config'],
regexp: /^(>=?|') {
if (percentage > popularity) {
result.push(version);
}
} else if (node.sign === '= popularity) {
result.push(version);
}
return result
}, [])
}
},
popularity_in_place: {
matches: ['sign', 'popularity', 'place'],
regexp: /^(>=?|') {
if (percentage > popularity) {
result.push(version);
}
} else if (node.sign === '= popularity) {
result.push(version);
}
return result
}, [])
}
},
cover: {
matches: ['coverage'],
regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%$/i,
select: coverQuery
},
cover_in: {
matches: ['coverage', 'place'],
regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/i,
select: coverQuery
},
supports: {
matches: ['supportType', 'feature'],
regexp: /^(?:(fully|partially)\s+)?supports\s+([\w-]+)$/,
select: function (context, node) {
browser.loadFeature(browserslist.cache, node.feature);
var withPartial = node.supportType !== 'fully';
var features = browserslist.cache[node.feature];
var result = [];
for (var name in features) {
var data = byName(name, context);
// Only check desktop when latest released mobile has support
var iMax = data.released.length - 1;
while (iMax >= 0) {
if (data.released[iMax] in features[name]) break
iMax--;
}
var checkDesktop =
context.mobileToDesktop &&
name in browserslist.desktopNames &&
isSupported(features[name][data.released[iMax]], withPartial);
data.versions.forEach(function (version) {
var flags = features[name][version];
if (flags === undefined && checkDesktop) {
flags = features[browserslist.desktopNames[name]][version];
}
if (isSupported(flags, withPartial)) {
result.push(name + ' ' + version);
}
});
}
return result
}
},
electron_range: {
matches: ['from', 'to'],
regexp: /^electron\s+([\d.]+)\s*-\s*([\d.]+)$/i,
select: function (context, node) {
var fromToUse = normalizeElectron(node.from);
var toToUse = normalizeElectron(node.to);
var from = parseFloat(node.from);
var to = parseFloat(node.to);
if (!versions$1[fromToUse]) {
throw new error$1('Unknown version ' + from + ' of electron')
}
if (!versions$1[toToUse]) {
throw new error$1('Unknown version ' + to + ' of electron')
}
return Object.keys(versions$1)
.filter(function (i) {
var parsed = parseFloat(i);
return parsed >= from && parsed =', node.from))
.filter(semverFilterLoose('= from && parsed =?|=?|=?| Date.parse(jsEOL[key].start) &&
isEolReleased(key)
)
})
.map(function (key) {
return 'node ' + key.slice(1)
});
return resolve(queries, context)
}
},
phantomjs_1_9: {
matches: [],
regexp: /^phantomjs\s+1.9$/i,
select: function () {
return ['safari 5']
}
},
phantomjs_2_1: {
matches: [],
regexp: /^phantomjs\s+2.1$/i,
select: function () {
return ['safari 6']
}
},
browser_version: {
matches: ['browser', 'version'],
regexp: /^(\w+)\s+(tp|[\d.]+)$/i,
select: function (context, node) {
var version = node.version;
if (/^tp$/i.test(version)) version = 'TP';
var data = checkName(node.browser, context);
var alias = normalizeVersion(data, version);
if (alias) {
version = alias;
} else {
if (version.indexOf('.') === -1) {
alias = version + '.0';
} else {
alias = version.replace(/\.0$/, '');
}
alias = normalizeVersion(data, alias);
if (alias) {
version = alias;
} else if (context.ignoreUnknownVersions) {
return []
} else {
throw new error$1(
'Unknown version ' + version + ' of ' + node.browser
)
}
}
return [data.name + ' ' + version]
}
},
browserslist_config: {
matches: [],
regexp: /^browserslist config$/i,
needsPath: true,
select: function (context) {
return browserslist(undefined, context)
}
},
extends: {
matches: ['config'],
regexp: /^extends (.+)$/i,
needsPath: true,
select: function (context, node) {
return resolve(browser.loadQueries(context, node.config), context)
}
},
defaults: {
matches: [],
regexp: /^defaults$/i,
select: function (context) {
return resolve(browserslist.defaults, context)
}
},
dead: {
matches: [],
regexp: /^dead$/i,
select: function (context) {
var dead = [
'Baidu >= 0',
'ie {
if (cipher & supported$1[support]) list.push(support);
return list
}, []);
// notes
let notes = cipher >> 7;
let notesArray = [];
while (notes) {
let note = Math.floor(Math.log(notes) / MATH2LOG) + 1;
notesArray.unshift(`#${note}`);
notes -= Math.pow(2, note - 1);
}
return stats.concat(notesArray).join(' ')
}
function unpackFeature(packed) {
let unpacked = {
status: statuses[packed.B],
title: packed.C,
shown: packed.D
};
unpacked.stats = Object.keys(packed.A).reduce((browserStats, key) => {
let browser = packed.A[key];
browserStats[browsers$1[key]] = Object.keys(browser).reduce(
(stats, support) => {
let packedVersions = browser[support].split(' ');
let unpacked2 = unpackSupport(support);
packedVersions.forEach(v => (stats[versions[v]] = unpacked2));
return stats
},
{}
);
return browserStats
}, {});
return unpacked
}
var feature = unpackFeature;
var _default = unpackFeature;
feature.default = _default;
var borderRadius$1={A:{A:{"1":"F A B","2":"K D E nC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 9 oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","257":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB","289":"MC rC sC","292":"oC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"J"},E:{"1":"QB D E F A B C L M G wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","33":"J tC SC","129":"K uC vC"},F:{"1":"0 1 2 3 4 5 6 7 8 B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 7C 8C GC lC 9C HC","2":"F 5C 6C"},G:{"1":"E AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","33":"SC"},H:{"2":"XD"},I:{"1":"MC J I ZD aD bD mC cD dD","33":"YD"},J:{"1":"D A"},K:{"1":"B C H GC lC HC","2":"A"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"sD","257":"rD"}},B:4,C:"CSS3 Border-radius (rounded corners)",D:true};
var cssBoxshadow={A:{A:{"1":"F A B","2":"K D E nC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC","33":"rC sC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"J QB K D E F"},E:{"1":"K D E F A B C L M G uC vC wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","33":"QB","164":"J tC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 7C 8C GC lC 9C HC","2":"F 5C 6C"},G:{"1":"E BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","33":"AD mC","164":"SC"},H:{"2":"XD"},I:{"1":"J I bD mC cD dD","164":"MC YD ZD aD"},J:{"1":"A","33":"D"},K:{"1":"B C H GC lC HC","2":"A"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:4,C:"CSS3 Box-shadow",D:true};
var cssAnimation={A:{A:{"1":"A B","2":"K D E F nC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 1 2 3 4 5 6 7 8 9 N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J rC sC","33":"QB K D E F A B C L M G"},D:{"1":"0 9 hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB"},E:{"1":"F A B C L M G xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"tC SC","33":"K D E uC vC wC","292":"J QB"},F:{"1":"0 UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z HC","2":"F B 5C 6C 7C 8C GC lC 9C","33":"1 2 3 4 5 6 7 8 C G N O P RB SB TB"},G:{"1":"FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","33":"E CD DD ED","164":"SC AD mC BD"},H:{"2":"XD"},I:{"1":"I","33":"J bD mC cD dD","164":"MC YD ZD aD"},J:{"33":"D A"},K:{"1":"H HC","2":"A B C GC lC"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:5,C:"CSS Animation",D:true};
var cssTransitions={A:{A:{"1":"A B","2":"K D E F nC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 1 2 3 4 5 6 7 8 9 N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC rC sC","33":"QB K D E F A B C L M G","164":"J"},D:{"1":"0 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"1 2 3 4 5 6 J QB K D E F A B C L M G N O P RB"},E:{"1":"D E F A B C L M G vC wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","33":"K uC","164":"J QB tC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z HC","2":"F 5C 6C","33":"C","164":"B 7C 8C GC lC 9C"},G:{"1":"E DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","33":"CD","164":"SC AD mC BD"},H:{"2":"XD"},I:{"1":"I cD dD","33":"MC J YD ZD aD bD mC"},J:{"1":"A","33":"D"},K:{"1":"H HC","33":"C","164":"A B GC lC"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:5,C:"CSS3 Transitions",D:true};
var transforms2d={A:{A:{"2":"nC","8":"K D E","129":"A B","161":"F"},B:{"1":"0 9 O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","129":"C L M G N"},C:{"1":"0 1 2 3 4 5 6 7 8 9 N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC","33":"J QB K D E F A B C L M G rC sC"},D:{"1":"0 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB"},E:{"1":"F A B C L M G xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","33":"J QB K D E tC SC uC vC wC"},F:{"1":"0 4 5 6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z HC","2":"F 5C 6C","33":"1 2 3 B C G N O P RB 7C 8C GC lC 9C"},G:{"1":"FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","33":"E SC AD mC BD CD DD ED"},H:{"2":"XD"},I:{"1":"I","33":"MC J YD ZD aD bD mC cD dD"},J:{"33":"D A"},K:{"1":"B C H GC lC HC","2":"A"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:4,C:"CSS3 2D Transforms",D:true};
var transforms3d={A:{A:{"2":"K D E F nC","132":"A B"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 1 2 3 4 5 6 7 8 9 N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J QB K D E F rC sC","33":"A B C L M G"},D:{"1":"0 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"J QB K D E F A B","33":"1 2 3 4 5 6 7 8 C L M G N O P RB SB TB UB VB WB XB YB ZB"},E:{"1":"VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"tC SC","33":"J QB K D E uC vC wC","257":"F A B C L M G xC TC GC HC yC zC 0C UC"},F:{"1":"0 4 5 6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","33":"1 2 3 G N O P RB"},G:{"1":"VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","33":"E SC AD mC BD CD DD ED","257":"FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC"},H:{"2":"XD"},I:{"1":"I","2":"YD ZD aD","33":"MC J bD mC cD dD"},J:{"33":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"132":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:5,C:"CSS3 3D Transforms",D:true};
var cssGradients={A:{A:{"1":"A B","2":"K D E F nC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC rC","260":"1 2 3 4 5 6 7 8 N O P RB SB TB UB VB WB XB YB ZB","292":"J QB K D E F A B C L M G sC"},D:{"1":"0 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"1 2 3 4 5 6 A B C L M G N O P RB","548":"J QB K D E F"},E:{"1":"VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"tC SC","260":"D E F A B C L M G vC wC xC TC GC HC yC zC 0C UC","292":"K uC","804":"J QB"},F:{"1":"0 1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z HC","2":"F B 5C 6C 7C 8C","33":"C 9C","164":"GC lC"},G:{"1":"VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","260":"E DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC","292":"BD CD","804":"SC AD mC"},H:{"2":"XD"},I:{"1":"I cD dD","33":"J bD mC","548":"MC YD ZD aD"},J:{"1":"A","548":"D"},K:{"1":"H HC","2":"A B","33":"C","164":"GC lC"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:4,C:"CSS Gradients",D:true};
var css3Boxsizing={A:{A:{"1":"E F A B","8":"K D nC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 9 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","33":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB rC sC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"J QB K D E F"},E:{"1":"K D E F A B C L M G uC vC wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","33":"J QB tC SC"},F:{"1":"0 1 2 3 4 5 6 7 8 B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 5C 6C 7C 8C GC lC 9C HC","2":"F"},G:{"1":"E BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","33":"SC AD mC"},H:{"1":"XD"},I:{"1":"J I bD mC cD dD","33":"MC YD ZD aD"},J:{"1":"A","33":"D"},K:{"1":"A B C H GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:5,C:"CSS3 Box-sizing",D:true};
var cssFilters={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","1028":"L M G N O P","1346":"C"},C:{"1":"0 9 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC rC","196":"YB","516":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB sC"},D:{"1":"0 9 rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"J QB K D E F A B C L M G N O","33":"1 2 3 4 5 6 7 8 P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB"},E:{"1":"A B C L M G xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB tC SC uC","33":"K D E F vC wC"},F:{"1":"0 eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","33":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB"},G:{"1":"GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD","33":"E CD DD ED FD"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC","33":"cD dD"},J:{"2":"D","33":"A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 gD hD iD TC jD kD lD mD nD JC KC LC oD","33":"J eD fD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:5,C:"CSS Filter Effects",D:true};
var cssFilterFunction={A:{A:{"2":"K D E F A B nC"},B:{"2":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"2":"0 1 2 3 4 5 6 7 8 9 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC rC sC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC"},E:{"1":"A B C L M G xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K D E tC SC uC vC wC","33":"F"},F:{"2":"0 1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 5C 6C 7C 8C GC lC 9C HC"},G:{"1":"HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"E SC AD mC BD CD DD ED","33":"FD GD"},H:{"2":"XD"},I:{"2":"MC J I YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"2":"A B C H GC lC HC"},L:{"2":"I"},M:{"2":"FC"},N:{"2":"A B"},O:{"2":"IC"},P:{"2":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"2":"pD"},R:{"2":"qD"},S:{"2":"rD sD"}},B:5,C:"CSS filter() function",D:true};
var cssBackdropFilter={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N","257":"O P"},C:{"1":"0 9 m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B rC sC","578":"6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l"},D:{"1":"0 9 CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB","194":"lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC"},E:{"1":"LC gC hC iC jC kC 4C","2":"J QB K D E tC SC uC vC wC","33":"F A B C L M G xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C"},F:{"1":"0 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB 5C 6C 7C 8C GC lC 9C HC","194":"YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB"},G:{"1":"LC gC hC iC jC kC","2":"E SC AD mC BD CD DD ED","33":"FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 kD lD mD nD JC KC LC oD","2":"J","194":"eD fD gD hD iD TC jD"},Q:{"2":"pD"},R:{"1":"qD"},S:{"2":"rD sD"}},B:7,C:"CSS Backdrop Filter",D:true};
var cssElementFunction={A:{A:{"2":"K D E F A B nC"},B:{"2":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"33":"0 1 2 3 4 5 6 7 8 9 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","164":"oC MC rC sC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC"},E:{"2":"J QB K D E F A B C L M G tC SC uC vC wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C"},F:{"2":"0 1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 5C 6C 7C 8C GC lC 9C HC"},G:{"2":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},H:{"2":"XD"},I:{"2":"MC J I YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"2":"A B C H GC lC HC"},L:{"2":"I"},M:{"33":"FC"},N:{"2":"A B"},O:{"2":"IC"},P:{"2":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"2":"pD"},R:{"2":"qD"},S:{"33":"rD sD"}},B:5,C:"CSS element() function",D:true};
var multicolumn={A:{A:{"1":"A B","2":"K D E F nC"},B:{"1":"C L M G N O P","516":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"132":"qB rB sB tB uB vB wB NC xB OC yB zB 0B","164":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB rC sC","516":"1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a","1028":"0 9 b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC"},D:{"420":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB","516":"0 9 oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC"},E:{"1":"A B C L M G TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","132":"F xC","164":"D E wC","420":"J QB K tC SC uC vC"},F:{"1":"C GC lC 9C HC","2":"F B 5C 6C 7C 8C","420":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB","516":"0 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","132":"FD GD","164":"E DD ED","420":"SC AD mC BD CD"},H:{"1":"XD"},I:{"420":"MC J YD ZD aD bD mC cD dD","516":"I"},J:{"420":"D A"},K:{"1":"C GC lC HC","2":"A B","516":"H"},L:{"516":"I"},M:{"1028":"FC"},N:{"1":"A B"},O:{"516":"IC"},P:{"420":"J","516":"1 2 3 4 5 6 7 8 eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"516":"pD"},R:{"516":"qD"},S:{"164":"rD sD"}},B:4,C:"CSS3 Multiple column layout",D:true};
var userSelectNone={A:{A:{"2":"K D E F nC","33":"A B"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","33":"C L M G N O P"},C:{"1":"0 9 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","33":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B rC sC"},D:{"1":"0 9 sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB"},E:{"33":"J QB K D E F A B C L M G tC SC uC vC wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C"},F:{"1":"0 fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","33":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB"},G:{"33":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},H:{"2":"XD"},I:{"1":"I","33":"MC J YD ZD aD bD mC cD dD"},J:{"33":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"33":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 fD gD hD iD TC jD kD lD mD nD JC KC LC oD","33":"J eD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"sD","33":"rD"}},B:5,C:"CSS user-select: none",D:true};
var flexbox={A:{A:{"2":"K D E F nC","1028":"B","1316":"A"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","164":"1 2 oC MC J QB K D E F A B C L M G N O P RB rC sC","516":"3 4 5 6 7 8"},D:{"1":"0 9 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"2 3 4 5 6 7 8 SB","164":"1 J QB K D E F A B C L M G N O P RB"},E:{"1":"F A B C L M G xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","33":"D E vC wC","164":"J QB K tC SC uC"},F:{"1":"0 1 2 3 4 5 6 7 8 O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z HC","2":"F B C 5C 6C 7C 8C GC lC 9C","33":"G N"},G:{"1":"FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","33":"E DD ED","164":"SC AD mC BD CD"},H:{"1":"XD"},I:{"1":"I cD dD","164":"MC J YD ZD aD bD mC"},J:{"1":"A","164":"D"},K:{"1":"H HC","2":"A B C GC lC"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"B","292":"A"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:4,C:"CSS Flexible Box Layout Module",D:true};
var calc={A:{A:{"2":"K D E nC","260":"F","516":"A B"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 1 2 3 4 5 6 7 8 9 N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC rC sC","33":"J QB K D E F A B C L M G"},D:{"1":"0 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"J QB K D E F A B C L M G N O P","33":"1 2 3 4 5 6 RB"},E:{"1":"D E F A B C L M G vC wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB tC SC uC","33":"K"},F:{"1":"0 1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC"},G:{"1":"E DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD","33":"CD"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC","132":"cD dD"},J:{"1":"A","2":"D"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:4,C:"calc() as CSS unit value",D:true};
var backgroundImgOpts={A:{A:{"1":"F A B","2":"K D E nC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 1 2 3 4 5 6 7 8 9 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC rC","36":"sC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","516":"J QB K D E F A B C L M"},E:{"1":"D E F A B C L M G wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","772":"J QB K tC SC uC vC"},F:{"1":"0 1 2 3 4 5 6 7 8 B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 7C 8C GC lC 9C HC","2":"F 5C","36":"6C"},G:{"1":"E DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","4":"SC AD mC CD","516":"BD"},H:{"132":"XD"},I:{"1":"I cD dD","36":"YD","516":"MC J bD mC","548":"ZD aD"},J:{"1":"D A"},K:{"1":"A B C H GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:4,C:"CSS3 Background-image options",D:true};
var backgroundClipText={A:{A:{"2":"K D E F A B nC"},B:{"1":"G N O P","33":"C L M","129":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","161":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB"},C:{"1":"0 9 nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB rC sC"},D:{"129":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","161":"0 1 2 3 4 5 6 7 8 9 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB"},E:{"2":"tC","129":"IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","388":"QB K D E F A B C L M G uC vC wC xC TC GC HC yC zC 0C UC VC","420":"J SC"},F:{"2":"F B C 5C 6C 7C 8C GC lC 9C HC","129":"0 p q r s t u v w x y z","161":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o"},G:{"129":"IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","388":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC"},H:{"2":"XD"},I:{"16":"MC YD ZD aD","129":"I","161":"J bD mC cD dD"},J:{"161":"D A"},K:{"16":"A B C GC lC HC","129":"H"},L:{"129":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"161":"IC"},P:{"1":"6 7 8","161":"1 2 3 4 5 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"161":"pD"},R:{"161":"qD"},S:{"1":"rD sD"}},B:7,C:"Background-clip: text",D:true};
var fontFeature={A:{A:{"1":"A B","2":"K D E F nC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 9 YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC rC sC","33":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB","164":"J QB K D E F A B C L M"},D:{"1":"0 9 mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"J QB K D E F A B C L M G","33":"2 3 4 5 6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB","292":"1 N O P RB"},E:{"1":"A B C L M G xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"D E F tC SC vC wC","4":"J QB K uC"},F:{"1":"0 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","33":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB"},G:{"1":"GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"E DD ED FD","4":"SC AD mC BD CD"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC","33":"cD dD"},J:{"2":"D","33":"A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD","33":"J"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:2,C:"CSS font-feature-settings",D:true};
var fontKerning={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P"},C:{"1":"0 9 YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 oC MC J QB K D E F A B C L M G N O P RB rC sC","194":"5 6 7 8 SB TB UB VB WB XB"},D:{"1":"0 9 XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB","33":"TB UB VB WB"},E:{"1":"A B C L M G xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K tC SC uC vC","33":"D E F wC"},F:{"1":"0 1 2 3 4 5 6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G 5C 6C 7C 8C GC lC 9C HC","33":"N O P RB"},G:{"1":"LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD CD DD","33":"E ED FD GD HD ID JD KD"},H:{"2":"XD"},I:{"1":"I dD","2":"MC J YD ZD aD bD mC","33":"cD"},J:{"2":"D","33":"A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:4,C:"CSS3 font-kerning",D:true};
var borderImage$1={A:{A:{"1":"B","2":"K D E F A nC"},B:{"1":"0 9 M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","129":"C L"},C:{"1":"0 9 oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC","260":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB","804":"J QB K D E F A B C L M rC sC"},D:{"1":"0 9 uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","260":"pB qB rB sB tB","388":"UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB","1412":"1 2 3 4 5 6 7 8 G N O P RB SB TB","1956":"J QB K D E F A B C L M"},E:{"1":"VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","129":"A B C L M G xC TC GC HC yC zC 0C UC","1412":"K D E F vC wC","1956":"J QB tC SC uC"},F:{"1":"0 hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F 5C 6C","260":"cB dB eB fB gB","388":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB","1796":"7C 8C","1828":"B C GC lC 9C HC"},G:{"1":"VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","129":"GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC","1412":"E CD DD ED FD","1956":"SC AD mC BD"},H:{"1828":"XD"},I:{"1":"I","388":"cD dD","1956":"MC J YD ZD aD bD mC"},J:{"1412":"A","1924":"D"},K:{"1":"H","2":"A","1828":"B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"B","2":"A"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 gD hD iD TC jD kD lD mD nD JC KC LC oD","260":"eD fD","388":"J"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"sD","260":"rD"}},B:4,C:"CSS3 Border images",D:true};
var cssSelection={A:{A:{"1":"F A B","2":"K D E nC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","33":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC rC sC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC"},E:{"1":"J QB K D E F A B C L M G tC SC uC vC wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C"},F:{"1":"0 1 2 3 4 5 6 7 8 B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 5C 6C 7C 8C GC lC 9C HC","2":"F"},G:{"2":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},H:{"2":"XD"},I:{"1":"I cD dD","2":"MC J YD ZD aD bD mC"},J:{"1":"A","2":"D"},K:{"1":"C H lC HC","16":"A B GC"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"sD","33":"rD"}},B:5,C:"::selection CSS pseudo-element",D:true};
var cssPlaceholder={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","36":"C L M G N O P"},C:{"1":"0 9 pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","33":"1 2 3 4 5 6 7 8 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB","130":"oC MC J QB K D E F A B C L M G N O P rC sC"},D:{"1":"0 9 vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","36":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB"},E:{"1":"B C L M G TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J tC SC","36":"QB K D E F A uC vC wC xC"},F:{"1":"0 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","36":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB"},G:{"1":"ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD","36":"E mC BD CD DD ED FD GD HD"},H:{"2":"XD"},I:{"1":"I","36":"MC J YD ZD aD bD mC cD dD"},J:{"36":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"36":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 gD hD iD TC jD kD lD mD nD JC KC LC oD","36":"J eD fD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"sD","33":"rD"}},B:5,C:"::placeholder CSS pseudo-element",D:true};
var cssPlaceholderShown={A:{A:{"2":"K D E F nC","292":"A B"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P"},C:{"1":"0 9 pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC rC sC","164":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB"},D:{"1":"0 9 lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB"},E:{"1":"F A B C L M G xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K D E tC SC uC vC wC"},F:{"1":"0 YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB 5C 6C 7C 8C GC lC 9C HC"},G:{"1":"FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"E SC AD mC BD CD DD ED"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"J"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"sD","164":"rD"}},B:5,C:":placeholder-shown CSS pseudo-class",D:true};
var cssHyphens={A:{A:{"2":"K D E F nC","33":"A B"},B:{"1":"0 9 o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","33":"C L M G N O P","132":"Q H R S T U V W","260":"X Y Z a b c d e f g h i j k l m n"},C:{"1":"0 9 hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J QB rC sC","33":"1 2 3 4 5 6 7 8 K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB"},D:{"1":"0 9 X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB","132":"tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W"},E:{"1":"KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB tC SC","33":"K D E F A B C L M G uC vC wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C"},F:{"1":"0 a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB 5C 6C 7C 8C GC lC 9C HC","132":"gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z"},G:{"1":"KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD","33":"E mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 fD gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"J","132":"eD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:4,C:"CSS Hyphenation",D:true};
var fullscreen$1={A:{A:{"2":"K D E F A nC","548":"B"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","516":"C L M G N O P"},C:{"1":"0 9 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J QB K D E F rC sC","676":"1 2 3 4 5 6 7 8 A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB","1700":"lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB"},D:{"1":"0 9 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"J QB K D E F A B C L M","676":"G N O P RB","804":"1 2 3 4 5 6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B"},E:{"1":"ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB tC SC","548":"VC IC 1C JC WC XC YC","676":"uC","804":"K D E F A B C L M G vC wC xC TC GC HC yC zC 0C UC"},F:{"1":"0 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z HC","2":"F B C 5C 6C 7C 8C GC lC 9C","804":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB"},G:{"2":"E SC AD mC BD CD DD ED FD GD HD ID JD KD","2052":"LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},H:{"2":"XD"},I:{"2":"MC J I YD ZD aD bD mC cD dD"},J:{"2":"D","292":"A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A","548":"B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 TC jD kD lD mD nD JC KC LC oD","804":"J eD fD gD hD iD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:1,C:"Fullscreen API",D:true};
var mdnCssBackdropPseudoElement={A:{D:{"1":"0 9 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB","33":"WB XB YB ZB aB"},L:{"1":"I"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","33":"C L M G N O P"},C:{"1":"0 9 lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB rC sC"},M:{"1":"FC"},A:{"2":"K D E F A nC","33":"B"},F:{"1":"0 5 6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C G N O P 5C 6C 7C 8C GC lC 9C HC","33":"1 2 3 4 RB"},K:{"1":"H","2":"A B C GC lC HC"},E:{"1":"VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC","2":"J QB K D E F A B C L M G tC SC uC vC wC xC TC GC HC yC zC 0C UC 4C"},G:{"1":"VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},I:{"1":"I","2":"MC J YD ZD aD bD mC","33":"cD dD"}},B:6,C:"CSS ::backdrop pseudo-element",D:undefined};
var cssFileSelectorButton={A:{D:{"1":"0 9 Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X"},L:{"1":"I"},B:{"1":"0 9 Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","33":"C L M G N O P Q H R S T U V W X"},C:{"1":"0 9 PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R rC sC"},M:{"1":"FC"},A:{"2":"K D E F nC","33":"A B"},F:{"1":"0 BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","33":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC"},K:{"1":"H","2":"A B C GC lC HC"},E:{"1":"G zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC","2":"4C","33":"J QB K D E F A B C L M tC SC uC vC wC xC TC GC HC yC"},G:{"1":"SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","33":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD"},P:{"1":"1 2 3 4 5 6 7 8 nD JC KC LC oD","33":"J eD fD gD hD iD TC jD kD lD mD"},I:{"1":"I","2":"MC J YD ZD aD bD mC","33":"cD dD"}},B:6,C:"::file-selector-button CSS pseudo-element",D:undefined};
var cssAutofill={A:{D:{"1":"0 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s"},L:{"1":"I"},B:{"1":"0 9 t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P","33":"Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s"},C:{"1":"0 9 V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U rC sC"},M:{"1":"FC"},A:{"2":"K D E F A B nC"},F:{"1":"0 f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","33":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e"},K:{"1":"H","2":"A B C GC lC HC"},E:{"1":"G 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC","2":"4C","33":"J QB K D E F A B C L M tC SC uC vC wC xC TC GC HC yC zC"},G:{"1":"TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","33":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD"},P:{"1":"2 3 4 5 6 7 8","33":"1 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},I:{"1":"I","2":"MC J YD ZD aD bD mC","33":"cD dD"}},B:6,C:":autofill CSS pseudo-class",D:undefined};
var css3Tabsize={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P"},C:{"1":"0 9 a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC rC sC","33":"rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z","164":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB"},D:{"1":"0 9 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 J QB K D E F A B C L M G N O P RB","132":"2 3 4 5 6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB"},E:{"1":"M G yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K tC SC uC","132":"D E F A B C L vC wC xC TC GC HC"},F:{"1":"0 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F 5C 6C 7C","132":"1 2 3 4 5 6 7 8 G N O P RB SB","164":"B C 8C GC lC 9C HC"},G:{"1":"QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD CD","132":"E DD ED FD GD HD ID JD KD LD MD ND OD PD"},H:{"164":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC","132":"cD dD"},J:{"132":"D A"},K:{"1":"H","2":"A","164":"B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"164":"rD sD"}},B:4,C:"CSS3 tab-size",D:true};
var intrinsicWidth={A:{A:{"2":"K D E F A B nC"},B:{"2":"C L M G N O P","1025":"0 9 d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","1537":"Q H R S T U V W X Y Z a b c"},C:{"2":"oC","932":"1 2 3 4 5 6 7 8 MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B rC sC","2308":"0 9 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC"},D:{"2":"1 2 J QB K D E F A B C L M G N O P RB","545":"3 4 5 6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB","1025":"0 9 d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","1537":"kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c"},E:{"1":"JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K tC SC uC","516":"B C L M G GC HC yC zC 0C UC VC IC 1C","548":"F A xC TC","676":"D E vC wC"},F:{"2":"F B C 5C 6C 7C 8C GC lC 9C HC","513":"YB","545":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB","1025":"0 e f g h i j k l m n o p q r s t u v w x y z","1537":"XB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d"},G:{"1":"JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD CD","516":"RD SD TD UC VC IC UD","548":"FD GD HD ID JD KD LD MD ND OD PD QD","676":"E DD ED"},H:{"2":"XD"},I:{"2":"MC J YD ZD aD bD mC","545":"cD dD","1025":"I"},J:{"2":"D","545":"A"},K:{"2":"A B C GC lC HC","1025":"H"},L:{"1025":"I"},M:{"2308":"FC"},N:{"2":"A B"},O:{"1537":"IC"},P:{"545":"J","1025":"1 2 3 4 5 6 7 8 KC LC oD","1537":"eD fD gD hD iD TC jD kD lD mD nD JC"},Q:{"1537":"pD"},R:{"1537":"qD"},S:{"932":"rD","2308":"sD"}},B:5,C:"Intrinsic & Extrinsic Sizing",D:true};
var cssWidthStretch={A:{D:{"2":"1 2 J QB K D E F A B C L M G N O P RB","33":"0 3 4 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC"},L:{"33":"I"},B:{"2":"C L M G N O P","33":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"2":"oC","33":"0 1 2 3 4 5 6 7 8 9 MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC rC sC"},M:{"33":"FC"},A:{"2":"K D E F A B nC"},F:{"2":"F B C 5C 6C 7C 8C GC lC 9C HC","33":"0 1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},K:{"2":"A B C GC lC HC","33":"H"},E:{"2":"J QB K tC SC uC vC 4C","33":"D E F A B C L M G wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC"},G:{"2":"SC AD mC BD CD","33":"E DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},P:{"2":"J","33":"1 2 3 4 5 6 7 8 eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},I:{"2":"MC J YD ZD aD bD mC","33":"I cD dD"}},B:6,C:"width: stretch property",D:undefined};
var css3CursorsNewer={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","33":"1 2 3 4 oC MC J QB K D E F A B C L M G N O P RB rC sC"},D:{"1":"0 9 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB"},E:{"1":"F A B C L M G xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","33":"J QB K D E tC SC uC vC wC"},F:{"1":"0 5 6 7 8 C SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C HC","2":"F B 5C 6C 7C 8C GC lC","33":"1 2 3 4 G N O P RB"},G:{"2":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"},J:{"33":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"2":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"2":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"2":"rD sD"}},B:2,C:"CSS3 Cursors: zoom-in & zoom-out",D:true};
var css3CursorsGrab={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M"},C:{"1":"0 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","33":"1 2 3 4 5 6 7 oC MC J QB K D E F A B C L M G N O P RB rC sC"},D:{"1":"0 9 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B"},E:{"1":"B C L M G GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","33":"J QB K D E F A tC SC uC vC wC xC TC"},F:{"1":"0 C tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 9C HC","2":"F B 5C 6C 7C 8C GC lC","33":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB"},G:{"2":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"},J:{"33":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"2":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"2":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"2":"rD sD"}},B:2,C:"CSS grab & grabbing cursors",D:true};
var cssSticky={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G","1028":"Q H R S T U V W X Y Z","4100":"N O P"},C:{"1":"0 9 NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 oC MC J QB K D E F A B C L M G N O P RB rC sC","194":"7 8 SB TB UB VB","516":"WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB"},D:{"1":"0 9 a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 J QB K D E F A B C L M G N O P RB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB","322":"4 5 6 7 8 SB TB UB VB WB XB YB ZB aB qB rB sB tB","1028":"uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z"},E:{"1":"L M G yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K tC SC uC","33":"E F A B C wC xC TC GC HC","2084":"D vC"},F:{"1":"0 EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB 5C 6C 7C 8C GC lC 9C HC","322":"dB eB fB","1028":"gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC"},G:{"1":"ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD","33":"E ED FD GD HD ID JD KD LD MD","2084":"CD DD"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 fD gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"J eD"},Q:{"1028":"pD"},R:{"1":"qD"},S:{"1":"sD","516":"rD"}},B:5,C:"CSS position:sticky",D:true};
var pointer={A:{A:{"1":"B","2":"K D E F nC","164":"A"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 9 NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J QB rC sC","8":"1 2 3 4 5 6 7 8 K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB","328":"fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB"},D:{"1":"0 9 tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 J QB K D E F A B C L M G N O P RB","8":"3 4 5 6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB","584":"qB rB sB"},E:{"1":"L M G yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K tC SC uC","8":"D E F A B C vC wC xC TC GC","1096":"HC"},F:{"1":"0 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","8":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB","584":"dB eB fB"},G:{"1":"OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","8":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD","6148":"ND"},H:{"2":"XD"},I:{"1":"I","8":"MC J YD ZD aD bD mC cD dD"},J:{"8":"D A"},K:{"1":"H","2":"A","8":"B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"B","36":"A"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 fD gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"eD","8":"J"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"sD","328":"rD"}},B:2,C:"Pointer events",D:true};
var textDecoration$1={A:{A:{"2":"K D E F A B nC"},B:{"2":"C L M G N O P","2052":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"2":"oC MC J QB rC sC","1028":"0 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","1060":"1 2 3 4 5 6 7 8 K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB"},D:{"2":"1 2 3 4 5 6 J QB K D E F A B C L M G N O P RB","226":"7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB","2052":"0 9 vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC"},E:{"2":"J QB K D tC SC uC vC","772":"L M G HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","804":"E F A B C xC TC GC","1316":"wC"},F:{"2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB 5C 6C 7C 8C GC lC 9C HC","226":"ZB aB bB cB dB eB fB gB hB","2052":"0 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"SC AD mC BD CD DD","292":"E ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"2":"A B C GC lC HC","2052":"H"},L:{"2052":"I"},M:{"1028":"FC"},N:{"2":"A B"},O:{"2052":"IC"},P:{"2":"J eD fD","2052":"1 2 3 4 5 6 7 8 gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"2052":"pD"},R:{"2052":"qD"},S:{"1028":"rD sD"}},B:4,C:"text-decoration styling",D:true};
var mdnTextDecorationShorthand={A:{D:{"1":"0 9 vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB"},L:{"1":"I"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P"},C:{"1":"0 1 2 3 4 5 6 7 8 9 K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J QB rC sC"},M:{"1":"FC"},A:{"2":"K D E F A B nC"},F:{"1":"0 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5C 6C 7C 8C GC lC 9C HC"},K:{"1":"H","2":"A B C GC lC HC"},E:{"2":"J QB K D tC SC uC vC wC 4C","33":"E F A B C L M G xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC"},G:{"2":"SC AD mC BD CD DD","33":"E ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},P:{"1":"1 2 3 4 5 6 7 8 gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"J eD fD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"}},B:6,C:"text-decoration shorthand property",D:undefined};
var mdnTextDecorationColor={A:{D:{"1":"0 9 vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB"},L:{"1":"I"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P"},C:{"1":"0 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J QB rC sC","33":"1 2 3 4 5 6 7 8 K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB"},M:{"1":"FC"},A:{"2":"K D E F A B nC"},F:{"1":"0 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5C 6C 7C 8C GC lC 9C HC"},K:{"1":"H","2":"A B C GC lC HC"},E:{"1":"L M G HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC","2":"J QB K D tC SC uC vC wC 4C","33":"E F A B C xC TC GC"},G:{"1":"MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD CD DD","33":"E ED FD GD HD ID JD KD LD"},P:{"1":"1 2 3 4 5 6 7 8 gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"J eD fD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"}},B:6,C:"text-decoration-color property",D:undefined};
var mdnTextDecorationLine={A:{D:{"1":"0 9 vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB"},L:{"1":"I"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P"},C:{"1":"0 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J QB rC sC","33":"1 2 3 4 5 6 7 8 K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB"},M:{"1":"FC"},A:{"2":"K D E F A B nC"},F:{"1":"0 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5C 6C 7C 8C GC lC 9C HC"},K:{"1":"H","2":"A B C GC lC HC"},E:{"1":"L M G HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC","2":"J QB K D tC SC uC vC wC 4C","33":"E F A B C xC TC GC"},G:{"1":"MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD CD DD","33":"E ED FD GD HD ID JD KD LD"},P:{"1":"1 2 3 4 5 6 7 8 gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"J eD fD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"}},B:6,C:"text-decoration-line property",D:undefined};
var mdnTextDecorationStyle={A:{D:{"1":"0 9 vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB"},L:{"1":"I"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P"},C:{"1":"0 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J QB rC sC","33":"1 2 3 4 5 6 7 8 K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB"},M:{"1":"FC"},A:{"2":"K D E F A B nC"},F:{"1":"0 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB 5C 6C 7C 8C GC lC 9C HC"},K:{"1":"H","2":"A B C GC lC HC"},E:{"1":"L M G HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC","2":"J QB K D tC SC uC vC wC 4C","33":"E F A B C xC TC GC"},G:{"1":"MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD CD DD","33":"E ED FD GD HD ID JD KD LD"},P:{"1":"1 2 3 4 5 6 7 8 gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"J eD fD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"}},B:6,C:"text-decoration-style property",D:undefined};
var textSizeAdjust={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","33":"C L M G N O P"},C:{"2":"0 1 2 3 4 5 6 7 8 9 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC rC sC"},D:{"1":"0 9 sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB","258":"7"},E:{"2":"J QB K D E F A B C L M G tC SC vC wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","258":"uC"},F:{"1":"0 hB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB iB 5C 6C 7C 8C GC lC 9C HC"},G:{"2":"SC AD mC","33":"E BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"33":"FC"},N:{"161":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"J"},Q:{"1":"pD"},R:{"1":"qD"},S:{"2":"rD sD"}},B:7,C:"CSS text-size-adjust",D:true};
var cssMasks={A:{A:{"2":"K D E F A B nC"},B:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N","164":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB","3138":"O","12292":"P"},C:{"1":"0 9 rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC","260":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rC sC"},D:{"1":"BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","164":"0 1 2 3 4 5 6 7 8 9 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB"},E:{"1":"VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"tC SC","164":"J QB K D E F A B C L M G uC vC wC xC TC GC HC yC zC 0C UC"},F:{"1":"0 p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","164":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o"},G:{"1":"VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","164":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC"},H:{"2":"XD"},I:{"1":"I","164":"cD dD","676":"MC J YD ZD aD bD mC"},J:{"164":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"164":"IC"},P:{"1":"6 7 8","164":"1 2 3 4 5 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"164":"pD"},R:{"164":"qD"},S:{"1":"sD","260":"rD"}},B:4,C:"CSS Masks",D:true};
var cssClipPath={A:{A:{"2":"K D E F A B nC"},B:{"2":"C L M G N O","260":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","3138":"P"},C:{"1":"0 9 sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC","132":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB rC sC","644":"lB mB nB oB pB qB rB"},D:{"2":"1 2 3 4 J QB K D E F A B C L M G N O P RB","260":"0 9 tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","292":"5 6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB"},E:{"2":"J QB K tC SC uC vC","260":"M G yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","292":"D E F A B C L wC xC TC GC HC"},F:{"2":"F B C 5C 6C 7C 8C GC lC 9C HC","260":"0 gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","292":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB"},G:{"2":"SC AD mC BD CD","260":"ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","292":"E DD ED FD GD HD ID JD KD LD MD"},H:{"2":"XD"},I:{"2":"MC J YD ZD aD bD mC","260":"I","292":"cD dD"},J:{"2":"D A"},K:{"2":"A B C GC lC HC","260":"H"},L:{"260":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"260":"IC"},P:{"260":"1 2 3 4 5 6 7 8 fD gD hD iD TC jD kD lD mD nD JC KC LC oD","292":"J eD"},Q:{"260":"pD"},R:{"260":"qD"},S:{"1":"sD","644":"rD"}},B:4,C:"CSS clip-path property (for HTML)",D:true};
var cssBoxdecorationbreak={A:{A:{"2":"K D E F A B nC"},B:{"1":"LB MB NB OB PB I","2":"C L M G N O P","164":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB"},C:{"1":"0 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB rC sC"},D:{"1":"LB MB NB OB PB I QC FC RC","2":"1 2 J QB K D E F A B C L M G N O P RB","164":"0 3 4 5 6 7 8 9 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB"},E:{"2":"J QB K tC SC uC","164":"D E F A B C L M G vC wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C"},F:{"1":"0 z","2":"F 5C 6C 7C 8C","129":"B C GC lC 9C HC","164":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y"},G:{"2":"SC AD mC BD CD","164":"E DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},H:{"132":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC","164":"cD dD"},J:{"2":"D","164":"A"},K:{"2":"A","129":"B C GC lC HC","164":"H"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"164":"IC"},P:{"164":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"164":"pD"},R:{"164":"qD"},S:{"1":"rD sD"}},B:4,C:"CSS box-decoration-break",D:true};
var objectFit={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G","260":"N O P"},C:{"1":"0 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB rC sC"},D:{"1":"0 9 WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB"},E:{"1":"A B C L M G TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K D tC SC uC vC","132":"E F wC xC"},F:{"1":"0 1 2 3 4 5 6 7 8 RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F G N O P 5C 6C 7C","33":"B C 8C GC lC 9C HC"},G:{"1":"HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD CD DD","132":"E ED FD GD"},H:{"33":"XD"},I:{"1":"I dD","2":"MC J YD ZD aD bD mC cD"},J:{"2":"D A"},K:{"1":"H","2":"A","33":"B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:4,C:"CSS3 object-fit/object-position",D:true};
var cssShapes={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P"},C:{"1":"0 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB rC sC","322":"pB qB rB sB tB uB vB wB NC xB OC"},D:{"1":"0 9 bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB","194":"YB ZB aB"},E:{"1":"B C L M G TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K D tC SC uC vC","33":"E F A wC xC"},F:{"1":"0 5 6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 F B C G N O P RB 5C 6C 7C 8C GC lC 9C HC"},G:{"1":"ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD CD DD","33":"E ED FD GD HD"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"sD","2":"rD"}},B:4,C:"CSS Shapes Level 1",D:true};
var textOverflow={A:{A:{"1":"K D E F A B","2":"nC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 1 2 3 4 5 6 7 8 9 D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","8":"oC MC J QB K rC sC"},D:{"1":"0 1 2 3 4 5 6 7 8 9 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC"},E:{"1":"J QB K D E F A B C L M G tC SC uC vC wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C"},F:{"1":"0 1 2 3 4 5 6 7 8 B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z GC lC 9C HC","33":"F 5C 6C 7C 8C"},G:{"1":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},H:{"1":"XD"},I:{"1":"MC J I YD ZD aD bD mC cD dD"},J:{"1":"D A"},K:{"1":"H HC","33":"A B C GC lC"},L:{"1":"I"},M:{"1":"FC"},N:{"1":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:2,C:"CSS3 Text-overflow",D:true};
var cssDeviceadaptation={A:{A:{"2":"K D E F nC","164":"A B"},B:{"66":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","164":"C L M G N O P"},C:{"2":"0 1 2 3 4 5 6 7 8 9 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC rC sC"},D:{"2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB","66":"0 9 TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC"},E:{"2":"J QB K D E F A B C L M G tC SC uC vC wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C"},F:{"2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB 5C 6C 7C 8C GC lC 9C HC","66":"0 eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"2":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},H:{"292":"XD"},I:{"2":"MC J I YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"2":"A H","292":"B C GC lC HC"},L:{"2":"I"},M:{"2":"FC"},N:{"164":"A B"},O:{"2":"IC"},P:{"2":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"66":"pD"},R:{"2":"qD"},S:{"2":"rD sD"}},B:5,C:"CSS Device Adaptation",D:true};
var cssMediaResolution={A:{A:{"2":"K D E nC","132":"F A B"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","1028":"C L M G N O P"},C:{"1":"0 9 yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC","260":"J QB K D E F A B C L M G rC sC","1028":"1 2 3 4 5 6 7 8 N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC"},D:{"1":"0 9 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","548":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB","1028":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B"},E:{"1":"JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"tC SC","548":"J QB K D E F A B C L M G uC vC wC xC TC GC HC yC zC 0C UC VC IC 1C"},F:{"1":"0 tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z HC","2":"F","548":"B C 5C 6C 7C 8C GC lC 9C","1028":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB"},G:{"1":"JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","16":"SC","548":"E AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD"},H:{"132":"XD"},I:{"1":"I","16":"YD ZD","548":"MC J aD bD mC","1028":"cD dD"},J:{"548":"D A"},K:{"1":"H HC","548":"A B C GC lC"},L:{"1":"I"},M:{"1":"FC"},N:{"132":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 TC jD kD lD mD nD JC KC LC oD","1028":"J eD fD gD hD iD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:4,C:"Media Queries: resolution feature",D:true};
var cssTextAlignLast={A:{A:{"132":"K D E F A B nC"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","4":"C L M G N O P"},C:{"1":"0 9 nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J QB K D E F A B rC sC","33":"1 2 3 4 5 6 7 8 C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB"},D:{"1":"0 9 lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB","322":"ZB aB bB cB dB eB fB gB hB iB jB kB"},E:{"1":"JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K D E F A B C L M G tC SC uC vC wC xC TC GC HC yC zC 0C UC VC IC 1C"},F:{"1":"0 YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 F B C G N O P RB 5C 6C 7C 8C GC lC 9C HC","578":"3 4 5 6 7 8 SB TB UB VB WB XB"},G:{"1":"JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"132":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"J"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"sD","33":"rD"}},B:4,C:"CSS3 text-align-last",D:true};
var cssCrispEdges={A:{A:{"2":"K nC","2340":"D E F A B"},B:{"2":"C L M G N O P","1025":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 9 c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC rC","513":"1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b","545":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B sC"},D:{"2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB","1025":"0 9 fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC"},E:{"1":"A B C L M G TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB tC SC uC","164":"K","4644":"D E F vC wC xC"},F:{"2":"1 2 3 4 5 6 7 8 F B G N O P RB 5C 6C 7C 8C GC lC","545":"C 9C HC","1025":"0 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC","4260":"BD CD","4644":"E DD ED FD GD"},H:{"2":"XD"},I:{"2":"MC J YD ZD aD bD mC cD dD","1025":"I"},J:{"2":"D","4260":"A"},K:{"2":"A B GC lC","545":"C HC","1025":"H"},L:{"1025":"I"},M:{"1":"FC"},N:{"2340":"A B"},O:{"1025":"IC"},P:{"1025":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1025":"pD"},R:{"1025":"qD"},S:{"1":"sD","4097":"rD"}},B:4,C:"Crisp edges/pixelated images",D:true};
var cssLogicalProps={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P","1028":"W X","1540":"Q H R S T U V"},C:{"1":"0 9 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC","164":"1 2 3 4 5 6 7 8 MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB rC sC","1540":"fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B"},D:{"1":"0 9 Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","292":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B","1028":"W X","1540":"5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V"},E:{"1":"G 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","292":"J QB K D E F A B C tC SC uC vC wC xC TC GC","1540":"L M HC yC","3076":"zC"},F:{"1":"0 CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","292":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB","1028":"AC BC","1540":"uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B"},G:{"1":"TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","292":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD","1540":"MD ND OD PD QD RD","3076":"SD"},H:{"2":"XD"},I:{"1":"I","292":"MC J YD ZD aD bD mC cD dD"},J:{"292":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 nD JC KC LC oD","292":"J eD fD gD hD iD","1540":"TC jD kD lD mD"},Q:{"1540":"pD"},R:{"1":"qD"},S:{"1":"sD","1540":"rD"}},B:5,C:"CSS Logical Properties",D:true};
var cssAppearance={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","33":"S","164":"Q H R","388":"C L M G N O P"},C:{"1":"0 9 H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","164":"ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q","676":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB rC sC"},D:{"1":"0 9 T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","33":"S","164":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R"},E:{"1":"VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","164":"J QB K D E F A B C L M G tC SC uC vC wC xC TC GC HC yC zC 0C UC"},F:{"1":"0 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","33":"6B 7B 8B","164":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B"},G:{"1":"VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","164":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC"},H:{"2":"XD"},I:{"1":"I","164":"MC J YD ZD aD bD mC cD dD"},J:{"164":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A","388":"B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 mD nD JC KC LC oD","164":"J eD fD gD hD iD TC jD kD lD"},Q:{"164":"pD"},R:{"1":"qD"},S:{"1":"sD","164":"rD"}},B:5,C:"CSS Appearance",D:true};
var cssSnappoints={A:{A:{"2":"K D E F nC","6308":"A","6436":"B"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","6436":"C L M G N O P"},C:{"1":"0 9 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB rC sC","2052":"dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B"},D:{"1":"0 9 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B","8258":"2B 3B 4B"},E:{"1":"B C L M G GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K D E tC SC uC vC wC","3108":"F A xC TC"},F:{"1":"0 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB 5C 6C 7C 8C GC lC 9C HC","8258":"sB tB uB vB wB xB yB zB"},G:{"1":"JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"E SC AD mC BD CD DD ED","3108":"FD GD HD ID"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 TC jD kD lD mD nD JC KC LC oD","2":"J eD fD gD hD iD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"sD","2052":"rD"}},B:4,C:"CSS Scroll Snap",D:true};
var cssRegions={A:{A:{"2":"K D E F nC","420":"A B"},B:{"2":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","420":"C L M G N O P"},C:{"2":"0 1 2 3 4 5 6 7 8 9 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC rC sC"},D:{"2":"0 9 J QB K D E F A B C L M ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","36":"G N O P","66":"1 2 3 4 5 6 7 8 RB SB TB UB VB WB XB YB"},E:{"2":"J QB K C L M G tC SC uC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","33":"D E F A B vC wC xC TC"},F:{"2":"0 1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 5C 6C 7C 8C GC lC 9C HC"},G:{"2":"SC AD mC BD CD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","33":"E DD ED FD GD HD ID JD"},H:{"2":"XD"},I:{"2":"MC J I YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"2":"A B C H GC lC HC"},L:{"2":"I"},M:{"2":"FC"},N:{"420":"A B"},O:{"2":"IC"},P:{"2":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"2":"pD"},R:{"2":"qD"},S:{"2":"rD sD"}},B:5,C:"CSS Regions",D:true};
var cssImageSet={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P","164":"Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v","2049":"w"},C:{"1":"0 9 w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U rC sC","66":"V W","2305":"Y Z a b c d e f g h i j k l m n o p q r s t u v","2820":"X"},D:{"1":"0 9 x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 J QB K D E F A B C L M G N O P RB","164":"2 3 4 5 6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v","2049":"w"},E:{"1":"KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB tC SC uC","132":"A B C L TC GC HC yC","164":"K D E F vC wC xC","1540":"M G zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C"},F:{"1":"0 j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","164":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h","2049":"i"},G:{"1":"KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD","132":"HD ID JD KD LD MD ND OD PD QD","164":"E CD DD ED FD GD","1540":"RD SD TD UC VC IC UD JC WC XC YC ZC aC VD"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC","164":"cD dD"},J:{"2":"D","164":"A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"164":"IC"},P:{"1":"4 5 6 7 8","164":"1 2 3 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"164":"pD"},R:{"164":"qD"},S:{"2":"rD sD"}},B:5,C:"CSS image-set",D:true};
var cssWritingMode={A:{A:{"132":"K D E F A B nC"},B:{"1":"0 9 C L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 9 fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB rC sC","322":"aB bB cB dB eB"},D:{"1":"0 9 mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"J QB K","16":"D","33":"1 2 3 4 5 6 7 8 E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB"},E:{"1":"B C L M G GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J tC SC","16":"QB","33":"K D E F A uC vC wC xC TC"},F:{"1":"0 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","33":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB"},G:{"1":"JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","16":"SC AD mC","33":"E BD CD DD ED FD GD HD ID"},H:{"2":"XD"},I:{"1":"I","2":"YD ZD aD","33":"MC J bD mC cD dD"},J:{"33":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"36":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD","33":"J"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:2,C:"CSS writing-mode property",D:true};
var cssCrossFade={A:{A:{"2":"K D E F A B nC"},B:{"2":"C L M G N O P","33":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"2":"0 1 2 3 4 5 6 7 8 9 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC rC sC"},D:{"2":"J QB K D E F A B C L M G N","33":"0 1 2 3 4 5 6 7 8 9 O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC"},E:{"1":"A B C L M G TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB tC SC","33":"K D E F uC vC wC xC"},F:{"2":"F B C 5C 6C 7C 8C GC lC 9C HC","33":"0 1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},G:{"1":"HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC","33":"E BD CD DD ED FD GD"},H:{"2":"XD"},I:{"2":"MC J YD ZD aD bD mC","33":"I cD dD"},J:{"2":"D A"},K:{"2":"A B C GC lC HC","33":"H"},L:{"33":"I"},M:{"2":"FC"},N:{"2":"A B"},O:{"33":"IC"},P:{"33":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"33":"pD"},R:{"33":"qD"},S:{"2":"rD sD"}},B:4,C:"CSS Cross-Fade Function",D:true};
var cssReadOnlyWrite={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 L M G N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C"},C:{"1":"0 9 EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","16":"oC","33":"1 2 3 4 5 6 7 8 MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC rC sC"},D:{"1":"0 9 aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","16":"J QB K D E F A B C L M","132":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB"},E:{"1":"F A B C L M G xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","16":"tC SC","132":"J QB K D E uC vC wC"},F:{"1":"0 4 5 6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","16":"F B 5C 6C 7C 8C GC","132":"1 2 3 C G N O P RB lC 9C HC"},G:{"1":"FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","16":"SC AD","132":"E mC BD CD DD ED"},H:{"2":"XD"},I:{"1":"I","16":"YD ZD","132":"MC J aD bD mC cD dD"},J:{"1":"A","132":"D"},K:{"1":"H","2":"A B GC","132":"C lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"sD","33":"rD"}},B:1,C:"CSS :read-only and :read-write selectors",D:true};
var textEmphasis={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P","164":"Q H R S T U V W X Y Z a b c d e f g h"},C:{"1":"0 9 kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB rC sC","322":"jB"},D:{"1":"0 9 i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 J QB K D E F A B C L M G N O P RB","164":"6 7 8 SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h"},E:{"1":"E F A B C L M G wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K tC SC uC","164":"D vC"},F:{"1":"0 V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","164":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U"},G:{"1":"E DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD CD"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC","164":"cD dD"},J:{"2":"D","164":"A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 LC oD","164":"J eD fD gD hD iD TC jD kD lD mD nD JC KC"},Q:{"164":"pD"},R:{"164":"qD"},S:{"1":"rD sD"}},B:4,C:"text-emphasis styling",D:true};
var cssGrid={A:{A:{"2":"K D E nC","8":"F","292":"A B"},B:{"1":"0 9 N O P Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","292":"C L M G"},C:{"1":"0 9 sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J QB K D E F A B C L M G N O P rC sC","8":"1 2 3 4 5 6 7 8 RB SB TB UB VB WB XB YB ZB aB bB cB dB","584":"eB fB gB hB iB jB kB lB mB nB oB pB","1025":"qB rB"},D:{"1":"0 9 wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 J QB K D E F A B C L M G N O P RB","8":"6 7 8 SB","200":"TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB","1025":"vB"},E:{"1":"B C L M G TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB tC SC uC","8":"K D E F A vC wC xC"},F:{"1":"0 iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB 5C 6C 7C 8C GC lC 9C HC","200":"SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB"},G:{"1":"ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD","8":"E CD DD ED FD GD HD"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD","8":"mC cD dD"},J:{"2":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"292":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 fD gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"eD","8":"J"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:4,C:"CSS Grid Layout (level 1)",D:true};
var cssTextSpacing={A:{A:{"2":"K D nC","161":"E F A B"},B:{"2":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","161":"C L M G N O P"},C:{"2":"0 1 2 3 4 5 6 7 8 9 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC rC sC"},D:{"2":"0 1 2 3 4 5 6 7 8 9 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC"},E:{"2":"J QB K D E F A B C L M G tC SC uC vC wC xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C"},F:{"2":"0 1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 5C 6C 7C 8C GC lC 9C HC"},G:{"2":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC"},H:{"2":"XD"},I:{"2":"MC J I YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"2":"A B C H GC lC HC"},L:{"2":"I"},M:{"2":"FC"},N:{"16":"A B"},O:{"2":"IC"},P:{"2":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},Q:{"2":"pD"},R:{"2":"qD"},S:{"2":"rD sD"}},B:5,C:"CSS Text 4 text-spacing",D:false};
var cssAnyLink={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P"},C:{"1":"0 9 oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","16":"oC","33":"1 2 3 4 5 6 7 8 MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB rC sC"},D:{"1":"0 9 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","16":"J QB K D E F A B C L M","33":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B"},E:{"1":"F A B C L M G xC TC GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","16":"J QB K tC SC uC","33":"D E vC wC"},F:{"1":"0 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","33":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB"},G:{"1":"FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","16":"SC AD mC BD","33":"E CD DD ED"},H:{"2":"XD"},I:{"1":"I","16":"MC J YD ZD aD bD mC","33":"cD dD"},J:{"16":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 iD TC jD kD lD mD nD JC KC LC oD","16":"J","33":"eD fD gD hD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"sD","33":"rD"}},B:5,C:"CSS :any-link selector",D:true};
var mdnCssUnicodeBidiIsolate={A:{D:{"1":"0 9 mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"J QB K D E F A B C L M G","33":"1 2 3 4 5 6 7 8 N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB"},L:{"1":"I"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P"},C:{"1":"0 9 oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J QB K D E F rC sC","33":"1 2 3 4 5 6 7 8 A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB"},M:{"1":"FC"},A:{"2":"K D E F A B nC"},F:{"1":"0 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"F B C 5C 6C 7C 8C GC lC 9C HC","33":"1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB"},K:{"1":"H","2":"A B C GC lC HC"},E:{"1":"B C L M G GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC","2":"J QB tC SC uC 4C","33":"K D E F A vC wC xC TC"},G:{"1":"JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD","33":"E CD DD ED FD GD HD ID"},P:{"1":"1 2 3 4 5 6 7 8 eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"J"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"}},B:6,C:"isolate from unicode-bidi",D:undefined};
var mdnCssUnicodeBidiPlaintext={A:{D:{"1":"0 9 mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB"},L:{"1":"I"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P"},C:{"1":"0 9 oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J QB K D E F rC sC","33":"1 2 3 4 5 6 7 8 A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB"},M:{"1":"FC"},A:{"2":"K D E F A B nC"},F:{"1":"0 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB 5C 6C 7C 8C GC lC 9C HC"},K:{"1":"H","2":"A B C GC lC HC"},E:{"1":"B C L M G GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC","2":"J QB tC SC uC 4C","33":"K D E F A vC wC xC TC"},G:{"1":"JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD","33":"E CD DD ED FD GD HD ID"},P:{"1":"1 2 3 4 5 6 7 8 eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"J"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"}},B:6,C:"plaintext from unicode-bidi",D:undefined};
var mdnCssUnicodeBidiIsolateOverride={A:{D:{"1":"0 9 mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB"},L:{"1":"I"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P"},C:{"1":"0 9 oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"oC MC J QB K D E F A B C L M G N rC sC","33":"1 2 3 4 5 6 7 8 O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB"},M:{"1":"FC"},A:{"2":"K D E F A B nC"},F:{"1":"0 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB 5C 6C 7C 8C GC lC 9C HC"},K:{"1":"H","2":"A B C GC lC HC"},E:{"1":"B C L M G GC HC yC zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC","2":"J QB K tC SC uC vC 4C","33":"D E F A wC xC TC"},G:{"1":"JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD CD","33":"E DD ED FD GD HD ID"},P:{"1":"1 2 3 4 5 6 7 8 eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"J"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"}},B:6,C:"isolate-override from unicode-bidi",D:undefined};
var cssOverscrollBehavior={A:{A:{"2":"K D E F nC","132":"A B"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","132":"C L M G N O","516":"P"},C:{"1":"0 9 NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB rC sC"},D:{"1":"0 9 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB","260":"zB 0B"},E:{"1":"JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K D E F A B C L M tC SC uC vC wC xC TC GC HC yC","1090":"G zC 0C UC VC IC 1C"},F:{"1":"0 qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB 5C 6C 7C 8C GC lC 9C HC","260":"oB pB"},G:{"1":"JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"E SC AD mC BD CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD","1090":"SD TD UC VC IC UD"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"132":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 hD iD TC jD kD lD mD nD JC KC LC oD","2":"J eD fD gD"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"sD","2":"rD"}},B:5,C:"CSS overscroll-behavior",D:true};
var cssTextOrientation={A:{A:{"2":"K D E F A B nC"},B:{"1":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I","2":"C L M G N O P"},C:{"1":"0 9 fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB rC sC","194":"cB dB eB"},D:{"1":"0 9 mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC","2":"1 2 3 4 5 6 7 8 J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB"},E:{"1":"M G zC 0C UC VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC 4C","2":"J QB K D E F tC SC uC vC wC xC","16":"A","33":"B C L TC GC HC yC"},F:{"1":"0 ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z","2":"1 2 3 4 5 6 7 8 F B C G N O P RB SB TB UB VB WB XB YB 5C 6C 7C 8C GC lC 9C HC"},G:{"1":"HD ID JD KD LD MD ND OD PD QD RD SD TD UC VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"E SC AD mC BD CD DD ED FD GD"},H:{"2":"XD"},I:{"1":"I","2":"MC J YD ZD aD bD mC cD dD"},J:{"2":"D A"},K:{"1":"H","2":"A B C GC lC HC"},L:{"1":"I"},M:{"1":"FC"},N:{"2":"A B"},O:{"1":"IC"},P:{"1":"1 2 3 4 5 6 7 8 eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD","2":"J"},Q:{"1":"pD"},R:{"1":"qD"},S:{"1":"rD sD"}},B:2,C:"CSS text-orientation",D:true};
var cssPrintColorAdjust={A:{D:{"1":"QC FC RC","2":"J QB K D E F A B C L M G N","33":"0 1 2 3 4 5 6 7 8 9 O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},L:{"33":"I"},B:{"2":"C L M G N O P","33":"0 9 Q H R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I"},C:{"1":"0 9 g h i j k l m n o p q r s t u v w x y z AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB I QC FC RC pC qC","2":"1 2 3 4 5 6 7 8 oC MC J QB K D E F A B C L M G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB rC sC","33":"mB nB oB pB qB rB sB tB uB vB wB NC xB OC yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f"},M:{"1":"FC"},A:{"2":"K D E F A B nC"},F:{"2":"F B C 5C 6C 7C 8C GC lC 9C HC","33":"0 1 2 3 4 5 6 7 8 G N O P RB SB TB UB VB WB XB YB ZB aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B AC BC CC DC EC Q H R PC S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z"},K:{"2":"A B C GC lC HC","33":"H"},E:{"1":"VC IC 1C JC WC XC YC ZC aC 2C KC bC cC dC eC fC 3C LC gC hC iC jC kC","2":"J QB tC SC uC 4C","33":"K D E F A B C L M G vC wC xC TC GC HC yC zC 0C UC"},G:{"1":"VC IC UD JC WC XC YC ZC aC VD KC bC cC dC eC fC WD LC gC hC iC jC kC","2":"SC AD mC BD","33":"E CD DD ED FD GD HD ID JD KD LD MD ND OD PD QD RD SD TD UC"},P:{"33":"1 2 3 4 5 6 7 8 J eD fD gD hD iD TC jD kD lD mD nD JC KC LC oD"},I:{"2":"MC J YD ZD aD bD mC","33":"I cD dD"}},B:6,C:"print-color-adjust property",D:undefined};
function browsersSort(a, b) {
a = a.split(' ');
b = b.split(' ');
if (a[0] > b[0]) {
return 1
} else if (a[0]
prefix$1(
[
'border-radius',
'border-top-left-radius',
'border-top-right-radius',
'border-bottom-right-radius',
'border-bottom-left-radius'
],
{
browsers,
feature: 'border-radius',
mistakes: ['-khtml-', '-ms-', '-o-']
}
)
);
// Box Shadow
f(cssBoxshadow, browsers =>
prefix$1(['box-shadow'], {
browsers,
feature: 'css-boxshadow',
mistakes: ['-khtml-']
})
);
// Animation
f(cssAnimation, browsers =>
prefix$1(
[
'animation',
'animation-name',
'animation-duration',
'animation-delay',
'animation-direction',
'animation-fill-mode',
'animation-iteration-count',
'animation-play-state',
'animation-timing-function',
'@keyframes'
],
{
browsers,
feature: 'css-animation',
mistakes: ['-khtml-', '-ms-']
}
)
);
// Transition
f(cssTransitions, browsers =>
prefix$1(
[
'transition',
'transition-property',
'transition-duration',
'transition-delay',
'transition-timing-function'
],
{
browsers,
feature: 'css-transitions',
mistakes: ['-khtml-', '-ms-']
}
)
);
// Transform 2D
f(transforms2d, browsers =>
prefix$1(['transform', 'transform-origin'], {
browsers,
feature: 'transforms2d'
})
);
// Transform 3D
f(transforms3d, browsers => {
prefix$1(['perspective', 'perspective-origin'], {
browsers,
feature: 'transforms3d'
});
return prefix$1(['transform-style'], {
browsers,
feature: 'transforms3d',
mistakes: ['-ms-', '-o-']
})
});
f(transforms3d, { match: /y\sx|y\s#2/ }, browsers =>
prefix$1(['backface-visibility'], {
browsers,
feature: 'transforms3d',
mistakes: ['-ms-', '-o-']
})
);
// Gradients
f(cssGradients, { match: /y\sx/ }, browsers =>
prefix$1(
[
'linear-gradient',
'repeating-linear-gradient',
'radial-gradient',
'repeating-radial-gradient'
],
{
browsers,
feature: 'css-gradients',
mistakes: ['-ms-'],
props: [
'background',
'background-image',
'border-image',
'mask',
'list-style',
'list-style-image',
'content',
'mask-image'
]
}
)
);
f(cssGradients, { match: /a\sx/ }, browsers => {
browsers = browsers.map(i => {
if (/firefox|op/.test(i)) {
return i
} else {
return `${i} old`
}
});
return add(
[
'linear-gradient',
'repeating-linear-gradient',
'radial-gradient',
'repeating-radial-gradient'
],
{
browsers,
feature: 'css-gradients'
}
)
});
// Box sizing
f(css3Boxsizing, browsers =>
prefix$1(['box-sizing'], {
browsers,
feature: 'css3-boxsizing'
})
);
// Filter Effects
f(cssFilters, browsers =>
prefix$1(['filter'], {
browsers,
feature: 'css-filters'
})
);
// filter() function
f(cssFilterFunction, browsers =>
prefix$1(['filter-function'], {
browsers,
feature: 'css-filter-function',
props: [
'background',
'background-image',
'border-image',
'mask',
'list-style',
'list-style-image',
'content',
'mask-image'
]
})
);
// Backdrop-filter
f(cssBackdropFilter, { match: /y\sx|y\s#2/ }, browsers =>
prefix$1(['backdrop-filter'], {
browsers,
feature: 'css-backdrop-filter'
})
);
// element() function
f(cssElementFunction, browsers =>
prefix$1(['element'], {
browsers,
feature: 'css-element-function',
props: [
'background',
'background-image',
'border-image',
'mask',
'list-style',
'list-style-image',
'content',
'mask-image'
]
})
);
// Multicolumns
f(multicolumn, browsers => {
prefix$1(
[
'columns',
'column-width',
'column-gap',
'column-rule',
'column-rule-color',
'column-rule-width',
'column-count',
'column-rule-style',
'column-span',
'column-fill'
],
{
browsers,
feature: 'multicolumn'
}
);
let noff = browsers.filter(i => !/firefox/.test(i));
prefix$1(['break-before', 'break-after', 'break-inside'], {
browsers: noff,
feature: 'multicolumn'
});
});
// User select
f(userSelectNone, browsers =>
prefix$1(['user-select'], {
browsers,
feature: 'user-select-none',
mistakes: ['-khtml-']
})
);
// Flexible Box Layout
f(flexbox, { match: /a\sx/ }, browsers => {
browsers = browsers.map(i => {
if (/ie|firefox/.test(i)) {
return i
} else {
return `${i} 2009`
}
});
prefix$1(['display-flex', 'inline-flex'], {
browsers,
feature: 'flexbox',
props: ['display']
});
prefix$1(['flex', 'flex-grow', 'flex-shrink', 'flex-basis'], {
browsers,
feature: 'flexbox'
});
prefix$1(
[
'flex-direction',
'flex-wrap',
'flex-flow',
'justify-content',
'order',
'align-items',
'align-self',
'align-content'
],
{
browsers,
feature: 'flexbox'
}
);
});
f(flexbox, { match: /y\sx/ }, browsers => {
add(['display-flex', 'inline-flex'], {
browsers,
feature: 'flexbox'
});
add(['flex', 'flex-grow', 'flex-shrink', 'flex-basis'], {
browsers,
feature: 'flexbox'
});
add(
[
'flex-direction',
'flex-wrap',
'flex-flow',
'justify-content',
'order',
'align-items',
'align-self',
'align-content'
],
{
browsers,
feature: 'flexbox'
}
);
});
// calc() unit
f(calc, browsers =>
prefix$1(['calc'], {
browsers,
feature: 'calc',
props: ['*']
})
);
// Background options
f(backgroundImgOpts, browsers =>
prefix$1(['background-origin', 'background-size'], {
browsers,
feature: 'background-img-opts'
})
);
// background-clip: text
f(backgroundClipText, browsers =>
prefix$1(['background-clip'], {
browsers,
feature: 'background-clip-text'
})
);
// Font feature settings
f(fontFeature, browsers =>
prefix$1(
[
'font-feature-settings',
'font-variant-ligatures',
'font-language-override'
],
{
browsers,
feature: 'font-feature'
}
)
);
// CSS font-kerning property
f(fontKerning, browsers =>
prefix$1(['font-kerning'], {
browsers,
feature: 'font-kerning'
})
);
// Border image
f(borderImage$1, browsers =>
prefix$1(['border-image'], {
browsers,
feature: 'border-image'
})
);
// Selection selector
f(cssSelection, browsers =>
prefix$1(['::selection'], {
browsers,
feature: 'css-selection',
selector: true
})
);
// Placeholder selector
f(cssPlaceholder, browsers => {
prefix$1(['::placeholder'], {
browsers: browsers.concat(['ie 10 old', 'ie 11 old', 'firefox 18 old']),
feature: 'css-placeholder',
selector: true
});
});
// Placeholder-shown selector
f(cssPlaceholderShown, browsers => {
prefix$1([':placeholder-shown'], {
browsers,
feature: 'css-placeholder-shown',
selector: true
});
});
// Hyphenation
f(cssHyphens, browsers =>
prefix$1(['hyphens'], {
browsers,
feature: 'css-hyphens'
})
);
// Fullscreen selector
f(fullscreen$1, browsers =>
prefix$1([':fullscreen'], {
browsers,
feature: 'fullscreen',
selector: true
})
);
// ::backdrop pseudo-element
// https://caniuse.com/mdn-css_selectors_backdrop
f(mdnCssBackdropPseudoElement, browsers =>
prefix$1(['::backdrop'], {
browsers,
feature: 'backdrop',
selector: true
})
);
// File selector button
f(cssFileSelectorButton, browsers =>
prefix$1(['::file-selector-button'], {
browsers,
feature: 'file-selector-button',
selector: true
})
);
// :autofill
f(cssAutofill, browsers =>
prefix$1([':autofill'], {
browsers,
feature: 'css-autofill',
selector: true
})
);
// Tab size
f(css3Tabsize, browsers =>
prefix$1(['tab-size'], {
browsers,
feature: 'css3-tabsize'
})
);
// Intrinsic & extrinsic sizing
let sizeProps = [
'width',
'min-width',
'max-width',
'height',
'min-height',
'max-height',
'inline-size',
'min-inline-size',
'max-inline-size',
'block-size',
'min-block-size',
'max-block-size',
'grid',
'grid-template',
'grid-template-rows',
'grid-template-columns',
'grid-auto-columns',
'grid-auto-rows'
];
f(intrinsicWidth, browsers =>
prefix$1(['max-content', 'min-content'], {
browsers,
feature: 'intrinsic-width',
props: sizeProps
})
);
f(intrinsicWidth, { match: /x|\s#4/ }, browsers =>
prefix$1(['fill', 'fill-available'], {
browsers,
feature: 'intrinsic-width',
props: sizeProps
})
);
f(intrinsicWidth, { match: /x|\s#5/ }, browsers => {
let ffFix = browsers.filter(i => {
let [name, version] = i.split(' ');
if (name === 'firefox' || name === 'and_ff') {
return parseInt(version)
prefix$1(['stretch'], {
browsers,
feature: 'css-width-stretch',
props: sizeProps
})
);
// Zoom cursors
f(css3CursorsNewer, browsers =>
prefix$1(['zoom-in', 'zoom-out'], {
browsers,
feature: 'css3-cursors-newer',
props: ['cursor']
})
);
// Grab cursors
f(css3CursorsGrab, browsers =>
prefix$1(['grab', 'grabbing'], {
browsers,
feature: 'css3-cursors-grab',
props: ['cursor']
})
);
// Sticky position
f(cssSticky, browsers =>
prefix$1(['sticky'], {
browsers,
feature: 'css-sticky',
props: ['position']
})
);
// Pointer Events
f(pointer, browsers =>
prefix$1(['touch-action'], {
browsers,
feature: 'pointer'
})
);
// Text decoration
f(textDecoration$1, { match: /x.*#[235]/ }, browsers =>
prefix$1(['text-decoration-skip', 'text-decoration-skip-ink'], {
browsers,
feature: 'text-decoration'
})
);
f(mdnTextDecorationShorthand, browsers =>
prefix$1(['text-decoration'], {
browsers,
feature: 'text-decoration'
})
);
f(mdnTextDecorationColor, browsers =>
prefix$1(['text-decoration-color'], {
browsers,
feature: 'text-decoration'
})
);
f(mdnTextDecorationLine, browsers =>
prefix$1(['text-decoration-line'], {
browsers,
feature: 'text-decoration'
})
);
f(mdnTextDecorationStyle, browsers =>
prefix$1(['text-decoration-style'], {
browsers,
feature: 'text-decoration'
})
);
// Text Size Adjust
f(textSizeAdjust, browsers =>
prefix$1(['text-size-adjust'], {
browsers,
feature: 'text-size-adjust'
})
);
// CSS Masks
f(cssMasks, browsers => {
prefix$1(
[
'mask-clip',
'mask-composite',
'mask-image',
'mask-origin',
'mask-repeat',
'mask-border-repeat',
'mask-border-source'
],
{
browsers,
feature: 'css-masks'
}
);
prefix$1(
[
'mask',
'mask-position',
'mask-size',
'mask-border',
'mask-border-outset',
'mask-border-width',
'mask-border-slice'
],
{
browsers,
feature: 'css-masks'
}
);
});
// CSS clip-path property
f(cssClipPath, browsers =>
prefix$1(['clip-path'], {
browsers,
feature: 'css-clip-path'
})
);
// Fragmented Borders and Backgrounds
f(cssBoxdecorationbreak, browsers =>
prefix$1(['box-decoration-break'], {
browsers,
feature: 'css-boxdecorationbreak'
})
);
// CSS3 object-fit/object-position
f(objectFit, browsers =>
prefix$1(['object-fit', 'object-position'], {
browsers,
feature: 'object-fit'
})
);
// CSS Shapes
f(cssShapes, browsers =>
prefix$1(['shape-margin', 'shape-outside', 'shape-image-threshold'], {
browsers,
feature: 'css-shapes'
})
);
// CSS3 text-overflow
f(textOverflow, browsers =>
prefix$1(['text-overflow'], {
browsers,
feature: 'text-overflow'
})
);
// Viewport at-rule
f(cssDeviceadaptation, browsers =>
prefix$1(['@viewport'], {
browsers,
feature: 'css-deviceadaptation'
})
);
// Resolution Media Queries
f(cssMediaResolution, { match: /( x($| )|a #2)/ }, browsers =>
prefix$1(['@resolution'], {
browsers,
feature: 'css-media-resolution'
})
);
// CSS text-align-last
f(cssTextAlignLast, browsers =>
prefix$1(['text-align-last'], {
browsers,
feature: 'css-text-align-last'
})
);
// Crisp Edges Image Rendering Algorithm
f(cssCrispEdges, { match: /y x|a x #1/ }, browsers =>
prefix$1(['pixelated'], {
browsers,
feature: 'css-crisp-edges',
props: ['image-rendering']
})
);
f(cssCrispEdges, { match: /a x #2/ }, browsers =>
prefix$1(['image-rendering'], {
browsers,
feature: 'css-crisp-edges'
})
);
// Logical Properties
f(cssLogicalProps, browsers =>
prefix$1(
[
'border-inline-start',
'border-inline-end',
'margin-inline-start',
'margin-inline-end',
'padding-inline-start',
'padding-inline-end'
],
{
browsers,
feature: 'css-logical-props'
}
)
);
f(cssLogicalProps, { match: /x\s#2/ }, browsers =>
prefix$1(
[
'border-block-start',
'border-block-end',
'margin-block-start',
'margin-block-end',
'padding-block-start',
'padding-block-end'
],
{
browsers,
feature: 'css-logical-props'
}
)
);
// CSS appearance
f(cssAppearance, { match: /#2|x/ }, browsers =>
prefix$1(['appearance'], {
browsers,
feature: 'css-appearance'
})
);
// CSS Scroll snap points
f(cssSnappoints, browsers =>
prefix$1(
[
'scroll-snap-type',
'scroll-snap-coordinate',
'scroll-snap-destination',
'scroll-snap-points-x',
'scroll-snap-points-y'
],
{
browsers,
feature: 'css-snappoints'
}
)
);
// CSS Regions
f(cssRegions, browsers =>
prefix$1(['flow-into', 'flow-from', 'region-fragment'], {
browsers,
feature: 'css-regions'
})
);
// CSS image-set
f(cssImageSet, browsers =>
prefix$1(['image-set'], {
browsers,
feature: 'css-image-set',
props: [
'background',
'background-image',
'border-image',
'cursor',
'mask',
'mask-image',
'list-style',
'list-style-image',
'content'
]
})
);
// Writing Mode
f(cssWritingMode, { match: /a|x/ }, browsers =>
prefix$1(['writing-mode'], {
browsers,
feature: 'css-writing-mode'
})
);
// Cross-Fade Function
f(cssCrossFade, browsers =>
prefix$1(['cross-fade'], {
browsers,
feature: 'css-cross-fade',
props: [
'background',
'background-image',
'border-image',
'mask',
'list-style',
'list-style-image',
'content',
'mask-image'
]
})
);
// Read Only selector
f(cssReadOnlyWrite, browsers =>
prefix$1([':read-only', ':read-write'], {
browsers,
feature: 'css-read-only-write',
selector: true
})
);
// Text Emphasize
f(textEmphasis, browsers =>
prefix$1(
[
'text-emphasis',
'text-emphasis-position',
'text-emphasis-style',
'text-emphasis-color'
],
{
browsers,
feature: 'text-emphasis'
}
)
);
// CSS Grid Layout
f(cssGrid, browsers => {
prefix$1(['display-grid', 'inline-grid'], {
browsers,
feature: 'css-grid',
props: ['display']
});
prefix$1(
[
'grid-template-columns',
'grid-template-rows',
'grid-row-start',
'grid-column-start',
'grid-row-end',
'grid-column-end',
'grid-row',
'grid-column',
'grid-area',
'grid-template',
'grid-template-areas',
'place-self'
],
{
browsers,
feature: 'css-grid'
}
);
});
f(cssGrid, { match: /a x/ }, browsers =>
prefix$1(['grid-column-align', 'grid-row-align'], {
browsers,
feature: 'css-grid'
})
);
// CSS text-spacing
f(cssTextSpacing, browsers =>
prefix$1(['text-spacing'], {
browsers,
feature: 'css-text-spacing'
})
);
// :any-link selector
f(cssAnyLink, browsers =>
prefix$1([':any-link'], {
browsers,
feature: 'css-any-link',
selector: true
})
);
// unicode-bidi
f(mdnCssUnicodeBidiIsolate, browsers =>
prefix$1(['isolate'], {
browsers,
feature: 'css-unicode-bidi',
props: ['unicode-bidi']
})
);
f(mdnCssUnicodeBidiPlaintext, browsers =>
prefix$1(['plaintext'], {
browsers,
feature: 'css-unicode-bidi',
props: ['unicode-bidi']
})
);
f(mdnCssUnicodeBidiIsolateOverride, { match: /y x/ }, browsers =>
prefix$1(['isolate-override'], {
browsers,
feature: 'css-unicode-bidi',
props: ['unicode-bidi']
})
);
// overscroll-behavior selector
f(cssOverscrollBehavior, { match: /a #1/ }, browsers =>
prefix$1(['overscroll-behavior'], {
browsers,
feature: 'css-overscroll-behavior'
})
);
// text-orientation
f(cssTextOrientation, browsers =>
prefix$1(['text-orientation'], {
browsers,
feature: 'css-text-orientation'
})
);
// print-color-adjust
f(cssPrintColorAdjust, browsers =>
prefix$1(['print-color-adjust', 'color-adjust'], {
browsers,
feature: 'css-print-color-adjust'
})
);
let { list: list$5 } = postcss_1;
/**
* Throw special error, to tell beniary,
* that this error is from Autoprefixer.
*/
var error = function (text) {
let err = new Error(text);
err.autoprefixer = true;
throw err
};
/**
* Return array, that doesnât contain duplicates.
*/
var uniq$1 = function (array) {
return [...new Set(array)]
};
/**
* Return "-webkit-" on "-webkit- old"
*/
var removeNote = function (string) {
if (!string.includes(' ')) {
return string
}
return string.split(' ')[0]
};
/**
* Escape RegExp symbols
*/
var escapeRegexp$1 = function (string) {
return string.replace(/[$()*+-.?[\\\]^{|}]/g, '\\$&')
};
/**
* Return regexp to check, that CSS string contain word
*/
var regexp$1 = function (word, escape = true) {
if (escape) {
word = this.escapeRegexp(word);
}
return new RegExp(`(^|[\\s,(])(${word}($|[\\s(,]))`, 'gi')
};
/**
* Change comma list
*/
var editList = function (value, callback) {
let origin = list$5.comma(value);
let changed = callback(origin, []);
if (origin === changed) {
return value
}
let join = value.match(/,\s*/);
join = join ? join[0] : ', ';
return changed.join(join)
};
/**
* Split the selector into parts.
* It returns 3 level deep array because selectors can be comma
* separated (1), space separated (2), and combined (3)
* @param {String} selector selector string
* @return {Array>} 3 level deep array of split selector
* @see utils.test.js for examples
*/
var splitSelector$1 = function (selector) {
return list$5.comma(selector).map(i => {
return list$5.space(i).map(k => {
return k.split(/(?=\.|#)/g)
})
})
};
/**
* Return true if a given value only contains numbers.
* @param {*} value
* @returns {boolean}
*/
var isPureNumber$1 = function (value) {
if (typeof value === 'number') {
return true
}
if (typeof value === 'string') {
return /^[0-9]+$/.test(value)
}
return false
};
var utils = {
error: error,
uniq: uniq$1,
removeNote: removeNote,
escapeRegexp: escapeRegexp$1,
regexp: regexp$1,
editList: editList,
splitSelector: splitSelector$1,
isPureNumber: isPureNumber$1
};
let { agents: agents$1 } = agents$3;
class Browsers {
constructor(data, requirements, options, browserslistOpts) {
this.data = data;
this.options = options || {};
this.browserslistOpts = browserslistOpts || {};
this.selected = this.parse(requirements);
}
/**
* Return all prefixes for default browser data
*/
static prefixes() {
if (this.prefixesCache) {
return this.prefixesCache
}
this.prefixesCache = [];
for (let name in agents$1) {
this.prefixesCache.push(`-${agents$1[name].prefix}-`);
}
this.prefixesCache = utils
.uniq(this.prefixesCache)
.sort((a, b) => b.length - a.length);
return this.prefixesCache
}
/**
* Check is value contain any possible prefix
*/
static withPrefix(value) {
if (!this.prefixesRegexp) {
this.prefixesRegexp = new RegExp(this.prefixes().join('|'));
}
return this.prefixesRegexp.test(value)
}
/**
* Is browser is selected by requirements
*/
isSelected(browser) {
return this.selected.includes(browser)
}
/**
* Return browsers selected by requirements
*/
parse(requirements) {
let opts = {};
for (let i in this.browserslistOpts) {
opts[i] = this.browserslistOpts[i];
}
opts.path = this.options.from;
return browserslist_1(requirements, opts)
}
/**
* Return prefix for selected browser
*/
prefix(browser) {
let [name, version] = browser.split(' ');
let data = this.data[name];
let prefix = data.prefix_exceptions && data.prefix_exceptions[version];
if (!prefix) {
prefix = data.prefix;
}
return `-${prefix}-`
}
}
var browsers = Browsers;
function capitalize(str) {
return str.slice(0, 1).toUpperCase() + str.slice(1)
}
const NAMES = {
and_chr: 'Chrome for Android',
and_ff: 'Firefox for Android',
and_qq: 'QQ Browser',
and_uc: 'UC for Android',
baidu: 'Baidu Browser',
ie: 'IE',
ie_mob: 'IE Mobile',
ios_saf: 'iOS Safari',
kaios: 'KaiOS Browser',
op_mini: 'Opera Mini',
op_mob: 'Opera Mobile',
samsung: 'Samsung Internet'
};
function prefix(name, prefixes, note) {
let out = ` ${name}`;
if (note) out += ' *';
out += ': ';
out += prefixes.map(i => i.replace(/^-(.*)-$/g, '$1')).join(', ');
out += '\n';
return out
}
var info = function (prefixes) {
if (prefixes.browsers.selected.length === 0) {
return 'No browsers selected'
}
let versions = {};
for (let browser of prefixes.browsers.selected) {
let parts = browser.split(' ');
let name = parts[0];
let version = parts[1];
name = NAMES[name] || capitalize(name);
if (versions[name]) {
versions[name].push(version);
} else {
versions[name] = [version];
}
}
let out = 'Browsers:\n';
for (let browser in versions) {
let list = versions[browser];
list = list.sort((a, b) => parseFloat(b) - parseFloat(a));
out += ` ${browser}: ${list.join(', ')}\n`;
}
let coverage = browserslist_1.coverage(prefixes.browsers.selected);
let round = Math.round(coverage * 100) / 100.0;
out += `\nThese browsers account for ${round}% of all users globally\n`;
let atrules = [];
for (let name in prefixes.add) {
let data = prefixes.add[name];
if (name[0] === '@' && data.prefixes) {
atrules.push(prefix(name, data.prefixes));
}
}
if (atrules.length > 0) {
out += `\nAt-Rules:\n${atrules.sort().join('')}`;
}
let selectors = [];
for (let selector of prefixes.add.selectors) {
if (selector.prefixes) {
selectors.push(prefix(selector.name, selector.prefixes));
}
}
if (selectors.length > 0) {
out += `\nSelectors:\n${selectors.sort().join('')}`;
}
let values = [];
let props = [];
let hadGrid = false;
for (let name in prefixes.add) {
let data = prefixes.add[name];
if (name[0] !== '@' && data.prefixes) {
let grid = name.indexOf('grid-') === 0;
if (grid) hadGrid = true;
props.push(prefix(name, data.prefixes, grid));
}
if (!Array.isArray(data.values)) {
continue
}
for (let value of data.values) {
let grid = value.name.includes('grid');
if (grid) hadGrid = true;
let string = prefix(value.name, value.prefixes, grid);
if (!values.includes(string)) {
values.push(string);
}
}
}
if (props.length > 0) {
out += `\nProperties:\n${props.sort().join('')}`;
}
if (values.length > 0) {
out += `\nValues:\n${values.sort().join('')}`;
}
if (hadGrid) {
out += '\n* - Prefixes will be added only on grid: true option.\n';
}
if (!atrules.length && !selectors.length && !props.length && !values.length) {
out +=
"\nAwesome! Your browsers don't require any vendor prefixes." +
'\nNow you can remove Autoprefixer from build steps.';
}
return out
};
var vendor = {
prefix(prop) {
let match = prop.match(/^(-\w+-)/);
if (match) {
return match[0]
}
return ''
},
unprefixed(prop) {
return prop.replace(/^-\w+-/, '')
}
};
/**
* Recursively clone objects
*/
function clone(obj, parent) {
let cloned = new obj.constructor();
for (let i of Object.keys(obj || {})) {
let value = obj[i];
if (i === 'parent' && typeof value === 'object') {
if (parent) {
cloned[i] = parent;
}
} else if (i === 'source' || i === null) {
cloned[i] = value;
} else if (Array.isArray(value)) {
cloned[i] = value.map(x => clone(x, cloned));
} else if (
i !== '_autoprefixerPrefix' &&
i !== '_autoprefixerValues' &&
i !== 'proxyCache'
) {
if (typeof value === 'object' && value !== null) {
value = clone(value, cloned);
}
cloned[i] = value;
}
}
return cloned
}
class Prefixer {
constructor(name, prefixes, all) {
this.prefixes = prefixes;
this.name = name;
this.all = all;
}
/**
* Clone node and clean autprefixer custom caches
*/
static clone(node, overrides) {
let cloned = clone(node);
for (let name in overrides) {
cloned[name] = overrides[name];
}
return cloned
}
/**
* Add hack to selected names
*/
static hack(klass) {
if (!this.hacks) {
this.hacks = {};
}
return klass.names.map(name => {
this.hacks[name] = klass;
return this.hacks[name]
})
}
/**
* Load hacks for some names
*/
static load(name, prefixes, all) {
let Klass = this.hacks && this.hacks[name];
if (Klass) {
return new Klass(name, prefixes, all)
} else {
return new this(name, prefixes, all)
}
}
/**
* Shortcut for Prefixer.clone
*/
clone(node, overrides) {
return Prefixer.clone(node, overrides)
}
/**
* Find prefix in node parents
*/
parentPrefix(node) {
let prefix;
if (typeof node._autoprefixerPrefix !== 'undefined') {
prefix = node._autoprefixerPrefix;
} else if (node.type === 'decl' && node.prop[0] === '-') {
prefix = vendor.prefix(node.prop);
} else if (node.type === 'root') {
prefix = false;
} else if (
node.type === 'rule' &&
node.selector.includes(':-') &&
/:(-\w+-)/.test(node.selector)
) {
prefix = node.selector.match(/:(-\w+-)/)[1];
} else if (node.type === 'atrule' && node.name[0] === '-') {
prefix = vendor.prefix(node.name);
} else {
prefix = this.parentPrefix(node.parent);
}
if (!browsers.prefixes().includes(prefix)) {
prefix = false;
}
node._autoprefixerPrefix = prefix;
return node._autoprefixerPrefix
}
/**
* Clone node with prefixes
*/
process(node, result) {
if (!this.check(node)) {
return undefined
}
let parent = this.parentPrefix(node);
let prefixes = this.prefixes.filter(
prefix => !parent || parent === utils.removeNote(prefix)
);
let added = [];
for (let prefix of prefixes) {
if (this.add(node, prefix, added.concat([prefix]), result)) {
added.push(prefix);
}
}
return added
}
}
var prefixer = Prefixer;
class AtRule extends prefixer {
/**
* Clone and add prefixes for at-rule
*/
add(rule, prefix) {
let prefixed = prefix + rule.name;
let already = rule.parent.some(
i => i.name === prefixed && i.params === rule.params
);
if (already) {
return undefined
}
let cloned = this.clone(rule, { name: prefixed });
return rule.parent.insertBefore(rule, cloned)
}
/**
* Clone node with prefixes
*/
process(node) {
let parent = this.parentPrefix(node);
for (let prefix of this.prefixes) {
if (!parent || parent === prefix) {
this.add(node, prefix);
}
}
}
}
var atRule = AtRule;
class Declaration extends prefixer {
/**
* Clone and add prefixes for declaration
*/
add(decl, prefix, prefixes, result) {
let prefixed = this.prefixed(decl.prop, prefix);
if (
this.isAlready(decl, prefixed) ||
this.otherPrefixes(decl.value, prefix)
) {
return undefined
}
return this.insert(decl, prefix, prefixes, result)
}
/**
* Calculate indentation to create visual cascade
*/
calcBefore(prefixes, decl, prefix = '') {
let max = this.maxPrefixed(prefixes, decl);
let diff = max - utils.removeNote(prefix).length;
let before = decl.raw('before');
if (diff > 0) {
before += Array(diff).fill(' ').join('');
}
return before
}
/**
* Always true, because we already get prefixer by property name
*/
check(/* decl */) {
return true
}
/**
* Clone and insert new declaration
*/
insert(decl, prefix, prefixes) {
let cloned = this.set(this.clone(decl), prefix);
if (!cloned) return undefined
let already = decl.parent.some(
i => i.prop === cloned.prop && i.value === cloned.value
);
if (already) {
return undefined
}
if (this.needCascade(decl)) {
cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
}
return decl.parent.insertBefore(decl, cloned)
}
/**
* Did this declaration has this prefix above
*/
isAlready(decl, prefixed) {
let already = this.all.group(decl).up(i => i.prop === prefixed);
if (!already) {
already = this.all.group(decl).down(i => i.prop === prefixed);
}
return already
}
/**
* Return maximum length of possible prefixed property
*/
maxPrefixed(prefixes, decl) {
if (decl._autoprefixerMax) {
return decl._autoprefixerMax
}
let max = 0;
for (let prefix of prefixes) {
prefix = utils.removeNote(prefix);
if (prefix.length > max) {
max = prefix.length;
}
}
decl._autoprefixerMax = max;
return decl._autoprefixerMax
}
/**
* Should we use visual cascade for prefixes
*/
needCascade(decl) {
if (!decl._autoprefixerCascade) {
decl._autoprefixerCascade =
this.all.options.cascade !== false && decl.raw('before').includes('\n');
}
return decl._autoprefixerCascade
}
/**
* Return unprefixed version of property
*/
normalize(prop) {
return prop
}
/**
* Return list of prefixed properties to clean old prefixes
*/
old(prop, prefix) {
return [this.prefixed(prop, prefix)]
}
/**
* Check `value`, that it contain other prefixes, rather than `prefix`
*/
otherPrefixes(value, prefix) {
for (let other of browsers.prefixes()) {
if (other === prefix) {
continue
}
if (value.includes(other)) {
return value.replace(/var\([^)]+\)/, '').includes(other)
}
}
return false
}
/**
* Return prefixed version of property
*/
prefixed(prop, prefix) {
return prefix + prop
}
/**
* Add spaces for visual cascade
*/
process(decl, result) {
if (!this.needCascade(decl)) {
super.process(decl, result);
return
}
let prefixes = super.process(decl, result);
if (!prefixes || !prefixes.length) {
return
}
this.restoreBefore(decl);
decl.raws.before = this.calcBefore(prefixes, decl);
}
/**
* Remove visual cascade
*/
restoreBefore(decl) {
let lines = decl.raw('before').split('\n');
let min = lines[lines.length - 1];
this.all.group(decl).up(prefixed => {
let array = prefixed.raw('before').split('\n');
let last = array[array.length - 1];
if (last.length {
return i.prop && i.prop.startsWith('grid-')
})
)
}
/**
* Return property name by final spec
*/
normalize() {
return 'align-self'
}
/**
* Change property name for 2012 specs
*/
prefixed(prop, prefix) {
let spec
;[spec, prefix] = flexSpec(prefix);
if (spec === 2012) {
return prefix + 'flex-item-align'
}
return super.prefixed(prop, prefix)
}
/**
* Change value for 2012 spec and ignore prefix for 2009
*/
set(decl, prefix) {
let spec = flexSpec(prefix)[0];
if (spec === 2012) {
decl.value = AlignSelf.oldValues[decl.value] || decl.value;
return super.set(decl, prefix)
}
if (spec === 'final') {
return super.set(decl, prefix)
}
return undefined
}
}
AlignSelf.names = ['align-self', 'flex-item-align'];
AlignSelf.oldValues = {
'flex-end': 'end',
'flex-start': 'start'
};
var alignSelf = AlignSelf;
class Animation extends declaration {
/**
* Donât add prefixes for modern values.
*/
check(decl) {
return !decl.value.split(/\s+/).some(i => {
let lower = i.toLowerCase();
return lower === 'reverse' || lower === 'alternate-reverse'
})
}
}
Animation.names = ['animation', 'animation-direction'];
var animation = Animation;
class Appearance extends declaration {
constructor(name, prefixes, all) {
super(name, prefixes, all);
if (this.prefixes) {
this.prefixes = utils.uniq(
this.prefixes.map(i => {
if (i === '-ms-') {
return '-webkit-'
}
return i
})
);
}
}
}
Appearance.names = ['appearance'];
var appearance = Appearance;
class OldSelector {
constructor(selector, prefix) {
this.prefix = prefix;
this.prefixed = selector.prefixed(this.prefix);
this.regexp = selector.regexp(this.prefix);
this.prefixeds = selector
.possible()
.map(x => [selector.prefixed(x), selector.regexp(x)]);
this.unprefixed = selector.name;
this.nameRegexp = selector.regexp();
}
/**
* Does rule contain an unnecessary prefixed selector
*/
check(rule) {
if (!rule.selector.includes(this.prefixed)) {
return false
}
if (!rule.selector.match(this.regexp)) {
return false
}
if (this.isHack(rule)) {
return false
}
return true
}
/**
* Is rule a hack without unprefixed version bottom
*/
isHack(rule) {
let index = rule.parent.index(rule) + 1;
let rules = rule.parent.nodes;
while (index = 0) {
let before = rule.parent.nodes[index];
if (before.type !== 'rule') {
return false
}
let some = false;
for (let key in prefixeds[this.name]) {
let prefixed = prefixeds[this.name][key];
if (before.selector === prefixed) {
if (prefix === key) {
return true
} else {
some = true;
break
}
}
}
if (!some) {
return false
}
index -= 1;
}
return false
}
/**
* Is rule selectors need to be prefixed
*/
check(rule) {
if (rule.selector.includes(this.name)) {
return !!rule.selector.match(this.regexp())
}
return false
}
/**
* Return function to fast find prefixed selector
*/
old(prefix) {
return new oldSelector(this, prefix)
}
/**
* All possible prefixes
*/
possible() {
return browsers.prefixes()
}
/**
* Return prefixed version of selector
*/
prefixed(prefix) {
return this.name.replace(/^(\W*)/, `$1${prefix}`)
}
/**
* Return all possible selector prefixes
*/
prefixeds(rule) {
if (rule._autoprefixerPrefixeds) {
if (rule._autoprefixerPrefixeds[this.name]) {
return rule._autoprefixerPrefixeds
}
} else {
rule._autoprefixerPrefixeds = {};
}
let prefixeds = {};
if (rule.selector.includes(',')) {
let ruleParts = list$4.comma(rule.selector);
let toProcess = ruleParts.filter(el => el.includes(this.name));
for (let prefix of this.possible()) {
prefixeds[prefix] = toProcess
.map(el => this.replace(el, prefix))
.join(', ');
}
} else {
for (let prefix of this.possible()) {
prefixeds[prefix] = this.replace(rule.selector, prefix);
}
}
rule._autoprefixerPrefixeds[this.name] = prefixeds;
return rule._autoprefixerPrefixeds
}
/**
* Lazy loadRegExp for name
*/
regexp(prefix) {
if (!this.regexpCache.has(prefix)) {
let name = prefix ? this.prefixed(prefix) : this.name;
this.regexpCache.set(
prefix,
new RegExp(`(^|[^:"'=])${utils.escapeRegexp(name)}`, 'gi')
);
}
return this.regexpCache.get(prefix)
}
/**
* Replace selectors by prefixed one
*/
replace(selector, prefix) {
return selector.replace(this.regexp(), `$1${this.prefixed(prefix)}`)
}
}
var selector = Selector;
class Autofill extends selector {
constructor(name, prefixes, all) {
super(name, prefixes, all);
if (this.prefixes) {
this.prefixes = utils.uniq(this.prefixes.map(() => '-webkit-'));
}
}
/**
* Return different selectors depend on prefix
*/
prefixed(prefix) {
if (prefix === '-webkit-') {
return ':-webkit-autofill'
}
return `:${prefix}autofill`
}
}
Autofill.names = [':autofill'];
var autofill = Autofill;
class BackdropFilter extends declaration {
constructor(name, prefixes, all) {
super(name, prefixes, all);
if (this.prefixes) {
this.prefixes = utils.uniq(
this.prefixes.map(i => {
return i === '-ms-' ? '-webkit-' : i
})
);
}
}
}
BackdropFilter.names = ['backdrop-filter'];
var backdropFilter = BackdropFilter;
class BackgroundClip extends declaration {
constructor(name, prefixes, all) {
super(name, prefixes, all);
if (this.prefixes) {
this.prefixes = utils.uniq(
this.prefixes.map(i => {
return i === '-ms-' ? '-webkit-' : i
})
);
}
}
check(decl) {
return decl.value.toLowerCase() === 'text'
}
}
BackgroundClip.names = ['background-clip'];
var backgroundClip = BackgroundClip;
class BackgroundSize extends declaration {
/**
* Duplication parameter for -webkit- browsers
*/
set(decl, prefix) {
let value = decl.value.toLowerCase();
if (
prefix === '-webkit-' &&
!value.includes(' ') &&
value !== 'contain' &&
value !== 'cover'
) {
decl.value = decl.value + ' ' + decl.value;
}
return super.set(decl, prefix)
}
}
BackgroundSize.names = ['background-size'];
var backgroundSize = BackgroundSize;
class BlockLogical extends declaration {
/**
* Return property name by spec
*/
normalize(prop) {
if (prop.includes('-before')) {
return prop.replace('-before', '-block-start')
}
return prop.replace('-after', '-block-end')
}
/**
* Use old syntax for -moz- and -webkit-
*/
prefixed(prop, prefix) {
if (prop.includes('-start')) {
return prefix + prop.replace('-block-start', '-before')
}
return prefix + prop.replace('-block-end', '-after')
}
}
BlockLogical.names = [
'border-block-start',
'border-block-end',
'margin-block-start',
'margin-block-end',
'padding-block-start',
'padding-block-end',
'border-before',
'border-after',
'margin-before',
'margin-after',
'padding-before',
'padding-after'
];
var blockLogical = BlockLogical;
class BorderImage extends declaration {
/**
* Remove fill parameter for prefixed declarations
*/
set(decl, prefix) {
decl.value = decl.value.replace(/\s+fill(\s)/, '$1');
return super.set(decl, prefix)
}
}
BorderImage.names = ['border-image'];
var borderImage = BorderImage;
class BorderRadius extends declaration {
/**
* Return unprefixed version of property
*/
normalize(prop) {
return BorderRadius.toNormal[prop] || prop
}
/**
* Change syntax, when add Mozilla prefix
*/
prefixed(prop, prefix) {
if (prefix === '-moz-') {
return prefix + (BorderRadius.toMozilla[prop] || prop)
}
return super.prefixed(prop, prefix)
}
}
BorderRadius.names = ['border-radius'];
BorderRadius.toMozilla = {};
BorderRadius.toNormal = {};
for (let ver of ['top', 'bottom']) {
for (let hor of ['left', 'right']) {
let normal = `border-${ver}-${hor}-radius`;
let mozilla = `border-radius-${ver}${hor}`;
BorderRadius.names.push(normal);
BorderRadius.names.push(mozilla);
BorderRadius.toMozilla[normal] = mozilla;
BorderRadius.toNormal[mozilla] = normal;
}
}
var borderRadius = BorderRadius;
class BreakProps extends declaration {
/**
* Donât prefix some values
*/
insert(decl, prefix, prefixes) {
if (decl.prop !== 'break-inside') {
return super.insert(decl, prefix, prefixes)
}
if (/region/i.test(decl.value) || /page/i.test(decl.value)) {
return undefined
}
return super.insert(decl, prefix, prefixes)
}
/**
* Return property name by final spec
*/
normalize(prop) {
if (prop.includes('inside')) {
return 'break-inside'
}
if (prop.includes('before')) {
return 'break-before'
}
return 'break-after'
}
/**
* Change name for -webkit- and -moz- prefix
*/
prefixed(prop, prefix) {
return `${prefix}column-${prop}`
}
/**
* Change prefixed value for avoid-column and avoid-page
*/
set(decl, prefix) {
if (
(decl.prop === 'break-inside' && decl.value === 'avoid-column') ||
decl.value === 'avoid-page'
) {
decl.value = 'avoid';
}
return super.set(decl, prefix)
}
}
BreakProps.names = [
'break-inside',
'page-break-inside',
'column-break-inside',
'break-before',
'page-break-before',
'column-break-before',
'break-after',
'page-break-after',
'column-break-after'
];
var breakProps = BreakProps;
class OldValue {
constructor(unprefixed, prefixed, string, regexp) {
this.unprefixed = unprefixed;
this.prefixed = prefixed;
this.string = string || prefixed;
this.regexp = regexp || utils.regexp(prefixed);
}
/**
* Check, that value contain old value
*/
check(value) {
if (value.includes(this.string)) {
return !!value.match(this.regexp)
}
return false
}
}
var oldValue = OldValue;
class Value extends prefixer {
/**
* Clone decl for each prefixed values
*/
static save(prefixes, decl) {
let prop = decl.prop;
let result = [];
for (let prefix in decl._autoprefixerValues) {
let value = decl._autoprefixerValues[prefix];
if (value === decl.value) {
continue
}
let item;
let propPrefix = vendor.prefix(prop);
if (propPrefix === '-pie-') {
continue
}
if (propPrefix === prefix) {
item = decl.value = value;
result.push(item);
continue
}
let prefixed = prefixes.prefixed(prop, prefix);
let rule = decl.parent;
if (!rule.every(i => i.prop !== prefixed)) {
result.push(item);
continue
}
let trimmed = value.replace(/\s+/, ' ');
let already = rule.some(
i => i.prop === decl.prop && i.value.replace(/\s+/, ' ') === trimmed
);
if (already) {
result.push(item);
continue
}
let cloned = this.clone(decl, { value });
item = decl.parent.insertBefore(decl, cloned);
result.push(item);
}
return result
}
/**
* Save values with next prefixed token
*/
add(decl, prefix) {
if (!decl._autoprefixerValues) {
decl._autoprefixerValues = {};
}
let value = decl._autoprefixerValues[prefix] || this.value(decl);
let before;
do {
before = value;
value = this.replace(value, prefix);
if (value === false) return
} while (value !== before)
decl._autoprefixerValues[prefix] = value;
}
/**
* Is declaration need to be prefixed
*/
check(decl) {
let value = decl.value;
if (!value.includes(this.name)) {
return false
}
return !!value.match(this.regexp())
}
/**
* Return function to fast find prefixed value
*/
old(prefix) {
return new oldValue(this.name, prefix + this.name)
}
/**
* Lazy regexp loading
*/
regexp() {
return this.regexpCache || (this.regexpCache = utils.regexp(this.name))
}
/**
* Add prefix to values in string
*/
replace(string, prefix) {
return string.replace(this.regexp(), `$1${prefix}$2`)
}
/**
* Get value with comments if it was not changed
*/
value(decl) {
if (decl.raws.value && decl.raws.value.value === decl.value) {
return decl.raws.value.raw
} else {
return decl.value
}
}
}
var value = Value;
let list$3 = postcss_1.list;
class CrossFade extends value {
replace(string, prefix) {
return list$3
.space(string)
.map(value => {
if (value.slice(0, +this.name.length + 1) !== this.name + '(') {
return value
}
let close = value.lastIndexOf(')');
let after = value.slice(close + 1);
let args = value.slice(this.name.length + 1, close);
if (prefix === '-webkit-') {
let match = args.match(/\d*.?\d+%?/);
if (match) {
args = args.slice(match[0].length).trim();
args += `, ${match[0]}`;
} else {
args += ', 0.5';
}
}
return prefix + this.name + '(' + args + ')' + after
})
.join(' ')
}
}
CrossFade.names = ['cross-fade'];
var crossFade = CrossFade;
class DisplayFlex extends value {
constructor(name, prefixes) {
super(name, prefixes);
if (name === 'display-flex') {
this.name = 'flex';
}
}
/**
* Faster check for flex value
*/
check(decl) {
return decl.prop === 'display' && decl.value === this.name
}
/**
* Change value for old specs
*/
old(prefix) {
let prefixed = this.prefixed(prefix);
if (!prefixed) return undefined
return new oldValue(this.name, prefixed)
}
/**
* Return value by spec
*/
prefixed(prefix) {
let spec, value
;[spec, prefix] = flexSpec(prefix);
if (spec === 2009) {
if (this.name === 'flex') {
value = 'box';
} else {
value = 'inline-box';
}
} else if (spec === 2012) {
if (this.name === 'flex') {
value = 'flexbox';
} else {
value = 'inline-flexbox';
}
} else if (spec === 'final') {
value = this.name;
}
return prefix + value
}
/**
* Add prefix to value depend on flebox spec version
*/
replace(string, prefix) {
return this.prefixed(prefix)
}
}
DisplayFlex.names = ['display-flex', 'inline-flex'];
var displayFlex = DisplayFlex;
class DisplayGrid extends value {
constructor(name, prefixes) {
super(name, prefixes);
if (name === 'display-grid') {
this.name = 'grid';
}
}
/**
* Faster check for flex value
*/
check(decl) {
return decl.prop === 'display' && decl.value === this.name
}
}
DisplayGrid.names = ['display-grid', 'inline-grid'];
var displayGrid = DisplayGrid;
class FileSelectorButton extends selector {
constructor(name, prefixes, all) {
super(name, prefixes, all);
if (this.prefixes) {
this.prefixes = utils.uniq(this.prefixes.map(() => '-webkit-'));
}
}
/**
* Return different selectors depend on prefix
*/
prefixed(prefix) {
if (prefix === '-webkit-') {
return '::-webkit-file-upload-button'
}
return `::${prefix}file-selector-button`
}
}
FileSelectorButton.names = ['::file-selector-button'];
var fileSelectorButton = FileSelectorButton;
class Filter extends declaration {
/**
* Check is it Internet Explorer filter
*/
check(decl) {
let v = decl.value;
return (
!v.toLowerCase().includes('alpha(') &&
!v.includes('DXImageTransform.Microsoft') &&
!v.includes('data:image/svg+xml')
)
}
}
Filter.names = ['filter'];
var filter = Filter;
class FilterValue extends value {
constructor(name, prefixes) {
super(name, prefixes);
if (name === 'filter-function') {
this.name = 'filter';
}
}
}
FilterValue.names = ['filter', 'filter-function'];
var filterValue = FilterValue;
let list$2 = postcss_1.list;
class Flex$1 extends declaration {
/**
* Return property name by final spec
*/
normalize() {
return 'flex'
}
/**
* Change property name for 2009 spec
*/
prefixed(prop, prefix) {
let spec
;[spec, prefix] = flexSpec(prefix);
if (spec === 2009) {
return prefix + 'box-flex'
}
return super.prefixed(prop, prefix)
}
/**
* Spec 2009 supports only first argument
* Spec 2012 disallows unitless basis
*/
set(decl, prefix) {
let spec = flexSpec(prefix)[0];
if (spec === 2009) {
decl.value = list$2.space(decl.value)[0];
decl.value = Flex$1.oldValues[decl.value] || decl.value;
return super.set(decl, prefix)
}
if (spec === 2012) {
let components = list$2.space(decl.value);
if (components.length === 3 && components[2] === '0') {
decl.value = components.slice(0, 2).concat('0px').join(' ');
}
}
return super.set(decl, prefix)
}
}
Flex$1.names = ['flex', 'box-flex'];
Flex$1.oldValues = {
auto: '1',
none: '0'
};
var flex = Flex$1;
class FlexBasis extends declaration {
/**
* Return property name by final spec
*/
normalize() {
return 'flex-basis'
}
/**
* Return flex property for 2012 spec
*/
prefixed(prop, prefix) {
let spec
;[spec, prefix] = flexSpec(prefix);
if (spec === 2012) {
return prefix + 'flex-preferred-size'
}
return super.prefixed(prop, prefix)
}
/**
* Ignore 2009 spec and use flex property for 2012
*/
set(decl, prefix) {
let spec
;[spec, prefix] = flexSpec(prefix);
if (spec === 2012 || spec === 'final') {
return super.set(decl, prefix)
}
return undefined
}
}
FlexBasis.names = ['flex-basis', 'flex-preferred-size'];
var flexBasis = FlexBasis;
class FlexDirection extends declaration {
/**
* Use two properties for 2009 spec
*/
insert(decl, prefix, prefixes) {
let spec
;[spec, prefix] = flexSpec(prefix);
if (spec !== 2009) {
return super.insert(decl, prefix, prefixes)
}
let already = decl.parent.some(
i =>
i.prop === prefix + 'box-orient' || i.prop === prefix + 'box-direction'
);
if (already) {
return undefined
}
let v = decl.value;
let dir, orient;
if (v === 'inherit' || v === 'initial' || v === 'unset') {
orient = v;
dir = v;
} else {
orient = v.includes('row') ? 'horizontal' : 'vertical';
dir = v.includes('reverse') ? 'reverse' : 'normal';
}
let cloned = this.clone(decl);
cloned.prop = prefix + 'box-orient';
cloned.value = orient;
if (this.needCascade(decl)) {
cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
}
decl.parent.insertBefore(decl, cloned);
cloned = this.clone(decl);
cloned.prop = prefix + 'box-direction';
cloned.value = dir;
if (this.needCascade(decl)) {
cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
}
return decl.parent.insertBefore(decl, cloned)
}
/**
* Return property name by final spec
*/
normalize() {
return 'flex-direction'
}
/**
* Clean two properties for 2009 spec
*/
old(prop, prefix) {
let spec
;[spec, prefix] = flexSpec(prefix);
if (spec === 2009) {
return [prefix + 'box-orient', prefix + 'box-direction']
} else {
return super.old(prop, prefix)
}
}
}
FlexDirection.names = ['flex-direction', 'box-direction', 'box-orient'];
var flexDirection = FlexDirection;
class FlexFlow extends declaration {
/**
* Use two properties for 2009 spec
*/
insert(decl, prefix, prefixes) {
let spec
;[spec, prefix] = flexSpec(prefix);
if (spec !== 2009) {
return super.insert(decl, prefix, prefixes)
}
let values = decl.value
.split(/\s+/)
.filter(i => i !== 'wrap' && i !== 'nowrap' && 'wrap-reverse');
if (values.length === 0) {
return undefined
}
let already = decl.parent.some(
i =>
i.prop === prefix + 'box-orient' || i.prop === prefix + 'box-direction'
);
if (already) {
return undefined
}
let value = values[0];
let orient = value.includes('row') ? 'horizontal' : 'vertical';
let dir = value.includes('reverse') ? 'reverse' : 'normal';
let cloned = this.clone(decl);
cloned.prop = prefix + 'box-orient';
cloned.value = orient;
if (this.needCascade(decl)) {
cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
}
decl.parent.insertBefore(decl, cloned);
cloned = this.clone(decl);
cloned.prop = prefix + 'box-direction';
cloned.value = dir;
if (this.needCascade(decl)) {
cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
}
return decl.parent.insertBefore(decl, cloned)
}
}
FlexFlow.names = ['flex-flow', 'box-direction', 'box-orient'];
var flexFlow = FlexFlow;
class Flex extends declaration {
/**
* Return property name by final spec
*/
normalize() {
return 'flex'
}
/**
* Return flex property for 2009 and 2012 specs
*/
prefixed(prop, prefix) {
let spec
;[spec, prefix] = flexSpec(prefix);
if (spec === 2009) {
return prefix + 'box-flex'
}
if (spec === 2012) {
return prefix + 'flex-positive'
}
return super.prefixed(prop, prefix)
}
}
Flex.names = ['flex-grow', 'flex-positive'];
var flexGrow = Flex;
class FlexShrink extends declaration {
/**
* Return property name by final spec
*/
normalize() {
return 'flex-shrink'
}
/**
* Return flex property for 2012 spec
*/
prefixed(prop, prefix) {
let spec
;[spec, prefix] = flexSpec(prefix);
if (spec === 2012) {
return prefix + 'flex-negative'
}
return super.prefixed(prop, prefix)
}
/**
* Ignore 2009 spec and use flex property for 2012
*/
set(decl, prefix) {
let spec
;[spec, prefix] = flexSpec(prefix);
if (spec === 2012 || spec === 'final') {
return super.set(decl, prefix)
}
return undefined
}
}
FlexShrink.names = ['flex-shrink', 'flex-negative'];
var flexShrink = FlexShrink;
class FlexWrap extends declaration {
/**
* Don't add prefix for 2009 spec
*/
set(decl, prefix) {
let spec = flexSpec(prefix)[0];
if (spec !== 2009) {
return super.set(decl, prefix)
}
return undefined
}
}
FlexWrap.names = ['flex-wrap'];
var flexWrap = FlexWrap;
class Fullscreen extends selector {
/**
* Return different selectors depend on prefix
*/
prefixed(prefix) {
if (prefix === '-webkit-') {
return ':-webkit-full-screen'
}
if (prefix === '-moz-') {
return ':-moz-full-screen'
}
return `:${prefix}fullscreen`
}
}
Fullscreen.names = [':fullscreen'];
var fullscreen = Fullscreen;
var normalizeRange = {
wrap: wrapRange,
limit: limitRange,
validate: validateRange,
test: testRange,
curry: curry,
name: name
};
function wrapRange(min, max, value) {
var maxLessMin = max - min;
return ((value - min) % maxLessMin + maxLessMin) % maxLessMin + min;
}
function limitRange(min, max, value) {
return Math.max(min, Math.min(max, value));
}
function validateRange(min, max, value, minExclusive, maxExclusive) {
if (!testRange(min, max, value, minExclusive, maxExclusive)) {
throw new Error(value + ' is outside of range [' + min + ',' + max + ')');
}
return value;
}
function testRange(min, max, value, minExclusive, maxExclusive) {
return !(
value max ||
(maxExclusive && (value === max)) ||
(minExclusive && (value === min))
);
}
function name(min, max, minExcl, maxExcl) {
return (minExcl ? '(' : '[') + min + ',' + max + (maxExcl ? ')' : ']');
}
function curry(min, max, minExclusive, maxExclusive) {
var boundNameFn = name.bind(null, min, max, minExclusive, maxExclusive);
return {
wrap: wrapRange.bind(null, min, max),
limit: limitRange.bind(null, min, max),
validate: function(value) {
return validateRange(min, max, value, minExclusive, maxExclusive);
},
test: function(value) {
return testRange(min, max, value, minExclusive, maxExclusive);
},
toString: boundNameFn,
name: boundNameFn
};
}
var openParentheses = "(".charCodeAt(0);
var closeParentheses = ")".charCodeAt(0);
var singleQuote = "'".charCodeAt(0);
var doubleQuote = '"'.charCodeAt(0);
var backslash = "\\".charCodeAt(0);
var slash = "/".charCodeAt(0);
var comma = ",".charCodeAt(0);
var colon = ":".charCodeAt(0);
var star = "*".charCodeAt(0);
var uLower = "u".charCodeAt(0);
var uUpper = "U".charCodeAt(0);
var plus$1 = "+".charCodeAt(0);
var isUnicodeRange = /^[a-f0-9?-]+$/i;
var parse$2 = function(input) {
var tokens = [];
var value = input;
var next,
quote,
prev,
token,
escape,
escapePos,
whitespacePos,
parenthesesOpenPos;
var pos = 0;
var code = value.charCodeAt(pos);
var max = value.length;
var stack = [{ nodes: tokens }];
var balanced = 0;
var parent;
var name = "";
var before = "";
var after = "";
while (pos = 48 && nextCode = 48 && nextNextCode = 48 && nextCode = 48 && code 57) {
break;
}
pos += 1;
}
code = value.charCodeAt(pos);
nextCode = value.charCodeAt(pos + 1);
if (code === dot && nextCode >= 48 && nextCode 57) {
break;
}
pos += 1;
}
}
code = value.charCodeAt(pos);
nextCode = value.charCodeAt(pos + 1);
nextNextCode = value.charCodeAt(pos + 2);
if (
(code === exp || code === EXP) &&
((nextCode >= 48 && nextCode = 48 &&
nextNextCode 57) {
break;
}
pos += 1;
}
}
return {
number: value.slice(0, pos),
unit: value.slice(pos)
};
};
function ValueParser(value) {
if (this instanceof ValueParser) {
this.nodes = parse$2(value);
return this;
}
return new ValueParser(value);
}
ValueParser.prototype.toString = function() {
return Array.isArray(this.nodes) ? stringify_1(this.nodes) : "";
};
ValueParser.prototype.walk = function(cb, bubble) {
walk(this.nodes, cb, bubble);
return this;
};
ValueParser.unit = unit;
ValueParser.walk = walk;
ValueParser.stringify = stringify_1;
var lib = ValueParser;
let IS_DIRECTION = /top|left|right|bottom/gi;
class Gradient extends value {
/**
* Do not add non-webkit prefixes for list-style and object
*/
add(decl, prefix) {
let p = decl.prop;
if (p.includes('mask')) {
if (prefix === '-webkit-' || prefix === '-webkit- old') {
return super.add(decl, prefix)
}
} else if (
p === 'list-style' ||
p === 'list-style-image' ||
p === 'content'
) {
if (prefix === '-webkit-' || prefix === '-webkit- old') {
return super.add(decl, prefix)
}
} else {
return super.add(decl, prefix)
}
return undefined
}
/**
* Get div token from exists parameters
*/
cloneDiv(params) {
for (let i of params) {
if (i.type === 'div' && i.value === ',') {
return i
}
}
return { after: ' ', type: 'div', value: ',' }
}
/**
* Change colors syntax to old webkit
*/
colorStops(params) {
let result = [];
for (let i = 0; i 0) {
if (params[0].value === 'to') {
this.fixDirection(params);
} else if (params[0].value.includes('deg')) {
this.fixAngle(params);
} else if (this.isRadial(params)) {
this.fixRadial(params);
}
}
return params
}
/**
* Add 90 degrees
*/
fixAngle(params) {
let first = params[0].value;
first = parseFloat(first);
first = Math.abs(450 - first) % 360;
first = this.roundFloat(first, 3);
params[0].value = `${first}deg`;
}
/**
* Replace `to top left` to `bottom right`
*/
fixDirection(params) {
params.splice(0, 2);
for (let param of params) {
if (param.type === 'div') {
break
}
if (param.type === 'word') {
param.value = this.revertDirection(param.value);
}
}
}
/**
* Fix radial direction syntax
*/
fixRadial(params) {
let first = [];
let second = [];
let a, b, c, i, next;
for (i = 0; i ` values are allowed in CSS gradients and transforms.
// Spec: https://github.com/w3c/csswg-drafts/commit/602789171429b2231223ab1e5acf8f7f11652eb3
if (direction === '0deg' || direction === '0') {
nodes = this.replaceFirst(nodes, 'to', ' ', 'top');
} else if (direction === '90deg') {
nodes = this.replaceFirst(nodes, 'to', ' ', 'right');
} else if (direction === '180deg') {
nodes = this.replaceFirst(nodes, 'to', ' ', 'bottom'); // default value
} else if (direction === '270deg') {
nodes = this.replaceFirst(nodes, 'to', ' ', 'left');
}
}
return nodes
}
/**
* Convert angle unit to deg
*/
normalizeUnit(str, full) {
let num = parseFloat(str);
let deg = (num / full) * 360;
return `${deg}deg`
}
/**
* Remove old WebKit gradient too
*/
old(prefix) {
if (prefix === '-webkit-') {
let type;
if (this.name === 'linear-gradient') {
type = 'linear';
} else if (this.name === 'repeating-linear-gradient') {
type = 'repeating-linear';
} else if (this.name === 'repeating-radial-gradient') {
type = 'repeating-radial';
} else {
type = 'radial';
}
let string = '-gradient';
let regexp = utils.regexp(
`-webkit-(${type}-gradient|gradient\\(\\s*${type})`,
false
);
return new oldValue(this.name, prefix + this.name, string, regexp)
} else {
return super.old(prefix)
}
}
/**
* Change direction syntax to old webkit
*/
oldDirection(params) {
let div = this.cloneDiv(params[0]);
if (params[0][0].value !== 'to') {
return params.unshift([
{ type: 'word', value: Gradient.oldDirections.bottom },
div
])
} else {
let words = [];
for (let node of params[0].slice(2)) {
if (node.type === 'word') {
words.push(node.value.toLowerCase());
}
}
words = words.join(' ');
let old = Gradient.oldDirections[words] || words;
params[0] = [{ type: 'word', value: old }, div];
return params[0]
}
}
/**
* Convert to old webkit syntax
*/
oldWebkit(node) {
let { nodes } = node;
let string = lib.stringify(node.nodes);
if (this.name !== 'linear-gradient') {
return false
}
if (nodes[0] && nodes[0].value.includes('deg')) {
return false
}
if (
string.includes('px') ||
string.includes('-corner') ||
string.includes('-side')
) {
return false
}
let params = [[]];
for (let i of nodes) {
params[params.length - 1].push(i);
if (i.type === 'div' && i.value === ',') {
params.push([]);
}
}
this.oldDirection(params);
this.colorStops(params);
node.nodes = [];
for (let param of params) {
node.nodes = node.nodes.concat(param);
}
node.nodes.unshift(
{ type: 'word', value: 'linear' },
this.cloneDiv(node.nodes)
);
node.value = '-webkit-gradient';
return true
}
/**
* Change degrees for webkit prefix
*/
replace(string, prefix) {
let ast = lib(string);
for (let node of ast.nodes) {
let gradientName = this.name; // gradient name
if (node.type === 'function' && node.value === gradientName) {
node.nodes = this.newDirection(node.nodes);
node.nodes = this.normalize(node.nodes, gradientName);
if (prefix === '-webkit- old') {
let changes = this.oldWebkit(node);
if (!changes) {
return false
}
} else {
node.nodes = this.convertDirection(node.nodes);
node.value = prefix + node.value;
}
}
}
return ast.toString()
}
/**
* Replace first token
*/
replaceFirst(params, ...words) {
let prefix = words.map(i => {
if (i === ' ') {
return { type: 'space', value: i }
}
return { type: 'word', value: i }
});
return prefix.concat(params.slice(1))
}
revertDirection(word) {
return Gradient.directions[word.toLowerCase()] || word
}
/**
* Round float and save digits under dot
*/
roundFloat(float, digits) {
return parseFloat(float.toFixed(digits))
}
}
Gradient.names = [
'linear-gradient',
'repeating-linear-gradient',
'radial-gradient',
'repeating-radial-gradient'
];
Gradient.directions = {
bottom: 'top',
left: 'right',
right: 'left',
top: 'bottom' // default value
};
// Direction to replace
Gradient.oldDirections = {
'bottom': 'left top, left bottom',
'bottom left': 'right top, left bottom',
'bottom right': 'left top, right bottom',
'left': 'right top, left top',
'left bottom': 'right top, left bottom',
'left top': 'right bottom, left top',
'right': 'left top, right top',
'right bottom': 'left top, right bottom',
'right top': 'left bottom, right top',
'top': 'left bottom, left top',
'top left': 'right bottom, left top',
'top right': 'left bottom, right top'
};
var gradient = Gradient;
let list$1 = postcss_1.list;
let uniq = utils.uniq;
let escapeRegexp = utils.escapeRegexp;
let splitSelector = utils.splitSelector;
function convert(value) {
if (
value &&
value.length === 2 &&
value[0] === 'span' &&
parseInt(value[1], 10) > 0
) {
return [false, parseInt(value[1], 10)]
}
if (value && value.length === 1 && parseInt(value[0], 10) > 0) {
return [parseInt(value[0], 10), false]
}
return [false, false]
}
var translate_1 = translate;
function translate(values, startIndex, endIndex) {
let startValue = values[startIndex];
let endValue = values[endIndex];
if (!startValue) {
return [false, false]
}
let [start, spanStart] = convert(startValue);
let [end, spanEnd] = convert(endValue);
if (start && !endValue) {
return [start, false]
}
if (spanStart && end) {
return [end - spanStart, spanStart]
}
if (start && spanEnd) {
return [start, spanEnd]
}
if (start && end) {
return [start, end - start]
}
return [false, false]
}
var parse_1 = parse$1;
function parse$1(decl) {
let node = lib(decl.value);
let values = [];
let current = 0;
values[current] = [];
for (let i of node.nodes) {
if (i.type === 'div') {
current += 1;
values[current] = [];
} else if (i.type === 'word') {
values[current].push(i.value);
}
}
return values
}
var insertDecl_1 = insertDecl;
function insertDecl(decl, prop, value) {
if (value && !decl.parent.some(i => i.prop === `-ms-${prop}`)) {
decl.cloneBefore({
prop: `-ms-${prop}`,
value: value.toString()
});
}
}
// Track transforms
var prefixTrackProp_1 = prefixTrackProp$2;
function prefixTrackProp$2({ prefix, prop }) {
return prefix + prop.replace('template-', '')
}
function transformRepeat({ nodes }, { gap }) {
let { count, size } = nodes.reduce(
(result, node) => {
if (node.type === 'div' && node.value === ',') {
result.key = 'size';
} else {
result[result.key].push(lib.stringify(node));
}
return result
},
{
count: [],
key: 'count',
size: []
}
);
// insert gap values
if (gap) {
size = size.filter(i => i.trim());
let val = [];
for (let i = 1; i {
if (index > 0 || i > 1) {
val.push(gap);
}
val.push(item);
});
}
return val.join(' ')
}
return `(${size.join('')})[${count.join('')}]`
}
var prefixTrackValue_1 = prefixTrackValue$2;
function prefixTrackValue$2({ gap, value }) {
let result = lib(value).nodes.reduce((nodes, node) => {
if (node.type === 'function' && node.value === 'repeat') {
return nodes.concat({
type: 'word',
value: transformRepeat(node, { gap })
})
}
if (gap && node.type === 'space') {
return nodes.concat(
{
type: 'space',
value: ' '
},
{
type: 'word',
value: gap
},
node
)
}
return nodes.concat(node)
}, []);
return lib.stringify(result)
}
// Parse grid-template-areas
let DOTS = /^\.+$/;
function track(start, end) {
return { end, span: end - start, start }
}
function getColumns(line) {
return line.trim().split(/\s+/g)
}
var parseGridAreas_1 = parseGridAreas$1;
function parseGridAreas$1({ gap, rows }) {
return rows.reduce((areas, line, rowIndex) => {
if (gap.row) rowIndex *= 2;
if (line.trim() === '') return areas
getColumns(line).forEach((area, columnIndex) => {
if (DOTS.test(area)) return
if (gap.column) columnIndex *= 2;
if (typeof areas[area] === 'undefined') {
areas[area] = {
column: track(columnIndex + 1, columnIndex + 2),
row: track(rowIndex + 1, rowIndex + 2)
};
} else {
let { column, row } = areas[area];
column.start = Math.min(column.start, columnIndex + 1);
column.end = Math.max(column.end, columnIndex + 2);
column.span = column.end - column.start;
row.start = Math.min(row.start, rowIndex + 1);
row.end = Math.max(row.end, rowIndex + 2);
row.span = row.end - row.start;
}
});
return areas
}, {})
}
// Parse grid-template
function testTrack(node) {
return node.type === 'word' && /^\[.+]$/.test(node.value)
}
function verifyRowSize(result) {
if (result.areas.length > result.rows.length) {
result.rows.push('auto');
}
return result
}
var parseTemplate_1 = parseTemplate$1;
function parseTemplate$1({ decl, gap }) {
let gridTemplate = lib(decl.value).nodes.reduce(
(result, node) => {
let { type, value } = node;
if (testTrack(node) || type === 'space') return result
// area
if (type === 'string') {
result = verifyRowSize(result);
result.areas.push(value);
}
// values and function
if (type === 'word' || type === 'function') {
result[result.key].push(lib.stringify(node));
}
// divider(/)
if (type === 'div' && value === '/') {
result.key = 'columns';
result = verifyRowSize(result);
}
return result
},
{
areas: [],
columns: [],
key: 'rows',
rows: []
}
);
return {
areas: parseGridAreas$1({
gap,
rows: gridTemplate.areas
}),
columns: prefixTrackValue$2({
gap: gap.column,
value: gridTemplate.columns.join(' ')
}),
rows: prefixTrackValue$2({
gap: gap.row,
value: gridTemplate.rows.join(' ')
})
}
}
// Insert parsed grid areas
/**
* Get an array of -ms- prefixed props and values
* @param {Object} [area] area object with column and row data
* @param {Boolean} [addRowSpan] should we add grid-column-row value?
* @param {Boolean} [addColumnSpan] should we add grid-column-span value?
* @return {Array