UNPKG

329 kBJavaScriptView Raw
1var libh3 = function (libh3) {
2 libh3 = libh3 || {};
3 var Module = typeof libh3 !== "undefined" ? libh3 : {};
4 var moduleOverrides = {};
5 var key;
6
7 for (key in Module) {
8 if (Module.hasOwnProperty(key)) {
9 moduleOverrides[key] = Module[key];
10 }
11 }
12
13 var arguments_ = [];
14 var scriptDirectory = "";
15
16 function locateFile(path) {
17 if (Module["locateFile"]) {
18 return Module["locateFile"](path, scriptDirectory);
19 }
20
21 return scriptDirectory + path;
22 }
23
24 var readAsync;
25
26 {
27 if (document.currentScript) {
28 scriptDirectory = document.currentScript.src;
29 }
30
31 if (scriptDirectory.indexOf("blob:") !== 0) {
32 scriptDirectory = scriptDirectory.substr(0, scriptDirectory.lastIndexOf("/") + 1);
33 } else {
34 scriptDirectory = "";
35 }
36
37 readAsync = function readAsync(url, onload, onerror) {
38 var xhr = new XMLHttpRequest();
39 xhr.open("GET", url, true);
40 xhr.responseType = "arraybuffer";
41
42 xhr.onload = function xhr_onload() {
43 if (xhr.status == 200 || xhr.status == 0 && xhr.response) {
44 onload(xhr.response);
45 return;
46 }
47
48 var data = tryParseAsDataURI(url);
49
50 if (data) {
51 onload(data.buffer);
52 return;
53 }
54
55 onerror();
56 };
57
58 xhr.onerror = onerror;
59 xhr.send(null);
60 };
61 }
62
63 var out = Module["print"] || console.log.bind(console);
64 var err = Module["printErr"] || console.warn.bind(console);
65
66 for (key in moduleOverrides) {
67 if (moduleOverrides.hasOwnProperty(key)) {
68 Module[key] = moduleOverrides[key];
69 }
70 }
71
72 moduleOverrides = null;
73 if (Module["arguments"]) { arguments_ = Module["arguments"]; }
74
75 var tempRet0 = 0;
76
77 var setTempRet0 = function (value) {
78 tempRet0 = value;
79 };
80
81 var getTempRet0 = function () {
82 return tempRet0;
83 };
84
85 var GLOBAL_BASE = 8;
86
87 function setValue(ptr, value, type, noSafe) {
88 type = type || "i8";
89 if (type.charAt(type.length - 1) === "*") { type = "i32"; }
90
91 switch (type) {
92 case "i1":
93 HEAP8[ptr >> 0] = value;
94 break;
95
96 case "i8":
97 HEAP8[ptr >> 0] = value;
98 break;
99
100 case "i16":
101 HEAP16[ptr >> 1] = value;
102 break;
103
104 case "i32":
105 HEAP32[ptr >> 2] = value;
106 break;
107
108 case "i64":
109 tempI64 = [value >>> 0, (tempDouble = value, +Math_abs(tempDouble) >= +1 ? tempDouble > +0 ? (Math_min(+Math_floor(tempDouble / +4294967296), +4294967295) | 0) >>> 0 : ~~+Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / +4294967296) >>> 0 : 0)], HEAP32[ptr >> 2] = tempI64[0], HEAP32[ptr + 4 >> 2] = tempI64[1];
110 break;
111
112 case "float":
113 HEAPF32[ptr >> 2] = value;
114 break;
115
116 case "double":
117 HEAPF64[ptr >> 3] = value;
118 break;
119
120 default:
121 abort("invalid type for setValue: " + type);
122 }
123 }
124
125 function getValue(ptr, type, noSafe) {
126 type = type || "i8";
127 if (type.charAt(type.length - 1) === "*") { type = "i32"; }
128
129 switch (type) {
130 case "i1":
131 return HEAP8[ptr >> 0];
132
133 case "i8":
134 return HEAP8[ptr >> 0];
135
136 case "i16":
137 return HEAP16[ptr >> 1];
138
139 case "i32":
140 return HEAP32[ptr >> 2];
141
142 case "i64":
143 return HEAP32[ptr >> 2];
144
145 case "float":
146 return HEAPF32[ptr >> 2];
147
148 case "double":
149 return HEAPF64[ptr >> 3];
150
151 default:
152 abort("invalid type for getValue: " + type);
153 }
154
155 return null;
156 }
157
158 var ABORT = false;
159
160 function assert(condition, text) {
161 if (!condition) {
162 abort("Assertion failed: " + text);
163 }
164 }
165
166 function getCFunc(ident) {
167 var func = Module["_" + ident];
168 assert(func, "Cannot call unknown function " + ident + ", make sure it is exported");
169 return func;
170 }
171
172 function ccall(ident, returnType, argTypes, args, opts) {
173 var toC = {
174 "string": function (str) {
175 var ret = 0;
176
177 if (str !== null && str !== undefined && str !== 0) {
178 var len = (str.length << 2) + 1;
179 ret = stackAlloc(len);
180 stringToUTF8(str, ret, len);
181 }
182
183 return ret;
184 },
185 "array": function (arr) {
186 var ret = stackAlloc(arr.length);
187 writeArrayToMemory(arr, ret);
188 return ret;
189 }
190 };
191
192 function convertReturnValue(ret) {
193 if (returnType === "string") { return UTF8ToString(ret); }
194 if (returnType === "boolean") { return Boolean(ret); }
195 return ret;
196 }
197
198 var func = getCFunc(ident);
199 var cArgs = [];
200 var stack = 0;
201
202 if (args) {
203 for (var i = 0; i < args.length; i++) {
204 var converter = toC[argTypes[i]];
205
206 if (converter) {
207 if (stack === 0) { stack = stackSave(); }
208 cArgs[i] = converter(args[i]);
209 } else {
210 cArgs[i] = args[i];
211 }
212 }
213 }
214
215 var ret = func.apply(null, cArgs);
216 ret = convertReturnValue(ret);
217 if (stack !== 0) { stackRestore(stack); }
218 return ret;
219 }
220
221 function cwrap(ident, returnType, argTypes, opts) {
222 argTypes = argTypes || [];
223 var numericArgs = argTypes.every(function (type) {
224 return type === "number";
225 });
226 var numericRet = returnType !== "string";
227
228 if (numericRet && numericArgs && !opts) {
229 return getCFunc(ident);
230 }
231
232 return function () {
233 return ccall(ident, returnType, argTypes, arguments, opts);
234 };
235 }
236 var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : undefined;
237
238 function UTF8ArrayToString(u8Array, idx, maxBytesToRead) {
239 var endIdx = idx + maxBytesToRead;
240 var endPtr = idx;
241
242 while (u8Array[endPtr] && !(endPtr >= endIdx)) { ++endPtr; }
243
244 if (endPtr - idx > 16 && u8Array.subarray && UTF8Decoder) {
245 return UTF8Decoder.decode(u8Array.subarray(idx, endPtr));
246 } else {
247 var str = "";
248
249 while (idx < endPtr) {
250 var u0 = u8Array[idx++];
251
252 if (!(u0 & 128)) {
253 str += String.fromCharCode(u0);
254 continue;
255 }
256
257 var u1 = u8Array[idx++] & 63;
258
259 if ((u0 & 224) == 192) {
260 str += String.fromCharCode((u0 & 31) << 6 | u1);
261 continue;
262 }
263
264 var u2 = u8Array[idx++] & 63;
265
266 if ((u0 & 240) == 224) {
267 u0 = (u0 & 15) << 12 | u1 << 6 | u2;
268 } else {
269 u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | u8Array[idx++] & 63;
270 }
271
272 if (u0 < 65536) {
273 str += String.fromCharCode(u0);
274 } else {
275 var ch = u0 - 65536;
276 str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
277 }
278 }
279 }
280
281 return str;
282 }
283
284 function UTF8ToString(ptr, maxBytesToRead) {
285 return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
286 }
287
288 function stringToUTF8Array(str, outU8Array, outIdx, maxBytesToWrite) {
289 if (!(maxBytesToWrite > 0)) { return 0; }
290 var startIdx = outIdx;
291 var endIdx = outIdx + maxBytesToWrite - 1;
292
293 for (var i = 0; i < str.length; ++i) {
294 var u = str.charCodeAt(i);
295
296 if (u >= 55296 && u <= 57343) {
297 var u1 = str.charCodeAt(++i);
298 u = 65536 + ((u & 1023) << 10) | u1 & 1023;
299 }
300
301 if (u <= 127) {
302 if (outIdx >= endIdx) { break; }
303 outU8Array[outIdx++] = u;
304 } else if (u <= 2047) {
305 if (outIdx + 1 >= endIdx) { break; }
306 outU8Array[outIdx++] = 192 | u >> 6;
307 outU8Array[outIdx++] = 128 | u & 63;
308 } else if (u <= 65535) {
309 if (outIdx + 2 >= endIdx) { break; }
310 outU8Array[outIdx++] = 224 | u >> 12;
311 outU8Array[outIdx++] = 128 | u >> 6 & 63;
312 outU8Array[outIdx++] = 128 | u & 63;
313 } else {
314 if (outIdx + 3 >= endIdx) { break; }
315 outU8Array[outIdx++] = 240 | u >> 18;
316 outU8Array[outIdx++] = 128 | u >> 12 & 63;
317 outU8Array[outIdx++] = 128 | u >> 6 & 63;
318 outU8Array[outIdx++] = 128 | u & 63;
319 }
320 }
321
322 outU8Array[outIdx] = 0;
323 return outIdx - startIdx;
324 }
325
326 function stringToUTF8(str, outPtr, maxBytesToWrite) {
327 return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
328 }
329
330 var UTF16Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf-16le") : undefined;
331
332 function writeArrayToMemory(array, buffer) {
333 HEAP8.set(array, buffer);
334 }
335
336 function alignUp(x, multiple) {
337 if (x % multiple > 0) {
338 x += multiple - x % multiple;
339 }
340
341 return x;
342 }
343
344 var buffer, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
345
346 function updateGlobalBufferAndViews(buf) {
347 buffer = buf;
348 Module["HEAP8"] = HEAP8 = new Int8Array(buf);
349 Module["HEAP16"] = HEAP16 = new Int16Array(buf);
350 Module["HEAP32"] = HEAP32 = new Int32Array(buf);
351 Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf);
352 Module["HEAPU16"] = HEAPU16 = new Uint16Array(buf);
353 Module["HEAPU32"] = HEAPU32 = new Uint32Array(buf);
354 Module["HEAPF32"] = HEAPF32 = new Float32Array(buf);
355 Module["HEAPF64"] = HEAPF64 = new Float64Array(buf);
356 }
357
358 var DYNAMIC_BASE = 5266576,
359 DYNAMICTOP_PTR = 23664;
360 var INITIAL_TOTAL_MEMORY = Module["TOTAL_MEMORY"] || 33554432;
361
362 if (Module["buffer"]) {
363 buffer = Module["buffer"];
364 } else {
365 buffer = new ArrayBuffer(INITIAL_TOTAL_MEMORY);
366 }
367
368 INITIAL_TOTAL_MEMORY = buffer.byteLength;
369 updateGlobalBufferAndViews(buffer);
370 HEAP32[DYNAMICTOP_PTR >> 2] = DYNAMIC_BASE;
371
372 function callRuntimeCallbacks(callbacks) {
373 while (callbacks.length > 0) {
374 var callback = callbacks.shift();
375
376 if (typeof callback == "function") {
377 callback();
378 continue;
379 }
380
381 var func = callback.func;
382
383 if (typeof func === "number") {
384 if (callback.arg === undefined) {
385 Module["dynCall_v"](func);
386 } else {
387 Module["dynCall_vi"](func, callback.arg);
388 }
389 } else {
390 func(callback.arg === undefined ? null : callback.arg);
391 }
392 }
393 }
394
395 var __ATPRERUN__ = [];
396 var __ATINIT__ = [];
397 var __ATMAIN__ = [];
398 var __ATPOSTRUN__ = [];
399
400 function preRun() {
401 if (Module["preRun"]) {
402 if (typeof Module["preRun"] == "function") { Module["preRun"] = [Module["preRun"]]; }
403
404 while (Module["preRun"].length) {
405 addOnPreRun(Module["preRun"].shift());
406 }
407 }
408
409 callRuntimeCallbacks(__ATPRERUN__);
410 }
411
412 function initRuntime() {
413 callRuntimeCallbacks(__ATINIT__);
414 }
415
416 function preMain() {
417 callRuntimeCallbacks(__ATMAIN__);
418 }
419
420 function postRun() {
421 if (Module["postRun"]) {
422 if (typeof Module["postRun"] == "function") { Module["postRun"] = [Module["postRun"]]; }
423
424 while (Module["postRun"].length) {
425 addOnPostRun(Module["postRun"].shift());
426 }
427 }
428
429 callRuntimeCallbacks(__ATPOSTRUN__);
430 }
431
432 function addOnPreRun(cb) {
433 __ATPRERUN__.unshift(cb);
434 }
435
436 function addOnPostRun(cb) {
437 __ATPOSTRUN__.unshift(cb);
438 }
439
440 var Math_abs = Math.abs;
441 var Math_ceil = Math.ceil;
442 var Math_floor = Math.floor;
443 var Math_min = Math.min;
444 var runDependencies = 0;
445 var runDependencyWatcher = null;
446 var dependenciesFulfilled = null;
447
448 function addRunDependency(id) {
449 runDependencies++;
450
451 if (Module["monitorRunDependencies"]) {
452 Module["monitorRunDependencies"](runDependencies);
453 }
454 }
455
456 function removeRunDependency(id) {
457 runDependencies--;
458
459 if (Module["monitorRunDependencies"]) {
460 Module["monitorRunDependencies"](runDependencies);
461 }
462
463 if (runDependencies == 0) {
464 if (runDependencyWatcher !== null) {
465 clearInterval(runDependencyWatcher);
466 runDependencyWatcher = null;
467 }
468
469 if (dependenciesFulfilled) {
470 var callback = dependenciesFulfilled;
471 dependenciesFulfilled = null;
472 callback();
473 }
474 }
475 }
476
477 Module["preloadedImages"] = {};
478 Module["preloadedAudios"] = {};
479 var memoryInitializer = null;
480 var dataURIPrefix = "data:application/octet-stream;base64,";
481
482 function isDataURI(filename) {
483 return String.prototype.startsWith ? filename.startsWith(dataURIPrefix) : filename.indexOf(dataURIPrefix) === 0;
484 }
485
486 var tempDouble;
487 var tempI64;
488 memoryInitializer = "data:application/octet-stream;base64,AAAAAAAAAAACAAAAAwAAAAEAAAAFAAAABAAAAAYAAAAAAAAAAAAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAABAAAABAAAAAMAAAAGAAAABQAAAAIAAAAAAAAAAgAAAAMAAAABAAAABAAAAAYAAAAAAAAABQAAAAMAAAAGAAAABAAAAAUAAAAAAAAAAQAAAAIAAAAEAAAABQAAAAYAAAAAAAAAAgAAAAMAAAABAAAABQAAAAIAAAAAAAAAAQAAAAMAAAAGAAAABAAAAAYAAAAAAAAABQAAAAIAAAABAAAABAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAgAAAAMAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAABgAAAAAAAAAFAAAAAAAAAAAAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAACAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAwAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAQAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAFAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABgAAAAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAAAAAAABgAAAAAAAAADAAAAAgAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAUAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAEAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAUAAAACAAAABAAAAAMAAAAIAAAA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AAAAAAAAAAAAAAAABQAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAUAAAABAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAFAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAQAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAABAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAADAAAABQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAUAAAAFAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAADAAAAAAAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAAAAAADAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAwAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAAAAAP////8DAAAAAAAAAAUAAAACAAAAAAAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAADAAAAAQAAAAAAAAABAAAAAAAAAAAAAAADAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAMAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAADAAAAAAAAAAAAAAD/////AwAAAAAAAAAFAAAAAgAAAAAAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAADAAAAAAAAAAMAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAwAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAADAAAABQAAAAEAAAAAAAAA/////wMAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAEAAAABQAAAAEAAAAAAAAAAwAAAAMAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAUAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAMAAAABAAAAAAAAAAEAAAAAAAAABQAAAAAAAAAAAAAABQAAAAUAAAAAAAAAAAAAAP////8BAAAAAAAAAAMAAAAEAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAABQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAAAAAAAAAAAAAUAAAAFAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAABQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAQAAAP//////////AQAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAIAAAAAAAAAAAAAAAEAAAACAAAABgAAAAQAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAoAAAACAAAAAAAAAAAAAAABAAAAAQAAAAUAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAIAAAAAAAAAAAAAAAEAAAADAAAABwAAAAYAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAJAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAwAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAgAAAAAAAAAAAAAAAQAAAAQAAAAIAAAACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAsAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAACAAAAAAAAAAAAAAABAAAACwAAAA8AAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAgAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAFAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcAAAACAAAAAAAAAAAAAAABAAAADAAAABAAAAAMAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA8AAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAANAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAIAAAAAAAAAAAAAAAEAAAAKAAAAEwAAAAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAA4AAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAABAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABAAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAJAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAgAAAAAAAAAAAAAAAQAAAA0AAAARAAAADQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAAAAAAAAAAAAAEAAAAOAAAAEgAAAA8AAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAABIAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAATAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAEQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABMAAAACAAAAAAAAAAAAAAABAAAA//////////8TAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABMAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAASAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABIAAAAAAAAAGAAAAAAAAAAhAAAAAAAAAB4AAAAAAAAAIAAAAAMAAAAxAAAAAQAAADAAAAADAAAAMgAAAAMAAAAIAAAAAAAAAAUAAAAFAAAACgAAAAUAAAAWAAAAAAAAABAAAAAAAAAAEgAAAAAAAAApAAAAAQAAACEAAAAAAAAAHgAAAAAAAAAEAAAAAAAAAAAAAAAFAAAAAgAAAAUAAAAPAAAAAQAAAAgAAAAAAAAABQAAAAUAAAAfAAAAAQAAABYAAAAAAAAAEAAAAAAAAAACAAAAAAAAAAYAAAAAAAAADgAAAAAAAAAKAAAAAAAAAAsAAAAAAAAAEQAAAAMAAAAYAAAAAQAAABcAAAADAAAAGQAAAAMAAAAAAAAAAAAAAAEAAAAFAAAACQAAAAUAAAAFAAAAAAAAAAIAAAAAAAAABgAAAAAAAAASAAAAAQAAAAoAAAAAAAAACwAAAAAAAAAEAAAAAQAAAAMAAAAFAAAABwAAAAUAAAAIAAAAAQAAAAAAAAAAAAAAAQAAAAUAAAAQAAAAAQAAAAUAAAAAAAAAAgAAAAAAAAAHAAAAAAAAABUAAAAAAAAAJgAAAAAAAAAJAAAAAAAAABMAAAAAAAAAIgAAAAMAAAAOAAAAAQAAABQAAAADAAAAJAAAAAMAAAADAAAAAAAAAA0AAAAFAAAAHQAAAAUAAAABAAAAAAAAAAcAAAAAAAAAFQAAAAAAAAAGAAAA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74auECWhw7+cjSACjzniv8CZ+wUhN9I/1uGEKzup6z+/GYr/04bavwmkNHp7xee/F2NMZVAA1z+82s+x2BLivwr2ytbJ9em/KwEH1sMS1r8yp/2LhTfev81i5RexJsy/BlIKPVwR5b95Wyu0/Qjnv5DjoT7YYcs/nBhKZ6zrwr8wRYS7Nebuv3OW6geh+Lu/SLrixebL3j+pcyymN9Xrv8rHIFfWehZAMBwUdlo0DECTUc17EOb2PxpVB1SWChdAzjbhb9pTDUDQhmdvECX5P9FlMKCC9+g/IIAzjELgE0DajDngMv8GQFhWDmDPjNs/y1guLh96EkAxPi8k7DIEQJCc4URlhRhA3eLKKLwkEECqpNAyTBD/P6xpjXcDiwVAFtl//cQm4z+Ibt3XKiYTQM7mCLUb3QdAoM1t8yVv7D8aLZv2Nk8UQEAJPV5nQwxAtSsfTCoE9z9TPjXLXIIWQBVanC5W9AtAYM3d7Adm9j++5mQz1FoWQBUThyaVBghAwH5muQsV7T89Q1qv82MUQJoWGOfNuBdAzrkClkmwDkDQjKq77t37Py+g0dtitsE/ZwAMTwVPEUBojepluNwBQGYbtuW+t9w/HNWIJs6MEkDTNuQUSlgEQKxktPP5TcQ/ixbLB8JjEUCwuWjXMQYCQAS/R09FkRdAowpiZjhhDkB7LmlczD/7P01iQmhhsAVAnrtTwDy84z/Z6jfQ2TgTQChOCXMnWwpAhrW3daoz8z/HYJvVPI4VQLT3ik5FcA5Angi7LOZd+z+NNVzDy5gXQBXdvVTFUA1AYNMgOeYe+T8+qHXGCwkXQKQTOKwa5AJA8gFVoEMW0T+FwzJyttIRQAEAAAD/////BwAAAP////8xAAAA/////1cBAAD/////YQkAAP////+nQQAA/////5HLAQD/////95AMAP/////B9lcAAAAAAAAAAAAAAAAAAgAAAP////8OAAAA/////2IAAAD/////rgIAAP/////CEgAA/////06DAAD/////IpcDAP/////uIRkA/////4LtrwAAAAAAAAAAAAAAAAAAAAAAAgAAAP//////////AQAAAAMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////////////////////wEAAAAAAAAAAgAAAP///////////////wMAAAD//////////////////////////////////////////////////////////wIAAAD//////////wEAAAAAAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA/////////////////////wEAAAD///////////////8CAAAA////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAA////////////////AgAAAAEAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AQAAAAIAAAD///////////////8AAAAA/////////////////////wMAAAD///////////////////////////////8CAAAA////////////////AQAAAP////////////////////8AAAAA/////////////////////wMAAAD/////////////////////////////////////////////////////AwAAAP////////////////////8AAAAAAQAAAP//////////AgAAAP//////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAP///////////////wIAAAAAAAAAAQAAAP//////////////////////////////////////////////////////////////////////////AwAAAAEAAAD//////////wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAgAAAAAAAAACAAAAAQAAAAEAAAACAAAAAgAAAAAAAAAFAAAABQAAAAAAAAACAAAAAgAAAAMAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAAAgAAAAIAAAACAAAAAAAAAAUAAAAGAAAAAAAAAAIAAAACAAAAAwAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAAAAAAAAgAAAAEAAAADAAAAAgAAAAIAAAAAAAAABQAAAAcAAAAAAAAAAgAAAAIAAAADAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAAAAAACAAAAAQAAAAQAAAACAAAAAgAAAAAAAAAFAAAACAAAAAAAAAACAAAAAgAAAAMAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAACAAAAAAAAAAUAAAAJAAAAAAAAAAIAAAACAAAAAwAAAAUAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAIAAAACAAAAAAAAAAMAAAAOAAAAAgAAAAAAAAACAAAAAwAAAAAAAAAAAAAAAgAAAAIAAAADAAAABgAAAAAAAAAAAAAAAAAAAAAAAAALAAAAAgAAAAIAAAAAAAAAAwAAAAoAAAACAAAAAAAAAAIAAAADAAAAAQAAAAAAAAACAAAAAgAAAAMAAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAACAAAAAgAAAAAAAAADAAAACwAAAAIAAAAAAAAAAgAAAAMAAAACAAAAAAAAAAIAAAACAAAAAwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAADQAAAAIAAAACAAAAAAAAAAMAAAAMAAAAAgAAAAAAAAACAAAAAwAAAAMAAAAAAAAAAgAAAAIAAAADAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAgAAAAIAAAAAAAAAAwAAAA0AAAACAAAAAAAAAAIAAAADAAAABAAAAAAAAAACAAAAAgAAAAMAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAACAAAAAgAAAAAAAAADAAAABgAAAAIAAAAAAAAAAgAAAAMAAAAPAAAAAAAAAAIAAAACAAAAAwAAAAsAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAIAAAACAAAAAAAAAAMAAAAHAAAAAgAAAAAAAAACAAAAAwAAABAAAAAAAAAAAgAAAAIAAAADAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAAgAAAAIAAAAAAAAAAwAAAAgAAAACAAAAAAAAAAIAAAADAAAAEQAAAAAAAAACAAAAAgAAAAMAAAANAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAACAAAAAgAAAAAAAAADAAAACQAAAAIAAAAAAAAAAgAAAAMAAAASAAAAAAAAAAIAAAACAAAAAwAAAA4AAAAAAAAAAAAAAAAAAAAAAAAACQAAAAIAAAACAAAAAAAAAAMAAAAFAAAAAgAAAAAAAAACAAAAAwAAABMAAAAAAAAAAgAAAAIAAAADAAAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////////////////////wAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAUAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////////////////////////////////////8AAAAAAQAAAAEAAAABAAAAAQAAAAEAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAAFAAAAAQAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAEAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAAAAAABAAEAAAEBAAAAAAABAAAAAQAAAAEAAQAAAAAAAAAAAAAAAAAAAABhbGdvcy5jAHBvbHlmaWxsAGFkamFjZW50RmFjZURpclt0bXBGaWprLmZhY2VdW2ZpamsuZmFjZV0gPT0gS0kAZmFjZWlqay5jAF9mYWNlSWprUGVudFRvR2VvQm91bmRhcnkAYWRqYWNlbnRGYWNlRGlyW2NlbnRlcklKSy5mYWNlXVtmYWNlMl0gPT0gS0kAX2ZhY2VJamtUb0dlb0JvdW5kYXJ5AHBvbHlnb24tPm5leHQgPT0gTlVMTABsaW5rZWRHZW8uYwBhZGROZXdMaW5rZWRQb2x5Z29uAG5leHQgIT0gTlVMTABsb29wICE9IE5VTEwAYWRkTmV3TGlua2VkTG9vcABwb2x5Z29uLT5maXJzdCA9PSBOVUxMAGFkZExpbmtlZExvb3AAY29vcmQgIT0gTlVMTABhZGRMaW5rZWRDb29yZABsb29wLT5maXJzdCA9PSBOVUxMAGlubmVyTG9vcHMgIT0gTlVMTABub3JtYWxpemVNdWx0aVBvbHlnb24AYmJveGVzICE9IE5VTEwAY2FuZGlkYXRlcyAhPSBOVUxMAGZpbmRQb2x5Z29uRm9ySG9sZQBjYW5kaWRhdGVCQm94ZXMgIT0gTlVMTAByZXZEaXIgIT0gSU5WQUxJRF9ESUdJVABsb2NhbGlqLmMAaDNUb0xvY2FsSWprAGJhc2VDZWxsICE9IG9yaWdpbkJhc2VDZWxsACEob3JpZ2luT25QZW50ICYmIGluZGV4T25QZW50KQBwZW50YWdvblJvdGF0aW9ucyA+PSAwAGRpcmVjdGlvblJvdGF0aW9ucyA+PSAwAGJhc2VDZWxsID09IG9yaWdpbkJhc2VDZWxsAGJhc2VDZWxsICE9IElOVkFMSURfQkFTRV9DRUxMAGxvY2FsSWprVG9IMwAhX2lzQmFzZUNlbGxQZW50YWdvbihiYXNlQ2VsbCkAYmFzZUNlbGxSb3RhdGlvbnMgPj0gMAB3aXRoaW5QZW50YWdvblJvdGF0aW9ucyA+PSAwAGdyYXBoLT5idWNrZXRzICE9IE5VTEwAdmVydGV4R3JhcGguYwBpbml0VmVydGV4R3JhcGgAbm9kZSAhPSBOVUxMAGFkZFZlcnRleE5vZGU=";
489 var tempDoublePtr = 23680;
490
491 function demangle(func) {
492 return func;
493 }
494
495 function demangleAll(text) {
496 var regex = /\b__Z[\w\d_]+/g;
497 return text.replace(regex, function (x) {
498 var y = demangle(x);
499 return x === y ? x : y + " [" + x + "]";
500 });
501 }
502
503 function jsStackTrace() {
504 var err = new Error();
505
506 if (!err.stack) {
507 try {
508 throw new Error(0);
509 } catch (e) {
510 err = e;
511 }
512
513 if (!err.stack) {
514 return "(no stack trace available)";
515 }
516 }
517
518 return err.stack.toString();
519 }
520
521 function stackTrace() {
522 var js = jsStackTrace();
523 if (Module["extraStackTrace"]) { js += "\n" + Module["extraStackTrace"](); }
524 return demangleAll(js);
525 }
526
527 function ___assert_fail(condition, filename, line, func) {
528 abort("Assertion failed: " + UTF8ToString(condition) + ", at: " + [filename ? UTF8ToString(filename) : "unknown filename", line, func ? UTF8ToString(func) : "unknown function"]);
529 }
530
531 function _emscripten_get_heap_size() {
532 return HEAP8.length;
533 }
534
535 function _emscripten_memcpy_big(dest, src, num) {
536 HEAPU8.set(HEAPU8.subarray(src, src + num), dest);
537 }
538
539 function ___setErrNo(value) {
540 if (Module["___errno_location"]) { HEAP32[Module["___errno_location"]() >> 2] = value; }
541 return value;
542 }
543
544 function abortOnCannotGrowMemory(requestedSize) {
545 abort("OOM");
546 }
547
548 function emscripten_realloc_buffer(size) {
549 try {
550 var newBuffer = new ArrayBuffer(size);
551 if (newBuffer.byteLength != size) { return; }
552 new Int8Array(newBuffer).set(HEAP8);
553
554 _emscripten_replace_memory(newBuffer);
555
556 updateGlobalBufferAndViews(newBuffer);
557 return 1;
558 } catch (e) {}
559 }
560
561 function _emscripten_resize_heap(requestedSize) {
562 var oldSize = _emscripten_get_heap_size();
563
564 var PAGE_MULTIPLE = 16777216;
565 var LIMIT = 2147483648 - PAGE_MULTIPLE;
566
567 if (requestedSize > LIMIT) {
568 return false;
569 }
570
571 var MIN_TOTAL_MEMORY = 16777216;
572 var newSize = Math.max(oldSize, MIN_TOTAL_MEMORY);
573
574 while (newSize < requestedSize) {
575 if (newSize <= 536870912) {
576 newSize = alignUp(2 * newSize, PAGE_MULTIPLE);
577 } else {
578 newSize = Math.min(alignUp((3 * newSize + 2147483648) / 4, PAGE_MULTIPLE), LIMIT);
579 }
580 }
581
582 var replacement = emscripten_realloc_buffer(newSize);
583
584 if (!replacement) {
585 return false;
586 }
587
588 return true;
589 }
590
591 var decodeBase64 = typeof atob === "function" ? atob : function (input) {
592 var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
593 var output = "";
594 var chr1, chr2, chr3;
595 var enc1, enc2, enc3, enc4;
596 var i = 0;
597 input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
598
599 do {
600 enc1 = keyStr.indexOf(input.charAt(i++));
601 enc2 = keyStr.indexOf(input.charAt(i++));
602 enc3 = keyStr.indexOf(input.charAt(i++));
603 enc4 = keyStr.indexOf(input.charAt(i++));
604 chr1 = enc1 << 2 | enc2 >> 4;
605 chr2 = (enc2 & 15) << 4 | enc3 >> 2;
606 chr3 = (enc3 & 3) << 6 | enc4;
607 output = output + String.fromCharCode(chr1);
608
609 if (enc3 !== 64) {
610 output = output + String.fromCharCode(chr2);
611 }
612
613 if (enc4 !== 64) {
614 output = output + String.fromCharCode(chr3);
615 }
616 } while (i < input.length);
617
618 return output;
619 };
620
621 function intArrayFromBase64(s) {
622 try {
623 var decoded = decodeBase64(s);
624 var bytes = new Uint8Array(decoded.length);
625
626 for (var i = 0; i < decoded.length; ++i) {
627 bytes[i] = decoded.charCodeAt(i);
628 }
629
630 return bytes;
631 } catch (_) {
632 throw new Error("Converting base64 string to bytes failed.");
633 }
634 }
635
636 function tryParseAsDataURI(filename) {
637 if (!isDataURI(filename)) {
638 return;
639 }
640
641 return intArrayFromBase64(filename.slice(dataURIPrefix.length));
642 }
643
644 var asmGlobalArg = {
645 "Math": Math,
646 "Int8Array": Int8Array,
647 "Int32Array": Int32Array,
648 "Uint8Array": Uint8Array,
649 "Float32Array": Float32Array,
650 "Float64Array": Float64Array
651 };
652 var asmLibraryArg = {
653 "a": abort,
654 "b": setTempRet0,
655 "c": getTempRet0,
656 "d": ___assert_fail,
657 "e": ___setErrNo,
658 "f": _emscripten_get_heap_size,
659 "g": _emscripten_memcpy_big,
660 "h": _emscripten_resize_heap,
661 "i": abortOnCannotGrowMemory,
662 "j": demangle,
663 "k": demangleAll,
664 "l": emscripten_realloc_buffer,
665 "m": jsStackTrace,
666 "n": stackTrace,
667 "o": tempDoublePtr,
668 "p": DYNAMICTOP_PTR
669 }; // EMSCRIPTEN_START_ASM
670
671 var asm =
672 /** @suppress {uselessCode} */
673 function (global, env, buffer) {
674 "almost asm";
675
676 var a = new global.Int8Array(buffer),
677 b = new global.Int32Array(buffer),
678 c = new global.Uint8Array(buffer),
679 d = new global.Float32Array(buffer),
680 e = new global.Float64Array(buffer),
681 g = env.p | 0,
682 p = global.Math.floor,
683 q = global.Math.abs,
684 r = global.Math.sqrt,
685 s = global.Math.pow,
686 t = global.Math.cos,
687 u = global.Math.sin,
688 v = global.Math.tan,
689 w = global.Math.acos,
690 x = global.Math.asin,
691 y = global.Math.atan,
692 z = global.Math.atan2,
693 A = global.Math.ceil,
694 B = global.Math.imul,
695 C = global.Math.clz32,
696 E = env.b,
697 F = env.c,
698 G = env.d,
699 H = env.e,
700 I = env.f,
701 J = env.g,
702 K = env.h,
703 L = env.i,
704 R = 23696;
705
706 function U(newBuffer) {
707 a = new Int8Array(newBuffer);
708 c = new Uint8Array(newBuffer);
709 b = new Int32Array(newBuffer);
710 d = new Float32Array(newBuffer);
711 e = new Float64Array(newBuffer);
712 buffer = newBuffer;
713 return true;
714 } // EMSCRIPTEN_START_FUNCS
715
716
717 function V(a) {
718 a = a | 0;
719 var b = 0;
720 b = R;
721 R = R + a | 0;
722 R = R + 15 & -16;
723 return b | 0;
724 }
725
726 function W() {
727 return R | 0;
728 }
729
730 function X(a) {
731 a = a | 0;
732 R = a;
733 }
734
735 function Y(a, b) {
736 a = a | 0;
737 b = b | 0;
738 R = a;
739 }
740
741 function Z(a) {
742 a = a | 0;
743 return (B(a * 3 | 0, a + 1 | 0) | 0) + 1 | 0;
744 }
745
746 function _(a, b, c, d) {
747 a = a | 0;
748 b = b | 0;
749 c = c | 0;
750 d = d | 0;
751 var e = 0,
752 f = 0,
753 g = 0;
754 e = (B(c * 3 | 0, c + 1 | 0) | 0) + 1 | 0;
755 f = e << 2;
756 g = Ic(f) | 0;
757
758 if (!(aa(a, b, c, d, g) | 0)) {
759 Jc(g);
760 return;
761 }
762
763 Uc(d | 0, 0, e << 3 | 0) | 0;
764 Uc(g | 0, 0, f | 0) | 0;
765 ba(a, b, c, d, g, e, 0);
766 Jc(g);
767 return;
768 }
769
770 function $(a, b, c, d, e) {
771 a = a | 0;
772 b = b | 0;
773 c = c | 0;
774 d = d | 0;
775 e = e | 0;
776 var f = 0;
777 f = (B(c * 3 | 0, c + 1 | 0) | 0) + 1 | 0;
778 if (!(aa(a, b, c, d, e) | 0)) { return; }
779 Uc(d | 0, 0, f << 3 | 0) | 0;
780 Uc(e | 0, 0, f << 2 | 0) | 0;
781 ba(a, b, c, d, e, f, 0);
782 return;
783 }
784
785 function aa(a, c, d, e, f) {
786 a = a | 0;
787 c = c | 0;
788 d = d | 0;
789 e = e | 0;
790 f = f | 0;
791 var g = 0,
792 h = 0,
793 i = 0,
794 j = 0,
795 k = 0,
796 l = 0,
797 m = 0,
798 n = 0,
799 o = 0;
800 o = R;
801 R = R + 16 | 0;
802 n = o;
803 g = e;
804 b[g >> 2] = a;
805 b[g + 4 >> 2] = c;
806 g = (f | 0) != 0;
807 if (g) { b[f >> 2] = 0; }
808
809 if (tb(a, c) | 0) {
810 n = 1;
811 R = o;
812 return n | 0;
813 }
814
815 b[n >> 2] = 0;
816
817 a: do { if ((d | 0) >= 1) {
818 if (g) {
819 k = 0;
820 l = 1;
821 m = 1;
822 h = 0;
823 g = a;
824
825 while (1) {
826 if (!(h | k)) {
827 g = ca(g, c, 4, n) | 0;
828 c = F() | 0;
829
830 if ((g | 0) == 0 & (c | 0) == 0) {
831 g = 2;
832 break a;
833 }
834
835 if (tb(g, c) | 0) {
836 g = 1;
837 break a;
838 }
839 }
840
841 g = ca(g, c, b[16 + (k << 2) >> 2] | 0, n) | 0;
842 c = F() | 0;
843
844 if ((g | 0) == 0 & (c | 0) == 0) {
845 g = 2;
846 break a;
847 }
848
849 a = e + (m << 3) | 0;
850 b[a >> 2] = g;
851 b[a + 4 >> 2] = c;
852 b[f + (m << 2) >> 2] = l;
853 h = h + 1 | 0;
854 a = (h | 0) == (l | 0);
855 i = k + 1 | 0;
856 j = (i | 0) == 6;
857
858 if (tb(g, c) | 0) {
859 g = 1;
860 break a;
861 }
862
863 l = l + (j & a & 1) | 0;
864
865 if ((l | 0) > (d | 0)) {
866 g = 0;
867 break;
868 } else {
869 k = a ? j ? 0 : i : k;
870 m = m + 1 | 0;
871 h = a ? 0 : h;
872 }
873 }
874 } else {
875 k = 0;
876 l = 1;
877 m = 1;
878 h = 0;
879 g = a;
880
881 while (1) {
882 if (!(h | k)) {
883 g = ca(g, c, 4, n) | 0;
884 c = F() | 0;
885
886 if ((g | 0) == 0 & (c | 0) == 0) {
887 g = 2;
888 break a;
889 }
890
891 if (tb(g, c) | 0) {
892 g = 1;
893 break a;
894 }
895 }
896
897 g = ca(g, c, b[16 + (k << 2) >> 2] | 0, n) | 0;
898 c = F() | 0;
899
900 if ((g | 0) == 0 & (c | 0) == 0) {
901 g = 2;
902 break a;
903 }
904
905 a = e + (m << 3) | 0;
906 b[a >> 2] = g;
907 b[a + 4 >> 2] = c;
908 h = h + 1 | 0;
909 a = (h | 0) == (l | 0);
910 i = k + 1 | 0;
911 j = (i | 0) == 6;
912
913 if (tb(g, c) | 0) {
914 g = 1;
915 break a;
916 }
917
918 l = l + (j & a & 1) | 0;
919
920 if ((l | 0) > (d | 0)) {
921 g = 0;
922 break;
923 } else {
924 k = a ? j ? 0 : i : k;
925 m = m + 1 | 0;
926 h = a ? 0 : h;
927 }
928 }
929 }
930 } else { g = 0; } } while (0);
931
932 n = g;
933 R = o;
934 return n | 0;
935 }
936
937 function ba(a, c, d, e, f, g, h) {
938 a = a | 0;
939 c = c | 0;
940 d = d | 0;
941 e = e | 0;
942 f = f | 0;
943 g = g | 0;
944 h = h | 0;
945 var i = 0,
946 j = 0,
947 k = 0,
948 l = 0,
949 m = 0,
950 n = 0,
951 o = 0;
952 m = R;
953 R = R + 16 | 0;
954 l = m;
955
956 if ((a | 0) == 0 & (c | 0) == 0) {
957 R = m;
958 return;
959 }
960
961 i = Pc(a | 0, c | 0, g | 0, ((g | 0) < 0) << 31 >> 31 | 0) | 0;
962 F() | 0;
963 j = e + (i << 3) | 0;
964 n = j;
965 o = b[n >> 2] | 0;
966 n = b[n + 4 >> 2] | 0;
967 k = (o | 0) == (a | 0) & (n | 0) == (c | 0);
968 if (!((o | 0) == 0 & (n | 0) == 0 | k)) { do {
969 i = (i + 1 | 0) % (g | 0) | 0;
970 j = e + (i << 3) | 0;
971 o = j;
972 n = b[o >> 2] | 0;
973 o = b[o + 4 >> 2] | 0;
974 k = (n | 0) == (a | 0) & (o | 0) == (c | 0);
975 } while (!((n | 0) == 0 & (o | 0) == 0 | k)); }
976 i = f + (i << 2) | 0;
977
978 if (k ? (b[i >> 2] | 0) <= (h | 0) : 0) {
979 R = m;
980 return;
981 }
982
983 o = j;
984 b[o >> 2] = a;
985 b[o + 4 >> 2] = c;
986 b[i >> 2] = h;
987
988 if ((h | 0) >= (d | 0)) {
989 R = m;
990 return;
991 }
992
993 o = h + 1 | 0;
994 b[l >> 2] = 0;
995 n = ca(a, c, 2, l) | 0;
996 ba(n, F() | 0, d, e, f, g, o);
997 b[l >> 2] = 0;
998 n = ca(a, c, 3, l) | 0;
999 ba(n, F() | 0, d, e, f, g, o);
1000 b[l >> 2] = 0;
1001 n = ca(a, c, 1, l) | 0;
1002 ba(n, F() | 0, d, e, f, g, o);
1003 b[l >> 2] = 0;
1004 n = ca(a, c, 5, l) | 0;
1005 ba(n, F() | 0, d, e, f, g, o);
1006 b[l >> 2] = 0;
1007 n = ca(a, c, 4, l) | 0;
1008 ba(n, F() | 0, d, e, f, g, o);
1009 b[l >> 2] = 0;
1010 n = ca(a, c, 6, l) | 0;
1011 ba(n, F() | 0, d, e, f, g, o);
1012 R = m;
1013 return;
1014 }
1015
1016 function ca(a, c, d, e) {
1017 a = a | 0;
1018 c = c | 0;
1019 d = d | 0;
1020 e = e | 0;
1021 var f = 0,
1022 g = 0,
1023 h = 0,
1024 i = 0,
1025 j = 0,
1026 k = 0,
1027 l = 0,
1028 m = 0,
1029 n = 0,
1030 o = 0;
1031
1032 if ((b[e >> 2] | 0) > 0) {
1033 f = 0;
1034
1035 do {
1036 d = Ka(d) | 0;
1037 f = f + 1 | 0;
1038 } while ((f | 0) < (b[e >> 2] | 0));
1039 }
1040
1041 i = Qc(a | 0, c | 0, 45) | 0;
1042 F() | 0;
1043 j = i & 127;
1044 g = zb(a, c) | 0;
1045 f = Qc(a | 0, c | 0, 52) | 0;
1046 F() | 0;
1047 f = f & 15;
1048
1049 a: do { if (!f) { h = 6; }else { while (1) {
1050 m = (15 - f | 0) * 3 | 0;
1051 n = Qc(a | 0, c | 0, m | 0) | 0;
1052 F() | 0;
1053 n = n & 7;
1054 o = (Fb(f) | 0) == 0;
1055 f = f + -1 | 0;
1056 l = Rc(7, 0, m | 0) | 0;
1057 c = c & ~(F() | 0);
1058 m = Rc(b[(o ? 464 : 48) + (n * 28 | 0) + (d << 2) >> 2] | 0, 0, m | 0) | 0;
1059 k = F() | 0;
1060 d = b[(o ? 672 : 256) + (n * 28 | 0) + (d << 2) >> 2] | 0;
1061 a = m | a & ~l;
1062 c = k | c;
1063
1064 if (!d) {
1065 d = 0;
1066 break a;
1067 }
1068
1069 if (!f) {
1070 h = 6;
1071 break;
1072 }
1073 } } } while (0);
1074
1075 if ((h | 0) == 6) {
1076 o = b[880 + (j * 28 | 0) + (d << 2) >> 2] | 0;
1077 n = Rc(o | 0, 0, 45) | 0;
1078 a = n | a;
1079 c = F() | 0 | c & -1040385;
1080 d = b[4304 + (j * 28 | 0) + (d << 2) >> 2] | 0;
1081
1082 if ((o & 127 | 0) == 127) {
1083 o = Rc(b[880 + (j * 28 | 0) + 20 >> 2] | 0, 0, 45) | 0;
1084 c = F() | 0 | c & -1040385;
1085 d = b[4304 + (j * 28 | 0) + 20 >> 2] | 0;
1086 a = Bb(o | a, c) | 0;
1087 c = F() | 0;
1088 b[e >> 2] = (b[e >> 2] | 0) + 1;
1089 }
1090 }
1091
1092 h = Qc(a | 0, c | 0, 45) | 0;
1093 F() | 0;
1094 h = h & 127;
1095
1096 b: do { if (!(ia(h) | 0)) {
1097 if ((d | 0) > 0) {
1098 f = 0;
1099
1100 do {
1101 a = Bb(a, c) | 0;
1102 c = F() | 0;
1103 f = f + 1 | 0;
1104 } while ((f | 0) != (d | 0));
1105 }
1106 } else {
1107 c: do { if ((zb(a, c) | 0) == 1) {
1108 if ((j | 0) != (h | 0)) { if (ma(h, b[7728 + (j * 28 | 0) >> 2] | 0) | 0) {
1109 a = Db(a, c) | 0;
1110 g = 1;
1111 c = F() | 0;
1112 break;
1113 } else {
1114 a = Bb(a, c) | 0;
1115 g = 1;
1116 c = F() | 0;
1117 break;
1118 } }
1119
1120 switch (g | 0) {
1121 case 5:
1122 {
1123 a = Db(a, c) | 0;
1124 c = F() | 0;
1125 b[e >> 2] = (b[e >> 2] | 0) + 5;
1126 g = 0;
1127 break c;
1128 }
1129
1130 case 3:
1131 {
1132 a = Bb(a, c) | 0;
1133 c = F() | 0;
1134 b[e >> 2] = (b[e >> 2] | 0) + 1;
1135 g = 0;
1136 break c;
1137 }
1138
1139 default:
1140 {
1141 n = 0;
1142 o = 0;
1143 E(n | 0);
1144 return o | 0;
1145 }
1146 }
1147 } else { g = 0; } } while (0);
1148
1149 if ((d | 0) > 0) {
1150 f = 0;
1151
1152 do {
1153 a = Ab(a, c) | 0;
1154 c = F() | 0;
1155 f = f + 1 | 0;
1156 } while ((f | 0) != (d | 0));
1157 }
1158
1159 if ((j | 0) != (h | 0)) {
1160 if (!(ja(h) | 0)) {
1161 if ((g | 0) != 0 | (zb(a, c) | 0) != 5) { break; }
1162 b[e >> 2] = (b[e >> 2] | 0) + 1;
1163 break;
1164 }
1165
1166 switch (i & 127) {
1167 case 8:
1168 case 118:
1169 break b;
1170
1171 default:
1172
1173 }
1174
1175 if ((zb(a, c) | 0) != 3) { b[e >> 2] = (b[e >> 2] | 0) + 1; }
1176 }
1177 } } while (0);
1178
1179 b[e >> 2] = ((b[e >> 2] | 0) + d | 0) % 6 | 0;
1180 n = c;
1181 o = a;
1182 E(n | 0);
1183 return o | 0;
1184 }
1185
1186 function da(a, c, d, e) {
1187 a = a | 0;
1188 c = c | 0;
1189 d = d | 0;
1190 e = e | 0;
1191 var f = 0,
1192 g = 0,
1193 h = 0,
1194 i = 0,
1195 j = 0,
1196 k = 0,
1197 l = 0,
1198 m = 0;
1199 m = R;
1200 R = R + 16 | 0;
1201 l = m;
1202
1203 if (!d) {
1204 l = e;
1205 b[l >> 2] = a;
1206 b[l + 4 >> 2] = c;
1207 l = 0;
1208 R = m;
1209 return l | 0;
1210 }
1211
1212 b[l >> 2] = 0;
1213
1214 a: do { if (!(tb(a, c) | 0)) {
1215 g = (d | 0) > 0;
1216
1217 if (g) {
1218 f = 0;
1219 k = a;
1220
1221 do {
1222 k = ca(k, c, 4, l) | 0;
1223 c = F() | 0;
1224
1225 if ((k | 0) == 0 & (c | 0) == 0) {
1226 a = 2;
1227 break a;
1228 }
1229
1230 f = f + 1 | 0;
1231
1232 if (tb(k, c) | 0) {
1233 a = 1;
1234 break a;
1235 }
1236 } while ((f | 0) < (d | 0));
1237
1238 j = e;
1239 b[j >> 2] = k;
1240 b[j + 4 >> 2] = c;
1241 j = d + -1 | 0;
1242
1243 if (g) {
1244 g = 0;
1245 h = 1;
1246 f = k;
1247 a = c;
1248
1249 do {
1250 f = ca(f, a, 2, l) | 0;
1251 a = F() | 0;
1252
1253 if ((f | 0) == 0 & (a | 0) == 0) {
1254 a = 2;
1255 break a;
1256 }
1257
1258 i = e + (h << 3) | 0;
1259 b[i >> 2] = f;
1260 b[i + 4 >> 2] = a;
1261 h = h + 1 | 0;
1262
1263 if (tb(f, a) | 0) {
1264 a = 1;
1265 break a;
1266 }
1267
1268 g = g + 1 | 0;
1269 } while ((g | 0) < (d | 0));
1270
1271 i = 0;
1272 g = h;
1273
1274 do {
1275 f = ca(f, a, 3, l) | 0;
1276 a = F() | 0;
1277
1278 if ((f | 0) == 0 & (a | 0) == 0) {
1279 a = 2;
1280 break a;
1281 }
1282
1283 h = e + (g << 3) | 0;
1284 b[h >> 2] = f;
1285 b[h + 4 >> 2] = a;
1286 g = g + 1 | 0;
1287
1288 if (tb(f, a) | 0) {
1289 a = 1;
1290 break a;
1291 }
1292
1293 i = i + 1 | 0;
1294 } while ((i | 0) < (d | 0));
1295
1296 h = 0;
1297
1298 do {
1299 f = ca(f, a, 1, l) | 0;
1300 a = F() | 0;
1301
1302 if ((f | 0) == 0 & (a | 0) == 0) {
1303 a = 2;
1304 break a;
1305 }
1306
1307 i = e + (g << 3) | 0;
1308 b[i >> 2] = f;
1309 b[i + 4 >> 2] = a;
1310 g = g + 1 | 0;
1311
1312 if (tb(f, a) | 0) {
1313 a = 1;
1314 break a;
1315 }
1316
1317 h = h + 1 | 0;
1318 } while ((h | 0) < (d | 0));
1319
1320 h = 0;
1321
1322 do {
1323 f = ca(f, a, 5, l) | 0;
1324 a = F() | 0;
1325
1326 if ((f | 0) == 0 & (a | 0) == 0) {
1327 a = 2;
1328 break a;
1329 }
1330
1331 i = e + (g << 3) | 0;
1332 b[i >> 2] = f;
1333 b[i + 4 >> 2] = a;
1334 g = g + 1 | 0;
1335
1336 if (tb(f, a) | 0) {
1337 a = 1;
1338 break a;
1339 }
1340
1341 h = h + 1 | 0;
1342 } while ((h | 0) < (d | 0));
1343
1344 h = 0;
1345
1346 do {
1347 f = ca(f, a, 4, l) | 0;
1348 a = F() | 0;
1349
1350 if ((f | 0) == 0 & (a | 0) == 0) {
1351 a = 2;
1352 break a;
1353 }
1354
1355 i = e + (g << 3) | 0;
1356 b[i >> 2] = f;
1357 b[i + 4 >> 2] = a;
1358 g = g + 1 | 0;
1359
1360 if (tb(f, a) | 0) {
1361 a = 1;
1362 break a;
1363 }
1364
1365 h = h + 1 | 0;
1366 } while ((h | 0) < (d | 0));
1367
1368 h = 0;
1369
1370 while (1) {
1371 f = ca(f, a, 6, l) | 0;
1372 a = F() | 0;
1373
1374 if ((f | 0) == 0 & (a | 0) == 0) {
1375 a = 2;
1376 break a;
1377 }
1378
1379 if ((h | 0) != (j | 0)) {
1380 i = e + (g << 3) | 0;
1381 b[i >> 2] = f;
1382 b[i + 4 >> 2] = a;
1383 if (!(tb(f, a) | 0)) { g = g + 1 | 0; }else {
1384 a = 1;
1385 break a;
1386 }
1387 }
1388
1389 h = h + 1 | 0;
1390
1391 if ((h | 0) >= (d | 0)) {
1392 h = k;
1393 g = c;
1394 break;
1395 }
1396 }
1397 } else {
1398 h = k;
1399 f = k;
1400 g = c;
1401 a = c;
1402 }
1403 } else {
1404 h = e;
1405 b[h >> 2] = a;
1406 b[h + 4 >> 2] = c;
1407 h = a;
1408 f = a;
1409 g = c;
1410 a = c;
1411 }
1412
1413 a = ((h | 0) != (f | 0) | (g | 0) != (a | 0)) & 1;
1414 } else { a = 1; } } while (0);
1415
1416 l = a;
1417 R = m;
1418 return l | 0;
1419 }
1420
1421 function ea(a, b) {
1422 a = a | 0;
1423 b = b | 0;
1424 var c = 0,
1425 d = 0;
1426 c = R;
1427 R = R + 32 | 0;
1428 d = c;
1429 jc(a, d);
1430 b = ua(d, b) | 0;
1431 b = (B(b * 3 | 0, b + 1 | 0) | 0) + 1 | 0;
1432 R = c;
1433 return b | 0;
1434 }
1435
1436 function fa(a, c, d) {
1437 a = a | 0;
1438 c = c | 0;
1439 d = d | 0;
1440 var f = 0,
1441 g = 0,
1442 h = 0,
1443 i = 0,
1444 j = 0,
1445 k = 0,
1446 l = 0,
1447 m = 0,
1448 n = 0,
1449 o = 0.0;
1450 n = R;
1451 R = R + 32 | 0;
1452 f = n + 16 | 0;
1453 l = n;
1454 m = Ic((b[a + 8 >> 2] << 5) + 32 | 0) | 0;
1455 if (!m) { G(22487, 22096, 678, 22104); }
1456 kc(a, m);
1457 i = ua(m, c) | 0;
1458 j = B(i * 3 | 0, i + 1 | 0) | 0;
1459 k = j + 1 | 0;
1460 sa(m, f);
1461 c = Gb(f, c) | 0;
1462 f = F() | 0;
1463 g = k << 2;
1464 h = Ic(g) | 0;
1465
1466 if (aa(c, f, i, d, h) | 0) {
1467 Uc(d | 0, 0, k << 3 | 0) | 0;
1468 Uc(h | 0, 0, g | 0) | 0;
1469 ba(c, f, i, d, h, k, 0);
1470 }
1471
1472 Jc(h);
1473
1474 if ((j | 0) < 0) {
1475 Jc(m);
1476 R = n;
1477 return;
1478 }
1479
1480 f = l + 8 | 0;
1481 c = 0;
1482
1483 do {
1484 g = d + (c << 3) | 0;
1485 i = g;
1486 h = b[i >> 2] | 0;
1487 i = b[i + 4 >> 2] | 0;
1488
1489 if (!((h | 0) == 0 & (i | 0) == 0) ? (Jb(h, i, l), o = +eb(+e[l >> 3]), e[l >> 3] = o, o = +fb(+e[f >> 3]), e[f >> 3] = o, !(lc(a, m, l) | 0)) : 0) {
1490 j = g;
1491 b[j >> 2] = 0;
1492 b[j + 4 >> 2] = 0;
1493 }
1494
1495 c = c + 1 | 0;
1496 } while ((c | 0) != (k | 0));
1497
1498 Jc(m);
1499 R = n;
1500 return;
1501 }
1502
1503 function ga(a, c, d) {
1504 a = a | 0;
1505 c = c | 0;
1506 d = d | 0;
1507 var e = 0,
1508 f = 0,
1509 g = 0,
1510 h = 0,
1511 i = 0,
1512 j = 0,
1513 k = 0;
1514 k = R;
1515 R = R + 176 | 0;
1516 j = k;
1517
1518 if ((c | 0) < 1) {
1519 yc(d, 0, 0);
1520 R = k;
1521 return;
1522 }
1523
1524 h = a;
1525 h = Qc(b[h >> 2] | 0, b[h + 4 >> 2] | 0, 52) | 0;
1526 F() | 0;
1527 yc(d, (c | 0) > 6 ? c : 6, h & 15);
1528 h = 0;
1529
1530 do {
1531 e = a + (h << 3) | 0;
1532 Kb(b[e >> 2] | 0, b[e + 4 >> 2] | 0, j);
1533 e = b[j >> 2] | 0;
1534
1535 if ((e | 0) > 0) {
1536 i = 0;
1537
1538 do {
1539 g = j + 8 + (i << 4) | 0;
1540 i = i + 1 | 0;
1541 e = j + 8 + (((i | 0) % (e | 0) | 0) << 4) | 0;
1542 f = Dc(d, e, g) | 0;
1543 if (!f) { Cc(d, g, e) | 0; }else { Bc(d, f) | 0; }
1544 e = b[j >> 2] | 0;
1545 } while ((i | 0) < (e | 0));
1546 }
1547
1548 h = h + 1 | 0;
1549 } while ((h | 0) != (c | 0));
1550
1551 R = k;
1552 return;
1553 }
1554
1555 function ha(a, c, d) {
1556 a = a | 0;
1557 c = c | 0;
1558 d = d | 0;
1559 var e = 0,
1560 f = 0,
1561 g = 0,
1562 h = 0;
1563 g = R;
1564 R = R + 32 | 0;
1565 e = g;
1566 f = g + 16 | 0;
1567 ga(a, c, f);
1568 b[d >> 2] = 0;
1569 b[d + 4 >> 2] = 0;
1570 b[d + 8 >> 2] = 0;
1571 a = Ac(f) | 0;
1572
1573 if (!a) {
1574 _b(d) | 0;
1575 zc(f);
1576 R = g;
1577 return;
1578 }
1579
1580 do {
1581 c = Xb(d) | 0;
1582
1583 do {
1584 Yb(c, a) | 0;
1585 h = a + 16 | 0;
1586 b[e >> 2] = b[h >> 2];
1587 b[e + 4 >> 2] = b[h + 4 >> 2];
1588 b[e + 8 >> 2] = b[h + 8 >> 2];
1589 b[e + 12 >> 2] = b[h + 12 >> 2];
1590 Bc(f, a) | 0;
1591 a = Ec(f, e) | 0;
1592 } while ((a | 0) != 0);
1593
1594 a = Ac(f) | 0;
1595 } while ((a | 0) != 0);
1596
1597 _b(d) | 0;
1598 zc(f);
1599 R = g;
1600 return;
1601 }
1602
1603 function ia(a) {
1604 a = a | 0;
1605 return b[7728 + (a * 28 | 0) + 16 >> 2] | 0;
1606 }
1607
1608 function ja(a) {
1609 a = a | 0;
1610 return (a | 0) == 4 | (a | 0) == 117 | 0;
1611 }
1612
1613 function ka(a) {
1614 a = a | 0;
1615 return b[11152 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) >> 2] | 0;
1616 }
1617
1618 function la(a) {
1619 a = a | 0;
1620 return b[11152 + ((b[a >> 2] | 0) * 216 | 0) + ((b[a + 4 >> 2] | 0) * 72 | 0) + ((b[a + 8 >> 2] | 0) * 24 | 0) + (b[a + 12 >> 2] << 3) + 4 >> 2] | 0;
1621 }
1622
1623 function ma(a, c) {
1624 a = a | 0;
1625 c = c | 0;
1626
1627 if ((b[7728 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {
1628 c = 1;
1629 return c | 0;
1630 }
1631
1632 c = (b[7728 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0);
1633 return c | 0;
1634 }
1635
1636 function na(a, c) {
1637 a = a | 0;
1638 c = c | 0;
1639 return b[880 + (a * 28 | 0) + (c << 2) >> 2] | 0;
1640 }
1641
1642 function oa(a, c) {
1643 a = a | 0;
1644 c = c | 0;
1645
1646 if ((b[880 + (a * 28 | 0) >> 2] | 0) == (c | 0)) {
1647 c = 0;
1648 return c | 0;
1649 }
1650
1651 if ((b[880 + (a * 28 | 0) + 4 >> 2] | 0) == (c | 0)) {
1652 c = 1;
1653 return c | 0;
1654 }
1655
1656 if ((b[880 + (a * 28 | 0) + 8 >> 2] | 0) == (c | 0)) {
1657 c = 2;
1658 return c | 0;
1659 }
1660
1661 if ((b[880 + (a * 28 | 0) + 12 >> 2] | 0) == (c | 0)) {
1662 c = 3;
1663 return c | 0;
1664 }
1665
1666 if ((b[880 + (a * 28 | 0) + 16 >> 2] | 0) == (c | 0)) {
1667 c = 4;
1668 return c | 0;
1669 }
1670
1671 if ((b[880 + (a * 28 | 0) + 20 >> 2] | 0) == (c | 0)) {
1672 c = 5;
1673 return c | 0;
1674 } else { return ((b[880 + (a * 28 | 0) + 24 >> 2] | 0) == (c | 0) ? 6 : 7) | 0; }
1675
1676 return 0;
1677 }
1678
1679 function pa() {
1680 return 122;
1681 }
1682
1683 function qa(a) {
1684 a = a | 0;
1685 var c = 0,
1686 d = 0,
1687 e = 0;
1688 c = 0;
1689
1690 do {
1691 Rc(c | 0, 0, 45) | 0;
1692 e = F() | 0 | 134225919;
1693 d = a + (c << 3) | 0;
1694 b[d >> 2] = -1;
1695 b[d + 4 >> 2] = e;
1696 c = c + 1 | 0;
1697 } while ((c | 0) != 122);
1698
1699 return;
1700 }
1701
1702 function ra(a) {
1703 a = a | 0;
1704 return +e[a + 16 >> 3] < +e[a + 24 >> 3] | 0;
1705 }
1706
1707 function sa(a, b) {
1708 a = a | 0;
1709 b = b | 0;
1710 var c = 0.0,
1711 d = 0.0;
1712 e[b >> 3] = (+e[a >> 3] + +e[a + 8 >> 3]) * .5;
1713 c = +e[a + 16 >> 3];
1714 d = +e[a + 24 >> 3];
1715 c = +fb((d + (c < d ? c + 6.283185307179586 : c)) * .5);
1716 e[b + 8 >> 3] = c;
1717 return;
1718 }
1719
1720 function ta(a, b) {
1721 a = a | 0;
1722 b = b | 0;
1723 var c = 0.0,
1724 d = 0.0,
1725 f = 0.0;
1726 c = +e[b >> 3];
1727
1728 if (!(c >= +e[a + 8 >> 3])) {
1729 b = 0;
1730 return b | 0;
1731 }
1732
1733 if (!(c <= +e[a >> 3])) {
1734 b = 0;
1735 return b | 0;
1736 }
1737
1738 d = +e[a + 16 >> 3];
1739 c = +e[a + 24 >> 3];
1740 f = +e[b + 8 >> 3];
1741 b = f >= c;
1742 a = f <= d & 1;
1743
1744 if (d < c) {
1745 if (b) { a = 1; }
1746 } else if (!b) { a = 0; }
1747
1748 b = (a | 0) != 0;
1749 return b | 0;
1750 }
1751
1752 function ua(a, b) {
1753 a = a | 0;
1754 b = b | 0;
1755 var c = 0,
1756 d = 0,
1757 f = 0,
1758 g = 0.0,
1759 h = 0,
1760 i = 0,
1761 j = 0,
1762 k = 0.0,
1763 l = 0.0,
1764 m = 0;
1765 c = R;
1766 R = R + 224 | 0;
1767 f = c + 200 | 0;
1768 d = c + 32 | 0;
1769 h = c + 16 | 0;
1770 i = c;
1771 m = a + 8 | 0;
1772 e[h >> 3] = (+e[a >> 3] + +e[m >> 3]) * .5;
1773 j = a + 16 | 0;
1774 g = +e[j >> 3];
1775 l = +e[a + 24 >> 3];
1776 g = +fb((l + (g < l ? g + 6.283185307179586 : g)) * .5);
1777 e[h + 8 >> 3] = g;
1778 g = +e[a >> 3];
1779 l = +q(+g);
1780 k = +e[m >> 3];
1781 a = l > +q(+k);
1782 e[i >> 3] = a ? k : g;
1783 e[i + 8 >> 3] = +e[j >> 3];
1784 g = +gb(h, i);
1785 a = Gb(h, b) | 0;
1786 b = F() | 0;
1787 Jb(a, b, f);
1788 Kb(a, b, d);
1789 b = ~~+A(+(g / (+gb(f, d + 8 | 0) * 1.5)));
1790 R = c;
1791 return b | 0;
1792 }
1793
1794 function va(a, c, d, e) {
1795 a = a | 0;
1796 c = c | 0;
1797 d = d | 0;
1798 e = e | 0;
1799 b[a >> 2] = c;
1800 b[a + 4 >> 2] = d;
1801 b[a + 8 >> 2] = e;
1802 return;
1803 }
1804
1805 function wa(a, c) {
1806 a = a | 0;
1807 c = c | 0;
1808 var d = 0,
1809 f = 0,
1810 g = 0,
1811 h = 0,
1812 i = 0.0,
1813 j = 0.0,
1814 k = 0.0,
1815 l = 0.0,
1816 m = 0,
1817 n = 0,
1818 o = 0.0;
1819 n = c + 8 | 0;
1820 b[n >> 2] = 0;
1821 k = +e[a >> 3];
1822 i = +q(+k);
1823 l = +e[a + 8 >> 3];
1824 j = +q(+l) / .8660254037844386;
1825 i = i + j * .5;
1826 d = ~~i;
1827 a = ~~j;
1828 i = i - +(d | 0);
1829 j = j - +(a | 0);
1830
1831 do { if (i < .5) {
1832 if (i < .3333333333333333) {
1833 b[c >> 2] = d;
1834
1835 if (j < (i + 1.0) * .5) {
1836 b[c + 4 >> 2] = a;
1837 break;
1838 } else {
1839 a = a + 1 | 0;
1840 b[c + 4 >> 2] = a;
1841 break;
1842 }
1843 } else {
1844 o = 1.0 - i;
1845 a = (!(j < o) & 1) + a | 0;
1846 b[c + 4 >> 2] = a;
1847
1848 if (o <= j & j < i * 2.0) {
1849 d = d + 1 | 0;
1850 b[c >> 2] = d;
1851 break;
1852 } else {
1853 b[c >> 2] = d;
1854 break;
1855 }
1856 }
1857 } else {
1858 if (!(i < .6666666666666666)) {
1859 d = d + 1 | 0;
1860 b[c >> 2] = d;
1861
1862 if (j < i * .5) {
1863 b[c + 4 >> 2] = a;
1864 break;
1865 } else {
1866 a = a + 1 | 0;
1867 b[c + 4 >> 2] = a;
1868 break;
1869 }
1870 }
1871
1872 if (j < 1.0 - i) {
1873 b[c + 4 >> 2] = a;
1874
1875 if (i * 2.0 + -1.0 < j) {
1876 b[c >> 2] = d;
1877 break;
1878 }
1879 } else {
1880 a = a + 1 | 0;
1881 b[c + 4 >> 2] = a;
1882 }
1883
1884 d = d + 1 | 0;
1885 b[c >> 2] = d;
1886 } } while (0);
1887
1888 do { if (k < 0.0) { if (!(a & 1)) {
1889 m = (a | 0) / 2 | 0;
1890 m = Mc(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;
1891 d = ~~(+(d | 0) - (+(m >>> 0) + 4294967296.0 * +(F() | 0)) * 2.0);
1892 b[c >> 2] = d;
1893 break;
1894 } else {
1895 m = (a + 1 | 0) / 2 | 0;
1896 m = Mc(d | 0, ((d | 0) < 0) << 31 >> 31 | 0, m | 0, ((m | 0) < 0) << 31 >> 31 | 0) | 0;
1897 d = ~~(+(d | 0) - ((+(m >>> 0) + 4294967296.0 * +(F() | 0)) * 2.0 + 1.0));
1898 b[c >> 2] = d;
1899 break;
1900 } } } while (0);
1901
1902 m = c + 4 | 0;
1903
1904 if (l < 0.0) {
1905 d = d - ((a << 1 | 1 | 0) / 2 | 0) | 0;
1906 b[c >> 2] = d;
1907 a = 0 - a | 0;
1908 b[m >> 2] = a;
1909 }
1910
1911 f = a - d | 0;
1912
1913 if ((d | 0) < 0) {
1914 g = 0 - d | 0;
1915 b[m >> 2] = f;
1916 b[n >> 2] = g;
1917 b[c >> 2] = 0;
1918 a = f;
1919 d = 0;
1920 } else { g = 0; }
1921
1922 if ((a | 0) < 0) {
1923 d = d - a | 0;
1924 b[c >> 2] = d;
1925 g = g - a | 0;
1926 b[n >> 2] = g;
1927 b[m >> 2] = 0;
1928 a = 0;
1929 }
1930
1931 h = d - g | 0;
1932 f = a - g | 0;
1933
1934 if ((g | 0) < 0) {
1935 b[c >> 2] = h;
1936 b[m >> 2] = f;
1937 b[n >> 2] = 0;
1938 a = f;
1939 d = h;
1940 g = 0;
1941 }
1942
1943 f = (a | 0) < (d | 0) ? a : d;
1944 f = (g | 0) < (f | 0) ? g : f;
1945 if ((f | 0) <= 0) { return; }
1946 b[c >> 2] = d - f;
1947 b[m >> 2] = a - f;
1948 b[n >> 2] = g - f;
1949 return;
1950 }
1951
1952 function xa(a) {
1953 a = a | 0;
1954 var c = 0,
1955 d = 0,
1956 e = 0,
1957 f = 0,
1958 g = 0,
1959 h = 0;
1960 c = b[a >> 2] | 0;
1961 h = a + 4 | 0;
1962 d = b[h >> 2] | 0;
1963
1964 if ((c | 0) < 0) {
1965 d = d - c | 0;
1966 b[h >> 2] = d;
1967 g = a + 8 | 0;
1968 b[g >> 2] = (b[g >> 2] | 0) - c;
1969 b[a >> 2] = 0;
1970 c = 0;
1971 }
1972
1973 if ((d | 0) < 0) {
1974 c = c - d | 0;
1975 b[a >> 2] = c;
1976 g = a + 8 | 0;
1977 f = (b[g >> 2] | 0) - d | 0;
1978 b[g >> 2] = f;
1979 b[h >> 2] = 0;
1980 d = 0;
1981 } else {
1982 f = a + 8 | 0;
1983 g = f;
1984 f = b[f >> 2] | 0;
1985 }
1986
1987 if ((f | 0) < 0) {
1988 c = c - f | 0;
1989 b[a >> 2] = c;
1990 d = d - f | 0;
1991 b[h >> 2] = d;
1992 b[g >> 2] = 0;
1993 f = 0;
1994 }
1995
1996 e = (d | 0) < (c | 0) ? d : c;
1997 e = (f | 0) < (e | 0) ? f : e;
1998 if ((e | 0) <= 0) { return; }
1999 b[a >> 2] = c - e;
2000 b[h >> 2] = d - e;
2001 b[g >> 2] = f - e;
2002 return;
2003 }
2004
2005 function ya(a, c) {
2006 a = a | 0;
2007 c = c | 0;
2008 var d = 0.0,
2009 f = 0;
2010 f = b[a + 8 >> 2] | 0;
2011 d = +((b[a + 4 >> 2] | 0) - f | 0);
2012 e[c >> 3] = +((b[a >> 2] | 0) - f | 0) - d * .5;
2013 e[c + 8 >> 3] = d * .8660254037844386;
2014 return;
2015 }
2016
2017 function za(a, c, d) {
2018 a = a | 0;
2019 c = c | 0;
2020 d = d | 0;
2021 b[d >> 2] = (b[c >> 2] | 0) + (b[a >> 2] | 0);
2022 b[d + 4 >> 2] = (b[c + 4 >> 2] | 0) + (b[a + 4 >> 2] | 0);
2023 b[d + 8 >> 2] = (b[c + 8 >> 2] | 0) + (b[a + 8 >> 2] | 0);
2024 return;
2025 }
2026
2027 function Aa(a, c, d) {
2028 a = a | 0;
2029 c = c | 0;
2030 d = d | 0;
2031 b[d >> 2] = (b[a >> 2] | 0) - (b[c >> 2] | 0);
2032 b[d + 4 >> 2] = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0);
2033 b[d + 8 >> 2] = (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0);
2034 return;
2035 }
2036
2037 function Ba(a, c) {
2038 a = a | 0;
2039 c = c | 0;
2040 var d = 0,
2041 e = 0;
2042 d = B(b[a >> 2] | 0, c) | 0;
2043 b[a >> 2] = d;
2044 d = a + 4 | 0;
2045 e = B(b[d >> 2] | 0, c) | 0;
2046 b[d >> 2] = e;
2047 a = a + 8 | 0;
2048 c = B(b[a >> 2] | 0, c) | 0;
2049 b[a >> 2] = c;
2050 return;
2051 }
2052
2053 function Ca(a) {
2054 a = a | 0;
2055 var c = 0,
2056 d = 0,
2057 e = 0,
2058 f = 0,
2059 g = 0,
2060 h = 0,
2061 i = 0;
2062 h = b[a >> 2] | 0;
2063 i = (h | 0) < 0;
2064 e = (b[a + 4 >> 2] | 0) - (i ? h : 0) | 0;
2065 g = (e | 0) < 0;
2066 f = (g ? 0 - e | 0 : 0) + ((b[a + 8 >> 2] | 0) - (i ? h : 0)) | 0;
2067 d = (f | 0) < 0;
2068 a = d ? 0 : f;
2069 c = (g ? 0 : e) - (d ? f : 0) | 0;
2070 f = (i ? 0 : h) - (g ? e : 0) - (d ? f : 0) | 0;
2071 d = (c | 0) < (f | 0) ? c : f;
2072 d = (a | 0) < (d | 0) ? a : d;
2073 e = (d | 0) > 0;
2074 a = a - (e ? d : 0) | 0;
2075 c = c - (e ? d : 0) | 0;
2076
2077 a: do { switch (f - (e ? d : 0) | 0) {
2078 case 0:
2079 switch (c | 0) {
2080 case 0:
2081 {
2082 i = (a | 0) == 0 ? 0 : (a | 0) == 1 ? 1 : 7;
2083 return i | 0;
2084 }
2085
2086 case 1:
2087 {
2088 i = (a | 0) == 0 ? 2 : (a | 0) == 1 ? 3 : 7;
2089 return i | 0;
2090 }
2091
2092 default:
2093 break a;
2094 }
2095
2096 case 1:
2097 switch (c | 0) {
2098 case 0:
2099 {
2100 i = (a | 0) == 0 ? 4 : (a | 0) == 1 ? 5 : 7;
2101 return i | 0;
2102 }
2103
2104 case 1:
2105 {
2106 if (!a) { a = 6; }else { break a; }
2107 return a | 0;
2108 }
2109
2110 default:
2111 break a;
2112 }
2113
2114 default:
2115
2116 } } while (0);
2117
2118 i = 7;
2119 return i | 0;
2120 }
2121
2122 function Da(a) {
2123 a = a | 0;
2124 var c = 0,
2125 d = 0,
2126 e = 0,
2127 f = 0,
2128 g = 0,
2129 h = 0,
2130 i = 0;
2131 h = a + 8 | 0;
2132 d = b[h >> 2] | 0;
2133 c = (b[a >> 2] | 0) - d | 0;
2134 i = a + 4 | 0;
2135 d = (b[i >> 2] | 0) - d | 0;
2136 e = Hc(+((c * 3 | 0) - d | 0) / 7.0) | 0;
2137 b[a >> 2] = e;
2138 c = Hc(+((d << 1) + c | 0) / 7.0) | 0;
2139 b[i >> 2] = c;
2140 b[h >> 2] = 0;
2141 d = c - e | 0;
2142
2143 if ((e | 0) < 0) {
2144 g = 0 - e | 0;
2145 b[i >> 2] = d;
2146 b[h >> 2] = g;
2147 b[a >> 2] = 0;
2148 c = d;
2149 e = 0;
2150 d = g;
2151 } else { d = 0; }
2152
2153 if ((c | 0) < 0) {
2154 e = e - c | 0;
2155 b[a >> 2] = e;
2156 d = d - c | 0;
2157 b[h >> 2] = d;
2158 b[i >> 2] = 0;
2159 c = 0;
2160 }
2161
2162 g = e - d | 0;
2163 f = c - d | 0;
2164
2165 if ((d | 0) < 0) {
2166 b[a >> 2] = g;
2167 b[i >> 2] = f;
2168 b[h >> 2] = 0;
2169 c = f;
2170 f = g;
2171 d = 0;
2172 } else { f = e; }
2173
2174 e = (c | 0) < (f | 0) ? c : f;
2175 e = (d | 0) < (e | 0) ? d : e;
2176 if ((e | 0) <= 0) { return; }
2177 b[a >> 2] = f - e;
2178 b[i >> 2] = c - e;
2179 b[h >> 2] = d - e;
2180 return;
2181 }
2182
2183 function Ea(a) {
2184 a = a | 0;
2185 var c = 0,
2186 d = 0,
2187 e = 0,
2188 f = 0,
2189 g = 0,
2190 h = 0,
2191 i = 0;
2192 h = a + 8 | 0;
2193 d = b[h >> 2] | 0;
2194 c = (b[a >> 2] | 0) - d | 0;
2195 i = a + 4 | 0;
2196 d = (b[i >> 2] | 0) - d | 0;
2197 e = Hc(+((c << 1) + d | 0) / 7.0) | 0;
2198 b[a >> 2] = e;
2199 c = Hc(+((d * 3 | 0) - c | 0) / 7.0) | 0;
2200 b[i >> 2] = c;
2201 b[h >> 2] = 0;
2202 d = c - e | 0;
2203
2204 if ((e | 0) < 0) {
2205 g = 0 - e | 0;
2206 b[i >> 2] = d;
2207 b[h >> 2] = g;
2208 b[a >> 2] = 0;
2209 c = d;
2210 e = 0;
2211 d = g;
2212 } else { d = 0; }
2213
2214 if ((c | 0) < 0) {
2215 e = e - c | 0;
2216 b[a >> 2] = e;
2217 d = d - c | 0;
2218 b[h >> 2] = d;
2219 b[i >> 2] = 0;
2220 c = 0;
2221 }
2222
2223 g = e - d | 0;
2224 f = c - d | 0;
2225
2226 if ((d | 0) < 0) {
2227 b[a >> 2] = g;
2228 b[i >> 2] = f;
2229 b[h >> 2] = 0;
2230 c = f;
2231 f = g;
2232 d = 0;
2233 } else { f = e; }
2234
2235 e = (c | 0) < (f | 0) ? c : f;
2236 e = (d | 0) < (e | 0) ? d : e;
2237 if ((e | 0) <= 0) { return; }
2238 b[a >> 2] = f - e;
2239 b[i >> 2] = c - e;
2240 b[h >> 2] = d - e;
2241 return;
2242 }
2243
2244 function Fa(a) {
2245 a = a | 0;
2246 var c = 0,
2247 d = 0,
2248 e = 0,
2249 f = 0,
2250 g = 0,
2251 h = 0,
2252 i = 0;
2253 c = b[a >> 2] | 0;
2254 h = a + 4 | 0;
2255 d = b[h >> 2] | 0;
2256 i = a + 8 | 0;
2257 e = b[i >> 2] | 0;
2258 f = d + (c * 3 | 0) | 0;
2259 b[a >> 2] = f;
2260 d = e + (d * 3 | 0) | 0;
2261 b[h >> 2] = d;
2262 c = (e * 3 | 0) + c | 0;
2263 b[i >> 2] = c;
2264 e = d - f | 0;
2265
2266 if ((f | 0) < 0) {
2267 c = c - f | 0;
2268 b[h >> 2] = e;
2269 b[i >> 2] = c;
2270 b[a >> 2] = 0;
2271 d = e;
2272 e = 0;
2273 } else { e = f; }
2274
2275 if ((d | 0) < 0) {
2276 e = e - d | 0;
2277 b[a >> 2] = e;
2278 c = c - d | 0;
2279 b[i >> 2] = c;
2280 b[h >> 2] = 0;
2281 d = 0;
2282 }
2283
2284 g = e - c | 0;
2285 f = d - c | 0;
2286
2287 if ((c | 0) < 0) {
2288 b[a >> 2] = g;
2289 b[h >> 2] = f;
2290 b[i >> 2] = 0;
2291 e = g;
2292 c = 0;
2293 } else { f = d; }
2294
2295 d = (f | 0) < (e | 0) ? f : e;
2296 d = (c | 0) < (d | 0) ? c : d;
2297 if ((d | 0) <= 0) { return; }
2298 b[a >> 2] = e - d;
2299 b[h >> 2] = f - d;
2300 b[i >> 2] = c - d;
2301 return;
2302 }
2303
2304 function Ga(a) {
2305 a = a | 0;
2306 var c = 0,
2307 d = 0,
2308 e = 0,
2309 f = 0,
2310 g = 0,
2311 h = 0,
2312 i = 0;
2313 f = b[a >> 2] | 0;
2314 h = a + 4 | 0;
2315 c = b[h >> 2] | 0;
2316 i = a + 8 | 0;
2317 d = b[i >> 2] | 0;
2318 e = (c * 3 | 0) + f | 0;
2319 f = d + (f * 3 | 0) | 0;
2320 b[a >> 2] = f;
2321 b[h >> 2] = e;
2322 c = (d * 3 | 0) + c | 0;
2323 b[i >> 2] = c;
2324 d = e - f | 0;
2325
2326 if ((f | 0) < 0) {
2327 c = c - f | 0;
2328 b[h >> 2] = d;
2329 b[i >> 2] = c;
2330 b[a >> 2] = 0;
2331 f = 0;
2332 } else { d = e; }
2333
2334 if ((d | 0) < 0) {
2335 f = f - d | 0;
2336 b[a >> 2] = f;
2337 c = c - d | 0;
2338 b[i >> 2] = c;
2339 b[h >> 2] = 0;
2340 d = 0;
2341 }
2342
2343 g = f - c | 0;
2344 e = d - c | 0;
2345
2346 if ((c | 0) < 0) {
2347 b[a >> 2] = g;
2348 b[h >> 2] = e;
2349 b[i >> 2] = 0;
2350 f = g;
2351 c = 0;
2352 } else { e = d; }
2353
2354 d = (e | 0) < (f | 0) ? e : f;
2355 d = (c | 0) < (d | 0) ? c : d;
2356 if ((d | 0) <= 0) { return; }
2357 b[a >> 2] = f - d;
2358 b[h >> 2] = e - d;
2359 b[i >> 2] = c - d;
2360 return;
2361 }
2362
2363 function Ha(a, c) {
2364 a = a | 0;
2365 c = c | 0;
2366 var d = 0,
2367 e = 0,
2368 f = 0,
2369 g = 0,
2370 h = 0,
2371 i = 0;
2372 if ((c + -1 | 0) >>> 0 >= 6) { return; }
2373 f = (b[15472 + (c * 12 | 0) >> 2] | 0) + (b[a >> 2] | 0) | 0;
2374 b[a >> 2] = f;
2375 i = a + 4 | 0;
2376 e = (b[15472 + (c * 12 | 0) + 4 >> 2] | 0) + (b[i >> 2] | 0) | 0;
2377 b[i >> 2] = e;
2378 h = a + 8 | 0;
2379 c = (b[15472 + (c * 12 | 0) + 8 >> 2] | 0) + (b[h >> 2] | 0) | 0;
2380 b[h >> 2] = c;
2381 d = e - f | 0;
2382
2383 if ((f | 0) < 0) {
2384 c = c - f | 0;
2385 b[i >> 2] = d;
2386 b[h >> 2] = c;
2387 b[a >> 2] = 0;
2388 e = 0;
2389 } else {
2390 d = e;
2391 e = f;
2392 }
2393
2394 if ((d | 0) < 0) {
2395 e = e - d | 0;
2396 b[a >> 2] = e;
2397 c = c - d | 0;
2398 b[h >> 2] = c;
2399 b[i >> 2] = 0;
2400 d = 0;
2401 }
2402
2403 g = e - c | 0;
2404 f = d - c | 0;
2405
2406 if ((c | 0) < 0) {
2407 b[a >> 2] = g;
2408 b[i >> 2] = f;
2409 b[h >> 2] = 0;
2410 e = g;
2411 c = 0;
2412 } else { f = d; }
2413
2414 d = (f | 0) < (e | 0) ? f : e;
2415 d = (c | 0) < (d | 0) ? c : d;
2416 if ((d | 0) <= 0) { return; }
2417 b[a >> 2] = e - d;
2418 b[i >> 2] = f - d;
2419 b[h >> 2] = c - d;
2420 return;
2421 }
2422
2423 function Ia(a) {
2424 a = a | 0;
2425 var c = 0,
2426 d = 0,
2427 e = 0,
2428 f = 0,
2429 g = 0,
2430 h = 0,
2431 i = 0;
2432 f = b[a >> 2] | 0;
2433 h = a + 4 | 0;
2434 c = b[h >> 2] | 0;
2435 i = a + 8 | 0;
2436 d = b[i >> 2] | 0;
2437 e = c + f | 0;
2438 f = d + f | 0;
2439 b[a >> 2] = f;
2440 b[h >> 2] = e;
2441 c = d + c | 0;
2442 b[i >> 2] = c;
2443 d = e - f | 0;
2444
2445 if ((f | 0) < 0) {
2446 c = c - f | 0;
2447 b[h >> 2] = d;
2448 b[i >> 2] = c;
2449 b[a >> 2] = 0;
2450 e = 0;
2451 } else {
2452 d = e;
2453 e = f;
2454 }
2455
2456 if ((d | 0) < 0) {
2457 e = e - d | 0;
2458 b[a >> 2] = e;
2459 c = c - d | 0;
2460 b[i >> 2] = c;
2461 b[h >> 2] = 0;
2462 d = 0;
2463 }
2464
2465 g = e - c | 0;
2466 f = d - c | 0;
2467
2468 if ((c | 0) < 0) {
2469 b[a >> 2] = g;
2470 b[h >> 2] = f;
2471 b[i >> 2] = 0;
2472 e = g;
2473 c = 0;
2474 } else { f = d; }
2475
2476 d = (f | 0) < (e | 0) ? f : e;
2477 d = (c | 0) < (d | 0) ? c : d;
2478 if ((d | 0) <= 0) { return; }
2479 b[a >> 2] = e - d;
2480 b[h >> 2] = f - d;
2481 b[i >> 2] = c - d;
2482 return;
2483 }
2484
2485 function Ja(a) {
2486 a = a | 0;
2487 var c = 0,
2488 d = 0,
2489 e = 0,
2490 f = 0,
2491 g = 0,
2492 h = 0,
2493 i = 0;
2494 c = b[a >> 2] | 0;
2495 h = a + 4 | 0;
2496 e = b[h >> 2] | 0;
2497 i = a + 8 | 0;
2498 d = b[i >> 2] | 0;
2499 f = e + c | 0;
2500 b[a >> 2] = f;
2501 e = d + e | 0;
2502 b[h >> 2] = e;
2503 c = d + c | 0;
2504 b[i >> 2] = c;
2505 d = e - f | 0;
2506
2507 if ((f | 0) < 0) {
2508 c = c - f | 0;
2509 b[h >> 2] = d;
2510 b[i >> 2] = c;
2511 b[a >> 2] = 0;
2512 e = 0;
2513 } else {
2514 d = e;
2515 e = f;
2516 }
2517
2518 if ((d | 0) < 0) {
2519 e = e - d | 0;
2520 b[a >> 2] = e;
2521 c = c - d | 0;
2522 b[i >> 2] = c;
2523 b[h >> 2] = 0;
2524 d = 0;
2525 }
2526
2527 g = e - c | 0;
2528 f = d - c | 0;
2529
2530 if ((c | 0) < 0) {
2531 b[a >> 2] = g;
2532 b[h >> 2] = f;
2533 b[i >> 2] = 0;
2534 e = g;
2535 c = 0;
2536 } else { f = d; }
2537
2538 d = (f | 0) < (e | 0) ? f : e;
2539 d = (c | 0) < (d | 0) ? c : d;
2540 if ((d | 0) <= 0) { return; }
2541 b[a >> 2] = e - d;
2542 b[h >> 2] = f - d;
2543 b[i >> 2] = c - d;
2544 return;
2545 }
2546
2547 function Ka(a) {
2548 a = a | 0;
2549
2550 switch (a | 0) {
2551 case 1:
2552 {
2553 a = 5;
2554 break;
2555 }
2556
2557 case 5:
2558 {
2559 a = 4;
2560 break;
2561 }
2562
2563 case 4:
2564 {
2565 a = 6;
2566 break;
2567 }
2568
2569 case 6:
2570 {
2571 a = 2;
2572 break;
2573 }
2574
2575 case 2:
2576 {
2577 a = 3;
2578 break;
2579 }
2580
2581 case 3:
2582 {
2583 a = 1;
2584 break;
2585 }
2586
2587 default:
2588
2589 }
2590
2591 return a | 0;
2592 }
2593
2594 function La(a) {
2595 a = a | 0;
2596
2597 switch (a | 0) {
2598 case 1:
2599 {
2600 a = 3;
2601 break;
2602 }
2603
2604 case 3:
2605 {
2606 a = 2;
2607 break;
2608 }
2609
2610 case 2:
2611 {
2612 a = 6;
2613 break;
2614 }
2615
2616 case 6:
2617 {
2618 a = 4;
2619 break;
2620 }
2621
2622 case 4:
2623 {
2624 a = 5;
2625 break;
2626 }
2627
2628 case 5:
2629 {
2630 a = 1;
2631 break;
2632 }
2633
2634 default:
2635
2636 }
2637
2638 return a | 0;
2639 }
2640
2641 function Ma(a) {
2642 a = a | 0;
2643 var c = 0,
2644 d = 0,
2645 e = 0,
2646 f = 0,
2647 g = 0,
2648 h = 0,
2649 i = 0;
2650 c = b[a >> 2] | 0;
2651 h = a + 4 | 0;
2652 d = b[h >> 2] | 0;
2653 i = a + 8 | 0;
2654 e = b[i >> 2] | 0;
2655 f = d + (c << 1) | 0;
2656 b[a >> 2] = f;
2657 d = e + (d << 1) | 0;
2658 b[h >> 2] = d;
2659 c = (e << 1) + c | 0;
2660 b[i >> 2] = c;
2661 e = d - f | 0;
2662
2663 if ((f | 0) < 0) {
2664 c = c - f | 0;
2665 b[h >> 2] = e;
2666 b[i >> 2] = c;
2667 b[a >> 2] = 0;
2668 d = e;
2669 e = 0;
2670 } else { e = f; }
2671
2672 if ((d | 0) < 0) {
2673 e = e - d | 0;
2674 b[a >> 2] = e;
2675 c = c - d | 0;
2676 b[i >> 2] = c;
2677 b[h >> 2] = 0;
2678 d = 0;
2679 }
2680
2681 g = e - c | 0;
2682 f = d - c | 0;
2683
2684 if ((c | 0) < 0) {
2685 b[a >> 2] = g;
2686 b[h >> 2] = f;
2687 b[i >> 2] = 0;
2688 e = g;
2689 c = 0;
2690 } else { f = d; }
2691
2692 d = (f | 0) < (e | 0) ? f : e;
2693 d = (c | 0) < (d | 0) ? c : d;
2694 if ((d | 0) <= 0) { return; }
2695 b[a >> 2] = e - d;
2696 b[h >> 2] = f - d;
2697 b[i >> 2] = c - d;
2698 return;
2699 }
2700
2701 function Na(a) {
2702 a = a | 0;
2703 var c = 0,
2704 d = 0,
2705 e = 0,
2706 f = 0,
2707 g = 0,
2708 h = 0,
2709 i = 0;
2710 f = b[a >> 2] | 0;
2711 h = a + 4 | 0;
2712 c = b[h >> 2] | 0;
2713 i = a + 8 | 0;
2714 d = b[i >> 2] | 0;
2715 e = (c << 1) + f | 0;
2716 f = d + (f << 1) | 0;
2717 b[a >> 2] = f;
2718 b[h >> 2] = e;
2719 c = (d << 1) + c | 0;
2720 b[i >> 2] = c;
2721 d = e - f | 0;
2722
2723 if ((f | 0) < 0) {
2724 c = c - f | 0;
2725 b[h >> 2] = d;
2726 b[i >> 2] = c;
2727 b[a >> 2] = 0;
2728 f = 0;
2729 } else { d = e; }
2730
2731 if ((d | 0) < 0) {
2732 f = f - d | 0;
2733 b[a >> 2] = f;
2734 c = c - d | 0;
2735 b[i >> 2] = c;
2736 b[h >> 2] = 0;
2737 d = 0;
2738 }
2739
2740 g = f - c | 0;
2741 e = d - c | 0;
2742
2743 if ((c | 0) < 0) {
2744 b[a >> 2] = g;
2745 b[h >> 2] = e;
2746 b[i >> 2] = 0;
2747 f = g;
2748 c = 0;
2749 } else { e = d; }
2750
2751 d = (e | 0) < (f | 0) ? e : f;
2752 d = (c | 0) < (d | 0) ? c : d;
2753 if ((d | 0) <= 0) { return; }
2754 b[a >> 2] = f - d;
2755 b[h >> 2] = e - d;
2756 b[i >> 2] = c - d;
2757 return;
2758 }
2759
2760 function Oa(a, c) {
2761 a = a | 0;
2762 c = c | 0;
2763 var d = 0,
2764 e = 0,
2765 f = 0,
2766 g = 0,
2767 h = 0,
2768 i = 0;
2769 h = (b[a >> 2] | 0) - (b[c >> 2] | 0) | 0;
2770 i = (h | 0) < 0;
2771 e = (b[a + 4 >> 2] | 0) - (b[c + 4 >> 2] | 0) - (i ? h : 0) | 0;
2772 g = (e | 0) < 0;
2773 f = (i ? 0 - h | 0 : 0) + (b[a + 8 >> 2] | 0) - (b[c + 8 >> 2] | 0) + (g ? 0 - e | 0 : 0) | 0;
2774 a = (f | 0) < 0;
2775 c = a ? 0 : f;
2776 d = (g ? 0 : e) - (a ? f : 0) | 0;
2777 f = (i ? 0 : h) - (g ? e : 0) - (a ? f : 0) | 0;
2778 a = (d | 0) < (f | 0) ? d : f;
2779 a = (c | 0) < (a | 0) ? c : a;
2780 e = (a | 0) > 0;
2781 c = c - (e ? a : 0) | 0;
2782 d = d - (e ? a : 0) | 0;
2783 a = f - (e ? a : 0) | 0;
2784 a = (a | 0) > -1 ? a : 0 - a | 0;
2785 d = (d | 0) > -1 ? d : 0 - d | 0;
2786 c = (c | 0) > -1 ? c : 0 - c | 0;
2787 c = (d | 0) > (c | 0) ? d : c;
2788 return ((a | 0) > (c | 0) ? a : c) | 0;
2789 }
2790
2791 function Pa(a, c) {
2792 a = a | 0;
2793 c = c | 0;
2794 var d = 0;
2795 d = b[a + 8 >> 2] | 0;
2796 b[c >> 2] = (b[a >> 2] | 0) - d;
2797 b[c + 4 >> 2] = (b[a + 4 >> 2] | 0) - d;
2798 return;
2799 }
2800
2801 function Qa(a, c) {
2802 a = a | 0;
2803 c = c | 0;
2804 var d = 0,
2805 e = 0,
2806 f = 0,
2807 g = 0,
2808 h = 0,
2809 i = 0;
2810 e = b[a >> 2] | 0;
2811 b[c >> 2] = e;
2812 a = b[a + 4 >> 2] | 0;
2813 h = c + 4 | 0;
2814 b[h >> 2] = a;
2815 i = c + 8 | 0;
2816 b[i >> 2] = 0;
2817 d = a - e | 0;
2818
2819 if ((e | 0) < 0) {
2820 a = 0 - e | 0;
2821 b[h >> 2] = d;
2822 b[i >> 2] = a;
2823 b[c >> 2] = 0;
2824 e = 0;
2825 } else {
2826 d = a;
2827 a = 0;
2828 }
2829
2830 if ((d | 0) < 0) {
2831 e = e - d | 0;
2832 b[c >> 2] = e;
2833 a = a - d | 0;
2834 b[i >> 2] = a;
2835 b[h >> 2] = 0;
2836 d = 0;
2837 }
2838
2839 g = e - a | 0;
2840 f = d - a | 0;
2841
2842 if ((a | 0) < 0) {
2843 b[c >> 2] = g;
2844 b[h >> 2] = f;
2845 b[i >> 2] = 0;
2846 d = f;
2847 f = g;
2848 a = 0;
2849 } else { f = e; }
2850
2851 e = (d | 0) < (f | 0) ? d : f;
2852 e = (a | 0) < (e | 0) ? a : e;
2853 if ((e | 0) <= 0) { return; }
2854 b[c >> 2] = f - e;
2855 b[h >> 2] = d - e;
2856 b[i >> 2] = a - e;
2857 return;
2858 }
2859
2860 function Ra(a) {
2861 a = a | 0;
2862 var c = 0,
2863 d = 0,
2864 e = 0,
2865 f = 0;
2866 c = a + 8 | 0;
2867 f = b[c >> 2] | 0;
2868 d = f - (b[a >> 2] | 0) | 0;
2869 b[a >> 2] = d;
2870 e = a + 4 | 0;
2871 a = (b[e >> 2] | 0) - f | 0;
2872 b[e >> 2] = a;
2873 b[c >> 2] = 0 - (a + d);
2874 return;
2875 }
2876
2877 function Sa(a) {
2878 a = a | 0;
2879 var c = 0,
2880 d = 0,
2881 e = 0,
2882 f = 0,
2883 g = 0,
2884 h = 0,
2885 i = 0;
2886 d = b[a >> 2] | 0;
2887 c = 0 - d | 0;
2888 b[a >> 2] = c;
2889 h = a + 8 | 0;
2890 b[h >> 2] = 0;
2891 i = a + 4 | 0;
2892 e = b[i >> 2] | 0;
2893 f = e + d | 0;
2894
2895 if ((d | 0) > 0) {
2896 b[i >> 2] = f;
2897 b[h >> 2] = d;
2898 b[a >> 2] = 0;
2899 c = 0;
2900 e = f;
2901 } else { d = 0; }
2902
2903 if ((e | 0) < 0) {
2904 g = c - e | 0;
2905 b[a >> 2] = g;
2906 d = d - e | 0;
2907 b[h >> 2] = d;
2908 b[i >> 2] = 0;
2909 f = g - d | 0;
2910 c = 0 - d | 0;
2911
2912 if ((d | 0) < 0) {
2913 b[a >> 2] = f;
2914 b[i >> 2] = c;
2915 b[h >> 2] = 0;
2916 e = c;
2917 d = 0;
2918 } else {
2919 e = 0;
2920 f = g;
2921 }
2922 } else { f = c; }
2923
2924 c = (e | 0) < (f | 0) ? e : f;
2925 c = (d | 0) < (c | 0) ? d : c;
2926 if ((c | 0) <= 0) { return; }
2927 b[a >> 2] = f - c;
2928 b[i >> 2] = e - c;
2929 b[h >> 2] = d - c;
2930 return;
2931 }
2932
2933 function Ta(a, b, c) {
2934 a = a | 0;
2935 b = b | 0;
2936 c = c | 0;
2937 var d = 0,
2938 e = 0;
2939 d = R;
2940 R = R + 16 | 0;
2941 e = d;
2942 Ua(a, b, c, e);
2943 wa(e, c + 4 | 0);
2944 R = d;
2945 return;
2946 }
2947
2948 function Ua(a, c, d, f) {
2949 a = a | 0;
2950 c = c | 0;
2951 d = d | 0;
2952 f = f | 0;
2953 var g = 0.0,
2954 h = 0,
2955 i = 0.0,
2956 j = 0.0,
2957 k = 0;
2958 k = R;
2959 R = R + 32 | 0;
2960 h = k;
2961 xc(a, h);
2962 b[d >> 2] = 0;
2963 g = +wc(15888, h);
2964 i = +wc(15912, h);
2965
2966 if (i < g) {
2967 b[d >> 2] = 1;
2968 g = i;
2969 }
2970
2971 i = +wc(15936, h);
2972
2973 if (i < g) {
2974 b[d >> 2] = 2;
2975 g = i;
2976 }
2977
2978 i = +wc(15960, h);
2979
2980 if (i < g) {
2981 b[d >> 2] = 3;
2982 g = i;
2983 }
2984
2985 i = +wc(15984, h);
2986
2987 if (i < g) {
2988 b[d >> 2] = 4;
2989 g = i;
2990 }
2991
2992 i = +wc(16008, h);
2993
2994 if (i < g) {
2995 b[d >> 2] = 5;
2996 g = i;
2997 }
2998
2999 i = +wc(16032, h);
3000
3001 if (i < g) {
3002 b[d >> 2] = 6;
3003 g = i;
3004 }
3005
3006 i = +wc(16056, h);
3007
3008 if (i < g) {
3009 b[d >> 2] = 7;
3010 g = i;
3011 }
3012
3013 i = +wc(16080, h);
3014
3015 if (i < g) {
3016 b[d >> 2] = 8;
3017 g = i;
3018 }
3019
3020 i = +wc(16104, h);
3021
3022 if (i < g) {
3023 b[d >> 2] = 9;
3024 g = i;
3025 }
3026
3027 i = +wc(16128, h);
3028
3029 if (i < g) {
3030 b[d >> 2] = 10;
3031 g = i;
3032 }
3033
3034 i = +wc(16152, h);
3035
3036 if (i < g) {
3037 b[d >> 2] = 11;
3038 g = i;
3039 }
3040
3041 i = +wc(16176, h);
3042
3043 if (i < g) {
3044 b[d >> 2] = 12;
3045 g = i;
3046 }
3047
3048 i = +wc(16200, h);
3049
3050 if (i < g) {
3051 b[d >> 2] = 13;
3052 g = i;
3053 }
3054
3055 i = +wc(16224, h);
3056
3057 if (i < g) {
3058 b[d >> 2] = 14;
3059 g = i;
3060 }
3061
3062 i = +wc(16248, h);
3063
3064 if (i < g) {
3065 b[d >> 2] = 15;
3066 g = i;
3067 }
3068
3069 i = +wc(16272, h);
3070
3071 if (i < g) {
3072 b[d >> 2] = 16;
3073 g = i;
3074 }
3075
3076 i = +wc(16296, h);
3077
3078 if (i < g) {
3079 b[d >> 2] = 17;
3080 g = i;
3081 }
3082
3083 i = +wc(16320, h);
3084
3085 if (i < g) {
3086 b[d >> 2] = 18;
3087 g = i;
3088 }
3089
3090 i = +wc(16344, h);
3091
3092 if (i < g) {
3093 b[d >> 2] = 19;
3094 g = i;
3095 }
3096
3097 i = +w(+(1.0 - g * .5));
3098
3099 if (i < 1.0e-16) {
3100 b[f >> 2] = 0;
3101 b[f + 4 >> 2] = 0;
3102 b[f + 8 >> 2] = 0;
3103 b[f + 12 >> 2] = 0;
3104 R = k;
3105 return;
3106 }
3107
3108 d = b[d >> 2] | 0;
3109 g = +e[16368 + (d * 24 | 0) >> 3];
3110 g = +bb(g - +bb(+hb(15568 + (d << 4) | 0, a)));
3111 if (!(Fb(c) | 0)) { j = g; }else { j = +bb(g + -.3334731722518321); }
3112 g = +v(+i) / .381966011250105;
3113
3114 if ((c | 0) > 0) {
3115 h = 0;
3116
3117 do {
3118 g = g * 2.6457513110645907;
3119 h = h + 1 | 0;
3120 } while ((h | 0) != (c | 0));
3121 }
3122
3123 i = +t(+j) * g;
3124 e[f >> 3] = i;
3125 j = +u(+j) * g;
3126 e[f + 8 >> 3] = j;
3127 R = k;
3128 return;
3129 }
3130
3131 function Va(a, c, d, f, g) {
3132 a = a | 0;
3133 c = c | 0;
3134 d = d | 0;
3135 f = f | 0;
3136 g = g | 0;
3137 var h = 0.0,
3138 i = 0.0;
3139 h = +tc(a);
3140
3141 if (h < 1.0e-16) {
3142 c = 15568 + (c << 4) | 0;
3143 b[g >> 2] = b[c >> 2];
3144 b[g + 4 >> 2] = b[c + 4 >> 2];
3145 b[g + 8 >> 2] = b[c + 8 >> 2];
3146 b[g + 12 >> 2] = b[c + 12 >> 2];
3147 return;
3148 }
3149
3150 i = +z(+ +e[a + 8 >> 3], + +e[a >> 3]);
3151
3152 if ((d | 0) > 0) {
3153 a = 0;
3154
3155 do {
3156 h = h / 2.6457513110645907;
3157 a = a + 1 | 0;
3158 } while ((a | 0) != (d | 0));
3159 }
3160
3161 if (!f) {
3162 h = +y(+(h * .381966011250105));
3163 if (Fb(d) | 0) { i = +bb(i + .3334731722518321); }
3164 } else {
3165 h = h / 3.0;
3166 d = (Fb(d) | 0) == 0;
3167 h = +y(+((d ? h : h / 2.6457513110645907) * .381966011250105));
3168 }
3169
3170 ib(15568 + (c << 4) | 0, +bb(+e[16368 + (c * 24 | 0) >> 3] - i), h, g);
3171 return;
3172 }
3173
3174 function Wa(a, c, d) {
3175 a = a | 0;
3176 c = c | 0;
3177 d = d | 0;
3178 var e = 0,
3179 f = 0;
3180 e = R;
3181 R = R + 16 | 0;
3182 f = e;
3183 ya(a + 4 | 0, f);
3184 Va(f, b[a >> 2] | 0, c, 0, d);
3185 R = e;
3186 return;
3187 }
3188
3189 function Xa(a, c, d) {
3190 a = a | 0;
3191 c = c | 0;
3192 d = d | 0;
3193 var f = 0,
3194 g = 0,
3195 h = 0,
3196 i = 0,
3197 j = 0,
3198 k = 0,
3199 l = 0,
3200 m = 0,
3201 n = 0,
3202 o = 0,
3203 p = 0,
3204 q = 0,
3205 r = 0,
3206 s = 0,
3207 t = 0,
3208 u = 0,
3209 v = 0,
3210 w = 0,
3211 x = 0,
3212 y = 0,
3213 z = 0,
3214 A = 0,
3215 B = 0,
3216 C = 0,
3217 D = 0,
3218 E = 0.0,
3219 F = 0.0;
3220 D = R;
3221 R = R + 272 | 0;
3222 j = D + 256 | 0;
3223 k = D + 240 | 0;
3224 y = D;
3225 z = D + 224 | 0;
3226 A = D + 208 | 0;
3227 B = D + 176 | 0;
3228 C = D + 160 | 0;
3229 s = D + 192 | 0;
3230 t = D + 144 | 0;
3231 u = D + 128 | 0;
3232 v = D + 112 | 0;
3233 w = D + 96 | 0;
3234 x = D + 80 | 0;
3235 b[j >> 2] = c;
3236 b[k >> 2] = b[a >> 2];
3237 b[k + 4 >> 2] = b[a + 4 >> 2];
3238 b[k + 8 >> 2] = b[a + 8 >> 2];
3239 b[k + 12 >> 2] = b[a + 12 >> 2];
3240 Ya(k, j, y);
3241 b[d >> 2] = 0;
3242 j = b[j >> 2] | 0;
3243 k = z + 4 | 0;
3244 l = B + 4 | 0;
3245 m = 16848 + (j << 2) | 0;
3246 n = 16928 + (j << 2) | 0;
3247 o = u + 8 | 0;
3248 p = v + 8 | 0;
3249 q = w + 8 | 0;
3250 r = A + 4 | 0;
3251 i = 0;
3252
3253 a: while (1) {
3254 h = y + (((i >>> 0) % 5 | 0) << 4) | 0;
3255 b[A >> 2] = b[h >> 2];
3256 b[A + 4 >> 2] = b[h + 4 >> 2];
3257 b[A + 8 >> 2] = b[h + 8 >> 2];
3258 b[A + 12 >> 2] = b[h + 12 >> 2];
3259
3260 do {} while ((Za(A, j, 0, 1) | 0) == 2);
3261
3262 if ((i | 0) != 0 & (Fb(c) | 0) != 0) {
3263 b[B >> 2] = b[A >> 2];
3264 b[B + 4 >> 2] = b[A + 4 >> 2];
3265 b[B + 8 >> 2] = b[A + 8 >> 2];
3266 b[B + 12 >> 2] = b[A + 12 >> 2];
3267 ya(k, C);
3268 f = b[B >> 2] | 0;
3269 g = b[17008 + (f * 80 | 0) + (b[z >> 2] << 2) >> 2] | 0;
3270 b[B >> 2] = b[18608 + (f * 80 | 0) + (g * 20 | 0) >> 2];
3271 h = b[18608 + (f * 80 | 0) + (g * 20 | 0) + 16 >> 2] | 0;
3272
3273 if ((h | 0) > 0) {
3274 a = 0;
3275
3276 do {
3277 Ia(l);
3278 a = a + 1 | 0;
3279 } while ((a | 0) < (h | 0));
3280 }
3281
3282 h = 18608 + (f * 80 | 0) + (g * 20 | 0) + 4 | 0;
3283 b[s >> 2] = b[h >> 2];
3284 b[s + 4 >> 2] = b[h + 4 >> 2];
3285 b[s + 8 >> 2] = b[h + 8 >> 2];
3286 Ba(s, (b[m >> 2] | 0) * 3 | 0);
3287 za(l, s, l);
3288 xa(l);
3289 ya(l, t);
3290 E = +(b[n >> 2] | 0);
3291 e[u >> 3] = E * 3.0;
3292 e[o >> 3] = 0.0;
3293 F = E * -1.5;
3294 e[v >> 3] = F;
3295 e[p >> 3] = E * 2.598076211353316;
3296 e[w >> 3] = F;
3297 e[q >> 3] = E * -2.598076211353316;
3298
3299 switch (b[17008 + ((b[B >> 2] | 0) * 80 | 0) + (b[A >> 2] << 2) >> 2] | 0) {
3300 case 1:
3301 {
3302 a = v;
3303 f = u;
3304 break;
3305 }
3306
3307 case 3:
3308 {
3309 a = w;
3310 f = v;
3311 break;
3312 }
3313
3314 case 2:
3315 {
3316 a = u;
3317 f = w;
3318 break;
3319 }
3320
3321 default:
3322 {
3323 a = 11;
3324 break a;
3325 }
3326 }
3327
3328 uc(C, t, f, a, x);
3329 Va(x, b[B >> 2] | 0, j, 1, d + 8 + (b[d >> 2] << 4) | 0);
3330 b[d >> 2] = (b[d >> 2] | 0) + 1;
3331 }
3332
3333 if (i >>> 0 < 5) {
3334 ya(r, B);
3335 Va(B, b[A >> 2] | 0, j, 1, d + 8 + (b[d >> 2] << 4) | 0);
3336 b[d >> 2] = (b[d >> 2] | 0) + 1;
3337 }
3338 b[z >> 2] = b[A >> 2];
3339 b[z + 4 >> 2] = b[A + 4 >> 2];
3340 b[z + 8 >> 2] = b[A + 8 >> 2];
3341 b[z + 12 >> 2] = b[A + 12 >> 2];
3342 i = i + 1 | 0;
3343
3344 if (i >>> 0 >= 6) {
3345 a = 2;
3346 break;
3347 }
3348 }
3349
3350 if ((a | 0) == 2) {
3351 R = D;
3352 return;
3353 } else if ((a | 0) == 11) { G(22113, 22160, 571, 22170); }
3354 }
3355
3356 function Ya(a, c, d) {
3357 a = a | 0;
3358 c = c | 0;
3359 d = d | 0;
3360 var e = 0,
3361 f = 0,
3362 g = 0,
3363 h = 0,
3364 i = 0,
3365 j = 0;
3366 j = R;
3367 R = R + 128 | 0;
3368 e = j + 64 | 0;
3369 f = j;
3370 g = e;
3371 h = 20208;
3372 i = g + 60 | 0;
3373
3374 do {
3375 b[g >> 2] = b[h >> 2];
3376 g = g + 4 | 0;
3377 h = h + 4 | 0;
3378 } while ((g | 0) < (i | 0));
3379
3380 g = f;
3381 h = 20272;
3382 i = g + 60 | 0;
3383
3384 do {
3385 b[g >> 2] = b[h >> 2];
3386 g = g + 4 | 0;
3387 h = h + 4 | 0;
3388 } while ((g | 0) < (i | 0));
3389
3390 i = (Fb(b[c >> 2] | 0) | 0) == 0;
3391 e = i ? e : f;
3392 f = a + 4 | 0;
3393 Ma(f);
3394 Na(f);
3395
3396 if (Fb(b[c >> 2] | 0) | 0) {
3397 Ga(f);
3398 b[c >> 2] = (b[c >> 2] | 0) + 1;
3399 }
3400
3401 b[d >> 2] = b[a >> 2];
3402 c = d + 4 | 0;
3403 za(f, e, c);
3404 xa(c);
3405 b[d + 16 >> 2] = b[a >> 2];
3406 c = d + 20 | 0;
3407 za(f, e + 12 | 0, c);
3408 xa(c);
3409 b[d + 32 >> 2] = b[a >> 2];
3410 c = d + 36 | 0;
3411 za(f, e + 24 | 0, c);
3412 xa(c);
3413 b[d + 48 >> 2] = b[a >> 2];
3414 c = d + 52 | 0;
3415 za(f, e + 36 | 0, c);
3416 xa(c);
3417 b[d + 64 >> 2] = b[a >> 2];
3418 d = d + 68 | 0;
3419 za(f, e + 48 | 0, d);
3420 xa(d);
3421 R = j;
3422 return;
3423 }
3424
3425 function Za(a, c, d, e) {
3426 a = a | 0;
3427 c = c | 0;
3428 d = d | 0;
3429 e = e | 0;
3430 var f = 0,
3431 g = 0,
3432 h = 0,
3433 i = 0,
3434 j = 0,
3435 k = 0,
3436 l = 0,
3437 m = 0,
3438 n = 0,
3439 o = 0,
3440 p = 0;
3441 p = R;
3442 R = R + 32 | 0;
3443 n = p + 12 | 0;
3444 i = p;
3445 o = a + 4 | 0;
3446 m = b[16928 + (c << 2) >> 2] | 0;
3447 l = (e | 0) != 0;
3448 m = l ? m * 3 | 0 : m;
3449 f = b[o >> 2] | 0;
3450 k = a + 8 | 0;
3451 h = b[k >> 2] | 0;
3452
3453 if (l) {
3454 g = a + 12 | 0;
3455 e = b[g >> 2] | 0;
3456 f = h + f + e | 0;
3457
3458 if ((f | 0) == (m | 0)) {
3459 o = 1;
3460 R = p;
3461 return o | 0;
3462 } else { j = g; }
3463 } else {
3464 j = a + 12 | 0;
3465 e = b[j >> 2] | 0;
3466 f = h + f + e | 0;
3467 }
3468
3469 if ((f | 0) <= (m | 0)) {
3470 o = 0;
3471 R = p;
3472 return o | 0;
3473 }
3474
3475 do { if ((e | 0) > 0) {
3476 e = b[a >> 2] | 0;
3477
3478 if ((h | 0) > 0) {
3479 g = 18608 + (e * 80 | 0) + 60 | 0;
3480 e = a;
3481 break;
3482 }
3483
3484 e = 18608 + (e * 80 | 0) + 40 | 0;
3485
3486 if (!d) {
3487 g = e;
3488 e = a;
3489 } else {
3490 va(n, m, 0, 0);
3491 Aa(o, n, i);
3492 Ja(i);
3493 za(i, n, o);
3494 g = e;
3495 e = a;
3496 }
3497 } else {
3498 g = 18608 + ((b[a >> 2] | 0) * 80 | 0) + 20 | 0;
3499 e = a;
3500 } } while (0);
3501
3502 b[e >> 2] = b[g >> 2];
3503 f = g + 16 | 0;
3504
3505 if ((b[f >> 2] | 0) > 0) {
3506 e = 0;
3507
3508 do {
3509 Ia(o);
3510 e = e + 1 | 0;
3511 } while ((e | 0) < (b[f >> 2] | 0));
3512 }
3513
3514 a = g + 4 | 0;
3515 b[n >> 2] = b[a >> 2];
3516 b[n + 4 >> 2] = b[a + 4 >> 2];
3517 b[n + 8 >> 2] = b[a + 8 >> 2];
3518 c = b[16848 + (c << 2) >> 2] | 0;
3519 Ba(n, l ? c * 3 | 0 : c);
3520 za(o, n, o);
3521 xa(o);
3522 if (l) { e = ((b[k >> 2] | 0) + (b[o >> 2] | 0) + (b[j >> 2] | 0) | 0) == (m | 0) ? 1 : 2; }else { e = 2; }
3523 o = e;
3524 R = p;
3525 return o | 0;
3526 }
3527
3528 function _a(a, b) {
3529 a = a | 0;
3530 b = b | 0;
3531 var c = 0;
3532
3533 do { c = Za(a, b, 0, 1) | 0; } while ((c | 0) == 2);
3534
3535 return c | 0;
3536 }
3537
3538 function $a(a, c, d, f) {
3539 a = a | 0;
3540 c = c | 0;
3541 d = d | 0;
3542 f = f | 0;
3543 var g = 0,
3544 h = 0,
3545 i = 0,
3546 j = 0,
3547 k = 0,
3548 l = 0,
3549 m = 0,
3550 n = 0,
3551 o = 0,
3552 p = 0,
3553 q = 0,
3554 r = 0,
3555 s = 0,
3556 t = 0,
3557 u = 0,
3558 v = 0,
3559 w = 0,
3560 x = 0,
3561 y = 0,
3562 z = 0,
3563 A = 0.0,
3564 B = 0.0;
3565 z = R;
3566 R = R + 240 | 0;
3567 g = z + 224 | 0;
3568 t = z + 208 | 0;
3569 u = z;
3570 v = z + 192 | 0;
3571 w = z + 176 | 0;
3572 x = z + 160 | 0;
3573 p = z + 144 | 0;
3574 q = z + 128 | 0;
3575 r = z + 112 | 0;
3576 s = z + 96 | 0;
3577
3578 if (d | 0) {
3579 Xa(a, c, f);
3580 R = z;
3581 return;
3582 }
3583
3584 b[g >> 2] = c;
3585 b[t >> 2] = b[a >> 2];
3586 b[t + 4 >> 2] = b[a + 4 >> 2];
3587 b[t + 8 >> 2] = b[a + 8 >> 2];
3588 b[t + 12 >> 2] = b[a + 12 >> 2];
3589 ab(t, g, u);
3590 b[f >> 2] = 0;
3591 j = b[g >> 2] | 0;
3592 k = 16928 + (j << 2) | 0;
3593 l = p + 8 | 0;
3594 m = q + 8 | 0;
3595 n = r + 8 | 0;
3596 o = v + 4 | 0;
3597 h = 0;
3598 i = 0;
3599 d = -1;
3600
3601 a: while (1) {
3602 g = (i >>> 0) % 6 | 0;
3603 a = u + (g << 4) | 0;
3604 b[v >> 2] = b[a >> 2];
3605 b[v + 4 >> 2] = b[a + 4 >> 2];
3606 b[v + 8 >> 2] = b[a + 8 >> 2];
3607 b[v + 12 >> 2] = b[a + 12 >> 2];
3608 a = h;
3609 h = Za(v, j, 0, 1) | 0;
3610
3611 if ((i | 0) != 0 & (Fb(c) | 0) != 0 ? (a | 0) != 1 ? (b[v >> 2] | 0) != (d | 0) : 0 : 0) {
3612 ya(u + ((((g + 5 | 0) >>> 0) % 6 | 0) << 4) + 4 | 0, w);
3613 ya(u + (g << 4) + 4 | 0, x);
3614 A = +(b[k >> 2] | 0);
3615 e[p >> 3] = A * 3.0;
3616 e[l >> 3] = 0.0;
3617 B = A * -1.5;
3618 e[q >> 3] = B;
3619 e[m >> 3] = A * 2.598076211353316;
3620 e[r >> 3] = B;
3621 e[n >> 3] = A * -2.598076211353316;
3622 g = b[t >> 2] | 0;
3623
3624 switch (b[17008 + (g * 80 | 0) + (((d | 0) == (g | 0) ? b[v >> 2] | 0 : d) << 2) >> 2] | 0) {
3625 case 1:
3626 {
3627 a = q;
3628 d = p;
3629 break;
3630 }
3631
3632 case 3:
3633 {
3634 a = r;
3635 d = q;
3636 break;
3637 }
3638
3639 case 2:
3640 {
3641 a = p;
3642 d = r;
3643 break;
3644 }
3645
3646 default:
3647 {
3648 y = 9;
3649 break a;
3650 }
3651 }
3652
3653 uc(w, x, d, a, s);
3654
3655 if (!(vc(w, s) | 0) ? !(vc(x, s) | 0) : 0) {
3656 Va(s, b[t >> 2] | 0, j, 1, f + 8 + (b[f >> 2] << 4) | 0);
3657 b[f >> 2] = (b[f >> 2] | 0) + 1;
3658 }
3659 }
3660
3661 if (i >>> 0 < 6) {
3662 ya(o, w);
3663 Va(w, b[v >> 2] | 0, j, 1, f + 8 + (b[f >> 2] << 4) | 0);
3664 b[f >> 2] = (b[f >> 2] | 0) + 1;
3665 }
3666
3667 i = i + 1 | 0;
3668 if (i >>> 0 >= 7) { break; }else { d = b[v >> 2] | 0; }
3669 }
3670
3671 if ((y | 0) == 9) { G(22196, 22160, 735, 22241); }
3672 R = z;
3673 return;
3674 }
3675
3676 function ab(a, c, d) {
3677 a = a | 0;
3678 c = c | 0;
3679 d = d | 0;
3680 var e = 0,
3681 f = 0,
3682 g = 0,
3683 h = 0,
3684 i = 0,
3685 j = 0;
3686 j = R;
3687 R = R + 160 | 0;
3688 e = j + 80 | 0;
3689 f = j;
3690 g = e;
3691 h = 20336;
3692 i = g + 72 | 0;
3693
3694 do {
3695 b[g >> 2] = b[h >> 2];
3696 g = g + 4 | 0;
3697 h = h + 4 | 0;
3698 } while ((g | 0) < (i | 0));
3699
3700 g = f;
3701 h = 20416;
3702 i = g + 72 | 0;
3703
3704 do {
3705 b[g >> 2] = b[h >> 2];
3706 g = g + 4 | 0;
3707 h = h + 4 | 0;
3708 } while ((g | 0) < (i | 0));
3709
3710 i = (Fb(b[c >> 2] | 0) | 0) == 0;
3711 e = i ? e : f;
3712 f = a + 4 | 0;
3713 Ma(f);
3714 Na(f);
3715
3716 if (Fb(b[c >> 2] | 0) | 0) {
3717 Ga(f);
3718 b[c >> 2] = (b[c >> 2] | 0) + 1;
3719 }
3720
3721 b[d >> 2] = b[a >> 2];
3722 c = d + 4 | 0;
3723 za(f, e, c);
3724 xa(c);
3725 b[d + 16 >> 2] = b[a >> 2];
3726 c = d + 20 | 0;
3727 za(f, e + 12 | 0, c);
3728 xa(c);
3729 b[d + 32 >> 2] = b[a >> 2];
3730 c = d + 36 | 0;
3731 za(f, e + 24 | 0, c);
3732 xa(c);
3733 b[d + 48 >> 2] = b[a >> 2];
3734 c = d + 52 | 0;
3735 za(f, e + 36 | 0, c);
3736 xa(c);
3737 b[d + 64 >> 2] = b[a >> 2];
3738 c = d + 68 | 0;
3739 za(f, e + 48 | 0, c);
3740 xa(c);
3741 b[d + 80 >> 2] = b[a >> 2];
3742 d = d + 84 | 0;
3743 za(f, e + 60 | 0, d);
3744 xa(d);
3745 R = j;
3746 return;
3747 }
3748
3749 function bb(a) {
3750 a = +a;
3751 var b = 0.0;
3752 b = a < 0.0 ? a + 6.283185307179586 : a;
3753 return +(!(a >= 6.283185307179586) ? b : b + -6.283185307179586);
3754 }
3755
3756 function cb(a, b, c) {
3757 a = a | 0;
3758 b = b | 0;
3759 c = +c;
3760
3761 if (!(+q(+(+e[a >> 3] - +e[b >> 3])) < c)) {
3762 b = 0;
3763 return b | 0;
3764 }
3765
3766 b = +q(+(+e[a + 8 >> 3] - +e[b + 8 >> 3])) < c;
3767 return b | 0;
3768 }
3769
3770 function db(a, b) {
3771 a = a | 0;
3772 b = b | 0;
3773
3774 if (!(+q(+(+e[a >> 3] - +e[b >> 3])) < 1.7453292519943298e-11)) {
3775 b = 0;
3776 return b | 0;
3777 }
3778
3779 b = +q(+(+e[a + 8 >> 3] - +e[b + 8 >> 3])) < 1.7453292519943298e-11;
3780 return b | 0;
3781 }
3782
3783 function eb(a) {
3784 a = +a;
3785 if (!(a > 1.5707963267948966)) { return +a; }
3786
3787 do { a = a + -3.141592653589793; } while (a > 1.5707963267948966);
3788
3789 return +a;
3790 }
3791
3792 function fb(a) {
3793 a = +a;
3794 if (a > 3.141592653589793) { do { a = a + -6.283185307179586; } while (a > 3.141592653589793); }
3795 if (!(a < -3.141592653589793)) { return +a; }
3796
3797 do { a = a + 6.283185307179586; } while (a < -3.141592653589793);
3798
3799 return +a;
3800 }
3801
3802 function gb(a, b) {
3803 a = a | 0;
3804 b = b | 0;
3805 var c = 0.0,
3806 d = 0.0,
3807 f = 0.0;
3808 d = +e[b + 8 >> 3];
3809 f = +e[a + 8 >> 3];
3810 c = +q(+(d - f));
3811 if (c > 3.141592653589793) { c = +q(+((d < 0.0 ? d + 6.283185307179586 : d) - (f < 0.0 ? f + 6.283185307179586 : f))); }
3812 d = 1.5707963267948966 - +e[a >> 3];
3813 f = 1.5707963267948966 - +e[b >> 3];
3814 f = +t(+d) * +t(+f) + +t(+c) * (+u(+d) * +u(+f));
3815 f = f > 1.0 ? 1.0 : f;
3816 return +(+w(+(f < -1.0 ? -1.0 : f)) * 6371.007180918475);
3817 }
3818
3819 function hb(a, b) {
3820 a = a | 0;
3821 b = b | 0;
3822 var c = 0.0,
3823 d = 0.0,
3824 f = 0.0,
3825 g = 0.0,
3826 h = 0.0;
3827 g = +e[b >> 3];
3828 d = +t(+g);
3829 f = +e[b + 8 >> 3] - +e[a + 8 >> 3];
3830 h = d * +u(+f);
3831 c = +e[a >> 3];
3832 return + +z(+h, +(+u(+g) * +t(+c) - +t(+f) * (d * +u(+c))));
3833 }
3834
3835 function ib(a, c, d, f) {
3836 a = a | 0;
3837 c = +c;
3838 d = +d;
3839 f = f | 0;
3840 var g = 0,
3841 h = 0.0,
3842 i = 0.0,
3843 j = 0.0;
3844
3845 if (d < 1.0e-16) {
3846 b[f >> 2] = b[a >> 2];
3847 b[f + 4 >> 2] = b[a + 4 >> 2];
3848 b[f + 8 >> 2] = b[a + 8 >> 2];
3849 b[f + 12 >> 2] = b[a + 12 >> 2];
3850 return;
3851 }
3852
3853 h = c < 0.0 ? c + 6.283185307179586 : c;
3854 h = !(c >= 6.283185307179586) ? h : h + -6.283185307179586;
3855
3856 do { if (h < 1.0e-16) {
3857 c = +e[a >> 3] + d;
3858 e[f >> 3] = c;
3859 g = f;
3860 } else {
3861 g = +q(+(h + -3.141592653589793)) < 1.0e-16;
3862 c = +e[a >> 3];
3863
3864 if (g) {
3865 c = c - d;
3866 e[f >> 3] = c;
3867 g = f;
3868 break;
3869 }
3870
3871 i = +t(+d);
3872 d = +u(+d);
3873 c = i * +u(+c) + +t(+h) * (d * +t(+c));
3874 c = c > 1.0 ? 1.0 : c;
3875 c = +x(+(c < -1.0 ? -1.0 : c));
3876 e[f >> 3] = c;
3877
3878 if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {
3879 e[f >> 3] = 1.5707963267948966;
3880 e[f + 8 >> 3] = 0.0;
3881 return;
3882 }
3883
3884 if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {
3885 e[f >> 3] = -1.5707963267948966;
3886 e[f + 8 >> 3] = 0.0;
3887 return;
3888 }
3889
3890 j = +t(+c);
3891 h = d * +u(+h) / j;
3892 d = +e[a >> 3];
3893 c = (i - +u(+c) * +u(+d)) / +t(+d) / j;
3894 i = h > 1.0 ? 1.0 : h;
3895 c = c > 1.0 ? 1.0 : c;
3896 c = +e[a + 8 >> 3] + +z(+(i < -1.0 ? -1.0 : i), +(c < -1.0 ? -1.0 : c));
3897 if (c > 3.141592653589793) { do { c = c + -6.283185307179586; } while (c > 3.141592653589793); }
3898 if (c < -3.141592653589793) { do { c = c + 6.283185307179586; } while (c < -3.141592653589793); }
3899 e[f + 8 >> 3] = c;
3900 return;
3901 } } while (0);
3902
3903 if (+q(+(c + -1.5707963267948966)) < 1.0e-16) {
3904 e[g >> 3] = 1.5707963267948966;
3905 e[f + 8 >> 3] = 0.0;
3906 return;
3907 }
3908
3909 if (+q(+(c + 1.5707963267948966)) < 1.0e-16) {
3910 e[g >> 3] = -1.5707963267948966;
3911 e[f + 8 >> 3] = 0.0;
3912 return;
3913 }
3914
3915 c = +e[a + 8 >> 3];
3916 if (c > 3.141592653589793) { do { c = c + -6.283185307179586; } while (c > 3.141592653589793); }
3917 if (c < -3.141592653589793) { do { c = c + 6.283185307179586; } while (c < -3.141592653589793); }
3918 e[f + 8 >> 3] = c;
3919 return;
3920 }
3921
3922 function jb(a) {
3923 a = a | 0;
3924 return + +e[20496 + (a << 3) >> 3];
3925 }
3926
3927 function kb(a) {
3928 a = a | 0;
3929 return + +e[20624 + (a << 3) >> 3];
3930 }
3931
3932 function lb(a) {
3933 a = a | 0;
3934 return + +e[20752 + (a << 3) >> 3];
3935 }
3936
3937 function mb(a) {
3938 a = a | 0;
3939 return + +e[20880 + (a << 3) >> 3];
3940 }
3941
3942 function nb(a) {
3943 a = a | 0;
3944 var c = 0;
3945 c = 21008 + (a << 3) | 0;
3946 a = b[c >> 2] | 0;
3947 E(b[c + 4 >> 2] | 0);
3948 return a | 0;
3949 }
3950
3951 function ob(a, b) {
3952 a = a | 0;
3953 b = b | 0;
3954 b = Qc(a | 0, b | 0, 45) | 0;
3955 F() | 0;
3956 return b & 127 | 0;
3957 }
3958
3959 function pb(a, b) {
3960 a = a | 0;
3961 b = b | 0;
3962 var c = 0,
3963 d = 0,
3964 e = 0,
3965 f = 0,
3966 g = 0,
3967 h = 0;
3968
3969 if (!(0 == 0 & (b & 2013265920 | 0) == 134217728)) {
3970 b = 0;
3971 return b | 0;
3972 }
3973
3974 g = Qc(a | 0, b | 0, 45) | 0;
3975 F() | 0;
3976 g = g & 127;
3977
3978 if (g >>> 0 > 121) {
3979 b = 0;
3980 return b | 0;
3981 }
3982
3983 c = Qc(a | 0, b | 0, 52) | 0;
3984 F() | 0;
3985 c = c & 15;
3986
3987 do { if (c | 0) {
3988 e = 1;
3989 d = 0;
3990
3991 while (1) {
3992 f = Qc(a | 0, b | 0, (15 - e | 0) * 3 | 0) | 0;
3993 F() | 0;
3994 f = f & 7;
3995 if ((f | 0) != 0 & (d ^ 1)) { if ((f | 0) == 1 & (ia(g) | 0) != 0) {
3996 h = 0;
3997 d = 13;
3998 break;
3999 } else { d = 1; } }
4000
4001 if ((f | 0) == 7) {
4002 h = 0;
4003 d = 13;
4004 break;
4005 }
4006
4007 if (e >>> 0 < c >>> 0) { e = e + 1 | 0; }else {
4008 d = 9;
4009 break;
4010 }
4011 }
4012
4013 if ((d | 0) == 9) {
4014 if ((c | 0) == 15) { h = 1; }else { break; }
4015 return h | 0;
4016 } else if ((d | 0) == 13) { return h | 0; }
4017 } } while (0);
4018
4019 while (1) {
4020 h = Qc(a | 0, b | 0, (14 - c | 0) * 3 | 0) | 0;
4021 F() | 0;
4022
4023 if (!((h & 7 | 0) == 7 & 0 == 0)) {
4024 h = 0;
4025 d = 13;
4026 break;
4027 }
4028
4029 if (c >>> 0 < 14) { c = c + 1 | 0; }else {
4030 h = 1;
4031 d = 13;
4032 break;
4033 }
4034 }
4035
4036 if ((d | 0) == 13) { return h | 0; }
4037 return 0;
4038 }
4039
4040 function qb(a, b, c) {
4041 a = a | 0;
4042 b = b | 0;
4043 c = c | 0;
4044 var d = 0,
4045 e = 0;
4046 d = Qc(a | 0, b | 0, 52) | 0;
4047 F() | 0;
4048 d = d & 15;
4049
4050 if ((d | 0) >= (c | 0)) {
4051 if ((d | 0) != (c | 0)) { if (c >>> 0 <= 15) {
4052 e = Rc(c | 0, 0, 52) | 0;
4053 a = e | a;
4054 b = F() | 0 | b & -15728641;
4055 if ((d | 0) > (c | 0)) { do {
4056 e = Rc(7, 0, (14 - c | 0) * 3 | 0) | 0;
4057 c = c + 1 | 0;
4058 a = e | a;
4059 b = F() | 0 | b;
4060 } while ((c | 0) < (d | 0)); }
4061 } else {
4062 b = 0;
4063 a = 0;
4064 } }
4065 } else {
4066 b = 0;
4067 a = 0;
4068 }
4069
4070 E(b | 0);
4071 return a | 0;
4072 }
4073
4074 function rb(a, b, c) {
4075 a = a | 0;
4076 b = b | 0;
4077 c = c | 0;
4078 a = Qc(a | 0, b | 0, 52) | 0;
4079 F() | 0;
4080 a = a & 15;
4081
4082 if (!((c | 0) < 16 & (a | 0) <= (c | 0))) {
4083 c = 0;
4084 return c | 0;
4085 }
4086
4087 c = hc(7, c - a | 0) | 0;
4088 return c | 0;
4089 }
4090
4091 function sb(a, c, d, e) {
4092 a = a | 0;
4093 c = c | 0;
4094 d = d | 0;
4095 e = e | 0;
4096 var f = 0,
4097 g = 0,
4098 h = 0,
4099 i = 0,
4100 j = 0,
4101 k = 0,
4102 l = 0;
4103 h = Qc(a | 0, c | 0, 52) | 0;
4104 F() | 0;
4105 h = h & 15;
4106 if (!((d | 0) < 16 & (h | 0) <= (d | 0))) { return; }
4107
4108 if ((h | 0) == (d | 0)) {
4109 d = e;
4110 b[d >> 2] = a;
4111 b[d + 4 >> 2] = c;
4112 return;
4113 }
4114
4115 j = hc(7, d - h | 0) | 0;
4116 k = (j | 0) / 7 | 0;
4117 i = Qc(a | 0, c | 0, 45) | 0;
4118 F() | 0;
4119 if (!(ia(i & 127) | 0)) { g = 0; }else {
4120 a: do { if (!h) { f = 0; }else {
4121 g = 1;
4122
4123 while (1) {
4124 f = Qc(a | 0, c | 0, (15 - g | 0) * 3 | 0) | 0;
4125 F() | 0;
4126 f = f & 7;
4127 if (f | 0) { break a; }
4128 if (g >>> 0 < h >>> 0) { g = g + 1 | 0; }else {
4129 f = 0;
4130 break;
4131 }
4132 }
4133 } } while (0);
4134
4135 g = (f | 0) == 0;
4136 }
4137 l = Rc(h + 1 | 0, 0, 52) | 0;
4138 f = F() | 0 | c & -15728641;
4139 i = (14 - h | 0) * 3 | 0;
4140 c = Rc(7, 0, i | 0) | 0;
4141 c = (l | a) & ~c;
4142 h = f & ~(F() | 0);
4143 sb(c, h, d, e);
4144 f = e + (k << 3) | 0;
4145
4146 if (!g) {
4147 l = Rc(1, 0, i | 0) | 0;
4148 sb(l | c, F() | 0 | h, d, f);
4149 l = f + (k << 3) | 0;
4150 j = Rc(2, 0, i | 0) | 0;
4151 sb(j | c, F() | 0 | h, d, l);
4152 l = l + (k << 3) | 0;
4153 j = Rc(3, 0, i | 0) | 0;
4154 sb(j | c, F() | 0 | h, d, l);
4155 l = l + (k << 3) | 0;
4156 j = Rc(4, 0, i | 0) | 0;
4157 sb(j | c, F() | 0 | h, d, l);
4158 l = l + (k << 3) | 0;
4159 j = Rc(5, 0, i | 0) | 0;
4160 sb(j | c, F() | 0 | h, d, l);
4161 j = Rc(6, 0, i | 0) | 0;
4162 sb(j | c, F() | 0 | h, d, l + (k << 3) | 0);
4163 return;
4164 }
4165
4166 g = f + (k << 3) | 0;
4167
4168 if ((j | 0) > 6) {
4169 j = f + 8 | 0;
4170 l = (g >>> 0 > j >>> 0 ? g : j) + -1 + (0 - f) | 0;
4171 Uc(f | 0, 0, l + 8 & -8 | 0) | 0;
4172 f = j + (l >>> 3 << 3) | 0;
4173 }
4174
4175 l = Rc(2, 0, i | 0) | 0;
4176 sb(l | c, F() | 0 | h, d, f);
4177 l = f + (k << 3) | 0;
4178 j = Rc(3, 0, i | 0) | 0;
4179 sb(j | c, F() | 0 | h, d, l);
4180 l = l + (k << 3) | 0;
4181 j = Rc(4, 0, i | 0) | 0;
4182 sb(j | c, F() | 0 | h, d, l);
4183 l = l + (k << 3) | 0;
4184 j = Rc(5, 0, i | 0) | 0;
4185 sb(j | c, F() | 0 | h, d, l);
4186 j = Rc(6, 0, i | 0) | 0;
4187 sb(j | c, F() | 0 | h, d, l + (k << 3) | 0);
4188 return;
4189 }
4190
4191 function tb(a, b) {
4192 a = a | 0;
4193 b = b | 0;
4194 var c = 0,
4195 d = 0,
4196 e = 0;
4197 e = Qc(a | 0, b | 0, 45) | 0;
4198 F() | 0;
4199
4200 if (!(ia(e & 127) | 0)) {
4201 e = 0;
4202 return e | 0;
4203 }
4204
4205 e = Qc(a | 0, b | 0, 52) | 0;
4206 F() | 0;
4207 e = e & 15;
4208
4209 a: do { if (!e) { c = 0; }else {
4210 d = 1;
4211
4212 while (1) {
4213 c = Qc(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;
4214 F() | 0;
4215 c = c & 7;
4216 if (c | 0) { break a; }
4217 if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else {
4218 c = 0;
4219 break;
4220 }
4221 }
4222 } } while (0);
4223
4224 e = (c | 0) == 0 & 1;
4225 return e | 0;
4226 }
4227
4228 function ub(a, b, c) {
4229 a = a | 0;
4230 b = b | 0;
4231 c = c | 0;
4232 var d = 0,
4233 e = 0;
4234 d = Qc(a | 0, b | 0, 52) | 0;
4235 F() | 0;
4236 d = d & 15;
4237
4238 if ((c | 0) < 16 & (d | 0) <= (c | 0)) {
4239 if ((d | 0) != (c | 0)) {
4240 e = Rc(c | 0, 0, 52) | 0;
4241 a = e | a;
4242 b = F() | 0 | b & -15728641;
4243 if ((d | 0) < (c | 0)) { do {
4244 e = Rc(7, 0, (14 - d | 0) * 3 | 0) | 0;
4245 d = d + 1 | 0;
4246 a = a & ~e;
4247 b = b & ~(F() | 0);
4248 } while ((d | 0) < (c | 0)); }
4249 }
4250 } else {
4251 b = 0;
4252 a = 0;
4253 }
4254
4255 E(b | 0);
4256 return a | 0;
4257 }
4258
4259 function vb(a, c, d) {
4260 a = a | 0;
4261 c = c | 0;
4262 d = d | 0;
4263 var e = 0,
4264 f = 0,
4265 g = 0,
4266 h = 0,
4267 i = 0,
4268 j = 0,
4269 k = 0,
4270 l = 0,
4271 m = 0,
4272 n = 0,
4273 o = 0,
4274 p = 0,
4275 q = 0,
4276 r = 0,
4277 s = 0,
4278 t = 0,
4279 u = 0,
4280 v = 0,
4281 w = 0,
4282 x = 0;
4283 f = a;
4284 e = b[f >> 2] | 0;
4285 f = b[f + 4 >> 2] | 0;
4286
4287 if (0 == 0 & (f & 15728640 | 0) == 0) {
4288 if ((d | 0) <= 0) {
4289 x = 0;
4290 return x | 0;
4291 }
4292
4293 x = c;
4294 b[x >> 2] = e;
4295 b[x + 4 >> 2] = f;
4296
4297 if ((d | 0) == 1) {
4298 x = 0;
4299 return x | 0;
4300 }
4301
4302 e = 1;
4303
4304 do {
4305 v = a + (e << 3) | 0;
4306 w = b[v + 4 >> 2] | 0;
4307 x = c + (e << 3) | 0;
4308 b[x >> 2] = b[v >> 2];
4309 b[x + 4 >> 2] = w;
4310 e = e + 1 | 0;
4311 } while ((e | 0) != (d | 0));
4312
4313 e = 0;
4314 return e | 0;
4315 }
4316
4317 v = d << 3;
4318 w = Ic(v) | 0;
4319 Tc(w | 0, a | 0, v | 0) | 0;
4320 u = Kc(d, 8) | 0;
4321
4322 a: do { if (d | 0) {
4323 e = d;
4324
4325 b: while (1) {
4326 h = w;
4327 l = b[h >> 2] | 0;
4328 h = b[h + 4 >> 2] | 0;
4329 s = Qc(l | 0, h | 0, 52) | 0;
4330 F() | 0;
4331 s = s & 15;
4332 t = s + -1 | 0;
4333 r = (e | 0) > 0;
4334
4335 c: do { if (r) {
4336 q = ((e | 0) < 0) << 31 >> 31;
4337 o = Rc(t | 0, 0, 52) | 0;
4338 p = F() | 0;
4339
4340 if (t >>> 0 > 15) {
4341 f = 0;
4342 a = l;
4343 d = h;
4344
4345 while (1) {
4346 if (!((a | 0) == 0 & (d | 0) == 0)) {
4347 g = Qc(a | 0, d | 0, 52) | 0;
4348 F() | 0;
4349 g = g & 15;
4350 i = (g | 0) < (t | 0);
4351 g = (g | 0) == (t | 0);
4352 k = i ? 0 : g ? a : 0;
4353 a = i ? 0 : g ? d : 0;
4354 d = Pc(k | 0, a | 0, e | 0, q | 0) | 0;
4355 F() | 0;
4356 g = u + (d << 3) | 0;
4357 i = g;
4358 j = b[i >> 2] | 0;
4359 i = b[i + 4 >> 2] | 0;
4360 if ((j | 0) == 0 & (i | 0) == 0) { d = k; }else {
4361 o = 0;
4362 n = d;
4363 m = j;
4364 d = k;
4365 j = g;
4366
4367 while (1) {
4368 if ((o | 0) > (e | 0)) {
4369 x = 33;
4370 break b;
4371 }
4372
4373 if ((m | 0) == (d | 0) & (i & -117440513 | 0) == (a | 0)) {
4374 g = Qc(m | 0, i | 0, 56) | 0;
4375 F() | 0;
4376 g = g & 7;
4377
4378 if ((g | 0) == 7) {
4379 x = 38;
4380 break b;
4381 }
4382
4383 p = Rc(g + 1 | 0, 0, 56) | 0;
4384 a = F() | 0 | a & -117440513;
4385 b[j >> 2] = 0;
4386 b[j + 4 >> 2] = 0;
4387 j = n;
4388 d = p | d;
4389 } else { j = (n + 1 | 0) % (e | 0) | 0; }
4390
4391 g = u + (j << 3) | 0;
4392 i = g;
4393 m = b[i >> 2] | 0;
4394 i = b[i + 4 >> 2] | 0;
4395 if ((m | 0) == 0 & (i | 0) == 0) { break; }else {
4396 o = o + 1 | 0;
4397 n = j;
4398 j = g;
4399 }
4400 }
4401 }
4402 p = g;
4403 b[p >> 2] = d;
4404 b[p + 4 >> 2] = a;
4405 }
4406
4407 f = f + 1 | 0;
4408 if ((f | 0) >= (e | 0)) { break c; }
4409 d = w + (f << 3) | 0;
4410 a = b[d >> 2] | 0;
4411 d = b[d + 4 >> 2] | 0;
4412 }
4413 }
4414
4415 f = 0;
4416 a = l;
4417 d = h;
4418
4419 while (1) {
4420 if (!((a | 0) == 0 & (d | 0) == 0)) {
4421 i = Qc(a | 0, d | 0, 52) | 0;
4422 F() | 0;
4423 i = i & 15;
4424
4425 if ((i | 0) >= (t | 0)) {
4426 if ((i | 0) != (t | 0)) {
4427 a = a | o;
4428 d = d & -15728641 | p;
4429
4430 if (i >>> 0 >= s >>> 0) {
4431 g = t;
4432
4433 do {
4434 n = Rc(7, 0, (14 - g | 0) * 3 | 0) | 0;
4435 g = g + 1 | 0;
4436 a = n | a;
4437 d = F() | 0 | d;
4438 } while (g >>> 0 < i >>> 0);
4439 }
4440 }
4441 } else {
4442 a = 0;
4443 d = 0;
4444 }
4445
4446 i = Pc(a | 0, d | 0, e | 0, q | 0) | 0;
4447 F() | 0;
4448 g = u + (i << 3) | 0;
4449 j = g;
4450 k = b[j >> 2] | 0;
4451 j = b[j + 4 >> 2] | 0;
4452
4453 if (!((k | 0) == 0 & (j | 0) == 0)) {
4454 n = 0;
4455 m = k;
4456 k = g;
4457
4458 while (1) {
4459 if ((n | 0) > (e | 0)) {
4460 x = 33;
4461 break b;
4462 }
4463
4464 if ((m | 0) == (a | 0) & (j & -117440513 | 0) == (d | 0)) {
4465 g = Qc(m | 0, j | 0, 56) | 0;
4466 F() | 0;
4467 g = g & 7;
4468
4469 if ((g | 0) == 7) {
4470 x = 38;
4471 break b;
4472 }
4473
4474 m = Rc(g + 1 | 0, 0, 56) | 0;
4475 d = F() | 0 | d & -117440513;
4476 b[k >> 2] = 0;
4477 b[k + 4 >> 2] = 0;
4478 a = m | a;
4479 } else { i = (i + 1 | 0) % (e | 0) | 0; }
4480
4481 g = u + (i << 3) | 0;
4482 j = g;
4483 m = b[j >> 2] | 0;
4484 j = b[j + 4 >> 2] | 0;
4485 if ((m | 0) == 0 & (j | 0) == 0) { break; }else {
4486 n = n + 1 | 0;
4487 k = g;
4488 }
4489 }
4490 }
4491
4492 n = g;
4493 b[n >> 2] = a;
4494 b[n + 4 >> 2] = d;
4495 }
4496
4497 f = f + 1 | 0;
4498 if ((f | 0) >= (e | 0)) { break c; }
4499 d = w + (f << 3) | 0;
4500 a = b[d >> 2] | 0;
4501 d = b[d + 4 >> 2] | 0;
4502 }
4503 } } while (0);
4504
4505 if ((e + 5 | 0) >>> 0 < 11) {
4506 x = 84;
4507 break;
4508 }
4509
4510 q = Ic(((e | 0) / 6 | 0) << 3) | 0;
4511
4512 d: do { if (r) {
4513 o = 0;
4514 n = 0;
4515
4516 do {
4517 i = u + (o << 3) | 0;
4518 a = i;
4519 f = b[a >> 2] | 0;
4520 a = b[a + 4 >> 2] | 0;
4521
4522 if (!((f | 0) == 0 & (a | 0) == 0)) {
4523 j = Qc(f | 0, a | 0, 56) | 0;
4524 F() | 0;
4525 j = j & 7;
4526 d = j + 1 | 0;
4527 k = a & -117440513;
4528 p = Qc(f | 0, a | 0, 45) | 0;
4529 F() | 0;
4530
4531 e: do { if (ia(p & 127) | 0) {
4532 m = Qc(f | 0, a | 0, 52) | 0;
4533 F() | 0;
4534 m = m & 15;
4535
4536 if (m | 0) {
4537 g = 1;
4538
4539 while (1) {
4540 p = Rc(7, 0, (15 - g | 0) * 3 | 0) | 0;
4541 if (!((f & p | 0) == 0 & (k & (F() | 0) | 0) == 0)) { break e; }
4542 if (g >>> 0 < m >>> 0) { g = g + 1 | 0; }else { break; }
4543 }
4544 }
4545
4546 a = Rc(d | 0, 0, 56) | 0;
4547 f = a | f;
4548 a = F() | 0 | k;
4549 d = i;
4550 b[d >> 2] = f;
4551 b[d + 4 >> 2] = a;
4552 d = j + 2 | 0;
4553 } } while (0);
4554
4555 if ((d | 0) == 7) {
4556 p = q + (n << 3) | 0;
4557 b[p >> 2] = f;
4558 b[p + 4 >> 2] = a & -117440513;
4559 n = n + 1 | 0;
4560 }
4561 }
4562
4563 o = o + 1 | 0;
4564 } while ((o | 0) != (e | 0));
4565
4566 if (r) {
4567 p = ((e | 0) < 0) << 31 >> 31;
4568 m = Rc(t | 0, 0, 52) | 0;
4569 o = F() | 0;
4570
4571 if (t >>> 0 > 15) {
4572 a = 0;
4573 f = 0;
4574
4575 while (1) {
4576 do { if (!((l | 0) == 0 & (h | 0) == 0)) {
4577 j = Qc(l | 0, h | 0, 52) | 0;
4578 F() | 0;
4579 j = j & 15;
4580 g = (j | 0) < (t | 0);
4581 j = (j | 0) == (t | 0);
4582 i = g ? 0 : j ? l : 0;
4583 j = g ? 0 : j ? h : 0;
4584 g = Pc(i | 0, j | 0, e | 0, p | 0) | 0;
4585 F() | 0;
4586 d = 0;
4587
4588 while (1) {
4589 if ((d | 0) > (e | 0)) {
4590 x = 83;
4591 break b;
4592 }
4593
4594 s = u + (g << 3) | 0;
4595 k = b[s + 4 >> 2] | 0;
4596
4597 if ((k & -117440513 | 0) == (j | 0) ? (b[s >> 2] | 0) == (i | 0) : 0) {
4598 x = 55;
4599 break;
4600 }
4601
4602 g = (g + 1 | 0) % (e | 0) | 0;
4603 s = u + (g << 3) | 0;
4604 if ((b[s >> 2] | 0) == (i | 0) ? (b[s + 4 >> 2] | 0) == (j | 0) : 0) { break; }else { d = d + 1 | 0; }
4605 }
4606
4607 if ((x | 0) == 55 ? (x = 0, 0 == 0 & (k & 117440512 | 0) == 100663296) : 0) { break; }
4608 s = c + (f << 3) | 0;
4609 b[s >> 2] = l;
4610 b[s + 4 >> 2] = h;
4611 f = f + 1 | 0;
4612 } } while (0);
4613
4614 a = a + 1 | 0;
4615
4616 if ((a | 0) >= (e | 0)) {
4617 e = n;
4618 break d;
4619 }
4620
4621 h = w + (a << 3) | 0;
4622 l = b[h >> 2] | 0;
4623 h = b[h + 4 >> 2] | 0;
4624 }
4625 }
4626
4627 a = 0;
4628 f = 0;
4629
4630 while (1) {
4631 do { if (!((l | 0) == 0 & (h | 0) == 0)) {
4632 j = Qc(l | 0, h | 0, 52) | 0;
4633 F() | 0;
4634 j = j & 15;
4635 if ((j | 0) >= (t | 0)) {
4636 if ((j | 0) != (t | 0)) {
4637 d = l | m;
4638 g = h & -15728641 | o;
4639 if (j >>> 0 < s >>> 0) { j = g; }else {
4640 i = t;
4641
4642 do {
4643 r = Rc(7, 0, (14 - i | 0) * 3 | 0) | 0;
4644 i = i + 1 | 0;
4645 d = r | d;
4646 g = F() | 0 | g;
4647 } while (i >>> 0 < j >>> 0);
4648
4649 j = g;
4650 }
4651 } else {
4652 d = l;
4653 j = h;
4654 }
4655 } else {
4656 d = 0;
4657 j = 0;
4658 }
4659 i = Pc(d | 0, j | 0, e | 0, p | 0) | 0;
4660 F() | 0;
4661 g = 0;
4662
4663 while (1) {
4664 if ((g | 0) > (e | 0)) {
4665 x = 83;
4666 break b;
4667 }
4668
4669 r = u + (i << 3) | 0;
4670 k = b[r + 4 >> 2] | 0;
4671
4672 if ((k & -117440513 | 0) == (j | 0) ? (b[r >> 2] | 0) == (d | 0) : 0) {
4673 x = 78;
4674 break;
4675 }
4676
4677 i = (i + 1 | 0) % (e | 0) | 0;
4678 r = u + (i << 3) | 0;
4679 if ((b[r >> 2] | 0) == (d | 0) ? (b[r + 4 >> 2] | 0) == (j | 0) : 0) { break; }else { g = g + 1 | 0; }
4680 }
4681
4682 if ((x | 0) == 78 ? (x = 0, 0 == 0 & (k & 117440512 | 0) == 100663296) : 0) { break; }
4683 r = c + (f << 3) | 0;
4684 b[r >> 2] = l;
4685 b[r + 4 >> 2] = h;
4686 f = f + 1 | 0;
4687 } } while (0);
4688
4689 a = a + 1 | 0;
4690
4691 if ((a | 0) >= (e | 0)) {
4692 e = n;
4693 break d;
4694 }
4695
4696 h = w + (a << 3) | 0;
4697 l = b[h >> 2] | 0;
4698 h = b[h + 4 >> 2] | 0;
4699 }
4700 } else {
4701 f = 0;
4702 e = n;
4703 }
4704 } else {
4705 f = 0;
4706 e = 0;
4707 } } while (0);
4708
4709 Uc(u | 0, 0, v | 0) | 0;
4710 Tc(w | 0, q | 0, e << 3 | 0) | 0;
4711 Jc(q);
4712 if (!e) { break a; }else { c = c + (f << 3) | 0; }
4713 }
4714
4715 if ((x | 0) == 33) {
4716 Jc(w);
4717 Jc(u);
4718 x = -1;
4719 return x | 0;
4720 } else if ((x | 0) == 38) {
4721 Jc(w);
4722 Jc(u);
4723 x = -2;
4724 return x | 0;
4725 } else if ((x | 0) == 83) {
4726 Jc(q);
4727 Jc(w);
4728 Jc(u);
4729 x = -1;
4730 return x | 0;
4731 } else if ((x | 0) == 84) {
4732 Tc(c | 0, w | 0, e << 3 | 0) | 0;
4733 break;
4734 }
4735 } } while (0);
4736
4737 Jc(w);
4738 Jc(u);
4739 x = 0;
4740 return x | 0;
4741 }
4742
4743 function wb(a, c, d, e, f) {
4744 a = a | 0;
4745 c = c | 0;
4746 d = d | 0;
4747 e = e | 0;
4748 f = f | 0;
4749 var g = 0,
4750 h = 0,
4751 i = 0,
4752 j = 0,
4753 k = 0,
4754 l = 0;
4755
4756 if ((c | 0) <= 0) {
4757 f = 0;
4758 return f | 0;
4759 }
4760
4761 if ((f | 0) >= 16) {
4762 g = 0;
4763
4764 while (1) {
4765 l = a + (g << 3) | 0;
4766
4767 if (!((b[l >> 2] | 0) == 0 & (b[l + 4 >> 2] | 0) == 0)) {
4768 g = 14;
4769 break;
4770 }
4771
4772 g = g + 1 | 0;
4773
4774 if ((g | 0) >= (c | 0)) {
4775 h = 0;
4776 g = 16;
4777 break;
4778 }
4779 }
4780
4781 if ((g | 0) == 14) { return ((e | 0) > 0 ? -2 : -1) | 0; }else if ((g | 0) == 16) { return h | 0; }
4782 }
4783
4784 g = 0;
4785 l = 0;
4786
4787 a: while (1) {
4788 k = a + (l << 3) | 0;
4789 i = k;
4790 h = b[i >> 2] | 0;
4791 i = b[i + 4 >> 2] | 0;
4792
4793 do { if (!((h | 0) == 0 & (i | 0) == 0)) {
4794 if ((g | 0) >= (e | 0)) {
4795 h = -1;
4796 g = 16;
4797 break a;
4798 }
4799
4800 j = Qc(h | 0, i | 0, 52) | 0;
4801 F() | 0;
4802 j = j & 15;
4803
4804 if ((j | 0) > (f | 0)) {
4805 h = -2;
4806 g = 16;
4807 break a;
4808 }
4809
4810 if ((j | 0) == (f | 0)) {
4811 k = d + (g << 3) | 0;
4812 b[k >> 2] = h;
4813 b[k + 4 >> 2] = i;
4814 g = g + 1 | 0;
4815 break;
4816 }
4817
4818 h = (hc(7, f - j | 0) | 0) + g | 0;
4819
4820 if ((h | 0) > (e | 0)) {
4821 h = -1;
4822 g = 16;
4823 break a;
4824 }
4825
4826 sb(b[k >> 2] | 0, b[k + 4 >> 2] | 0, f, d + (g << 3) | 0);
4827 g = h;
4828 } } while (0);
4829
4830 l = l + 1 | 0;
4831
4832 if ((l | 0) >= (c | 0)) {
4833 h = 0;
4834 g = 16;
4835 break;
4836 }
4837 }
4838
4839 if ((g | 0) == 16) { return h | 0; }
4840 return 0;
4841 }
4842
4843 function xb(a, c, d) {
4844 a = a | 0;
4845 c = c | 0;
4846 d = d | 0;
4847 var e = 0,
4848 f = 0,
4849 g = 0,
4850 h = 0;
4851
4852 if ((c | 0) <= 0) {
4853 d = 0;
4854 return d | 0;
4855 }
4856
4857 if ((d | 0) >= 16) {
4858 e = 0;
4859
4860 while (1) {
4861 h = a + (e << 3) | 0;
4862
4863 if (!((b[h >> 2] | 0) == 0 & (b[h + 4 >> 2] | 0) == 0)) {
4864 e = -1;
4865 f = 13;
4866 break;
4867 }
4868
4869 e = e + 1 | 0;
4870
4871 if ((e | 0) >= (c | 0)) {
4872 e = 0;
4873 f = 13;
4874 break;
4875 }
4876 }
4877
4878 if ((f | 0) == 13) { return e | 0; }
4879 }
4880
4881 e = 0;
4882 h = 0;
4883
4884 a: while (1) {
4885 f = a + (h << 3) | 0;
4886 g = b[f >> 2] | 0;
4887 f = b[f + 4 >> 2] | 0;
4888
4889 do { if (!((g | 0) == 0 & (f | 0) == 0)) {
4890 f = Qc(g | 0, f | 0, 52) | 0;
4891 F() | 0;
4892 f = f & 15;
4893
4894 if ((f | 0) > (d | 0)) {
4895 e = -1;
4896 f = 13;
4897 break a;
4898 }
4899
4900 if ((f | 0) == (d | 0)) {
4901 e = e + 1 | 0;
4902 break;
4903 } else {
4904 e = (hc(7, d - f | 0) | 0) + e | 0;
4905 break;
4906 }
4907 } } while (0);
4908
4909 h = h + 1 | 0;
4910
4911 if ((h | 0) >= (c | 0)) {
4912 f = 13;
4913 break;
4914 }
4915 }
4916
4917 if ((f | 0) == 13) { return e | 0; }
4918 return 0;
4919 }
4920
4921 function yb(a, b) {
4922 a = a | 0;
4923 b = b | 0;
4924 b = Qc(a | 0, b | 0, 52) | 0;
4925 F() | 0;
4926 return b & 1 | 0;
4927 }
4928
4929 function zb(a, b) {
4930 a = a | 0;
4931 b = b | 0;
4932 var c = 0,
4933 d = 0,
4934 e = 0;
4935 e = Qc(a | 0, b | 0, 52) | 0;
4936 F() | 0;
4937 e = e & 15;
4938
4939 if (!e) {
4940 e = 0;
4941 return e | 0;
4942 }
4943
4944 d = 1;
4945
4946 while (1) {
4947 c = Qc(a | 0, b | 0, (15 - d | 0) * 3 | 0) | 0;
4948 F() | 0;
4949 c = c & 7;
4950
4951 if (c | 0) {
4952 d = 5;
4953 break;
4954 }
4955
4956 if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else {
4957 c = 0;
4958 d = 5;
4959 break;
4960 }
4961 }
4962
4963 if ((d | 0) == 5) { return c | 0; }
4964 return 0;
4965 }
4966
4967 function Ab(a, b) {
4968 a = a | 0;
4969 b = b | 0;
4970 var c = 0,
4971 d = 0,
4972 e = 0,
4973 f = 0,
4974 g = 0,
4975 h = 0,
4976 i = 0;
4977 i = Qc(a | 0, b | 0, 52) | 0;
4978 F() | 0;
4979 i = i & 15;
4980
4981 if (!i) {
4982 h = b;
4983 i = a;
4984 E(h | 0);
4985 return i | 0;
4986 }
4987
4988 h = 1;
4989 c = 0;
4990
4991 while (1) {
4992 f = (15 - h | 0) * 3 | 0;
4993 d = Rc(7, 0, f | 0) | 0;
4994 e = F() | 0;
4995 g = Qc(a | 0, b | 0, f | 0) | 0;
4996 F() | 0;
4997 f = Rc(Ka(g & 7) | 0, 0, f | 0) | 0;
4998 g = F() | 0;
4999 a = f | a & ~d;
5000 b = g | b & ~e;
5001
5002 a: do { if (!c) { if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {
5003 d = Qc(a | 0, b | 0, 52) | 0;
5004 F() | 0;
5005 d = d & 15;
5006 if (!d) { c = 1; }else {
5007 c = 1;
5008
5009 b: while (1) {
5010 g = Qc(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;
5011 F() | 0;
5012
5013 switch (g & 7) {
5014 case 1:
5015 break b;
5016
5017 case 0:
5018 break;
5019
5020 default:
5021 {
5022 c = 1;
5023 break a;
5024 }
5025 }
5026
5027 if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {
5028 c = 1;
5029 break a;
5030 }
5031 }
5032
5033 c = 1;
5034
5035 while (1) {
5036 g = (15 - c | 0) * 3 | 0;
5037 e = Qc(a | 0, b | 0, g | 0) | 0;
5038 F() | 0;
5039 f = Rc(7, 0, g | 0) | 0;
5040 b = b & ~(F() | 0);
5041 g = Rc(Ka(e & 7) | 0, 0, g | 0) | 0;
5042 a = a & ~f | g;
5043 b = b | (F() | 0);
5044 if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {
5045 c = 1;
5046 break;
5047 }
5048 }
5049 }
5050 } else { c = 0; } } } while (0);
5051
5052 if (h >>> 0 < i >>> 0) { h = h + 1 | 0; }else { break; }
5053 }
5054
5055 E(b | 0);
5056 return a | 0;
5057 }
5058
5059 function Bb(a, b) {
5060 a = a | 0;
5061 b = b | 0;
5062 var c = 0,
5063 d = 0,
5064 e = 0,
5065 f = 0,
5066 g = 0;
5067 d = Qc(a | 0, b | 0, 52) | 0;
5068 F() | 0;
5069 d = d & 15;
5070
5071 if (!d) {
5072 c = b;
5073 d = a;
5074 E(c | 0);
5075 return d | 0;
5076 }
5077
5078 c = 1;
5079
5080 while (1) {
5081 f = (15 - c | 0) * 3 | 0;
5082 g = Qc(a | 0, b | 0, f | 0) | 0;
5083 F() | 0;
5084 e = Rc(7, 0, f | 0) | 0;
5085 b = b & ~(F() | 0);
5086 f = Rc(Ka(g & 7) | 0, 0, f | 0) | 0;
5087 a = f | a & ~e;
5088 b = F() | 0 | b;
5089 if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else { break; }
5090 }
5091
5092 E(b | 0);
5093 return a | 0;
5094 }
5095
5096 function Cb(a, b) {
5097 a = a | 0;
5098 b = b | 0;
5099 var c = 0,
5100 d = 0,
5101 e = 0,
5102 f = 0,
5103 g = 0,
5104 h = 0,
5105 i = 0;
5106 i = Qc(a | 0, b | 0, 52) | 0;
5107 F() | 0;
5108 i = i & 15;
5109
5110 if (!i) {
5111 h = b;
5112 i = a;
5113 E(h | 0);
5114 return i | 0;
5115 }
5116
5117 h = 1;
5118 c = 0;
5119
5120 while (1) {
5121 f = (15 - h | 0) * 3 | 0;
5122 d = Rc(7, 0, f | 0) | 0;
5123 e = F() | 0;
5124 g = Qc(a | 0, b | 0, f | 0) | 0;
5125 F() | 0;
5126 f = Rc(La(g & 7) | 0, 0, f | 0) | 0;
5127 g = F() | 0;
5128 a = f | a & ~d;
5129 b = g | b & ~e;
5130
5131 a: do { if (!c) { if (!((f & d | 0) == 0 & (g & e | 0) == 0)) {
5132 d = Qc(a | 0, b | 0, 52) | 0;
5133 F() | 0;
5134 d = d & 15;
5135 if (!d) { c = 1; }else {
5136 c = 1;
5137
5138 b: while (1) {
5139 g = Qc(a | 0, b | 0, (15 - c | 0) * 3 | 0) | 0;
5140 F() | 0;
5141
5142 switch (g & 7) {
5143 case 1:
5144 break b;
5145
5146 case 0:
5147 break;
5148
5149 default:
5150 {
5151 c = 1;
5152 break a;
5153 }
5154 }
5155
5156 if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {
5157 c = 1;
5158 break a;
5159 }
5160 }
5161
5162 c = 1;
5163
5164 while (1) {
5165 e = (15 - c | 0) * 3 | 0;
5166 f = Rc(7, 0, e | 0) | 0;
5167 g = b & ~(F() | 0);
5168 b = Qc(a | 0, b | 0, e | 0) | 0;
5169 F() | 0;
5170 b = Rc(La(b & 7) | 0, 0, e | 0) | 0;
5171 a = a & ~f | b;
5172 b = g | (F() | 0);
5173 if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {
5174 c = 1;
5175 break;
5176 }
5177 }
5178 }
5179 } else { c = 0; } } } while (0);
5180
5181 if (h >>> 0 < i >>> 0) { h = h + 1 | 0; }else { break; }
5182 }
5183
5184 E(b | 0);
5185 return a | 0;
5186 }
5187
5188 function Db(a, b) {
5189 a = a | 0;
5190 b = b | 0;
5191 var c = 0,
5192 d = 0,
5193 e = 0,
5194 f = 0,
5195 g = 0;
5196 d = Qc(a | 0, b | 0, 52) | 0;
5197 F() | 0;
5198 d = d & 15;
5199
5200 if (!d) {
5201 c = b;
5202 d = a;
5203 E(c | 0);
5204 return d | 0;
5205 }
5206
5207 c = 1;
5208
5209 while (1) {
5210 g = (15 - c | 0) * 3 | 0;
5211 f = Rc(7, 0, g | 0) | 0;
5212 e = b & ~(F() | 0);
5213 b = Qc(a | 0, b | 0, g | 0) | 0;
5214 F() | 0;
5215 b = Rc(La(b & 7) | 0, 0, g | 0) | 0;
5216 a = b | a & ~f;
5217 b = F() | 0 | e;
5218 if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else { break; }
5219 }
5220
5221 E(b | 0);
5222 return a | 0;
5223 }
5224
5225 function Eb(a, c) {
5226 a = a | 0;
5227 c = c | 0;
5228 var d = 0,
5229 e = 0,
5230 f = 0,
5231 g = 0,
5232 h = 0,
5233 i = 0,
5234 j = 0,
5235 k = 0,
5236 l = 0;
5237 j = R;
5238 R = R + 64 | 0;
5239 i = j + 40 | 0;
5240 e = j + 24 | 0;
5241 f = j + 12 | 0;
5242 g = j;
5243 Rc(c | 0, 0, 52) | 0;
5244 d = F() | 0 | 134225919;
5245
5246 if (!c) {
5247 if ((b[a + 4 >> 2] | 0) > 2) {
5248 h = 0;
5249 i = 0;
5250 E(h | 0);
5251 R = j;
5252 return i | 0;
5253 }
5254
5255 if ((b[a + 8 >> 2] | 0) > 2) {
5256 h = 0;
5257 i = 0;
5258 E(h | 0);
5259 R = j;
5260 return i | 0;
5261 }
5262
5263 if ((b[a + 12 >> 2] | 0) > 2) {
5264 h = 0;
5265 i = 0;
5266 E(h | 0);
5267 R = j;
5268 return i | 0;
5269 }
5270
5271 Rc(ka(a) | 0, 0, 45) | 0;
5272 h = F() | 0 | d;
5273 i = -1;
5274 E(h | 0);
5275 R = j;
5276 return i | 0;
5277 }
5278 b[i >> 2] = b[a >> 2];
5279 b[i + 4 >> 2] = b[a + 4 >> 2];
5280 b[i + 8 >> 2] = b[a + 8 >> 2];
5281 b[i + 12 >> 2] = b[a + 12 >> 2];
5282 h = i + 4 | 0;
5283
5284 if ((c | 0) > 0) {
5285 a = -1;
5286
5287 while (1) {
5288 b[e >> 2] = b[h >> 2];
5289 b[e + 4 >> 2] = b[h + 4 >> 2];
5290 b[e + 8 >> 2] = b[h + 8 >> 2];
5291
5292 if (!(c & 1)) {
5293 Ea(h);
5294 b[f >> 2] = b[h >> 2];
5295 b[f + 4 >> 2] = b[h + 4 >> 2];
5296 b[f + 8 >> 2] = b[h + 8 >> 2];
5297 Ga(f);
5298 } else {
5299 Da(h);
5300 b[f >> 2] = b[h >> 2];
5301 b[f + 4 >> 2] = b[h + 4 >> 2];
5302 b[f + 8 >> 2] = b[h + 8 >> 2];
5303 Fa(f);
5304 }
5305
5306 Aa(e, f, g);
5307 xa(g);
5308 l = (15 - c | 0) * 3 | 0;
5309 k = Rc(7, 0, l | 0) | 0;
5310 d = d & ~(F() | 0);
5311 l = Rc(Ca(g) | 0, 0, l | 0) | 0;
5312 a = l | a & ~k;
5313 d = F() | 0 | d;
5314 if ((c | 0) > 1) { c = c + -1 | 0; }else { break; }
5315 }
5316 } else { a = -1; }
5317
5318 a: do { if (((b[h >> 2] | 0) <= 2 ? (b[i + 8 >> 2] | 0) <= 2 : 0) ? (b[i + 12 >> 2] | 0) <= 2 : 0) {
5319 e = ka(i) | 0;
5320 c = Rc(e | 0, 0, 45) | 0;
5321 c = c | a;
5322 a = F() | 0 | d & -1040385;
5323 g = la(i) | 0;
5324
5325 if (!(ia(e) | 0)) {
5326 if ((g | 0) <= 0) { break; }
5327 f = 0;
5328
5329 while (1) {
5330 e = Qc(c | 0, a | 0, 52) | 0;
5331 F() | 0;
5332 e = e & 15;
5333
5334 if (e) {
5335 d = 1;
5336
5337 while (1) {
5338 l = (15 - d | 0) * 3 | 0;
5339 i = Qc(c | 0, a | 0, l | 0) | 0;
5340 F() | 0;
5341 k = Rc(7, 0, l | 0) | 0;
5342 a = a & ~(F() | 0);
5343 l = Rc(Ka(i & 7) | 0, 0, l | 0) | 0;
5344 c = c & ~k | l;
5345 a = a | (F() | 0);
5346 if (d >>> 0 < e >>> 0) { d = d + 1 | 0; }else { break; }
5347 }
5348 }
5349
5350 f = f + 1 | 0;
5351 if ((f | 0) == (g | 0)) { break a; }
5352 }
5353 }
5354
5355 f = Qc(c | 0, a | 0, 52) | 0;
5356 F() | 0;
5357 f = f & 15;
5358
5359 b: do { if (f) {
5360 d = 1;
5361
5362 c: while (1) {
5363 l = Qc(c | 0, a | 0, (15 - d | 0) * 3 | 0) | 0;
5364 F() | 0;
5365
5366 switch (l & 7) {
5367 case 1:
5368 break c;
5369
5370 case 0:
5371 break;
5372
5373 default:
5374 break b;
5375 }
5376
5377 if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break b; }
5378 }
5379
5380 if (ma(e, b[i >> 2] | 0) | 0) {
5381 d = 1;
5382
5383 while (1) {
5384 i = (15 - d | 0) * 3 | 0;
5385 k = Rc(7, 0, i | 0) | 0;
5386 l = a & ~(F() | 0);
5387 a = Qc(c | 0, a | 0, i | 0) | 0;
5388 F() | 0;
5389 a = Rc(La(a & 7) | 0, 0, i | 0) | 0;
5390 c = c & ~k | a;
5391 a = l | (F() | 0);
5392 if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break; }
5393 }
5394 } else {
5395 d = 1;
5396
5397 while (1) {
5398 l = (15 - d | 0) * 3 | 0;
5399 i = Qc(c | 0, a | 0, l | 0) | 0;
5400 F() | 0;
5401 k = Rc(7, 0, l | 0) | 0;
5402 a = a & ~(F() | 0);
5403 l = Rc(Ka(i & 7) | 0, 0, l | 0) | 0;
5404 c = c & ~k | l;
5405 a = a | (F() | 0);
5406 if (d >>> 0 < f >>> 0) { d = d + 1 | 0; }else { break; }
5407 }
5408 }
5409 } } while (0);
5410
5411 if ((g | 0) > 0) {
5412 d = 0;
5413
5414 do {
5415 c = Ab(c, a) | 0;
5416 a = F() | 0;
5417 d = d + 1 | 0;
5418 } while ((d | 0) != (g | 0));
5419 }
5420 } else {
5421 c = 0;
5422 a = 0;
5423 } } while (0);
5424
5425 k = a;
5426 l = c;
5427 E(k | 0);
5428 R = j;
5429 return l | 0;
5430 }
5431
5432 function Fb(a) {
5433 a = a | 0;
5434 return (a | 0) % 2 | 0 | 0;
5435 }
5436
5437 function Gb(a, c) {
5438 a = a | 0;
5439 c = c | 0;
5440 var d = 0,
5441 e = 0;
5442 e = R;
5443 R = R + 16 | 0;
5444 d = e;
5445
5446 if ((c >>> 0 <= 15 ? !((b[a + 4 >> 2] & 2146435072 | 0) == 2146435072) : 0) ? !((b[a + 8 + 4 >> 2] & 2146435072 | 0) == 2146435072) : 0) {
5447 Ta(a, c, d);
5448 c = Eb(d, c) | 0;
5449 a = F() | 0;
5450 } else {
5451 a = 0;
5452 c = 0;
5453 }
5454
5455 E(a | 0);
5456 R = e;
5457 return c | 0;
5458 }
5459
5460 function Hb(a, c, d) {
5461 a = a | 0;
5462 c = c | 0;
5463 d = d | 0;
5464 var e = 0,
5465 f = 0,
5466 g = 0,
5467 h = 0;
5468 f = d + 4 | 0;
5469 g = Qc(a | 0, c | 0, 52) | 0;
5470 F() | 0;
5471 g = g & 15;
5472 h = Qc(a | 0, c | 0, 45) | 0;
5473 F() | 0;
5474 e = (g | 0) == 0;
5475
5476 if (!(ia(h & 127) | 0)) {
5477 if (e) {
5478 h = 0;
5479 return h | 0;
5480 }
5481
5482 if ((b[f >> 2] | 0) == 0 ? (b[d + 8 >> 2] | 0) == 0 : 0) { e = (b[d + 12 >> 2] | 0) != 0 & 1; }else { e = 1; }
5483 } else if (e) {
5484 h = 1;
5485 return h | 0;
5486 } else { e = 1; }
5487
5488 d = 1;
5489
5490 while (1) {
5491 if (!(d & 1)) { Ga(f); }else { Fa(f); }
5492 h = Qc(a | 0, c | 0, (15 - d | 0) * 3 | 0) | 0;
5493 F() | 0;
5494 Ha(f, h & 7);
5495 if (d >>> 0 < g >>> 0) { d = d + 1 | 0; }else { break; }
5496 }
5497
5498 return e | 0;
5499 }
5500
5501 function Ib(a, c, d) {
5502 a = a | 0;
5503 c = c | 0;
5504 d = d | 0;
5505 var e = 0,
5506 f = 0,
5507 g = 0,
5508 h = 0,
5509 i = 0,
5510 j = 0,
5511 k = 0,
5512 l = 0;
5513 l = R;
5514 R = R + 16 | 0;
5515 j = l;
5516 k = Qc(a | 0, c | 0, 45) | 0;
5517 F() | 0;
5518 k = k & 127;
5519
5520 a: do { if ((ia(k) | 0) != 0 ? (g = Qc(a | 0, c | 0, 52) | 0, F() | 0, g = g & 15, (g | 0) != 0) : 0) {
5521 e = 1;
5522
5523 b: while (1) {
5524 i = Qc(a | 0, c | 0, (15 - e | 0) * 3 | 0) | 0;
5525 F() | 0;
5526
5527 switch (i & 7) {
5528 case 5:
5529 break b;
5530
5531 case 0:
5532 break;
5533
5534 default:
5535 {
5536 e = c;
5537 break a;
5538 }
5539 }
5540
5541 if (e >>> 0 < g >>> 0) { e = e + 1 | 0; }else {
5542 e = c;
5543 break a;
5544 }
5545 }
5546
5547 f = 1;
5548 e = c;
5549
5550 while (1) {
5551 c = (15 - f | 0) * 3 | 0;
5552 h = Rc(7, 0, c | 0) | 0;
5553 i = e & ~(F() | 0);
5554 e = Qc(a | 0, e | 0, c | 0) | 0;
5555 F() | 0;
5556 e = Rc(La(e & 7) | 0, 0, c | 0) | 0;
5557 a = a & ~h | e;
5558 e = i | (F() | 0);
5559 if (f >>> 0 < g >>> 0) { f = f + 1 | 0; }else { break; }
5560 }
5561 } else { e = c; } } while (0);
5562
5563 i = 7728 + (k * 28 | 0) | 0;
5564 b[d >> 2] = b[i >> 2];
5565 b[d + 4 >> 2] = b[i + 4 >> 2];
5566 b[d + 8 >> 2] = b[i + 8 >> 2];
5567 b[d + 12 >> 2] = b[i + 12 >> 2];
5568
5569 if (!(Hb(a, e, d) | 0)) {
5570 R = l;
5571 return;
5572 }
5573
5574 h = d + 4 | 0;
5575 b[j >> 2] = b[h >> 2];
5576 b[j + 4 >> 2] = b[h + 4 >> 2];
5577 b[j + 8 >> 2] = b[h + 8 >> 2];
5578 g = Qc(a | 0, e | 0, 52) | 0;
5579 F() | 0;
5580 i = g & 15;
5581 if (!(g & 1)) { g = i; }else {
5582 Ga(h);
5583 g = i + 1 | 0;
5584 }
5585 if (!(ia(k) | 0)) { e = 0; }else {
5586 c: do { if (!i) { e = 0; }else {
5587 c = 1;
5588
5589 while (1) {
5590 f = Qc(a | 0, e | 0, (15 - c | 0) * 3 | 0) | 0;
5591 F() | 0;
5592 f = f & 7;
5593
5594 if (f | 0) {
5595 e = f;
5596 break c;
5597 }
5598
5599 if (c >>> 0 < i >>> 0) { c = c + 1 | 0; }else {
5600 e = 0;
5601 break;
5602 }
5603 }
5604 } } while (0);
5605
5606 e = (e | 0) == 4 & 1;
5607 }
5608
5609 if (!(Za(d, g, e, 0) | 0)) {
5610 if ((g | 0) != (i | 0)) {
5611 b[h >> 2] = b[j >> 2];
5612 b[h + 4 >> 2] = b[j + 4 >> 2];
5613 b[h + 8 >> 2] = b[j + 8 >> 2];
5614 }
5615 } else {
5616 if (ia(k) | 0) { do {} while ((Za(d, g, 0, 0) | 0) != 0); }
5617 if ((g | 0) != (i | 0)) { Ea(h); }
5618 }
5619
5620 R = l;
5621 return;
5622 }
5623
5624 function Jb(a, b, c) {
5625 a = a | 0;
5626 b = b | 0;
5627 c = c | 0;
5628 var d = 0,
5629 e = 0;
5630 d = R;
5631 R = R + 16 | 0;
5632 e = d;
5633 Ib(a, b, e);
5634 b = Qc(a | 0, b | 0, 52) | 0;
5635 F() | 0;
5636 Wa(e, b & 15, c);
5637 R = d;
5638 return;
5639 }
5640
5641 function Kb(a, b, c) {
5642 a = a | 0;
5643 b = b | 0;
5644 c = c | 0;
5645 var d = 0,
5646 e = 0,
5647 f = 0,
5648 g = 0,
5649 h = 0;
5650 h = R;
5651 R = R + 16 | 0;
5652 f = h;
5653 Ib(a, b, f);
5654 g = Qc(a | 0, b | 0, 52) | 0;
5655 F() | 0;
5656 g = g & 15;
5657 e = Qc(a | 0, b | 0, 45) | 0;
5658 F() | 0;
5659
5660 if (!(ia(e & 127) | 0)) {
5661 b = 0;
5662 $a(f, g, b, c);
5663 R = h;
5664 return;
5665 }
5666
5667 a: do { if (!g) { d = 0; }else {
5668 e = 1;
5669
5670 while (1) {
5671 d = Qc(a | 0, b | 0, (15 - e | 0) * 3 | 0) | 0;
5672 F() | 0;
5673 d = d & 7;
5674 if (d | 0) { break a; }
5675 if (e >>> 0 < g >>> 0) { e = e + 1 | 0; }else {
5676 d = 0;
5677 break;
5678 }
5679 }
5680 } } while (0);
5681
5682 b = (d | 0) == 0 & 1;
5683 $a(f, g, b, c);
5684 R = h;
5685 return;
5686 }
5687
5688 function Lb(a, b) {
5689 a = a | 0;
5690 b = b | 0;
5691 var c = 0,
5692 d = 0,
5693 e = 0;
5694 d = Qc(a | 0, b | 0, 45) | 0;
5695 F() | 0;
5696
5697 if (!(ia(d & 127) | 0)) {
5698 d = 2;
5699 return d | 0;
5700 }
5701
5702 d = Qc(a | 0, b | 0, 52) | 0;
5703 F() | 0;
5704 d = d & 15;
5705
5706 if (!d) {
5707 d = 5;
5708 return d | 0;
5709 }
5710
5711 c = 1;
5712
5713 while (1) {
5714 e = Rc(7, 0, (15 - c | 0) * 3 | 0) | 0;
5715
5716 if (!((e & a | 0) == 0 & ((F() | 0) & b | 0) == 0)) {
5717 c = 2;
5718 a = 6;
5719 break;
5720 }
5721
5722 if (c >>> 0 < d >>> 0) { c = c + 1 | 0; }else {
5723 c = 5;
5724 a = 6;
5725 break;
5726 }
5727 }
5728
5729 if ((a | 0) == 6) { return c | 0; }
5730 return 0;
5731 }
5732
5733 function Mb(a, c, d) {
5734 a = a | 0;
5735 c = c | 0;
5736 d = d | 0;
5737 var e = 0,
5738 f = 0,
5739 g = 0,
5740 h = 0,
5741 i = 0,
5742 j = 0,
5743 k = 0,
5744 l = 0,
5745 m = 0;
5746 m = R;
5747 R = R + 128 | 0;
5748 k = m + 112 | 0;
5749 g = m + 96 | 0;
5750 l = m;
5751 f = Qc(a | 0, c | 0, 52) | 0;
5752 F() | 0;
5753 i = f & 15;
5754 b[k >> 2] = i;
5755 h = Qc(a | 0, c | 0, 45) | 0;
5756 F() | 0;
5757 h = h & 127;
5758
5759 a: do { if (ia(h) | 0) {
5760 if (i | 0) {
5761 e = 1;
5762
5763 while (1) {
5764 j = Rc(7, 0, (15 - e | 0) * 3 | 0) | 0;
5765
5766 if (!((j & a | 0) == 0 & ((F() | 0) & c | 0) == 0)) {
5767 f = 0;
5768 break a;
5769 }
5770
5771 if (e >>> 0 < i >>> 0) { e = e + 1 | 0; }else { break; }
5772 }
5773 }
5774
5775 if (!(f & 1)) {
5776 j = Rc(i + 1 | 0, 0, 52) | 0;
5777 l = F() | 0 | c & -15728641;
5778 k = Rc(7, 0, (14 - i | 0) * 3 | 0) | 0;
5779 Mb((j | a) & ~k, l & ~(F() | 0), d);
5780 R = m;
5781 return;
5782 } else { f = 1; }
5783 } else { f = 0; } } while (0);
5784
5785 Ib(a, c, g);
5786
5787 if (f) {
5788 Ya(g, k, l);
5789 j = 5;
5790 } else {
5791 ab(g, k, l);
5792 j = 6;
5793 }
5794
5795 b: do { if (ia(h) | 0) {
5796 if (!i) { e = 20; }else {
5797 e = 1;
5798
5799 while (1) {
5800 h = Rc(7, 0, (15 - e | 0) * 3 | 0) | 0;
5801
5802 if (!((h & a | 0) == 0 & ((F() | 0) & c | 0) == 0)) {
5803 e = 8;
5804 break b;
5805 }
5806
5807 if (e >>> 0 < i >>> 0) { e = e + 1 | 0; }else {
5808 e = 20;
5809 break;
5810 }
5811 }
5812 }
5813 } else { e = 8; } } while (0);
5814
5815 Uc(d | 0, -1, e | 0) | 0;
5816
5817 if (f) {
5818 f = 0;
5819
5820 do {
5821 g = l + (f << 4) | 0;
5822 _a(g, b[k >> 2] | 0) | 0;
5823 g = b[g >> 2] | 0;
5824 e = 0;
5825
5826 while (1) {
5827 h = d + (e << 2) | 0;
5828 i = b[h >> 2] | 0;
5829 if ((i | 0) == -1 | (i | 0) == (g | 0)) { break; }else { e = e + 1 | 0; }
5830 }
5831
5832 b[h >> 2] = g;
5833 f = f + 1 | 0;
5834 } while ((f | 0) != (j | 0));
5835 } else {
5836 f = 0;
5837
5838 do {
5839 g = l + (f << 4) | 0;
5840 Za(g, b[k >> 2] | 0, 0, 1) | 0;
5841 g = b[g >> 2] | 0;
5842 e = 0;
5843
5844 while (1) {
5845 h = d + (e << 2) | 0;
5846 i = b[h >> 2] | 0;
5847 if ((i | 0) == -1 | (i | 0) == (g | 0)) { break; }else { e = e + 1 | 0; }
5848 }
5849
5850 b[h >> 2] = g;
5851 f = f + 1 | 0;
5852 } while ((f | 0) != (j | 0));
5853 }
5854
5855 R = m;
5856 return;
5857 }
5858
5859 function Nb() {
5860 return 12;
5861 }
5862
5863 function Ob(a, c) {
5864 a = a | 0;
5865 c = c | 0;
5866 var d = 0,
5867 e = 0,
5868 f = 0,
5869 g = 0,
5870 h = 0,
5871 i = 0,
5872 j = 0;
5873 Rc(a | 0, 0, 52) | 0;
5874 i = F() | 0 | 134225919;
5875
5876 if ((a | 0) < 1) {
5877 e = 0;
5878 d = 0;
5879
5880 do {
5881 if (ia(e) | 0) {
5882 Rc(e | 0, 0, 45) | 0;
5883 h = i | (F() | 0);
5884 a = c + (d << 3) | 0;
5885 b[a >> 2] = -1;
5886 b[a + 4 >> 2] = h;
5887 d = d + 1 | 0;
5888 }
5889
5890 e = e + 1 | 0;
5891 } while ((e | 0) != 122);
5892
5893 return;
5894 }
5895
5896 h = 0;
5897 d = 0;
5898
5899 do {
5900 if (ia(h) | 0) {
5901 Rc(h | 0, 0, 45) | 0;
5902 e = 1;
5903 f = -1;
5904 g = i | (F() | 0);
5905
5906 while (1) {
5907 j = Rc(7, 0, (15 - e | 0) * 3 | 0) | 0;
5908 f = f & ~j;
5909 g = g & ~(F() | 0);
5910 if ((e | 0) == (a | 0)) { break; }else { e = e + 1 | 0; }
5911 }
5912
5913 j = c + (d << 3) | 0;
5914 b[j >> 2] = f;
5915 b[j + 4 >> 2] = g;
5916 d = d + 1 | 0;
5917 }
5918
5919 h = h + 1 | 0;
5920 } while ((h | 0) != 122);
5921
5922 return;
5923 }
5924
5925 function Pb(a, c, d, e) {
5926 a = a | 0;
5927 c = c | 0;
5928 d = d | 0;
5929 e = e | 0;
5930 var f = 0,
5931 g = 0,
5932 h = 0,
5933 i = 0,
5934 j = 0,
5935 k = 0;
5936 i = R;
5937 R = R + 64 | 0;
5938 h = i;
5939
5940 if ((a | 0) == (d | 0) & (c | 0) == (e | 0) | (0 != 0 | (c & 2013265920 | 0) != 134217728 | (0 != 0 | (e & 2013265920 | 0) != 134217728))) {
5941 h = 0;
5942 R = i;
5943 return h | 0;
5944 }
5945
5946 f = Qc(a | 0, c | 0, 52) | 0;
5947 F() | 0;
5948 f = f & 15;
5949 g = Qc(d | 0, e | 0, 52) | 0;
5950 F() | 0;
5951
5952 if ((f | 0) != (g & 15 | 0)) {
5953 h = 0;
5954 R = i;
5955 return h | 0;
5956 }
5957
5958 g = f + -1 | 0;
5959
5960 if (f >>> 0 > 1 ? (k = qb(a, c, g) | 0, j = F() | 0, g = qb(d, e, g) | 0, (k | 0) == (g | 0) & (j | 0) == (F() | 0)) : 0) {
5961 g = (f ^ 15) * 3 | 0;
5962 f = Qc(a | 0, c | 0, g | 0) | 0;
5963 F() | 0;
5964 f = f & 7;
5965 g = Qc(d | 0, e | 0, g | 0) | 0;
5966 F() | 0;
5967 g = g & 7;
5968
5969 if ((f | 0) == 0 | (g | 0) == 0) {
5970 k = 1;
5971 R = i;
5972 return k | 0;
5973 }
5974
5975 if ((b[21136 + (f << 2) >> 2] | 0) == (g | 0)) {
5976 k = 1;
5977 R = i;
5978 return k | 0;
5979 }
5980
5981 if ((b[21168 + (f << 2) >> 2] | 0) == (g | 0)) {
5982 k = 1;
5983 R = i;
5984 return k | 0;
5985 }
5986 }
5987
5988 f = h;
5989 g = f + 56 | 0;
5990
5991 do {
5992 b[f >> 2] = 0;
5993 f = f + 4 | 0;
5994 } while ((f | 0) < (g | 0));
5995
5996 _(a, c, 1, h);
5997
5998 k = h;
5999
6000 if (((((!((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0) ? (k = h + 8 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 16 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 24 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 32 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) ? (k = h + 40 | 0, !((b[k >> 2] | 0) == (d | 0) ? (b[k + 4 >> 2] | 0) == (e | 0) : 0)) : 0) {
6001 f = h + 48 | 0;
6002 f = ((b[f >> 2] | 0) == (d | 0) ? (b[f + 4 >> 2] | 0) == (e | 0) : 0) & 1;
6003 } else { f = 1; }
6004
6005 k = f;
6006 R = i;
6007 return k | 0;
6008 }
6009
6010 function Qb(a, c, d, e) {
6011 a = a | 0;
6012 c = c | 0;
6013 d = d | 0;
6014 e = e | 0;
6015 var f = 0,
6016 g = 0,
6017 h = 0,
6018 i = 0;
6019 h = R;
6020 R = R + 16 | 0;
6021 f = h;
6022
6023 if (!(Pb(a, c, d, e) | 0)) {
6024 a = 0;
6025 g = 0;
6026 E(a | 0);
6027 R = h;
6028 return g | 0;
6029 }
6030
6031 g = c & -2130706433;
6032 b[f >> 2] = 0;
6033 i = ca(a, c, 1, f) | 0;
6034
6035 if (!((i | 0) == (d | 0) & (F() | 0) == (e | 0))) {
6036 b[f >> 2] = 0;
6037 i = ca(a, c, 2, f) | 0;
6038
6039 if (!((i | 0) == (d | 0) & (F() | 0) == (e | 0))) {
6040 b[f >> 2] = 0;
6041 i = ca(a, c, 3, f) | 0;
6042
6043 if (!((i | 0) == (d | 0) & (F() | 0) == (e | 0))) {
6044 b[f >> 2] = 0;
6045 i = ca(a, c, 4, f) | 0;
6046
6047 if (!((i | 0) == (d | 0) & (F() | 0) == (e | 0))) {
6048 b[f >> 2] = 0;
6049 i = ca(a, c, 5, f) | 0;
6050
6051 if (!((i | 0) == (d | 0) & (F() | 0) == (e | 0))) {
6052 b[f >> 2] = 0;
6053 i = ca(a, c, 6, f) | 0;
6054
6055 if ((i | 0) == (d | 0) & (F() | 0) == (e | 0)) {
6056 c = 0;
6057 d = 100663296;
6058 } else {
6059 g = 0;
6060 i = 0;
6061 E(g | 0);
6062 R = h;
6063 return i | 0;
6064 }
6065 } else {
6066 c = 0;
6067 d = 83886080;
6068 }
6069 } else {
6070 c = 0;
6071 d = 67108864;
6072 }
6073 } else {
6074 c = 0;
6075 d = 50331648;
6076 }
6077 } else {
6078 c = 0;
6079 d = 33554432;
6080 }
6081 } else {
6082 c = 0;
6083 d = 16777216;
6084 }
6085
6086 g = g | d | 268435456;
6087 i = a | c;
6088 E(g | 0);
6089 R = h;
6090 return i | 0;
6091 }
6092
6093 function Rb(a, b) {
6094 a = a | 0;
6095 b = b | 0;
6096 var c = 0;
6097 c = 0 == 0 & (b & 2013265920 | 0) == 268435456;
6098 E((c ? b & -2130706433 | 134217728 : 0) | 0);
6099 return (c ? a : 0) | 0;
6100 }
6101
6102 function Sb(a, c) {
6103 a = a | 0;
6104 c = c | 0;
6105 var d = 0,
6106 e = 0,
6107 f = 0;
6108 e = R;
6109 R = R + 16 | 0;
6110 d = e;
6111
6112 if (!(0 == 0 & (c & 2013265920 | 0) == 268435456)) {
6113 c = 0;
6114 d = 0;
6115 E(c | 0);
6116 R = e;
6117 return d | 0;
6118 }
6119
6120 f = Qc(a | 0, c | 0, 56) | 0;
6121 F() | 0;
6122 b[d >> 2] = 0;
6123 d = ca(a, c & -2130706433 | 134217728, f & 7, d) | 0;
6124 c = F() | 0;
6125 E(c | 0);
6126 R = e;
6127 return d | 0;
6128 }
6129
6130 function Tb(a, b) {
6131 a = a | 0;
6132 b = b | 0;
6133 var c = 0;
6134
6135 if (!(0 == 0 & (b & 2013265920 | 0) == 268435456)) {
6136 c = 0;
6137 return c | 0;
6138 }
6139
6140 c = Qc(a | 0, b | 0, 56) | 0;
6141 F() | 0;
6142
6143 switch (c & 7) {
6144 case 0:
6145 case 7:
6146 {
6147 c = 0;
6148 return c | 0;
6149 }
6150
6151 default:
6152
6153 }
6154
6155 c = b & -2130706433 | 134217728;
6156
6157 if (0 == 0 & (b & 117440512 | 0) == 16777216 & (tb(a, c) | 0) != 0) {
6158 c = 0;
6159 return c | 0;
6160 }
6161
6162 c = pb(a, c) | 0;
6163 return c | 0;
6164 }
6165
6166 function Ub(a, c, d) {
6167 a = a | 0;
6168 c = c | 0;
6169 d = d | 0;
6170 var e = 0,
6171 f = 0,
6172 g = 0,
6173 h = 0,
6174 i = 0;
6175 g = R;
6176 R = R + 16 | 0;
6177 e = g;
6178 h = 0 == 0 & (c & 2013265920 | 0) == 268435456;
6179 f = c & -2130706433 | 134217728;
6180 i = d;
6181 b[i >> 2] = h ? a : 0;
6182 b[i + 4 >> 2] = h ? f : 0;
6183
6184 if (h) {
6185 c = Qc(a | 0, c | 0, 56) | 0;
6186 F() | 0;
6187 b[e >> 2] = 0;
6188 a = ca(a, f, c & 7, e) | 0;
6189 c = F() | 0;
6190 } else {
6191 a = 0;
6192 c = 0;
6193 }
6194
6195 i = d + 8 | 0;
6196 b[i >> 2] = a;
6197 b[i + 4 >> 2] = c;
6198 R = g;
6199 return;
6200 }
6201
6202 function Vb(a, c, d) {
6203 a = a | 0;
6204 c = c | 0;
6205 d = d | 0;
6206 var e = 0,
6207 f = 0;
6208 f = (tb(a, c) | 0) == 0;
6209 c = c & -2130706433;
6210 e = d;
6211 b[e >> 2] = f ? a : 0;
6212 b[e + 4 >> 2] = f ? c | 285212672 : 0;
6213 e = d + 8 | 0;
6214 b[e >> 2] = a;
6215 b[e + 4 >> 2] = c | 301989888;
6216 e = d + 16 | 0;
6217 b[e >> 2] = a;
6218 b[e + 4 >> 2] = c | 318767104;
6219 e = d + 24 | 0;
6220 b[e >> 2] = a;
6221 b[e + 4 >> 2] = c | 335544320;
6222 e = d + 32 | 0;
6223 b[e >> 2] = a;
6224 b[e + 4 >> 2] = c | 352321536;
6225 d = d + 40 | 0;
6226 b[d >> 2] = a;
6227 b[d + 4 >> 2] = c | 369098752;
6228 return;
6229 }
6230
6231 function Wb(a, c, d) {
6232 a = a | 0;
6233 c = c | 0;
6234 d = d | 0;
6235 var e = 0,
6236 f = 0,
6237 g = 0,
6238 h = 0,
6239 i = 0,
6240 j = 0,
6241 k = 0,
6242 l = 0;
6243 l = R;
6244 R = R + 368 | 0;
6245 f = l + 352 | 0;
6246 i = l + 184 | 0;
6247 j = l + 16 | 0;
6248 k = l;
6249 Uc(i | 0, 0, 168) | 0;
6250 Uc(j | 0, 0, 168) | 0;
6251 b[k >> 2] = 0;
6252 b[k + 4 >> 2] = 0;
6253 b[k + 8 >> 2] = 0;
6254 b[k + 12 >> 2] = 0;
6255 h = 0 == 0 & (c & 2013265920 | 0) == 268435456;
6256 e = c & -2130706433 | 134217728;
6257 Kb(h ? a : 0, h ? e : 0, i);
6258
6259 if (h) {
6260 c = Qc(a | 0, c | 0, 56) | 0;
6261 F() | 0;
6262 b[f >> 2] = 0;
6263 a = ca(a, e, c & 7, f) | 0;
6264 c = F() | 0;
6265 } else {
6266 a = 0;
6267 c = 0;
6268 }
6269
6270 Kb(a, c, j);
6271
6272 if ((b[i >> 2] | 0) <= 0) {
6273 k = 0;
6274 b[d >> 2] = k;
6275 R = l;
6276 return;
6277 }
6278
6279 h = i + 24 | 0;
6280 a = 0;
6281 c = 0;
6282 g = 0;
6283
6284 do {
6285 f = i + 8 + (g << 4) | 0;
6286
6287 a: do { if ((b[j >> 2] | 0) > 0) {
6288 e = 0;
6289
6290 while (1) {
6291 if (cb(f, j + 8 + (e << 4) | 0, 1.0e-06) | 0) { break; }
6292 e = e + 1 | 0;
6293 if ((e | 0) >= (b[j >> 2] | 0)) { break a; }
6294 }
6295
6296 b: do { if (!g) {
6297 if ((b[j >> 2] | 0) > 0) {
6298 e = 0;
6299
6300 do {
6301 if (cb(h, j + 8 + (e << 4) | 0, 1.0e-06) | 0) { break b; }
6302 e = e + 1 | 0;
6303 } while ((e | 0) < (b[j >> 2] | 0));
6304 }
6305 b[k >> 2] = b[f >> 2];
6306 b[k + 4 >> 2] = b[f + 4 >> 2];
6307 b[k + 8 >> 2] = b[f + 8 >> 2];
6308 b[k + 12 >> 2] = b[f + 12 >> 2];
6309 c = 1;
6310 break a;
6311 } } while (0);
6312
6313 e = d + 8 + (a << 4) | 0;
6314 b[e >> 2] = b[f >> 2];
6315 b[e + 4 >> 2] = b[f + 4 >> 2];
6316 b[e + 8 >> 2] = b[f + 8 >> 2];
6317 b[e + 12 >> 2] = b[f + 12 >> 2];
6318 a = a + 1 | 0;
6319 } } while (0);
6320
6321 g = g + 1 | 0;
6322 } while ((g | 0) < (b[i >> 2] | 0));
6323
6324 if (!c) {
6325 k = a;
6326 b[d >> 2] = k;
6327 R = l;
6328 return;
6329 }
6330
6331 j = d + 8 + (a << 4) | 0;
6332 b[j >> 2] = b[k >> 2];
6333 b[j + 4 >> 2] = b[k + 4 >> 2];
6334 b[j + 8 >> 2] = b[k + 8 >> 2];
6335 b[j + 12 >> 2] = b[k + 12 >> 2];
6336 k = a + 1 | 0;
6337 b[d >> 2] = k;
6338 R = l;
6339 return;
6340 }
6341
6342 function Xb(a) {
6343 a = a | 0;
6344 var c = 0,
6345 d = 0,
6346 e = 0;
6347 c = Kc(1, 12) | 0;
6348 if (!c) { G(22330, 22285, 46, 22343); }
6349 d = a + 4 | 0;
6350 e = b[d >> 2] | 0;
6351
6352 if (e | 0) {
6353 e = e + 8 | 0;
6354 b[e >> 2] = c;
6355 b[d >> 2] = c;
6356 return c | 0;
6357 }
6358
6359 if (b[a >> 2] | 0) { G(22360, 22285, 58, 22383); }
6360 e = a;
6361 b[e >> 2] = c;
6362 b[d >> 2] = c;
6363 return c | 0;
6364 }
6365
6366 function Yb(a, c) {
6367 a = a | 0;
6368 c = c | 0;
6369 var d = 0,
6370 e = 0;
6371 e = Ic(24) | 0;
6372 if (!e) { G(22397, 22285, 75, 22411); }
6373 b[e >> 2] = b[c >> 2];
6374 b[e + 4 >> 2] = b[c + 4 >> 2];
6375 b[e + 8 >> 2] = b[c + 8 >> 2];
6376 b[e + 12 >> 2] = b[c + 12 >> 2];
6377 b[e + 16 >> 2] = 0;
6378 c = a + 4 | 0;
6379 d = b[c >> 2] | 0;
6380
6381 if (d | 0) {
6382 b[d + 16 >> 2] = e;
6383 b[c >> 2] = e;
6384 return e | 0;
6385 }
6386
6387 if (b[a >> 2] | 0) { G(22426, 22285, 79, 22411); }
6388 b[a >> 2] = e;
6389 b[c >> 2] = e;
6390 return e | 0;
6391 }
6392
6393 function Zb(a) {
6394 a = a | 0;
6395 var c = 0,
6396 d = 0,
6397 e = 0,
6398 f = 0;
6399 if (!a) { return; }
6400 e = 1;
6401
6402 while (1) {
6403 c = b[a >> 2] | 0;
6404 if (c | 0) { do {
6405 d = b[c >> 2] | 0;
6406 if (d | 0) { do {
6407 f = d;
6408 d = b[d + 16 >> 2] | 0;
6409 Jc(f);
6410 } while ((d | 0) != 0); }
6411 f = c;
6412 c = b[c + 8 >> 2] | 0;
6413 Jc(f);
6414 } while ((c | 0) != 0); }
6415 c = a;
6416 a = b[a + 8 >> 2] | 0;
6417 if (!e) { Jc(c); }
6418 if (!a) { break; }else { e = 0; }
6419 }
6420
6421 return;
6422 }
6423
6424 function _b(a) {
6425 a = a | 0;
6426 var c = 0,
6427 d = 0,
6428 f = 0,
6429 g = 0,
6430 h = 0.0,
6431 i = 0,
6432 j = 0.0,
6433 k = 0.0,
6434 l = 0,
6435 m = 0,
6436 n = 0,
6437 o = 0,
6438 p = 0,
6439 r = 0,
6440 s = 0.0,
6441 t = 0.0,
6442 u = 0.0,
6443 v = 0.0,
6444 w = 0.0,
6445 x = 0.0,
6446 y = 0,
6447 z = 0,
6448 A = 0,
6449 B = 0,
6450 C = 0,
6451 D = 0,
6452 E = 0,
6453 F = 0,
6454 H = 0,
6455 I = 0,
6456 J = 0,
6457 K = 0;
6458 g = a + 8 | 0;
6459
6460 if (b[g >> 2] | 0) {
6461 K = 1;
6462 return K | 0;
6463 }
6464
6465 f = b[a >> 2] | 0;
6466
6467 if (!f) {
6468 K = 0;
6469 return K | 0;
6470 }
6471
6472 c = f;
6473 d = 0;
6474
6475 do {
6476 d = d + 1 | 0;
6477 c = b[c + 8 >> 2] | 0;
6478 } while ((c | 0) != 0);
6479
6480 if (d >>> 0 < 2) {
6481 K = 0;
6482 return K | 0;
6483 }
6484
6485 I = Ic(d << 2) | 0;
6486 if (!I) { G(22446, 22285, 312, 22465); }
6487 H = Ic(d << 5) | 0;
6488 if (!H) { G(22487, 22285, 316, 22465); }
6489 b[a >> 2] = 0;
6490 z = a + 4 | 0;
6491 b[z >> 2] = 0;
6492 b[g >> 2] = 0;
6493 d = 0;
6494 F = 0;
6495 y = 0;
6496 n = 0;
6497
6498 a: while (1) {
6499 m = b[f >> 2] | 0;
6500
6501 if (m) {
6502 h = 0.0;
6503 i = m;
6504
6505 do {
6506 k = +e[i + 8 >> 3];
6507 c = i;
6508 i = b[i + 16 >> 2] | 0;
6509 l = (i | 0) == 0;
6510 g = l ? m : i;
6511 j = +e[g + 8 >> 3];
6512
6513 if (+q(+(k - j)) > 3.141592653589793) {
6514 K = 14;
6515 break;
6516 }
6517
6518 h = h + (j - k) * (+e[c >> 3] + +e[g >> 3]);
6519 } while (!l);
6520
6521 if ((K | 0) == 14) {
6522 K = 0;
6523 h = 0.0;
6524 c = m;
6525
6526 do {
6527 x = +e[c + 8 >> 3];
6528 E = c + 16 | 0;
6529 D = b[E >> 2] | 0;
6530 D = (D | 0) == 0 ? m : D;
6531 w = +e[D + 8 >> 3];
6532 h = h + (+e[c >> 3] + +e[D >> 3]) * ((w < 0.0 ? w + 6.283185307179586 : w) - (x < 0.0 ? x + 6.283185307179586 : x));
6533 c = b[((c | 0) == 0 ? f : E) >> 2] | 0;
6534 } while ((c | 0) != 0);
6535 }
6536
6537 if (h > 0.0) {
6538 b[I + (F << 2) >> 2] = f;
6539 F = F + 1 | 0;
6540 g = y;
6541 c = n;
6542 } else { K = 19; }
6543 } else { K = 19; }
6544
6545 if ((K | 0) == 19) {
6546 K = 0;
6547
6548 do { if (!d) {
6549 if (!n) {
6550 if (!(b[a >> 2] | 0)) {
6551 g = z;
6552 i = a;
6553 c = f;
6554 d = a;
6555 break;
6556 } else {
6557 K = 27;
6558 break a;
6559 }
6560 } else {
6561 g = z;
6562 i = n + 8 | 0;
6563 c = f;
6564 d = a;
6565 break;
6566 }
6567 } else {
6568 c = d + 8 | 0;
6569
6570 if (b[c >> 2] | 0) {
6571 K = 21;
6572 break a;
6573 }
6574
6575 d = Kc(1, 12) | 0;
6576
6577 if (!d) {
6578 K = 23;
6579 break a;
6580 }
6581
6582 b[c >> 2] = d;
6583 g = d + 4 | 0;
6584 i = d;
6585 c = n;
6586 } } while (0);
6587
6588 b[i >> 2] = f;
6589 b[g >> 2] = f;
6590 i = H + (y << 5) | 0;
6591 l = b[f >> 2] | 0;
6592
6593 if (l) {
6594 m = H + (y << 5) + 8 | 0;
6595 e[m >> 3] = 1797693134862315708145274.0e284;
6596 n = H + (y << 5) + 24 | 0;
6597 e[n >> 3] = 1797693134862315708145274.0e284;
6598 e[i >> 3] = -1797693134862315708145274.0e284;
6599 o = H + (y << 5) + 16 | 0;
6600 e[o >> 3] = -1797693134862315708145274.0e284;
6601 u = 1797693134862315708145274.0e284;
6602 v = -1797693134862315708145274.0e284;
6603 g = 0;
6604 p = l;
6605 k = 1797693134862315708145274.0e284;
6606 s = 1797693134862315708145274.0e284;
6607 t = -1797693134862315708145274.0e284;
6608 j = -1797693134862315708145274.0e284;
6609
6610 while (1) {
6611 h = +e[p >> 3];
6612 x = +e[p + 8 >> 3];
6613 p = b[p + 16 >> 2] | 0;
6614 r = (p | 0) == 0;
6615 w = +e[(r ? l : p) + 8 >> 3];
6616
6617 if (h < k) {
6618 e[m >> 3] = h;
6619 k = h;
6620 }
6621
6622 if (x < s) {
6623 e[n >> 3] = x;
6624 s = x;
6625 }
6626
6627 if (h > t) { e[i >> 3] = h; }else { h = t; }
6628
6629 if (x > j) {
6630 e[o >> 3] = x;
6631 j = x;
6632 }
6633
6634 u = x > 0.0 & x < u ? x : u;
6635 v = x < 0.0 & x > v ? x : v;
6636 g = g | +q(+(x - w)) > 3.141592653589793;
6637 if (r) { break; }else { t = h; }
6638 }
6639
6640 if (g) {
6641 e[o >> 3] = v;
6642 e[n >> 3] = u;
6643 }
6644 } else {
6645 b[i >> 2] = 0;
6646 b[i + 4 >> 2] = 0;
6647 b[i + 8 >> 2] = 0;
6648 b[i + 12 >> 2] = 0;
6649 b[i + 16 >> 2] = 0;
6650 b[i + 20 >> 2] = 0;
6651 b[i + 24 >> 2] = 0;
6652 b[i + 28 >> 2] = 0;
6653 }
6654
6655 g = y + 1 | 0;
6656 }
6657
6658 E = f + 8 | 0;
6659 f = b[E >> 2] | 0;
6660 b[E >> 2] = 0;
6661
6662 if (!f) {
6663 K = 45;
6664 break;
6665 } else {
6666 y = g;
6667 n = c;
6668 }
6669 }
6670
6671 if ((K | 0) == 21) { G(22263, 22285, 32, 22297); }else if ((K | 0) == 23) { G(22317, 22285, 34, 22297); }else if ((K | 0) == 27) { G(22360, 22285, 58, 22383); }else if ((K | 0) == 45) {
6672 b: do { if ((F | 0) > 0) {
6673 E = (g | 0) == 0;
6674 C = g << 2;
6675 D = (a | 0) == 0;
6676 B = 0;
6677 c = 0;
6678
6679 while (1) {
6680 A = b[I + (B << 2) >> 2] | 0;
6681
6682 if (!E) {
6683 y = Ic(C) | 0;
6684
6685 if (!y) {
6686 K = 50;
6687 break;
6688 }
6689
6690 z = Ic(C) | 0;
6691
6692 if (!z) {
6693 K = 52;
6694 break;
6695 }
6696
6697 c: do { if (!D) {
6698 g = 0;
6699 d = 0;
6700 i = a;
6701
6702 while (1) {
6703 f = H + (g << 5) | 0;
6704
6705 if ($b(b[i >> 2] | 0, f, b[A >> 2] | 0) | 0) {
6706 b[y + (d << 2) >> 2] = i;
6707 b[z + (d << 2) >> 2] = f;
6708 r = d + 1 | 0;
6709 } else { r = d; }
6710
6711 i = b[i + 8 >> 2] | 0;
6712 if (!i) { break; }else {
6713 g = g + 1 | 0;
6714 d = r;
6715 }
6716 }
6717
6718 if ((r | 0) > 0) {
6719 f = b[y >> 2] | 0;
6720 if ((r | 0) == 1) { d = f; }else {
6721 o = 0;
6722 p = -1;
6723 d = f;
6724 n = f;
6725
6726 while (1) {
6727 l = b[n >> 2] | 0;
6728 f = 0;
6729 i = 0;
6730
6731 while (1) {
6732 g = b[b[y + (i << 2) >> 2] >> 2] | 0;
6733 if ((g | 0) == (l | 0)) { m = f; }else { m = f + (($b(g, b[z + (i << 2) >> 2] | 0, b[l >> 2] | 0) | 0) & 1) | 0; }
6734 i = i + 1 | 0;
6735 if ((i | 0) == (r | 0)) { break; }else { f = m; }
6736 }
6737
6738 g = (m | 0) > (p | 0);
6739 d = g ? n : d;
6740 f = o + 1 | 0;
6741 if ((f | 0) == (r | 0)) { break c; }
6742 o = f;
6743 p = g ? m : p;
6744 n = b[y + (f << 2) >> 2] | 0;
6745 }
6746 }
6747 } else { d = 0; }
6748 } else { d = 0; } } while (0);
6749
6750 Jc(y);
6751 Jc(z);
6752
6753 if (d) {
6754 g = d + 4 | 0;
6755 f = b[g >> 2] | 0;
6756
6757 if (!f) {
6758 if (b[d >> 2] | 0) {
6759 K = 70;
6760 break;
6761 }
6762 } else { d = f + 8 | 0; }
6763
6764 b[d >> 2] = A;
6765 b[g >> 2] = A;
6766 } else { K = 73; }
6767 } else { K = 73; }
6768
6769 if ((K | 0) == 73) {
6770 K = 0;
6771 c = b[A >> 2] | 0;
6772 if (c | 0) { do {
6773 z = c;
6774 c = b[c + 16 >> 2] | 0;
6775 Jc(z);
6776 } while ((c | 0) != 0); }
6777 Jc(A);
6778 c = 2;
6779 }
6780
6781 B = B + 1 | 0;
6782
6783 if ((B | 0) >= (F | 0)) {
6784 J = c;
6785 break b;
6786 }
6787 }
6788
6789 if ((K | 0) == 50) { G(22502, 22285, 246, 22521); }else if ((K | 0) == 52) { G(22540, 22285, 248, 22521); }else if ((K | 0) == 70) { G(22360, 22285, 58, 22383); }
6790 } else { J = 0; } } while (0);
6791
6792 Jc(I);
6793 Jc(H);
6794 K = J;
6795 return K | 0;
6796 }
6797 return 0;
6798 }
6799
6800 function $b(a, c, d) {
6801 a = a | 0;
6802 c = c | 0;
6803 d = d | 0;
6804 var f = 0.0,
6805 g = 0.0,
6806 h = 0.0,
6807 i = 0.0,
6808 j = 0.0,
6809 k = 0.0,
6810 l = 0.0,
6811 m = 0;
6812
6813 if (!(ta(c, d) | 0)) {
6814 a = 0;
6815 return a | 0;
6816 }
6817
6818 c = ra(c) | 0;
6819 l = +e[d >> 3];
6820 f = +e[d + 8 >> 3];
6821 f = c & f < 0.0 ? f + 6.283185307179586 : f;
6822 a = b[a >> 2] | 0;
6823
6824 if (!a) {
6825 a = 0;
6826 return a | 0;
6827 }
6828
6829 if (c) {
6830 c = 0;
6831 d = a;
6832
6833 a: while (1) {
6834 while (1) {
6835 i = +e[d >> 3];
6836 k = +e[d + 8 >> 3];
6837 d = d + 16 | 0;
6838 m = b[d >> 2] | 0;
6839 m = (m | 0) == 0 ? a : m;
6840 h = +e[m >> 3];
6841 g = +e[m + 8 >> 3];
6842
6843 if (i > h) {
6844 j = i;
6845 i = k;
6846 } else {
6847 j = h;
6848 h = i;
6849 i = g;
6850 g = k;
6851 }
6852
6853 if (!(l < h | l > j)) { break; }
6854 d = b[d >> 2] | 0;
6855
6856 if (!d) {
6857 d = 22;
6858 break a;
6859 }
6860 }
6861
6862 k = g < 0.0 ? g + 6.283185307179586 : g;
6863 i = i < 0.0 ? i + 6.283185307179586 : i;
6864 f = i == f | k == f ? f + -2.220446049250313e-16 : f;
6865 k = k + (l - h) / (j - h) * (i - k);
6866 if ((k < 0.0 ? k + 6.283185307179586 : k) > f) { c = c ^ 1; }
6867 d = b[d >> 2] | 0;
6868
6869 if (!d) {
6870 d = 22;
6871 break;
6872 }
6873 }
6874
6875 if ((d | 0) == 22) { return c | 0; }
6876 } else {
6877 c = 0;
6878 d = a;
6879
6880 b: while (1) {
6881 while (1) {
6882 i = +e[d >> 3];
6883 k = +e[d + 8 >> 3];
6884 d = d + 16 | 0;
6885 m = b[d >> 2] | 0;
6886 m = (m | 0) == 0 ? a : m;
6887 h = +e[m >> 3];
6888 g = +e[m + 8 >> 3];
6889
6890 if (i > h) {
6891 j = i;
6892 i = k;
6893 } else {
6894 j = h;
6895 h = i;
6896 i = g;
6897 g = k;
6898 }
6899
6900 if (!(l < h | l > j)) { break; }
6901 d = b[d >> 2] | 0;
6902
6903 if (!d) {
6904 d = 22;
6905 break b;
6906 }
6907 }
6908
6909 f = i == f | g == f ? f + -2.220446049250313e-16 : f;
6910 if (g + (l - h) / (j - h) * (i - g) > f) { c = c ^ 1; }
6911 d = b[d >> 2] | 0;
6912
6913 if (!d) {
6914 d = 22;
6915 break;
6916 }
6917 }
6918
6919 if ((d | 0) == 22) { return c | 0; }
6920 }
6921
6922 return 0;
6923 }
6924
6925 function ac(c, d, e, f, g) {
6926 c = c | 0;
6927 d = d | 0;
6928 e = e | 0;
6929 f = f | 0;
6930 g = g | 0;
6931 var h = 0,
6932 i = 0,
6933 j = 0,
6934 k = 0,
6935 l = 0,
6936 m = 0,
6937 n = 0,
6938 o = 0,
6939 p = 0,
6940 q = 0,
6941 r = 0,
6942 s = 0,
6943 t = 0,
6944 u = 0;
6945 u = R;
6946 R = R + 32 | 0;
6947 t = u + 16 | 0;
6948 s = u;
6949 h = Qc(c | 0, d | 0, 52) | 0;
6950 F() | 0;
6951 h = h & 15;
6952 p = Qc(e | 0, f | 0, 52) | 0;
6953 F() | 0;
6954
6955 if ((h | 0) != (p & 15 | 0)) {
6956 t = 1;
6957 R = u;
6958 return t | 0;
6959 }
6960
6961 l = Qc(c | 0, d | 0, 45) | 0;
6962 F() | 0;
6963 l = l & 127;
6964 m = Qc(e | 0, f | 0, 45) | 0;
6965 F() | 0;
6966 m = m & 127;
6967 p = (l | 0) != (m | 0);
6968
6969 if (p) {
6970 j = oa(l, m) | 0;
6971
6972 if ((j | 0) == 7) {
6973 t = 2;
6974 R = u;
6975 return t | 0;
6976 }
6977
6978 k = oa(m, l) | 0;
6979 if ((k | 0) == 7) { G(22564, 22588, 151, 22598); }else {
6980 q = j;
6981 i = k;
6982 }
6983 } else {
6984 q = 0;
6985 i = 0;
6986 }
6987
6988 n = ia(l) | 0;
6989 o = ia(m) | 0;
6990 b[t >> 2] = 0;
6991 b[t + 4 >> 2] = 0;
6992 b[t + 8 >> 2] = 0;
6993 b[t + 12 >> 2] = 0;
6994
6995 do { if (!q) {
6996 Hb(e, f, t) | 0;
6997
6998 if ((n | 0) != 0 & (o | 0) != 0) {
6999 if ((m | 0) != (l | 0)) { G(22716, 22588, 243, 22598); }
7000 i = zb(c, d) | 0;
7001 h = zb(e, f) | 0;
7002
7003 if (!(a[22032 + (i * 7 | 0) + h >> 0] | 0)) {
7004 i = b[21200 + (i * 28 | 0) + (h << 2) >> 2] | 0;
7005
7006 if ((i | 0) > 0) {
7007 j = t + 4 | 0;
7008 h = 0;
7009
7010 do {
7011 Ja(j);
7012 h = h + 1 | 0;
7013 } while ((h | 0) != (i | 0));
7014
7015 r = 50;
7016 } else { r = 50; }
7017 } else { h = 5; }
7018 } else { r = 50; }
7019 } else {
7020 m = b[4304 + (l * 28 | 0) + (q << 2) >> 2] | 0;
7021 j = (m | 0) > 0;
7022 if (!o) {
7023 if (j) {
7024 l = 0;
7025 k = e;
7026 j = f;
7027
7028 do {
7029 k = Db(k, j) | 0;
7030 j = F() | 0;
7031 i = La(i) | 0;
7032 l = l + 1 | 0;
7033 } while ((l | 0) != (m | 0));
7034
7035 m = i;
7036 l = k;
7037 k = j;
7038 } else {
7039 m = i;
7040 l = e;
7041 k = f;
7042 }
7043 } else if (j) {
7044 l = 0;
7045 k = e;
7046 j = f;
7047
7048 do {
7049 k = Cb(k, j) | 0;
7050 j = F() | 0;
7051 i = La(i) | 0;
7052 if ((i | 0) == 1) { i = La(1) | 0; }
7053 l = l + 1 | 0;
7054 } while ((l | 0) != (m | 0));
7055
7056 m = i;
7057 l = k;
7058 k = j;
7059 } else {
7060 m = i;
7061 l = e;
7062 k = f;
7063 }
7064 Hb(l, k, t) | 0;
7065 if (!p) { G(22611, 22588, 181, 22598); }
7066 j = (n | 0) != 0;
7067 i = (o | 0) != 0;
7068 if (j & i) { G(22638, 22588, 182, 22598); }
7069 if (!j) {
7070 if (i) {
7071 i = zb(l, k) | 0;
7072
7073 if (a[22032 + (i * 7 | 0) + m >> 0] | 0) {
7074 h = 4;
7075 break;
7076 }
7077
7078 l = 0;
7079 k = b[21200 + (m * 28 | 0) + (i << 2) >> 2] | 0;
7080 r = 26;
7081 } else { i = 0; }
7082 } else {
7083 i = zb(c, d) | 0;
7084
7085 if (a[22032 + (i * 7 | 0) + q >> 0] | 0) {
7086 h = 3;
7087 break;
7088 }
7089
7090 k = b[21200 + (i * 28 | 0) + (q << 2) >> 2] | 0;
7091 l = k;
7092 r = 26;
7093 }
7094
7095 if ((r | 0) == 26) {
7096 if ((k | 0) <= -1) { G(22669, 22588, 212, 22598); }
7097 if ((l | 0) <= -1) { G(22692, 22588, 213, 22598); }
7098
7099 if ((k | 0) > 0) {
7100 j = t + 4 | 0;
7101 i = 0;
7102
7103 do {
7104 Ja(j);
7105 i = i + 1 | 0;
7106 } while ((i | 0) != (k | 0));
7107
7108 i = l;
7109 } else { i = l; }
7110 }
7111 b[s >> 2] = 0;
7112 b[s + 4 >> 2] = 0;
7113 b[s + 8 >> 2] = 0;
7114 Ha(s, q);
7115 if (h | 0) { while (1) {
7116 if (!(Fb(h) | 0)) { Ga(s); }else { Fa(s); }
7117 if ((h | 0) > 1) { h = h + -1 | 0; }else { break; }
7118 } }
7119
7120 if ((i | 0) > 0) {
7121 h = 0;
7122
7123 do {
7124 Ja(s);
7125 h = h + 1 | 0;
7126 } while ((h | 0) != (i | 0));
7127 }
7128
7129 r = t + 4 | 0;
7130 za(r, s, r);
7131 xa(r);
7132 r = 50;
7133 } } while (0);
7134
7135 if ((r | 0) == 50) {
7136 h = t + 4 | 0;
7137 b[g >> 2] = b[h >> 2];
7138 b[g + 4 >> 2] = b[h + 4 >> 2];
7139 b[g + 8 >> 2] = b[h + 8 >> 2];
7140 h = 0;
7141 }
7142
7143 t = h;
7144 R = u;
7145 return t | 0;
7146 }
7147
7148 function bc(a, c, d, e) {
7149 a = a | 0;
7150 c = c | 0;
7151 d = d | 0;
7152 e = e | 0;
7153 var f = 0,
7154 g = 0,
7155 h = 0,
7156 i = 0,
7157 j = 0,
7158 k = 0,
7159 l = 0,
7160 m = 0,
7161 n = 0,
7162 o = 0,
7163 p = 0,
7164 q = 0,
7165 r = 0,
7166 s = 0,
7167 t = 0;
7168 p = R;
7169 R = R + 48 | 0;
7170 h = p + 36 | 0;
7171 i = p + 24 | 0;
7172 j = p + 12 | 0;
7173 k = p;
7174 g = Qc(a | 0, c | 0, 52) | 0;
7175 F() | 0;
7176 g = g & 15;
7177 n = Qc(a | 0, c | 0, 45) | 0;
7178 F() | 0;
7179 n = n & 127;
7180 l = ia(n) | 0;
7181 Rc(g | 0, 0, 52) | 0;
7182 r = F() | 0 | 134225919;
7183 q = e;
7184 b[q >> 2] = -1;
7185 b[q + 4 >> 2] = r;
7186
7187 if (!g) {
7188 if ((b[d >> 2] | 0) > 1) {
7189 r = 1;
7190 R = p;
7191 return r | 0;
7192 }
7193
7194 if ((b[d + 4 >> 2] | 0) > 1) {
7195 r = 1;
7196 R = p;
7197 return r | 0;
7198 }
7199
7200 if ((b[d + 8 >> 2] | 0) > 1) {
7201 r = 1;
7202 R = p;
7203 return r | 0;
7204 }
7205
7206 f = na(n, Ca(d) | 0) | 0;
7207
7208 if ((f | 0) == 127) {
7209 r = 1;
7210 R = p;
7211 return r | 0;
7212 }
7213
7214 o = Rc(f | 0, 0, 45) | 0;
7215 q = F() | 0;
7216 n = e;
7217 q = b[n + 4 >> 2] & -1040385 | q;
7218 r = e;
7219 b[r >> 2] = b[n >> 2] | o;
7220 b[r + 4 >> 2] = q;
7221 r = 0;
7222 R = p;
7223 return r | 0;
7224 }
7225 b[h >> 2] = b[d >> 2];
7226 b[h + 4 >> 2] = b[d + 4 >> 2];
7227 b[h + 8 >> 2] = b[d + 8 >> 2];
7228
7229 while (1) {
7230 b[i >> 2] = b[h >> 2];
7231 b[i + 4 >> 2] = b[h + 4 >> 2];
7232 b[i + 8 >> 2] = b[h + 8 >> 2];
7233
7234 if (!(Fb(g) | 0)) {
7235 Ea(h);
7236 b[j >> 2] = b[h >> 2];
7237 b[j + 4 >> 2] = b[h + 4 >> 2];
7238 b[j + 8 >> 2] = b[h + 8 >> 2];
7239 Ga(j);
7240 } else {
7241 Da(h);
7242 b[j >> 2] = b[h >> 2];
7243 b[j + 4 >> 2] = b[h + 4 >> 2];
7244 b[j + 8 >> 2] = b[h + 8 >> 2];
7245 Fa(j);
7246 }
7247
7248 Aa(i, j, k);
7249 xa(k);
7250 q = e;
7251 s = b[q >> 2] | 0;
7252 q = b[q + 4 >> 2] | 0;
7253 t = (15 - g | 0) * 3 | 0;
7254 d = Rc(7, 0, t | 0) | 0;
7255 q = q & ~(F() | 0);
7256 t = Rc(Ca(k) | 0, 0, t | 0) | 0;
7257 q = F() | 0 | q;
7258 r = e;
7259 b[r >> 2] = t | s & ~d;
7260 b[r + 4 >> 2] = q;
7261 if ((g | 0) > 1) { g = g + -1 | 0; }else { break; }
7262 }
7263
7264 a: do { if (((b[h >> 2] | 0) <= 1 ? (b[h + 4 >> 2] | 0) <= 1 : 0) ? (b[h + 8 >> 2] | 0) <= 1 : 0) {
7265 g = Ca(h) | 0;
7266 i = na(n, g) | 0;
7267 if ((i | 0) == 127) { k = 0; }else { k = ia(i) | 0; }
7268
7269 b: do { if (!g) {
7270 if ((l | 0) != 0 & (k | 0) != 0) {
7271 t = zb(a, c) | 0;
7272 g = e;
7273 g = 21408 + (t * 28 | 0) + ((zb(b[g >> 2] | 0, b[g + 4 >> 2] | 0) | 0) << 2) | 0;
7274 g = b[g >> 2] | 0;
7275 if ((g | 0) <= -1) { G(22840, 22588, 433, 22773); }
7276
7277 if (!g) {
7278 f = i;
7279 g = 55;
7280 } else {
7281 h = e;
7282 f = 0;
7283 d = b[h >> 2] | 0;
7284 h = b[h + 4 >> 2] | 0;
7285
7286 do {
7287 d = Bb(d, h) | 0;
7288 h = F() | 0;
7289 t = e;
7290 b[t >> 2] = d;
7291 b[t + 4 >> 2] = h;
7292 f = f + 1 | 0;
7293 } while ((f | 0) < (g | 0));
7294
7295 f = i;
7296 g = 54;
7297 }
7298 } else {
7299 f = i;
7300 g = 54;
7301 }
7302 } else {
7303 if (l) {
7304 h = 21408 + ((zb(a, c) | 0) * 28 | 0) + (g << 2) | 0;
7305 h = b[h >> 2] | 0;
7306
7307 if ((h | 0) > 0) {
7308 d = 0;
7309
7310 do {
7311 g = Ka(g) | 0;
7312 d = d + 1 | 0;
7313 } while ((d | 0) != (h | 0));
7314 }
7315
7316 if ((g | 0) == 1) {
7317 f = 3;
7318 break a;
7319 }
7320
7321 d = na(n, g) | 0;
7322 if ((d | 0) == 127) { G(22743, 22588, 376, 22773); }
7323
7324 if (!(ia(d) | 0)) {
7325 o = h;
7326 m = g;
7327 f = d;
7328 } else { G(22786, 22588, 377, 22773); }
7329 } else {
7330 o = 0;
7331 m = g;
7332 f = i;
7333 }
7334
7335 j = b[4304 + (n * 28 | 0) + (m << 2) >> 2] | 0;
7336 if ((j | 0) <= -1) { G(22817, 22588, 384, 22773); }
7337
7338 if (!k) {
7339 if ((o | 0) <= -1) { G(22669, 22588, 417, 22773); }
7340
7341 if (o | 0) {
7342 h = e;
7343 g = 0;
7344 d = b[h >> 2] | 0;
7345 h = b[h + 4 >> 2] | 0;
7346
7347 do {
7348 d = Bb(d, h) | 0;
7349 h = F() | 0;
7350 t = e;
7351 b[t >> 2] = d;
7352 b[t + 4 >> 2] = h;
7353 g = g + 1 | 0;
7354 } while ((g | 0) < (o | 0));
7355 }
7356
7357 if ((j | 0) <= 0) {
7358 g = 54;
7359 break;
7360 }
7361
7362 h = e;
7363 g = 0;
7364 d = b[h >> 2] | 0;
7365 h = b[h + 4 >> 2] | 0;
7366
7367 while (1) {
7368 d = Bb(d, h) | 0;
7369 h = F() | 0;
7370 t = e;
7371 b[t >> 2] = d;
7372 b[t + 4 >> 2] = h;
7373 g = g + 1 | 0;
7374
7375 if ((g | 0) == (j | 0)) {
7376 g = 54;
7377 break b;
7378 }
7379 }
7380 }
7381
7382 i = oa(f, n) | 0;
7383 if ((i | 0) == 7) { G(22564, 22588, 393, 22773); }
7384 g = e;
7385 d = b[g >> 2] | 0;
7386 g = b[g + 4 >> 2] | 0;
7387
7388 if ((j | 0) > 0) {
7389 h = 0;
7390
7391 do {
7392 d = Bb(d, g) | 0;
7393 g = F() | 0;
7394 t = e;
7395 b[t >> 2] = d;
7396 b[t + 4 >> 2] = g;
7397 h = h + 1 | 0;
7398 } while ((h | 0) != (j | 0));
7399 }
7400
7401 d = zb(d, g) | 0;
7402 t = ja(f) | 0;
7403 d = b[(t ? 21824 : 21616) + (i * 28 | 0) + (d << 2) >> 2] | 0;
7404 if ((d | 0) <= -1) { G(22669, 22588, 412, 22773); }
7405 if (!d) { g = 54; }else {
7406 i = e;
7407 g = 0;
7408 h = b[i >> 2] | 0;
7409 i = b[i + 4 >> 2] | 0;
7410
7411 do {
7412 h = Ab(h, i) | 0;
7413 i = F() | 0;
7414 t = e;
7415 b[t >> 2] = h;
7416 b[t + 4 >> 2] = i;
7417 g = g + 1 | 0;
7418 } while ((g | 0) < (d | 0));
7419
7420 g = 54;
7421 }
7422 } } while (0);
7423
7424 if ((g | 0) == 54) { if (k) { g = 55; } }
7425
7426 if ((g | 0) == 55) {
7427 t = e;
7428
7429 if ((zb(b[t >> 2] | 0, b[t + 4 >> 2] | 0) | 0) == 1) {
7430 f = 4;
7431 break;
7432 }
7433 }
7434
7435 t = e;
7436 r = b[t >> 2] | 0;
7437 t = b[t + 4 >> 2] & -1040385;
7438 s = Rc(f | 0, 0, 45) | 0;
7439 t = t | (F() | 0);
7440 f = e;
7441 b[f >> 2] = r | s;
7442 b[f + 4 >> 2] = t;
7443 f = 0;
7444 } else { f = 2; } } while (0);
7445
7446 t = f;
7447 R = p;
7448 return t | 0;
7449 }
7450
7451 function cc(a, b, c, d, e) {
7452 a = a | 0;
7453 b = b | 0;
7454 c = c | 0;
7455 d = d | 0;
7456 e = e | 0;
7457 var f = 0,
7458 g = 0;
7459 g = R;
7460 R = R + 16 | 0;
7461 f = g;
7462 a = ac(a, b, c, d, f) | 0;
7463
7464 if (!a) {
7465 Pa(f, e);
7466 a = 0;
7467 }
7468
7469 R = g;
7470 return a | 0;
7471 }
7472
7473 function dc(a, b, c, d) {
7474 a = a | 0;
7475 b = b | 0;
7476 c = c | 0;
7477 d = d | 0;
7478 var e = 0,
7479 f = 0;
7480 e = R;
7481 R = R + 16 | 0;
7482 f = e;
7483 Qa(c, f);
7484 d = bc(a, b, f, d) | 0;
7485 R = e;
7486 return d | 0;
7487 }
7488
7489 function ec(a, b, c, d) {
7490 a = a | 0;
7491 b = b | 0;
7492 c = c | 0;
7493 d = d | 0;
7494 var e = 0,
7495 f = 0,
7496 g = 0;
7497 g = R;
7498 R = R + 32 | 0;
7499 e = g + 12 | 0;
7500 f = g;
7501 if ((ac(a, b, a, b, e) | 0) == 0 ? (ac(a, b, c, d, f) | 0) == 0 : 0) { a = Oa(e, f) | 0; }else { a = -1; }
7502 R = g;
7503 return a | 0;
7504 }
7505
7506 function fc(a, b, c, d) {
7507 a = a | 0;
7508 b = b | 0;
7509 c = c | 0;
7510 d = d | 0;
7511 var e = 0,
7512 f = 0,
7513 g = 0;
7514 g = R;
7515 R = R + 32 | 0;
7516 e = g + 12 | 0;
7517 f = g;
7518 if ((ac(a, b, a, b, e) | 0) == 0 ? (ac(a, b, c, d, f) | 0) == 0 : 0) { a = Oa(e, f) | 0; }else { a = -1; }
7519 R = g;
7520 return (a >>> 31 ^ 1) + a | 0;
7521 }
7522
7523 function gc(a, c, d, e, f) {
7524 a = a | 0;
7525 c = c | 0;
7526 d = d | 0;
7527 e = e | 0;
7528 f = f | 0;
7529 var g = 0,
7530 h = 0,
7531 i = 0.0,
7532 j = 0.0,
7533 k = 0,
7534 l = 0,
7535 m = 0,
7536 n = 0,
7537 o = 0.0,
7538 p = 0.0,
7539 r = 0.0,
7540 s = 0,
7541 t = 0,
7542 u = 0,
7543 v = 0,
7544 w = 0,
7545 x = 0,
7546 y = 0.0;
7547 x = R;
7548 R = R + 48 | 0;
7549 g = x + 24 | 0;
7550 h = x + 12 | 0;
7551 w = x;
7552
7553 if ((ac(a, c, a, c, g) | 0) == 0 ? (ac(a, c, d, e, h) | 0) == 0 : 0) {
7554 v = Oa(g, h) | 0;
7555
7556 if ((v | 0) < 0) {
7557 w = v;
7558 R = x;
7559 return w | 0;
7560 }
7561 b[g >> 2] = 0;
7562 b[g + 4 >> 2] = 0;
7563 b[g + 8 >> 2] = 0;
7564 b[h >> 2] = 0;
7565 b[h + 4 >> 2] = 0;
7566 b[h + 8 >> 2] = 0;
7567 ac(a, c, a, c, g) | 0;
7568 ac(a, c, d, e, h) | 0;
7569 Ra(g);
7570 Ra(h);
7571
7572 if (!v) {
7573 e = g + 4 | 0;
7574 n = g + 8 | 0;
7575 s = e;
7576 t = n;
7577 u = g;
7578 d = b[g >> 2] | 0;
7579 e = b[e >> 2] | 0;
7580 g = b[n >> 2] | 0;
7581 p = 0.0;
7582 r = 0.0;
7583 o = 0.0;
7584 } else {
7585 l = b[g >> 2] | 0;
7586 o = +(v | 0);
7587 s = g + 4 | 0;
7588 m = b[s >> 2] | 0;
7589 t = g + 8 | 0;
7590 n = b[t >> 2] | 0;
7591 u = g;
7592 d = l;
7593 e = m;
7594 g = n;
7595 p = +((b[h >> 2] | 0) - l | 0) / o;
7596 r = +((b[h + 4 >> 2] | 0) - m | 0) / o;
7597 o = +((b[h + 8 >> 2] | 0) - n | 0) / o;
7598 }
7599
7600 b[w >> 2] = d;
7601 n = w + 4 | 0;
7602 b[n >> 2] = e;
7603 m = w + 8 | 0;
7604 b[m >> 2] = g;
7605 l = 0;
7606
7607 while (1) {
7608 j = +(l | 0);
7609 y = p * j + +(d | 0);
7610 i = r * j + +(b[s >> 2] | 0);
7611 j = o * j + +(b[t >> 2] | 0);
7612 e = ~~+Sc(+y);
7613 h = ~~+Sc(+i);
7614 d = ~~+Sc(+j);
7615 y = +q(+(+(e | 0) - y));
7616 i = +q(+(+(h | 0) - i));
7617 j = +q(+(+(d | 0) - j));
7618
7619 do { if (!(y > i & y > j)) {
7620 k = 0 - e | 0;
7621
7622 if (i > j) {
7623 g = k - d | 0;
7624 break;
7625 } else {
7626 g = h;
7627 d = k - h | 0;
7628 break;
7629 }
7630 } else {
7631 e = 0 - (h + d) | 0;
7632 g = h;
7633 } } while (0);
7634
7635 b[w >> 2] = e;
7636 b[n >> 2] = g;
7637 b[m >> 2] = d;
7638 Sa(w);
7639 bc(a, c, w, f + (l << 3) | 0) | 0;
7640 if ((l | 0) == (v | 0)) { break; }
7641 l = l + 1 | 0;
7642 d = b[u >> 2] | 0;
7643 }
7644
7645 w = 0;
7646 R = x;
7647 return w | 0;
7648 }
7649
7650 w = -1;
7651 R = x;
7652 return w | 0;
7653 }
7654
7655 function hc(a, b) {
7656 a = a | 0;
7657 b = b | 0;
7658 var c = 0;
7659
7660 if (!b) {
7661 c = 1;
7662 return c | 0;
7663 }
7664
7665 c = a;
7666 a = 1;
7667
7668 do {
7669 a = B((b & 1 | 0) == 0 ? 1 : c, a) | 0;
7670 b = b >> 1;
7671 c = B(c, c) | 0;
7672 } while ((b | 0) != 0);
7673
7674 return a | 0;
7675 }
7676
7677 function ic(a, c, d) {
7678 a = a | 0;
7679 c = c | 0;
7680 d = d | 0;
7681 var f = 0.0,
7682 g = 0.0,
7683 h = 0.0,
7684 i = 0.0,
7685 j = 0.0,
7686 k = 0.0,
7687 l = 0,
7688 m = 0,
7689 n = 0,
7690 o = 0.0;
7691
7692 if (!(ta(c, d) | 0)) {
7693 n = 0;
7694 return n | 0;
7695 }
7696
7697 c = ra(c) | 0;
7698 o = +e[d >> 3];
7699 f = +e[d + 8 >> 3];
7700 f = c & f < 0.0 ? f + 6.283185307179586 : f;
7701 n = b[a >> 2] | 0;
7702
7703 if ((n | 0) <= 0) {
7704 n = 0;
7705 return n | 0;
7706 }
7707
7708 m = b[a + 4 >> 2] | 0;
7709
7710 if (c) {
7711 c = 0;
7712 d = -1;
7713 a = 0;
7714
7715 a: while (1) {
7716 l = a;
7717
7718 while (1) {
7719 i = +e[m + (l << 4) >> 3];
7720 k = +e[m + (l << 4) + 8 >> 3];
7721 a = (d + 2 | 0) % (n | 0) | 0;
7722 h = +e[m + (a << 4) >> 3];
7723 g = +e[m + (a << 4) + 8 >> 3];
7724
7725 if (i > h) {
7726 j = i;
7727 i = k;
7728 } else {
7729 j = h;
7730 h = i;
7731 i = g;
7732 g = k;
7733 }
7734
7735 if (!(o < h | o > j)) { break; }
7736 d = l + 1 | 0;
7737
7738 if ((d | 0) < (n | 0)) {
7739 a = l;
7740 l = d;
7741 d = a;
7742 } else {
7743 d = 22;
7744 break a;
7745 }
7746 }
7747
7748 k = g < 0.0 ? g + 6.283185307179586 : g;
7749 i = i < 0.0 ? i + 6.283185307179586 : i;
7750 f = i == f | k == f ? f + -2.220446049250313e-16 : f;
7751 k = k + (o - h) / (j - h) * (i - k);
7752 if ((k < 0.0 ? k + 6.283185307179586 : k) > f) { c = c ^ 1; }
7753 a = l + 1 | 0;
7754
7755 if ((a | 0) >= (n | 0)) {
7756 d = 22;
7757 break;
7758 } else { d = l; }
7759 }
7760
7761 if ((d | 0) == 22) { return c | 0; }
7762 } else {
7763 c = 0;
7764 d = -1;
7765 a = 0;
7766
7767 b: while (1) {
7768 l = a;
7769
7770 while (1) {
7771 i = +e[m + (l << 4) >> 3];
7772 k = +e[m + (l << 4) + 8 >> 3];
7773 a = (d + 2 | 0) % (n | 0) | 0;
7774 h = +e[m + (a << 4) >> 3];
7775 g = +e[m + (a << 4) + 8 >> 3];
7776
7777 if (i > h) {
7778 j = i;
7779 i = k;
7780 } else {
7781 j = h;
7782 h = i;
7783 i = g;
7784 g = k;
7785 }
7786
7787 if (!(o < h | o > j)) { break; }
7788 d = l + 1 | 0;
7789
7790 if ((d | 0) < (n | 0)) {
7791 a = l;
7792 l = d;
7793 d = a;
7794 } else {
7795 d = 22;
7796 break b;
7797 }
7798 }
7799
7800 f = i == f | g == f ? f + -2.220446049250313e-16 : f;
7801 if (g + (o - h) / (j - h) * (i - g) > f) { c = c ^ 1; }
7802 a = l + 1 | 0;
7803
7804 if ((a | 0) >= (n | 0)) {
7805 d = 22;
7806 break;
7807 } else { d = l; }
7808 }
7809
7810 if ((d | 0) == 22) { return c | 0; }
7811 }
7812
7813 return 0;
7814 }
7815
7816 function jc(a, c) {
7817 a = a | 0;
7818 c = c | 0;
7819 var d = 0.0,
7820 f = 0.0,
7821 g = 0.0,
7822 h = 0.0,
7823 i = 0.0,
7824 j = 0.0,
7825 k = 0.0,
7826 l = 0.0,
7827 m = 0.0,
7828 n = 0,
7829 o = 0,
7830 p = 0,
7831 r = 0,
7832 s = 0,
7833 t = 0,
7834 u = 0,
7835 v = 0;
7836 r = b[a >> 2] | 0;
7837
7838 if (!r) {
7839 b[c >> 2] = 0;
7840 b[c + 4 >> 2] = 0;
7841 b[c + 8 >> 2] = 0;
7842 b[c + 12 >> 2] = 0;
7843 b[c + 16 >> 2] = 0;
7844 b[c + 20 >> 2] = 0;
7845 b[c + 24 >> 2] = 0;
7846 b[c + 28 >> 2] = 0;
7847 return;
7848 }
7849
7850 s = c + 8 | 0;
7851 e[s >> 3] = 1797693134862315708145274.0e284;
7852 t = c + 24 | 0;
7853 e[t >> 3] = 1797693134862315708145274.0e284;
7854 e[c >> 3] = -1797693134862315708145274.0e284;
7855 u = c + 16 | 0;
7856 e[u >> 3] = -1797693134862315708145274.0e284;
7857 if ((r | 0) <= 0) { return; }
7858 o = b[a + 4 >> 2] | 0;
7859 l = 1797693134862315708145274.0e284;
7860 m = -1797693134862315708145274.0e284;
7861 n = 0;
7862 a = -1;
7863 h = 1797693134862315708145274.0e284;
7864 i = 1797693134862315708145274.0e284;
7865 k = -1797693134862315708145274.0e284;
7866 f = -1797693134862315708145274.0e284;
7867 p = 0;
7868
7869 while (1) {
7870 d = +e[o + (p << 4) >> 3];
7871 j = +e[o + (p << 4) + 8 >> 3];
7872 a = a + 2 | 0;
7873 g = +e[o + (((a | 0) == (r | 0) ? 0 : a) << 4) + 8 >> 3];
7874
7875 if (d < h) {
7876 e[s >> 3] = d;
7877 h = d;
7878 }
7879
7880 if (j < i) {
7881 e[t >> 3] = j;
7882 i = j;
7883 }
7884
7885 if (d > k) { e[c >> 3] = d; }else { d = k; }
7886
7887 if (j > f) {
7888 e[u >> 3] = j;
7889 f = j;
7890 }
7891
7892 l = j > 0.0 & j < l ? j : l;
7893 m = j < 0.0 & j > m ? j : m;
7894 n = n | +q(+(j - g)) > 3.141592653589793;
7895 a = p + 1 | 0;
7896 if ((a | 0) == (r | 0)) { break; }else {
7897 v = p;
7898 k = d;
7899 p = a;
7900 a = v;
7901 }
7902 }
7903
7904 if (!n) { return; }
7905 e[u >> 3] = m;
7906 e[t >> 3] = l;
7907 return;
7908 }
7909
7910 function kc(a, c) {
7911 a = a | 0;
7912 c = c | 0;
7913 var d = 0,
7914 f = 0,
7915 g = 0,
7916 h = 0.0,
7917 i = 0.0,
7918 j = 0.0,
7919 k = 0.0,
7920 l = 0.0,
7921 m = 0.0,
7922 n = 0.0,
7923 o = 0.0,
7924 p = 0.0,
7925 r = 0,
7926 s = 0,
7927 t = 0,
7928 u = 0,
7929 v = 0,
7930 w = 0,
7931 x = 0,
7932 y = 0,
7933 z = 0,
7934 A = 0;
7935 r = b[a >> 2] | 0;
7936
7937 if (r) {
7938 s = c + 8 | 0;
7939 e[s >> 3] = 1797693134862315708145274.0e284;
7940 t = c + 24 | 0;
7941 e[t >> 3] = 1797693134862315708145274.0e284;
7942 e[c >> 3] = -1797693134862315708145274.0e284;
7943 u = c + 16 | 0;
7944 e[u >> 3] = -1797693134862315708145274.0e284;
7945
7946 if ((r | 0) > 0) {
7947 g = b[a + 4 >> 2] | 0;
7948 o = 1797693134862315708145274.0e284;
7949 p = -1797693134862315708145274.0e284;
7950 f = 0;
7951 d = -1;
7952 k = 1797693134862315708145274.0e284;
7953 l = 1797693134862315708145274.0e284;
7954 n = -1797693134862315708145274.0e284;
7955 i = -1797693134862315708145274.0e284;
7956 v = 0;
7957
7958 while (1) {
7959 h = +e[g + (v << 4) >> 3];
7960 m = +e[g + (v << 4) + 8 >> 3];
7961 z = d + 2 | 0;
7962 j = +e[g + (((z | 0) == (r | 0) ? 0 : z) << 4) + 8 >> 3];
7963
7964 if (h < k) {
7965 e[s >> 3] = h;
7966 k = h;
7967 }
7968
7969 if (m < l) {
7970 e[t >> 3] = m;
7971 l = m;
7972 }
7973
7974 if (h > n) { e[c >> 3] = h; }else { h = n; }
7975
7976 if (m > i) {
7977 e[u >> 3] = m;
7978 i = m;
7979 }
7980
7981 o = m > 0.0 & m < o ? m : o;
7982 p = m < 0.0 & m > p ? m : p;
7983 f = f | +q(+(m - j)) > 3.141592653589793;
7984 d = v + 1 | 0;
7985 if ((d | 0) == (r | 0)) { break; }else {
7986 z = v;
7987 n = h;
7988 v = d;
7989 d = z;
7990 }
7991 }
7992
7993 if (f) {
7994 e[u >> 3] = p;
7995 e[t >> 3] = o;
7996 }
7997 }
7998 } else {
7999 b[c >> 2] = 0;
8000 b[c + 4 >> 2] = 0;
8001 b[c + 8 >> 2] = 0;
8002 b[c + 12 >> 2] = 0;
8003 b[c + 16 >> 2] = 0;
8004 b[c + 20 >> 2] = 0;
8005 b[c + 24 >> 2] = 0;
8006 b[c + 28 >> 2] = 0;
8007 }
8008
8009 z = a + 8 | 0;
8010 d = b[z >> 2] | 0;
8011 if ((d | 0) <= 0) { return; }
8012 y = a + 12 | 0;
8013 x = 0;
8014
8015 do {
8016 g = b[y >> 2] | 0;
8017 f = x;
8018 x = x + 1 | 0;
8019 t = c + (x << 5) | 0;
8020 u = b[g + (f << 3) >> 2] | 0;
8021
8022 if (u) {
8023 v = c + (x << 5) + 8 | 0;
8024 e[v >> 3] = 1797693134862315708145274.0e284;
8025 a = c + (x << 5) + 24 | 0;
8026 e[a >> 3] = 1797693134862315708145274.0e284;
8027 e[t >> 3] = -1797693134862315708145274.0e284;
8028 w = c + (x << 5) + 16 | 0;
8029 e[w >> 3] = -1797693134862315708145274.0e284;
8030
8031 if ((u | 0) > 0) {
8032 r = b[g + (f << 3) + 4 >> 2] | 0;
8033 o = 1797693134862315708145274.0e284;
8034 p = -1797693134862315708145274.0e284;
8035 g = 0;
8036 f = -1;
8037 s = 0;
8038 k = 1797693134862315708145274.0e284;
8039 l = 1797693134862315708145274.0e284;
8040 m = -1797693134862315708145274.0e284;
8041 i = -1797693134862315708145274.0e284;
8042
8043 while (1) {
8044 h = +e[r + (s << 4) >> 3];
8045 n = +e[r + (s << 4) + 8 >> 3];
8046 f = f + 2 | 0;
8047 j = +e[r + (((f | 0) == (u | 0) ? 0 : f) << 4) + 8 >> 3];
8048
8049 if (h < k) {
8050 e[v >> 3] = h;
8051 k = h;
8052 }
8053
8054 if (n < l) {
8055 e[a >> 3] = n;
8056 l = n;
8057 }
8058
8059 if (h > m) { e[t >> 3] = h; }else { h = m; }
8060
8061 if (n > i) {
8062 e[w >> 3] = n;
8063 i = n;
8064 }
8065
8066 o = n > 0.0 & n < o ? n : o;
8067 p = n < 0.0 & n > p ? n : p;
8068 g = g | +q(+(n - j)) > 3.141592653589793;
8069 f = s + 1 | 0;
8070 if ((f | 0) == (u | 0)) { break; }else {
8071 A = s;
8072 s = f;
8073 m = h;
8074 f = A;
8075 }
8076 }
8077
8078 if (g) {
8079 e[w >> 3] = p;
8080 e[a >> 3] = o;
8081 }
8082 }
8083 } else {
8084 b[t >> 2] = 0;
8085 b[t + 4 >> 2] = 0;
8086 b[t + 8 >> 2] = 0;
8087 b[t + 12 >> 2] = 0;
8088 b[t + 16 >> 2] = 0;
8089 b[t + 20 >> 2] = 0;
8090 b[t + 24 >> 2] = 0;
8091 b[t + 28 >> 2] = 0;
8092 d = b[z >> 2] | 0;
8093 }
8094 } while ((x | 0) < (d | 0));
8095
8096 return;
8097 }
8098
8099 function lc(a, c, d) {
8100 a = a | 0;
8101 c = c | 0;
8102 d = d | 0;
8103 var e = 0,
8104 f = 0,
8105 g = 0;
8106
8107 if (!(ic(a, c, d) | 0)) {
8108 f = 0;
8109 return f | 0;
8110 }
8111
8112 f = a + 8 | 0;
8113
8114 if ((b[f >> 2] | 0) <= 0) {
8115 f = 1;
8116 return f | 0;
8117 }
8118
8119 e = a + 12 | 0;
8120 a = 0;
8121
8122 while (1) {
8123 g = a;
8124 a = a + 1 | 0;
8125
8126 if (ic((b[e >> 2] | 0) + (g << 3) | 0, c + (a << 5) | 0, d) | 0) {
8127 a = 0;
8128 e = 6;
8129 break;
8130 }
8131
8132 if ((a | 0) >= (b[f >> 2] | 0)) {
8133 a = 1;
8134 e = 6;
8135 break;
8136 }
8137 }
8138
8139 if ((e | 0) == 6) { return a | 0; }
8140 return 0;
8141 }
8142
8143 function mc() {
8144 return 8;
8145 }
8146
8147 function nc() {
8148 return 16;
8149 }
8150
8151 function oc() {
8152 return 168;
8153 }
8154
8155 function pc() {
8156 return 8;
8157 }
8158
8159 function qc() {
8160 return 16;
8161 }
8162
8163 function rc() {
8164 return 12;
8165 }
8166
8167 function sc() {
8168 return 8;
8169 }
8170
8171 function tc(a) {
8172 a = a | 0;
8173 var b = 0.0,
8174 c = 0.0;
8175 c = +e[a >> 3];
8176 b = +e[a + 8 >> 3];
8177 return + +r(+(c * c + b * b));
8178 }
8179
8180 function uc(a, b, c, d, f) {
8181 a = a | 0;
8182 b = b | 0;
8183 c = c | 0;
8184 d = d | 0;
8185 f = f | 0;
8186 var g = 0.0,
8187 h = 0.0,
8188 i = 0.0,
8189 j = 0.0,
8190 k = 0.0,
8191 l = 0.0,
8192 m = 0.0,
8193 n = 0.0;
8194 k = +e[a >> 3];
8195 j = +e[b >> 3] - k;
8196 i = +e[a + 8 >> 3];
8197 h = +e[b + 8 >> 3] - i;
8198 m = +e[c >> 3];
8199 g = +e[d >> 3] - m;
8200 n = +e[c + 8 >> 3];
8201 l = +e[d + 8 >> 3] - n;
8202 g = (g * (i - n) - (k - m) * l) / (j * l - h * g);
8203 e[f >> 3] = k + j * g;
8204 e[f + 8 >> 3] = i + h * g;
8205 return;
8206 }
8207
8208 function vc(a, b) {
8209 a = a | 0;
8210 b = b | 0;
8211
8212 if (!(+e[a >> 3] == +e[b >> 3])) {
8213 b = 0;
8214 return b | 0;
8215 }
8216
8217 b = +e[a + 8 >> 3] == +e[b + 8 >> 3];
8218 return b | 0;
8219 }
8220
8221 function wc(a, b) {
8222 a = a | 0;
8223 b = b | 0;
8224 var c = 0.0,
8225 d = 0.0,
8226 f = 0.0;
8227 f = +e[a >> 3] - +e[b >> 3];
8228 d = +e[a + 8 >> 3] - +e[b + 8 >> 3];
8229 c = +e[a + 16 >> 3] - +e[b + 16 >> 3];
8230 return +(f * f + d * d + c * c);
8231 }
8232
8233 function xc(a, b) {
8234 a = a | 0;
8235 b = b | 0;
8236 var c = 0.0,
8237 d = 0.0,
8238 f = 0.0;
8239 c = +e[a >> 3];
8240 d = +t(+c);
8241 c = +u(+c);
8242 e[b + 16 >> 3] = c;
8243 c = +e[a + 8 >> 3];
8244 f = d * +t(+c);
8245 e[b >> 3] = f;
8246 c = d * +u(+c);
8247 e[b + 8 >> 3] = c;
8248 return;
8249 }
8250
8251 function yc(a, c, d) {
8252 a = a | 0;
8253 c = c | 0;
8254 d = d | 0;
8255 var e = 0;
8256
8257 if ((c | 0) > 0) {
8258 e = Kc(c, 4) | 0;
8259 b[a >> 2] = e;
8260 if (!e) { G(22869, 22892, 37, 22906); }
8261 } else { b[a >> 2] = 0; }
8262
8263 b[a + 4 >> 2] = c;
8264 b[a + 8 >> 2] = 0;
8265 b[a + 12 >> 2] = d;
8266 return;
8267 }
8268
8269 function zc(a) {
8270 a = a | 0;
8271 var c = 0,
8272 d = 0,
8273 f = 0,
8274 g = 0,
8275 h = 0,
8276 i = 0,
8277 j = 0;
8278 g = a + 4 | 0;
8279 h = a + 12 | 0;
8280 i = a + 8 | 0;
8281
8282 a: while (1) {
8283 d = b[g >> 2] | 0;
8284 c = 0;
8285
8286 while (1) {
8287 if ((c | 0) >= (d | 0)) { break a; }
8288 f = b[a >> 2] | 0;
8289 j = b[f + (c << 2) >> 2] | 0;
8290 if (!j) { c = c + 1 | 0; }else { break; }
8291 }
8292
8293 c = f + (~~(+q(+(+s(10.0, + +(15 - (b[h >> 2] | 0) | 0)) * (+e[j >> 3] + +e[j + 8 >> 3]))) % +(d | 0)) >>> 0 << 2) | 0;
8294 d = b[c >> 2] | 0;
8295
8296 b: do { if (d | 0) {
8297 f = j + 32 | 0;
8298 if ((d | 0) == (j | 0)) { b[c >> 2] = b[f >> 2]; }else {
8299 d = d + 32 | 0;
8300 c = b[d >> 2] | 0;
8301 if (!c) { break; }
8302
8303 while (1) {
8304 if ((c | 0) == (j | 0)) { break; }
8305 d = c + 32 | 0;
8306 c = b[d >> 2] | 0;
8307 if (!c) { break b; }
8308 }
8309
8310 b[d >> 2] = b[f >> 2];
8311 }
8312 Jc(j);
8313 b[i >> 2] = (b[i >> 2] | 0) + -1;
8314 } } while (0);
8315 }
8316
8317 Jc(b[a >> 2] | 0);
8318 return;
8319 }
8320
8321 function Ac(a) {
8322 a = a | 0;
8323 var c = 0,
8324 d = 0,
8325 e = 0;
8326 e = b[a + 4 >> 2] | 0;
8327 d = 0;
8328
8329 while (1) {
8330 if ((d | 0) >= (e | 0)) {
8331 c = 0;
8332 d = 4;
8333 break;
8334 }
8335
8336 c = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;
8337 if (!c) { d = d + 1 | 0; }else {
8338 d = 4;
8339 break;
8340 }
8341 }
8342
8343 if ((d | 0) == 4) { return c | 0; }
8344 return 0;
8345 }
8346
8347 function Bc(a, c) {
8348 a = a | 0;
8349 c = c | 0;
8350 var d = 0,
8351 f = 0,
8352 g = 0,
8353 h = 0;
8354 d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;
8355 d = (b[a >> 2] | 0) + (d << 2) | 0;
8356 f = b[d >> 2] | 0;
8357
8358 if (!f) {
8359 h = 1;
8360 return h | 0;
8361 }
8362
8363 h = c + 32 | 0;
8364
8365 do { if ((f | 0) != (c | 0)) {
8366 d = b[f + 32 >> 2] | 0;
8367
8368 if (!d) {
8369 h = 1;
8370 return h | 0;
8371 }
8372
8373 g = d;
8374
8375 while (1) {
8376 if ((g | 0) == (c | 0)) {
8377 g = 8;
8378 break;
8379 }
8380
8381 d = b[g + 32 >> 2] | 0;
8382
8383 if (!d) {
8384 d = 1;
8385 g = 10;
8386 break;
8387 } else {
8388 f = g;
8389 g = d;
8390 }
8391 }
8392
8393 if ((g | 0) == 8) {
8394 b[f + 32 >> 2] = b[h >> 2];
8395 break;
8396 } else if ((g | 0) == 10) { return d | 0; }
8397 } else { b[d >> 2] = b[h >> 2]; } } while (0);
8398
8399 Jc(c);
8400 h = a + 8 | 0;
8401 b[h >> 2] = (b[h >> 2] | 0) + -1;
8402 h = 0;
8403 return h | 0;
8404 }
8405
8406 function Cc(a, c, d) {
8407 a = a | 0;
8408 c = c | 0;
8409 d = d | 0;
8410 var f = 0,
8411 g = 0,
8412 h = 0,
8413 i = 0;
8414 h = Ic(40) | 0;
8415 if (!h) { G(22922, 22892, 95, 22935); }
8416 b[h >> 2] = b[c >> 2];
8417 b[h + 4 >> 2] = b[c + 4 >> 2];
8418 b[h + 8 >> 2] = b[c + 8 >> 2];
8419 b[h + 12 >> 2] = b[c + 12 >> 2];
8420 g = h + 16 | 0;
8421 b[g >> 2] = b[d >> 2];
8422 b[g + 4 >> 2] = b[d + 4 >> 2];
8423 b[g + 8 >> 2] = b[d + 8 >> 2];
8424 b[g + 12 >> 2] = b[d + 12 >> 2];
8425 b[h + 32 >> 2] = 0;
8426 g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;
8427 g = (b[a >> 2] | 0) + (g << 2) | 0;
8428 f = b[g >> 2] | 0;
8429
8430 do { if (!f) { b[g >> 2] = h; }else {
8431 while (1) {
8432 if (db(f, c) | 0 ? db(f + 16 | 0, d) | 0 : 0) { break; }
8433 g = b[f + 32 >> 2] | 0;
8434 f = (g | 0) == 0 ? f : g;
8435
8436 if (!(b[f + 32 >> 2] | 0)) {
8437 i = 10;
8438 break;
8439 }
8440 }
8441
8442 if ((i | 0) == 10) {
8443 b[f + 32 >> 2] = h;
8444 break;
8445 }
8446
8447 Jc(h);
8448 i = f;
8449 return i | 0;
8450 } } while (0);
8451
8452 i = a + 8 | 0;
8453 b[i >> 2] = (b[i >> 2] | 0) + 1;
8454 i = h;
8455 return i | 0;
8456 }
8457
8458 function Dc(a, c, d) {
8459 a = a | 0;
8460 c = c | 0;
8461 d = d | 0;
8462 var f = 0,
8463 g = 0;
8464 g = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;
8465 g = b[(b[a >> 2] | 0) + (g << 2) >> 2] | 0;
8466
8467 if (!g) {
8468 d = 0;
8469 return d | 0;
8470 }
8471
8472 if (!d) {
8473 a = g;
8474
8475 while (1) {
8476 if (db(a, c) | 0) {
8477 f = 10;
8478 break;
8479 }
8480
8481 a = b[a + 32 >> 2] | 0;
8482
8483 if (!a) {
8484 a = 0;
8485 f = 10;
8486 break;
8487 }
8488 }
8489
8490 if ((f | 0) == 10) { return a | 0; }
8491 }
8492
8493 a = g;
8494
8495 while (1) {
8496 if (db(a, c) | 0 ? db(a + 16 | 0, d) | 0 : 0) {
8497 f = 10;
8498 break;
8499 }
8500
8501 a = b[a + 32 >> 2] | 0;
8502
8503 if (!a) {
8504 a = 0;
8505 f = 10;
8506 break;
8507 }
8508 }
8509
8510 if ((f | 0) == 10) { return a | 0; }
8511 return 0;
8512 }
8513
8514 function Ec(a, c) {
8515 a = a | 0;
8516 c = c | 0;
8517 var d = 0;
8518 d = ~~(+q(+(+s(10.0, + +(15 - (b[a + 12 >> 2] | 0) | 0)) * (+e[c >> 3] + +e[c + 8 >> 3]))) % +(b[a + 4 >> 2] | 0)) >>> 0;
8519 a = b[(b[a >> 2] | 0) + (d << 2) >> 2] | 0;
8520
8521 if (!a) {
8522 d = 0;
8523 return d | 0;
8524 }
8525
8526 while (1) {
8527 if (db(a, c) | 0) {
8528 c = 5;
8529 break;
8530 }
8531
8532 a = b[a + 32 >> 2] | 0;
8533
8534 if (!a) {
8535 a = 0;
8536 c = 5;
8537 break;
8538 }
8539 }
8540
8541 if ((c | 0) == 5) { return a | 0; }
8542 return 0;
8543 }
8544
8545 function Fc() {
8546 return 22960;
8547 }
8548
8549 function Gc(a) {
8550 a = +a;
8551 return + +Vc(+a);
8552 }
8553
8554 function Hc(a) {
8555 a = +a;
8556 return ~~+Gc(a) | 0;
8557 }
8558
8559 function Ic(a) {
8560 a = a | 0;
8561 var c = 0,
8562 d = 0,
8563 e = 0,
8564 f = 0,
8565 g = 0,
8566 h = 0,
8567 i = 0,
8568 j = 0,
8569 k = 0,
8570 l = 0,
8571 m = 0,
8572 n = 0,
8573 o = 0,
8574 p = 0,
8575 q = 0,
8576 r = 0,
8577 s = 0,
8578 t = 0,
8579 u = 0,
8580 v = 0,
8581 w = 0;
8582 w = R;
8583 R = R + 16 | 0;
8584 n = w;
8585
8586 do { if (a >>> 0 < 245) {
8587 k = a >>> 0 < 11 ? 16 : a + 11 & -8;
8588 a = k >>> 3;
8589 m = b[5741] | 0;
8590 d = m >>> a;
8591
8592 if (d & 3 | 0) {
8593 c = (d & 1 ^ 1) + a | 0;
8594 a = 23004 + (c << 1 << 2) | 0;
8595 d = a + 8 | 0;
8596 e = b[d >> 2] | 0;
8597 f = e + 8 | 0;
8598 g = b[f >> 2] | 0;
8599 if ((g | 0) == (a | 0)) { b[5741] = m & ~(1 << c); }else {
8600 b[g + 12 >> 2] = a;
8601 b[d >> 2] = g;
8602 }
8603 v = c << 3;
8604 b[e + 4 >> 2] = v | 3;
8605 v = e + v + 4 | 0;
8606 b[v >> 2] = b[v >> 2] | 1;
8607 v = f;
8608 R = w;
8609 return v | 0;
8610 }
8611
8612 l = b[5743] | 0;
8613
8614 if (k >>> 0 > l >>> 0) {
8615 if (d | 0) {
8616 c = 2 << a;
8617 c = d << a & (c | 0 - c);
8618 c = (c & 0 - c) + -1 | 0;
8619 i = c >>> 12 & 16;
8620 c = c >>> i;
8621 d = c >>> 5 & 8;
8622 c = c >>> d;
8623 g = c >>> 2 & 4;
8624 c = c >>> g;
8625 a = c >>> 1 & 2;
8626 c = c >>> a;
8627 e = c >>> 1 & 1;
8628 e = (d | i | g | a | e) + (c >>> e) | 0;
8629 c = 23004 + (e << 1 << 2) | 0;
8630 a = c + 8 | 0;
8631 g = b[a >> 2] | 0;
8632 i = g + 8 | 0;
8633 d = b[i >> 2] | 0;
8634
8635 if ((d | 0) == (c | 0)) {
8636 a = m & ~(1 << e);
8637 b[5741] = a;
8638 } else {
8639 b[d + 12 >> 2] = c;
8640 b[a >> 2] = d;
8641 a = m;
8642 }
8643
8644 v = e << 3;
8645 h = v - k | 0;
8646 b[g + 4 >> 2] = k | 3;
8647 f = g + k | 0;
8648 b[f + 4 >> 2] = h | 1;
8649 b[g + v >> 2] = h;
8650
8651 if (l | 0) {
8652 e = b[5746] | 0;
8653 c = l >>> 3;
8654 d = 23004 + (c << 1 << 2) | 0;
8655 c = 1 << c;
8656
8657 if (!(a & c)) {
8658 b[5741] = a | c;
8659 c = d;
8660 a = d + 8 | 0;
8661 } else {
8662 a = d + 8 | 0;
8663 c = b[a >> 2] | 0;
8664 }
8665
8666 b[a >> 2] = e;
8667 b[c + 12 >> 2] = e;
8668 b[e + 8 >> 2] = c;
8669 b[e + 12 >> 2] = d;
8670 }
8671
8672 b[5743] = h;
8673 b[5746] = f;
8674 v = i;
8675 R = w;
8676 return v | 0;
8677 }
8678
8679 g = b[5742] | 0;
8680
8681 if (g) {
8682 d = (g & 0 - g) + -1 | 0;
8683 f = d >>> 12 & 16;
8684 d = d >>> f;
8685 e = d >>> 5 & 8;
8686 d = d >>> e;
8687 h = d >>> 2 & 4;
8688 d = d >>> h;
8689 i = d >>> 1 & 2;
8690 d = d >>> i;
8691 j = d >>> 1 & 1;
8692 j = b[23268 + ((e | f | h | i | j) + (d >>> j) << 2) >> 2] | 0;
8693 d = j;
8694 i = j;
8695 j = (b[j + 4 >> 2] & -8) - k | 0;
8696
8697 while (1) {
8698 a = b[d + 16 >> 2] | 0;
8699
8700 if (!a) {
8701 a = b[d + 20 >> 2] | 0;
8702 if (!a) { break; }
8703 }
8704
8705 h = (b[a + 4 >> 2] & -8) - k | 0;
8706 f = h >>> 0 < j >>> 0;
8707 d = a;
8708 i = f ? a : i;
8709 j = f ? h : j;
8710 }
8711
8712 h = i + k | 0;
8713
8714 if (h >>> 0 > i >>> 0) {
8715 f = b[i + 24 >> 2] | 0;
8716 c = b[i + 12 >> 2] | 0;
8717
8718 do { if ((c | 0) == (i | 0)) {
8719 a = i + 20 | 0;
8720 c = b[a >> 2] | 0;
8721
8722 if (!c) {
8723 a = i + 16 | 0;
8724 c = b[a >> 2] | 0;
8725
8726 if (!c) {
8727 d = 0;
8728 break;
8729 }
8730 }
8731
8732 while (1) {
8733 e = c + 20 | 0;
8734 d = b[e >> 2] | 0;
8735
8736 if (!d) {
8737 e = c + 16 | 0;
8738 d = b[e >> 2] | 0;
8739 if (!d) { break; }else {
8740 c = d;
8741 a = e;
8742 }
8743 } else {
8744 c = d;
8745 a = e;
8746 }
8747 }
8748
8749 b[a >> 2] = 0;
8750 d = c;
8751 } else {
8752 d = b[i + 8 >> 2] | 0;
8753 b[d + 12 >> 2] = c;
8754 b[c + 8 >> 2] = d;
8755 d = c;
8756 } } while (0);
8757
8758 do { if (f | 0) {
8759 c = b[i + 28 >> 2] | 0;
8760 a = 23268 + (c << 2) | 0;
8761
8762 if ((i | 0) == (b[a >> 2] | 0)) {
8763 b[a >> 2] = d;
8764
8765 if (!d) {
8766 b[5742] = g & ~(1 << c);
8767 break;
8768 }
8769 } else {
8770 v = f + 16 | 0;
8771 b[((b[v >> 2] | 0) == (i | 0) ? v : f + 20 | 0) >> 2] = d;
8772 if (!d) { break; }
8773 }
8774
8775 b[d + 24 >> 2] = f;
8776 c = b[i + 16 >> 2] | 0;
8777
8778 if (c | 0) {
8779 b[d + 16 >> 2] = c;
8780 b[c + 24 >> 2] = d;
8781 }
8782
8783 c = b[i + 20 >> 2] | 0;
8784
8785 if (c | 0) {
8786 b[d + 20 >> 2] = c;
8787 b[c + 24 >> 2] = d;
8788 }
8789 } } while (0);
8790
8791 if (j >>> 0 < 16) {
8792 v = j + k | 0;
8793 b[i + 4 >> 2] = v | 3;
8794 v = i + v + 4 | 0;
8795 b[v >> 2] = b[v >> 2] | 1;
8796 } else {
8797 b[i + 4 >> 2] = k | 3;
8798 b[h + 4 >> 2] = j | 1;
8799 b[h + j >> 2] = j;
8800
8801 if (l | 0) {
8802 e = b[5746] | 0;
8803 c = l >>> 3;
8804 d = 23004 + (c << 1 << 2) | 0;
8805 c = 1 << c;
8806
8807 if (!(c & m)) {
8808 b[5741] = c | m;
8809 c = d;
8810 a = d + 8 | 0;
8811 } else {
8812 a = d + 8 | 0;
8813 c = b[a >> 2] | 0;
8814 }
8815
8816 b[a >> 2] = e;
8817 b[c + 12 >> 2] = e;
8818 b[e + 8 >> 2] = c;
8819 b[e + 12 >> 2] = d;
8820 }
8821
8822 b[5743] = j;
8823 b[5746] = h;
8824 }
8825
8826 v = i + 8 | 0;
8827 R = w;
8828 return v | 0;
8829 } else { m = k; }
8830 } else { m = k; }
8831 } else { m = k; }
8832 } else if (a >>> 0 <= 4294967231) {
8833 a = a + 11 | 0;
8834 k = a & -8;
8835 e = b[5742] | 0;
8836
8837 if (e) {
8838 f = 0 - k | 0;
8839 a = a >>> 8;
8840 if (a) {
8841 if (k >>> 0 > 16777215) { j = 31; }else {
8842 m = (a + 1048320 | 0) >>> 16 & 8;
8843 q = a << m;
8844 i = (q + 520192 | 0) >>> 16 & 4;
8845 q = q << i;
8846 j = (q + 245760 | 0) >>> 16 & 2;
8847 j = 14 - (i | m | j) + (q << j >>> 15) | 0;
8848 j = k >>> (j + 7 | 0) & 1 | j << 1;
8849 }
8850 } else { j = 0; }
8851 d = b[23268 + (j << 2) >> 2] | 0;
8852
8853 a: do { if (!d) {
8854 d = 0;
8855 a = 0;
8856 q = 61;
8857 } else {
8858 a = 0;
8859 i = k << ((j | 0) == 31 ? 0 : 25 - (j >>> 1) | 0);
8860 g = 0;
8861
8862 while (1) {
8863 h = (b[d + 4 >> 2] & -8) - k | 0;
8864 if (h >>> 0 < f >>> 0) { if (!h) {
8865 a = d;
8866 f = 0;
8867 q = 65;
8868 break a;
8869 } else {
8870 a = d;
8871 f = h;
8872 } }
8873 q = b[d + 20 >> 2] | 0;
8874 d = b[d + 16 + (i >>> 31 << 2) >> 2] | 0;
8875 g = (q | 0) == 0 | (q | 0) == (d | 0) ? g : q;
8876
8877 if (!d) {
8878 d = g;
8879 q = 61;
8880 break;
8881 } else { i = i << 1; }
8882 }
8883 } } while (0);
8884
8885 if ((q | 0) == 61) {
8886 if ((d | 0) == 0 & (a | 0) == 0) {
8887 a = 2 << j;
8888 a = (a | 0 - a) & e;
8889
8890 if (!a) {
8891 m = k;
8892 break;
8893 }
8894
8895 m = (a & 0 - a) + -1 | 0;
8896 h = m >>> 12 & 16;
8897 m = m >>> h;
8898 g = m >>> 5 & 8;
8899 m = m >>> g;
8900 i = m >>> 2 & 4;
8901 m = m >>> i;
8902 j = m >>> 1 & 2;
8903 m = m >>> j;
8904 d = m >>> 1 & 1;
8905 a = 0;
8906 d = b[23268 + ((g | h | i | j | d) + (m >>> d) << 2) >> 2] | 0;
8907 }
8908
8909 if (!d) {
8910 i = a;
8911 h = f;
8912 } else { q = 65; }
8913 }
8914
8915 if ((q | 0) == 65) {
8916 g = d;
8917
8918 while (1) {
8919 m = (b[g + 4 >> 2] & -8) - k | 0;
8920 d = m >>> 0 < f >>> 0;
8921 f = d ? m : f;
8922 a = d ? g : a;
8923 d = b[g + 16 >> 2] | 0;
8924 if (!d) { d = b[g + 20 >> 2] | 0; }
8925
8926 if (!d) {
8927 i = a;
8928 h = f;
8929 break;
8930 } else { g = d; }
8931 }
8932 }
8933
8934 if (((i | 0) != 0 ? h >>> 0 < ((b[5743] | 0) - k | 0) >>> 0 : 0) ? (l = i + k | 0, l >>> 0 > i >>> 0) : 0) {
8935 g = b[i + 24 >> 2] | 0;
8936 c = b[i + 12 >> 2] | 0;
8937
8938 do { if ((c | 0) == (i | 0)) {
8939 a = i + 20 | 0;
8940 c = b[a >> 2] | 0;
8941
8942 if (!c) {
8943 a = i + 16 | 0;
8944 c = b[a >> 2] | 0;
8945
8946 if (!c) {
8947 c = 0;
8948 break;
8949 }
8950 }
8951
8952 while (1) {
8953 f = c + 20 | 0;
8954 d = b[f >> 2] | 0;
8955
8956 if (!d) {
8957 f = c + 16 | 0;
8958 d = b[f >> 2] | 0;
8959 if (!d) { break; }else {
8960 c = d;
8961 a = f;
8962 }
8963 } else {
8964 c = d;
8965 a = f;
8966 }
8967 }
8968
8969 b[a >> 2] = 0;
8970 } else {
8971 v = b[i + 8 >> 2] | 0;
8972 b[v + 12 >> 2] = c;
8973 b[c + 8 >> 2] = v;
8974 } } while (0);
8975
8976 do { if (g) {
8977 a = b[i + 28 >> 2] | 0;
8978 d = 23268 + (a << 2) | 0;
8979
8980 if ((i | 0) == (b[d >> 2] | 0)) {
8981 b[d >> 2] = c;
8982
8983 if (!c) {
8984 e = e & ~(1 << a);
8985 b[5742] = e;
8986 break;
8987 }
8988 } else {
8989 v = g + 16 | 0;
8990 b[((b[v >> 2] | 0) == (i | 0) ? v : g + 20 | 0) >> 2] = c;
8991 if (!c) { break; }
8992 }
8993
8994 b[c + 24 >> 2] = g;
8995 a = b[i + 16 >> 2] | 0;
8996
8997 if (a | 0) {
8998 b[c + 16 >> 2] = a;
8999 b[a + 24 >> 2] = c;
9000 }
9001
9002 a = b[i + 20 >> 2] | 0;
9003
9004 if (a) {
9005 b[c + 20 >> 2] = a;
9006 b[a + 24 >> 2] = c;
9007 }
9008 } } while (0);
9009
9010 b: do { if (h >>> 0 < 16) {
9011 v = h + k | 0;
9012 b[i + 4 >> 2] = v | 3;
9013 v = i + v + 4 | 0;
9014 b[v >> 2] = b[v >> 2] | 1;
9015 } else {
9016 b[i + 4 >> 2] = k | 3;
9017 b[l + 4 >> 2] = h | 1;
9018 b[l + h >> 2] = h;
9019 c = h >>> 3;
9020
9021 if (h >>> 0 < 256) {
9022 d = 23004 + (c << 1 << 2) | 0;
9023 a = b[5741] | 0;
9024 c = 1 << c;
9025
9026 if (!(a & c)) {
9027 b[5741] = a | c;
9028 c = d;
9029 a = d + 8 | 0;
9030 } else {
9031 a = d + 8 | 0;
9032 c = b[a >> 2] | 0;
9033 }
9034
9035 b[a >> 2] = l;
9036 b[c + 12 >> 2] = l;
9037 b[l + 8 >> 2] = c;
9038 b[l + 12 >> 2] = d;
9039 break;
9040 }
9041
9042 c = h >>> 8;
9043 if (c) {
9044 if (h >>> 0 > 16777215) { d = 31; }else {
9045 u = (c + 1048320 | 0) >>> 16 & 8;
9046 v = c << u;
9047 t = (v + 520192 | 0) >>> 16 & 4;
9048 v = v << t;
9049 d = (v + 245760 | 0) >>> 16 & 2;
9050 d = 14 - (t | u | d) + (v << d >>> 15) | 0;
9051 d = h >>> (d + 7 | 0) & 1 | d << 1;
9052 }
9053 } else { d = 0; }
9054 c = 23268 + (d << 2) | 0;
9055 b[l + 28 >> 2] = d;
9056 a = l + 16 | 0;
9057 b[a + 4 >> 2] = 0;
9058 b[a >> 2] = 0;
9059 a = 1 << d;
9060
9061 if (!(e & a)) {
9062 b[5742] = e | a;
9063 b[c >> 2] = l;
9064 b[l + 24 >> 2] = c;
9065 b[l + 12 >> 2] = l;
9066 b[l + 8 >> 2] = l;
9067 break;
9068 }
9069
9070 c = b[c >> 2] | 0;
9071
9072 c: do { if ((b[c + 4 >> 2] & -8 | 0) != (h | 0)) {
9073 e = h << ((d | 0) == 31 ? 0 : 25 - (d >>> 1) | 0);
9074
9075 while (1) {
9076 d = c + 16 + (e >>> 31 << 2) | 0;
9077 a = b[d >> 2] | 0;
9078 if (!a) { break; }
9079
9080 if ((b[a + 4 >> 2] & -8 | 0) == (h | 0)) {
9081 c = a;
9082 break c;
9083 } else {
9084 e = e << 1;
9085 c = a;
9086 }
9087 }
9088
9089 b[d >> 2] = l;
9090 b[l + 24 >> 2] = c;
9091 b[l + 12 >> 2] = l;
9092 b[l + 8 >> 2] = l;
9093 break b;
9094 } } while (0);
9095
9096 u = c + 8 | 0;
9097 v = b[u >> 2] | 0;
9098 b[v + 12 >> 2] = l;
9099 b[u >> 2] = l;
9100 b[l + 8 >> 2] = v;
9101 b[l + 12 >> 2] = c;
9102 b[l + 24 >> 2] = 0;
9103 } } while (0);
9104
9105 v = i + 8 | 0;
9106 R = w;
9107 return v | 0;
9108 } else { m = k; }
9109 } else { m = k; }
9110 } else { m = -1; } } while (0);
9111
9112 d = b[5743] | 0;
9113
9114 if (d >>> 0 >= m >>> 0) {
9115 c = d - m | 0;
9116 a = b[5746] | 0;
9117
9118 if (c >>> 0 > 15) {
9119 v = a + m | 0;
9120 b[5746] = v;
9121 b[5743] = c;
9122 b[v + 4 >> 2] = c | 1;
9123 b[a + d >> 2] = c;
9124 b[a + 4 >> 2] = m | 3;
9125 } else {
9126 b[5743] = 0;
9127 b[5746] = 0;
9128 b[a + 4 >> 2] = d | 3;
9129 v = a + d + 4 | 0;
9130 b[v >> 2] = b[v >> 2] | 1;
9131 }
9132
9133 v = a + 8 | 0;
9134 R = w;
9135 return v | 0;
9136 }
9137
9138 h = b[5744] | 0;
9139
9140 if (h >>> 0 > m >>> 0) {
9141 t = h - m | 0;
9142 b[5744] = t;
9143 v = b[5747] | 0;
9144 u = v + m | 0;
9145 b[5747] = u;
9146 b[u + 4 >> 2] = t | 1;
9147 b[v + 4 >> 2] = m | 3;
9148 v = v + 8 | 0;
9149 R = w;
9150 return v | 0;
9151 }
9152
9153 if (!(b[5859] | 0)) {
9154 b[5861] = 4096;
9155 b[5860] = 4096;
9156 b[5862] = -1;
9157 b[5863] = -1;
9158 b[5864] = 0;
9159 b[5852] = 0;
9160 b[5859] = n & -16 ^ 1431655768;
9161 a = 4096;
9162 } else { a = b[5861] | 0; }
9163
9164 i = m + 48 | 0;
9165 j = m + 47 | 0;
9166 g = a + j | 0;
9167 f = 0 - a | 0;
9168 k = g & f;
9169
9170 if (k >>> 0 <= m >>> 0) {
9171 v = 0;
9172 R = w;
9173 return v | 0;
9174 }
9175
9176 a = b[5851] | 0;
9177
9178 if (a | 0 ? (l = b[5849] | 0, n = l + k | 0, n >>> 0 <= l >>> 0 | n >>> 0 > a >>> 0) : 0) {
9179 v = 0;
9180 R = w;
9181 return v | 0;
9182 }
9183
9184 d: do { if (!(b[5852] & 4)) {
9185 d = b[5747] | 0;
9186
9187 e: do { if (d) {
9188 e = 23412;
9189
9190 while (1) {
9191 n = b[e >> 2] | 0;
9192 if (n >>> 0 <= d >>> 0 ? (n + (b[e + 4 >> 2] | 0) | 0) >>> 0 > d >>> 0 : 0) { break; }
9193 a = b[e + 8 >> 2] | 0;
9194
9195 if (!a) {
9196 q = 128;
9197 break e;
9198 } else { e = a; }
9199 }
9200
9201 c = g - h & f;
9202
9203 if (c >>> 0 < 2147483647) {
9204 a = Wc(c | 0) | 0;
9205
9206 if ((a | 0) == ((b[e >> 2] | 0) + (b[e + 4 >> 2] | 0) | 0)) {
9207 if ((a | 0) != (-1 | 0)) {
9208 h = c;
9209 g = a;
9210 q = 145;
9211 break d;
9212 }
9213 } else {
9214 e = a;
9215 q = 136;
9216 }
9217 } else { c = 0; }
9218 } else { q = 128; } } while (0);
9219
9220 do { if ((q | 0) == 128) {
9221 d = Wc(0) | 0;
9222
9223 if ((d | 0) != (-1 | 0) ? (c = d, o = b[5860] | 0, p = o + -1 | 0, c = ((p & c | 0) == 0 ? 0 : (p + c & 0 - o) - c | 0) + k | 0, o = b[5849] | 0, p = c + o | 0, c >>> 0 > m >>> 0 & c >>> 0 < 2147483647) : 0) {
9224 n = b[5851] | 0;
9225
9226 if (n | 0 ? p >>> 0 <= o >>> 0 | p >>> 0 > n >>> 0 : 0) {
9227 c = 0;
9228 break;
9229 }
9230
9231 a = Wc(c | 0) | 0;
9232
9233 if ((a | 0) == (d | 0)) {
9234 h = c;
9235 g = d;
9236 q = 145;
9237 break d;
9238 } else {
9239 e = a;
9240 q = 136;
9241 }
9242 } else { c = 0; }
9243 } } while (0);
9244
9245 do { if ((q | 0) == 136) {
9246 d = 0 - c | 0;
9247 if (!(i >>> 0 > c >>> 0 & (c >>> 0 < 2147483647 & (e | 0) != (-1 | 0)))) { if ((e | 0) == (-1 | 0)) {
9248 c = 0;
9249 break;
9250 } else {
9251 h = c;
9252 g = e;
9253 q = 145;
9254 break d;
9255 } }
9256 a = b[5861] | 0;
9257 a = j - c + a & 0 - a;
9258
9259 if (a >>> 0 >= 2147483647) {
9260 h = c;
9261 g = e;
9262 q = 145;
9263 break d;
9264 }
9265
9266 if ((Wc(a | 0) | 0) == (-1 | 0)) {
9267 Wc(d | 0) | 0;
9268 c = 0;
9269 break;
9270 } else {
9271 h = a + c | 0;
9272 g = e;
9273 q = 145;
9274 break d;
9275 }
9276 } } while (0);
9277
9278 b[5852] = b[5852] | 4;
9279 q = 143;
9280 } else {
9281 c = 0;
9282 q = 143;
9283 } } while (0);
9284
9285 if (((q | 0) == 143 ? k >>> 0 < 2147483647 : 0) ? (t = Wc(k | 0) | 0, p = Wc(0) | 0, r = p - t | 0, s = r >>> 0 > (m + 40 | 0) >>> 0, !((t | 0) == (-1 | 0) | s ^ 1 | t >>> 0 < p >>> 0 & ((t | 0) != (-1 | 0) & (p | 0) != (-1 | 0)) ^ 1)) : 0) {
9286 h = s ? r : c;
9287 g = t;
9288 q = 145;
9289 }
9290
9291 if ((q | 0) == 145) {
9292 c = (b[5849] | 0) + h | 0;
9293 b[5849] = c;
9294 if (c >>> 0 > (b[5850] | 0) >>> 0) { b[5850] = c; }
9295 j = b[5747] | 0;
9296
9297 f: do { if (j) {
9298 c = 23412;
9299
9300 while (1) {
9301 a = b[c >> 2] | 0;
9302 d = b[c + 4 >> 2] | 0;
9303
9304 if ((g | 0) == (a + d | 0)) {
9305 q = 154;
9306 break;
9307 }
9308
9309 e = b[c + 8 >> 2] | 0;
9310 if (!e) { break; }else { c = e; }
9311 }
9312
9313 if (((q | 0) == 154 ? (u = c + 4 | 0, (b[c + 12 >> 2] & 8 | 0) == 0) : 0) ? g >>> 0 > j >>> 0 & a >>> 0 <= j >>> 0 : 0) {
9314 b[u >> 2] = d + h;
9315 v = (b[5744] | 0) + h | 0;
9316 t = j + 8 | 0;
9317 t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;
9318 u = j + t | 0;
9319 t = v - t | 0;
9320 b[5747] = u;
9321 b[5744] = t;
9322 b[u + 4 >> 2] = t | 1;
9323 b[j + v + 4 >> 2] = 40;
9324 b[5748] = b[5863];
9325 break;
9326 }
9327
9328 if (g >>> 0 < (b[5745] | 0) >>> 0) { b[5745] = g; }
9329 d = g + h | 0;
9330 c = 23412;
9331
9332 while (1) {
9333 if ((b[c >> 2] | 0) == (d | 0)) {
9334 q = 162;
9335 break;
9336 }
9337
9338 a = b[c + 8 >> 2] | 0;
9339 if (!a) { break; }else { c = a; }
9340 }
9341
9342 if ((q | 0) == 162 ? (b[c + 12 >> 2] & 8 | 0) == 0 : 0) {
9343 b[c >> 2] = g;
9344 l = c + 4 | 0;
9345 b[l >> 2] = (b[l >> 2] | 0) + h;
9346 l = g + 8 | 0;
9347 l = g + ((l & 7 | 0) == 0 ? 0 : 0 - l & 7) | 0;
9348 c = d + 8 | 0;
9349 c = d + ((c & 7 | 0) == 0 ? 0 : 0 - c & 7) | 0;
9350 k = l + m | 0;
9351 i = c - l - m | 0;
9352 b[l + 4 >> 2] = m | 3;
9353
9354 g: do { if ((j | 0) == (c | 0)) {
9355 v = (b[5744] | 0) + i | 0;
9356 b[5744] = v;
9357 b[5747] = k;
9358 b[k + 4 >> 2] = v | 1;
9359 } else {
9360 if ((b[5746] | 0) == (c | 0)) {
9361 v = (b[5743] | 0) + i | 0;
9362 b[5743] = v;
9363 b[5746] = k;
9364 b[k + 4 >> 2] = v | 1;
9365 b[k + v >> 2] = v;
9366 break;
9367 }
9368
9369 a = b[c + 4 >> 2] | 0;
9370
9371 if ((a & 3 | 0) == 1) {
9372 h = a & -8;
9373 e = a >>> 3;
9374
9375 h: do { if (a >>> 0 < 256) {
9376 a = b[c + 8 >> 2] | 0;
9377 d = b[c + 12 >> 2] | 0;
9378
9379 if ((d | 0) == (a | 0)) {
9380 b[5741] = b[5741] & ~(1 << e);
9381 break;
9382 } else {
9383 b[a + 12 >> 2] = d;
9384 b[d + 8 >> 2] = a;
9385 break;
9386 }
9387 } else {
9388 g = b[c + 24 >> 2] | 0;
9389 a = b[c + 12 >> 2] | 0;
9390
9391 do { if ((a | 0) == (c | 0)) {
9392 d = c + 16 | 0;
9393 e = d + 4 | 0;
9394 a = b[e >> 2] | 0;
9395
9396 if (!a) {
9397 a = b[d >> 2] | 0;
9398
9399 if (!a) {
9400 a = 0;
9401 break;
9402 }
9403 } else { d = e; }
9404
9405 while (1) {
9406 f = a + 20 | 0;
9407 e = b[f >> 2] | 0;
9408
9409 if (!e) {
9410 f = a + 16 | 0;
9411 e = b[f >> 2] | 0;
9412 if (!e) { break; }else {
9413 a = e;
9414 d = f;
9415 }
9416 } else {
9417 a = e;
9418 d = f;
9419 }
9420 }
9421
9422 b[d >> 2] = 0;
9423 } else {
9424 v = b[c + 8 >> 2] | 0;
9425 b[v + 12 >> 2] = a;
9426 b[a + 8 >> 2] = v;
9427 } } while (0);
9428
9429 if (!g) { break; }
9430 d = b[c + 28 >> 2] | 0;
9431 e = 23268 + (d << 2) | 0;
9432
9433 do { if ((b[e >> 2] | 0) != (c | 0)) {
9434 v = g + 16 | 0;
9435 b[((b[v >> 2] | 0) == (c | 0) ? v : g + 20 | 0) >> 2] = a;
9436 if (!a) { break h; }
9437 } else {
9438 b[e >> 2] = a;
9439 if (a | 0) { break; }
9440 b[5742] = b[5742] & ~(1 << d);
9441 break h;
9442 } } while (0);
9443
9444 b[a + 24 >> 2] = g;
9445 d = c + 16 | 0;
9446 e = b[d >> 2] | 0;
9447
9448 if (e | 0) {
9449 b[a + 16 >> 2] = e;
9450 b[e + 24 >> 2] = a;
9451 }
9452
9453 d = b[d + 4 >> 2] | 0;
9454 if (!d) { break; }
9455 b[a + 20 >> 2] = d;
9456 b[d + 24 >> 2] = a;
9457 } } while (0);
9458
9459 c = c + h | 0;
9460 f = h + i | 0;
9461 } else { f = i; }
9462
9463 c = c + 4 | 0;
9464 b[c >> 2] = b[c >> 2] & -2;
9465 b[k + 4 >> 2] = f | 1;
9466 b[k + f >> 2] = f;
9467 c = f >>> 3;
9468
9469 if (f >>> 0 < 256) {
9470 d = 23004 + (c << 1 << 2) | 0;
9471 a = b[5741] | 0;
9472 c = 1 << c;
9473
9474 if (!(a & c)) {
9475 b[5741] = a | c;
9476 c = d;
9477 a = d + 8 | 0;
9478 } else {
9479 a = d + 8 | 0;
9480 c = b[a >> 2] | 0;
9481 }
9482
9483 b[a >> 2] = k;
9484 b[c + 12 >> 2] = k;
9485 b[k + 8 >> 2] = c;
9486 b[k + 12 >> 2] = d;
9487 break;
9488 }
9489
9490 c = f >>> 8;
9491
9492 do { if (!c) { e = 0; }else {
9493 if (f >>> 0 > 16777215) {
9494 e = 31;
9495 break;
9496 }
9497
9498 u = (c + 1048320 | 0) >>> 16 & 8;
9499 v = c << u;
9500 t = (v + 520192 | 0) >>> 16 & 4;
9501 v = v << t;
9502 e = (v + 245760 | 0) >>> 16 & 2;
9503 e = 14 - (t | u | e) + (v << e >>> 15) | 0;
9504 e = f >>> (e + 7 | 0) & 1 | e << 1;
9505 } } while (0);
9506
9507 c = 23268 + (e << 2) | 0;
9508 b[k + 28 >> 2] = e;
9509 a = k + 16 | 0;
9510 b[a + 4 >> 2] = 0;
9511 b[a >> 2] = 0;
9512 a = b[5742] | 0;
9513 d = 1 << e;
9514
9515 if (!(a & d)) {
9516 b[5742] = a | d;
9517 b[c >> 2] = k;
9518 b[k + 24 >> 2] = c;
9519 b[k + 12 >> 2] = k;
9520 b[k + 8 >> 2] = k;
9521 break;
9522 }
9523
9524 c = b[c >> 2] | 0;
9525
9526 i: do { if ((b[c + 4 >> 2] & -8 | 0) != (f | 0)) {
9527 e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);
9528
9529 while (1) {
9530 d = c + 16 + (e >>> 31 << 2) | 0;
9531 a = b[d >> 2] | 0;
9532 if (!a) { break; }
9533
9534 if ((b[a + 4 >> 2] & -8 | 0) == (f | 0)) {
9535 c = a;
9536 break i;
9537 } else {
9538 e = e << 1;
9539 c = a;
9540 }
9541 }
9542
9543 b[d >> 2] = k;
9544 b[k + 24 >> 2] = c;
9545 b[k + 12 >> 2] = k;
9546 b[k + 8 >> 2] = k;
9547 break g;
9548 } } while (0);
9549
9550 u = c + 8 | 0;
9551 v = b[u >> 2] | 0;
9552 b[v + 12 >> 2] = k;
9553 b[u >> 2] = k;
9554 b[k + 8 >> 2] = v;
9555 b[k + 12 >> 2] = c;
9556 b[k + 24 >> 2] = 0;
9557 } } while (0);
9558
9559 v = l + 8 | 0;
9560 R = w;
9561 return v | 0;
9562 }
9563
9564 c = 23412;
9565
9566 while (1) {
9567 a = b[c >> 2] | 0;
9568 if (a >>> 0 <= j >>> 0 ? (v = a + (b[c + 4 >> 2] | 0) | 0, v >>> 0 > j >>> 0) : 0) { break; }
9569 c = b[c + 8 >> 2] | 0;
9570 }
9571
9572 f = v + -47 | 0;
9573 a = f + 8 | 0;
9574 a = f + ((a & 7 | 0) == 0 ? 0 : 0 - a & 7) | 0;
9575 f = j + 16 | 0;
9576 a = a >>> 0 < f >>> 0 ? j : a;
9577 c = a + 8 | 0;
9578 d = h + -40 | 0;
9579 t = g + 8 | 0;
9580 t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;
9581 u = g + t | 0;
9582 t = d - t | 0;
9583 b[5747] = u;
9584 b[5744] = t;
9585 b[u + 4 >> 2] = t | 1;
9586 b[g + d + 4 >> 2] = 40;
9587 b[5748] = b[5863];
9588 d = a + 4 | 0;
9589 b[d >> 2] = 27;
9590 b[c >> 2] = b[5853];
9591 b[c + 4 >> 2] = b[5854];
9592 b[c + 8 >> 2] = b[5855];
9593 b[c + 12 >> 2] = b[5856];
9594 b[5853] = g;
9595 b[5854] = h;
9596 b[5856] = 0;
9597 b[5855] = c;
9598 c = a + 24 | 0;
9599
9600 do {
9601 u = c;
9602 c = c + 4 | 0;
9603 b[c >> 2] = 7;
9604 } while ((u + 8 | 0) >>> 0 < v >>> 0);
9605
9606 if ((a | 0) != (j | 0)) {
9607 g = a - j | 0;
9608 b[d >> 2] = b[d >> 2] & -2;
9609 b[j + 4 >> 2] = g | 1;
9610 b[a >> 2] = g;
9611 c = g >>> 3;
9612
9613 if (g >>> 0 < 256) {
9614 d = 23004 + (c << 1 << 2) | 0;
9615 a = b[5741] | 0;
9616 c = 1 << c;
9617
9618 if (!(a & c)) {
9619 b[5741] = a | c;
9620 c = d;
9621 a = d + 8 | 0;
9622 } else {
9623 a = d + 8 | 0;
9624 c = b[a >> 2] | 0;
9625 }
9626
9627 b[a >> 2] = j;
9628 b[c + 12 >> 2] = j;
9629 b[j + 8 >> 2] = c;
9630 b[j + 12 >> 2] = d;
9631 break;
9632 }
9633
9634 c = g >>> 8;
9635 if (c) {
9636 if (g >>> 0 > 16777215) { e = 31; }else {
9637 u = (c + 1048320 | 0) >>> 16 & 8;
9638 v = c << u;
9639 t = (v + 520192 | 0) >>> 16 & 4;
9640 v = v << t;
9641 e = (v + 245760 | 0) >>> 16 & 2;
9642 e = 14 - (t | u | e) + (v << e >>> 15) | 0;
9643 e = g >>> (e + 7 | 0) & 1 | e << 1;
9644 }
9645 } else { e = 0; }
9646 d = 23268 + (e << 2) | 0;
9647 b[j + 28 >> 2] = e;
9648 b[j + 20 >> 2] = 0;
9649 b[f >> 2] = 0;
9650 c = b[5742] | 0;
9651 a = 1 << e;
9652
9653 if (!(c & a)) {
9654 b[5742] = c | a;
9655 b[d >> 2] = j;
9656 b[j + 24 >> 2] = d;
9657 b[j + 12 >> 2] = j;
9658 b[j + 8 >> 2] = j;
9659 break;
9660 }
9661
9662 c = b[d >> 2] | 0;
9663
9664 j: do { if ((b[c + 4 >> 2] & -8 | 0) != (g | 0)) {
9665 e = g << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);
9666
9667 while (1) {
9668 d = c + 16 + (e >>> 31 << 2) | 0;
9669 a = b[d >> 2] | 0;
9670 if (!a) { break; }
9671
9672 if ((b[a + 4 >> 2] & -8 | 0) == (g | 0)) {
9673 c = a;
9674 break j;
9675 } else {
9676 e = e << 1;
9677 c = a;
9678 }
9679 }
9680
9681 b[d >> 2] = j;
9682 b[j + 24 >> 2] = c;
9683 b[j + 12 >> 2] = j;
9684 b[j + 8 >> 2] = j;
9685 break f;
9686 } } while (0);
9687
9688 u = c + 8 | 0;
9689 v = b[u >> 2] | 0;
9690 b[v + 12 >> 2] = j;
9691 b[u >> 2] = j;
9692 b[j + 8 >> 2] = v;
9693 b[j + 12 >> 2] = c;
9694 b[j + 24 >> 2] = 0;
9695 }
9696 } else {
9697 v = b[5745] | 0;
9698 if ((v | 0) == 0 | g >>> 0 < v >>> 0) { b[5745] = g; }
9699 b[5853] = g;
9700 b[5854] = h;
9701 b[5856] = 0;
9702 b[5750] = b[5859];
9703 b[5749] = -1;
9704 b[5754] = 23004;
9705 b[5753] = 23004;
9706 b[5756] = 23012;
9707 b[5755] = 23012;
9708 b[5758] = 23020;
9709 b[5757] = 23020;
9710 b[5760] = 23028;
9711 b[5759] = 23028;
9712 b[5762] = 23036;
9713 b[5761] = 23036;
9714 b[5764] = 23044;
9715 b[5763] = 23044;
9716 b[5766] = 23052;
9717 b[5765] = 23052;
9718 b[5768] = 23060;
9719 b[5767] = 23060;
9720 b[5770] = 23068;
9721 b[5769] = 23068;
9722 b[5772] = 23076;
9723 b[5771] = 23076;
9724 b[5774] = 23084;
9725 b[5773] = 23084;
9726 b[5776] = 23092;
9727 b[5775] = 23092;
9728 b[5778] = 23100;
9729 b[5777] = 23100;
9730 b[5780] = 23108;
9731 b[5779] = 23108;
9732 b[5782] = 23116;
9733 b[5781] = 23116;
9734 b[5784] = 23124;
9735 b[5783] = 23124;
9736 b[5786] = 23132;
9737 b[5785] = 23132;
9738 b[5788] = 23140;
9739 b[5787] = 23140;
9740 b[5790] = 23148;
9741 b[5789] = 23148;
9742 b[5792] = 23156;
9743 b[5791] = 23156;
9744 b[5794] = 23164;
9745 b[5793] = 23164;
9746 b[5796] = 23172;
9747 b[5795] = 23172;
9748 b[5798] = 23180;
9749 b[5797] = 23180;
9750 b[5800] = 23188;
9751 b[5799] = 23188;
9752 b[5802] = 23196;
9753 b[5801] = 23196;
9754 b[5804] = 23204;
9755 b[5803] = 23204;
9756 b[5806] = 23212;
9757 b[5805] = 23212;
9758 b[5808] = 23220;
9759 b[5807] = 23220;
9760 b[5810] = 23228;
9761 b[5809] = 23228;
9762 b[5812] = 23236;
9763 b[5811] = 23236;
9764 b[5814] = 23244;
9765 b[5813] = 23244;
9766 b[5816] = 23252;
9767 b[5815] = 23252;
9768 v = h + -40 | 0;
9769 t = g + 8 | 0;
9770 t = (t & 7 | 0) == 0 ? 0 : 0 - t & 7;
9771 u = g + t | 0;
9772 t = v - t | 0;
9773 b[5747] = u;
9774 b[5744] = t;
9775 b[u + 4 >> 2] = t | 1;
9776 b[g + v + 4 >> 2] = 40;
9777 b[5748] = b[5863];
9778 } } while (0);
9779
9780 c = b[5744] | 0;
9781
9782 if (c >>> 0 > m >>> 0) {
9783 t = c - m | 0;
9784 b[5744] = t;
9785 v = b[5747] | 0;
9786 u = v + m | 0;
9787 b[5747] = u;
9788 b[u + 4 >> 2] = t | 1;
9789 b[v + 4 >> 2] = m | 3;
9790 v = v + 8 | 0;
9791 R = w;
9792 return v | 0;
9793 }
9794 }
9795
9796 v = Fc() | 0;
9797 b[v >> 2] = 12;
9798 v = 0;
9799 R = w;
9800 return v | 0;
9801 }
9802
9803 function Jc(a) {
9804 a = a | 0;
9805 var c = 0,
9806 d = 0,
9807 e = 0,
9808 f = 0,
9809 g = 0,
9810 h = 0,
9811 i = 0,
9812 j = 0;
9813 if (!a) { return; }
9814 d = a + -8 | 0;
9815 f = b[5745] | 0;
9816 a = b[a + -4 >> 2] | 0;
9817 c = a & -8;
9818 j = d + c | 0;
9819
9820 do { if (!(a & 1)) {
9821 e = b[d >> 2] | 0;
9822 if (!(a & 3)) { return; }
9823 h = d + (0 - e) | 0;
9824 g = e + c | 0;
9825 if (h >>> 0 < f >>> 0) { return; }
9826
9827 if ((b[5746] | 0) == (h | 0)) {
9828 a = j + 4 | 0;
9829 c = b[a >> 2] | 0;
9830
9831 if ((c & 3 | 0) != 3) {
9832 i = h;
9833 c = g;
9834 break;
9835 }
9836
9837 b[5743] = g;
9838 b[a >> 2] = c & -2;
9839 b[h + 4 >> 2] = g | 1;
9840 b[h + g >> 2] = g;
9841 return;
9842 }
9843
9844 d = e >>> 3;
9845
9846 if (e >>> 0 < 256) {
9847 a = b[h + 8 >> 2] | 0;
9848 c = b[h + 12 >> 2] | 0;
9849
9850 if ((c | 0) == (a | 0)) {
9851 b[5741] = b[5741] & ~(1 << d);
9852 i = h;
9853 c = g;
9854 break;
9855 } else {
9856 b[a + 12 >> 2] = c;
9857 b[c + 8 >> 2] = a;
9858 i = h;
9859 c = g;
9860 break;
9861 }
9862 }
9863
9864 f = b[h + 24 >> 2] | 0;
9865 a = b[h + 12 >> 2] | 0;
9866
9867 do { if ((a | 0) == (h | 0)) {
9868 c = h + 16 | 0;
9869 d = c + 4 | 0;
9870 a = b[d >> 2] | 0;
9871
9872 if (!a) {
9873 a = b[c >> 2] | 0;
9874
9875 if (!a) {
9876 a = 0;
9877 break;
9878 }
9879 } else { c = d; }
9880
9881 while (1) {
9882 e = a + 20 | 0;
9883 d = b[e >> 2] | 0;
9884
9885 if (!d) {
9886 e = a + 16 | 0;
9887 d = b[e >> 2] | 0;
9888 if (!d) { break; }else {
9889 a = d;
9890 c = e;
9891 }
9892 } else {
9893 a = d;
9894 c = e;
9895 }
9896 }
9897
9898 b[c >> 2] = 0;
9899 } else {
9900 i = b[h + 8 >> 2] | 0;
9901 b[i + 12 >> 2] = a;
9902 b[a + 8 >> 2] = i;
9903 } } while (0);
9904
9905 if (f) {
9906 c = b[h + 28 >> 2] | 0;
9907 d = 23268 + (c << 2) | 0;
9908
9909 if ((b[d >> 2] | 0) == (h | 0)) {
9910 b[d >> 2] = a;
9911
9912 if (!a) {
9913 b[5742] = b[5742] & ~(1 << c);
9914 i = h;
9915 c = g;
9916 break;
9917 }
9918 } else {
9919 i = f + 16 | 0;
9920 b[((b[i >> 2] | 0) == (h | 0) ? i : f + 20 | 0) >> 2] = a;
9921
9922 if (!a) {
9923 i = h;
9924 c = g;
9925 break;
9926 }
9927 }
9928
9929 b[a + 24 >> 2] = f;
9930 c = h + 16 | 0;
9931 d = b[c >> 2] | 0;
9932
9933 if (d | 0) {
9934 b[a + 16 >> 2] = d;
9935 b[d + 24 >> 2] = a;
9936 }
9937
9938 c = b[c + 4 >> 2] | 0;
9939
9940 if (c) {
9941 b[a + 20 >> 2] = c;
9942 b[c + 24 >> 2] = a;
9943 i = h;
9944 c = g;
9945 } else {
9946 i = h;
9947 c = g;
9948 }
9949 } else {
9950 i = h;
9951 c = g;
9952 }
9953 } else {
9954 i = d;
9955 h = d;
9956 } } while (0);
9957
9958 if (h >>> 0 >= j >>> 0) { return; }
9959 a = j + 4 | 0;
9960 e = b[a >> 2] | 0;
9961 if (!(e & 1)) { return; }
9962
9963 if (!(e & 2)) {
9964 if ((b[5747] | 0) == (j | 0)) {
9965 j = (b[5744] | 0) + c | 0;
9966 b[5744] = j;
9967 b[5747] = i;
9968 b[i + 4 >> 2] = j | 1;
9969 if ((i | 0) != (b[5746] | 0)) { return; }
9970 b[5746] = 0;
9971 b[5743] = 0;
9972 return;
9973 }
9974
9975 if ((b[5746] | 0) == (j | 0)) {
9976 j = (b[5743] | 0) + c | 0;
9977 b[5743] = j;
9978 b[5746] = h;
9979 b[i + 4 >> 2] = j | 1;
9980 b[h + j >> 2] = j;
9981 return;
9982 }
9983
9984 f = (e & -8) + c | 0;
9985 d = e >>> 3;
9986
9987 do { if (e >>> 0 < 256) {
9988 c = b[j + 8 >> 2] | 0;
9989 a = b[j + 12 >> 2] | 0;
9990
9991 if ((a | 0) == (c | 0)) {
9992 b[5741] = b[5741] & ~(1 << d);
9993 break;
9994 } else {
9995 b[c + 12 >> 2] = a;
9996 b[a + 8 >> 2] = c;
9997 break;
9998 }
9999 } else {
10000 g = b[j + 24 >> 2] | 0;
10001 a = b[j + 12 >> 2] | 0;
10002
10003 do { if ((a | 0) == (j | 0)) {
10004 c = j + 16 | 0;
10005 d = c + 4 | 0;
10006 a = b[d >> 2] | 0;
10007
10008 if (!a) {
10009 a = b[c >> 2] | 0;
10010
10011 if (!a) {
10012 d = 0;
10013 break;
10014 }
10015 } else { c = d; }
10016
10017 while (1) {
10018 e = a + 20 | 0;
10019 d = b[e >> 2] | 0;
10020
10021 if (!d) {
10022 e = a + 16 | 0;
10023 d = b[e >> 2] | 0;
10024 if (!d) { break; }else {
10025 a = d;
10026 c = e;
10027 }
10028 } else {
10029 a = d;
10030 c = e;
10031 }
10032 }
10033
10034 b[c >> 2] = 0;
10035 d = a;
10036 } else {
10037 d = b[j + 8 >> 2] | 0;
10038 b[d + 12 >> 2] = a;
10039 b[a + 8 >> 2] = d;
10040 d = a;
10041 } } while (0);
10042
10043 if (g | 0) {
10044 a = b[j + 28 >> 2] | 0;
10045 c = 23268 + (a << 2) | 0;
10046
10047 if ((b[c >> 2] | 0) == (j | 0)) {
10048 b[c >> 2] = d;
10049
10050 if (!d) {
10051 b[5742] = b[5742] & ~(1 << a);
10052 break;
10053 }
10054 } else {
10055 e = g + 16 | 0;
10056 b[((b[e >> 2] | 0) == (j | 0) ? e : g + 20 | 0) >> 2] = d;
10057 if (!d) { break; }
10058 }
10059
10060 b[d + 24 >> 2] = g;
10061 a = j + 16 | 0;
10062 c = b[a >> 2] | 0;
10063
10064 if (c | 0) {
10065 b[d + 16 >> 2] = c;
10066 b[c + 24 >> 2] = d;
10067 }
10068
10069 a = b[a + 4 >> 2] | 0;
10070
10071 if (a | 0) {
10072 b[d + 20 >> 2] = a;
10073 b[a + 24 >> 2] = d;
10074 }
10075 }
10076 } } while (0);
10077
10078 b[i + 4 >> 2] = f | 1;
10079 b[h + f >> 2] = f;
10080
10081 if ((i | 0) == (b[5746] | 0)) {
10082 b[5743] = f;
10083 return;
10084 }
10085 } else {
10086 b[a >> 2] = e & -2;
10087 b[i + 4 >> 2] = c | 1;
10088 b[h + c >> 2] = c;
10089 f = c;
10090 }
10091
10092 a = f >>> 3;
10093
10094 if (f >>> 0 < 256) {
10095 d = 23004 + (a << 1 << 2) | 0;
10096 c = b[5741] | 0;
10097 a = 1 << a;
10098
10099 if (!(c & a)) {
10100 b[5741] = c | a;
10101 a = d;
10102 c = d + 8 | 0;
10103 } else {
10104 c = d + 8 | 0;
10105 a = b[c >> 2] | 0;
10106 }
10107
10108 b[c >> 2] = i;
10109 b[a + 12 >> 2] = i;
10110 b[i + 8 >> 2] = a;
10111 b[i + 12 >> 2] = d;
10112 return;
10113 }
10114
10115 a = f >>> 8;
10116 if (a) {
10117 if (f >>> 0 > 16777215) { e = 31; }else {
10118 h = (a + 1048320 | 0) >>> 16 & 8;
10119 j = a << h;
10120 g = (j + 520192 | 0) >>> 16 & 4;
10121 j = j << g;
10122 e = (j + 245760 | 0) >>> 16 & 2;
10123 e = 14 - (g | h | e) + (j << e >>> 15) | 0;
10124 e = f >>> (e + 7 | 0) & 1 | e << 1;
10125 }
10126 } else { e = 0; }
10127 a = 23268 + (e << 2) | 0;
10128 b[i + 28 >> 2] = e;
10129 b[i + 20 >> 2] = 0;
10130 b[i + 16 >> 2] = 0;
10131 c = b[5742] | 0;
10132 d = 1 << e;
10133
10134 a: do { if (!(c & d)) {
10135 b[5742] = c | d;
10136 b[a >> 2] = i;
10137 b[i + 24 >> 2] = a;
10138 b[i + 12 >> 2] = i;
10139 b[i + 8 >> 2] = i;
10140 } else {
10141 a = b[a >> 2] | 0;
10142
10143 b: do { if ((b[a + 4 >> 2] & -8 | 0) != (f | 0)) {
10144 e = f << ((e | 0) == 31 ? 0 : 25 - (e >>> 1) | 0);
10145
10146 while (1) {
10147 d = a + 16 + (e >>> 31 << 2) | 0;
10148 c = b[d >> 2] | 0;
10149 if (!c) { break; }
10150
10151 if ((b[c + 4 >> 2] & -8 | 0) == (f | 0)) {
10152 a = c;
10153 break b;
10154 } else {
10155 e = e << 1;
10156 a = c;
10157 }
10158 }
10159
10160 b[d >> 2] = i;
10161 b[i + 24 >> 2] = a;
10162 b[i + 12 >> 2] = i;
10163 b[i + 8 >> 2] = i;
10164 break a;
10165 } } while (0);
10166
10167 h = a + 8 | 0;
10168 j = b[h >> 2] | 0;
10169 b[j + 12 >> 2] = i;
10170 b[h >> 2] = i;
10171 b[i + 8 >> 2] = j;
10172 b[i + 12 >> 2] = a;
10173 b[i + 24 >> 2] = 0;
10174 } } while (0);
10175
10176 j = (b[5749] | 0) + -1 | 0;
10177 b[5749] = j;
10178 if (j | 0) { return; }
10179 a = 23420;
10180
10181 while (1) {
10182 a = b[a >> 2] | 0;
10183 if (!a) { break; }else { a = a + 8 | 0; }
10184 }
10185
10186 b[5749] = -1;
10187 return;
10188 }
10189
10190 function Kc(a, c) {
10191 a = a | 0;
10192 c = c | 0;
10193 var d = 0;
10194
10195 if (a) {
10196 d = B(c, a) | 0;
10197 if ((c | a) >>> 0 > 65535) { d = ((d >>> 0) / (a >>> 0) | 0 | 0) == (c | 0) ? d : -1; }
10198 } else { d = 0; }
10199
10200 a = Ic(d) | 0;
10201 if (!a) { return a | 0; }
10202 if (!(b[a + -4 >> 2] & 3)) { return a | 0; }
10203 Uc(a | 0, 0, d | 0) | 0;
10204 return a | 0;
10205 }
10206
10207 function Lc(a, b, c, d) {
10208 a = a | 0;
10209 b = b | 0;
10210 c = c | 0;
10211 d = d | 0;
10212 c = a + c >>> 0;
10213 return (E(b + d + (c >>> 0 < a >>> 0 | 0) >>> 0 | 0), c | 0) | 0;
10214 }
10215
10216 function Mc(a, b, c, d) {
10217 a = a | 0;
10218 b = b | 0;
10219 c = c | 0;
10220 d = d | 0;
10221 d = b - d - (c >>> 0 > a >>> 0 | 0) >>> 0;
10222 return (E(d | 0), a - c >>> 0 | 0) | 0;
10223 }
10224
10225 function Nc(a) {
10226 a = a | 0;
10227 return (a ? 31 - (C(a ^ a - 1) | 0) | 0 : 32) | 0;
10228 }
10229
10230 function Oc(a, c, d, e, f) {
10231 a = a | 0;
10232 c = c | 0;
10233 d = d | 0;
10234 e = e | 0;
10235 f = f | 0;
10236 var g = 0,
10237 h = 0,
10238 i = 0,
10239 j = 0,
10240 k = 0,
10241 l = 0,
10242 m = 0,
10243 n = 0,
10244 o = 0,
10245 p = 0;
10246 l = a;
10247 j = c;
10248 k = j;
10249 h = d;
10250 n = e;
10251 i = n;
10252
10253 if (!k) {
10254 g = (f | 0) != 0;
10255
10256 if (!i) {
10257 if (g) {
10258 b[f >> 2] = (l >>> 0) % (h >>> 0);
10259 b[f + 4 >> 2] = 0;
10260 }
10261
10262 n = 0;
10263 f = (l >>> 0) / (h >>> 0) >>> 0;
10264 return (E(n | 0), f) | 0;
10265 } else {
10266 if (!g) {
10267 n = 0;
10268 f = 0;
10269 return (E(n | 0), f) | 0;
10270 }
10271
10272 b[f >> 2] = a | 0;
10273 b[f + 4 >> 2] = c & 0;
10274 n = 0;
10275 f = 0;
10276 return (E(n | 0), f) | 0;
10277 }
10278 }
10279
10280 g = (i | 0) == 0;
10281
10282 do { if (h) {
10283 if (!g) {
10284 g = (C(i | 0) | 0) - (C(k | 0) | 0) | 0;
10285
10286 if (g >>> 0 <= 31) {
10287 m = g + 1 | 0;
10288 i = 31 - g | 0;
10289 c = g - 31 >> 31;
10290 h = m;
10291 a = l >>> (m >>> 0) & c | k << i;
10292 c = k >>> (m >>> 0) & c;
10293 g = 0;
10294 i = l << i;
10295 break;
10296 }
10297
10298 if (!f) {
10299 n = 0;
10300 f = 0;
10301 return (E(n | 0), f) | 0;
10302 }
10303
10304 b[f >> 2] = a | 0;
10305 b[f + 4 >> 2] = j | c & 0;
10306 n = 0;
10307 f = 0;
10308 return (E(n | 0), f) | 0;
10309 }
10310
10311 g = h - 1 | 0;
10312
10313 if (g & h | 0) {
10314 i = (C(h | 0) | 0) + 33 - (C(k | 0) | 0) | 0;
10315 p = 64 - i | 0;
10316 m = 32 - i | 0;
10317 j = m >> 31;
10318 o = i - 32 | 0;
10319 c = o >> 31;
10320 h = i;
10321 a = m - 1 >> 31 & k >>> (o >>> 0) | (k << m | l >>> (i >>> 0)) & c;
10322 c = c & k >>> (i >>> 0);
10323 g = l << p & j;
10324 i = (k << p | l >>> (o >>> 0)) & j | l << m & i - 33 >> 31;
10325 break;
10326 }
10327
10328 if (f | 0) {
10329 b[f >> 2] = g & l;
10330 b[f + 4 >> 2] = 0;
10331 }
10332
10333 if ((h | 0) == 1) {
10334 o = j | c & 0;
10335 p = a | 0 | 0;
10336 return (E(o | 0), p) | 0;
10337 } else {
10338 p = Nc(h | 0) | 0;
10339 o = k >>> (p >>> 0) | 0;
10340 p = k << 32 - p | l >>> (p >>> 0) | 0;
10341 return (E(o | 0), p) | 0;
10342 }
10343 } else {
10344 if (g) {
10345 if (f | 0) {
10346 b[f >> 2] = (k >>> 0) % (h >>> 0);
10347 b[f + 4 >> 2] = 0;
10348 }
10349
10350 o = 0;
10351 p = (k >>> 0) / (h >>> 0) >>> 0;
10352 return (E(o | 0), p) | 0;
10353 }
10354
10355 if (!l) {
10356 if (f | 0) {
10357 b[f >> 2] = 0;
10358 b[f + 4 >> 2] = (k >>> 0) % (i >>> 0);
10359 }
10360
10361 o = 0;
10362 p = (k >>> 0) / (i >>> 0) >>> 0;
10363 return (E(o | 0), p) | 0;
10364 }
10365
10366 g = i - 1 | 0;
10367
10368 if (!(g & i)) {
10369 if (f | 0) {
10370 b[f >> 2] = a | 0;
10371 b[f + 4 >> 2] = g & k | c & 0;
10372 }
10373
10374 o = 0;
10375 p = k >>> ((Nc(i | 0) | 0) >>> 0);
10376 return (E(o | 0), p) | 0;
10377 }
10378
10379 g = (C(i | 0) | 0) - (C(k | 0) | 0) | 0;
10380
10381 if (g >>> 0 <= 30) {
10382 c = g + 1 | 0;
10383 i = 31 - g | 0;
10384 h = c;
10385 a = k << i | l >>> (c >>> 0);
10386 c = k >>> (c >>> 0);
10387 g = 0;
10388 i = l << i;
10389 break;
10390 }
10391
10392 if (!f) {
10393 o = 0;
10394 p = 0;
10395 return (E(o | 0), p) | 0;
10396 }
10397
10398 b[f >> 2] = a | 0;
10399 b[f + 4 >> 2] = j | c & 0;
10400 o = 0;
10401 p = 0;
10402 return (E(o | 0), p) | 0;
10403 } } while (0);
10404
10405 if (!h) {
10406 k = i;
10407 j = 0;
10408 i = 0;
10409 } else {
10410 m = d | 0 | 0;
10411 l = n | e & 0;
10412 k = Lc(m | 0, l | 0, -1, -1) | 0;
10413 d = F() | 0;
10414 j = i;
10415 i = 0;
10416
10417 do {
10418 e = j;
10419 j = g >>> 31 | j << 1;
10420 g = i | g << 1;
10421 e = a << 1 | e >>> 31 | 0;
10422 n = a >>> 31 | c << 1 | 0;
10423 Mc(k | 0, d | 0, e | 0, n | 0) | 0;
10424 p = F() | 0;
10425 o = p >> 31 | ((p | 0) < 0 ? -1 : 0) << 1;
10426 i = o & 1;
10427 a = Mc(e | 0, n | 0, o & m | 0, (((p | 0) < 0 ? -1 : 0) >> 31 | ((p | 0) < 0 ? -1 : 0) << 1) & l | 0) | 0;
10428 c = F() | 0;
10429 h = h - 1 | 0;
10430 } while ((h | 0) != 0);
10431
10432 k = j;
10433 j = 0;
10434 }
10435
10436 h = 0;
10437
10438 if (f | 0) {
10439 b[f >> 2] = a;
10440 b[f + 4 >> 2] = c;
10441 }
10442
10443 o = (g | 0) >>> 31 | (k | h) << 1 | (h << 1 | g >>> 31) & 0 | j;
10444 p = (g << 1 | 0 >>> 31) & -2 | i;
10445 return (E(o | 0), p) | 0;
10446 }
10447
10448 function Pc(a, c, d, e) {
10449 a = a | 0;
10450 c = c | 0;
10451 d = d | 0;
10452 e = e | 0;
10453 var f = 0,
10454 g = 0;
10455 g = R;
10456 R = R + 16 | 0;
10457 f = g | 0;
10458 Oc(a, c, d, e, f) | 0;
10459 R = g;
10460 return (E(b[f + 4 >> 2] | 0), b[f >> 2] | 0) | 0;
10461 }
10462
10463 function Qc(a, b, c) {
10464 a = a | 0;
10465 b = b | 0;
10466 c = c | 0;
10467
10468 if ((c | 0) < 32) {
10469 E(b >>> c | 0);
10470 return a >>> c | (b & (1 << c) - 1) << 32 - c;
10471 }
10472
10473 E(0);
10474 return b >>> c - 32 | 0;
10475 }
10476
10477 function Rc(a, b, c) {
10478 a = a | 0;
10479 b = b | 0;
10480 c = c | 0;
10481
10482 if ((c | 0) < 32) {
10483 E(b << c | (a & (1 << c) - 1 << 32 - c) >>> 32 - c | 0);
10484 return a << c;
10485 }
10486
10487 E(a << c - 32 | 0);
10488 return 0;
10489 }
10490
10491 function Sc(a) {
10492 a = +a;
10493 return a >= 0.0 ? +p(a + .5) : +A(a - .5);
10494 }
10495
10496 function Tc(c, d, e) {
10497 c = c | 0;
10498 d = d | 0;
10499 e = e | 0;
10500 var f = 0,
10501 g = 0,
10502 h = 0;
10503
10504 if ((e | 0) >= 8192) {
10505 J(c | 0, d | 0, e | 0) | 0;
10506 return c | 0;
10507 }
10508
10509 h = c | 0;
10510 g = c + e | 0;
10511
10512 if ((c & 3) == (d & 3)) {
10513 while (c & 3) {
10514 if (!e) { return h | 0; }
10515 a[c >> 0] = a[d >> 0] | 0;
10516 c = c + 1 | 0;
10517 d = d + 1 | 0;
10518 e = e - 1 | 0;
10519 }
10520
10521 e = g & -4 | 0;
10522 f = e - 64 | 0;
10523
10524 while ((c | 0) <= (f | 0)) {
10525 b[c >> 2] = b[d >> 2];
10526 b[c + 4 >> 2] = b[d + 4 >> 2];
10527 b[c + 8 >> 2] = b[d + 8 >> 2];
10528 b[c + 12 >> 2] = b[d + 12 >> 2];
10529 b[c + 16 >> 2] = b[d + 16 >> 2];
10530 b[c + 20 >> 2] = b[d + 20 >> 2];
10531 b[c + 24 >> 2] = b[d + 24 >> 2];
10532 b[c + 28 >> 2] = b[d + 28 >> 2];
10533 b[c + 32 >> 2] = b[d + 32 >> 2];
10534 b[c + 36 >> 2] = b[d + 36 >> 2];
10535 b[c + 40 >> 2] = b[d + 40 >> 2];
10536 b[c + 44 >> 2] = b[d + 44 >> 2];
10537 b[c + 48 >> 2] = b[d + 48 >> 2];
10538 b[c + 52 >> 2] = b[d + 52 >> 2];
10539 b[c + 56 >> 2] = b[d + 56 >> 2];
10540 b[c + 60 >> 2] = b[d + 60 >> 2];
10541 c = c + 64 | 0;
10542 d = d + 64 | 0;
10543 }
10544
10545 while ((c | 0) < (e | 0)) {
10546 b[c >> 2] = b[d >> 2];
10547 c = c + 4 | 0;
10548 d = d + 4 | 0;
10549 }
10550 } else {
10551 e = g - 4 | 0;
10552
10553 while ((c | 0) < (e | 0)) {
10554 a[c >> 0] = a[d >> 0] | 0;
10555 a[c + 1 >> 0] = a[d + 1 >> 0] | 0;
10556 a[c + 2 >> 0] = a[d + 2 >> 0] | 0;
10557 a[c + 3 >> 0] = a[d + 3 >> 0] | 0;
10558 c = c + 4 | 0;
10559 d = d + 4 | 0;
10560 }
10561 }
10562
10563 while ((c | 0) < (g | 0)) {
10564 a[c >> 0] = a[d >> 0] | 0;
10565 c = c + 1 | 0;
10566 d = d + 1 | 0;
10567 }
10568
10569 return h | 0;
10570 }
10571
10572 function Uc(c, d, e) {
10573 c = c | 0;
10574 d = d | 0;
10575 e = e | 0;
10576 var f = 0,
10577 g = 0,
10578 h = 0,
10579 i = 0;
10580 h = c + e | 0;
10581 d = d & 255;
10582
10583 if ((e | 0) >= 67) {
10584 while (c & 3) {
10585 a[c >> 0] = d;
10586 c = c + 1 | 0;
10587 }
10588
10589 f = h & -4 | 0;
10590 i = d | d << 8 | d << 16 | d << 24;
10591 g = f - 64 | 0;
10592
10593 while ((c | 0) <= (g | 0)) {
10594 b[c >> 2] = i;
10595 b[c + 4 >> 2] = i;
10596 b[c + 8 >> 2] = i;
10597 b[c + 12 >> 2] = i;
10598 b[c + 16 >> 2] = i;
10599 b[c + 20 >> 2] = i;
10600 b[c + 24 >> 2] = i;
10601 b[c + 28 >> 2] = i;
10602 b[c + 32 >> 2] = i;
10603 b[c + 36 >> 2] = i;
10604 b[c + 40 >> 2] = i;
10605 b[c + 44 >> 2] = i;
10606 b[c + 48 >> 2] = i;
10607 b[c + 52 >> 2] = i;
10608 b[c + 56 >> 2] = i;
10609 b[c + 60 >> 2] = i;
10610 c = c + 64 | 0;
10611 }
10612
10613 while ((c | 0) < (f | 0)) {
10614 b[c >> 2] = i;
10615 c = c + 4 | 0;
10616 }
10617 }
10618
10619 while ((c | 0) < (h | 0)) {
10620 a[c >> 0] = d;
10621 c = c + 1 | 0;
10622 }
10623
10624 return h - e | 0;
10625 }
10626
10627 function Vc(a) {
10628 a = +a;
10629 return a >= 0.0 ? +p(a + .5) : +A(a - .5);
10630 }
10631
10632 function Wc(a) {
10633 a = a | 0;
10634 var c = 0,
10635 d = 0,
10636 e = 0;
10637 e = I() | 0;
10638 d = b[g >> 2] | 0;
10639 c = d + a | 0;
10640
10641 if ((a | 0) > 0 & (c | 0) < (d | 0) | (c | 0) < 0) {
10642 L(c | 0) | 0;
10643 H(12);
10644 return -1;
10645 }
10646
10647 if ((c | 0) > (e | 0)) { if (!(K(c | 0) | 0)) {
10648 H(12);
10649 return -1;
10650 } }
10651 b[g >> 2] = c;
10652 return d | 0;
10653 } // EMSCRIPTEN_END_FUNCS
10654
10655
10656 return {
10657 ___uremdi3: Pc,
10658 _bitshift64Lshr: Qc,
10659 _bitshift64Shl: Rc,
10660 _calloc: Kc,
10661 _compact: vb,
10662 _destroyLinkedPolygon: Zb,
10663 _edgeLengthKm: lb,
10664 _edgeLengthM: mb,
10665 _emscripten_replace_memory: U,
10666 _experimentalH3ToLocalIj: cc,
10667 _experimentalLocalIjToH3: dc,
10668 _free: Jc,
10669 _geoToH3: Gb,
10670 _getDestinationH3IndexFromUnidirectionalEdge: Sb,
10671 _getH3IndexesFromUnidirectionalEdge: Ub,
10672 _getH3UnidirectionalEdge: Qb,
10673 _getH3UnidirectionalEdgeBoundary: Wb,
10674 _getH3UnidirectionalEdgesFromHexagon: Vb,
10675 _getOriginH3IndexFromUnidirectionalEdge: Rb,
10676 _getPentagonIndexes: Ob,
10677 _getRes0Indexes: qa,
10678 _h3Distance: ec,
10679 _h3GetBaseCell: ob,
10680 _h3GetFaces: Mb,
10681 _h3IndexesAreNeighbors: Pb,
10682 _h3IsPentagon: tb,
10683 _h3IsResClassIII: yb,
10684 _h3IsValid: pb,
10685 _h3Line: gc,
10686 _h3LineSize: fc,
10687 _h3SetToLinkedGeo: ha,
10688 _h3ToCenterChild: ub,
10689 _h3ToChildren: sb,
10690 _h3ToGeo: Jb,
10691 _h3ToGeoBoundary: Kb,
10692 _h3ToParent: qb,
10693 _h3UnidirectionalEdgeIsValid: Tb,
10694 _hexAreaKm2: jb,
10695 _hexAreaM2: kb,
10696 _hexRing: da,
10697 _i64Subtract: Mc,
10698 _kRing: _,
10699 _kRingDistances: $,
10700 _llvm_round_f64: Sc,
10701 _malloc: Ic,
10702 _maxFaceCount: Lb,
10703 _maxH3ToChildrenSize: rb,
10704 _maxKringSize: Z,
10705 _maxPolyfillSize: ea,
10706 _maxUncompactSize: xb,
10707 _memcpy: Tc,
10708 _memset: Uc,
10709 _numHexagons: nb,
10710 _pentagonIndexCount: Nb,
10711 _polyfill: fa,
10712 _res0IndexCount: pa,
10713 _round: Vc,
10714 _sbrk: Wc,
10715 _sizeOfCoordIJ: sc,
10716 _sizeOfGeoBoundary: oc,
10717 _sizeOfGeoCoord: nc,
10718 _sizeOfGeoPolygon: qc,
10719 _sizeOfGeofence: pc,
10720 _sizeOfH3Index: mc,
10721 _sizeOfLinkedGeoPolygon: rc,
10722 _uncompact: wb,
10723 establishStackSpace: Y,
10724 stackAlloc: V,
10725 stackRestore: X,
10726 stackSave: W
10727 };
10728 }( // EMSCRIPTEN_END_ASM
10729 asmGlobalArg, asmLibraryArg, buffer);
10730
10731 var ___uremdi3 = Module["___uremdi3"] = asm["___uremdi3"];
10732
10733 var _bitshift64Lshr = Module["_bitshift64Lshr"] = asm["_bitshift64Lshr"];
10734
10735 var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
10736
10737 var _calloc = Module["_calloc"] = asm["_calloc"];
10738
10739 var _compact = Module["_compact"] = asm["_compact"];
10740
10741 var _destroyLinkedPolygon = Module["_destroyLinkedPolygon"] = asm["_destroyLinkedPolygon"];
10742
10743 var _edgeLengthKm = Module["_edgeLengthKm"] = asm["_edgeLengthKm"];
10744
10745 var _edgeLengthM = Module["_edgeLengthM"] = asm["_edgeLengthM"];
10746
10747 var _emscripten_replace_memory = Module["_emscripten_replace_memory"] = asm["_emscripten_replace_memory"];
10748
10749 var _experimentalH3ToLocalIj = Module["_experimentalH3ToLocalIj"] = asm["_experimentalH3ToLocalIj"];
10750
10751 var _experimentalLocalIjToH3 = Module["_experimentalLocalIjToH3"] = asm["_experimentalLocalIjToH3"];
10752
10753 var _free = Module["_free"] = asm["_free"];
10754
10755 var _geoToH3 = Module["_geoToH3"] = asm["_geoToH3"];
10756
10757 var _getDestinationH3IndexFromUnidirectionalEdge = Module["_getDestinationH3IndexFromUnidirectionalEdge"] = asm["_getDestinationH3IndexFromUnidirectionalEdge"];
10758
10759 var _getH3IndexesFromUnidirectionalEdge = Module["_getH3IndexesFromUnidirectionalEdge"] = asm["_getH3IndexesFromUnidirectionalEdge"];
10760
10761 var _getH3UnidirectionalEdge = Module["_getH3UnidirectionalEdge"] = asm["_getH3UnidirectionalEdge"];
10762
10763 var _getH3UnidirectionalEdgeBoundary = Module["_getH3UnidirectionalEdgeBoundary"] = asm["_getH3UnidirectionalEdgeBoundary"];
10764
10765 var _getH3UnidirectionalEdgesFromHexagon = Module["_getH3UnidirectionalEdgesFromHexagon"] = asm["_getH3UnidirectionalEdgesFromHexagon"];
10766
10767 var _getOriginH3IndexFromUnidirectionalEdge = Module["_getOriginH3IndexFromUnidirectionalEdge"] = asm["_getOriginH3IndexFromUnidirectionalEdge"];
10768
10769 var _getPentagonIndexes = Module["_getPentagonIndexes"] = asm["_getPentagonIndexes"];
10770
10771 var _getRes0Indexes = Module["_getRes0Indexes"] = asm["_getRes0Indexes"];
10772
10773 var _h3Distance = Module["_h3Distance"] = asm["_h3Distance"];
10774
10775 var _h3GetBaseCell = Module["_h3GetBaseCell"] = asm["_h3GetBaseCell"];
10776
10777 var _h3GetFaces = Module["_h3GetFaces"] = asm["_h3GetFaces"];
10778
10779 var _h3IndexesAreNeighbors = Module["_h3IndexesAreNeighbors"] = asm["_h3IndexesAreNeighbors"];
10780
10781 var _h3IsPentagon = Module["_h3IsPentagon"] = asm["_h3IsPentagon"];
10782
10783 var _h3IsResClassIII = Module["_h3IsResClassIII"] = asm["_h3IsResClassIII"];
10784
10785 var _h3IsValid = Module["_h3IsValid"] = asm["_h3IsValid"];
10786
10787 var _h3Line = Module["_h3Line"] = asm["_h3Line"];
10788
10789 var _h3LineSize = Module["_h3LineSize"] = asm["_h3LineSize"];
10790
10791 var _h3SetToLinkedGeo = Module["_h3SetToLinkedGeo"] = asm["_h3SetToLinkedGeo"];
10792
10793 var _h3ToCenterChild = Module["_h3ToCenterChild"] = asm["_h3ToCenterChild"];
10794
10795 var _h3ToChildren = Module["_h3ToChildren"] = asm["_h3ToChildren"];
10796
10797 var _h3ToGeo = Module["_h3ToGeo"] = asm["_h3ToGeo"];
10798
10799 var _h3ToGeoBoundary = Module["_h3ToGeoBoundary"] = asm["_h3ToGeoBoundary"];
10800
10801 var _h3ToParent = Module["_h3ToParent"] = asm["_h3ToParent"];
10802
10803 var _h3UnidirectionalEdgeIsValid = Module["_h3UnidirectionalEdgeIsValid"] = asm["_h3UnidirectionalEdgeIsValid"];
10804
10805 var _hexAreaKm2 = Module["_hexAreaKm2"] = asm["_hexAreaKm2"];
10806
10807 var _hexAreaM2 = Module["_hexAreaM2"] = asm["_hexAreaM2"];
10808
10809 var _hexRing = Module["_hexRing"] = asm["_hexRing"];
10810
10811 var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"];
10812
10813 var _kRing = Module["_kRing"] = asm["_kRing"];
10814
10815 var _kRingDistances = Module["_kRingDistances"] = asm["_kRingDistances"];
10816
10817 var _llvm_round_f64 = Module["_llvm_round_f64"] = asm["_llvm_round_f64"];
10818
10819 var _malloc = Module["_malloc"] = asm["_malloc"];
10820
10821 var _maxFaceCount = Module["_maxFaceCount"] = asm["_maxFaceCount"];
10822
10823 var _maxH3ToChildrenSize = Module["_maxH3ToChildrenSize"] = asm["_maxH3ToChildrenSize"];
10824
10825 var _maxKringSize = Module["_maxKringSize"] = asm["_maxKringSize"];
10826
10827 var _maxPolyfillSize = Module["_maxPolyfillSize"] = asm["_maxPolyfillSize"];
10828
10829 var _maxUncompactSize = Module["_maxUncompactSize"] = asm["_maxUncompactSize"];
10830
10831 var _memcpy = Module["_memcpy"] = asm["_memcpy"];
10832
10833 var _memset = Module["_memset"] = asm["_memset"];
10834
10835 var _numHexagons = Module["_numHexagons"] = asm["_numHexagons"];
10836
10837 var _pentagonIndexCount = Module["_pentagonIndexCount"] = asm["_pentagonIndexCount"];
10838
10839 var _polyfill = Module["_polyfill"] = asm["_polyfill"];
10840
10841 var _res0IndexCount = Module["_res0IndexCount"] = asm["_res0IndexCount"];
10842
10843 var _round = Module["_round"] = asm["_round"];
10844
10845 var _sbrk = Module["_sbrk"] = asm["_sbrk"];
10846
10847 var _sizeOfCoordIJ = Module["_sizeOfCoordIJ"] = asm["_sizeOfCoordIJ"];
10848
10849 var _sizeOfGeoBoundary = Module["_sizeOfGeoBoundary"] = asm["_sizeOfGeoBoundary"];
10850
10851 var _sizeOfGeoCoord = Module["_sizeOfGeoCoord"] = asm["_sizeOfGeoCoord"];
10852
10853 var _sizeOfGeoPolygon = Module["_sizeOfGeoPolygon"] = asm["_sizeOfGeoPolygon"];
10854
10855 var _sizeOfGeofence = Module["_sizeOfGeofence"] = asm["_sizeOfGeofence"];
10856
10857 var _sizeOfH3Index = Module["_sizeOfH3Index"] = asm["_sizeOfH3Index"];
10858
10859 var _sizeOfLinkedGeoPolygon = Module["_sizeOfLinkedGeoPolygon"] = asm["_sizeOfLinkedGeoPolygon"];
10860
10861 var _uncompact = Module["_uncompact"] = asm["_uncompact"];
10862
10863 var establishStackSpace = Module["establishStackSpace"] = asm["establishStackSpace"];
10864 var stackAlloc = Module["stackAlloc"] = asm["stackAlloc"];
10865 var stackRestore = Module["stackRestore"] = asm["stackRestore"];
10866 var stackSave = Module["stackSave"] = asm["stackSave"];
10867 Module["asm"] = asm;
10868 Module["cwrap"] = cwrap;
10869 Module["setValue"] = setValue;
10870 Module["getValue"] = getValue;
10871 Module["getTempRet0"] = getTempRet0;
10872
10873 if (memoryInitializer) {
10874 if (!isDataURI(memoryInitializer)) {
10875 memoryInitializer = locateFile(memoryInitializer);
10876 }
10877
10878 {
10879 addRunDependency("memory initializer");
10880
10881 var applyMemoryInitializer = function (data) {
10882 if (data.byteLength) { data = new Uint8Array(data); }
10883 HEAPU8.set(data, GLOBAL_BASE);
10884 if (Module["memoryInitializerRequest"]) { delete Module["memoryInitializerRequest"].response; }
10885 removeRunDependency("memory initializer");
10886 };
10887
10888 var doBrowserLoad = function () {
10889 readAsync(memoryInitializer, applyMemoryInitializer, function () {
10890 throw "could not load memory initializer " + memoryInitializer;
10891 });
10892 };
10893
10894 var memoryInitializerBytes = tryParseAsDataURI(memoryInitializer);
10895
10896 if (memoryInitializerBytes) {
10897 applyMemoryInitializer(memoryInitializerBytes.buffer);
10898 } else if (Module["memoryInitializerRequest"]) {
10899 var useRequest = function () {
10900 var request = Module["memoryInitializerRequest"];
10901 var response = request.response;
10902
10903 if (request.status !== 200 && request.status !== 0) {
10904 var data = tryParseAsDataURI(Module["memoryInitializerRequestURL"]);
10905
10906 if (data) {
10907 response = data.buffer;
10908 } else {
10909 console.warn("a problem seems to have happened with Module.memoryInitializerRequest, status: " + request.status + ", retrying " + memoryInitializer);
10910 doBrowserLoad();
10911 return;
10912 }
10913 }
10914
10915 applyMemoryInitializer(response);
10916 };
10917
10918 if (Module["memoryInitializerRequest"].response) {
10919 setTimeout(useRequest, 0);
10920 } else {
10921 Module["memoryInitializerRequest"].addEventListener("load", useRequest);
10922 }
10923 } else {
10924 doBrowserLoad();
10925 }
10926 }
10927 }
10928
10929 var calledRun;
10930
10931 dependenciesFulfilled = function runCaller() {
10932 if (!calledRun) { run(); }
10933 if (!calledRun) { dependenciesFulfilled = runCaller; }
10934 };
10935
10936 function run(args) {
10937 args = args || arguments_;
10938
10939 if (runDependencies > 0) {
10940 return;
10941 }
10942
10943 preRun();
10944 if (runDependencies > 0) { return; }
10945
10946 function doRun() {
10947 if (calledRun) { return; }
10948 calledRun = true;
10949 if (ABORT) { return; }
10950 initRuntime();
10951 preMain();
10952 if (Module["onRuntimeInitialized"]) { Module["onRuntimeInitialized"](); }
10953 postRun();
10954 }
10955
10956 if (Module["setStatus"]) {
10957 Module["setStatus"]("Running...");
10958 setTimeout(function () {
10959 setTimeout(function () {
10960 Module["setStatus"]("");
10961 }, 1);
10962 doRun();
10963 }, 1);
10964 } else {
10965 doRun();
10966 }
10967 }
10968
10969 Module["run"] = run;
10970
10971 function abort(what) {
10972 if (Module["onAbort"]) {
10973 Module["onAbort"](what);
10974 }
10975
10976 what += "";
10977 out(what);
10978 err(what);
10979 ABORT = true;
10980 throw "abort(" + what + "). Build with -s ASSERTIONS=1 for more info.";
10981 }
10982
10983 Module["abort"] = abort;
10984
10985 if (Module["preInit"]) {
10986 if (typeof Module["preInit"] == "function") { Module["preInit"] = [Module["preInit"]]; }
10987
10988 while (Module["preInit"].length > 0) {
10989 Module["preInit"].pop()();
10990 }
10991 }
10992 run();
10993 return libh3;
10994}(typeof libh3 === 'object' ? libh3 : {});
10995
10996/*
10997 * Copyright 2018-2019 Uber Technologies, Inc.
10998 *
10999 * Licensed under the Apache License, Version 2.0 (the "License");
11000 * you may not use this file except in compliance with the License.
11001 * You may obtain a copy of the License at
11002 *
11003 * http://www.apache.org/licenses/LICENSE-2.0
11004 *
11005 * Unless required by applicable law or agreed to in writing, software
11006 * distributed under the License is distributed on an "AS IS" BASIS,
11007 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11008 * See the License for the specific language governing permissions and
11009 * limitations under the License.
11010 */
11011// Define the C bindings for the h3 library
11012// Add some aliases to make the function definitions more intelligible
11013var NUMBER = 'number';
11014var BOOLEAN = NUMBER;
11015var H3_LOWER = NUMBER;
11016var H3_UPPER = NUMBER;
11017var RESOLUTION = NUMBER;
11018var POINTER = NUMBER; // Define the bindings to functions in the C lib. Functions are defined as
11019// [name, return type, [arg types]]. You must run `npm run build-emscripten`
11020// before new functions added here will be available.
11021
11022var BINDINGS = [// The size functions are inserted via build/sizes.h
11023['sizeOfH3Index', NUMBER], ['sizeOfGeoCoord', NUMBER], ['sizeOfGeoBoundary', NUMBER], ['sizeOfGeoPolygon', NUMBER], ['sizeOfGeofence', NUMBER], ['sizeOfLinkedGeoPolygon', NUMBER], ['sizeOfCoordIJ', NUMBER], // The remaining functions are defined in the core lib in h3Api.h
11024['h3IsValid', BOOLEAN, [H3_LOWER, H3_UPPER]], ['geoToH3', H3_LOWER, [NUMBER, NUMBER, RESOLUTION]], ['h3ToGeo', null, [H3_LOWER, H3_UPPER, POINTER]], ['h3ToGeoBoundary', null, [H3_LOWER, H3_UPPER, POINTER]], ['maxKringSize', NUMBER, [NUMBER]], ['kRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]], ['kRingDistances', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER, POINTER]], ['hexRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]], ['maxPolyfillSize', NUMBER, [POINTER, RESOLUTION]], ['polyfill', null, [POINTER, RESOLUTION, POINTER]], ['h3SetToLinkedGeo', null, [POINTER, NUMBER, POINTER]], ['destroyLinkedPolygon', null, [POINTER]], ['compact', NUMBER, [POINTER, POINTER, NUMBER]], ['uncompact', NUMBER, [POINTER, NUMBER, POINTER, NUMBER, RESOLUTION]], ['maxUncompactSize', NUMBER, [POINTER, NUMBER, RESOLUTION]], ['h3IsPentagon', BOOLEAN, [H3_LOWER, H3_UPPER]], ['h3IsResClassIII', BOOLEAN, [H3_LOWER, H3_UPPER]], ['h3GetBaseCell', NUMBER, [H3_LOWER, H3_UPPER]], ['maxFaceCount', NUMBER, [H3_LOWER, H3_UPPER]], ['h3GetFaces', null, [H3_LOWER, H3_UPPER, POINTER]], ['h3ToParent', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]], ['h3ToChildren', null, [H3_LOWER, H3_UPPER, RESOLUTION, POINTER]], ['h3ToCenterChild', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]], ['maxH3ToChildrenSize', NUMBER, [H3_LOWER, H3_UPPER, RESOLUTION]], ['h3IndexesAreNeighbors', BOOLEAN, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['getH3UnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['getOriginH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]], ['getDestinationH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]], ['h3UnidirectionalEdgeIsValid', BOOLEAN, [H3_LOWER, H3_UPPER]], ['getH3IndexesFromUnidirectionalEdge', null, [H3_LOWER, H3_UPPER, POINTER]], ['getH3UnidirectionalEdgesFromHexagon', null, [H3_LOWER, H3_UPPER, POINTER]], ['getH3UnidirectionalEdgeBoundary', null, [H3_LOWER, H3_UPPER, POINTER]], ['h3Distance', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['h3Line', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]], ['h3LineSize', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]], ['experimentalH3ToLocalIj', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]], ['experimentalLocalIjToH3', NUMBER, [H3_LOWER, H3_UPPER, POINTER, POINTER]], ['hexAreaM2', NUMBER, [RESOLUTION]], ['hexAreaKm2', NUMBER, [RESOLUTION]], ['edgeLengthM', NUMBER, [RESOLUTION]], ['edgeLengthKm', NUMBER, [RESOLUTION]], ['numHexagons', NUMBER, [RESOLUTION]], ['getRes0Indexes', null, [POINTER]], ['res0IndexCount', NUMBER], ['getPentagonIndexes', null, [NUMBER, POINTER]], ['pentagonIndexCount', NUMBER]];
11025
11026/*
11027 * Copyright 2018-2019 Uber Technologies, Inc.
11028 *
11029 * Licensed under the Apache License, Version 2.0 (the "License");
11030 * you may not use this file except in compliance with the License.
11031 * You may obtain a copy of the License at
11032 *
11033 * http://www.apache.org/licenses/LICENSE-2.0
11034 *
11035 * Unless required by applicable law or agreed to in writing, software
11036 * distributed under the License is distributed on an "AS IS" BASIS,
11037 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11038 * See the License for the specific language governing permissions and
11039 * limitations under the License.
11040 */
11041/**
11042 * 64-bit hexidecimal string representation of an H3 index
11043 * @static
11044 * @typedef {string} H3Index
11045 */
11046
11047var H3 = {}; // Create the bound functions themselves
11048
11049BINDINGS.forEach(function bind(def) {
11050 H3[def[0]] = libh3.cwrap.apply(libh3, def);
11051}); // Alias the hexidecimal base for legibility
11052
11053var BASE_16 = 16; // ----------------------------------------------------------------------------
11054// Byte size imports
11055
11056var SZ_INT = 4;
11057var SZ_PTR = 4;
11058var SZ_DBL = 8;
11059var SZ_H3INDEX = H3.sizeOfH3Index();
11060var SZ_GEOCOORD = H3.sizeOfGeoCoord();
11061var SZ_GEOBOUNDARY = H3.sizeOfGeoBoundary();
11062var SZ_GEOPOLYGON = H3.sizeOfGeoPolygon();
11063var SZ_GEOFENCE = H3.sizeOfGeofence();
11064var SZ_LINKED_GEOPOLYGON = H3.sizeOfLinkedGeoPolygon();
11065var SZ_COORDIJ = H3.sizeOfCoordIJ(); // ----------------------------------------------------------------------------
11066// Unit constants
11067
11068var UNITS = {
11069 m: 'm',
11070 km: 'km',
11071 m2: 'm2',
11072 km2: 'km2'
11073}; // ----------------------------------------------------------------------------
11074// Utilities and helpers
11075
11076/**
11077 * Validate a resolution, throwing an error if invalid
11078 * @private
11079 * @param {mixed} res Value to validate
11080 * @throws {Error} Error if invalid
11081 */
11082
11083function validateRes(res) {
11084 if (typeof res !== 'number' || res < 0 || res > 15 || Math.floor(res) !== res) {
11085 throw new Error(("Invalid resolution: " + res));
11086 }
11087}
11088/**
11089 * Convert an H3 index (64-bit hexidecimal string) into a "split long" - a pair of 32-bit ints
11090 * @private
11091 * @param {H3Index} h3Index H3 index to check
11092 * @return {Number[]} A two-element array with 32 lower bits and 32 upper bits
11093 */
11094
11095
11096function h3IndexToSplitLong(h3Index) {
11097 if (typeof h3Index !== 'string') {
11098 return [0, 0];
11099 }
11100
11101 var upper = parseInt(h3Index.substring(0, h3Index.length - 8), BASE_16);
11102 var lower = parseInt(h3Index.substring(h3Index.length - 8), BASE_16);
11103 return [lower, upper];
11104}
11105/**
11106 * Convert a 32-bit int to a hexdecimal string
11107 * @private
11108 * @param {Number} num Integer to convert
11109 * @return {H3Index} Hexidecimal string
11110 */
11111
11112
11113function hexFrom32Bit(num) {
11114 if (num >= 0) {
11115 return num.toString(BASE_16);
11116 } // Handle negative numbers
11117
11118
11119 num = num & 0x7fffffff;
11120 var tempStr = zeroPad(8, num.toString(BASE_16));
11121 var topNum = (parseInt(tempStr[0], BASE_16) + 8).toString(BASE_16);
11122 tempStr = topNum + tempStr.substring(1);
11123 return tempStr;
11124}
11125/**
11126 * Get a H3 index from a split long (pair of 32-bit ints)
11127 * @private
11128 * @param {Number} lower Lower 32 bits
11129 * @param {Number} upper Upper 32 bits
11130 * @return {H3Index} H3 index
11131 */
11132
11133
11134function splitLongToh3Index(lower, upper) {
11135 return hexFrom32Bit(upper) + zeroPad(8, hexFrom32Bit(lower));
11136}
11137/**
11138 * Zero-pad a string to a given length
11139 * @private
11140 * @param {Number} fullLen Target length
11141 * @param {String} numStr String to zero-pad
11142 * @return {String} Zero-padded string
11143 */
11144
11145
11146function zeroPad(fullLen, numStr) {
11147 var numZeroes = fullLen - numStr.length;
11148 var outStr = '';
11149
11150 for (var i = 0; i < numZeroes; i++) {
11151 outStr += '0';
11152 }
11153
11154 outStr = outStr + numStr;
11155 return outStr;
11156}
11157/**
11158 * Populate a C-appropriate Geofence struct from a polygon array
11159 * @private
11160 * @param {Array[]} polygonArray Polygon, as an array of coordinate pairs
11161 * @param {Number} geofence C pointer to a Geofence struct
11162 * @param {Boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec
11163 * @return {Number} C pointer to populated Geofence struct
11164 */
11165
11166
11167function polygonArrayToGeofence(polygonArray, geofence, isGeoJson) {
11168 var numVerts = polygonArray.length;
11169
11170 var geoCoordArray = libh3._calloc(numVerts, SZ_GEOCOORD); // Support [lng, lat] pairs if GeoJSON is specified
11171
11172
11173 var latIndex = isGeoJson ? 1 : 0;
11174 var lngIndex = isGeoJson ? 0 : 1;
11175
11176 for (var i = 0; i < numVerts * 2; i += 2) {
11177 libh3.HEAPF64.set([polygonArray[i / 2][latIndex], polygonArray[i / 2][lngIndex]].map(degsToRads), geoCoordArray / SZ_DBL + i);
11178 }
11179
11180 libh3.HEAPU32.set([numVerts, geoCoordArray], geofence / SZ_INT);
11181 return geofence;
11182}
11183/**
11184 * Create a C-appropriate GeoPolygon struct from an array of polygons
11185 * @private
11186 * @param {Array[]} coordinates Array of polygons, each an array of coordinate pairs
11187 * @param {Boolean} isGeoJson Whether coordinates are in [lng, lat] order per GeoJSON spec
11188 * @return {Number} C pointer to populated GeoPolygon struct
11189 */
11190
11191
11192function coordinatesToGeoPolygon(coordinates, isGeoJson) {
11193 // Any loops beyond the first loop are holes
11194 var numHoles = coordinates.length - 1;
11195
11196 var geoPolygon = libh3._calloc(SZ_GEOPOLYGON); // Byte positions within the struct
11197
11198
11199 var geofenceOffset = 0;
11200 var numHolesOffset = geofenceOffset + SZ_GEOFENCE;
11201 var holesOffset = numHolesOffset + SZ_INT; // geofence is first part of struct
11202
11203 polygonArrayToGeofence(coordinates[0], geoPolygon + geofenceOffset, isGeoJson);
11204 var holes;
11205
11206 if (numHoles > 0) {
11207 holes = libh3._calloc(numHoles, SZ_GEOFENCE);
11208
11209 for (var i = 0; i < numHoles; i++) {
11210 polygonArrayToGeofence(coordinates[i + 1], holes + SZ_GEOFENCE * i, isGeoJson);
11211 }
11212 }
11213
11214 libh3.setValue(geoPolygon + numHolesOffset, numHoles, 'i32');
11215 libh3.setValue(geoPolygon + holesOffset, holes, 'i32');
11216 return geoPolygon;
11217}
11218/**
11219 * Free memory allocated for a GeoPolygon struct. It is an error to access the struct
11220 * after passing it to this method.
11221 * @private
11222 * @return {Number} geoPolygon C pointer to populated GeoPolygon struct
11223 */
11224
11225
11226function destroyGeoPolygon(geoPolygon) {
11227 // Byte positions within the struct
11228 var geofenceOffset = 0;
11229 var numHolesOffset = geofenceOffset + SZ_GEOFENCE;
11230 var holesOffset = numHolesOffset + SZ_INT; // Free the outer loop
11231
11232 libh3._free(libh3.getValue(geoPolygon + geofenceOffset, 'i8*')); // Free the holes, if any
11233
11234
11235 var numHoles = libh3.getValue(geoPolygon + numHolesOffset, 'i32');
11236
11237 for (var i = 0; i < numHoles; i++) {
11238 libh3._free(libh3.getValue(geoPolygon + holesOffset + SZ_GEOFENCE * i, 'i8*'));
11239 }
11240
11241 libh3._free(geoPolygon);
11242}
11243/**
11244 * Read a long value, returning the lower and upper portions as separate 32-bit integers.
11245 * Because the upper bits are returned via side effect, the argument to this function is
11246 * intended to be the invocation that caused the side effect, e.g. readLong(H3.getSomeLong())
11247 * @private
11248 * @param {Number} invocation Invoked function returning a long value. The actual return
11249 * value of these functions is a 32-bit integer.
11250 * @return {Number} Long value as a [lower, upper] pair
11251 */
11252
11253
11254function readLong(invocation) {
11255 // Upper 32-bits of the long set via side-effect
11256 var upper = libh3.getTempRet0();
11257 return [invocation, upper];
11258}
11259/**
11260 * Read an H3 index from a C return value. As with readLong, the argument to this function
11261 * is intended to be an invocation, e.g. readH3Index(H3.getSomeAddress()), to help ensure that
11262 * the temp value storing the upper bits of the long is still set.
11263 * @private
11264 * @param {Number} invocation Invoked function returning a single H3 index
11265 * @return {H3Index} H3 index, or null if index was invalid
11266 */
11267
11268
11269function readH3Index(invocation) {
11270 var ref = readLong(invocation);
11271 var lower = ref[0];
11272 var upper = ref[1]; // The lower bits are allowed to be 0s, but if the upper bits are 0
11273 // this represents an invalid H3 index
11274
11275 return upper ? splitLongToh3Index(lower, upper) : null;
11276}
11277/**
11278 * Read an H3 index from a pointer to C memory.
11279 * @private
11280 * @param {Number} cAddress Pointer to allocated C memory
11281 * @param {Number} offset Offset, in number of H3 indexes, in case we're
11282 * reading an array
11283 * @return {H3Index} H3 index, or null if index was invalid
11284 */
11285
11286
11287function readH3IndexFromPointer(cAddress, offset) {
11288 if ( offset === void 0 ) offset = 0;
11289
11290 var lower = libh3.getValue(cAddress + SZ_INT * offset * 2, 'i32');
11291 var upper = libh3.getValue(cAddress + SZ_INT * (offset * 2 + 1), 'i32'); // The lower bits are allowed to be 0s, but if the upper bits are 0
11292 // this represents an invalid H3 index
11293
11294 return upper ? splitLongToh3Index(lower, upper) : null;
11295}
11296/**
11297 * Store an H3 index in C memory. Primarily used as an efficient way to
11298 * write sets of hexagons.
11299 * @private
11300 * @param {H3Index} h3Index H3 index to store
11301 * @param {Number} cAddress Pointer to allocated C memory
11302 * @param {Number} offset Offset, in number of H3 indexes from beginning
11303 * of the current array
11304 */
11305
11306
11307function storeH3Index(h3Index, cAddress, offset) {
11308 // HEAPU32 is a typed array projection on the index space
11309 // as unsigned 32-bit integers. This means the index needs
11310 // to be divided by SZ_INT (4) to access correctly. Also,
11311 // the H3 index is 64 bits, so we skip by twos as we're writing
11312 // to 32-bit integers in the proper order.
11313 libh3.HEAPU32.set(h3IndexToSplitLong(h3Index), cAddress / SZ_INT + 2 * offset);
11314}
11315/**
11316 * Read an array of 64-bit H3 indexes from C and convert to a JS array of
11317 * H3 index strings
11318 * @private
11319 * @param {Number} cAddress Pointer to C ouput array
11320 * @param {Number} maxCount Max number of hexagons in array. Hexagons with
11321 * the value 0 will be skipped, so this isn't
11322 * necessarily the length of the output array.
11323 * @return {H3Index[]} Array of H3 indexes
11324 */
11325
11326
11327function readArrayOfHexagons(cAddress, maxCount) {
11328 var out = [];
11329
11330 for (var i = 0; i < maxCount; i++) {
11331 var h3Index = readH3IndexFromPointer(cAddress, i);
11332
11333 if (h3Index !== null) {
11334 out.push(h3Index);
11335 }
11336 }
11337
11338 return out;
11339}
11340/**
11341 * Store an array of H3 index strings as a C array of 64-bit integers.
11342 * @private
11343 * @param {Number} cAddress Pointer to C input array
11344 * @param {H3Index[]} hexagons H3 indexes to pass to the C lib
11345 */
11346
11347
11348function storeArrayOfHexagons(cAddress, hexagons) {
11349 // Assuming the cAddress points to an already appropriately
11350 // allocated space
11351 var count = hexagons.length;
11352
11353 for (var i = 0; i < count; i++) {
11354 storeH3Index(hexagons[i], cAddress, i);
11355 }
11356}
11357
11358function readSingleCoord(cAddress) {
11359 return radsToDegs(libh3.getValue(cAddress, 'double'));
11360}
11361/**
11362 * Read a GeoCoord from C and return a [lat, lng] pair.
11363 * @private
11364 * @param {Number} cAddress Pointer to C struct
11365 * @return {Number[]} [lat, lng] pair
11366 */
11367
11368
11369function readGeoCoord(cAddress) {
11370 return [readSingleCoord(cAddress), readSingleCoord(cAddress + SZ_DBL)];
11371}
11372/**
11373 * Read a GeoCoord from C and return a GeoJSON-style [lng, lat] pair.
11374 * @private
11375 * @param {Number} cAddress Pointer to C struct
11376 * @return {Number[]} [lng, lat] pair
11377 */
11378
11379
11380function readGeoCoordGeoJson(cAddress) {
11381 return [readSingleCoord(cAddress + SZ_DBL), readSingleCoord(cAddress)];
11382}
11383/**
11384 * Read the GeoBoundary structure into a list of geo coordinate pairs
11385 * @private
11386 * @param {Number} geoBoundary C pointer to GeoBoundary struct
11387 * @param {Boolean} geoJsonCoords Whether to provide GeoJSON coordinate order: [lng, lat]
11388 * @param {Boolean} closedLoop Whether to close the loop
11389 * @return {Array[]} Array of geo coordinate pairs
11390 */
11391
11392
11393function readGeoBoundary(geoBoundary, geoJsonCoords, closedLoop) {
11394 var numVerts = libh3.getValue(geoBoundary, 'i32'); // Note that though numVerts is an int, the coordinate doubles have to be
11395 // aligned to 8 bytes, hence the 8-byte offset here
11396
11397 var vertsPos = geoBoundary + SZ_DBL;
11398 var out = []; // Support [lng, lat] pairs if GeoJSON is specified
11399
11400 var readCoord = geoJsonCoords ? readGeoCoordGeoJson : readGeoCoord;
11401
11402 for (var i = 0; i < numVerts * 2; i += 2) {
11403 out.push(readCoord(vertsPos + SZ_DBL * i));
11404 }
11405
11406 if (closedLoop) {
11407 // Close loop if GeoJSON is specified
11408 out.push(out[0]);
11409 }
11410
11411 return out;
11412}
11413/**
11414 * Read the LinkedGeoPolygon structure into a nested array of MultiPolygon coordinates
11415 * @private
11416 * @param {Number} polygon C pointer to LinkedGeoPolygon struct
11417 * @param {Boolean} formatAsGeoJson Whether to provide GeoJSON output: [lng, lat], closed loops
11418 * @return {Number[][][][]} MultiPolygon-style output.
11419 */
11420
11421
11422function readMultiPolygon(polygon, formatAsGeoJson) {
11423 var output = [];
11424 var readCoord = formatAsGeoJson ? readGeoCoordGeoJson : readGeoCoord;
11425 var loops;
11426 var loop;
11427 var coords;
11428 var coord; // Loop through the linked structure, building the output
11429
11430 while (polygon) {
11431 output.push(loops = []); // Follow ->first pointer
11432
11433 loop = libh3.getValue(polygon, 'i8*');
11434
11435 while (loop) {
11436 loops.push(coords = []); // Follow ->first pointer
11437
11438 coord = libh3.getValue(loop, 'i8*');
11439
11440 while (coord) {
11441 coords.push(readCoord(coord)); // Follow ->next pointer
11442
11443 coord = libh3.getValue(coord + SZ_DBL * 2, 'i8*');
11444 }
11445
11446 if (formatAsGeoJson) {
11447 // Close loop if GeoJSON is requested
11448 coords.push(coords[0]);
11449 } // Follow ->next pointer
11450
11451
11452 loop = libh3.getValue(loop + SZ_PTR * 2, 'i8*');
11453 } // Follow ->next pointer
11454
11455
11456 polygon = libh3.getValue(polygon + SZ_PTR * 2, 'i8*');
11457 }
11458
11459 return output;
11460}
11461/**
11462 * Read a CoordIJ from C and return an {i, j} pair.
11463 * @private
11464 * @param {Number} cAddress Pointer to C struct
11465 * @return {Object} {i, j} pair
11466 */
11467
11468
11469function readCoordIJ(cAddress) {
11470 return {
11471 i: libh3.getValue(cAddress, 'i32'),
11472 j: libh3.getValue(cAddress + SZ_INT, 'i32')
11473 };
11474}
11475/**
11476 * Store an {i, j} pair to a C CoordIJ struct.
11477 * @private
11478 * @param {Number} cAddress Pointer to C struct
11479 * @return {Object} {i, j} pair
11480 */
11481
11482
11483function storeCoordIJ(cAddress, ref) {
11484 var i = ref.i;
11485 var j = ref.j;
11486
11487 libh3.setValue(cAddress, i, 'i32');
11488 libh3.setValue(cAddress + SZ_INT, j, 'i32');
11489}
11490/**
11491 * Read an array of positive integers array from C. Negative
11492 * values are considered invalid and ignored in output.
11493 * @private
11494 * @param {Number} cAddress Pointer to C array
11495 * @param {Number} count Length of C array
11496 * @return {Number[]} Javascript integer array
11497 */
11498
11499
11500function readArrayOfPositiveIntegers(cAddress, count) {
11501 var out = [];
11502
11503 for (var i = 0; i < count; i++) {
11504 var int = libh3.getValue(cAddress + SZ_INT * i, 'i32');
11505
11506 if (int >= 0) {
11507 out.push(int);
11508 }
11509 }
11510
11511 return out;
11512} // ----------------------------------------------------------------------------
11513// Public API functions: Core
11514
11515/**
11516 * Whether a given string represents a valid H3 index
11517 * @static
11518 * @param {H3Index} h3Index H3 index to check
11519 * @return {Boolean} Whether the index is valid
11520 */
11521
11522
11523function h3IsValid(h3Index) {
11524 var ref = h3IndexToSplitLong(h3Index);
11525 var lower = ref[0];
11526 var upper = ref[1];
11527 return Boolean(H3.h3IsValid(lower, upper));
11528}
11529/**
11530 * Whether the given H3 index is a pentagon
11531 * @static
11532 * @param {H3Index} h3Index H3 index to check
11533 * @return {Boolean} isPentagon
11534 */
11535
11536function h3IsPentagon(h3Index) {
11537 var ref = h3IndexToSplitLong(h3Index);
11538 var lower = ref[0];
11539 var upper = ref[1];
11540 return Boolean(H3.h3IsPentagon(lower, upper));
11541}
11542/**
11543 * Whether the given H3 index is in a Class III resolution (rotated versus
11544 * the icosahedron and subject to shape distortion adding extra points on
11545 * icosahedron edges, making them not true hexagons).
11546 * @static
11547 * @param {H3Index} h3Index H3 index to check
11548 * @return {Boolean} isResClassIII
11549 */
11550
11551function h3IsResClassIII(h3Index) {
11552 var ref = h3IndexToSplitLong(h3Index);
11553 var lower = ref[0];
11554 var upper = ref[1];
11555 return Boolean(H3.h3IsResClassIII(lower, upper));
11556}
11557/**
11558 * Get the number of the base cell for a given H3 index
11559 * @static
11560 * @param {H3Index} h3Index H3 index to get the base cell for
11561 * @return {Number} Index of the base cell (0-121)
11562 */
11563
11564function h3GetBaseCell(h3Index) {
11565 var ref = h3IndexToSplitLong(h3Index);
11566 var lower = ref[0];
11567 var upper = ref[1];
11568 return H3.h3GetBaseCell(lower, upper);
11569}
11570/**
11571 * Get the indices of all icosahedron faces intersected by a given H3 index
11572 * @static
11573 * @param {H3Index} h3Index H3 index to get faces for
11574 * @return {Number[]} Indices (0-19) of all intersected faces
11575 */
11576
11577function h3GetFaces(h3Index) {
11578 var ref = h3IndexToSplitLong(h3Index);
11579 var lower = ref[0];
11580 var upper = ref[1];
11581 var count = H3.maxFaceCount(lower, upper);
11582
11583 var faces = libh3._malloc(SZ_INT * count);
11584
11585 H3.h3GetFaces(lower, upper, faces);
11586 var out = readArrayOfPositiveIntegers(faces, count);
11587
11588 libh3._free(faces);
11589
11590 return out;
11591}
11592/**
11593 * Returns the resolution of an H3 index
11594 * @static
11595 * @param {H3Index} h3Index H3 index to get resolution
11596 * @return {Number} The number (0-15) resolution, or -1 if invalid
11597 */
11598
11599function h3GetResolution(h3Index) {
11600 if (typeof h3Index !== 'string') {
11601 return -1;
11602 }
11603
11604 return parseInt(h3Index.charAt(1), BASE_16);
11605}
11606/**
11607 * Get the hexagon containing a lat,lon point
11608 * @static
11609 * @param {Number} lat Latitude of point
11610 * @param {Number} lng Longtitude of point
11611 * @param {Number} res Resolution of hexagons to return
11612 * @return {H3Index} H3 index
11613 */
11614
11615function geoToH3(lat, lng, res) {
11616 var latlng = libh3._malloc(SZ_GEOCOORD); // Slightly more efficient way to set the memory
11617
11618
11619 libh3.HEAPF64.set([lat, lng].map(degsToRads), latlng / SZ_DBL); // Read value as a split long
11620
11621 var h3Index = readH3Index(H3.geoToH3(latlng, res));
11622
11623 libh3._free(latlng);
11624
11625 return h3Index;
11626}
11627/**
11628 * Get the lat,lon center of a given hexagon
11629 * @static
11630 * @param {H3Index} h3Index H3 index
11631 * @return {Number[]} Point as a [lat, lng] pair
11632 */
11633
11634function h3ToGeo(h3Index) {
11635 var latlng = libh3._malloc(SZ_GEOCOORD);
11636
11637 var ref = h3IndexToSplitLong(h3Index);
11638 var lower = ref[0];
11639 var upper = ref[1];
11640 H3.h3ToGeo(lower, upper, latlng);
11641 var out = readGeoCoord(latlng);
11642
11643 libh3._free(latlng);
11644
11645 return out;
11646}
11647/**
11648 * Get the vertices of a given hexagon (or pentagon), as an array of [lat, lng]
11649 * points. For pentagons and hexagons on the edge of an icosahedron face, this
11650 * function may return up to 10 vertices.
11651 * @static
11652 * @param {H3Index} h3Index H3 index
11653 * @param {Boolean} formatAsGeoJson Whether to provide GeoJSON output: [lng, lat], closed loops
11654 * @return {Number[][]} Array of [lat, lng] pairs
11655 */
11656
11657function h3ToGeoBoundary(h3Index, formatAsGeoJson) {
11658 var geoBoundary = libh3._malloc(SZ_GEOBOUNDARY);
11659
11660 var ref = h3IndexToSplitLong(h3Index);
11661 var lower = ref[0];
11662 var upper = ref[1];
11663 H3.h3ToGeoBoundary(lower, upper, geoBoundary);
11664 var out = readGeoBoundary(geoBoundary, formatAsGeoJson, formatAsGeoJson);
11665
11666 libh3._free(geoBoundary);
11667
11668 return out;
11669} // ----------------------------------------------------------------------------
11670// Public API functions: Algorithms
11671
11672/**
11673 * Get the parent of the given hexagon at a particular resolution
11674 * @static
11675 * @param {H3Index} h3Index H3 index to get parent for
11676 * @param {Number} res Resolution of hexagon to return
11677 * @return {H3Index} H3 index of parent, or null for invalid input
11678 */
11679
11680function h3ToParent(h3Index, res) {
11681 var ref = h3IndexToSplitLong(h3Index);
11682 var lower = ref[0];
11683 var upper = ref[1];
11684 return readH3Index(H3.h3ToParent(lower, upper, res));
11685}
11686/**
11687 * Get the children/descendents of the given hexagon at a particular resolution
11688 * @static
11689 * @param {H3Index} h3Index H3 index to get children for
11690 * @param {Number} res Resolution of hexagons to return
11691 * @return {H3Index[]} H3 indexes of children, or empty array for invalid input
11692 */
11693
11694function h3ToChildren(h3Index, res) {
11695 // Bad input in this case can potentially result in high computation volume
11696 // using the current C algorithm. Validate and return an empty array on failure.
11697 if (!h3IsValid(h3Index)) {
11698 return [];
11699 }
11700
11701 var ref = h3IndexToSplitLong(h3Index);
11702 var lower = ref[0];
11703 var upper = ref[1];
11704 var maxCount = H3.maxH3ToChildrenSize(lower, upper, res);
11705
11706 var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);
11707
11708 H3.h3ToChildren(lower, upper, res, hexagons);
11709 var out = readArrayOfHexagons(hexagons, maxCount);
11710
11711 libh3._free(hexagons);
11712
11713 return out;
11714}
11715/**
11716 * Get the center child of the given hexagon at a particular resolution
11717 * @static
11718 * @param {H3Index} h3Index H3 index to get center child for
11719 * @param {Number} res Resolution of hexagon to return
11720 * @return {H3Index} H3 index of child, or null for invalid input
11721 */
11722
11723function h3ToCenterChild(h3Index, res) {
11724 var ref = h3IndexToSplitLong(h3Index);
11725 var lower = ref[0];
11726 var upper = ref[1];
11727 return readH3Index(H3.h3ToCenterChild(lower, upper, res));
11728}
11729/**
11730 * Get all hexagons in a k-ring around a given center. The order of the hexagons is undefined.
11731 * @static
11732 * @param {H3Index} h3Index H3 index of center hexagon
11733 * @param {Number} ringSize Radius of k-ring
11734 * @return {H3Index[]} H3 indexes for all hexagons in ring
11735 */
11736
11737function kRing(h3Index, ringSize) {
11738 var ref = h3IndexToSplitLong(h3Index);
11739 var lower = ref[0];
11740 var upper = ref[1];
11741 var maxCount = H3.maxKringSize(ringSize);
11742
11743 var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);
11744
11745 H3.kRing(lower, upper, ringSize, hexagons);
11746 var out = readArrayOfHexagons(hexagons, maxCount);
11747
11748 libh3._free(hexagons);
11749
11750 return out;
11751}
11752/**
11753 * Get all hexagons in a k-ring around a given center, in an array of arrays
11754 * ordered by distance from the origin. The order of the hexagons within each ring is undefined.
11755 * @static
11756 * @param {H3Index} h3Index H3 index of center hexagon
11757 * @param {Number} ringSize Radius of k-ring
11758 * @return {H3Index[][]} Array of arrays with H3 indexes for all hexagons each ring
11759 */
11760
11761function kRingDistances(h3Index, ringSize) {
11762 var ref = h3IndexToSplitLong(h3Index);
11763 var lower = ref[0];
11764 var upper = ref[1];
11765 var maxCount = H3.maxKringSize(ringSize);
11766
11767 var kRings = libh3._calloc(maxCount, SZ_H3INDEX);
11768
11769 var distances = libh3._calloc(maxCount, SZ_INT);
11770
11771 H3.kRingDistances(lower, upper, ringSize, kRings, distances); // Create an array of empty arrays to hold the output
11772
11773 var out = [];
11774
11775 for (var i = 0; i < ringSize + 1; i++) {
11776 out.push([]);
11777 } // Read the array of hexagons, putting them into the appropriate rings
11778
11779
11780 for (var i$1 = 0; i$1 < maxCount * 2; i$1 += 2) {
11781 var hexLower = libh3.getValue(kRings + SZ_INT * i$1, 'i32');
11782 var hexUpper = libh3.getValue(kRings + SZ_INT * (i$1 + 1), 'i32');
11783 var index = libh3.getValue(distances + SZ_INT * (i$1 / 2), 'i32');
11784
11785 if (hexLower !== 0 || hexUpper !== 0) {
11786 out[index].push(splitLongToh3Index(hexLower, hexUpper));
11787 }
11788 }
11789
11790 libh3._free(kRings);
11791
11792 libh3._free(distances);
11793
11794 return out;
11795}
11796/**
11797 * Get all hexagons in a hollow hexagonal ring centered at origin with sides of a given length.
11798 * Unlike kRing, this function will throw an error if there is a pentagon anywhere in the ring.
11799 * @static
11800 * @param {H3Index} h3Index H3 index of center hexagon
11801 * @param {Number} ringSize Radius of ring
11802 * @return {H3Index[]} H3 indexes for all hexagons in ring
11803 * @throws {Error} If the algorithm could not calculate the ring
11804 */
11805
11806function hexRing(h3Index, ringSize) {
11807 var maxCount = ringSize === 0 ? 1 : 6 * ringSize;
11808
11809 var hexagons = libh3._calloc(maxCount, SZ_H3INDEX);
11810
11811 var retVal = H3.hexRing.apply(H3, h3IndexToSplitLong(h3Index).concat( [ringSize], [hexagons] ));
11812
11813 if (retVal !== 0) {
11814 libh3._free(hexagons);
11815
11816 throw new Error('Failed to get hexRing (encountered a pentagon?)');
11817 }
11818
11819 var out = readArrayOfHexagons(hexagons, maxCount);
11820
11821 libh3._free(hexagons);
11822
11823 return out;
11824}
11825/**
11826 * Get all hexagons with centers contained in a given polygon. The polygon
11827 * is specified with GeoJson semantics as an array of loops. Each loop is
11828 * an array of [lat, lng] pairs (or [lng, lat] if isGeoJson is specified).
11829 * The first loop is the perimeter of the polygon, and subsequent loops are
11830 * expected to be holes.
11831 * @static
11832 * @param {Number[][] | Number[][][]} coordinates
11833 * Array of loops, or a single loop
11834 * @param {Number} res Resolution of hexagons to return
11835 * @param {Boolean} isGeoJson Whether to expect GeoJson-style [lng, lat]
11836 * pairs instead of [lat, lng]
11837 * @return {H3Index[]} H3 indexes for all hexagons in polygon
11838 */
11839
11840function polyfill(coordinates, res, isGeoJson) {
11841 validateRes(res);
11842 isGeoJson = Boolean(isGeoJson); // Guard against empty input
11843
11844 if (coordinates.length === 0 || coordinates[0].length === 0) {
11845 return [];
11846 } // Wrap to expected format if a single loop is provided
11847
11848
11849 if (typeof coordinates[0][0] === 'number') {
11850 coordinates = [coordinates];
11851 }
11852
11853 var geoPolygon = coordinatesToGeoPolygon(coordinates, isGeoJson);
11854 var arrayLen = H3.maxPolyfillSize(geoPolygon, res);
11855
11856 var hexagons = libh3._calloc(arrayLen, SZ_H3INDEX);
11857
11858 H3.polyfill(geoPolygon, res, hexagons);
11859 var out = readArrayOfHexagons(hexagons, arrayLen);
11860
11861 libh3._free(hexagons);
11862
11863 destroyGeoPolygon(geoPolygon);
11864 return out;
11865}
11866/**
11867 * Get the outlines of a set of H3 hexagons, returned in GeoJSON MultiPolygon
11868 * format (an array of polygons, each with an array of loops, each an array of
11869 * coordinates). Coordinates are returned as [lat, lng] pairs unless GeoJSON
11870 * is requested.
11871 * @static
11872 * @param {H3Index[]} h3Indexes H3 indexes to get outlines for
11873 * @param {Boolean} formatAsGeoJson Whether to provide GeoJSON output:
11874 * [lng, lat], closed loops
11875 * @return {Number[][][][]} MultiPolygon-style output.
11876 */
11877
11878function h3SetToMultiPolygon(h3Indexes, formatAsGeoJson) {
11879 // Early exit on empty input
11880 if (!h3Indexes || !h3Indexes.length) {
11881 return [];
11882 } // Set up input set
11883
11884
11885 var indexCount = h3Indexes.length;
11886
11887 var set = libh3._calloc(indexCount, SZ_H3INDEX);
11888
11889 storeArrayOfHexagons(set, h3Indexes); // Allocate memory for output linked polygon
11890
11891 var polygon = libh3._calloc(SZ_LINKED_GEOPOLYGON); // Store a reference to the first polygon - that's the one we need for
11892 // memory deallocation
11893
11894
11895 var originalPolygon = polygon;
11896 H3.h3SetToLinkedGeo(set, indexCount, polygon);
11897 var multiPolygon = readMultiPolygon(polygon, formatAsGeoJson); // Clean up
11898
11899 H3.destroyLinkedPolygon(originalPolygon);
11900
11901 libh3._free(originalPolygon);
11902
11903 libh3._free(set);
11904
11905 return multiPolygon;
11906}
11907/**
11908 * Compact a set of hexagons of the same resolution into a set of hexagons across
11909 * multiple levels that represents the same area.
11910 * @static
11911 * @param {H3Index[]} h3Set H3 indexes to compact
11912 * @return {H3Index[]} Compacted H3 indexes
11913 * @throws {Error} If the input is invalid (e.g. duplicate hexagons)
11914 */
11915
11916function compact(h3Set) {
11917 if (!h3Set || !h3Set.length) {
11918 return [];
11919 } // Set up input set
11920
11921
11922 var count = h3Set.length;
11923
11924 var set = libh3._calloc(count, SZ_H3INDEX);
11925
11926 storeArrayOfHexagons(set, h3Set); // Allocate memory for compacted hexagons, worst-case is no compaction
11927
11928 var compactedSet = libh3._calloc(count, SZ_H3INDEX);
11929
11930 var retVal = H3.compact(set, compactedSet, count);
11931
11932 if (retVal !== 0) {
11933 libh3._free(set);
11934
11935 libh3._free(compactedSet);
11936
11937 throw new Error('Failed to compact, malformed input data (duplicate hexagons?)');
11938 }
11939
11940 var out = readArrayOfHexagons(compactedSet, count);
11941
11942 libh3._free(set);
11943
11944 libh3._free(compactedSet);
11945
11946 return out;
11947}
11948/**
11949 * Uncompact a compacted set of hexagons to hexagons of the same resolution
11950 * @static
11951 * @param {H3Index[]} compactedSet H3 indexes to uncompact
11952 * @param {Number} res The resolution to uncompact to
11953 * @return {H3Index[]} The uncompacted H3 indexes
11954 * @throws {Error} If the input is invalid (e.g. invalid resolution)
11955 */
11956
11957function uncompact(compactedSet, res) {
11958 validateRes(res);
11959
11960 if (!compactedSet || !compactedSet.length) {
11961 return [];
11962 } // Set up input set
11963
11964
11965 var count = compactedSet.length;
11966
11967 var set = libh3._calloc(count, SZ_H3INDEX);
11968
11969 storeArrayOfHexagons(set, compactedSet); // Estimate how many hexagons we need (always overestimates if in error)
11970
11971 var maxUncompactedNum = H3.maxUncompactSize(set, count, res); // Allocate memory for uncompacted hexagons
11972
11973 var uncompactedSet = libh3._calloc(maxUncompactedNum, SZ_H3INDEX);
11974
11975 var retVal = H3.uncompact(set, count, uncompactedSet, maxUncompactedNum, res);
11976
11977 if (retVal !== 0) {
11978 libh3._free(set);
11979
11980 libh3._free(uncompactedSet);
11981
11982 throw new Error('Failed to uncompact (bad resolution?)');
11983 }
11984
11985 var out = readArrayOfHexagons(uncompactedSet, maxUncompactedNum);
11986
11987 libh3._free(set);
11988
11989 libh3._free(uncompactedSet);
11990
11991 return out;
11992} // ----------------------------------------------------------------------------
11993// Public API functions: Unidirectional edges
11994
11995/**
11996 * Whether two H3 indexes are neighbors (share an edge)
11997 * @static
11998 * @param {H3Index} origin Origin hexagon index
11999 * @param {H3Index} destination Destination hexagon index
12000 * @return {Boolean} Whether the hexagons share an edge
12001 */
12002
12003function h3IndexesAreNeighbors(origin, destination) {
12004 var ref = h3IndexToSplitLong(origin);
12005 var oLower = ref[0];
12006 var oUpper = ref[1];
12007 var ref$1 = h3IndexToSplitLong(destination);
12008 var dLower = ref$1[0];
12009 var dUpper = ref$1[1];
12010 return Boolean(H3.h3IndexesAreNeighbors(oLower, oUpper, dLower, dUpper));
12011}
12012/**
12013 * Get an H3 index representing a unidirectional edge for a given origin and destination
12014 * @static
12015 * @param {H3Index} origin Origin hexagon index
12016 * @param {H3Index} destination Destination hexagon index
12017 * @return {H3Index} H3 index of the edge, or null if no edge is shared
12018 */
12019
12020function getH3UnidirectionalEdge(origin, destination) {
12021 var ref = h3IndexToSplitLong(origin);
12022 var oLower = ref[0];
12023 var oUpper = ref[1];
12024 var ref$1 = h3IndexToSplitLong(destination);
12025 var dLower = ref$1[0];
12026 var dUpper = ref$1[1];
12027 return readH3Index(H3.getH3UnidirectionalEdge(oLower, oUpper, dLower, dUpper));
12028}
12029/**
12030 * Get the origin hexagon from an H3 index representing a unidirectional edge
12031 * @static
12032 * @param {H3Index} edgeIndex H3 index of the edge
12033 * @return {H3Index} H3 index of the edge origin
12034 */
12035
12036function getOriginH3IndexFromUnidirectionalEdge(edgeIndex) {
12037 var ref = h3IndexToSplitLong(edgeIndex);
12038 var lower = ref[0];
12039 var upper = ref[1];
12040 return readH3Index(H3.getOriginH3IndexFromUnidirectionalEdge(lower, upper));
12041}
12042/**
12043 * Get the destination hexagon from an H3 index representing a unidirectional edge
12044 * @static
12045 * @param {H3Index} edgeIndex H3 index of the edge
12046 * @return {H3Index} H3 index of the edge destination
12047 */
12048
12049function getDestinationH3IndexFromUnidirectionalEdge(edgeIndex) {
12050 var ref = h3IndexToSplitLong(edgeIndex);
12051 var lower = ref[0];
12052 var upper = ref[1];
12053 return readH3Index(H3.getDestinationH3IndexFromUnidirectionalEdge(lower, upper));
12054}
12055/**
12056 * Whether the input is a valid unidirectional edge
12057 * @static
12058 * @param {H3Index} edgeIndex H3 index of the edge
12059 * @return {Boolean} Whether the index is valid
12060 */
12061
12062function h3UnidirectionalEdgeIsValid(edgeIndex) {
12063 var ref = h3IndexToSplitLong(edgeIndex);
12064 var lower = ref[0];
12065 var upper = ref[1];
12066 return Boolean(H3.h3UnidirectionalEdgeIsValid(lower, upper));
12067}
12068/**
12069 * Get the [origin, destination] pair represented by a unidirectional edge
12070 * @static
12071 * @param {H3Index} edgeIndex H3 index of the edge
12072 * @return {H3Index[]} [origin, destination] pair as H3 indexes
12073 */
12074
12075function getH3IndexesFromUnidirectionalEdge(edgeIndex) {
12076 var ref = h3IndexToSplitLong(edgeIndex);
12077 var lower = ref[0];
12078 var upper = ref[1];
12079 var count = 2;
12080
12081 var hexagons = libh3._calloc(count, SZ_H3INDEX);
12082
12083 H3.getH3IndexesFromUnidirectionalEdge(lower, upper, hexagons);
12084 var out = readArrayOfHexagons(hexagons, count);
12085
12086 libh3._free(hexagons);
12087
12088 return out;
12089}
12090/**
12091 * Get all of the unidirectional edges with the given H3 index as the origin (i.e. an edge to
12092 * every neighbor)
12093 * @static
12094 * @param {H3Index} h3Index H3 index of the origin hexagon
12095 * @return {H3Index[]} List of unidirectional edges
12096 */
12097
12098function getH3UnidirectionalEdgesFromHexagon(h3Index) {
12099 var ref = h3IndexToSplitLong(h3Index);
12100 var lower = ref[0];
12101 var upper = ref[1];
12102 var count = 6;
12103
12104 var edges = libh3._calloc(count, SZ_H3INDEX);
12105
12106 H3.getH3UnidirectionalEdgesFromHexagon(lower, upper, edges);
12107 var out = readArrayOfHexagons(edges, count);
12108
12109 libh3._free(edges);
12110
12111 return out;
12112}
12113/**
12114 * Get the vertices of a given edge as an array of [lat, lng] points. Note that for edges that
12115 * cross the edge of an icosahedron face, this may return 3 coordinates.
12116 * @static
12117 * @param {H3Index} edgeIndex H3 index of the edge
12118 * @param {Boolean} formatAsGeoJson Whether to provide GeoJSON output: [lng, lat]
12119 * @return {Number[][]} Array of geo coordinate pairs
12120 */
12121
12122function getH3UnidirectionalEdgeBoundary(edgeIndex, formatAsGeoJson) {
12123 var geoBoundary = libh3._malloc(SZ_GEOBOUNDARY);
12124
12125 var ref = h3IndexToSplitLong(edgeIndex);
12126 var lower = ref[0];
12127 var upper = ref[1];
12128 H3.getH3UnidirectionalEdgeBoundary(lower, upper, geoBoundary);
12129 var out = readGeoBoundary(geoBoundary, formatAsGeoJson);
12130
12131 libh3._free(geoBoundary);
12132
12133 return out;
12134}
12135/**
12136 * Get the grid distance between two hex indexes. This function may fail
12137 * to find the distance between two indexes if they are very far apart or
12138 * on opposite sides of a pentagon.
12139 * @static
12140 * @param {H3Index} origin Origin hexagon index
12141 * @param {H3Index} destination Destination hexagon index
12142 * @return {Number} Distance between hexagons, or a negative
12143 * number if the distance could not be computed
12144 */
12145
12146function h3Distance(origin, destination) {
12147 var ref = h3IndexToSplitLong(origin);
12148 var oLower = ref[0];
12149 var oUpper = ref[1];
12150 var ref$1 = h3IndexToSplitLong(destination);
12151 var dLower = ref$1[0];
12152 var dUpper = ref$1[1];
12153 return H3.h3Distance(oLower, oUpper, dLower, dUpper);
12154}
12155/**
12156 * Given two H3 indexes, return the line of indexes between them (inclusive).
12157 *
12158 * This function may fail to find the line between two indexes, for
12159 * example if they are very far apart. It may also fail when finding
12160 * distances for indexes on opposite sides of a pentagon.
12161 *
12162 * Notes:
12163 *
12164 * - The specific output of this function should not be considered stable
12165 * across library versions. The only guarantees the library provides are
12166 * that the line length will be `h3Distance(start, end) + 1` and that
12167 * every index in the line will be a neighbor of the preceding index.
12168 * - Lines are drawn in grid space, and may not correspond exactly to either
12169 * Cartesian lines or great arcs.
12170 *
12171 * @static
12172 * @param {H3Index} origin Origin hexagon index
12173 * @param {H3Index} destination Destination hexagon index
12174 * @return {H3Index[]} H3 indexes connecting origin and destination
12175 * @throws {Error} If the line cannot be calculated
12176 */
12177
12178function h3Line(origin, destination) {
12179 var ref = h3IndexToSplitLong(origin);
12180 var oLower = ref[0];
12181 var oUpper = ref[1];
12182 var ref$1 = h3IndexToSplitLong(destination);
12183 var dLower = ref$1[0];
12184 var dUpper = ref$1[1];
12185 var count = H3.h3LineSize(oLower, oUpper, dLower, dUpper);
12186
12187 if (count < 0) {
12188 // We can't get the specific error code here - may be any of
12189 // the errors possible in experimentalH3ToLocalIj
12190 throw new Error('Line cannot be calculated');
12191 }
12192
12193 var hexagons = libh3._calloc(count, SZ_H3INDEX);
12194
12195 H3.h3Line(oLower, oUpper, dLower, dUpper, hexagons);
12196 var out = readArrayOfHexagons(hexagons, count);
12197
12198 libh3._free(hexagons);
12199
12200 return out;
12201}
12202/**
12203 * Produces IJ coordinates for an H3 index anchored by an origin.
12204 *
12205 * - The coordinate space used by this function may have deleted
12206 * regions or warping due to pentagonal distortion.
12207 * - Coordinates are only comparable if they come from the same
12208 * origin index.
12209 * - Failure may occur if the index is too far away from the origin
12210 * or if the index is on the other side of a pentagon.
12211 * - This function is experimental, and its output is not guaranteed
12212 * to be compatible across different versions of H3.
12213 * @static
12214 * @param {H3Index} origin Origin H3 index
12215 * @param {H3Index} destination H3 index for which to find relative coordinates
12216 * @return {Object} Coordinates as an `{i, j}` pair
12217 * @throws {Error} If the IJ coordinates cannot be calculated
12218 */
12219
12220function experimentalH3ToLocalIj(origin, destination) {
12221 var ij = libh3._malloc(SZ_COORDIJ);
12222
12223 var retVal = H3.experimentalH3ToLocalIj.apply(H3, h3IndexToSplitLong(origin).concat( h3IndexToSplitLong(destination), [ij] ));
12224 var coords = readCoordIJ(ij);
12225
12226 libh3._free(ij); // Return the pair, or throw if an error code was returned.
12227 // Switch statement and error codes cribbed from h3-java's implementation.
12228
12229
12230 switch (retVal) {
12231 case 0:
12232 return coords;
12233
12234 case 1:
12235 throw new Error('Incompatible origin and index.');
12236
12237 case 2:
12238 default:
12239 throw new Error('Local IJ coordinates undefined for this origin and index pair. ' + 'The index may be too far from the origin.');
12240
12241 case 3:
12242 case 4:
12243 case 5:
12244 throw new Error('Encountered possible pentagon distortion');
12245 }
12246}
12247/**
12248 * Produces an H3 index for IJ coordinates anchored by an origin.
12249 *
12250 * - The coordinate space used by this function may have deleted
12251 * regions or warping due to pentagonal distortion.
12252 * - Coordinates are only comparable if they come from the same
12253 * origin index.
12254 * - Failure may occur if the index is too far away from the origin
12255 * or if the index is on the other side of a pentagon.
12256 * - This function is experimental, and its output is not guaranteed
12257 * to be compatible across different versions of H3.
12258 * @static
12259 * @param {H3Index} origin Origin H3 index
12260 * @param {Object} coords Coordinates as an `{i, j}` pair
12261 * @return {H3Index} H3 index at the relative coordinates
12262 * @throws {Error} If the H3 index cannot be calculated
12263 */
12264
12265function experimentalLocalIjToH3(origin, coords) {
12266 // Validate input coords
12267 if (!coords || typeof coords.i !== 'number' || typeof coords.j !== 'number') {
12268 throw new Error('Coordinates must be provided as an {i, j} object');
12269 } // Allocate memory for the CoordIJ struct and an H3 index to hold the return value
12270
12271
12272 var ij = libh3._malloc(SZ_COORDIJ);
12273
12274 var out = libh3._malloc(SZ_H3INDEX);
12275
12276 storeCoordIJ(ij, coords);
12277 var retVal = H3.experimentalLocalIjToH3.apply(H3, h3IndexToSplitLong(origin).concat( [ij], [out] ));
12278 var h3Index = readH3IndexFromPointer(out);
12279
12280 libh3._free(ij);
12281
12282 libh3._free(out);
12283
12284 if (retVal !== 0) {
12285 throw new Error('Index not defined for this origin and IJ coordinates pair. ' + 'IJ coordinates may be too far from origin, or ' + 'a pentagon distortion was encountered.');
12286 }
12287
12288 return h3Index;
12289} // ----------------------------------------------------------------------------
12290// Public informational utilities
12291
12292/**
12293 * Average hexagon area at a given resolution
12294 * @static
12295 * @param {Number} res Hexagon resolution
12296 * @param {String} unit Area unit (either UNITS.m2 or UNITS.km2)
12297 * @return {Number} Average area
12298 * @throws {Error} If the unit is invalid
12299 */
12300
12301function hexArea(res, unit) {
12302 validateRes(res);
12303
12304 switch (unit) {
12305 case UNITS.m2:
12306 return H3.hexAreaM2(res);
12307
12308 case UNITS.km2:
12309 return H3.hexAreaKm2(res);
12310
12311 default:
12312 throw new Error(("Unknown unit: " + unit));
12313 }
12314}
12315/**
12316 * Average hexagon edge length at a given resolution
12317 * @static
12318 * @param {Number} res Hexagon resolution
12319 * @param {String} unit Area unit (either UNITS.m or UNITS.km)
12320 * @return {Number} Average edge length
12321 * @throws {Error} If the unit is invalid
12322 */
12323
12324function edgeLength(res, unit) {
12325 validateRes(res);
12326
12327 switch (unit) {
12328 case UNITS.m:
12329 return H3.edgeLengthM(res);
12330
12331 case UNITS.km:
12332 return H3.edgeLengthKm(res);
12333
12334 default:
12335 throw new Error(("Unknown unit: " + unit));
12336 }
12337}
12338/**
12339 * The total count of hexagons in the world at a given resolution. Note that above
12340 * resolution 8 the exact count cannot be represented in a JavaScript 32-bit number,
12341 * so consumers should use caution when applying further operations to the output.
12342 * @static
12343 * @param {Number} res Hexagon resolution
12344 * @return {Number} Count
12345 */
12346
12347function numHexagons(res) {
12348 validateRes(res); // Get number as a long value
12349
12350 var ref = readLong(H3.numHexagons(res));
12351 var lower = ref[0];
12352 var upper = ref[1]; // If we're using <= 32 bits we can use normal JS numbers
12353
12354 if (!upper) {
12355 return lower;
12356 } // Above 32 bit, make a JS number that's correct in order of magnitude
12357
12358
12359 return upper * Math.pow(2, 32) + lower;
12360}
12361/**
12362 * Get all H3 indexes at resolution 0. As every index at every resolution > 0 is
12363 * the descendant of a res 0 index, this can be used with h3ToChildren to iterate
12364 * over H3 indexes at any resolution.
12365 * @static
12366 * @return {H3Index[]} All H3 indexes at res 0
12367 */
12368
12369function getRes0Indexes() {
12370 var count = H3.res0IndexCount();
12371
12372 var hexagons = libh3._malloc(SZ_H3INDEX * count);
12373
12374 H3.getRes0Indexes(hexagons);
12375 var out = readArrayOfHexagons(hexagons, count);
12376
12377 libh3._free(hexagons);
12378
12379 return out;
12380}
12381/**
12382 * Get the twelve pentagon indexes at a given resolution.
12383 * @static
12384 * @param {Number} res Hexagon resolution
12385 * @return {H3Index[]} All H3 pentagon indexes at res
12386 */
12387
12388function getPentagonIndexes(res) {
12389 validateRes(res);
12390 var count = H3.pentagonIndexCount();
12391
12392 var hexagons = libh3._malloc(SZ_H3INDEX * count);
12393
12394 H3.getPentagonIndexes(res, hexagons);
12395 var out = readArrayOfHexagons(hexagons, count);
12396
12397 libh3._free(hexagons);
12398
12399 return out;
12400}
12401/**
12402 * Convert degrees to radians
12403 * @static
12404 * @param {Number} deg Value in degrees
12405 * @return {Number} Value in radians
12406 */
12407
12408function degsToRads(deg) {
12409 return deg * Math.PI / 180;
12410}
12411/**
12412 * Convert radians to degrees
12413 * @static
12414 * @param {Number} rad Value in radians
12415 * @return {Number} Value in degrees
12416 */
12417
12418function radsToDegs(rad) {
12419 return rad * 180 / Math.PI;
12420}
12421
12422exports.UNITS = UNITS;
12423exports.h3IsValid = h3IsValid;
12424exports.h3IsPentagon = h3IsPentagon;
12425exports.h3IsResClassIII = h3IsResClassIII;
12426exports.h3GetBaseCell = h3GetBaseCell;
12427exports.h3GetFaces = h3GetFaces;
12428exports.h3GetResolution = h3GetResolution;
12429exports.geoToH3 = geoToH3;
12430exports.h3ToGeo = h3ToGeo;
12431exports.h3ToGeoBoundary = h3ToGeoBoundary;
12432exports.h3ToParent = h3ToParent;
12433exports.h3ToChildren = h3ToChildren;
12434exports.h3ToCenterChild = h3ToCenterChild;
12435exports.kRing = kRing;
12436exports.kRingDistances = kRingDistances;
12437exports.hexRing = hexRing;
12438exports.polyfill = polyfill;
12439exports.h3SetToMultiPolygon = h3SetToMultiPolygon;
12440exports.compact = compact;
12441exports.uncompact = uncompact;
12442exports.h3IndexesAreNeighbors = h3IndexesAreNeighbors;
12443exports.getH3UnidirectionalEdge = getH3UnidirectionalEdge;
12444exports.getOriginH3IndexFromUnidirectionalEdge = getOriginH3IndexFromUnidirectionalEdge;
12445exports.getDestinationH3IndexFromUnidirectionalEdge = getDestinationH3IndexFromUnidirectionalEdge;
12446exports.h3UnidirectionalEdgeIsValid = h3UnidirectionalEdgeIsValid;
12447exports.getH3IndexesFromUnidirectionalEdge = getH3IndexesFromUnidirectionalEdge;
12448exports.getH3UnidirectionalEdgesFromHexagon = getH3UnidirectionalEdgesFromHexagon;
12449exports.getH3UnidirectionalEdgeBoundary = getH3UnidirectionalEdgeBoundary;
12450exports.h3Distance = h3Distance;
12451exports.h3Line = h3Line;
12452exports.experimentalH3ToLocalIj = experimentalH3ToLocalIj;
12453exports.experimentalLocalIjToH3 = experimentalLocalIjToH3;
12454exports.hexArea = hexArea;
12455exports.edgeLength = edgeLength;
12456exports.numHexagons = numHexagons;
12457exports.getRes0Indexes = getRes0Indexes;
12458exports.getPentagonIndexes = getPentagonIndexes;
12459exports.degsToRads = degsToRads;
12460exports.radsToDegs = radsToDegs;
12461//# sourceMappingURL=h3-js.js.map