@specy/mips
Version:
The MARS mips interpreter in JS
1,629 lines • 1.34 MB
JavaScript
// src/generated/mars.js
var $rt_seed = 2463534242;
var $rt_nextId = () => {
let x = $rt_seed;
x ^= x << 13;
x ^= x >>> 17;
x ^= x << 5;
$rt_seed = x;
return x;
};
var $rt_wrapFunction0 = (f) => function() {
return f(this);
};
var $rt_wrapFunction1 = (f) => function(p1) {
return f(this, p1);
};
var $rt_wrapFunction2 = (f) => function(p1, p2) {
return f(this, p1, p2);
};
var $rt_wrapFunction3 = (f) => function(p1, p2, p3) {
return f(this, p1, p2, p3, p3);
};
var $rt_wrapFunction4 = (f) => function(p1, p2, p3, p4) {
return f(this, p1, p2, p3, p4);
};
var $rt_eraseClinit = (target) => target.$clinit = () => {
};
var $dbg_class = (obj) => {
let cls = obj.constructor;
let arrayDegree = 0;
while (cls.$meta && cls.$meta.item) {
++arrayDegree;
cls = cls.$meta.item;
}
let clsName = "";
if (cls.$meta.primitive) {
clsName = cls.$meta.name;
} else {
clsName = cls.$meta ? cls.$meta.name || "a/" + cls.name : "@" + cls.name;
}
while (arrayDegree-- > 0) {
clsName += "[]";
}
return clsName;
};
var $rt_classWithoutFields = (superclass) => {
if (superclass === 0) {
return function() {
};
}
if (superclass === void 0) {
superclass = $rt_objcls();
}
return function() {
superclass.call(this);
};
};
var $rt_cls = (cls) => jl_Class_getClass(cls);
var $rt_objcls = () => jl_Object;
var $rt_callWithReceiver = (f) => function() {
return f.apply(null, [this].concat(Array.prototype.slice.call(arguments)));
};
var $rt_createcls = () => {
return { $array: null, classObject: null, $meta: { supertypes: [], superclass: null } };
};
var $rt_createPrimitiveCls = (name, binaryName) => {
let cls = $rt_createcls();
cls.$meta.primitive = true;
cls.$meta.name = name;
cls.$meta.binaryName = binaryName;
cls.$meta.enum = false;
cls.$meta.item = null;
cls.$meta.simpleName = null;
cls.$meta.declaringClass = null;
cls.$meta.enclosingClass = null;
return cls;
};
var $rt_booleancls = $rt_createPrimitiveCls("boolean", "Z");
var $rt_charcls = $rt_createPrimitiveCls("char", "C");
var $rt_bytecls = $rt_createPrimitiveCls("byte", "B");
var $rt_shortcls = $rt_createPrimitiveCls("short", "S");
var $rt_intcls = $rt_createPrimitiveCls("int", "I");
var $rt_longcls = $rt_createPrimitiveCls("long", "J");
var $rt_floatcls = $rt_createPrimitiveCls("float", "F");
var $rt_doublecls = $rt_createPrimitiveCls("double", "D");
var $rt_voidcls = $rt_createPrimitiveCls("void", "V");
var $rt_numberConversionBuffer = new ArrayBuffer(16);
var $rt_numberConversionView = new DataView($rt_numberConversionBuffer);
var $rt_numberConversionFloatArray = new Float32Array($rt_numberConversionBuffer);
var $rt_numberConversionDoubleArray = new Float64Array($rt_numberConversionBuffer);
var $rt_numberConversionIntArray = new Int32Array($rt_numberConversionBuffer);
var $rt_doubleToRawLongBits;
var $rt_longBitsToDouble;
if (typeof BigInt !== "function") {
$rt_doubleToRawLongBits = (n) => {
$rt_numberConversionView.setFloat64(0, n, true);
return new Long($rt_numberConversionView.getInt32(0, true), $rt_numberConversionView.getInt32(4, true));
};
$rt_longBitsToDouble = (n) => {
$rt_numberConversionView.setInt32(0, n.lo, true);
$rt_numberConversionView.setInt32(4, n.hi, true);
return $rt_numberConversionView.getFloat64(0, true);
};
} else if (typeof BigInt64Array !== "function") {
$rt_doubleToRawLongBits = (n) => {
$rt_numberConversionView.setFloat64(0, n, true);
let lo = $rt_numberConversionView.getInt32(0, true);
let hi = $rt_numberConversionView.getInt32(4, true);
return BigInt.asIntN(64, BigInt.asUintN(32, BigInt(lo)) | BigInt(hi) << BigInt(32));
};
$rt_longBitsToDouble = (n) => {
$rt_numberConversionView.setFloat64(0, n, true);
let lo = $rt_numberConversionView.getInt32(0, true);
let hi = $rt_numberConversionView.getInt32(4, true);
return BigInt.asIntN(64, BigInt.asUintN(32, BigInt(lo)) | BigInt(hi) << BigInt(32));
};
} else {
let $rt_numberConversionLongArray = new BigInt64Array($rt_numberConversionBuffer);
$rt_doubleToRawLongBits = (n) => {
$rt_numberConversionDoubleArray[0] = n;
return $rt_numberConversionLongArray[0];
};
$rt_longBitsToDouble = (n) => {
$rt_numberConversionLongArray[0] = n;
return $rt_numberConversionDoubleArray[0];
};
}
var $rt_floatToRawIntBits = (n) => {
$rt_numberConversionFloatArray[0] = n;
return $rt_numberConversionIntArray[0];
};
var $rt_intBitsToFloat = (n) => {
$rt_numberConversionIntArray[0] = n;
return $rt_numberConversionFloatArray[0];
};
var $rt_compare = (a, b) => a > b ? 1 : a < b ? -1 : a === b ? 0 : 1;
var $rt_imul = Math.imul || function(a, b) {
let ah = a >>> 16 & 65535;
let al = a & 65535;
let bh = b >>> 16 & 65535;
let bl = b & 65535;
return al * bl + (ah * bl + al * bh << 16 >>> 0) | 0;
};
var $rt_udiv = (a, b) => (a >>> 0) / (b >>> 0) >>> 0;
var $rt_umod = (a, b) => (a >>> 0) % (b >>> 0) >>> 0;
var $rt_ucmp = (a, b) => {
a >>>= 0;
b >>>= 0;
return a < b ? -1 : a > b ? 1 : 0;
};
var Long_ZERO = BigInt(0);
var Long_create = (lo, hi) => BigInt.asIntN(64, BigInt.asUintN(64, BigInt(lo)) | BigInt.asUintN(64, BigInt(hi) << BigInt(32)));
var Long_fromInt = (val) => BigInt.asIntN(64, BigInt(val | 0));
var Long_fromNumber = (val) => BigInt.asIntN(64, BigInt(val >= 0 ? Math.floor(val) : Math.ceil(val)));
var Long_hi = (val) => Number(BigInt.asIntN(64, val >> BigInt(32))) | 0;
var Long_lo = (val) => Number(BigInt.asIntN(32, val)) | 0;
var Long_eq = (a, b) => a === b;
var Long_ne = (a, b) => a !== b;
var Long_gt = (a, b) => a > b;
var Long_lt = (a, b) => a < b;
var Long_le = (a, b) => a <= b;
var Long_add = (a, b) => BigInt.asIntN(64, a + b);
var Long_neg = (a) => BigInt.asIntN(64, -a);
var Long_sub = (a, b) => BigInt.asIntN(64, a - b);
var Long_ucompare = (a, b) => {
a = BigInt.asUintN(64, a);
b = BigInt.asUintN(64, b);
return a < b ? -1 : a > b ? 1 : 0;
};
var Long_mul = (a, b) => BigInt.asIntN(64, a * b);
var Long_div = (a, b) => BigInt.asIntN(64, a / b);
var Long_udiv = (a, b) => BigInt.asIntN(64, BigInt.asUintN(64, a) / BigInt.asUintN(64, b));
var Long_rem = (a, b) => BigInt.asIntN(64, a % b);
var Long_urem = (a, b) => BigInt.asIntN(64, BigInt.asUintN(64, a) % BigInt.asUintN(64, b));
var Long_and = (a, b) => BigInt.asIntN(64, a & b);
var Long_or = (a, b) => BigInt.asIntN(64, a | b);
var Long_xor = (a, b) => BigInt.asIntN(64, a ^ b);
var Long_shl = (a, b) => BigInt.asIntN(64, a << BigInt(b & 63));
var Long_shr = (a, b) => BigInt.asIntN(64, a >> BigInt(b & 63));
var Long_shru = (a, b) => BigInt.asIntN(64, BigInt.asUintN(64, a) >> BigInt(b & 63));
var $rt_createArray = (cls, sz) => {
let data = new Array(sz);
data.fill(null);
return new ($rt_arraycls(cls))(data);
};
var $rt_wrapArray = (cls, data) => new ($rt_arraycls(cls))(data);
var $rt_createLongArrayFromData;
if (typeof BigInt64Array !== "function") {
$rt_createLongArrayFromData = (init) => new $rt_longArrayCls(init);
} else {
$rt_createLongArrayFromData = (data) => {
let buffer = new BigInt64Array(data.length);
buffer.set(data);
return new $rt_longArrayCls(buffer);
};
}
var $rt_createCharArray = (sz) => new $rt_charArrayCls(new Uint16Array(sz));
var $rt_createCharArrayFromData = (data) => {
let buffer = new Uint16Array(data.length);
buffer.set(data);
return new $rt_charArrayCls(buffer);
};
var $rt_createByteArray = (sz) => new $rt_byteArrayCls(new Int8Array(sz));
var $rt_createShortArrayFromData = (data) => {
let buffer = new Int16Array(data.length);
buffer.set(data);
return new $rt_shortArrayCls(buffer);
};
var $rt_createIntArray = (sz) => new $rt_intArrayCls(new Int32Array(sz));
var $rt_createIntArrayFromData = (data) => {
let buffer = new Int32Array(data.length);
buffer.set(data);
return new $rt_intArrayCls(buffer);
};
var $rt_arraycls = (cls) => {
let result = cls.$array;
if (result === null) {
let JavaArray = function(data) {
$rt_objcls().call(this);
this.data = data;
};
JavaArray.prototype = Object.create($rt_objcls().prototype);
JavaArray.prototype.type = cls;
JavaArray.prototype.constructor = JavaArray;
JavaArray.prototype.toString = function() {
let str = "[";
for (let i = 0; i < this.data.length; ++i) {
if (i > 0) {
str += ", ";
}
str += this.data[i].toString();
}
str += "]";
return str;
};
JavaArray.prototype.$clone0 = function() {
let dataCopy;
if ("slice" in this.data) {
dataCopy = this.data.slice();
} else {
dataCopy = new this.data.constructor(this.data.length);
for (let i = 0; i < dataCopy.length; ++i) {
dataCopy[i] = this.data[i];
}
}
return new ($rt_arraycls(this.type))(dataCopy);
};
let name = "[" + cls.$meta.binaryName;
JavaArray.$meta = { item: cls, supertypes: [$rt_objcls()], primitive: false, superclass: $rt_objcls(), name, binaryName: name, enum: false, simpleName: null, declaringClass: null, enclosingClass: null };
JavaArray.classObject = null;
JavaArray.$array = null;
result = JavaArray;
cls.$array = JavaArray;
}
return result;
};
var $rt_stringPool_instance;
var $rt_stringPool = (strings) => {
$rt_stringClassInit();
$rt_stringPool_instance = new Array(strings.length);
for (let i = 0; i < strings.length; ++i) {
$rt_stringPool_instance[i] = $rt_intern($rt_str(strings[i]));
}
};
var $rt_s = (index) => $rt_stringPool_instance[index];
var $rt_charArrayToString = (array, offset, count) => {
let result = "";
let limit = offset + count;
for (let i = offset; i < limit; i = i + 1024 | 0) {
let next = Math.min(limit, i + 1024 | 0);
result += String.fromCharCode.apply(null, array.subarray(i, next));
}
return result;
};
var $rt_fullArrayToString = (array) => $rt_charArrayToString(array, 0, array.length);
var $rt_str = (str) => str === null ? null : jl_String__init_5(str);
var $rt_ustr = (str) => str === null ? null : str.$nativeString;
var $rt_stringClassInit = () => /* @__PURE__ */ (() => {
})();
var $rt_intern;
{
$rt_intern = (str) => str;
}
var $rt_isInstance = (obj, cls) => obj instanceof $rt_objcls() && !!obj.constructor.$meta && $rt_isAssignable(obj.constructor, cls);
var $rt_isAssignable = (from, to) => {
if (from === to) {
return true;
}
let map = from.$meta.assignableCache;
if (typeof map === "undefined") {
map = /* @__PURE__ */ new Map();
from.$meta.assignableCache = map;
}
let cachedResult = map.get(to);
if (typeof cachedResult !== "undefined") {
return cachedResult;
}
if (to.$meta.item !== null) {
let result = from.$meta.item !== null && $rt_isAssignable(from.$meta.item, to.$meta.item);
map.set(to, result);
return result;
}
let supertypes = from.$meta.supertypes;
for (let i = 0; i < supertypes.length; i = i + 1 | 0) {
if ($rt_isAssignable(supertypes[i], to)) {
map.set(to, true);
return true;
}
}
map.set(to, false);
return false;
};
var $rt_throw = (ex) => {
throw $rt_exception(ex);
};
var $rt_javaExceptionProp = Symbol("javaException");
var $rt_exception = (ex) => {
let err = ex.$jsException;
if (!err) {
let javaCause = $rt_throwableCause(ex);
let jsCause = javaCause !== null ? javaCause.$jsException : void 0;
let cause = typeof jsCause === "object" ? { cause: jsCause } : void 0;
err = new JavaError("Java exception thrown", cause);
if (typeof Error.captureStackTrace === "function") {
Error.captureStackTrace(err);
}
err[$rt_javaExceptionProp] = ex;
ex.$jsException = err;
$rt_fillStack(err, ex);
}
return err;
};
var $rt_fillStack = (err, ex) => {
if (typeof $rt_decodeStack === "function" && err.stack) {
let stack = $rt_decodeStack(err.stack);
let javaStack = $rt_createArray($rt_stecls(), stack.length);
let elem;
let noStack = false;
for (let i = 0; i < stack.length; ++i) {
let element = stack[i];
elem = $rt_createStackElement($rt_str(element.className), $rt_str(element.methodName), $rt_str(element.fileName), element.lineNumber);
if (elem == null) {
noStack = true;
break;
}
javaStack.data[i] = elem;
}
if (!noStack) {
$rt_setStack(ex, javaStack);
}
}
};
var JavaError;
if (typeof Reflect === "object") {
let defaultMessage = Symbol("defaultMessage");
JavaError = function JavaError2(message, cause) {
let self = Reflect.construct(Error, [void 0, cause], JavaError2);
Object.setPrototypeOf(self, JavaError2.prototype);
self[defaultMessage] = message;
return self;
};
JavaError.prototype = Object.create(Error.prototype, { constructor: { configurable: true, writable: true, value: JavaError }, message: { get() {
try {
let javaException = this[$rt_javaExceptionProp];
if (typeof javaException === "object") {
let javaMessage = $rt_throwableMessage(javaException);
if (typeof javaMessage === "object") {
return javaMessage !== null ? javaMessage.toString() : null;
}
}
return this[defaultMessage];
} catch (e) {
return "Exception occurred trying to extract Java exception message: " + e;
}
} } });
} else {
JavaError = Error;
}
var $rt_wrapException = (err) => {
let ex = err[$rt_javaExceptionProp];
if (!ex) {
ex = $rt_createException($rt_str("(JavaScript) " + err.toString()));
err[$rt_javaExceptionProp] = ex;
ex.$jsException = err;
$rt_fillStack(err, ex);
}
return ex;
};
var $rt_createException = (message) => jl_RuntimeException__init_0(message);
var $rt_throwableMessage = (t) => jl_Throwable_getMessage(t);
var $rt_throwableCause = (t) => jl_Throwable_getCause(t);
var $rt_stecls = () => $rt_objcls();
var $rt_createStackElement = (className, methodName, fileName, lineNumber) => {
{
return null;
}
};
var $rt_setStack = (e, stack) => {
};
var $rt_createOutputFunction = (outputFunction) => {
let buffer = "";
return (msg) => {
let index = 0;
while (true) {
let next = msg.indexOf("\n", index);
if (next < 0) {
break;
}
outputFunction(buffer + msg.substring(index, next));
buffer = "";
index = next + 1;
}
buffer += msg.substring(index);
};
};
var $rt_putStdout = typeof $rt_putStdoutCustom === "function" ? $rt_putStdoutCustom : typeof console === "object" ? $rt_createOutputFunction((msg) => console.info(msg)) : () => {
};
var $rt_packageData = null;
var $rt_packages = (data) => {
let i = 0;
let packages = new Array(data.length);
for (let j = 0; j < data.length; ++j) {
let prefixIndex = data[i++];
let prefix = prefixIndex >= 0 ? packages[prefixIndex] : "";
packages[j] = prefix + data[i++] + ".";
}
$rt_packageData = packages;
};
var $rt_metadata = (data) => {
let packages = $rt_packageData;
let i = 0;
while (i < data.length) {
let cls = data[i++];
cls.$meta = {};
let m = cls.$meta;
let className = data[i++];
m.name = className !== 0 ? className : null;
if (m.name !== null) {
let packageIndex = data[i++];
if (packageIndex >= 0) {
m.name = packages[packageIndex] + m.name;
}
}
m.binaryName = "L" + m.name + ";";
let superclass = data[i++];
m.superclass = superclass !== 0 ? superclass : null;
m.supertypes = data[i++];
if (m.superclass) {
m.supertypes.push(m.superclass);
cls.prototype = Object.create(m.superclass.prototype);
} else {
cls.prototype = {};
}
let flags = data[i++];
m.enum = (flags & 8) !== 0;
m.flags = flags;
m.primitive = false;
m.item = null;
cls.prototype.constructor = cls;
cls.classObject = null;
m.accessLevel = data[i++];
let innerClassInfo = data[i++];
if (innerClassInfo === 0) {
m.simpleName = null;
m.declaringClass = null;
m.enclosingClass = null;
} else {
let enclosingClass = innerClassInfo[0];
m.enclosingClass = enclosingClass !== 0 ? enclosingClass : null;
let declaringClass = innerClassInfo[1];
m.declaringClass = declaringClass !== 0 ? declaringClass : null;
let simpleName = innerClassInfo[2];
m.simpleName = simpleName !== 0 ? simpleName : null;
}
let clinit = data[i++];
cls.$clinit = clinit !== 0 ? clinit : function() {
};
let virtualMethods = data[i++];
if (virtualMethods !== 0) {
for (let j = 0; j < virtualMethods.length; j += 2) {
let name = virtualMethods[j];
let func = virtualMethods[j + 1];
if (typeof name === "string") {
name = [name];
}
for (let k = 0; k < name.length; ++k) {
cls.prototype[name[k]] = func;
}
}
}
cls.$array = null;
}
};
function jl_Object() {
this.$monitor = null;
this.$id$ = 0;
}
var jl_Object_monitorEnterSync = ($o) => {
let var$2;
if ($o.$monitor === null)
jl_Object_createMonitor($o);
$o = $o.$monitor;
var$2 = $o.$owner;
if (var$2 === null)
$o.$owner = jl_Thread_currentThread;
else if (var$2 !== jl_Thread_currentThread) {
var$2 = new jl_IllegalStateException();
jl_Throwable__init_(var$2, $rt_s(0));
$rt_throw(var$2);
}
$o.$count = $o.$count + 1 | 0;
};
var jl_Object_monitorExitSync = ($o) => {
let var$2, var$3;
if (!jl_Object_isEmptyMonitor($o)) {
var$2 = $o.$monitor;
if (var$2.$owner === jl_Thread_currentThread) {
var$3 = var$2.$count - 1 | 0;
var$2.$count = var$3;
if (!var$3)
var$2.$owner = null;
jl_Object_isEmptyMonitor($o);
return;
}
}
$o = new jl_IllegalMonitorStateException();
jl_Exception__init_($o);
$rt_throw($o);
};
var jl_Object_createMonitor = ($o) => {
let var$2;
var$2 = new jl_Object$Monitor();
var$2.$owner = jl_Thread_currentThread;
$o.$monitor = var$2;
};
var jl_Object_isEmptyMonitor = ($this) => {
let $monitor, var$2;
$monitor = $this.$monitor;
if ($monitor === null)
return 1;
a: {
if ($monitor.$owner === null) {
var$2 = $monitor.$enteringThreads;
if (!(var$2 !== null && !otp_PlatformQueue_isEmpty$static(var$2))) {
$monitor = $monitor.$notifyListeners;
if ($monitor === null)
break a;
if (otp_PlatformQueue_isEmpty$static($monitor))
break a;
}
}
return 0;
}
$this.$monitor = null;
return 1;
};
var jl_Object_getClass = ($this) => {
return jl_Class_getClass($this.constructor);
};
var jl_Object_equals = ($this, $other) => {
return $this !== $other ? 0 : 1;
};
var jl_Object_toString = ($this) => {
let var$1, var$2, var$3, var$4;
var$1 = jl_Object_getClass($this);
if (var$1.$name3 === null)
var$1.$name3 = $rt_str(var$1.$platformClass.$meta.name);
var$2 = var$1.$name3;
var$1 = $this;
if (!var$1.$id$)
var$1.$id$ = $rt_nextId();
var$1 = jl_Integer_toHexString($this.$id$);
var$3 = new jl_StringBuilder();
jl_AbstractStringBuilder__init_(var$3);
var$4 = jl_StringBuilder_append(var$3, var$2);
jl_AbstractStringBuilder_append(var$4, 64);
jl_StringBuilder_append(var$4, var$1);
return jl_AbstractStringBuilder_toString(var$3);
};
var jl_Object_clone = ($this) => {
let $result, var$2, var$3;
if (!$rt_isInstance($this, jl_Cloneable) && $this.constructor.$meta.item === null) {
$result = new jl_CloneNotSupportedException();
jl_Exception__init_($result);
$rt_throw($result);
}
$result = otp_Platform_clone($this);
var$2 = $result;
var$3 = $rt_nextId();
var$2.$id$ = var$3;
return $result;
};
var jlr_AnnotatedElement = $rt_classWithoutFields(0);
var jlr_Type = $rt_classWithoutFields(0);
function jl_Class() {
let a = this;
jl_Object.call(a);
a.$name3 = null;
a.$platformClass = null;
}
var jl_Class_getClass = (var$1) => {
let var$2;
if (var$1 === null)
return null;
var$2 = var$1.classObject;
if (var$2 === null) {
var$2 = new jl_Class();
var$2.$platformClass = var$1;
var$1.classObject = var$2;
}
return var$2;
};
var jl_Class_getComponentType = ($this) => {
return jl_Class_getClass($this.$platformClass.$meta.item);
};
var otji_JS = $rt_classWithoutFields();
var otji_JS_wrap = ($array) => {
let var$2, $result, $i, var$5;
if ($array === null)
return null;
$array = $array.data;
var$2 = $array.length;
$result = new Array(var$2);
$i = 0;
while ($i < var$2) {
var$5 = $array[$i];
$result[$i] = otji_JSWrapper_javaToJs(var$5);
$i = $i + 1 | 0;
}
return $result;
};
var otji_JS_wrap0 = ($array) => {
let var$2, $result, $i, var$5;
if ($array === null)
return null;
$array = $array.data;
var$2 = $array.length;
$result = new Array(var$2);
$i = 0;
while ($i < var$2) {
var$5 = $array[$i];
$result[$i] = var$5;
$i = $i + 1 | 0;
}
return $result;
};
var otji_JS_unwrapIntArray = ($array) => {
let $result, var$3, $i, var$5;
if ($array === null)
return null;
$result = $rt_createIntArray($array.length);
var$3 = $result.data;
$i = 0;
var$5 = var$3.length;
while ($i < var$5) {
var$3[$i] = otjc_JSNumber_intValue$static(otji_JSWrapper_maybeUnwrap($array[$i]));
$i = $i + 1 | 0;
}
return $result;
};
var otji_JS_function = (var$1, var$2) => {
let name = "jso$functor$" + var$2;
let result = var$1[name];
if (typeof result !== "function") {
let fn = function() {
return var$1[var$2].apply(var$1, arguments);
};
result = () => fn;
var$1[name] = result;
}
return result();
};
var otp_Platform = $rt_classWithoutFields();
var otp_Platform_clone = (var$1) => {
let copy = new var$1.constructor();
for (let field in var$1) {
if (var$1.hasOwnProperty(field)) {
copy[field] = var$1[field];
}
}
return copy;
};
function jl_Throwable() {
let a = this;
jl_Object.call(a);
a.$message0 = null;
a.$cause = null;
a.$suppressionEnabled = 0;
a.$writableStackTrace = 0;
}
var jl_Throwable__init_ = ($this, var$1) => {
$this.$suppressionEnabled = 1;
$this.$writableStackTrace = 1;
$this.$message0 = var$1;
};
var jl_Throwable_getMessage = ($this) => {
return $this.$message0;
};
var jl_Throwable_getCause = ($this) => {
let var$1;
var$1 = $this.$cause;
if (var$1 === $this)
var$1 = null;
return var$1;
};
var jl_Exception = $rt_classWithoutFields(jl_Throwable);
var jl_Exception__init_ = ($this) => {
$this.$suppressionEnabled = 1;
$this.$writableStackTrace = 1;
};
var jl_RuntimeException = $rt_classWithoutFields(jl_Exception);
var jl_RuntimeException__init_ = ($this) => {
jl_Exception__init_($this);
};
var jl_RuntimeException__init_1 = ($this, $message) => {
jl_Throwable__init_($this, $message);
};
var jl_RuntimeException__init_0 = (var_0) => {
let var_1 = new jl_RuntimeException();
jl_RuntimeException__init_1(var_1, var_0);
return var_1;
};
var jl_ClassCastException = $rt_classWithoutFields(jl_RuntimeException);
var ji_Serializable = $rt_classWithoutFields(0);
var jl_Comparable = $rt_classWithoutFields(0);
var jl_CharSequence = $rt_classWithoutFields(0);
function jl_String() {
jl_Object.call(this);
this.$hashCode0 = 0;
}
var jl_String_EMPTY_CHARS = null;
var jl_String_EMPTY = null;
var jl_String_CASE_INSENSITIVE_ORDER = null;
var jl_String__init_7 = ($this) => {
$this.$nativeString = "";
};
var jl_String__init_0 = () => {
let var_0 = new jl_String();
jl_String__init_7(var_0);
return var_0;
};
var jl_String__init_1 = ($this, $other) => {
$this.$nativeString = $other.$nativeString;
};
var jl_String__init_2 = (var_0) => {
let var_1 = new jl_String();
jl_String__init_1(var_1, var_0);
return var_1;
};
var jl_String__init_4 = ($this, $characters) => {
$this.$nativeString = $rt_charArrayToString($characters.data, 0, $characters.data.length);
};
var jl_String__init_ = (var_0) => {
let var_1 = new jl_String();
jl_String__init_4(var_1, var_0);
return var_1;
};
var jl_String__init_8 = (var$0, var$1) => {
var$0.$nativeString = var$1;
};
var jl_String__init_5 = (var_0) => {
let var_1 = new jl_String();
jl_String__init_8(var_1, var_0);
return var_1;
};
var jl_String__init_6 = (var$0, var$1, $offset, $count) => {
let var$4, var$5;
var$4 = var$1.data.length;
if ($offset >= 0 && $count >= 0 && $count <= (var$4 - $offset | 0)) {
var$0.$nativeString = $rt_charArrayToString(var$1.data, $offset, $count);
return;
}
var$5 = new jl_IndexOutOfBoundsException();
jl_Exception__init_(var$5);
$rt_throw(var$5);
};
var jl_String__init_3 = (var_0, var_1, var_2) => {
let var_3 = new jl_String();
jl_String__init_6(var_3, var_0, var_1, var_2);
return var_3;
};
var jl_String_charAt = ($this, $index) => {
let var$2;
if ($index >= 0 && $index < $this.$nativeString.length)
return $this.$nativeString.charCodeAt($index);
var$2 = new jl_StringIndexOutOfBoundsException();
jl_Exception__init_(var$2);
$rt_throw(var$2);
};
var jl_String_length = ($this) => {
return $this.$nativeString.length;
};
var jl_String_isEmpty = ($this) => {
return $this.$nativeString.length ? 0 : 1;
};
var jl_String_startsWith0 = ($this, $prefix, $toffset) => {
let $i, var$4, var$5;
if (($toffset + $prefix.$nativeString.length | 0) > $this.$nativeString.length)
return 0;
$i = 0;
while ($i < $prefix.$nativeString.length) {
var$4 = jl_String_charAt($prefix, $i);
var$5 = $toffset + 1 | 0;
if (var$4 != jl_String_charAt($this, $toffset))
return 0;
$i = $i + 1 | 0;
$toffset = var$5;
}
return 1;
};
var jl_String_startsWith = ($this, $prefix) => {
if ($this === $prefix)
return 1;
return jl_String_startsWith0($this, $prefix, 0);
};
var jl_String_indexOf0 = ($this, $ch, $fromIndex) => {
let $i, $bmpChar, $hi, $lo;
$i = jl_Math_max(0, $fromIndex);
if ($ch < 65536) {
$bmpChar = $ch & 65535;
while (true) {
if ($i >= $this.$nativeString.length)
return -1;
if ($this.$nativeString.charCodeAt($i) == $bmpChar)
break;
$i = $i + 1 | 0;
}
return $i;
}
$hi = jl_Character_highSurrogate($ch);
$lo = jl_Character_lowSurrogate($ch);
while (true) {
if ($i >= ($this.$nativeString.length - 1 | 0))
return -1;
if ($this.$nativeString.charCodeAt($i) == $hi && $this.$nativeString.charCodeAt($i + 1 | 0) == $lo)
break;
$i = $i + 1 | 0;
}
return $i;
};
var jl_String_indexOf1 = ($this, $ch) => {
return jl_String_indexOf0($this, $ch, 0);
};
var jl_String_lastIndexOf = ($this, $ch, $fromIndex) => {
let $i, $bmpChar, $hi, $lo;
$i = jl_Math_min($fromIndex, $this.$nativeString.length - 1 | 0);
if ($ch < 65536) {
$bmpChar = $ch & 65535;
while (true) {
if ($i < 0)
return -1;
if ($this.$nativeString.charCodeAt($i) == $bmpChar)
break;
$i = $i + -1 | 0;
}
return $i;
}
$hi = jl_Character_highSurrogate($ch);
$lo = jl_Character_lowSurrogate($ch);
while (true) {
if ($i < 1)
return -1;
if ($this.$nativeString.charCodeAt($i) == $lo) {
$fromIndex = $i - 1 | 0;
if ($this.$nativeString.charCodeAt($fromIndex) == $hi)
break;
}
$i = $i + -1 | 0;
}
return $fromIndex;
};
var jl_String_lastIndexOf0 = ($this, $ch) => {
return jl_String_lastIndexOf($this, $ch, $this.$nativeString.length - 1 | 0);
};
var jl_String_indexOf2 = ($this, $str, $fromIndex) => {
let $i, $toIndex, $j;
$i = jl_Math_max(0, $fromIndex);
$toIndex = $this.$nativeString.length - $str.$nativeString.length | 0;
a: while (true) {
if ($i > $toIndex)
return -1;
$j = 0;
while (true) {
if ($j >= $str.$nativeString.length)
break a;
if (jl_String_charAt($this, $i + $j | 0) != jl_String_charAt($str, $j))
break;
$j = $j + 1 | 0;
}
$i = $i + 1 | 0;
}
return $i;
};
var jl_String_indexOf = ($this, $str) => {
return jl_String_indexOf2($this, $str, 0);
};
var jl_String_substring = ($this, $beginIndex, $endIndex) => {
let $length, var$4, var$5;
$length = $this.$nativeString.length;
var$4 = $rt_compare($beginIndex, $endIndex);
if (!var$4)
return jl_String_EMPTY;
if (!$beginIndex && $endIndex == $length)
return $this;
if ($beginIndex >= 0 && var$4 <= 0 && $endIndex <= $length)
return jl_String__init_5($this.$nativeString.substring($beginIndex, $endIndex));
var$5 = new jl_StringIndexOutOfBoundsException();
jl_Exception__init_(var$5);
$rt_throw(var$5);
};
var jl_String_substring0 = ($this, $beginIndex) => {
return jl_String_substring($this, $beginIndex, $this.$nativeString.length);
};
var jl_String_concat = ($this, $str) => {
let $buffer, var$3, $index, $i, var$6;
if (jl_String_isEmpty($str))
return $this;
if (jl_String_isEmpty($this))
return $str;
$buffer = $rt_createCharArray($this.$nativeString.length + $str.$nativeString.length | 0);
var$3 = $buffer.data;
$index = 0;
$i = 0;
while ($i < $this.$nativeString.length) {
var$6 = $index + 1 | 0;
var$3[$index] = jl_String_charAt($this, $i);
$i = $i + 1 | 0;
$index = var$6;
}
$i = 0;
while ($i < $str.$nativeString.length) {
var$6 = $index + 1 | 0;
var$3[$index] = jl_String_charAt($str, $i);
$i = $i + 1 | 0;
$index = var$6;
}
$str = jl_String__init_0();
$str.$nativeString = $rt_fullArrayToString($buffer.data);
return $str;
};
var jl_String_contains = ($this, $s) => {
let $i, $sz, $j;
$i = $this.$nativeString.length;
$s = $s;
$sz = $i - $s.$nativeString.length | 0;
$i = 0;
while ($i <= $sz) {
$j = 0;
while (true) {
if ($j >= $s.$nativeString.length)
return 1;
if (jl_String_charAt($this, $i + $j | 0) != jl_String_charAt($s, $j))
break;
$j = $j + 1 | 0;
}
$i = $i + 1 | 0;
}
return 0;
};
var jl_String_trim = ($this) => {
let $lower, $upper;
$lower = 0;
$upper = $this.$nativeString.length - 1 | 0;
a: {
while ($lower <= $upper) {
if (jl_String_charAt($this, $lower) > 32)
break a;
$lower = $lower + 1 | 0;
}
}
while ($lower <= $upper && jl_String_charAt($this, $upper) <= 32) {
$upper = $upper + -1 | 0;
}
return jl_String_substring($this, $lower, $upper + 1 | 0);
};
var jl_String_toString = ($this) => {
return $this;
};
var jl_String_toCharArray = ($this) => {
let $array, var$2, $i, var$4;
$array = $rt_createCharArray($this.$nativeString.length);
var$2 = $array.data;
$i = 0;
var$4 = var$2.length;
while ($i < var$4) {
var$2[$i] = jl_String_charAt($this, $i);
$i = $i + 1 | 0;
}
return $array;
};
var jl_String_valueOf0 = ($obj) => {
return $obj === null ? $rt_s(1) : $obj.$toString();
};
var jl_String_valueOf1 = ($c) => {
let var$2, var$3;
var$2 = new jl_String();
var$3 = $rt_createCharArray(1);
var$3.data[0] = $c;
jl_String__init_4(var$2, var$3);
return var$2;
};
var jl_String_valueOf = ($i) => {
let var$2;
var$2 = new jl_StringBuilder();
jl_AbstractStringBuilder__init_(var$2);
jl_AbstractStringBuilder_append0(var$2, $i);
return jl_AbstractStringBuilder_toString(var$2);
};
var jl_String_equals = ($this, $other) => {
let $str;
if ($this === $other)
return 1;
if (!($other instanceof jl_String))
return 0;
$str = $other;
return $this.$nativeString !== $str.$nativeString ? 0 : 1;
};
var jl_String_equalsIgnoreCase = ($this, $other) => {
let $i;
if ($this === $other)
return 1;
if ($other === null)
return 0;
if ($this.$nativeString.length != $other.$nativeString.length)
return 0;
$i = 0;
while ($i < $this.$nativeString.length) {
if (jl_Character_toLowerCase(jl_String_charAt($this, $i)) != jl_Character_toLowerCase(jl_String_charAt($other, $i)))
return 0;
$i = $i + 1 | 0;
}
return 1;
};
var jl_String_hashCode = ($this) => {
let $i;
a: {
if (!$this.$hashCode0) {
$i = 0;
while (true) {
if ($i >= $this.$nativeString.length)
break a;
$this.$hashCode0 = (31 * $this.$hashCode0 | 0) + $this.$nativeString.charCodeAt($i) | 0;
$i = $i + 1 | 0;
}
}
}
return $this.$hashCode0;
};
var jl_String_toLowerCase = ($this) => {
let $lowerCase;
$lowerCase = $this.$nativeString.toLowerCase();
if ($lowerCase !== $this.$nativeString)
$this = jl_String__init_5($lowerCase);
return $this;
};
var jl_String_split = ($this, $regex) => {
let var$2, var$3, var$4, var$5, var$6, var$7;
$regex = jur_Pattern_compile($regex);
var$2 = $this;
var$3 = ju_ArrayList__init_();
$regex = jur_Pattern_matcher($regex, var$2);
var$4 = 0;
var$5 = 0;
var$2 = var$2;
if (!var$2.$nativeString.length) {
var$6 = $rt_createArray(jl_String, 1);
var$6.data[0] = $rt_s(2);
} else {
while (jur_Matcher_find($regex)) {
var$4 = var$4 + 1 | 0;
ju_ArrayList_add(var$3, jl_String_substring(var$2, var$5, jur_Matcher_start($regex)));
var$5 = jur_Matcher_end($regex);
}
ju_ArrayList_add(var$3, jl_String_substring(var$2, var$5, var$2.$nativeString.length));
var$7 = var$4 + 1 | 0;
while (true) {
var$7 = var$7 + -1 | 0;
if (var$7 < 0)
break;
if (ju_ArrayList_get(var$3, var$7).$nativeString.length)
break;
ju_ArrayList_remove(var$3, var$7);
}
if (var$7 < 0)
var$7 = 0;
var$6 = $rt_createArray(jl_String, var$7);
var$6 = ju_AbstractCollection_toArray(var$3, var$6);
}
return var$6;
};
var jl_String_replaceAll = ($this, $regex, $replacement) => {
let var$3, var$4, var$5, var$6;
$regex = jur_Pattern_matcher(jur_Pattern_compile($regex), $this);
var$3 = new jl_StringBuffer();
jl_AbstractStringBuilder__init_(var$3);
$regex.$leftBound0 = 0;
var$4 = $regex.$string1.$nativeString.length;
$regex.$rightBound0 = var$4;
jur_MatchResultImpl_reset($regex.$matchResult, $regex.$string1, $regex.$leftBound0, var$4);
$regex.$appendPos = 0;
$regex.$replacement = null;
$regex.$matchResult.$previousMatch = -1;
while (jur_Matcher_find($regex)) {
$regex.$processedRepl = jur_Matcher_processReplacement($regex, $replacement);
var$5 = $regex.$string1;
var$6 = $regex.$appendPos;
var$4 = jur_Matcher_start($regex);
jl_StringBuffer_append(var$3, jl_String_substring(var$5, var$6, var$4));
jl_AbstractStringBuilder_append1(var$3, $regex.$processedRepl);
$regex.$appendPos = jur_Matcher_end($regex);
}
$replacement = $regex.$string1;
var$6 = $regex.$appendPos;
$regex = $replacement;
return jl_AbstractStringBuilder_toString(jl_StringBuffer_append(var$3, jl_String_substring($regex, var$6, $regex.$nativeString.length)));
};
var jl_String_compareTo = ($this, var$1) => {
let var$2, var$3, var$4;
a: {
var$1 = var$1;
if ($this === var$1)
var$2 = 0;
else {
var$3 = jl_Math_min($this.$nativeString.length, var$1.$nativeString.length);
var$4 = 0;
while (true) {
if (var$4 >= var$3) {
var$2 = $this.$nativeString.length - var$1.$nativeString.length | 0;
break a;
}
var$2 = jl_String_charAt($this, var$4) - jl_String_charAt(var$1, var$4) | 0;
if (var$2)
break;
var$4 = var$4 + 1 | 0;
}
}
}
return var$2;
};
var jl_String__clinit_ = () => {
jl_String_EMPTY_CHARS = $rt_createCharArray(0);
jl_String_EMPTY = jl_String__init_0();
jl_String_CASE_INSENSITIVE_ORDER = new jl_String$_clinit_$lambda$_115_0();
};
var jl_Number = $rt_classWithoutFields();
function jl_Integer() {
jl_Number.call(this);
this.$value0 = 0;
}
var jl_Integer_TYPE = null;
var jl_Integer_integerCache = null;
var jl_Integer__init_0 = ($this, $value) => {
$this.$value0 = $value;
};
var jl_Integer__init_ = (var_0) => {
let var_1 = new jl_Integer();
jl_Integer__init_0(var_1, var_0);
return var_1;
};
var jl_Integer_toString0 = ($i, $radix) => {
if (!($radix >= 2 && $radix <= 36))
$radix = 10;
return jl_AbstractStringBuilder_append3(jl_AbstractStringBuilder__init_1(20), $i, $radix).$toString();
};
var jl_Integer_toHexString = ($i) => {
let var$2, var$3, var$4, var$5, var$6, var$7;
if (!$i)
var$2 = $rt_s(3);
else {
var$3 = (((32 - jl_Integer_numberOfLeadingZeros($i) | 0) + 4 | 0) - 1 | 0) / 4 | 0;
var$4 = $rt_createCharArray(var$3);
var$5 = var$4.data;
var$6 = (var$3 - 1 | 0) * 4 | 0;
var$3 = 0;
while (var$6 >= 0) {
var$7 = var$3 + 1 | 0;
var$5[var$3] = jl_Character_forDigit(($i >>> var$6 | 0) & 15, 16);
var$6 = var$6 - 4 | 0;
var$3 = var$7;
}
var$2 = jl_String__init_(var$4);
}
return var$2;
};
var jl_Integer_toString = ($i) => {
return jl_Integer_toString0($i, 10);
};
var jl_Integer_parseInt = ($s, $radix) => {
if ($s !== null)
return jl_Integer_parseIntImpl($s, 0, $s.$nativeString.length, $radix);
$s = new jl_NumberFormatException();
jl_Throwable__init_($s, $rt_s(4));
$rt_throw($s);
};
var jl_Integer_parseIntImpl = ($s, $beginIndex, $endIndex, $radix) => {
let $negative, $digit, $value, $maxValue, var$9, var$10, var$11, var$12;
if ($beginIndex == $endIndex) {
$s = new jl_NumberFormatException();
jl_Throwable__init_($s, $rt_s(5));
$rt_throw($s);
}
if ($radix >= 2 && $radix <= 36) {
a: {
$negative = 0;
$s = $s;
switch (jl_String_charAt($s, $beginIndex)) {
case 43:
$digit = $beginIndex + 1 | 0;
break a;
case 45:
$negative = 1;
$digit = $beginIndex + 1 | 0;
break a;
default:
}
$digit = $beginIndex;
}
$value = 0;
$maxValue = 1 + (2147483647 / $radix | 0) | 0;
if ($digit == $endIndex) {
$s = new jl_NumberFormatException();
jl_Exception__init_($s);
$rt_throw($s);
}
while ($digit < $endIndex) {
var$9 = $digit + 1 | 0;
$digit = jl_Integer_decodeDigit(jl_String_charAt($s, $digit));
if ($digit < 0) {
var$10 = new jl_NumberFormatException();
$s = jl_String_valueOf0(jl_String_substring($s, $beginIndex, $endIndex));
var$11 = new jl_StringBuilder();
jl_AbstractStringBuilder__init_(var$11);
jl_StringBuilder_append(jl_StringBuilder_append(var$11, $rt_s(6)), $s);
jl_Throwable__init_(var$10, jl_AbstractStringBuilder_toString(var$11));
$rt_throw(var$10);
}
if ($digit >= $radix) {
var$10 = new jl_NumberFormatException();
$s = jl_String_valueOf0(jl_String_substring($s, $beginIndex, $endIndex));
var$11 = new jl_StringBuilder();
jl_AbstractStringBuilder__init_(var$11);
var$12 = jl_StringBuilder_append(var$11, $rt_s(7));
jl_AbstractStringBuilder_append0(var$12, $radix);
jl_StringBuilder_append(jl_StringBuilder_append(var$12, $rt_s(8)), $s);
jl_Throwable__init_(var$10, jl_AbstractStringBuilder_toString(var$11));
$rt_throw(var$10);
}
if ($value > $maxValue) {
$s = new jl_NumberFormatException();
jl_Throwable__init_($s, $rt_s(9));
$rt_throw($s);
}
$value = $rt_imul($radix, $value) + $digit | 0;
if ($value < 0) {
if (var$9 == $endIndex && $value == -2147483648 && $negative)
return -2147483648;
var$10 = new jl_NumberFormatException();
$s = jl_String_valueOf0(jl_String_substring($s, $beginIndex, $endIndex));
var$11 = new jl_StringBuilder();
jl_AbstractStringBuilder__init_(var$11);
jl_StringBuilder_append(jl_StringBuilder_append(var$11, $rt_s(10)), $s);
jl_Throwable__init_(var$10, jl_AbstractStringBuilder_toString(var$11));
$rt_throw(var$10);
}
$digit = var$9;
}
if ($negative)
$value = -$value | 0;
return $value;
}
$s = new jl_NumberFormatException();
var$10 = new jl_StringBuilder();
jl_AbstractStringBuilder__init_(var$10);
jl_AbstractStringBuilder_append0(jl_StringBuilder_append(var$10, $rt_s(11)), $radix);
jl_Throwable__init_($s, jl_AbstractStringBuilder_toString(var$10));
$rt_throw($s);
};
var jl_Integer_parseInt0 = ($s) => {
return jl_Integer_parseInt($s, 10);
};
var jl_Integer_valueOf = ($i) => {
let var$2, var$3;
if ($i >= -128 && $i <= 127) {
a: {
if (jl_Integer_integerCache === null) {
jl_Integer_integerCache = $rt_createArray(jl_Integer, 256);
var$2 = 0;
while (true) {
var$3 = jl_Integer_integerCache.data;
if (var$2 >= var$3.length)
break a;
var$3[var$2] = jl_Integer__init_(var$2 - 128 | 0);
var$2 = var$2 + 1 | 0;
}
}
}
return jl_Integer_integerCache.data[$i + 128 | 0];
}
return jl_Integer__init_($i);
};
var jl_Integer_intValue = ($this) => {
return $this.$value0;
};
var jl_Integer_toString1 = ($this) => {
return jl_Integer_toString($this.$value0);
};
var jl_Integer_hashCode = ($this) => {
return $this.$value0;
};
var jl_Integer_equals = ($this, $other) => {
if ($this === $other)
return 1;
return $other instanceof jl_Integer && $other.$value0 == $this.$value0 ? 1 : 0;
};
var jl_Integer_decode = ($nm) => {
let $index, $negaive, $radix, $value, $maxValue, var$7, $digit;
if (jl_String_isEmpty($nm)) {
$nm = new jl_NumberFormatException();
jl_Throwable__init_($nm, $rt_s(12));
$rt_throw($nm);
}
$index = 0;
$negaive = 0;
if (jl_String_charAt($nm, $index) == 43)
$index = 1;
else if (jl_String_charAt($nm, $index) == 45) {
$index = 1;
$negaive = 1;
}
if ($index >= $nm.$nativeString.length) {
$nm = new jl_NumberFormatException();
jl_Throwable__init_($nm, $rt_s(13));
$rt_throw($nm);
}
$radix = 10;
if (jl_String_charAt($nm, $index) == 35) {
$radix = 16;
$index = $index + 1 | 0;
} else if (jl_String_charAt($nm, $index) == 48) {
$index = $index + 1 | 0;
if ($index == $nm.$nativeString.length)
return jl_Integer_valueOf(0);
if (jl_String_charAt($nm, $index) != 120 && jl_String_charAt($nm, $index) != 88)
$radix = 8;
else {
$radix = 16;
$index = $index + 1 | 0;
}
}
if ($index >= $nm.$nativeString.length) {
$nm = new jl_NumberFormatException();
jl_Throwable__init_($nm, $rt_s(13));
$rt_throw($nm);
}
$value = 0;
$maxValue = 1 + (2147483647 / $radix | 0) | 0;
a: {
while ($index < $nm.$nativeString.length) {
var$7 = $index + 1 | 0;
$digit = jl_Integer_decodeDigit(jl_String_charAt($nm, $index));
if ($digit < 0)
break a;
if ($digit >= $radix)
break a;
if ($value > $maxValue) {
$nm = new jl_NumberFormatException();
jl_Throwable__init_($nm, $rt_s(9));
$rt_throw($nm);
}
$value = $rt_imul($value, $radix) + $digit | 0;
if ($value < 0) {
if ($negaive && $value == -2147483648 && var$7 == $nm.$nativeString.length)
return jl_Integer_valueOf(-2147483648);
$nm = new jl_NumberFormatException();
jl_Throwable__init_($nm, $rt_s(14));
$rt_throw($nm);
}
$index = var$7;
}
if ($negaive)
$value = -$value | 0;
return jl_Integer_valueOf($value);
}
$nm = new jl_NumberFormatException();
jl_Throwable__init_($nm, $rt_s(13));
$rt_throw($nm);
};
var jl_Integer_decodeDigit = ($c) => {
if ($c >= 48 && $c <= 57)
return $c - 48 | 0;
if ($c >= 97 && $c <= 122)
return ($c - 97 | 0) + 10 | 0;
if ($c >= 65 && $c <= 90)
return ($c - 65 | 0) + 10 | 0;
return -1;
};
var jl_Integer_numberOfLeadingZeros = ($i) => {
let $n, var$3;
if (!$i)
return 32;
$n = 0;
var$3 = $i >>> 16 | 0;
if (var$3)
$n = 16;
else
var$3 = $i;
$i = var$3 >>> 8 | 0;
if (!$i)
$i = var$3;
else
$n = $n | 8;
var$3 = $i >>> 4 | 0;
if (!var$3)
var$3 = $i;
else
$n = $n | 4;
$i = var$3 >>> 2 | 0;
if (!$i)
$i = var$3;
else
$n = $n | 2;
if ($i >>> 1 | 0)
$n = $n | 1;
return (32 - $n | 0) - 1 | 0;
};
var jl_Integer_numberOfTrailingZeros = ($i) => {
let $n, var$3;
if (!$i)
return 32;
$n = 0;
var$3 = $i << 16;
if (var$3)
$n = 16;
else
var$3 = $i;
$i = var$3 << 8;
if (!$i)
$i = var$3;
else
$n = $n | 8;
var$3 = $i << 4;
if (!var$3)
var$3 = $i;
else
$n = $n | 4;
$i = var$3 << 2;
if (!$i)
$i = var$3;
else
$n = $n | 2;
if ($i << 1)
$n = $n | 1;
return (32 - $n | 0) - 1 | 0;
};
var jl_Integer_compareTo = ($this, var$1) => {
var$1 = var$1;
return $rt_compare($this.$value0, var$1.$value0);
};
var jl_Integer__clinit_ = () => {
jl_Integer_TYPE = $rt_cls($rt_intcls);
};
function jl_AbstractStringBuilder() {
let a = this;
jl_Object.call(a);
a.$buffer = null;
a.$length0 = 0;
}
var jl_AbstractStringBuilder__init_ = ($this) => {
jl_AbstractStringBuilder__init_0($this, 16);
};
var jl_AbstractStringBuilder__init_0 = ($this, $capacity) => {
$this.$buffer = $rt_createCharArray($capacity);
};
var jl_AbstractStringBuilder__init_1 = (var_0) => {
let var_1 = new jl_AbstractStringBuilder();
jl_AbstractStringBuilder__init_0(var_1, var_0);
return var_1;
};
var jl_AbstractStringBuilder_append1 = ($this, $string) => {
return $this.$insert($this.$length0, $string);
};
var jl_AbstractStringBuilder_insert = ($this, $index, $string) => {
let $i, $i_0, var$5, var$6;
if ($index >= 0 && $index <= $this.$length0) {
if ($string === null)
$string = $rt_s(1);
else if (jl_String_isEmpty($string))
return $this;
$this.$ensureCapacity($this.$length0 + $string.$nativeString.length | 0);
$i = $this.$length0 - 1 | 0;
while ($i >= $index) {
$this.$buffer.data[$i + $string.$nativeString.length | 0] = $this.$buffer.data[$i];
$i = $i + -1 | 0;
}
$this.$length0 = $this.$length0 + $string.$nativeString.length | 0;
$i_0 = 0;
while ($i_0 < $string.$nativeString.length) {
var$5 = $this.$buffer.data;
var$6 = $index + 1 | 0;
var$5[$index] = jl_String_charAt($string, $i_0);
$i_0 = $i_0 + 1 | 0;
$index = var$6;
}
return $this;
}
$string = new jl_StringIndexOutOfBoundsException();
jl_Exception__init_($string);
$rt_throw($string);
};
var jl_AbstractStringBuilder_append0 = ($this, $value) => {
return jl_AbstractStringBuilder_append3($this, $value, 10);
};
var jl_AbstractStringBuilder_append3 = ($this, $value, $radix) => {
return jl_AbstractStringBuilder_insert3($this, $this.$length0, $value, $radix);
};
var jl_AbstractStringBuilder_insert3 = ($this, $target, $value, $radix) => {
let $positive, var$5, var$6, $pos, $sz, $posLimit, var$10;
$positive = 1;
if ($value < 0) {
$positive = 0;
$value = -$value | 0;
}
a: {
if ($rt_ucmp($value, $radix) < 0) {
if ($positive)
jl_AbstractStringBuilder_insertSpace($this, $target, $target + 1 | 0);
else {
jl_AbstractStringBuilder_insertSpace($this, $target, $target + 2 | 0);
var$5 = $this.$buffer.data;
var$6 = $target + 1 | 0;
var$5[$target] = 45;
$target = var$6;
}
$this.$buffer.data[$target] = jl_Character_forDigit($value, $radix);
} else {
$pos = 1;
$sz = 1;
$posLimit = $rt_udiv(-1, $radix);
b: {
while (true) {
var$10 = $rt_imul($pos, $radix);
if ($rt_ucmp(var$10, $value) > 0) {
var$10 = $pos;
break b;
}
$sz = $sz + 1 | 0;
if ($rt_ucmp(var$10, $posLimit) > 0)
break;
$pos = var$10;
}
}
if (!$positive)
$sz = $sz + 1 | 0;
jl_AbstractStringBuilder_insertSpace($this, $target, $target + $sz | 0);
if ($positive)
$positive = $target;
else {
var$5 = $this.$buffer.data;
$positive = $target + 1 | 0;
var$5[$target] = 45;
}
while (true) {
if (!var$10)
break a;
var$5 = $this.$buffer.data;
$target = $positive + 1 | 0;
var$5[$positive] = jl_Character_forDigit($rt_udiv($value, var$10), $radix);
$value = $rt_umod($value, var$10);
var$10 = $rt_udiv(var$10, $radix);
$positive = $target;
}
}
}
return $this;
};
var jl_AbstractStringBuilder_insert4 = ($this, $target, $value) => {
let $mantissa, var$4, $number, $exp, $negative, $intPart, $sz, $digits, $zeros, $leadingZeros, $leadingZero, $pos, $intDigit, $i;
$mantissa = $rt_compare($value, 0);
if (!$mantissa) {
if (1 / $value === Infinity) {
jl_AbstractStringBuilder_insertSpace($this, $target, $target + 3 | 0);
var$4 = $this.$buffer.data;
$mantissa = $target + 1 | 0;
var$4[$target] = 48;
$target = $mantissa + 1 | 0;
var$4[$mantissa] = 46;
var$4[$target] = 48;
return $this;
}
jl_AbstractStringBuilder_insertSpace($this, $target, $target + 4 | 0);
var$4 = $this.$buffer.data;
$mantissa = $target + 1 | 0;
var$4[$target] = 45;
$target = $mantissa + 1 | 0;
var$4[$mantissa] = 48;
$mantissa = $target + 1 | 0;
var$4[$target] = 46;
var$4[$mantissa] = 48;
return $this;
}
if (isNaN($value) ? 1 : 0) {
jl_AbstractStringBuilder_insertSpace($this, $target, $target + 3 | 0);
var$4 = $this.$buffer.data;
$mantissa = $target + 1 | 0;
var$4[$target] = 78;
$target = $mantissa + 1 | 0;
var$4[$mantissa] = 97;
var$4[$target] = 78;
return $this;
}
if (!isFinite($value) ? 1 : 0) {
if ($mantissa > 0) {
jl_AbstractStringBuilder_insertSpace($this, $target, $target + 8 | 0);
$mantissa = $target;
} else {
jl_AbstractStringBuilder_insertSpace($this, $target, $target + 9 | 0);
var$4 = $this.$buffer.data;
$mantissa = $target + 1 | 0;
var$4[$target] = 45;
}
var$4 = $this.$buffer.data;
$target = $mantissa + 1 | 0;
var$4[$mantissa] = 73;
$mantissa = $target + 1 | 0;
var$4[$target] = 110;
$target = $mantissa + 1 | 0;
var$4[$mantissa] = 102;
$mantissa = $target + 1 | 0;
var