var convert; (function(exports) { 'use strict'; let ASCII = new AsciiCodec(); let _ASCII_MASK = 127; let _allowInvalid = Symbol('_allowInvalid'); let _nameToEncoding = Symbol('_nameToEncoding'); let Codec$ = dart.generic(function(S, T) { class Codec extends core.Object { Codec() { } encode(input) { return this.encoder.convert(input); } decode(encoded) { return this.decoder.convert(encoded); } fuse(other) { return new (_FusedCodec$(S, T, dynamic))(this, other); } get inverted() { return new (_InvertedCodec$(T, S))(this); } } return Codec; }); let Codec = Codec$(); class Encoding extends Codec$(core.String, core.List$(core.int)) { Encoding() { super.Codec(); } decodeStream(byteStream) { return dart.as(byteStream.transform(dart.as(this.decoder, async.StreamTransformer$(core.List$(core.int), dynamic))).fold(new core.StringBuffer(), (buffer, string) => dart.dinvoke(buffer, 'write', string), buffer).then((buffer) => dart.dinvoke(buffer, 'toString')), async.Future$(core.String)); } static getByName(name) { if (name == null) return null; name = name.toLowerCase(); return Encoding[_nameToEncoding].get(name); } } dart.defineLazyProperties(Encoding, { get _nameToEncoding() { return dart.map({"iso_8859-1:1987": LATIN1, "iso-ir-100": LATIN1, "iso_8859-1": LATIN1, "iso-8859-1": LATIN1, latin1: LATIN1, l1: LATIN1, ibm819: LATIN1, cp819: LATIN1, csisolatin1: LATIN1, "iso-ir-6": ASCII, "ansi_x3.4-1968": ASCII, "ansi_x3.4-1986": ASCII, "iso_646.irv:1991": ASCII, "iso646-us": ASCII, "us-ascii": ASCII, us: ASCII, ibm367: ASCII, cp367: ASCII, csascii: ASCII, ascii: ASCII, csutf8: UTF8, "utf-8": UTF8}); }, set _nameToEncoding(_) {} }); class AsciiCodec extends Encoding { AsciiCodec(opts) { let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false; this[_allowInvalid] = allowInvalid; super.Encoding(); } get name() { return "us-ascii"; } decode(bytes, opts) { let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : null; if (allowInvalid == null) allowInvalid = this[_allowInvalid]; if (allowInvalid) { return new AsciiDecoder({allowInvalid: true}).convert(bytes); } else { return new AsciiDecoder({allowInvalid: false}).convert(bytes); } } get encoder() { return new AsciiEncoder(); } get decoder() { return this[_allowInvalid] ? new AsciiDecoder({allowInvalid: true}) : new AsciiDecoder({allowInvalid: false}); } } let _subsetMask = Symbol('_subsetMask'); let Converter$ = dart.generic(function(S, T) { class Converter extends core.Object { Converter() { } fuse(other) { return new (_FusedConverter$(S, T, dynamic))(this, other); } startChunkedConversion(sink) { throw new core.UnsupportedError(`This converter does not support chunked conversions: ${this}`); } bind(source) { return new async.Stream.eventTransformed(source, ((sink) => new _ConverterStreamEventSink(this, sink)).bind(this)); } } Converter[dart.implements] = () => [async.StreamTransformer]; return Converter; }); let Converter = Converter$(); class _UnicodeSubsetEncoder extends Converter$(core.String, core.List$(core.int)) { _UnicodeSubsetEncoder(subsetMask) { this[_subsetMask] = subsetMask; super.Converter(); } convert(string, start, end) { if (start === void 0) start = 0; if (end === void 0) end = null; let stringLength = string.length; core.RangeError.checkValidRange(start, end, stringLength); if (end == null) end = stringLength; let length = dart.notNull(end) - dart.notNull(start); let result = new typed_data.Uint8List(length); for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { let codeUnit = string.codeUnitAt(dart.notNull(start) + dart.notNull(i)); if ((dart.notNull(codeUnit) & ~dart.notNull(this[_subsetMask])) != 0) { throw new core.ArgumentError("String contains invalid characters."); } result[core.$set](i, codeUnit); } return dart.as(result, core.List$(core.int)); } startChunkedConversion(sink) { if (!dart.is(sink, ByteConversionSink)) { sink = new ByteConversionSink.from(sink); } return new _UnicodeSubsetEncoderSink(this[_subsetMask], dart.as(sink, ByteConversionSink)); } bind(stream) { return dart.as(super.bind(stream), async.Stream$(core.List$(core.int))); } } class AsciiEncoder extends _UnicodeSubsetEncoder { AsciiEncoder() { super._UnicodeSubsetEncoder(_ASCII_MASK); } } let _sink = Symbol('_sink'); class StringConversionSinkMixin extends core.Object { add(str) { return this.addSlice(str, 0, str.length, false); } asUtf8Sink(allowMalformed) { return new _Utf8ConversionSink(this, allowMalformed); } asStringSink() { return new _StringConversionSinkAsStringSinkAdapter(this); } } StringConversionSinkMixin[dart.implements] = () => [StringConversionSink]; class StringConversionSinkBase extends StringConversionSinkMixin {} class _UnicodeSubsetEncoderSink extends StringConversionSinkBase { _UnicodeSubsetEncoderSink(subsetMask, sink$) { this[_subsetMask] = subsetMask; this[_sink] = sink$; super.StringConversionSinkBase(); } close() { this[_sink].close(); } addSlice(source, start, end, isLast) { core.RangeError.checkValidRange(start, end, source.length); for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) { let codeUnit = source.codeUnitAt(i); if ((dart.notNull(codeUnit) & ~dart.notNull(this[_subsetMask])) != 0) { throw new core.ArgumentError(`Source contains invalid character with code point: ${codeUnit}.`); } } this[_sink].add(source.codeUnits[core.$sublist](start, end)); if (isLast) { this.close(); } } } let _convertInvalid = Symbol('_convertInvalid'); class _UnicodeSubsetDecoder extends Converter$(core.List$(core.int), core.String) { _UnicodeSubsetDecoder(allowInvalid$, subsetMask) { this[_allowInvalid] = allowInvalid$; this[_subsetMask] = subsetMask; super.Converter(); } convert(bytes, start, end) { if (start === void 0) start = 0; if (end === void 0) end = null; let byteCount = bytes[core.$length]; core.RangeError.checkValidRange(start, end, byteCount); if (end == null) end = byteCount; let length = dart.notNull(end) - dart.notNull(start); for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) { let byte = bytes[core.$get](i); if ((dart.notNull(byte) & ~dart.notNull(this[_subsetMask])) != 0) { if (!dart.notNull(this[_allowInvalid])) { throw new core.FormatException(`Invalid value in input: ${byte}`); } return this[_convertInvalid](bytes, start, end); } } return new core.String.fromCharCodes(bytes, start, end); } [_convertInvalid](bytes, start, end) { let buffer = new core.StringBuffer(); for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) { let value = bytes[core.$get](i); if ((dart.notNull(value) & ~dart.notNull(this[_subsetMask])) != 0) value = 65533; buffer.writeCharCode(value); } return buffer.toString(); } bind(stream) { return dart.as(super.bind(stream), async.Stream$(core.String)); } } class AsciiDecoder extends _UnicodeSubsetDecoder { AsciiDecoder(opts) { let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false; super._UnicodeSubsetDecoder(allowInvalid, _ASCII_MASK); } startChunkedConversion(sink) { let stringSink = null; if (dart.is(sink, StringConversionSink)) { stringSink = sink; } else { stringSink = new StringConversionSink.from(sink); } if (this[_allowInvalid]) { return new _ErrorHandlingAsciiDecoderSink(stringSink.asUtf8Sink(false)); } else { return new _SimpleAsciiDecoderSink(stringSink); } } } let _utf8Sink = Symbol('_utf8Sink'); let ChunkedConversionSink$ = dart.generic(function(T) { class ChunkedConversionSink extends core.Object { ChunkedConversionSink() { } withCallback(callback) { return new _SimpleCallbackSink(callback); } } ChunkedConversionSink[dart.implements] = () => [core.Sink$(T)]; dart.defineNamedConstructor(ChunkedConversionSink, 'withCallback'); return ChunkedConversionSink; }); let ChunkedConversionSink = ChunkedConversionSink$(); class ByteConversionSink extends ChunkedConversionSink$(core.List$(core.int)) { ByteConversionSink() { super.ChunkedConversionSink(); } withCallback(callback) { return new _ByteCallbackSink(callback); } from(sink) { return new _ByteAdapterSink(sink); } } dart.defineNamedConstructor(ByteConversionSink, 'withCallback'); dart.defineNamedConstructor(ByteConversionSink, 'from'); class ByteConversionSinkBase extends ByteConversionSink { addSlice(chunk, start, end, isLast) { this.add(chunk[core.$sublist](start, end)); if (isLast) this.close(); } } class _ErrorHandlingAsciiDecoderSink extends ByteConversionSinkBase { _ErrorHandlingAsciiDecoderSink(utf8Sink) { this[_utf8Sink] = utf8Sink; super.ByteConversionSinkBase(); } close() { this[_utf8Sink].close(); } add(source) { this.addSlice(source, 0, source[core.$length], false); } addSlice(source, start, end, isLast) { core.RangeError.checkValidRange(start, end, source[core.$length]); for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) { if ((dart.notNull(source[core.$get](i)) & ~dart.notNull(_ASCII_MASK)) != 0) { if (dart.notNull(i) > dart.notNull(start)) this[_utf8Sink].addSlice(source, start, i, false); this[_utf8Sink].add(/* Unimplemented const */new core.List$(core.int).from([239, 191, 189])); start = dart.notNull(i) + 1; } } if (dart.notNull(start) < dart.notNull(end)) { this[_utf8Sink].addSlice(source, start, end, isLast); } else if (isLast) { this.close(); } } } class _SimpleAsciiDecoderSink extends ByteConversionSinkBase { _SimpleAsciiDecoderSink(sink$) { this[_sink] = sink$; super.ByteConversionSinkBase(); } close() { this[_sink].close(); } add(source) { for (let i = 0; dart.notNull(i) < dart.notNull(source[core.$length]); i = dart.notNull(i) + 1) { if ((dart.notNull(source[core.$get](i)) & ~dart.notNull(_ASCII_MASK)) != 0) { throw new core.FormatException("Source contains non-ASCII bytes."); } } this[_sink].add(new core.String.fromCharCodes(source)); } addSlice(source, start, end, isLast) { let length = source[core.$length]; core.RangeError.checkValidRange(start, end, length); if (dart.notNull(start) < dart.notNull(end)) { if (start != 0 || end != length) { source = source[core.$sublist](start, end); } this.add(source); } if (isLast) this.close(); } } class _ByteAdapterSink extends ByteConversionSinkBase { _ByteAdapterSink(sink$) { this[_sink] = sink$; super.ByteConversionSinkBase(); } add(chunk) { return this[_sink].add(chunk); } close() { return this[_sink].close(); } } let _buffer = Symbol('_buffer'); let _INITIAL_BUFFER_SIZE = Symbol('_INITIAL_BUFFER_SIZE'); let _callback = Symbol('_callback'); let _bufferIndex = Symbol('_bufferIndex'); let _roundToPowerOf2 = Symbol('_roundToPowerOf2'); class _ByteCallbackSink extends ByteConversionSinkBase { _ByteCallbackSink(callback) { this[_buffer] = new typed_data.Uint8List(_ByteCallbackSink[_INITIAL_BUFFER_SIZE]); this[_callback] = callback; this[_bufferIndex] = 0; super.ByteConversionSinkBase(); } add(chunk) { let freeCount = dart.notNull(this[_buffer][core.$length]) - dart.notNull(this[_bufferIndex]); if (dart.notNull(chunk[core.$length]) > dart.notNull(freeCount)) { let oldLength = this[_buffer][core.$length]; let newLength = dart.notNull(_ByteCallbackSink[_roundToPowerOf2](dart.notNull(chunk[core.$length]) + dart.notNull(oldLength))) * 2; let grown = new typed_data.Uint8List(newLength); grown[core.$setRange](0, this[_buffer][core.$length], this[_buffer]); this[_buffer] = grown; } this[_buffer][core.$setRange](this[_bufferIndex], dart.notNull(this[_bufferIndex]) + dart.notNull(chunk[core.$length]), chunk); this[_bufferIndex] = chunk[core.$length]; } static [_roundToPowerOf2](v) { dart.assert(dart.notNull(v) > 0); v = dart.notNull(v) - 1; v = dart.notNull(v) >> 1; v = dart.notNull(v) >> 2; v = dart.notNull(v) >> 4; v = dart.notNull(v) >> 8; v = dart.notNull(v) >> 16; v = dart.notNull(v) + 1; return v; } close() { this[_callback](this[_buffer][core.$sublist](0, this[_bufferIndex])); } } _ByteCallbackSink._INITIAL_BUFFER_SIZE = 1024; let _ChunkedConversionCallback$ = dart.generic(function(T) { class _ChunkedConversionCallback extends core.Function {} return _ChunkedConversionCallback; }); let _ChunkedConversionCallback = _ChunkedConversionCallback$(); let _accumulated = Symbol('_accumulated'); let _SimpleCallbackSink$ = dart.generic(function(T) { class _SimpleCallbackSink extends ChunkedConversionSink$(T) { _SimpleCallbackSink(callback$) { this[_accumulated] = new core.List$(T).from([]); this[_callback] = callback$; super.ChunkedConversionSink(); } add(chunk) { this[_accumulated][core.$add](chunk); } close() { this[_callback](this[_accumulated]); } } return _SimpleCallbackSink; }); let _SimpleCallbackSink = _SimpleCallbackSink$(); let _EventSinkAdapter$ = dart.generic(function(T) { class _EventSinkAdapter extends core.Object { _EventSinkAdapter(sink$) { this[_sink] = sink$; } add(data) { return this[_sink].add(data); } close() { return this[_sink].close(); } } _EventSinkAdapter[dart.implements] = () => [ChunkedConversionSink$(T)]; return _EventSinkAdapter; }); let _EventSinkAdapter = _EventSinkAdapter$(); let _eventSink = Symbol('_eventSink'); let _chunkedSink = Symbol('_chunkedSink'); let _ConverterStreamEventSink$ = dart.generic(function(S, T) { class _ConverterStreamEventSink extends core.Object { _ConverterStreamEventSink(converter, sink) { this[_eventSink] = sink; this[_chunkedSink] = converter.startChunkedConversion(sink); } add(o) { return this[_chunkedSink].add(o); } addError(error, stackTrace) { if (stackTrace === void 0) stackTrace = null; this[_eventSink].addError(error, stackTrace); } close() { return this[_chunkedSink].close(); } } _ConverterStreamEventSink[dart.implements] = () => [async.EventSink$(S)]; return _ConverterStreamEventSink; }); let _ConverterStreamEventSink = _ConverterStreamEventSink$(); let _first = Symbol('_first'); let _second = Symbol('_second'); let _FusedCodec$ = dart.generic(function(S, M, T) { class _FusedCodec extends Codec$(S, T) { get encoder() { return dart.as(this[_first].encoder.fuse(this[_second].encoder), Converter$(S, T)); } get decoder() { return dart.as(this[_second].decoder.fuse(this[_first].decoder), Converter$(T, S)); } _FusedCodec(first$, second) { this[_first] = first$; this[_second] = second; super.Codec(); } } return _FusedCodec; }); let _FusedCodec = _FusedCodec$(); let _codec = Symbol('_codec'); let _InvertedCodec$ = dart.generic(function(T, S) { class _InvertedCodec extends Codec$(T, S) { _InvertedCodec(codec) { this[_codec] = codec; super.Codec(); } get encoder() { return this[_codec].decoder; } get decoder() { return this[_codec].encoder; } get inverted() { return this[_codec]; } } return _InvertedCodec; }); let _InvertedCodec = _InvertedCodec$(); let _FusedConverter$ = dart.generic(function(S, M, T) { class _FusedConverter extends Converter$(S, T) { _FusedConverter(first$, second) { this[_first] = first$; this[_second] = second; super.Converter(); } convert(input) { return dart.as(this[_second].convert(this[_first].convert(input)), T); } startChunkedConversion(sink) { return this[_first].startChunkedConversion(this[_second].startChunkedConversion(sink)); } } return _FusedConverter; }); let _FusedConverter = _FusedConverter$(); let HTML_ESCAPE = new HtmlEscape(); let _$ = Symbol('_'); let _name = Symbol('_name'); class HtmlEscapeMode extends core.Object { [_$](name$, escapeLtGt, escapeQuot, escapeApos, escapeSlash) { this[_name] = name$; this.escapeLtGt = escapeLtGt; this.escapeQuot = escapeQuot; this.escapeApos = escapeApos; this.escapeSlash = escapeSlash; } toString() { return this[_name]; } } dart.defineNamedConstructor(HtmlEscapeMode, _$); HtmlEscapeMode.UNKNOWN = new HtmlEscapeMode[_$]('unknown', true, true, true, true); HtmlEscapeMode.ATTRIBUTE = new HtmlEscapeMode[_$]('attribute', false, true, false, false); HtmlEscapeMode.ELEMENT = new HtmlEscapeMode[_$]('element', true, false, false, true); let _convert = Symbol('_convert'); class HtmlEscape extends Converter$(core.String, core.String) { HtmlEscape(mode) { if (mode === void 0) mode = HtmlEscapeMode.UNKNOWN; this.mode = mode; super.Converter(); } convert(text) { let val = this[_convert](text, 0, text.length); return val == null ? text : val; } [_convert](text, start, end) { let result = null; for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) { let ch = text.get(i); let replace = null; switch (ch) { case '&': { replace = '&'; break; } case ' ': { replace = ' '; break; } case '"': { if (this.mode.escapeQuot) replace = '"'; break; } case "'": { if (this.mode.escapeApos) replace = '''; break; } case '<': { if (this.mode.escapeLtGt) replace = '<'; break; } case '>': { if (this.mode.escapeLtGt) replace = '>'; break; } case '/': { if (this.mode.escapeSlash) replace = '/'; break; } } if (replace != null) { if (result == null) result = new core.StringBuffer(text.substring(start, i)); result.write(replace); } else if (result != null) { result.write(ch); } } return result != null ? result.toString() : null; } startChunkedConversion(sink) { if (!dart.is(sink, StringConversionSink)) { sink = new StringConversionSink.from(sink); } return new _HtmlEscapeSink(this, dart.as(sink, StringConversionSink)); } } let _escape = Symbol('_escape'); class _HtmlEscapeSink extends StringConversionSinkBase { _HtmlEscapeSink(escape, sink$) { this[_escape] = escape; this[_sink] = sink$; super.StringConversionSinkBase(); } addSlice(chunk, start, end, isLast) { let val = this[_escape][_convert](chunk, start, end); if (val == null) { this[_sink].addSlice(chunk, start, end, isLast); } else { this[_sink].add(val); if (isLast) this[_sink].close(); } } close() { return this[_sink].close(); } } class JsonUnsupportedObjectError extends core.Error { JsonUnsupportedObjectError(unsupportedObject, opts) { let cause = opts && 'cause' in opts ? opts.cause : null; this.unsupportedObject = unsupportedObject; this.cause = cause; super.Error(); } toString() { if (this.cause != null) { return "Converting object to an encodable object failed."; } else { return "Converting object did not return an encodable object."; } } } class JsonCyclicError extends JsonUnsupportedObjectError { JsonCyclicError(object) { super.JsonUnsupportedObjectError(object); } toString() { return "Cyclic error in JSON stringify"; } } let JSON = new JsonCodec(); class _Reviver extends core.Function {} class _ToEncodable extends core.Function {} let _reviver = Symbol('_reviver'); let _toEncodable$ = Symbol('_toEncodable'); class JsonCodec extends Codec$(core.Object, core.String) { JsonCodec(opts) { let reviver = opts && 'reviver' in opts ? opts.reviver : null; let toEncodable = opts && 'toEncodable' in opts ? opts.toEncodable : null; this[_reviver] = reviver; this[_toEncodable$] = toEncodable; super.Codec(); } withReviver(reviver) { this.JsonCodec({reviver: reviver}); } decode(source, opts) { let reviver = opts && 'reviver' in opts ? opts.reviver : null; if (reviver == null) reviver = this[_reviver]; if (reviver == null) return this.decoder.convert(source); return new JsonDecoder(reviver).convert(source); } encode(value, opts) { let toEncodable = opts && 'toEncodable' in opts ? opts.toEncodable : null; if (toEncodable == null) toEncodable = this[_toEncodable$]; if (toEncodable == null) return this.encoder.convert(value); return new JsonEncoder(dart.as(toEncodable, dart.throw_("Unimplemented type (Object) → Object"))).convert(value); } get encoder() { if (this[_toEncodable$] == null) return new JsonEncoder(); return new JsonEncoder(dart.as(this[_toEncodable$], dart.throw_("Unimplemented type (Object) → Object"))); } get decoder() { if (this[_reviver] == null) return new JsonDecoder(); return new JsonDecoder(this[_reviver]); } } dart.defineNamedConstructor(JsonCodec, 'withReviver'); let _utf8Encode = Symbol('_utf8Encode'); class JsonEncoder extends Converter$(core.Object, core.String) { JsonEncoder(toEncodable) { if (toEncodable === void 0) toEncodable = null; this.indent = null; this[_toEncodable$] = toEncodable; super.Converter(); } withIndent(indent, toEncodable) { if (toEncodable === void 0) toEncodable = null; this.indent = indent; this[_toEncodable$] = toEncodable; super.Converter(); } convert(object) { return _JsonStringStringifier.stringify(object, dart.as(this[_toEncodable$], dart.throw_("Unimplemented type (dynamic) → dynamic")), this.indent); } startChunkedConversion(sink) { if (!dart.is(sink, StringConversionSink)) { sink = new StringConversionSink.from(sink); } else if (dart.is(sink, _Utf8EncoderSink)) { return new _JsonUtf8EncoderSink(sink[_sink], this[_toEncodable$], JsonUtf8Encoder[_utf8Encode](this.indent), JsonUtf8Encoder.DEFAULT_BUFFER_SIZE); } return new _JsonEncoderSink(dart.as(sink, StringConversionSink), this[_toEncodable$], this.indent); } bind(stream) { return dart.as(super.bind(stream), async.Stream$(core.String)); } fuse(other) { if (dart.is(other, Utf8Encoder)) { return new JsonUtf8Encoder(this.indent, dart.as(this[_toEncodable$], dart.throw_("Unimplemented type (Object) → dynamic"))); } return super.fuse(other); } } dart.defineNamedConstructor(JsonEncoder, 'withIndent'); let _indent = Symbol('_indent'); let _bufferSize = Symbol('_bufferSize'); class JsonUtf8Encoder extends Converter$(core.Object, core.List$(core.int)) { JsonUtf8Encoder(indent, toEncodable, bufferSize) { if (indent === void 0) indent = null; if (toEncodable === void 0) toEncodable = null; if (bufferSize === void 0) bufferSize = JsonUtf8Encoder.DEFAULT_BUFFER_SIZE; this[_indent] = JsonUtf8Encoder[_utf8Encode](indent); this[_toEncodable$] = toEncodable; this[_bufferSize] = bufferSize; super.Converter(); } static [_utf8Encode](string) { if (string == null) return null; if (string.isEmpty) return new typed_data.Uint8List(0); checkAscii: { for (let i = 0; dart.notNull(i) < dart.notNull(string.length); i = dart.notNull(i) + 1) { if (dart.notNull(string.codeUnitAt(i)) >= 128) break checkAscii; } return string.codeUnits; } return UTF8.encode(string); } convert(object) { let bytes = dart.as(new core.List.from([]), core.List$(core.List$(core.int))); // Function addChunk: (Uint8List, int, int) → void function addChunk(chunk, start, end) { if (dart.notNull(start) > 0 || dart.notNull(end) < dart.notNull(chunk[core.$length])) { let length = dart.notNull(end) - dart.notNull(start); chunk = new typed_data.Uint8List.view(chunk.buffer, dart.notNull(chunk.offsetInBytes) + dart.notNull(start), length); } bytes[core.$add](chunk); } _JsonUtf8Stringifier.stringify(object, this[_indent], dart.as(this[_toEncodable$], dart.throw_("Unimplemented type (Object) → dynamic")), this[_bufferSize], addChunk); if (bytes[core.$length] == 1) return bytes[core.$get](0); let length = 0; for (let i = 0; dart.notNull(i) < dart.notNull(bytes[core.$length]); i = dart.notNull(i) + 1) { length = bytes[core.$get](i)[core.$length]; } let result = new typed_data.Uint8List(length); for (let i = 0, offset = 0; dart.notNull(i) < dart.notNull(bytes[core.$length]); i = dart.notNull(i) + 1) { let byteList = bytes[core.$get](i); let end = dart.notNull(offset) + dart.notNull(byteList[core.$length]); result[core.$setRange](offset, end, byteList); offset = end; } return result; } startChunkedConversion(sink) { let byteSink = null; if (dart.is(sink, ByteConversionSink)) { byteSink = sink; } else { byteSink = new ByteConversionSink.from(sink); } return new _JsonUtf8EncoderSink(byteSink, this[_toEncodable$], this[_indent], this[_bufferSize]); } bind(stream) { return dart.as(super.bind(stream), async.Stream$(core.List$(core.int))); } fuse(other) { return super.fuse(other); } } JsonUtf8Encoder.DEFAULT_BUFFER_SIZE = 256; let _isDone = Symbol('_isDone'); class _JsonEncoderSink extends ChunkedConversionSink$(core.Object) { _JsonEncoderSink(sink$, toEncodable$, indent$) { this[_sink] = sink$; this[_toEncodable$] = toEncodable$; this[_indent] = indent$; this[_isDone] = false; super.ChunkedConversionSink(); } add(o) { if (this[_isDone]) { throw new core.StateError("Only one call to add allowed"); } this[_isDone] = true; let stringSink = this[_sink].asStringSink(); _JsonStringStringifier.printOn(o, stringSink, dart.as(this[_toEncodable$], dart.throw_("Unimplemented type (dynamic) → dynamic")), this[_indent]); stringSink.close(); } close() {} } let _addChunk = Symbol('_addChunk'); class _JsonUtf8EncoderSink extends ChunkedConversionSink$(core.Object) { _JsonUtf8EncoderSink(sink$, toEncodable$, indent$, bufferSize$) { this[_sink] = sink$; this[_toEncodable$] = toEncodable$; this[_indent] = indent$; this[_bufferSize] = bufferSize$; this[_isDone] = false; super.ChunkedConversionSink(); } [_addChunk](chunk, start, end) { this[_sink].addSlice(chunk, start, end, false); } add(object) { if (this[_isDone]) { throw new core.StateError("Only one call to add allowed"); } this[_isDone] = true; _JsonUtf8Stringifier.stringify(object, this[_indent], dart.as(this[_toEncodable$], dart.throw_("Unimplemented type (Object) → dynamic")), this[_bufferSize], this[_addChunk]); this[_sink].close(); } close() { if (!dart.notNull(this[_isDone])) { this[_isDone] = true; this[_sink].close(); } } } class JsonDecoder extends Converter$(core.String, core.Object) { JsonDecoder(reviver) { if (reviver === void 0) reviver = null; this[_reviver] = reviver; super.Converter(); } convert(input) { return _parseJson(input, this[_reviver]); } startChunkedConversion(sink) { return new _JsonDecoderSink(this[_reviver], sink); } bind(stream) { return super.bind(stream); } } // Function _parseJson: (String, (dynamic, dynamic) → dynamic) → dynamic function _parseJson(source, reviver) { if (!(typeof source == 'string')) throw new core.ArgumentError(source); let parsed = null; try { parsed = JSON.parse(source); } catch (e) { throw new core.FormatException(String(e)); } if (reviver == null) { return _convertJsonToDartLazy(parsed); } else { return _convertJsonToDart(parsed, reviver); } } // Function _defaultToEncodable: (dynamic) → Object function _defaultToEncodable(object) { return dart.dinvoke(object, 'toJson'); } let _seen = Symbol('_seen'); let _checkCycle = Symbol('_checkCycle'); let _removeSeen = Symbol('_removeSeen'); class _JsonStringifier extends core.Object { _JsonStringifier(_toEncodable) { this[_seen] = new core.List(); this[_toEncodable$] = dart.as(_toEncodable != null ? _toEncodable : _defaultToEncodable, core.Function); } static hexDigit(x) { return dart.notNull(x) < 10 ? 48 + dart.notNull(x) : 87 + dart.notNull(x); } writeStringContent(s) { let offset = 0; let length = s.length; for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) { let charCode = s.codeUnitAt(i); if (dart.notNull(charCode) > dart.notNull(_JsonStringifier.BACKSLASH)) continue; if (dart.notNull(charCode) < 32) { if (dart.notNull(i) > dart.notNull(offset)) this.writeStringSlice(s, offset, i); offset = dart.notNull(i) + 1; this.writeCharCode(_JsonStringifier.BACKSLASH); switch (charCode) { case _JsonStringifier.BACKSPACE: { this.writeCharCode(_JsonStringifier.CHAR_b); break; } case _JsonStringifier.TAB: { this.writeCharCode(_JsonStringifier.CHAR_t); break; } case _JsonStringifier.NEWLINE: { this.writeCharCode(_JsonStringifier.CHAR_n); break; } case _JsonStringifier.FORM_FEED: { this.writeCharCode(_JsonStringifier.CHAR_f); break; } case _JsonStringifier.CARRIAGE_RETURN: { this.writeCharCode(_JsonStringifier.CHAR_r); break; } default: { this.writeCharCode(_JsonStringifier.CHAR_u); this.writeCharCode(_JsonStringifier.CHAR_0); this.writeCharCode(_JsonStringifier.CHAR_0); this.writeCharCode(_JsonStringifier.hexDigit(dart.notNull(charCode) >> 4 & 15)); this.writeCharCode(_JsonStringifier.hexDigit(dart.notNull(charCode) & 15)); break; } } } else if (charCode == _JsonStringifier.QUOTE || charCode == _JsonStringifier.BACKSLASH) { if (dart.notNull(i) > dart.notNull(offset)) this.writeStringSlice(s, offset, i); offset = dart.notNull(i) + 1; this.writeCharCode(_JsonStringifier.BACKSLASH); this.writeCharCode(charCode); } } if (offset == 0) { this.writeString(s); } else if (dart.notNull(offset) < dart.notNull(length)) { this.writeStringSlice(s, offset, length); } } [_checkCycle](object) { for (let i = 0; dart.notNull(i) < dart.notNull(this[_seen][core.$length]); i = dart.notNull(i) + 1) { if (core.identical(object, this[_seen][core.$get](i))) { throw new JsonCyclicError(object); } } this[_seen][core.$add](object); } [_removeSeen](object) { dart.assert(!dart.notNull(this[_seen][core.$isEmpty])); dart.assert(core.identical(this[_seen][core.$last], object)); this[_seen][core.$removeLast](); } writeObject(object) { if (this.writeJsonValue(object)) return; this[_checkCycle](object); try { let customJson = dart.dinvokef(this[_toEncodable$], object); if (!dart.notNull(this.writeJsonValue(customJson))) { throw new JsonUnsupportedObjectError(object); } this[_removeSeen](object); } catch (e) { throw new JsonUnsupportedObjectError(object, {cause: e}); } } writeJsonValue(object) { if (dart.is(object, core.num)) { if (dart.dunary('!', dart.dload(object, 'isFinite'))) return false; this.writeNumber(dart.as(object, core.num)); return true; } else if (core.identical(object, true)) { this.writeString('true'); return true; } else if (core.identical(object, false)) { this.writeString('false'); return true; } else if (object == null) { this.writeString('null'); return true; } else if (typeof object == 'string') { this.writeString('"'); this.writeStringContent(dart.as(object, core.String)); this.writeString('"'); return true; } else if (dart.is(object, core.List)) { this[_checkCycle](object); this.writeList(dart.as(object, core.List)); this[_removeSeen](object); return true; } else if (dart.is(object, core.Map)) { this[_checkCycle](object); this.writeMap(dart.as(object, core.Map$(core.String, core.Object))); this[_removeSeen](object); return true; } else { return false; } } writeList(list) { this.writeString('['); if (dart.notNull(list[core.$length]) > 0) { this.writeObject(list[core.$get](0)); for (let i = 1; dart.notNull(i) < dart.notNull(list[core.$length]); i = dart.notNull(i) + 1) { this.writeString(','); this.writeObject(list[core.$get](i)); } } this.writeString(']'); } writeMap(map) { this.writeString('{'); let separator = '"'; map.forEach(dart.as(((key, value) => { this.writeString(separator); separator = ',"'; this.writeStringContent(key); this.writeString('":'); this.writeObject(value); }).bind(this), dart.throw_("Unimplemented type (String, Object) → void"))); this.writeString('}'); } } _JsonStringifier.BACKSPACE = 8; _JsonStringifier.TAB = 9; _JsonStringifier.NEWLINE = 10; _JsonStringifier.CARRIAGE_RETURN = 13; _JsonStringifier.FORM_FEED = 12; _JsonStringifier.QUOTE = 34; _JsonStringifier.CHAR_0 = 48; _JsonStringifier.BACKSLASH = 92; _JsonStringifier.CHAR_b = 98; _JsonStringifier.CHAR_f = 102; _JsonStringifier.CHAR_n = 110; _JsonStringifier.CHAR_r = 114; _JsonStringifier.CHAR_t = 116; _JsonStringifier.CHAR_u = 117; let _indentLevel = Symbol('_indentLevel'); class _JsonPrettyPrintMixin extends core.Object { _JsonPrettyPrintMixin() { this[_indentLevel] = 0; } writeList(list) { if (list[core.$isEmpty]) { this.writeString('[]'); } else { this.writeString('[\n'); this[_indentLevel] = dart.notNull(this[_indentLevel]) + 1; this.writeIndentation(this[_indentLevel]); this.writeObject(list[core.$get](0)); for (let i = 1; dart.notNull(i) < dart.notNull(list[core.$length]); i = dart.notNull(i) + 1) { this.writeString(',\n'); this.writeIndentation(this[_indentLevel]); this.writeObject(list[core.$get](i)); } this.writeString('\n'); this[_indentLevel] = dart.notNull(this[_indentLevel]) - 1; this.writeIndentation(this[_indentLevel]); this.writeString(']'); } } writeMap(map) { if (map.isEmpty) { this.writeString('{}'); } else { this.writeString('{\n'); this[_indentLevel] = dart.notNull(this[_indentLevel]) + 1; let first = true; map.forEach(((key, value) => { if (!dart.notNull(first)) { this.writeString(",\n"); } this.writeIndentation(this[_indentLevel]); this.writeString('"'); this.writeStringContent(key); this.writeString('": '); this.writeObject(value); first = false; }).bind(this)); this.writeString('\n'); this[_indentLevel] = dart.notNull(this[_indentLevel]) - 1; this.writeIndentation(this[_indentLevel]); this.writeString('}'); } } } _JsonPrettyPrintMixin[dart.implements] = () => [_JsonStringifier]; class _JsonStringStringifier extends _JsonStringifier { _JsonStringStringifier(sink$, _toEncodable) { this[_sink] = sink$; super._JsonStringifier(dart.as(_toEncodable, dart.throw_("Unimplemented type (Object) → Object"))); } static stringify(object, toEncodable, indent) { let output = new core.StringBuffer(); _JsonStringStringifier.printOn(object, output, toEncodable, indent); return output.toString(); } static printOn(object, output, toEncodable, indent) { let stringifier = null; if (indent == null) { stringifier = new _JsonStringStringifier(output, toEncodable); } else { stringifier = new _JsonStringStringifierPretty(output, toEncodable, indent); } dart.dinvoke(stringifier, 'writeObject', object); } writeNumber(number) { this[_sink].write(number.toString()); } writeString(string) { this[_sink].write(string); } writeStringSlice(string, start, end) { this[_sink].write(string.substring(start, end)); } writeCharCode(charCode) { this[_sink].writeCharCode(charCode); } } class _JsonStringStringifierPretty extends dart.mixin(_JsonStringStringifier, _JsonPrettyPrintMixin) { _JsonStringStringifierPretty(sink, toEncodable, indent$) { this[_indent] = indent$; super._JsonStringStringifier(sink, toEncodable); } writeIndentation(count) { for (let i = 0; dart.notNull(i) < dart.notNull(count); i = dart.notNull(i) + 1) this.writeString(this[_indent]); } } class _JsonUtf8Stringifier extends _JsonStringifier { _JsonUtf8Stringifier(toEncodable, bufferSize, addChunk) { this.addChunk = addChunk; this.bufferSize = bufferSize; this.buffer = new typed_data.Uint8List(bufferSize); this.index = 0; super._JsonStringifier(dart.as(toEncodable, dart.throw_("Unimplemented type (Object) → Object"))); } static stringify(object, indent, toEncodableFunction, bufferSize, addChunk) { let stringifier = null; if (indent != null) { stringifier = new _JsonUtf8StringifierPretty(toEncodableFunction, indent, bufferSize, addChunk); } else { stringifier = new _JsonUtf8Stringifier(toEncodableFunction, bufferSize, addChunk); } stringifier.writeObject(object); stringifier.flush(); } flush() { if (dart.notNull(this.index) > 0) { dart.dinvokef(this.addChunk, this.buffer, 0, this.index); } this.buffer = null; this.index = 0; } writeNumber(number) { this.writeAsciiString(number.toString()); } writeAsciiString(string) { for (let i = 0; dart.notNull(i) < dart.notNull(string.length); i = dart.notNull(i) + 1) { let char = string.codeUnitAt(i); dart.assert(dart.notNull(char) <= 127); this.writeByte(char); } } writeString(string) { this.writeStringSlice(string, 0, string.length); } writeStringSlice(string, start, end) { for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) { let char = string.codeUnitAt(i); if (dart.notNull(char) <= 127) { this.writeByte(char); } else { if ((dart.notNull(char) & 64512) == 55296 && dart.notNull(i) + 1 < dart.notNull(end)) { let nextChar = string.codeUnitAt(dart.notNull(i) + 1); if ((dart.notNull(nextChar) & 64512) == 56320) { char = 65536 + ((dart.notNull(char) & 1023) << 10) + (dart.notNull(nextChar) & 1023); this.writeFourByteCharCode(char); i = dart.notNull(i) + 1; continue; } } this.writeMultiByteCharCode(char); } } } writeCharCode(charCode) { if (dart.notNull(charCode) <= 127) { this.writeByte(charCode); return; } this.writeMultiByteCharCode(charCode); } writeMultiByteCharCode(charCode) { if (dart.notNull(charCode) <= 2047) { this.writeByte(192 | dart.notNull(charCode) >> 6); this.writeByte(128 | dart.notNull(charCode) & 63); return; } if (dart.notNull(charCode) <= 65535) { this.writeByte(224 | dart.notNull(charCode) >> 12); this.writeByte(128 | dart.notNull(charCode) >> 6 & 63); this.writeByte(128 | dart.notNull(charCode) & 63); return; } this.writeFourByteCharCode(charCode); } writeFourByteCharCode(charCode) { dart.assert(dart.notNull(charCode) <= 1114111); this.writeByte(240 | dart.notNull(charCode) >> 18); this.writeByte(128 | dart.notNull(charCode) >> 12 & 63); this.writeByte(128 | dart.notNull(charCode) >> 6 & 63); this.writeByte(128 | dart.notNull(charCode) & 63); } writeByte(byte) { dart.assert(dart.notNull(byte) <= 255); if (this.index == this.buffer[core.$length]) { dart.dinvokef(this.addChunk, this.buffer, 0, this.index); this.buffer = new typed_data.Uint8List(this.bufferSize); this.index = 0; } this.buffer[core.$set](((x$) => this.index = dart.notNull(x$) + 1, x$).bind(this)(this.index), byte); } } class _JsonUtf8StringifierPretty extends dart.mixin(_JsonUtf8Stringifier, _JsonPrettyPrintMixin) { _JsonUtf8StringifierPretty(toEncodableFunction, indent, bufferSize, addChunk) { this.indent = indent; super._JsonUtf8Stringifier(toEncodableFunction, dart.as(bufferSize, core.int), dart.as(addChunk, core.Function)); } writeIndentation(count) { let indent = this.indent; let indentLength = indent[core.$length]; if (indentLength == 1) { let char = indent[core.$get](0); while (dart.notNull(count) > 0) { this.writeByte(char); count = 1; } return; } while (dart.notNull(count) > 0) { count = dart.notNull(count) - 1; let end = dart.notNull(this.index) + dart.notNull(indentLength); if (dart.notNull(end) <= dart.notNull(this.buffer[core.$length])) { this.buffer[core.$setRange](this.index, end, indent); this.index = end; } else { for (let i = 0; dart.notNull(i) < dart.notNull(indentLength); i = dart.notNull(i) + 1) { this.writeByte(indent[core.$get](i)); } } } } } let LATIN1 = new Latin1Codec(); let _LATIN1_MASK = 255; class Latin1Codec extends Encoding { Latin1Codec(opts) { let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false; this[_allowInvalid] = allowInvalid; super.Encoding(); } get name() { return "iso-8859-1"; } decode(bytes, opts) { let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : null; if (allowInvalid == null) allowInvalid = this[_allowInvalid]; if (allowInvalid) { return new Latin1Decoder({allowInvalid: true}).convert(bytes); } else { return new Latin1Decoder({allowInvalid: false}).convert(bytes); } } get encoder() { return new Latin1Encoder(); } get decoder() { return this[_allowInvalid] ? new Latin1Decoder({allowInvalid: true}) : new Latin1Decoder({allowInvalid: false}); } } class Latin1Encoder extends _UnicodeSubsetEncoder { Latin1Encoder() { super._UnicodeSubsetEncoder(_LATIN1_MASK); } } class Latin1Decoder extends _UnicodeSubsetDecoder { Latin1Decoder(opts) { let allowInvalid = opts && 'allowInvalid' in opts ? opts.allowInvalid : false; super._UnicodeSubsetDecoder(allowInvalid, _LATIN1_MASK); } startChunkedConversion(sink) { let stringSink = null; if (dart.is(sink, StringConversionSink)) { stringSink = sink; } else { stringSink = new StringConversionSink.from(sink); } if (!dart.notNull(this[_allowInvalid])) return new _Latin1DecoderSink(stringSink); return new _Latin1AllowInvalidDecoderSink(stringSink); } } let _addSliceToSink = Symbol('_addSliceToSink'); class _Latin1DecoderSink extends ByteConversionSinkBase { _Latin1DecoderSink(sink$) { this[_sink] = sink$; super.ByteConversionSinkBase(); } close() { this[_sink].close(); } add(source) { this.addSlice(source, 0, source[core.$length], false); } [_addSliceToSink](source, start, end, isLast) { this[_sink].add(new core.String.fromCharCodes(source, start, end)); if (isLast) this.close(); } addSlice(source, start, end, isLast) { core.RangeError.checkValidRange(start, end, source[core.$length]); for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) { let char = source[core.$get](i); if (dart.notNull(char) > dart.notNull(_LATIN1_MASK) || dart.notNull(char) < 0) { throw new core.FormatException("Source contains non-Latin-1 characters."); } } if (dart.notNull(start) < dart.notNull(end)) { this[_addSliceToSink](source, start, end, isLast); } if (isLast) { this.close(); } } } class _Latin1AllowInvalidDecoderSink extends _Latin1DecoderSink { _Latin1AllowInvalidDecoderSink(sink) { super._Latin1DecoderSink(sink); } addSlice(source, start, end, isLast) { core.RangeError.checkValidRange(start, end, source[core.$length]); for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) { let char = source[core.$get](i); if (dart.notNull(char) > dart.notNull(_LATIN1_MASK) || dart.notNull(char) < 0) { if (dart.notNull(i) > dart.notNull(start)) this[_addSliceToSink](source, start, i, false); this[_addSliceToSink](dart.as(/* Unimplemented const */new core.List.from([65533]), core.List$(core.int)), 0, 1, false); start = dart.notNull(i) + 1; } } if (dart.notNull(start) < dart.notNull(end)) { this[_addSliceToSink](source, start, end, isLast); } if (isLast) { this.close(); } } } let _addSlice = Symbol('_addSlice'); class LineSplitter extends Converter$(core.String, core.List$(core.String)) { LineSplitter() { super.Converter(); } convert(data) { let lines = new (core.List$(core.String))(); _LineSplitterSink[_addSlice](data, 0, data.length, true, lines[core.$add]); return lines; } startChunkedConversion(sink) { if (!dart.is(sink, StringConversionSink)) { sink = new StringConversionSink.from(sink); } return new _LineSplitterSink(dart.as(sink, StringConversionSink)); } } let _carry = Symbol('_carry'); let _LF = Symbol('_LF'); let _CR = Symbol('_CR'); class _LineSplitterSink extends StringConversionSinkBase { _LineSplitterSink(sink$) { this[_sink] = sink$; this[_carry] = null; super.StringConversionSinkBase(); } addSlice(chunk, start, end, isLast) { if (this[_carry] != null) { chunk = core.String['+'](this[_carry], chunk.substring(start, end)); start = 0; end = chunk.length; this[_carry] = null; } this[_carry] = _LineSplitterSink[_addSlice](chunk, start, end, isLast, this[_sink].add); if (isLast) this[_sink].close(); } close() { this.addSlice('', 0, 0, true); } static [_addSlice](chunk, start, end, isLast, adder) { let pos = start; while (dart.notNull(pos) < dart.notNull(end)) { let skip = 0; let char = chunk.codeUnitAt(pos); if (char == _LineSplitterSink[_LF]) { skip = 1; } else if (char == _LineSplitterSink[_CR]) { skip = 1; if (dart.notNull(pos) + 1 < dart.notNull(end)) { if (chunk.codeUnitAt(dart.notNull(pos) + 1) == _LineSplitterSink[_LF]) { skip = 2; } } else if (!dart.notNull(isLast)) { return chunk.substring(start, end); } } if (dart.notNull(skip) > 0) { adder(chunk.substring(start, pos)); start = pos = dart.notNull(pos) + dart.notNull(skip); } else { pos = dart.notNull(pos) + 1; } } if (pos != start) { let carry = chunk.substring(start, pos); if (isLast) { adder(carry); } else { return carry; } } return null; } } _LineSplitterSink._LF = 10; _LineSplitterSink._CR = 13; class StringConversionSink extends ChunkedConversionSink$(core.String) { StringConversionSink() { super.ChunkedConversionSink(); } withCallback(callback) { return new _StringCallbackSink(callback); } from(sink) { return new _StringAdapterSink(sink); } fromStringSink(sink) { return new _StringSinkConversionSink(sink); } } dart.defineNamedConstructor(StringConversionSink, 'withCallback'); dart.defineNamedConstructor(StringConversionSink, 'from'); dart.defineNamedConstructor(StringConversionSink, 'fromStringSink'); class ClosableStringSink extends core.StringSink { fromStringSink(sink, onClose) { return new _ClosableStringSink(sink, onClose); } } dart.defineNamedConstructor(ClosableStringSink, 'fromStringSink'); class _StringSinkCloseCallback extends core.Function {} class _ClosableStringSink extends core.Object { _ClosableStringSink(sink$, callback$) { this[_sink] = sink$; this[_callback] = callback$; } close() { return this[_callback](); } writeCharCode(charCode) { return this[_sink].writeCharCode(charCode); } write(o) { return this[_sink].write(o); } writeln(o) { if (o === void 0) o = ""; return this[_sink].writeln(o); } writeAll(objects, separator) { if (separator === void 0) separator = ""; return this[_sink].writeAll(objects, separator); } } _ClosableStringSink[dart.implements] = () => [ClosableStringSink]; let _flush = Symbol('_flush'); let _MIN_STRING_SIZE = Symbol('_MIN_STRING_SIZE'); class _StringConversionSinkAsStringSinkAdapter extends core.Object { _StringConversionSinkAsStringSinkAdapter(chunkedSink) { this[_chunkedSink] = chunkedSink; this[_buffer] = new core.StringBuffer(); } close() { if (this[_buffer].isNotEmpty) this[_flush](); this[_chunkedSink].close(); } writeCharCode(charCode) { this[_buffer].writeCharCode(charCode); if (dart.notNull(this[_buffer].length) > dart.notNull(_StringConversionSinkAsStringSinkAdapter[_MIN_STRING_SIZE])) this[_flush](); } write(o) { if (this[_buffer].isNotEmpty) this[_flush](); let str = o.toString(); this[_chunkedSink].add(o.toString()); } writeln(o) { if (o === void 0) o = ""; this[_buffer].writeln(o); if (dart.notNull(this[_buffer].length) > dart.notNull(_StringConversionSinkAsStringSinkAdapter[_MIN_STRING_SIZE])) this[_flush](); } writeAll(objects, separator) { if (separator === void 0) separator = ""; if (this[_buffer].isNotEmpty) this[_flush](); let iterator = objects[core.$iterator]; if (!dart.notNull(iterator.moveNext())) return; if (separator.isEmpty) { do { this[_chunkedSink].add(dart.as(dart.dinvoke(iterator.current, 'toString'), core.String)); } while (iterator.moveNext()); } else { this[_chunkedSink].add(dart.as(dart.dinvoke(iterator.current, 'toString'), core.String)); while (iterator.moveNext()) { this.write(separator); this[_chunkedSink].add(dart.as(dart.dinvoke(iterator.current, 'toString'), core.String)); } } } [_flush]() { let accumulated = this[_buffer].toString(); this[_buffer].clear(); this[_chunkedSink].add(accumulated); } } _StringConversionSinkAsStringSinkAdapter[dart.implements] = () => [ClosableStringSink]; _StringConversionSinkAsStringSinkAdapter._MIN_STRING_SIZE = 16; let _stringSink = Symbol('_stringSink'); class _StringSinkConversionSink extends StringConversionSinkBase { _StringSinkConversionSink(stringSink$) { this[_stringSink] = stringSink$; super.StringConversionSinkBase(); } close() {} addSlice(str, start, end, isLast) { if (start != 0 || end != str.length) { for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) { this[_stringSink].writeCharCode(str.codeUnitAt(i)); } } else { this[_stringSink].write(str); } if (isLast) this.close(); } add(str) { return this[_stringSink].write(str); } asUtf8Sink(allowMalformed) { return new _Utf8StringSinkAdapter(this, this[_stringSink], allowMalformed); } asStringSink() { return new ClosableStringSink.fromStringSink(this[_stringSink], this.close); } } class _StringCallbackSink extends _StringSinkConversionSink { _StringCallbackSink(callback$) { this[_callback] = callback$; super._StringSinkConversionSink(new core.StringBuffer()); } close() { let buffer = dart.as(this[_stringSink], core.StringBuffer); let accumulated = buffer.toString(); buffer.clear(); this[_callback](accumulated); } asUtf8Sink(allowMalformed) { return new _Utf8StringSinkAdapter(this, this[_stringSink], allowMalformed); } } class _StringAdapterSink extends StringConversionSinkBase { _StringAdapterSink(sink$) { this[_sink] = sink$; super.StringConversionSinkBase(); } add(str) { return this[_sink].add(str); } addSlice(str, start, end, isLast) { if (start == 0 && end == str.length) { this.add(str); } else { this.add(str.substring(start, end)); } if (isLast) this.close(); } close() { return this[_sink].close(); } } let _decoder = Symbol('_decoder'); class _Utf8StringSinkAdapter extends ByteConversionSink { _Utf8StringSinkAdapter(sink$, stringSink, allowMalformed) { this[_sink] = sink$; this[_decoder] = new _Utf8Decoder(stringSink, allowMalformed); super.ByteConversionSink(); } close() { this[_decoder].close(); if (this[_sink] != null) this[_sink].close(); } add(chunk) { this.addSlice(chunk, 0, chunk[core.$length], false); } addSlice(codeUnits, startIndex, endIndex, isLast) { this[_decoder].convert(codeUnits, startIndex, endIndex); if (isLast) this.close(); } } class _Utf8ConversionSink extends ByteConversionSink { _Utf8ConversionSink(sink, allowMalformed) { this[_$](sink, new core.StringBuffer(), allowMalformed); } [_$](chunkedSink, stringBuffer, allowMalformed) { this[_chunkedSink] = chunkedSink; this[_decoder] = new _Utf8Decoder(stringBuffer, allowMalformed); this[_buffer] = stringBuffer; super.ByteConversionSink(); } close() { this[_decoder].close(); if (this[_buffer].isNotEmpty) { let accumulated = this[_buffer].toString(); this[_buffer].clear(); this[_chunkedSink].addSlice(accumulated, 0, accumulated.length, true); } else { this[_chunkedSink].close(); } } add(chunk) { this.addSlice(chunk, 0, chunk[core.$length], false); } addSlice(chunk, startIndex, endIndex, isLast) { this[_decoder].convert(chunk, startIndex, endIndex); if (this[_buffer].isNotEmpty) { let accumulated = this[_buffer].toString(); this[_chunkedSink].addSlice(accumulated, 0, accumulated.length, isLast); this[_buffer].clear(); return; } if (isLast) this.close(); } } dart.defineNamedConstructor(_Utf8ConversionSink, _$); let UNICODE_REPLACEMENT_CHARACTER_RUNE = 65533; let UNICODE_BOM_CHARACTER_RUNE = 65279; let UTF8 = new Utf8Codec(); let _allowMalformed = Symbol('_allowMalformed'); class Utf8Codec extends Encoding { Utf8Codec(opts) { let allowMalformed = opts && 'allowMalformed' in opts ? opts.allowMalformed : false; this[_allowMalformed] = allowMalformed; super.Encoding(); } get name() { return "utf-8"; } decode(codeUnits, opts) { let allowMalformed = opts && 'allowMalformed' in opts ? opts.allowMalformed : null; if (allowMalformed == null) allowMalformed = this[_allowMalformed]; return new Utf8Decoder({allowMalformed: allowMalformed}).convert(codeUnits); } get encoder() { return new Utf8Encoder(); } get decoder() { return new Utf8Decoder({allowMalformed: this[_allowMalformed]}); } } let _fillBuffer = Symbol('_fillBuffer'); let _writeSurrogate = Symbol('_writeSurrogate'); class Utf8Encoder extends Converter$(core.String, core.List$(core.int)) { Utf8Encoder() { super.Converter(); } convert(string, start, end) { if (start === void 0) start = 0; if (end === void 0) end = null; let stringLength = string.length; core.RangeError.checkValidRange(start, end, stringLength); if (end == null) end = stringLength; let length = dart.notNull(end) - dart.notNull(start); if (length == 0) return new typed_data.Uint8List(0); let encoder = new _Utf8Encoder.withBufferSize(dart.notNull(length) * 3); let endPosition = encoder[_fillBuffer](string, start, end); dart.assert(dart.notNull(endPosition) >= dart.notNull(end) - 1); if (endPosition != end) { let lastCodeUnit = string.codeUnitAt(dart.notNull(end) - 1); dart.assert(_isLeadSurrogate(lastCodeUnit)); let wasCombined = encoder[_writeSurrogate](lastCodeUnit, 0); dart.assert(!dart.notNull(wasCombined)); } return encoder[_buffer][core.$sublist](0, encoder[_bufferIndex]); } startChunkedConversion(sink) { if (!dart.is(sink, ByteConversionSink)) { sink = new ByteConversionSink.from(sink); } return new _Utf8EncoderSink(dart.as(sink, ByteConversionSink)); } bind(stream) { return dart.as(super.bind(stream), async.Stream$(core.List$(core.int))); } } let _DEFAULT_BYTE_BUFFER_SIZE = Symbol('_DEFAULT_BYTE_BUFFER_SIZE'); let _createBuffer = Symbol('_createBuffer'); class _Utf8Encoder extends core.Object { _Utf8Encoder() { this.withBufferSize(_Utf8Encoder[_DEFAULT_BYTE_BUFFER_SIZE]); } withBufferSize(bufferSize) { this[_buffer] = _Utf8Encoder[_createBuffer](bufferSize); this[_carry] = 0; this[_bufferIndex] = 0; } static [_createBuffer](size) { return new typed_data.Uint8List(size); } [_writeSurrogate](leadingSurrogate, nextCodeUnit) { if (_isTailSurrogate(nextCodeUnit)) { let rune = _combineSurrogatePair(leadingSurrogate, nextCodeUnit); dart.assert(dart.notNull(rune) > dart.notNull(_THREE_BYTE_LIMIT)); dart.assert(dart.notNull(rune) <= dart.notNull(_FOUR_BYTE_LIMIT)); this[_buffer][core.$set](((x$) => this[_bufferIndex] = dart.notNull(x$) + 1, x$).bind(this)(this[_bufferIndex]), 240 | dart.notNull(rune) >> 18); this[_buffer][core.$set](((x$) => this[_bufferIndex] = dart.notNull(x$) + 1, x$).bind(this)(this[_bufferIndex]), 128 | dart.notNull(rune) >> 12 & 63); this[_buffer][core.$set](((x$) => this[_bufferIndex] = dart.notNull(x$) + 1, x$).bind(this)(this[_bufferIndex]), 128 | dart.notNull(rune) >> 6 & 63); this[_buffer][core.$set](((x$) => this[_bufferIndex] = dart.notNull(x$) + 1, x$).bind(this)(this[_bufferIndex]), 128 | dart.notNull(rune) & 63); return true; } else { this[_buffer][core.$set](((x$) => this[_bufferIndex] = dart.notNull(x$) + 1, x$).bind(this)(this[_bufferIndex]), 224 | dart.notNull(leadingSurrogate) >> 12); this[_buffer][core.$set](((x$) => this[_bufferIndex] = dart.notNull(x$) + 1, x$).bind(this)(this[_bufferIndex]), 128 | dart.notNull(leadingSurrogate) >> 6 & 63); this[_buffer][core.$set](((x$) => this[_bufferIndex] = dart.notNull(x$) + 1, x$).bind(this)(this[_bufferIndex]), 128 | dart.notNull(leadingSurrogate) & 63); return false; } } [_fillBuffer](str, start, end) { if (start != end && dart.notNull(_isLeadSurrogate(str.codeUnitAt(dart.notNull(end) - 1)))) { end = dart.notNull(end) - 1; } let stringIndex = null; for (stringIndex = start; dart.notNull(stringIndex) < dart.notNull(end); stringIndex = dart.notNull(stringIndex) + 1) { let codeUnit = str.codeUnitAt(stringIndex); if (dart.notNull(codeUnit) <= dart.notNull(_ONE_BYTE_LIMIT)) { if (dart.notNull(this[_bufferIndex]) >= dart.notNull(this[_buffer][core.$length])) break; this[_buffer][core.$set](((x$) => this[_bufferIndex] = dart.notNull(x$) + 1, x$).bind(this)(this[_bufferIndex]), codeUnit); } else if (_isLeadSurrogate(codeUnit)) { if (dart.notNull(this[_bufferIndex]) + 3 >= dart.notNull(this[_buffer][core.$length])) break; let nextCodeUnit = str.codeUnitAt(dart.notNull(stringIndex) + 1); let wasCombined = this[_writeSurrogate](codeUnit, nextCodeUnit); if (wasCombined) stringIndex = dart.notNull(stringIndex) + 1; } else { let rune = codeUnit; if (dart.notNull(rune) <= dart.notNull(_TWO_BYTE_LIMIT)) { if (dart.notNull(this[_bufferIndex]) + 1 >= dart.notNull(this[_buffer][core.$length])) break; this[_buffer][core.$set](((x$) => this[_bufferIndex] = dart.notNull(x$) + 1, x$).bind(this)(this[_bufferIndex]), 192 | dart.notNull(rune) >> 6); this[_buffer][core.$set](((x$) => this[_bufferIndex] = dart.notNull(x$) + 1, x$).bind(this)(this[_bufferIndex]), 128 | dart.notNull(rune) & 63); } else { dart.assert(dart.notNull(rune) <= dart.notNull(_THREE_BYTE_LIMIT)); if (dart.notNull(this[_bufferIndex]) + 2 >= dart.notNull(this[_buffer][core.$length])) break; this[_buffer][core.$set](((x$) => this[_bufferIndex] = dart.notNull(x$) + 1, x$).bind(this)(this[_bufferIndex]), 224 | dart.notNull(rune) >> 12); this[_buffer][core.$set](((x$) => this[_bufferIndex] = dart.notNull(x$) + 1, x$).bind(this)(this[_bufferIndex]), 128 | dart.notNull(rune) >> 6 & 63); this[_buffer][core.$set](((x$) => this[_bufferIndex] = dart.notNull(x$) + 1, x$).bind(this)(this[_bufferIndex]), 128 | dart.notNull(rune) & 63); } } } return stringIndex; } } dart.defineNamedConstructor(_Utf8Encoder, 'withBufferSize'); _Utf8Encoder._DEFAULT_BYTE_BUFFER_SIZE = 1024; class _Utf8EncoderSink extends dart.mixin(_Utf8Encoder, StringConversionSinkMixin) { _Utf8EncoderSink(sink$) { this[_sink] = sink$; super._Utf8Encoder(); } close() { if (this[_carry] != 0) { this.addSlice("", 0, 0, true); return; } this[_sink].close(); } addSlice(str, start, end, isLast) { this[_bufferIndex] = 0; if (start == end && !dart.notNull(isLast)) { return; } if (this[_carry] != 0) { let nextCodeUnit = 0; if (start != end) { nextCodeUnit = str.codeUnitAt(start); } else { dart.assert(isLast); } let wasCombined = this[_writeSurrogate](this[_carry], nextCodeUnit); dart.assert(!dart.notNull(wasCombined) || start != end); if (wasCombined) start = dart.notNull(start) + 1; this[_carry] = 0; } do { start = this[_fillBuffer](str, start, end); let isLastSlice = dart.notNull(isLast) && start == end; if (start == dart.notNull(end) - 1 && dart.notNull(_isLeadSurrogate(str.codeUnitAt(start)))) { if (dart.notNull(isLast) && dart.notNull(this[_bufferIndex]) < dart.notNull(this[_buffer][core.$length]) - 3) { let hasBeenCombined = this[_writeSurrogate](str.codeUnitAt(start), 0); dart.assert(!dart.notNull(hasBeenCombined)); } else { this[_carry] = str.codeUnitAt(start); } start = dart.notNull(start) + 1; } this[_sink].addSlice(this[_buffer], 0, this[_bufferIndex], isLastSlice); this[_bufferIndex] = 0; } while (dart.notNull(start) < dart.notNull(end)); if (isLast) this.close(); } } class Utf8Decoder extends Converter$(core.List$(core.int), core.String) { Utf8Decoder(opts) { let allowMalformed = opts && 'allowMalformed' in opts ? opts.allowMalformed : false; this[_allowMalformed] = allowMalformed; super.Converter(); } convert(codeUnits, start, end) { if (start === void 0) start = 0; if (end === void 0) end = null; let length = codeUnits[core.$length]; core.RangeError.checkValidRange(start, end, length); if (end == null) end = length; let buffer = new core.StringBuffer(); let decoder = new _Utf8Decoder(buffer, this[_allowMalformed]); decoder.convert(codeUnits, start, end); decoder.close(); return buffer.toString(); } startChunkedConversion(sink) { let stringSink = null; if (dart.is(sink, StringConversionSink)) { stringSink = sink; } else { stringSink = new StringConversionSink.from(sink); } return stringSink.asUtf8Sink(this[_allowMalformed]); } bind(stream) { return dart.as(super.bind(stream), async.Stream$(core.String)); } fuse(next) { return super.fuse(next); } } let _ONE_BYTE_LIMIT = 127; let _TWO_BYTE_LIMIT = 2047; let _THREE_BYTE_LIMIT = 65535; let _FOUR_BYTE_LIMIT = 1114111; let _SURROGATE_MASK = 63488; let _SURROGATE_TAG_MASK = 64512; let _SURROGATE_VALUE_MASK = 1023; let _LEAD_SURROGATE_MIN = 55296; let _TAIL_SURROGATE_MIN = 56320; // Function _isSurrogate: (int) → bool function _isSurrogate(codeUnit) { return (dart.notNull(codeUnit) & dart.notNull(_SURROGATE_MASK)) == _LEAD_SURROGATE_MIN; } // Function _isLeadSurrogate: (int) → bool function _isLeadSurrogate(codeUnit) { return (dart.notNull(codeUnit) & dart.notNull(_SURROGATE_TAG_MASK)) == _LEAD_SURROGATE_MIN; } // Function _isTailSurrogate: (int) → bool function _isTailSurrogate(codeUnit) { return (dart.notNull(codeUnit) & dart.notNull(_SURROGATE_TAG_MASK)) == _TAIL_SURROGATE_MIN; } // Function _combineSurrogatePair: (int, int) → int function _combineSurrogatePair(lead, tail) { return 65536 + ((dart.notNull(lead) & dart.notNull(_SURROGATE_VALUE_MASK)) << 10) | dart.notNull(tail) & dart.notNull(_SURROGATE_VALUE_MASK); } let _isFirstCharacter = Symbol('_isFirstCharacter'); let _value = Symbol('_value'); let _expectedUnits = Symbol('_expectedUnits'); let _extraUnits = Symbol('_extraUnits'); let _LIMITS = Symbol('_LIMITS'); class _Utf8Decoder extends core.Object { _Utf8Decoder(stringSink$, allowMalformed$) { this[_stringSink] = stringSink$; this[_allowMalformed] = allowMalformed$; this[_isFirstCharacter] = true; this[_value] = 0; this[_expectedUnits] = 0; this[_extraUnits] = 0; } get hasPartialInput() { return dart.notNull(this[_expectedUnits]) > 0; } close() { this.flush(); } flush() { if (this.hasPartialInput) { if (!dart.notNull(this[_allowMalformed])) { throw new core.FormatException("Unfinished UTF-8 octet sequence"); } this[_stringSink].writeCharCode(UNICODE_REPLACEMENT_CHARACTER_RUNE); this[_value] = 0; this[_expectedUnits] = 0; this[_extraUnits] = 0; } } convert(codeUnits, startIndex, endIndex) { let value = this[_value]; let expectedUnits = this[_expectedUnits]; let extraUnits = this[_extraUnits]; this[_value] = 0; this[_expectedUnits] = 0; this[_extraUnits] = 0; // Function scanOneByteCharacters: (dynamic, int) → int function scanOneByteCharacters(units, from) { let to = endIndex; let mask = _ONE_BYTE_LIMIT; for (let i = from; dart.notNull(i) < dart.notNull(to); i = dart.notNull(i) + 1) { let unit = dart.dindex(units, i); if (!dart.equals(dart.dbinary(unit, '&', mask), unit)) return dart.notNull(i) - dart.notNull(from); } return dart.notNull(to) - dart.notNull(from); } // Function addSingleBytes: (int, int) → void function addSingleBytes(from, to) { dart.assert(dart.notNull(from) >= dart.notNull(startIndex) && dart.notNull(from) <= dart.notNull(endIndex)); dart.assert(dart.notNull(to) >= dart.notNull(startIndex) && dart.notNull(to) <= dart.notNull(endIndex)); this[_stringSink].write(new core.String.fromCharCodes(codeUnits, from, to)); } let i = startIndex; loop: while (true) { multibyte: if (dart.notNull(expectedUnits) > 0) { do { if (i == endIndex) { break loop; } let unit = codeUnits[core.$get](i); if ((dart.notNull(unit) & 192) != 128) { expectedUnits = 0; if (!dart.notNull(this[_allowMalformed])) { throw new core.FormatException(`Bad UTF-8 encoding 0x${unit.toRadixString(16)}`); } this[_isFirstCharacter] = false; this[_stringSink].writeCharCode(UNICODE_REPLACEMENT_CHARACTER_RUNE); break multibyte; } else { value = dart.notNull(value) << 6 | dart.notNull(unit) & 63; expectedUnits = dart.notNull(expectedUnits) - 1; i = dart.notNull(i) + 1; } } while (dart.notNull(expectedUnits) > 0); if (dart.notNull(value) <= dart.notNull(_Utf8Decoder[_LIMITS][core.$get](dart.notNull(extraUnits) - 1))) { if (!dart.notNull(this[_allowMalformed])) { throw new core.FormatException(`Overlong encoding of 0x${value.toRadixString(16)}`); } expectedUnits = extraUnits = 0; value = UNICODE_REPLACEMENT_CHARACTER_RUNE; } if (dart.notNull(value) > dart.notNull(_FOUR_BYTE_LIMIT)) { if (!dart.notNull(this[_allowMalformed])) { throw new core.FormatException("Character outside valid Unicode range: " + `0x${value.toRadixString(16)}`); } value = UNICODE_REPLACEMENT_CHARACTER_RUNE; } if (!dart.notNull(this[_isFirstCharacter]) || value != UNICODE_BOM_CHARACTER_RUNE) { this[_stringSink].writeCharCode(value); } this[_isFirstCharacter] = false; } while (dart.notNull(i) < dart.notNull(endIndex)) { let oneBytes = scanOneByteCharacters(codeUnits, i); if (dart.notNull(oneBytes) > 0) { this[_isFirstCharacter] = false; addSingleBytes(i, dart.notNull(i) + dart.notNull(oneBytes)); i = oneBytes; if (i == endIndex) break; } let unit = codeUnits[core.$get](((x$) => i = dart.notNull(x$) + 1, x$)(i)); if (dart.notNull(unit) < 0) { if (!dart.notNull(this[_allowMalformed])) { throw new core.FormatException(`Negative UTF-8 code unit: -0x${(-dart.notNull(unit)).toRadixString(16)}`); } this[_stringSink].writeCharCode(UNICODE_REPLACEMENT_CHARACTER_RUNE); } else { dart.assert(dart.notNull(unit) > dart.notNull(_ONE_BYTE_LIMIT)); if ((dart.notNull(unit) & 224) == 192) { value = dart.notNull(unit) & 31; expectedUnits = extraUnits = 1; continue loop; } if ((dart.notNull(unit) & 240) == 224) { value = dart.notNull(unit) & 15; expectedUnits = extraUnits = 2; continue loop; } if ((dart.notNull(unit) & 248) == 240 && dart.notNull(unit) < 245) { value = dart.notNull(unit) & 7; expectedUnits = extraUnits = 3; continue loop; } if (!dart.notNull(this[_allowMalformed])) { throw new core.FormatException(`Bad UTF-8 encoding 0x${unit.toRadixString(16)}`); } value = UNICODE_REPLACEMENT_CHARACTER_RUNE; expectedUnits = extraUnits = 0; this[_isFirstCharacter] = false; this[_stringSink].writeCharCode(value); } } break loop; } if (dart.notNull(expectedUnits) > 0) { this[_value] = value; this[_expectedUnits] = expectedUnits; this[_extraUnits] = extraUnits; } } } _Utf8Decoder._LIMITS = /* Unimplemented const */new core.List$(core.int).from([_ONE_BYTE_LIMIT, _TWO_BYTE_LIMIT, _THREE_BYTE_LIMIT, _FOUR_BYTE_LIMIT]); let _processed = Symbol('_processed'); let _computeKeys = Symbol('_computeKeys'); let _original = Symbol('_original'); // Function _convertJsonToDart: (dynamic, (dynamic, dynamic) → dynamic) → dynamic function _convertJsonToDart(json, reviver) { dart.assert(reviver != null); // Function walk: (dynamic) → dynamic function walk(e) { if (e == null || typeof e != "object") { return e; } if (Object.getPrototypeOf(e) === Array.prototype) { for (let i = 0; dart.notNull(i) < e.length; i = dart.notNull(i) + 1) { let item = e[i]; e[i] = dart.dinvokef(reviver, i, walk(item)); } return e; } let map = new _JsonMap(e); let processed = map[_processed]; let keys = map[_computeKeys](); for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = dart.notNull(i) + 1) { let key = keys[core.$get](i); let revived = dart.dinvokef(reviver, key, walk(e[key])); processed[key] = revived; } map[_original] = processed; return map; } return dart.dinvokef(reviver, null, walk(json)); } // Function _convertJsonToDartLazy: (dynamic) → dynamic function _convertJsonToDartLazy(object) { if (object == null) return null; if (typeof object != "object") { return object; } if (Object.getPrototypeOf(object) !== Array.prototype) { return new _JsonMap(object); } for (let i = 0; dart.notNull(i) < object.length; i = dart.notNull(i) + 1) { let item = object[i]; object[i] = _convertJsonToDartLazy(item); } return object; } let _newJavaScriptObject = Symbol('_newJavaScriptObject'); let _data = Symbol('_data'); let _isUpgraded = Symbol('_isUpgraded'); let _upgradedMap = Symbol('_upgradedMap'); let _getProperty = Symbol('_getProperty'); let _isUnprocessed = Symbol('_isUnprocessed'); let _process = Symbol('_process'); let _setProperty = Symbol('_setProperty'); let _upgrade = Symbol('_upgrade'); let _hasProperty = Symbol('_hasProperty'); let _getPropertyNames = Symbol('_getPropertyNames'); class _JsonMap extends core.Object { _JsonMap(original$) { this[_processed] = _JsonMap[_newJavaScriptObject](); this[_original] = original$; this[_data] = null; } get(key) { if (this[_isUpgraded]) { return this[_upgradedMap].get(key); } else if (!(typeof key == 'string')) { return null; } else { let result = _JsonMap[_getProperty](this[_processed], dart.as(key, core.String)); if (_JsonMap[_isUnprocessed](result)) result = this[_process](dart.as(key, core.String)); return result; } } get length() { return this[_isUpgraded] ? this[_upgradedMap].length : this[_computeKeys]()[core.$length]; } get isEmpty() { return this.length == 0; } get isNotEmpty() { return dart.notNull(this.length) > 0; } get keys() { if (this[_isUpgraded]) return this[_upgradedMap].keys; return new _JsonMapKeyIterable(this); } get values() { if (this[_isUpgraded]) return this[_upgradedMap].values; return new _internal.MappedIterable(this[_computeKeys](), ((each) => this.get(each)).bind(this)); } set(key, value) { if (this[_isUpgraded]) { this[_upgradedMap].set(key, value); } else if (this.containsKey(key)) { let processed = this[_processed]; _JsonMap[_setProperty](processed, dart.as(key, core.String), value); let original = this[_original]; if (!dart.notNull(core.identical(original, processed))) { _JsonMap[_setProperty](original, dart.as(key, core.String), null); } } else { this[_upgrade]().set(key, value); } } addAll(other) { other.forEach(((key, value) => { this.set(key, value); }).bind(this)); } containsValue(value) { if (this[_isUpgraded]) return this[_upgradedMap].containsValue(value); let keys = this[_computeKeys](); for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = dart.notNull(i) + 1) { let key = keys[core.$get](i); if (dart.equals(this.get(key), value)) return true; } return false; } containsKey(key) { if (this[_isUpgraded]) return this[_upgradedMap].containsKey(key); if (!(typeof key == 'string')) return false; return _JsonMap[_hasProperty](this[_original], dart.as(key, core.String)); } putIfAbsent(key, ifAbsent) { if (this.containsKey(key)) return this.get(key); let value = ifAbsent(); this.set(key, value); return value; } remove(key) { if (!dart.notNull(this[_isUpgraded]) && !dart.notNull(this.containsKey(key))) return null; return this[_upgrade]().remove(key); } clear() { if (this[_isUpgraded]) { this[_upgradedMap].clear(); } else { if (this[_data] != null) { dart.dinvoke(this[_data], 'clear'); } this[_original] = this[_processed] = null; this[_data] = dart.map(); } } forEach(f) { if (this[_isUpgraded]) return this[_upgradedMap].forEach(f); let keys = this[_computeKeys](); for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = dart.notNull(i) + 1) { let key = keys[core.$get](i); let value = _JsonMap[_getProperty](this[_processed], key); if (_JsonMap[_isUnprocessed](value)) { value = _convertJsonToDartLazy(_JsonMap[_getProperty](this[_original], key)); _JsonMap[_setProperty](this[_processed], key, value); } dart.dinvokef(f, key, value); if (!dart.notNull(core.identical(keys, this[_data]))) { throw new core.ConcurrentModificationError(this); } } } toString() { return collection.Maps.mapToString(this); } get [_isUpgraded]() { return this[_processed] == null; } get [_upgradedMap]() { dart.assert(this[_isUpgraded]); return dart.as(this[_data], core.Map); } [_computeKeys]() { dart.assert(!dart.notNull(this[_isUpgraded])); let keys = dart.as(this[_data], core.List); if (keys == null) { keys = this[_data] = _JsonMap[_getPropertyNames](this[_original]); } return dart.as(keys, core.List$(core.String)); } [_upgrade]() { if (this[_isUpgraded]) return this[_upgradedMap]; let result = dart.map(); let keys = this[_computeKeys](); for (let i = 0; dart.notNull(i) < dart.notNull(keys[core.$length]); i = dart.notNull(i) + 1) { let key = keys[core.$get](i); result.set(key, this.get(key)); } if (keys[core.$isEmpty]) { keys[core.$add](null); } else { keys[core.$clear](); } this[_original] = this[_processed] = null; this[_data] = result; dart.assert(this[_isUpgraded]); return result; } [_process](key) { if (!dart.notNull(_JsonMap[_hasProperty](this[_original], key))) return null; let result = _convertJsonToDartLazy(_JsonMap[_getProperty](this[_original], key)); return _JsonMap[_setProperty](this[_processed], key, result); } static [_hasProperty](object, key) { return Object.prototype.hasOwnProperty.call(object, key); } static [_getProperty](object, key) { return object[key]; } static [_setProperty](object, key, value) { return object[key] = value; } static [_getPropertyNames](object) { return dart.as(Object.keys(object), core.List); } static [_isUnprocessed](object) { return typeof object == "undefined"; } static [_newJavaScriptObject]() { return Object.create(null); } } _JsonMap[dart.implements] = () => [collection.LinkedHashMap]; let _parent = Symbol('_parent'); class _JsonMapKeyIterable extends _internal.ListIterable { _JsonMapKeyIterable(parent) { this[_parent] = parent; super.ListIterable(); } get [core.$length]() { return this[_parent].length; } [core.$elementAt](index) { return dart.as(this[_parent][_isUpgraded] ? this[_parent].keys[core.$elementAt](index) : this[_parent][_computeKeys]()[core.$get](index), core.String); } get [core.$iterator]() { return dart.as(this[_parent][_isUpgraded] ? this[_parent].keys[core.$iterator] : this[_parent][_computeKeys]()[core.$iterator], core.Iterator); } [core.$contains](key) { return this[_parent].containsKey(key); } } class _JsonDecoderSink extends _StringSinkConversionSink { _JsonDecoderSink(reviver$, sink$) { this[_reviver] = reviver$; this[_sink] = sink$; super._StringSinkConversionSink(new core.StringBuffer()); } close() { super.close(); let buffer = dart.as(this[_stringSink], core.StringBuffer); let accumulated = buffer.toString(); buffer.clear(); let decoded = _parseJson(accumulated, this[_reviver]); this[_sink].add(decoded); this[_sink].close(); } } // Exports: exports.ASCII = ASCII; exports.AsciiCodec = AsciiCodec; exports.Encoding = Encoding; exports.Codec$ = Codec$; exports.Codec = Codec; exports.Converter$ = Converter$; exports.Converter = Converter; exports.AsciiEncoder = AsciiEncoder; exports.StringConversionSinkBase = StringConversionSinkBase; exports.StringConversionSinkMixin = StringConversionSinkMixin; exports.AsciiDecoder = AsciiDecoder; exports.ByteConversionSinkBase = ByteConversionSinkBase; exports.ByteConversionSink = ByteConversionSink; exports.ChunkedConversionSink$ = ChunkedConversionSink$; exports.ChunkedConversionSink = ChunkedConversionSink; exports.HTML_ESCAPE = HTML_ESCAPE; exports.HtmlEscapeMode = HtmlEscapeMode; exports.HtmlEscape = HtmlEscape; exports.JsonUnsupportedObjectError = JsonUnsupportedObjectError; exports.JsonCyclicError = JsonCyclicError; exports.JSON = JSON; exports.JsonCodec = JsonCodec; exports.JsonEncoder = JsonEncoder; exports.JsonUtf8Encoder = JsonUtf8Encoder; exports.JsonDecoder = JsonDecoder; exports.LATIN1 = LATIN1; exports.Latin1Codec = Latin1Codec; exports.Latin1Encoder = Latin1Encoder; exports.Latin1Decoder = Latin1Decoder; exports.LineSplitter = LineSplitter; exports.StringConversionSink = StringConversionSink; exports.ClosableStringSink = ClosableStringSink; exports.UNICODE_REPLACEMENT_CHARACTER_RUNE = UNICODE_REPLACEMENT_CHARACTER_RUNE; exports.UNICODE_BOM_CHARACTER_RUNE = UNICODE_BOM_CHARACTER_RUNE; exports.UTF8 = UTF8; exports.Utf8Codec = Utf8Codec; exports.Utf8Encoder = Utf8Encoder; exports.Utf8Decoder = Utf8Decoder; })(convert || (convert = {}));