Showing preview only (2,692K chars total). Download the full file or copy to clipboard to get everything.
Repository: 0xFloyd/Portfolio_2020
Branch: master
Commit: 900a0ea78415
Files: 22
Total size: 2.6 MB
Directory structure:
gitextract_3aeii0b2/
├── .gitignore
├── .vscode/
│ └── launch.json
├── README.md
├── index.html
├── package.json
├── server.js
├── src/
│ ├── WebGL.js
│ ├── app.js
│ ├── builds/
│ │ ├── ammo.js
│ │ ├── ammo.wasm.js
│ │ └── ammo.wasm.wasm
│ ├── jsm/
│ │ ├── Roboto_Regular.json
│ │ ├── fragment.glsl
│ │ └── vertex.glsl
│ └── resources/
│ ├── eventHandlers.js
│ ├── preload.js
│ ├── surfaces.js
│ ├── textures.js
│ ├── utils.js
│ └── world.js
├── style.css
└── webpack.config.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
node_modules
build
README2.md
================================================
FILE: .vscode/launch.json
================================================
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "pwa-chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}"
}
]
}
================================================
FILE: README.md
================================================
# Portfolio 2020
As a quarantine project, I wanted to learn 3D web development, and decided to revamp my portfolio into an interactive 3D world built using [Three.js](https://github.com/mrdoob/three.js) and [Ammo.js](https://github.com/kripken/ammo.js), a port of the [Bullet physics engine](https://pybullet.org/wordpress/) to JavaScript. I had an absolute blast making this!
Try it out! [https://www.0xfloyd.com/](https://www.0xfloyd.com/)
I wrote an article explaining the site [here](https://dev.to/0xfloyd/create-an-interactive-3d-portfolio-website-that-stands-out-to-employers-47gc)

## Motivation
While exploring [Google Experiments](https://experiments.withgoogle.com/) I discovered an amazing world of web rendering. There are so many incredible web projects out there, and I wanted to learn this technology. I was inspired by many awesome projects, but specifically examples from the [official examples/documentation](https://threejs.org/), [Lee Stemkoski](https://home.adelphi.edu/~stemkoski/) and [Three.js Fundamentals](https://threejsfundamentals.org/).
## Features
- Physics engine (Ammo.js) combined with 3D rendered objects (Three.js) for real-time movement, collision detection and interaction
- Desktop and Mobile Responsiveness with both keyboard and touch screen controls
- Raycasting with event listeners for user touch and click interaction
- FPS tracker to monitor frame rate/ rendering performance
- Asset compression with webpack plugin to help with quick site load times
## Technology
- Three.js (3D Graphics)
- Ammo.js (Physics Engine)
- JavaScript
- Node.js
- Express (Node.js framework)
- Webpack (module/ dependency bundler)
- HTML/CSS
- Hosted on Heroku
- Git (version control) / Github for code hosting
## Usage
To use locally, clone the repository, install dependencies, run using webpack's dev server, and navigate to localhost:8080 in your browser:
```javascript
npm i
npm run dev
```
## License
The project is licensed under the MIT License.
================================================
FILE: index.html
================================================
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-174941093-1"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'UA-174941093-1');
</script>
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-P437XK4');</script>
<!-- End Google Tag Manager -->
<link rel="icon" href="favicon.ico" />
<link rel="alternate" type="application/json+oembed" href="%PUBLIC_URL%/website-screenshot.png"/>
<meta property="og:title" content="Portfolio 2020" />
<meta property="og:description" content="Portfolio 2020"/>
<meta property="og:url" content="www.0xfloyd.com" />
<meta name="image" property="og:image" content="https://www.0xfloyd.com/website-screenshot.png"/>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="style.css" />
<title>Portfolio 2020</title>
</head>
<body id="document-body">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-P437XK4"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->
<div id="WEBGLcontainer"></div>
<div id="joystick-wrapper"></div>
<div class="fadeOutDiv preload-overlay" id="preload-overlay">
<div class="start-page-content-div fadeOutDiv">
<h1 class="postload start-page-text interactive-site-text fadeOutDiv">This is an interactive 3D site built with Three.js!</h1>
<h1 id="appDirections" class="start-page-text joystick-directions-text postload fadeOutDiv">Move the ball around with the arrow keys on the keyboard.</h1>
<button id="start-button" class="postload fadeOutDiv">EXPLORE</button>
</div>
<div class="trinity-rings-spinner preload">
<div class="circle preload"></div>
<div class="circle preload"></div>
<div class="circle preload"></div>
</div>
<div class="loading-text-div preload">Loading<span class="loader__dot">.</span><span class="loader__dot">.</span><span class="loader__dot">.</span></div>
<div id="tooltip"></div>
<script type="x-shader/x-vertex" id="vertexShader">
varying vec3 vWorldPosition;
void main() {
vec4 worldPosition = modelMatrix * vec4( position, 1.0 );
vWorldPosition = worldPosition.xyz;
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
}
</script>
<script type="x-shader/x-fragment" id="fragmentShader">
uniform vec3 topColor;
uniform vec3 bottomColor;
uniform float offset;
uniform float exponent;
varying vec3 vWorldPosition;
void main() {
float h = normalize( vWorldPosition + offset ).y;
gl_FragColor = vec4( mix( bottomColor, topColor, max( pow( max( h, 0.0 ), exponent ), 0.0 ) ), 1.0 );
}
</script>
<script src="build/app.bundle.js"></script>
</body>
</html>
================================================
FILE: package.json
================================================
{
"name": "portfolio_2020",
"version": "1.0.0",
"description": "webpack starter",
"main": "app.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"dev": "webpack-dev-server --output-public-path=/build/ --mode development --progress --open --hot",
"build": "webpack --mode production --progress",
"start": "node server.js",
"heroku-postbuild": "webpack -p"
},
"author": "0xFloyd",
"license": "MIT",
"devDependencies": {
"@babel/core": "^7.4.3",
"@babel/polyfill": "^7.4.3",
"@babel/preset-env": "^7.4.3",
"babel-loader": "^8.0.5",
"compression-webpack-plugin": "^4.0.0",
"webpack": "^4.43.0",
"webpack-cli": "^3.3.11",
"webpack-dev-server": "^3.11.0"
},
"dependencies": {
"@tweenjs/tween.js": "^18.6.0",
"ammo.js": "github:kripken/ammo.js",
"dat.gui": "^0.7.7",
"express": "^4.17.1",
"raw-loader": "^4.0.2",
"stats.js": "^0.17.0",
"three": "^0.117.1"
}
}
================================================
FILE: server.js
================================================
const express = require("express");
const path = require("path");
const port = process.env.PORT || 8080;
const app = express();
app.use(function (req, res, next) {
if (req.header("x-forwarded-proto") !== "https") {
res.redirect("https://" + req.header("host") + req.baseUrl);
} else {
next();
}
});
// the __dirname is the current directory from where the script is running
app.use(express.static(__dirname));
// send the user to index html page inspite of the url
app.get("*", (req, res) => {
res.sendFile(path.resolve(__dirname, "index.html"));
});
app.listen(port);
================================================
FILE: src/WebGL.js
================================================
/**
* @author alteredq / http://alteredqualia.com/
* @author mrdoob / http://mrdoob.com/
*/
var WEBGL = {
isWebGLAvailable: function () {
try {
var canvas = document.createElement( 'canvas' );
return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) );
} catch ( e ) {
return false;
}
},
isWebGL2Available: function () {
try {
var canvas = document.createElement( 'canvas' );
return !! ( window.WebGL2RenderingContext && canvas.getContext( 'webgl2' ) );
} catch ( e ) {
return false;
}
},
getWebGLErrorMessage: function () {
return this.getErrorMessage( 1 );
},
getWebGL2ErrorMessage: function () {
return this.getErrorMessage( 2 );
},
getErrorMessage: function ( version ) {
var names = {
1: 'WebGL',
2: 'WebGL 2'
};
var contexts = {
1: window.WebGLRenderingContext,
2: window.WebGL2RenderingContext
};
var message = 'Your $0 does not seem to support <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#000">$1</a>';
var element = document.createElement( 'div' );
element.id = 'webglmessage';
element.style.fontFamily = 'monospace';
element.style.fontSize = '13px';
element.style.fontWeight = 'normal';
element.style.textAlign = 'center';
element.style.background = '#fff';
element.style.color = '#000';
element.style.padding = '1.5em';
element.style.width = '400px';
element.style.margin = '5em auto 0';
if ( contexts[ version ] ) {
message = message.replace( '$0', 'graphics card' );
} else {
message = message.replace( '$0', 'browser' );
}
message = message.replace( '$1', names[ version ] );
element.innerHTML = message;
return element;
}
};
export { WEBGL };
================================================
FILE: src/app.js
================================================
import * as THREE from 'three';
import { WEBGL } from './WebGL';
import * as Ammo from './builds/ammo';
import { billboardTextures, boxTexture, inputText, URL, stoneTexture, woodTexture } from './resources/textures';
import { setupEventHandlers, moveDirection, isTouchscreenDevice, touchEvent, createJoystick } from './resources/eventHandlers';
import { preloadDivs, preloadOpacity, postloadDivs, startScreenDivs, startButton, noWebGL, fadeOutDivs } from './resources/preload';
import {
clock,
scene,
camera,
renderer,
stats,
manager,
createWorld,
lensFlareObject,
createLensFlare,
particleGroup,
particleAttributes,
particleSystemObject,
glowingParticles,
addParticles,
moveParticles,
generateGalaxy,
galaxyMaterial,
galaxyClock,
galaxyPoints,
} from './resources/world';
import { simpleText, floatingLabel, allSkillsSection, createTextOnPlane } from './resources/surfaces';
import { pickPosition, launchClickPosition, getCanvasRelativePosition, rotateCamera, launchHover } from './resources/utils';
export let cursorHoverObjects = [];
// start Ammo Engine
Ammo().then((Ammo) => {
//Ammo.js variable declaration
let rigidBodies = [],
physicsWorld;
//Ammo Dynamic bodies for ball
let ballObject = null;
const STATE = { DISABLE_DEACTIVATION: 4 };
//default transform object
let tmpTrans = new Ammo.btTransform();
// list of hyperlink objects
var objectsWithLinks = [];
//function to create physics world with Ammo.js
function createPhysicsWorld() {
//algortihms for full (not broadphase) collision detection
let collisionConfiguration = new Ammo.btDefaultCollisionConfiguration(),
dispatcher = new Ammo.btCollisionDispatcher(collisionConfiguration), // dispatch calculations for overlapping pairs/ collisions.
overlappingPairCache = new Ammo.btDbvtBroadphase(), //broadphase collision detection list of all possible colliding pairs
constraintSolver = new Ammo.btSequentialImpulseConstraintSolver(); //causes the objects to interact properly, like gravity, game logic forces, collisions
// see bullet physics docs for info
physicsWorld = new Ammo.btDiscreteDynamicsWorld(dispatcher, overlappingPairCache, constraintSolver, collisionConfiguration);
// add gravity
physicsWorld.setGravity(new Ammo.btVector3(0, -50, 0));
}
//create flat plane
function createGridPlane() {
// block properties
let pos = { x: 0, y: -0.25, z: 0 };
let scale = { x: 175, y: 0.5, z: 175 };
let quat = { x: 0, y: 0, z: 0, w: 1 };
let mass = 0; //mass of zero = infinite mass
//create grid overlay on plane
var grid = new THREE.GridHelper(175, 20, 0xffffff, 0xffffff);
grid.material.opacity = 0.5;
grid.material.transparent = true;
grid.position.y = 0.005;
scene.add(grid);
//Create Threejs Plane
let blockPlane = new THREE.Mesh(
new THREE.BoxBufferGeometry(),
new THREE.MeshPhongMaterial({
color: 0xffffff,
transparent: true,
opacity: 0.25,
})
);
blockPlane.position.set(pos.x, pos.y, pos.z);
blockPlane.scale.set(scale.x, scale.y, scale.z);
blockPlane.receiveShadow = true;
scene.add(blockPlane);
//Ammo.js Physics
let transform = new Ammo.btTransform();
transform.setIdentity(); // sets safe default values
transform.setOrigin(new Ammo.btVector3(pos.x, pos.y, pos.z));
transform.setRotation(new Ammo.btQuaternion(quat.x, quat.y, quat.z, quat.w));
let motionState = new Ammo.btDefaultMotionState(transform);
//setup collision box
let colShape = new Ammo.btBoxShape(new Ammo.btVector3(scale.x * 0.5, scale.y * 0.5, scale.z * 0.5));
colShape.setMargin(0.05);
let localInertia = new Ammo.btVector3(0, 0, 0);
colShape.calculateLocalInertia(mass, localInertia);
// provides information to create a rigid body
let rigidBodyStruct = new Ammo.btRigidBodyConstructionInfo(mass, motionState, colShape, localInertia);
let body = new Ammo.btRigidBody(rigidBodyStruct);
body.setFriction(10);
body.setRollingFriction(10);
// add to world
physicsWorld.addRigidBody(body);
}
// create ball
function createBall() {
let pos = { x: 8.75, y: 0, z: 0 };
let radius = 2;
let quat = { x: 0, y: 0, z: 0, w: 1 };
let mass = 3;
var marble_loader = new THREE.TextureLoader(manager);
var marbleTexture = marble_loader.load('./src/jsm/earth.jpg');
marbleTexture.wrapS = marbleTexture.wrapT = THREE.RepeatWrapping;
marbleTexture.repeat.set(1, 1);
marbleTexture.anisotropy = 1;
marbleTexture.encoding = THREE.sRGBEncoding;
//threeJS Section
let ball = (ballObject = new THREE.Mesh(new THREE.SphereGeometry(radius, 32, 32), new THREE.MeshLambertMaterial({ map: marbleTexture })));
ball.geometry.computeBoundingSphere();
ball.geometry.computeBoundingBox();
ball.position.set(pos.x, pos.y, pos.z);
ball.castShadow = true;
ball.receiveShadow = true;
scene.add(ball);
//Ammojs Section
let transform = new Ammo.btTransform();
transform.setIdentity();
transform.setOrigin(new Ammo.btVector3(pos.x, pos.y, pos.z));
transform.setRotation(new Ammo.btQuaternion(quat.x, quat.y, quat.z, quat.w));
let motionState = new Ammo.btDefaultMotionState(transform);
let colShape = new Ammo.btSphereShape(radius);
colShape.setMargin(0.05);
let localInertia = new Ammo.btVector3(0, 0, 0);
colShape.calculateLocalInertia(mass, localInertia);
let rbInfo = new Ammo.btRigidBodyConstructionInfo(mass, motionState, colShape, localInertia);
let body = new Ammo.btRigidBody(rbInfo);
//body.setFriction(4);
body.setRollingFriction(10);
//set ball friction
//once state is set to disable, dynamic interaction no longer calculated
body.setActivationState(STATE.DISABLE_DEACTIVATION);
physicsWorld.addRigidBody(
body //collisionGroupRedBall, collisionGroupGreenBall | collisionGroupPlane
);
ball.userData.physicsBody = body;
ballObject.userData.physicsBody = body;
rigidBodies.push(ball);
rigidBodies.push(ballObject);
}
//create beach ball Mesh
function createBeachBall() {
let pos = { x: 20, y: 30, z: 0 };
let radius = 2;
let quat = { x: 0, y: 0, z: 0, w: 1 };
let mass = 20;
//import beach ball texture
var texture_loader = new THREE.TextureLoader(manager);
var beachTexture = texture_loader.load('./src/jsm/BeachBallColor.jpg');
beachTexture.wrapS = beachTexture.wrapT = THREE.RepeatWrapping;
beachTexture.repeat.set(1, 1);
beachTexture.anisotropy = 1;
beachTexture.encoding = THREE.sRGBEncoding;
//threeJS Section
let ball = new THREE.Mesh(new THREE.SphereGeometry(radius, 32, 32), new THREE.MeshLambertMaterial({ map: beachTexture }));
ball.position.set(pos.x, pos.y, pos.z);
ball.castShadow = true;
ball.receiveShadow = true;
scene.add(ball);
//Ammojs Section
let transform = new Ammo.btTransform();
transform.setIdentity();
transform.setOrigin(new Ammo.btVector3(pos.x, pos.y, pos.z));
transform.setRotation(new Ammo.btQuaternion(quat.x, quat.y, quat.z, quat.w));
let motionState = new Ammo.btDefaultMotionState(transform);
let colShape = new Ammo.btSphereShape(radius);
colShape.setMargin(0.05);
let localInertia = new Ammo.btVector3(0, 0, 0);
colShape.calculateLocalInertia(mass, localInertia);
let rbInfo = new Ammo.btRigidBodyConstructionInfo(mass, motionState, colShape, localInertia);
let body = new Ammo.btRigidBody(rbInfo);
body.setRollingFriction(1);
physicsWorld.addRigidBody(body);
ball.userData.physicsBody = body;
rigidBodies.push(ball);
}
//create link boxes
function createBox(x, y, z, scaleX, scaleY, scaleZ, boxTexture, URLLink, color = 0x000000, transparent = true) {
const boxScale = { x: scaleX, y: scaleY, z: scaleZ };
let quat = { x: 0, y: 0, z: 0, w: 1 };
let mass = 0; //mass of zero = infinite mass
//load link logo
const loader = new THREE.TextureLoader(manager);
const texture = loader.load(boxTexture);
texture.magFilter = THREE.LinearFilter;
texture.minFilter = THREE.LinearFilter;
texture.encoding = THREE.sRGBEncoding;
const loadedTexture = new THREE.MeshBasicMaterial({
map: texture,
transparent: transparent,
color: 0xffffff,
});
var borderMaterial = new THREE.MeshBasicMaterial({
color: color,
});
borderMaterial.color.convertSRGBToLinear();
var materials = [
borderMaterial, // Left side
borderMaterial, // Right side
borderMaterial, // Top side ---> THIS IS THE FRONT
borderMaterial, // Bottom side --> THIS IS THE BACK
loadedTexture, // Front side
borderMaterial, // Back side
];
const linkBox = new THREE.Mesh(new THREE.BoxBufferGeometry(boxScale.x, boxScale.y, boxScale.z), materials);
linkBox.position.set(x, y, z);
linkBox.renderOrder = 1;
linkBox.castShadow = true;
linkBox.receiveShadow = true;
linkBox.userData = { URL: URLLink, email: URLLink };
scene.add(linkBox);
objectsWithLinks.push(linkBox.uuid);
addRigidPhysics(linkBox, boxScale);
cursorHoverObjects.push(linkBox);
}
//create Ammo.js body to add solid mass to "Software Engineer"
function floydWords(x, y, z) {
const boxScale = { x: 37, y: 3, z: 2 };
let quat = { x: 0, y: 0, z: 0, w: 1 };
let mass = 0; //mass of zero = infinite mass
const linkBox = new THREE.Mesh(
new THREE.BoxBufferGeometry(boxScale.x, boxScale.y, boxScale.z),
new THREE.MeshPhongMaterial({
color: 0xff6600,
})
);
linkBox.position.set(x, y, z);
linkBox.castShadow = true;
linkBox.receiveShadow = true;
objectsWithLinks.push(linkBox.uuid);
addRigidPhysics(linkBox, boxScale);
}
//loads text for Floyd Mesh
function loadFloydText() {
var text_loader = new THREE.FontLoader();
text_loader.load('./src/jsm/Roboto_Regular.json', function (font) {
var xMid, text;
var color = 0xfffc00;
var textMaterials = [
new THREE.MeshBasicMaterial({ color: color }), // front
new THREE.MeshPhongMaterial({ color: color }), // side
];
var geometry = new THREE.TextGeometry('0xFloyd', {
font: font,
size: 3,
height: 0.5,
curveSegments: 12,
bevelEnabled: true,
bevelThickness: 0.1,
bevelSize: 0.11,
bevelOffset: 0,
bevelSegments: 1,
});
geometry.computeBoundingBox();
geometry.computeVertexNormals();
xMid = -0.15 * (geometry.boundingBox.max.x - geometry.boundingBox.min.x);
geometry.translate(xMid, 0, 0);
var textGeo = new THREE.BufferGeometry().fromGeometry(geometry);
text = new THREE.Mesh(geometry, textMaterials);
text.position.z = -20;
text.position.y = 0.1;
text.receiveShadow = true;
text.castShadow = true;
scene.add(text);
});
}
//create "software engineer text"
function loadEngineerText() {
var text_loader = new THREE.FontLoader();
text_loader.load('./src/jsm/Roboto_Regular.json', function (font) {
var xMid, text;
var color = 0x00ff08;
var textMaterials = [
new THREE.MeshBasicMaterial({ color: color }), // front
new THREE.MeshPhongMaterial({ color: color }), // side
];
var geometry = new THREE.TextGeometry('SOFTWARE ENGINEER', {
font: font,
size: 1.5,
height: 0.5,
curveSegments: 20,
bevelEnabled: true,
bevelThickness: 0.25,
bevelSize: 0.1,
});
geometry.computeBoundingBox();
geometry.computeVertexNormals();
xMid = -0.5 * (geometry.boundingBox.max.x - geometry.boundingBox.min.x);
geometry.translate(xMid, 0, 0);
var textGeo = new THREE.BufferGeometry().fromGeometry(geometry);
text = new THREE.Mesh(textGeo, textMaterials);
text.position.z = -20;
text.position.y = 0.1;
text.position.x = 24;
text.receiveShadow = true;
text.castShadow = true;
scene.add(text);
});
}
//function to create billboard
function createBillboard(x, y, z, textureImage = billboardTextures.grassImage, urlLink, rotation = 0) {
const billboardPoleScale = { x: 1, y: 5, z: 1 };
const billboardSignScale = { x: 30, y: 15, z: 1 };
/* default texture loading */
const loader = new THREE.TextureLoader(manager);
const billboardPole = new THREE.Mesh(
new THREE.BoxBufferGeometry(billboardPoleScale.x, billboardPoleScale.y, billboardPoleScale.z),
new THREE.MeshStandardMaterial({
map: loader.load(woodTexture),
})
);
const texture = loader.load(textureImage);
texture.magFilter = THREE.LinearFilter;
texture.minFilter = THREE.LinearFilter;
texture.encoding = THREE.sRGBEncoding;
var borderMaterial = new THREE.MeshBasicMaterial({
color: 0x000000,
});
const loadedTexture = new THREE.MeshBasicMaterial({
map: texture,
});
var materials = [
borderMaterial, // Left side
borderMaterial, // Right side
borderMaterial, // Top side ---> THIS IS THE FRONT
borderMaterial, // Bottom side --> THIS IS THE BACK
loadedTexture, // Front side
borderMaterial, // Back side
];
// order to add materials: x+,x-,y+,y-,z+,z-
const billboardSign = new THREE.Mesh(new THREE.BoxGeometry(billboardSignScale.x, billboardSignScale.y, billboardSignScale.z), materials);
billboardPole.position.x = x;
billboardPole.position.y = y;
billboardPole.position.z = z;
billboardSign.position.x = x;
billboardSign.position.y = y + 10;
billboardSign.position.z = z;
/* Rotate Billboard */
billboardPole.rotation.y = rotation;
billboardSign.rotation.y = rotation;
billboardPole.castShadow = true;
billboardPole.receiveShadow = true;
billboardSign.castShadow = true;
billboardSign.receiveShadow = true;
billboardSign.userData = { URL: urlLink };
scene.add(billboardPole);
scene.add(billboardSign);
addRigidPhysics(billboardPole, billboardPoleScale);
cursorHoverObjects.push(billboardSign);
}
//create vertical billboard
function createBillboardRotated(x, y, z, textureImage = billboardTextures.grassImage, urlLink, rotation = 0) {
const billboardPoleScale = { x: 1, y: 2.5, z: 1 };
const billboardSignScale = { x: 15, y: 20, z: 1 };
/* default texture loading */
const loader = new THREE.TextureLoader(manager);
const billboardPole = new THREE.Mesh(
new THREE.BoxBufferGeometry(billboardPoleScale.x, billboardPoleScale.y, billboardPoleScale.z),
new THREE.MeshStandardMaterial({
map: loader.load(woodTexture),
})
);
const texture = loader.load(textureImage);
texture.magFilter = THREE.LinearFilter;
texture.minFilter = THREE.LinearFilter;
texture.encoding = THREE.sRGBEncoding;
var borderMaterial = new THREE.MeshBasicMaterial({
color: 0x000000,
});
const loadedTexture = new THREE.MeshBasicMaterial({
map: texture,
});
var materials = [
borderMaterial, // Left side
borderMaterial, // Right side
borderMaterial, // Top side ---> THIS IS THE FRONT
borderMaterial, // Bottom side --> THIS IS THE BACK
loadedTexture, // Front side
borderMaterial, // Back side
];
// order to add materials: x+,x-,y+,y-,z+,z-
const billboardSign = new THREE.Mesh(new THREE.BoxGeometry(billboardSignScale.x, billboardSignScale.y, billboardSignScale.z), materials);
billboardPole.position.x = x;
billboardPole.position.y = y;
billboardPole.position.z = z;
billboardSign.position.x = x;
billboardSign.position.y = y + 11.25;
billboardSign.position.z = z;
/* Rotate Billboard */
billboardPole.rotation.y = rotation;
billboardSign.rotation.y = rotation;
billboardPole.castShadow = true;
billboardPole.receiveShadow = true;
billboardSign.castShadow = true;
billboardSign.receiveShadow = true;
billboardSign.userData = { URL: urlLink };
scene.add(billboardPole);
scene.add(billboardSign);
addRigidPhysics(billboardPole, billboardPoleScale);
addRigidPhysics(billboardSign, billboardSignScale);
cursorHoverObjects.push(billboardSign);
}
//create X axis wall around entire plane
function createWallX(x, y, z) {
const wallScale = { x: 0.125, y: 4, z: 175 };
const wall = new THREE.Mesh(
new THREE.BoxBufferGeometry(wallScale.x, wallScale.y, wallScale.z),
new THREE.MeshStandardMaterial({
color: 0xffffff,
opacity: 0.75,
transparent: true,
})
);
wall.position.x = x;
wall.position.y = y;
wall.position.z = z;
wall.receiveShadow = true;
scene.add(wall);
addRigidPhysics(wall, wallScale);
}
//create Z axis wall around entire plane
function createWallZ(x, y, z) {
const wallScale = { x: 175, y: 4, z: 0.125 };
const wall = new THREE.Mesh(
new THREE.BoxBufferGeometry(wallScale.x, wallScale.y, wallScale.z),
new THREE.MeshStandardMaterial({
color: 0xffffff,
opacity: 0.75,
transparent: true,
})
);
wall.position.x = x;
wall.position.y = y;
wall.position.z = z;
wall.receiveShadow = true;
scene.add(wall);
addRigidPhysics(wall, wallScale);
}
//create brick wall
function wallOfBricks() {
const loader = new THREE.TextureLoader(manager);
var pos = new THREE.Vector3();
var quat = new THREE.Quaternion();
var brickMass = 0.1;
var brickLength = 3;
var brickDepth = 3;
var brickHeight = 1.5;
var numberOfBricksAcross = 6;
var numberOfRowsHigh = 6;
pos.set(70, brickHeight * 0.5, -60);
quat.set(0, 0, 0, 1);
for (var j = 0; j < numberOfRowsHigh; j++) {
var oddRow = j % 2 == 1;
pos.x = 60;
if (oddRow) {
pos.x += 0.25 * brickLength;
}
var currentRow = oddRow ? numberOfBricksAcross + 1 : numberOfBricksAcross;
for (let i = 0; i < currentRow; i++) {
var brickLengthCurrent = brickLength;
var brickMassCurrent = brickMass;
if (oddRow && (i == 0 || i == currentRow - 1)) {
//first or last brick
brickLengthCurrent *= 0.5;
brickMassCurrent *= 0.5;
}
var brick = createBrick(
brickLengthCurrent,
brickHeight,
brickDepth,
brickMassCurrent,
pos,
quat,
new THREE.MeshStandardMaterial({
map: loader.load(stoneTexture),
})
);
brick.castShadow = true;
brick.receiveShadow = true;
if (oddRow && (i == 0 || i == currentRow - 2)) {
//first or last brick
pos.x += brickLength * 0.25;
} else {
pos.x += brickLength;
}
pos.z += 0.0001;
}
pos.y += brickHeight;
}
}
//helper function to create individual brick mesh
function createBrick(sx, sy, sz, mass, pos, quat, material) {
var threeObject = new THREE.Mesh(new THREE.BoxBufferGeometry(sx, sy, sz, 1, 1, 1), material);
var shape = new Ammo.btBoxShape(new Ammo.btVector3(sx * 0.5, sy * 0.5, sz * 0.5));
shape.setMargin(0.05);
createBrickBody(threeObject, shape, mass, pos, quat);
return threeObject;
}
//add physics to brick body
function createBrickBody(threeObject, physicsShape, mass, pos, quat) {
threeObject.position.copy(pos);
threeObject.quaternion.copy(quat);
var transform = new Ammo.btTransform();
transform.setIdentity();
transform.setOrigin(new Ammo.btVector3(pos.x, pos.y, pos.z));
transform.setRotation(new Ammo.btQuaternion(quat.x, quat.y, quat.z, quat.w));
var motionState = new Ammo.btDefaultMotionState(transform);
var localInertia = new Ammo.btVector3(0, 0, 0);
physicsShape.calculateLocalInertia(mass, localInertia);
var rbInfo = new Ammo.btRigidBodyConstructionInfo(mass, motionState, physicsShape, localInertia);
var body = new Ammo.btRigidBody(rbInfo);
threeObject.userData.physicsBody = body;
scene.add(threeObject);
if (mass > 0) {
rigidBodies.push(threeObject);
// Disable deactivation
body.setActivationState(4);
}
physicsWorld.addRigidBody(body);
}
function createTriangle(x, z) {
var geom = new THREE.Geometry();
var v1 = new THREE.Vector3(4, 0, 0);
var v2 = new THREE.Vector3(5, 0, 0);
var v3 = new THREE.Vector3(4.5, 1, 0);
geom.vertices.push(v1);
geom.vertices.push(v2);
geom.vertices.push(v3);
geom.faces.push(new THREE.Face3(0, 1, 2));
geom.computeFaceNormals();
var mesh = new THREE.Mesh(geom, new THREE.MeshBasicMaterial({ color: 0xffffff }));
mesh.rotation.x = -Math.PI * 0.5;
//mesh.rotation.z = -90;
mesh.position.y = 0.01;
mesh.position.x = x;
mesh.position.z = z;
scene.add(mesh);
}
//generic function to add physics to Mesh with scale
function addRigidPhysics(item, itemScale) {
let pos = { x: item.position.x, y: item.position.y, z: item.position.z };
let scale = { x: itemScale.x, y: itemScale.y, z: itemScale.z };
let quat = { x: 0, y: 0, z: 0, w: 1 };
let mass = 0;
var transform = new Ammo.btTransform();
transform.setIdentity();
transform.setOrigin(new Ammo.btVector3(pos.x, pos.y, pos.z));
transform.setRotation(new Ammo.btQuaternion(quat.x, quat.y, quat.z, quat.w));
var localInertia = new Ammo.btVector3(0, 0, 0);
var motionState = new Ammo.btDefaultMotionState(transform);
let colShape = new Ammo.btBoxShape(new Ammo.btVector3(scale.x * 0.5, scale.y * 0.5, scale.z * 0.5));
colShape.setMargin(0.05);
colShape.calculateLocalInertia(mass, localInertia);
let rbInfo = new Ammo.btRigidBodyConstructionInfo(mass, motionState, colShape, localInertia);
let body = new Ammo.btRigidBody(rbInfo);
body.setActivationState(STATE.DISABLE_DEACTIVATION);
body.setCollisionFlags(2);
physicsWorld.addRigidBody(body);
}
function moveBall() {
let scalingFactor = 20;
let moveX = moveDirection.right - moveDirection.left;
let moveZ = moveDirection.back - moveDirection.forward;
let moveY = 0;
if (ballObject.position.y < 2.01) {
moveX = moveDirection.right - moveDirection.left;
moveZ = moveDirection.back - moveDirection.forward;
moveY = 0;
} else {
moveX = moveDirection.right - moveDirection.left;
moveZ = moveDirection.back - moveDirection.forward;
moveY = -0.25;
}
// no movement
if (moveX == 0 && moveY == 0 && moveZ == 0) return;
let resultantImpulse = new Ammo.btVector3(moveX, moveY, moveZ);
resultantImpulse.op_mul(scalingFactor);
let physicsBody = ballObject.userData.physicsBody;
physicsBody.setLinearVelocity(resultantImpulse);
}
function renderFrame() {
// FPS stats module
stats.begin();
const elapsedTime = galaxyClock.getElapsedTime() + 150;
let deltaTime = clock.getDelta();
if (!isTouchscreenDevice())
if (document.hasFocus()) {
moveBall();
} else {
moveDirection.forward = 0;
moveDirection.back = 0;
moveDirection.left = 0;
moveDirection.right = 0;
}
else {
moveBall();
}
updatePhysics(deltaTime);
moveParticles();
renderer.render(scene, camera);
stats.end();
galaxyMaterial.uniforms.uTime.value = elapsedTime * 5;
//galaxyPoints.position.set(-50, -50, 0);
// tells browser theres animation, update before the next repaint
requestAnimationFrame(renderFrame);
}
//loading page section
function startButtonEventListener() {
for (let i = 0; i < fadeOutDivs.length; i++) {
fadeOutDivs[i].classList.add('fade-out');
}
setTimeout(() => {
document.getElementById('preload-overlay').style.display = 'none';
}, 750);
startButton.removeEventListener('click', startButtonEventListener);
document.addEventListener('click', launchClickPosition);
createBeachBall();
setTimeout(() => {
document.addEventListener('mousemove', launchHover);
}, 1000);
}
function updatePhysics(deltaTime) {
// Step world
physicsWorld.stepSimulation(deltaTime, 10);
// Update rigid bodies
for (let i = 0; i < rigidBodies.length; i++) {
let objThree = rigidBodies[i];
let objAmmo = objThree.userData.physicsBody;
let ms = objAmmo.getMotionState();
if (ms) {
ms.getWorldTransform(tmpTrans);
let p = tmpTrans.getOrigin();
let q = tmpTrans.getRotation();
objThree.position.set(p.x(), p.y(), p.z());
objThree.quaternion.set(q.x(), q.y(), q.z(), q.w());
}
}
//check to see if ball escaped the plane
if (ballObject.position.y < -50) {
scene.remove(ballObject);
createBall();
}
//check to see if ball is on text to rotate camera
rotateCamera(ballObject);
}
//document loading
manager.onStart = function (item, loaded, total) {
//console.log("Loading started");
};
manager.onLoad = function () {
var readyStateCheckInterval = setInterval(function () {
if (document.readyState === 'complete') {
clearInterval(readyStateCheckInterval);
for (let i = 0; i < preloadDivs.length; i++) {
preloadDivs[i].style.visibility = 'hidden'; // or
preloadDivs[i].style.display = 'none';
}
for (let i = 0; i < postloadDivs.length; i++) {
postloadDivs[i].style.visibility = 'visible'; // or
postloadDivs[i].style.display = 'block';
}
}
}, 1000);
//console.log("Loading complete");
};
manager.onError = function (url) {
//console.log("Error loading");
};
startButton.addEventListener('click', startButtonEventListener);
if (isTouchscreenDevice()) {
document.getElementById('appDirections').innerHTML =
'Use the joystick in the bottom left to move the ball. Please use your device in portrait orientation!';
createJoystick(document.getElementById('joystick-wrapper'));
document.getElementById('joystick-wrapper').style.visibility = 'visible';
document.getElementById('joystick').style.visibility = 'visible';
}
//initialize world and begin
function start() {
createWorld();
createPhysicsWorld();
createGridPlane();
createBall();
createWallX(87.5, 1.75, 0);
createWallX(-87.5, 1.75, 0);
createWallZ(0, 1.75, 87.5);
createWallZ(0, 1.75, -87.5);
createBillboard(-80, 2.5, -70, billboardTextures.terpSolutionsTexture, URL.terpsolutions, Math.PI * 0.22);
createBillboard(-45, 2.5, -78, billboardTextures.bagHolderBetsTexture, URL.githubBagholder, Math.PI * 0.17);
createBillboardRotated(-17, 1.25, -75, billboardTextures.homeSweetHomeTexture, URL.githubHomeSweetHome, Math.PI * 0.15);
floydWords(16.2, 1, -20);
createTextOnPlane(-70, 0.01, -48, inputText.terpSolutionsText, 20, 40);
createTextOnPlane(-42, 0.01, -53, inputText.bagholderBetsText, 20, 40);
createTextOnPlane(-14, 0.01, -49, inputText.homeSweetHomeText, 20, 40);
createBox(12, 2, -70, 4, 4, 1, boxTexture.Github, URL.gitHub, 0x000000, true);
// createBox(
// 4,
// 2,
// -70,
// 4,
// 4,
// 1,
// boxTexture.twitter,
// URL.twitter,
// 0xffffff,
// true
// );
createBox(19, 2, -70, 4, 4, 1, boxTexture.twitter, URL.twitter, 0x0077b5, true);
// createBox(
// 35,
// 2,
// -70,
// 4,
// 4,
// 1,
// boxTexture.globe,
// 0xffffff,
// false
// );
createBox(27, 2, -70, 4, 4, 1, boxTexture.mail, 'mailto:arfloyd7@gmail.com', 0x000000, false);
// createBox(
// 44,
// 2,
// -70,
// 4,
// 4,
// 1,
// boxTexture.writing,
// URL.devTo,
// 0x000000,
// false
// );
createBox(35, 2, -70, 4, 4, 1, boxTexture.writing, URL.devTo, 0x000000, false);
// floatingLabel(3.875, 4.5, -70, 'Twitter');
floatingLabel(11.875, 4.5, -70, 'Github');
floatingLabel(19.125, 4.5, -70, 'Twitter');
floatingLabel(26.875, 4.5, -70, 'Email');
// floatingLabel(35, 6.5, -70, ' Static \nWebsite');
floatingLabel(35, 6.5, -70, ' How I \nmade this');
// floatingLabel(44, 6.5, -70, ' How I \nmade this');
// allSkillsSection(-50, 0.025, 20, 40, 40, boxTexture.allSkills);
allSkillsSection(61, 0.025, 13, 30, 60, inputText.activities);
//lensflare
createLensFlare(50, -50, -800, 200, 200, boxTexture.lensFlareMain);
loadFloydText();
loadEngineerText();
let touchText, instructionsText;
if (isTouchscreenDevice()) {
touchText = 'Touch boxes with your \nfinger to open links';
instructionsText = ' Use the joystick in the bottom \nleft of the screen to move the ball.';
} else {
touchText = 'Click on boxes with \nthe mouse to open links';
instructionsText = 'Use the arrow keys on your \n keyboard to move the ball.';
}
simpleText(9, 0.01, 5, instructionsText, 1.25);
simpleText(23, 0.01, -60, touchText, 1.5);
// simpleText(-50, 0.01, -5, 'SKILLS', 3);
simpleText(-42, 0.01, -30, 'PROJECTS', 3);
simpleText(61, 0.01, -15, 'TIMELINE', 3);
wallOfBricks();
createTriangle(63, -55);
createTriangle(63, -51);
createTriangle(63, -47);
createTriangle(63, -43);
addParticles();
glowingParticles();
generateGalaxy();
setupEventHandlers();
// window.addEventListener('mousemove', onDocumentMouseMove, false);
renderFrame();
}
//check if user's browser has WebGL capabilities
if (WEBGL.isWebGLAvailable()) {
start();
} else {
noWebGL();
}
});
================================================
FILE: src/builds/ammo.js
================================================
// This is ammo.js, a port of Bullet Physics to JavaScript. zlib licensed.
var Ammo = (function() {
var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;
if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;
return (
function(Ammo) {
Ammo = Ammo || {};
var b;b||(b=typeof Ammo !== 'undefined' ? Ammo : {});
var Promise=function(){function a(){}function c(v,J){return function(){v.apply(J,arguments)}}function d(v){if(!(this instanceof d))throw new TypeError("Promises must be constructed via new");if("function"!==typeof v)throw new TypeError("not a function");this.m=0;this.ia=!1;this.o=void 0;this.s=[];ma(v,this)}function e(v,J){for(;3===v.m;)v=v.o;0===v.m?v.s.push(J):(v.ia=!0,d.ja(function(){var ba=1===v.m?J.Vc:J.Wc;if(null===ba)(1===v.m?g:n)(J.Y,v.o);else{try{var za=ba(v.o)}catch(ub){n(J.Y,ub);return}g(J.Y,
za)}}))}function g(v,J){try{if(J===v)throw new TypeError("A promise cannot be resolved with itself.");if(J&&("object"===typeof J||"function"===typeof J)){var ba=J.then;if(J instanceof d){v.m=3;v.o=J;D(v);return}if("function"===typeof ba){ma(c(ba,J),v);return}}v.m=1;v.o=J;D(v)}catch(za){n(v,za)}}function n(v,J){v.m=2;v.o=J;D(v)}function D(v){2===v.m&&0===v.s.length&&d.ja(function(){v.ia||d.ka(v.o)});for(var J=0,ba=v.s.length;J<ba;J++)e(v,v.s[J]);v.s=null}function Y(v,J,ba){this.Vc="function"===typeof v?
v:null;this.Wc="function"===typeof J?J:null;this.Y=ba}function ma(v,J){var ba=!1;try{v(function(za){ba||(ba=!0,g(J,za))},function(za){ba||(ba=!0,n(J,za))})}catch(za){ba||(ba=!0,n(J,za))}}d.prototype["catch"]=function(v){return this.then(null,v)};d.prototype.then=function(v,J){var ba=new this.constructor(a);e(this,new Y(v,J,ba));return ba};d.all=function(v){return new d(function(J,ba){function za(Cc,Ub){try{if(Ub&&("object"===typeof Ub||"function"===typeof Ub)){var Dc=Ub.then;if("function"===typeof Dc){Dc.call(Ub,
function(rc){za(Cc,rc)},ba);return}}ub[Cc]=Ub;0===--wC&&J(ub)}catch(rc){ba(rc)}}if(!Array.isArray(v))return ba(new TypeError("Promise.all accepts an array"));var ub=Array.prototype.slice.call(v);if(0===ub.length)return J([]);for(var wC=ub.length,dc=0;dc<ub.length;dc++)za(dc,ub[dc])})};d.resolve=function(v){return v&&"object"===typeof v&&v.constructor===d?v:new d(function(J){J(v)})};d.reject=function(v){return new d(function(J,ba){ba(v)})};d.race=function(v){return new d(function(J,ba){if(!Array.isArray(v))return ba(new TypeError("Promise.race accepts an array"));
for(var za=0,ub=v.length;za<ub;za++)d.resolve(v[za]).then(J,ba)})};d.ja="function"===typeof setImmediate&&function(v){setImmediate(v)}||function(v){setTimeout(v,0)};d.ka=function(v){"undefined"!==typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",v)};return d}(),aa;b.ready=new Promise(function(a){aa=a});var ca={},da;for(da in b)b.hasOwnProperty(da)&&(ca[da]=b[da]);var ea=!1,fa=!1,ha=!1,ia=!1;ea="object"===typeof window;fa="function"===typeof importScripts;
ha="object"===typeof process&&"object"===typeof process.versions&&"string"===typeof process.versions.node;ia=!ea&&!ha&&!fa;var ja="",ka,la,na,oa;
if(ha)ja=fa?require("path").dirname(ja)+"/":__dirname+"/",ka=function(a,c){var d=pa(a);if(d)return c?d:d.toString();na||(na=require("fs"));oa||(oa=require("path"));a=oa.normalize(a);return na.readFileSync(a,c?null:"utf8")},la=function(a){a=ka(a,!0);a.buffer||(a=new Uint8Array(a));assert(a.buffer);return a},1<process.argv.length&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(a){throw a;}),process.on("unhandledRejection",qa),b.inspect=function(){return"[Emscripten Module object]"};
else if(ia)"undefined"!=typeof read&&(ka=function(a){var c=pa(a);return c?ra(c):read(a)}),la=function(a){var c;if(c=pa(a))return c;if("function"===typeof readbuffer)return new Uint8Array(readbuffer(a));c=read(a,"binary");assert("object"===typeof c);return c},"undefined"!==typeof print&&("undefined"===typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!==typeof printErr?printErr:print);else if(ea||fa)fa?ja=self.location.href:document.currentScript&&(ja=document.currentScript.src),
_scriptDir&&(ja=_scriptDir),ja=0!==ja.indexOf("blob:")?ja.substr(0,ja.lastIndexOf("/")+1):"",ka=function(a){try{var c=new XMLHttpRequest;c.open("GET",a,!1);c.send(null);return c.responseText}catch(d){if(a=pa(a))return ra(a);throw d;}},fa&&(la=function(a){try{var c=new XMLHttpRequest;c.open("GET",a,!1);c.responseType="arraybuffer";c.send(null);return new Uint8Array(c.response)}catch(d){if(a=pa(a))return a;throw d;}});var sa=b.print||console.log.bind(console),ta=b.printErr||console.warn.bind(console);
for(da in ca)ca.hasOwnProperty(da)&&(b[da]=ca[da]);ca=null;var ua;b.wasmBinary&&(ua=b.wasmBinary);var noExitRuntime;b.noExitRuntime&&(noExitRuntime=b.noExitRuntime);function va(){return{buffer:new ArrayBuffer(wa/65536*65536),grow:function(a){return xa(a)}}}function ya(){return{exports:(
// EMSCRIPTEN_START_ASM
function a(asmLibraryArg,wasmMemory,wasmTable){var scratchBuffer=new ArrayBuffer(8);var b=new Int32Array(scratchBuffer);var c=new Float32Array(scratchBuffer);var d=new Float64Array(scratchBuffer);function e(index,value){b[index]=value}function f(){return d[0]}function g(value){c[0]=value}function h(index){return b[index]}function i(){return c[0]}function j(global,env,buffer){var k=env.memory;var l=wasmTable;var m=new global.Int8Array(buffer);var n=new global.Int16Array(buffer);var o=new global.Int32Array(buffer);var p=new global.Uint8Array(buffer);var q=new global.Uint16Array(buffer);var r=new global.Uint32Array(buffer);var s=new global.Float32Array(buffer);var t=new global.Float64Array(buffer);var u=global.Math.imul;var v=global.Math.fround;var w=global.Math.abs;var x=global.Math.clz32;var y=global.Math.min;var z=global.Math.max;var A=global.Math.floor;var B=global.Math.ceil;var C=global.Math.sqrt;var D=env.abort;var E=global.NaN;var F=global.Infinity;var G=env.emscripten_asm_const_iii;var H=env.gettimeofday;var I=env.emscripten_asm_const_dii;var J=env.emscripten_memcpy_big;var K=env.emscripten_resize_heap;var L=env.abort;var M=5274432;var N=0;
// EMSCRIPTEN_START_FUNCS
function Ly(a,b,c){var d=0,e=0,f=v(0),g=v(0),h=v(0),i=0,j=0,k=0,n=v(0),q=v(0),r=v(0),t=v(0),w=v(0),x=0,y=v(0),z=v(0),A=v(0),B=v(0),D=v(0),E=0,F=v(0),G=v(0),H=0,I=0,J=v(0),K=0,L=0,O=v(0),P=v(0),Q=v(0),R=v(0),S=v(0),T=v(0),U=v(0),V=v(0);d=M-176|0;M=d;o[d+152>>2]=0;o[d+156>>2]=0;o[d+144>>2]=0;o[d+148>>2]=0;o[d+136>>2]=1065353216;o[d+140>>2]=0;o[d+128>>2]=1065353216;o[d+132>>2]=1065353216;o[d+120>>2]=0;o[d+124>>2]=0;o[d+112>>2]=1065353216;o[d+116>>2]=0;a:{if(c&256){o[7720]=1805;o[7721]=0;k=o[a+1112>>2];if((k|0)<1){break a}while(1){E=I<<2;if(p[o[E+o[a+1120>>2]>>2]+377|0]){e=tL(o[7720],o[7721],1284865837,1481765933)+1|0;i=N;i=e>>>0<1?i+1|0:i;o[7720]=e;o[7721]=i;k=i>>>1|0;e=tL(o[7720],o[7721],1284865837,1481765933)+1|0;i=N;i=e>>>0<1?i+1|0:i;o[7720]=e;o[7721]=i;x=i>>>1|0;e=tL(o[7720],o[7721],1284865837,1481765933)+1|0;j=N;j=e>>>0<1?j+1|0:j;o[7720]=e;o[7721]=j;f=v(v(j>>>1|0)*v(4.656612873077393e-10));h=v(v(k|0)*v(4.656612873077393e-10));n=v(v(x|0)*v(4.656612873077393e-10));g=v(v(1)/v(C(v(v(f*f)+v(v(h*h)+v(n*n))))));s[d+168>>2]=v(f*g)*v(.75);s[d+164>>2]=v(n*g)*v(.75);s[d+160>>2]=v(h*g)*v(.75);o[d+172>>2]=0;e=o[o[E+o[a+1120>>2]>>2]+24>>2];b:{if((e|0)<=0){x=0;break b}k=0;o[7717]=o[7717]+1;x=l[o[6606]](e<<4,16)|0;while(1){H=o[d+52>>2];i=(k<<4)+x|0;j=i;o[j>>2]=o[d+48>>2];o[j+4>>2]=H;j=o[d+60>>2];o[i+8>>2]=o[d+56>>2];o[i+12>>2]=j;k=k+1|0;if((e|0)!=(k|0)){continue}break}k=0;if((e|0)<1){break b}while(1){i=o[o[o[E+o[a+1120>>2]>>2]+32>>2]+(k<<2)>>2];H=o[i+12>>2];j=(k<<4)+x|0;o[j>>2]=o[i+8>>2];o[j+4>>2]=H;H=o[i+20>>2];o[j+8>>2]=o[i+16>>2];o[j+12>>2]=H;k=k+1|0;if((e|0)!=(k|0)){continue}break}}H=0;o[d+60>>2]=0;m[d+64|0]=1;m[d+84|0]=1;o[d+52>>2]=0;o[d+56>>2]=0;o[d+80>>2]=0;m[d+104|0]=1;o[d+72>>2]=0;o[d+76>>2]=0;o[d+100>>2]=0;o[d+92>>2]=0;o[d+96>>2]=0;lf(d+48|0,x,e);i=o[d+92>>2];if((i|0)>0){while(1){E=o[d+80>>2]+u(o[o[d+100>>2]+(H<<2)>>2],12)|0;e=u(o[E+4>>2],12)+E|0;k=u(o[e>>2],12)+e|0;if((k|0)!=(E|0)){i=o[e+8>>2];e=o[E+8>>2];while(1){j=o[d+60>>2];K=j+(i<<4)|0;L=(e<<4)+j|0;i=j;j=o[k+8>>2];l[o[o[b>>2]+28>>2]](b,K,L,i+(j<<4)|0,d+160|0,v(1));i=e;e=j;j=u(o[k+4>>2],12)+k|0;k=u(o[j>>2],12)+j|0;if((E|0)!=(k|0)){continue}break}i=o[d+92>>2]}H=H+1|0;if((H|0)<(i|0)){continue}break}}e=o[d+100>>2];if(e){if(p[d+104|0]){if(e){o[7718]=o[7718]+1;l[o[6607]](e)}}o[d+100>>2]=0}o[d+100>>2]=0;m[d+104|0]=1;o[d+92>>2]=0;o[d+96>>2]=0;e=o[d+80>>2];if(e){if(p[d+84|0]){if(e){o[7718]=o[7718]+1;l[o[6607]](e)}}o[d+80>>2]=0}o[d+80>>2]=0;m[d+84|0]=1;o[d+72>>2]=0;o[d+76>>2]=0;e=o[d+60>>2];if(e){if(p[d+64|0]){if(e){o[7718]=o[7718]+1;l[o[6607]](e)}}o[d+60>>2]=0}if(x){if(x){o[7718]=o[7718]+1;l[o[6607]](x)}}k=o[a+1112>>2]}I=I+1|0;if((I|0)<(k|0)){continue}break}break a}c:{if(!(c&1)){break c}i=o[a+712>>2];if((i|0)<1){break c}while(1){j=o[a+720>>2]+u(e,104)|0;if(m[o[j+4>>2]+16|0]&1){g=s[j+8>>2];i=o[j+16>>2];o[d+52>>2]=o[j+12>>2];o[d+56>>2]=i;o[d+60>>2]=0;s[d+48>>2]=g+v(-.10000000149011612);g=s[j+8>>2];f=s[j+12>>2];h=s[j+16>>2];o[d+172>>2]=0;s[d+168>>2]=h+v(0);s[d+164>>2]=f+v(0);s[d+160>>2]=g+v(.10000000149011612);o[d+40>>2]=0;o[d+44>>2]=0;o[d+32>>2]=1065353216;o[d+36>>2]=0;l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d+32|0);g=s[j+12>>2];i=o[j+8>>2];x=o[j+16>>2];o[d+60>>2]=0;o[d+56>>2]=x;o[d+48>>2]=i;s[d+52>>2]=g+v(-.10000000149011612);g=s[j+8>>2];f=s[j+12>>2];h=s[j+16>>2];o[d+172>>2]=0;s[d+168>>2]=h+v(0);s[d+164>>2]=f+v(.10000000149011612);s[d+160>>2]=g+v(0);o[d+40>>2]=0;o[d+44>>2]=0;o[d+32>>2]=0;o[d+36>>2]=1065353216;l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d+32|0);g=s[j+16>>2];i=o[j+12>>2];x=o[j+8>>2];o[d+60>>2]=0;o[d+48>>2]=x;o[d+52>>2]=i;s[d+56>>2]=g+v(-.10000000149011612);g=s[j+8>>2];f=s[j+12>>2];h=s[j+16>>2];o[d+172>>2]=0;s[d+168>>2]=h+v(.10000000149011612);s[d+164>>2]=f+v(0);s[d+160>>2]=g+v(0);o[d+40>>2]=1065353216;o[d+44>>2]=0;o[d+32>>2]=0;o[d+36>>2]=0;l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d+32|0);i=o[a+712>>2]}e=e+1|0;if((e|0)<(i|0)){continue}break}}d:{if(!(c&2)){break d}i=o[a+732>>2];if((i|0)<1){break d}while(1){e=o[a+740>>2]+u(k,52)|0;if(m[o[e+4>>2]+16|0]&1){l[o[o[b>>2]+8>>2]](b,o[e+8>>2]+8|0,o[e+12>>2]+8|0,d+144|0);i=o[a+732>>2]}k=k+1|0;if((k|0)<(i|0)){continue}break}}e:{if(!(c&16)){break e}i=o[a+712>>2];if((i|0)<1){break e}e=0;while(1){j=o[a+720>>2]+u(e,104)|0;if(m[o[j+4>>2]+16|0]&1){g=s[j+72>>2];f=s[j+76>>2];h=s[j+80>>2];n=s[j+8>>2];q=s[j+12>>2];r=s[j+16>>2];o[d+60>>2]=0;h=v(h*v(.5));s[d+56>>2]=r+h;f=v(f*v(.5));s[d+52>>2]=q+f;g=v(g*v(.5));s[d+48>>2]=n+g;i=j+8|0;l[o[o[b>>2]+8>>2]](b,i,d+48|0,d+128|0);n=s[j+8>>2];q=s[j+12>>2];r=s[j+16>>2];o[d+60>>2]=0;s[d+56>>2]=r-h;s[d+52>>2]=q-f;s[d+48>>2]=n-g;o[d+172>>2]=0;s[d+168>>2]=s[d+136>>2]*v(.5);s[d+164>>2]=s[d+132>>2]*v(.5);s[d+160>>2]=s[d+128>>2]*v(.5);l[o[o[b>>2]+8>>2]](b,i,d+48|0,d+160|0);i=o[a+712>>2]}e=e+1|0;if((e|0)<(i|0)){continue}break}}f:{if(!(c&32)){break f}g:{if(m[30816]&1){break g}if(!da(30816)){break g}o[7693]=0;o[7694]=0;o[7692]=1065353216;o[7695]=0;o[7696]=0;o[7698]=0;o[7699]=0;o[7697]=1065353216;o[7700]=0;o[7701]=0;o[7702]=1065353216;o[7703]=0;ca(30816)}if(o[a+812>>2]<1){break f}e=0;while(1){i=o[a+820>>2]+u(e,104)|0;w=s[i+20>>2];g=s[i+12>>2];j=o[i+24>>2];f=s[j+16>>2];h=s[i+8>>2];n=s[j+12>>2];q=s[i+4>>2];r=s[j+8>>2];o[d+60>>2]=0;J=q;q=v(w+v(v(v(r*q)+v(n*h))+v(f*g)));r=v(r-v(J*q));s[d+48>>2]=r;w=v(n-v(h*q));s[d+52>>2]=w;q=v(f-v(g*q));s[d+56>>2]=q;g=s[i+4>>2];f=s[i+12>>2];h=s[i+8>>2];j=(g<h?(g<f^1)<<1:h<f?1:2)<<4;n=s[j+30772>>2];y=s[j+30768>>2];z=s[j+30776>>2];o[d+172>>2]=0;t=v(v(g*n)-v(h*y));A=v(v(h*z)-v(f*n));y=v(v(f*y)-v(g*z));n=v(v(1)/v(C(v(v(t*t)+v(v(A*A)+v(y*y))))));z=v(t*n);t=v(z*v(.5));s[d+168>>2]=q-t;y=v(y*n);B=v(y*v(.5));s[d+164>>2]=w-B;n=v(A*n);A=v(n*v(.5));s[d+160>>2]=r-A;o[d+44>>2]=0;s[d+40>>2]=q+t;s[d+36>>2]=w+B;s[d+32>>2]=r+A;l[o[o[b>>2]+8>>2]](b,d+160|0,d+32|0,d+112|0);o[d+172>>2]=0;q=v(v(h*n)-v(g*y));h=v(v(f*y)-v(h*z));f=v(v(g*z)-v(f*n));g=v(v(1)/v(C(v(v(q*q)+v(v(h*h)+v(f*f))))));n=s[d+56>>2];q=v(v(q*g)*v(.5));s[d+168>>2]=n-q;r=s[d+52>>2];f=v(v(f*g)*v(.5));s[d+164>>2]=r-f;w=s[d+48>>2];g=v(v(h*g)*v(.5));s[d+160>>2]=w-g;o[d+44>>2]=0;s[d+40>>2]=q+n;s[d+36>>2]=f+r;s[d+32>>2]=w+g;l[o[o[b>>2]+8>>2]](b,d+160|0,d+32|0,d+112|0);g=s[i+4>>2];f=s[i+8>>2];h=s[i+12>>2];o[d+172>>2]=0;s[d+168>>2]=v(v(h*v(.5))*v(3))+s[d+56>>2];s[d+164>>2]=v(v(f*v(.5))*v(3))+s[d+52>>2];s[d+160>>2]=v(v(g*v(.5))*v(3))+s[d+48>>2];o[d+40>>2]=0;o[d+44>>2]=0;o[d+32>>2]=1065353216;o[d+36>>2]=1065353216;l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d+32|0);e=e+1|0;if((e|0)<o[a+812>>2]){continue}break}}h:{if(!(c&4)){break h}o[d+56>>2]=0;o[d+60>>2]=0;o[d+48>>2]=0;o[d+52>>2]=1060320051;i=o[a+752>>2];if((i|0)<1){break h}k=0;while(1){e=o[a+760>>2]+u(k,44)|0;if(m[o[e+4>>2]+16|0]&1){i=o[e+16>>2];n=s[i+12>>2];j=o[e+8>>2];q=s[j+12>>2];e=o[e+12>>2];r=s[e+12>>2];w=s[i+16>>2];h=s[j+16>>2];y=s[e+16>>2];z=s[i+8>>2];f=s[j+8>>2];t=s[e+8>>2];o[d+172>>2]=0;g=v(v(z+v(f+t))*v(.3333333432674408));s[d+160>>2]=g+v(v(f-g)*v(.800000011920929));f=v(v(w+v(h+y))*v(.3333333432674408));s[d+168>>2]=f+v(v(h-f)*v(.800000011920929));h=v(v(n+v(q+r))*v(.3333333432674408));s[d+164>>2]=h+v(v(q-h)*v(.800000011920929));o[d+44>>2]=0;s[d+40>>2]=f+v(v(y-f)*v(.800000011920929));s[d+36>>2]=h+v(v(r-h)*v(.800000011920929));s[d+32>>2]=g+v(v(t-g)*v(.800000011920929));o[d+28>>2]=0;s[d+24>>2]=f+v(v(w-f)*v(.800000011920929));s[d+20>>2]=h+v(v(n-h)*v(.800000011920929));s[d+16>>2]=g+v(v(z-g)*v(.800000011920929));l[o[o[b>>2]+28>>2]](b,d+160|0,d+32|0,d+16|0,d+48|0,v(1));i=o[a+752>>2]}k=k+1|0;if((k|0)<(i|0)){continue}break}}if(!(c&8)){break a}o[d+56>>2]=1060320051;o[d+60>>2]=0;o[d+48>>2]=1050253722;o[d+52>>2]=1050253722;i=o[a+772>>2];if((i|0)<1){break a}k=0;while(1){e=o[a+780>>2]+u(k,104)|0;if(m[o[e+4>>2]+16|0]&1){i=o[e+20>>2];n=s[i+12>>2];j=o[e+16>>2];q=s[j+12>>2];x=o[e+8>>2];r=s[x+12>>2];e=o[e+12>>2];w=s[e+12>>2];y=s[i+16>>2];z=s[j+16>>2];h=s[x+16>>2];t=s[e+16>>2];A=s[i+8>>2];B=s[j+8>>2];f=s[x+8>>2];D=s[e+8>>2];o[d+172>>2]=0;g=v(v(A+v(B+v(f+D)))*v(.25));F=v(g+v(v(f-g)*v(.800000011920929)));s[d+160>>2]=F;f=v(v(y+v(z+v(h+t)))*v(.25));G=v(f+v(v(h-f)*v(.800000011920929)));s[d+168>>2]=G;h=v(v(n+v(q+v(r+w)))*v(.25));r=v(h+v(v(r-h)*v(.800000011920929)));s[d+164>>2]=r;o[d+44>>2]=0;t=v(f+v(v(t-f)*v(.800000011920929)));s[d+40>>2]=t;w=v(h+v(v(w-h)*v(.800000011920929)));s[d+36>>2]=w;D=v(g+v(v(D-g)*v(.800000011920929)));s[d+32>>2]=D;o[d+28>>2]=0;z=v(f+v(v(z-f)*v(.800000011920929)));s[d+24>>2]=z;q=v(h+v(v(q-h)*v(.800000011920929)));s[d+20>>2]=q;B=v(g+v(v(B-g)*v(.800000011920929)));s[d+16>>2]=B;l[o[o[b>>2]+28>>2]](b,d+160|0,d+32|0,d+16|0,d+48|0,v(1));o[d+172>>2]=0;s[d+168>>2]=G;s[d+164>>2]=r;s[d+160>>2]=F;o[d+44>>2]=0;s[d+40>>2]=t;s[d+36>>2]=w;s[d+32>>2]=D;o[d+28>>2]=0;f=v(f+v(v(y-f)*v(.800000011920929)));s[d+24>>2]=f;h=v(h+v(v(n-h)*v(.800000011920929)));s[d+20>>2]=h;g=v(g+v(v(A-g)*v(.800000011920929)));s[d+16>>2]=g;l[o[o[b>>2]+28>>2]](b,d+160|0,d+32|0,d+16|0,d+48|0,v(1));o[d+172>>2]=0;s[d+168>>2]=t;s[d+164>>2]=w;s[d+160>>2]=D;o[d+44>>2]=0;s[d+40>>2]=z;s[d+36>>2]=q;s[d+32>>2]=B;o[d+28>>2]=0;s[d+24>>2]=f;s[d+20>>2]=h;s[d+16>>2]=g;l[o[o[b>>2]+28>>2]](b,d+160|0,d+32|0,d+16|0,d+48|0,v(1));o[d+172>>2]=0;s[d+168>>2]=z;s[d+164>>2]=q;s[d+160>>2]=B;o[d+44>>2]=0;s[d+40>>2]=G;s[d+36>>2]=r;s[d+32>>2]=F;o[d+28>>2]=0;s[d+24>>2]=f;s[d+20>>2]=h;s[d+16>>2]=g;l[o[o[b>>2]+28>>2]](b,d+160|0,d+32|0,d+16|0,d+48|0,v(1));i=o[a+772>>2]}k=k+1|0;if((k|0)<(i|0)){continue}break}}i:{if(!(c&64)){break i}if(o[a+792>>2]>=1){i=0;while(1){j=o[a+800>>2]+u(i,96)|0;e=o[j+20>>2];n=s[e+52>>2];q=s[e+12>>2];r=s[e+8>>2];w=s[e+4>>2];y=s[e+56>>2];z=s[e+28>>2];t=s[e+20>>2];A=s[e+24>>2];B=s[e+60>>2];g=s[j+12>>2];D=s[e+44>>2];f=s[j+4>>2];F=s[e+36>>2];h=s[j+8>>2];G=s[e+40>>2];o[d+44>>2]=0;s[d+40>>2]=B+v(v(v(f*F)+v(h*G))+v(g*D));s[d+36>>2]=y+v(v(v(f*t)+v(h*A))+v(g*z));s[d+32>>2]=n+v(v(v(f*w)+v(h*r))+v(g*q));e=o[j>>2];o[d+24>>2]=0;o[d+28>>2]=0;o[d+16>>2]=1065353216;o[d+20>>2]=0;g=s[e+8>>2];f=s[e+12>>2];h=s[e+16>>2];o[d+60>>2]=0;s[d+56>>2]=h;s[d+52>>2]=f;s[d+48>>2]=g+v(-.25);o[d+172>>2]=0;s[d+168>>2]=h+v(0);s[d+164>>2]=f+v(0);s[d+160>>2]=g+v(.25);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d+16|0);g=s[e+12>>2];f=s[e+8>>2];h=s[e+16>>2];o[d+60>>2]=0;s[d+56>>2]=h;s[d+48>>2]=f;s[d+52>>2]=g+v(-.25);o[d+172>>2]=0;s[d+168>>2]=h+v(0);s[d+164>>2]=g+v(.25);s[d+160>>2]=f+v(0);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d+16|0);g=s[e+16>>2];f=s[e+8>>2];h=s[e+12>>2];o[d+60>>2]=0;s[d+52>>2]=h;s[d+48>>2]=f;s[d+56>>2]=g+v(-.25);o[d+172>>2]=0;s[d+168>>2]=g+v(.25);s[d+164>>2]=h+v(0);s[d+160>>2]=f+v(0);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d+16|0);o[d+24>>2]=0;o[d+28>>2]=0;o[d+16>>2]=0;o[d+20>>2]=1065353216;o[d+60>>2]=0;g=s[d+40>>2];s[d+56>>2]=g;f=s[d+36>>2];s[d+52>>2]=f;h=s[d+32>>2];s[d+48>>2]=h+v(-.25);o[d+172>>2]=0;s[d+168>>2]=g+v(0);s[d+164>>2]=f+v(0);s[d+160>>2]=h+v(.25);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d+16|0);o[d+60>>2]=0;g=s[d+40>>2];s[d+56>>2]=g;f=s[d+36>>2];s[d+52>>2]=f+v(-.25);h=s[d+32>>2];s[d+48>>2]=h;o[d+172>>2]=0;s[d+168>>2]=g+v(0);s[d+164>>2]=f+v(.25);s[d+160>>2]=h+v(0);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d+16|0);o[d+60>>2]=0;g=s[d+40>>2];s[d+56>>2]=g+v(-.25);f=s[d+36>>2];s[d+52>>2]=f;h=s[d+32>>2];s[d+48>>2]=h;o[d+172>>2]=0;s[d+168>>2]=g+v(.25);s[d+164>>2]=f+v(0);s[d+160>>2]=h+v(0);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d+16|0);e=o[j>>2];o[d+56>>2]=1065353216;o[d+60>>2]=0;o[d+48>>2]=1065353216;o[d+52>>2]=1065353216;l[o[o[b>>2]+8>>2]](b,e+8|0,d+32|0,d+48|0);i=i+1|0;if((i|0)<o[a+792>>2]){continue}break}}i=o[a+712>>2];if((i|0)<1){break i}k=0;while(1){e=o[a+720>>2]+u(k,104)|0;if(!(!(m[o[e+4>>2]+16|0]&1)|s[e+88>>2]<=v(0)^1)){o[d+40>>2]=0;o[d+44>>2]=0;o[d+32>>2]=1065353216;o[d+36>>2]=0;g=s[e+8>>2];f=s[e+12>>2];h=s[e+16>>2];o[d+60>>2]=0;s[d+56>>2]=h;s[d+52>>2]=f;s[d+48>>2]=g+v(-.25);o[d+172>>2]=0;s[d+168>>2]=h+v(0);s[d+164>>2]=f+v(0);s[d+160>>2]=g+v(.25);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d+32|0);g=s[e+12>>2];f=s[e+8>>2];h=s[e+16>>2];o[d+60>>2]=0;s[d+56>>2]=h;s[d+48>>2]=f;s[d+52>>2]=g+v(-.25);o[d+172>>2]=0;s[d+168>>2]=h+v(0);s[d+164>>2]=g+v(.25);s[d+160>>2]=f+v(0);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d+32|0);g=s[e+16>>2];f=s[e+8>>2];h=s[e+12>>2];o[d+60>>2]=0;s[d+52>>2]=h;s[d+48>>2]=f;s[d+56>>2]=g+v(-.25);o[d+172>>2]=0;s[d+168>>2]=g+v(.25);s[d+164>>2]=h+v(0);s[d+160>>2]=f+v(0);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d+32|0);i=o[a+712>>2]}k=k+1|0;if((k|0)<(i|0)){continue}break}}if(!(!(c&128)|o[a+692>>2]<1)){i=0;while(1){e=o[a+700>>2]+u(i,60)|0;j=o[e+20>>2];o[d+56>>2]=o[e+16>>2];o[d+60>>2]=j;j=o[e+12>>2];o[d+48>>2]=o[e+8>>2];o[d+52>>2]=j;x=o[e+24>>2];if((x|0)>=1){k=0;g=s[d+56>>2];f=s[d+52>>2];h=s[d+48>>2];while(1){E=e+(k<<2)|0;j=o[E+28>>2];q=s[j+12>>2];r=s[j+16>>2];n=s[E+44>>2];h=v(v(s[j+8>>2]*n)+h);s[d+48>>2]=h;g=v(v(n*r)+g);s[d+56>>2]=g;f=v(v(n*q)+f);s[d+52>>2]=f;k=k+1|0;if((x|0)!=(k|0)){continue}break}}l[o[o[b>>2]+40>>2]](b,d+48|0,o[e+4>>2]);i=i+1|0;if((i|0)<o[a+692>>2]){continue}break}}if(c&512){e=o[a+928>>2];o[d+56>>2]=1065353216;o[d+60>>2]=0;o[d+48>>2]=1065353216;o[d+52>>2]=0;o[d+168>>2]=1065353216;o[d+172>>2]=0;o[d+160>>2]=1065353216;o[d+164>>2]=1065353216;nb(b,e,0,d+48|0,d+160|0,0,-1)}if(c&1024){e=o[a+988>>2];o[d+56>>2]=0;o[d+60>>2]=0;o[d+48>>2]=0;o[d+52>>2]=1065353216;o[d+168>>2]=0;o[d+172>>2]=0;o[d+160>>2]=1065353216;o[d+164>>2]=0;nb(b,e,0,d+48|0,d+160|0,0,-1)}if(c&2048){e=o[a+1048>>2];o[d+56>>2]=1065353216;o[d+60>>2]=0;o[d+48>>2]=0;o[d+52>>2]=1065353216;o[d+168>>2]=0;o[d+172>>2]=0;o[d+160>>2]=1065353216;o[d+164>>2]=0;nb(b,e,0,d+48|0,d+160|0,0,-1)}if(!(!(c&4096)|o[a+852>>2]<1)){i=0;while(1){j:{k:{l:{c=o[o[a+860>>2]+(i<<2)>>2];switch(l[o[o[c>>2]+20>>2]](c)|0){case 1:break k;case 0:break l;default:break j}}j=c+4|0;e=Ja(j);n=s[e+52>>2];q=s[e+16>>2];r=s[e+20>>2];w=s[e+24>>2];y=s[e+56>>2];z=s[e+32>>2];t=s[e+36>>2];A=s[e+40>>2];B=s[e+48>>2];D=s[e>>2];F=s[e+4>>2];g=s[c+32>>2];G=s[e+8>>2];f=s[c+36>>2];h=s[c+28>>2];o[d+44>>2]=0;s[d+32>>2]=B+v(v(v(h*D)+v(g*F))+v(f*G));s[d+40>>2]=y+v(v(v(h*z)+v(g*t))+v(f*A));s[d+36>>2]=n+v(v(v(h*q)+v(g*r))+v(f*w));k=c+16|0;e=Ja(k);n=s[e+52>>2];q=s[e+24>>2];r=s[e+20>>2];w=s[e+16>>2];y=s[e+56>>2];z=s[e+40>>2];t=s[e+36>>2];A=s[e+32>>2];B=s[e+48>>2];D=s[e+8>>2];g=s[c+52>>2];F=s[e>>2];f=s[c+44>>2];G=s[e+4>>2];h=s[c+48>>2];o[d+28>>2]=0;s[d+16>>2]=B+v(v(v(f*F)+v(h*G))+v(g*D));s[d+24>>2]=y+v(v(v(f*A)+v(h*t))+v(g*z));s[d+20>>2]=n+v(v(v(f*w)+v(h*r))+v(g*q));c=Ja(j);o[d+56>>2]=0;o[d+60>>2]=0;o[d+48>>2]=1065353216;o[d+52>>2]=1065353216;l[o[o[b>>2]+8>>2]](b,c+48|0,d+32|0,d+48|0);c=Ja(k);o[d+56>>2]=1065353216;o[d+60>>2]=0;o[d+48>>2]=0;o[d+52>>2]=1065353216;l[o[o[b>>2]+8>>2]](b,c+48|0,d+16|0,d+48|0);o[d+8>>2]=0;o[d+12>>2]=0;o[d>>2]=1065353216;o[d+4>>2]=1065353216;o[d+60>>2]=0;g=s[d+40>>2];s[d+56>>2]=g;f=s[d+36>>2];s[d+52>>2]=f;h=s[d+32>>2];s[d+48>>2]=h+v(-.25);o[d+172>>2]=0;s[d+168>>2]=g+v(0);s[d+164>>2]=f+v(0);s[d+160>>2]=h+v(.25);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d);o[d+60>>2]=0;g=s[d+40>>2];s[d+56>>2]=g;f=s[d+36>>2];s[d+52>>2]=f+v(-.25);h=s[d+32>>2];s[d+48>>2]=h;o[d+172>>2]=0;s[d+168>>2]=g+v(0);s[d+164>>2]=f+v(.25);s[d+160>>2]=h+v(0);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d);o[d+60>>2]=0;g=s[d+40>>2];s[d+56>>2]=g+v(-.25);f=s[d+36>>2];s[d+52>>2]=f;h=s[d+32>>2];s[d+48>>2]=h;o[d+172>>2]=0;s[d+168>>2]=g+v(.25);s[d+164>>2]=f+v(0);s[d+160>>2]=h+v(0);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d);o[d+8>>2]=1065353216;o[d+12>>2]=0;o[d>>2]=0;o[d+4>>2]=1065353216;o[d+60>>2]=0;g=s[d+24>>2];s[d+56>>2]=g;f=s[d+20>>2];s[d+52>>2]=f;h=s[d+16>>2];s[d+48>>2]=h+v(-.25);o[d+172>>2]=0;s[d+168>>2]=g+v(0);s[d+164>>2]=f+v(0);s[d+160>>2]=h+v(.25);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d);o[d+60>>2]=0;g=s[d+24>>2];s[d+56>>2]=g;f=s[d+20>>2];s[d+52>>2]=f+v(-.25);h=s[d+16>>2];s[d+48>>2]=h;o[d+172>>2]=0;s[d+168>>2]=g+v(0);s[d+164>>2]=f+v(.25);s[d+160>>2]=h+v(0);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d);o[d+60>>2]=0;g=s[d+24>>2];s[d+56>>2]=g+v(-.25);f=s[d+20>>2];s[d+52>>2]=f;h=s[d+16>>2];s[d+48>>2]=h;o[d+172>>2]=0;s[d+168>>2]=g+v(.25);s[d+164>>2]=f+v(0);s[d+160>>2]=h+v(0);l[o[o[b>>2]+8>>2]](b,d+48|0,d+160|0,d);break j}j=c+4|0;e=Ja(j);k=o[e+60>>2];o[d+56>>2]=o[e+56>>2];o[d+60>>2]=k;k=o[e+52>>2];o[d+48>>2]=o[e+48>>2];o[d+52>>2]=k;k=c+16|0;e=Ja(k);x=o[e+60>>2];o[d+168>>2]=o[e+56>>2];o[d+172>>2]=x;x=o[e+52>>2];o[d+160>>2]=o[e+48>>2];o[d+164>>2]=x;e=Ja(j);w=s[e+16>>2];y=s[e+20>>2];z=s[e+24>>2];t=s[e+32>>2];A=s[e+36>>2];B=s[e+40>>2];D=s[e>>2];g=s[c+32>>2];F=s[e+4>>2];f=s[c+36>>2];G=s[e+8>>2];h=s[c+28>>2];e=Ja(k);O=s[e+8>>2];P=s[e>>2];Q=s[e+4>>2];R=s[e+24>>2];S=s[e+20>>2];T=s[e+16>>2];n=s[c+52>>2];U=s[e+40>>2];q=s[c+48>>2];V=s[e+36>>2];J=s[e+32>>2];r=s[c+44>>2];o[d+44>>2]=0;D=v(v(v(v(D*h)+v(F*g))+v(G*f))*v(10));s[d+32>>2]=D+s[d+48>>2];t=v(v(v(v(h*t)+v(g*A))+v(f*B))*v(10));s[d+40>>2]=t+s[d+56>>2];g=v(v(v(v(h*w)+v(g*y))+v(f*z))*v(10));s[d+36>>2]=g+s[d+52>>2];o[d+24>>2]=0;o[d+28>>2]=0;o[d+16>>2]=1065353216;o[d+20>>2]=1065353216;l[o[o[b>>2]+8>>2]](b,d+48|0,d+32|0,d+16|0);o[d+44>>2]=0;f=v(v(v(v(r*J)+v(q*V))+v(n*U))*v(10));s[d+40>>2]=f+s[d+56>>2];h=v(v(v(v(r*T)+v(q*S))+v(n*R))*v(10));s[d+36>>2]=h+s[d+52>>2];n=v(v(v(v(P*r)+v(Q*q))+v(O*n))*v(10));s[d+32>>2]=n+s[d+48>>2];o[d+24>>2]=0;o[d+28>>2]=0;o[d+16>>2]=1065353216;o[d+20>>2]=1065353216;l[o[o[b>>2]+8>>2]](b,d+48|0,d+32|0,d+16|0);o[d+44>>2]=0;s[d+40>>2]=t+s[d+168>>2];s[d+36>>2]=g+s[d+164>>2];s[d+32>>2]=D+s[d+160>>2];o[d+24>>2]=1065353216;o[d+28>>2]=0;o[d+16>>2]=0;o[d+20>>2]=1065353216;l[o[o[b>>2]+8>>2]](b,d+160|0,d+32|0,d+16|0);o[d+44>>2]=0;s[d+40>>2]=f+s[d+168>>2];s[d+36>>2]=h+s[d+164>>2];s[d+32>>2]=n+s[d+160>>2];o[d+24>>2]=1065353216;o[d+28>>2]=0;o[d+16>>2]=0;o[d+20>>2]=1065353216;l[o[o[b>>2]+8>>2]](b,d+160|0,d+32|0,d+16|0)}i=i+1|0;if((i|0)<o[a+852>>2]){continue}break}}M=d+176|0}function ND(a,b){var c=0,d=0,e=0,f=0,g=v(0),h=v(0),i=0,j=v(0),k=v(0),m=v(0),n=v(0),q=v(0),r=0,t=v(0),u=v(0),w=v(0),x=v(0),y=v(0),z=v(0),A=v(0),B=v(0),C=v(0),D=v(0),E=v(0),F=v(0),G=v(0),H=v(0),I=v(0),J=v(0),K=v(0),L=v(0),N=0,O=v(0),P=0,Q=v(0),R=v(0);c=M-176|0;M=c;d=l[o[o[a>>2]+20>>2]](a)|0;i=l[o[o[d>>2]+48>>2]](d)|0;d=l[o[o[a>>2]+20>>2]](a)|0;d=l[o[o[d>>2]+48>>2]](d)|0;L=s[b+40>>2];a:{if(L<=v(0)){break a}e=i&2048;N=d&4096;b:{switch(o[b+4>>2]+ -3|0){case 0:o[c+124>>2]=0;o[c+128>>2]=0;o[c+136>>2]=0;o[c+140>>2]=0;o[c+132>>2]=1065353216;o[c+156>>2]=0;o[c+160>>2]=0;o[c+152>>2]=1065353216;o[c+164>>2]=0;o[c+168>>2]=0;o[c+172>>2]=0;o[c+116>>2]=0;o[c+120>>2]=0;o[c+112>>2]=1065353216;o[c+144>>2]=0;o[c+148>>2]=0;d=o[b+28>>2];I=s[d+52>>2];t=s[d+8>>2];C=s[d+12>>2];D=s[d+56>>2];F=s[d+28>>2];k=s[d+20>>2];m=s[d+24>>2];n=s[d+60>>2];E=s[b+308>>2];j=s[d+44>>2];G=s[b+300>>2];q=s[d+36>>2];H=s[b+304>>2];g=s[d+40>>2];h=s[d+4>>2];o[c+172>>2]=0;s[c+168>>2]=n+v(v(v(G*q)+v(H*g))+v(E*j));s[c+164>>2]=D+v(v(v(G*k)+v(H*m))+v(E*F));s[c+160>>2]=I+v(v(v(G*h)+v(H*t))+v(E*C));d=l[o[o[a>>2]+20>>2]](a)|0;l[o[o[d>>2]+56>>2]](d,c+112|0,L);d=o[b+32>>2];I=s[d+52>>2];t=s[d+8>>2];C=s[d+12>>2];D=s[d+56>>2];F=s[d+28>>2];k=s[d+20>>2];m=s[d+24>>2];n=s[d+60>>2];E=s[b+324>>2];j=s[d+44>>2];G=s[b+316>>2];q=s[d+36>>2];H=s[b+320>>2];g=s[d+40>>2];h=s[d+4>>2];o[c+172>>2]=0;s[c+168>>2]=n+v(v(v(G*q)+v(H*g))+v(E*j));s[c+164>>2]=D+v(v(v(G*k)+v(H*m))+v(E*F));s[c+160>>2]=I+v(v(v(G*h)+v(H*t))+v(E*C));if(!e){break a}a=l[o[o[a>>2]+20>>2]](a)|0;l[o[o[a>>2]+56>>2]](a,c+112|0,L);break a;case 1:d=o[b+28>>2];q=s[d+52>>2];w=s[d+8>>2];x=s[d+12>>2];E=s[b+584>>2];G=s[b+552>>2];H=s[b+568>>2];g=s[d+56>>2];h=s[d+60>>2];I=s[b+608>>2];t=s[b+600>>2];C=s[b+604>>2];u=s[d+28>>2];y=s[d+20>>2];z=s[d+24>>2];D=s[b+588>>2];F=s[b+556>>2];k=s[b+572>>2];m=s[b+592>>2];A=s[d+44>>2];n=s[b+560>>2];B=s[d+36>>2];j=s[b+576>>2];J=s[d+40>>2];K=s[d+4>>2];o[c+172>>2]=0;o[c+156>>2]=0;o[c+140>>2]=0;s[c+152>>2]=v(v(n*B)+v(j*J))+v(m*A);s[c+148>>2]=v(v(F*B)+v(k*J))+v(D*A);s[c+136>>2]=v(v(n*y)+v(j*z))+v(m*u);s[c+132>>2]=v(v(F*y)+v(k*z))+v(D*u);s[c+168>>2]=h+v(v(v(B*t)+v(J*C))+v(A*I));s[c+164>>2]=g+v(v(v(y*t)+v(z*C))+v(u*I));o[c+124>>2]=0;s[c+144>>2]=v(v(G*B)+v(H*J))+v(E*A);s[c+128>>2]=v(v(G*y)+v(H*z))+v(E*u);s[c+120>>2]=v(v(K*n)+v(w*j))+v(x*m);s[c+116>>2]=v(v(K*F)+v(w*k))+v(x*D);s[c+112>>2]=v(v(G*K)+v(H*w))+v(E*x);s[c+160>>2]=q+v(v(v(K*t)+v(w*C))+v(x*I));c:{if(e){d=l[o[o[a>>2]+20>>2]](a)|0;l[o[o[d>>2]+56>>2]](d,c+112|0,L);d=o[b+32>>2];q=s[d+52>>2];g=s[d+56>>2];h=s[d+60>>2];E=s[b+672>>2];G=s[b+664>>2];H=s[b+668>>2];w=s[d+8>>2];x=s[d+12>>2];u=s[d+28>>2];y=s[d+20>>2];z=s[d+24>>2];I=s[b+648>>2];t=s[b+616>>2];C=s[b+632>>2];D=s[b+652>>2];F=s[b+620>>2];k=s[b+636>>2];m=s[b+656>>2];A=s[d+44>>2];n=s[b+624>>2];B=s[d+36>>2];j=s[b+640>>2];J=s[d+40>>2];K=s[d+4>>2];o[c+172>>2]=0;o[c+156>>2]=0;o[c+140>>2]=0;o[c+124>>2]=0;s[c+152>>2]=v(v(n*B)+v(j*J))+v(m*A);s[c+148>>2]=v(v(F*B)+v(k*J))+v(D*A);s[c+144>>2]=v(v(t*B)+v(C*J))+v(I*A);s[c+136>>2]=v(v(n*y)+v(j*z))+v(m*u);s[c+132>>2]=v(v(F*y)+v(k*z))+v(D*u);s[c+128>>2]=v(v(t*y)+v(C*z))+v(I*u);s[c+120>>2]=v(v(K*n)+v(w*j))+v(x*m);s[c+116>>2]=v(v(K*F)+v(w*k))+v(x*D);s[c+112>>2]=v(v(t*K)+v(C*w))+v(I*x);s[c+168>>2]=h+v(v(v(B*G)+v(J*H))+v(A*E));s[c+164>>2]=g+v(v(v(y*G)+v(z*H))+v(u*E));s[c+160>>2]=q+v(v(v(K*G)+v(w*H))+v(x*E));d=l[o[o[a>>2]+20>>2]](a)|0;l[o[o[d>>2]+56>>2]](d,c+112|0,L);break c}d=o[b+32>>2];q=s[d+52>>2];g=s[d+56>>2];h=s[d+60>>2];E=s[b+672>>2];G=s[b+664>>2];H=s[b+668>>2];w=s[d+8>>2];x=s[d+12>>2];u=s[d+28>>2];y=s[d+20>>2];z=s[d+24>>2];I=s[b+648>>2];t=s[b+616>>2];C=s[b+632>>2];D=s[b+652>>2];F=s[b+620>>2];k=s[b+636>>2];m=s[b+656>>2];A=s[d+44>>2];n=s[b+624>>2];B=s[d+36>>2];j=s[b+640>>2];J=s[d+40>>2];K=s[d+4>>2];o[c+172>>2]=0;o[c+156>>2]=0;o[c+140>>2]=0;o[c+124>>2]=0;s[c+152>>2]=v(v(n*B)+v(j*J))+v(m*A);s[c+148>>2]=v(v(F*B)+v(k*J))+v(D*A);s[c+144>>2]=v(v(t*B)+v(C*J))+v(I*A);s[c+136>>2]=v(v(n*y)+v(j*z))+v(m*u);s[c+132>>2]=v(v(F*y)+v(k*z))+v(D*u);s[c+128>>2]=v(v(t*y)+v(C*z))+v(I*u);s[c+120>>2]=v(v(K*n)+v(w*j))+v(x*m);s[c+116>>2]=v(v(K*F)+v(w*k))+v(x*D);s[c+112>>2]=v(v(t*K)+v(C*w))+v(I*x);s[c+168>>2]=h+v(v(v(B*G)+v(J*H))+v(A*E));s[c+164>>2]=g+v(v(v(y*G)+v(z*H))+v(u*E));s[c+160>>2]=q+v(v(v(K*G)+v(w*H))+v(x*E))}b=b+688|0;g=Jd(b);h=Kd(b);if(!N|g==h){break a}o[c+96>>2]=o[c+120>>2];o[c+100>>2]=o[c+136>>2];o[c+108>>2]=0;o[c+104>>2]=o[c+152>>2];o[c+80>>2]=o[c+112>>2];o[c+84>>2]=o[c+128>>2];o[c+92>>2]=0;o[c+88>>2]=o[c+144>>2];b=l[o[o[a>>2]+20>>2]](a)|0;o[c+72>>2]=0;o[c+76>>2]=0;o[c+64>>2]=0;o[c+68>>2]=0;a=g>h;l[o[o[b>>2]+60>>2]](b,c+160|0,c+96|0,c+80|0,L,L,a?v(0):g,a?v(6.2831854820251465):h,c- -64|0,a^1,v(10));break a;case 2:d=o[b+28>>2];q=s[d+52>>2];w=s[d+8>>2];x=s[d+12>>2];E=s[b+332>>2];G=s[b+300>>2];H=s[b+316>>2];g=s[d+56>>2];h=s[d+60>>2];I=s[b+356>>2];t=s[b+348>>2];C=s[b+352>>2];u=s[d+28>>2];y=s[d+20>>2];z=s[d+24>>2];D=s[b+336>>2];F=s[b+304>>2];k=s[b+320>>2];m=s[b+340>>2];A=s[d+44>>2];n=s[b+308>>2];B=s[d+36>>2];j=s[b+324>>2];J=s[d+40>>2];K=s[d+4>>2];o[c+172>>2]=0;o[c+156>>2]=0;o[c+140>>2]=0;s[c+152>>2]=v(v(n*B)+v(j*J))+v(m*A);s[c+148>>2]=v(v(F*B)+v(k*J))+v(D*A);s[c+136>>2]=v(v(n*y)+v(j*z))+v(m*u);s[c+132>>2]=v(v(F*y)+v(k*z))+v(D*u);s[c+168>>2]=h+v(v(v(B*t)+v(J*C))+v(A*I));s[c+164>>2]=g+v(v(v(y*t)+v(z*C))+v(u*I));o[c+124>>2]=0;s[c+144>>2]=v(v(G*B)+v(H*J))+v(E*A);s[c+128>>2]=v(v(G*y)+v(H*z))+v(E*u);s[c+120>>2]=v(v(K*n)+v(w*j))+v(x*m);s[c+116>>2]=v(v(K*F)+v(w*k))+v(x*D);s[c+112>>2]=v(v(G*K)+v(H*w))+v(E*x);s[c+160>>2]=q+v(v(v(K*t)+v(w*C))+v(x*I));d:{if(e){d=l[o[o[a>>2]+20>>2]](a)|0;l[o[o[d>>2]+56>>2]](d,c+112|0,L);d=o[b+32>>2];q=s[d+52>>2];g=s[d+56>>2];h=s[d+60>>2];E=s[b+420>>2];G=s[b+412>>2];H=s[b+416>>2];w=s[d+8>>2];x=s[d+12>>2];u=s[d+28>>2];y=s[d+20>>2];z=s[d+24>>2];I=s[b+396>>2];t=s[b+364>>2];C=s[b+380>>2];D=s[b+400>>2];F=s[b+368>>2];k=s[b+384>>2];m=s[b+404>>2];A=s[d+44>>2];n=s[b+372>>2];B=s[d+36>>2];j=s[b+388>>2];J=s[d+40>>2];K=s[d+4>>2];o[c+172>>2]=0;o[c+156>>2]=0;o[c+140>>2]=0;o[c+124>>2]=0;s[c+152>>2]=v(v(n*B)+v(j*J))+v(m*A);s[c+148>>2]=v(v(F*B)+v(k*J))+v(D*A);s[c+144>>2]=v(v(t*B)+v(C*J))+v(I*A);s[c+136>>2]=v(v(n*y)+v(j*z))+v(m*u);s[c+132>>2]=v(v(F*y)+v(k*z))+v(D*u);s[c+128>>2]=v(v(t*y)+v(C*z))+v(I*u);s[c+120>>2]=v(v(K*n)+v(w*j))+v(x*m);s[c+116>>2]=v(v(K*F)+v(w*k))+v(x*D);s[c+112>>2]=v(v(t*K)+v(C*w))+v(I*x);s[c+168>>2]=h+v(v(v(B*G)+v(J*H))+v(A*E));s[c+164>>2]=g+v(v(v(y*G)+v(z*H))+v(u*E));s[c+160>>2]=q+v(v(v(K*G)+v(w*H))+v(x*E));d=l[o[o[a>>2]+20>>2]](a)|0;l[o[o[d>>2]+56>>2]](d,c+112|0,L);break d}d=o[b+32>>2];q=s[d+52>>2];g=s[d+56>>2];h=s[d+60>>2];E=s[b+420>>2];G=s[b+412>>2];H=s[b+416>>2];w=s[d+8>>2];x=s[d+12>>2];u=s[d+28>>2];y=s[d+20>>2];z=s[d+24>>2];I=s[b+396>>2];t=s[b+364>>2];C=s[b+380>>2];D=s[b+400>>2];F=s[b+368>>2];k=s[b+384>>2];m=s[b+404>>2];A=s[d+44>>2];n=s[b+372>>2];B=s[d+36>>2];j=s[b+388>>2];J=s[d+40>>2];K=s[d+4>>2];o[c+172>>2]=0;o[c+156>>2]=0;o[c+140>>2]=0;o[c+124>>2]=0;s[c+152>>2]=v(v(n*B)+v(j*J))+v(m*A);s[c+148>>2]=v(v(F*B)+v(k*J))+v(D*A);s[c+144>>2]=v(v(t*B)+v(C*J))+v(I*A);s[c+136>>2]=v(v(n*y)+v(j*z))+v(m*u);s[c+132>>2]=v(v(F*y)+v(k*z))+v(D*u);s[c+128>>2]=v(v(t*y)+v(C*z))+v(I*u);s[c+120>>2]=v(v(K*n)+v(w*j))+v(x*m);s[c+116>>2]=v(v(K*F)+v(w*k))+v(x*D);s[c+112>>2]=v(v(t*K)+v(C*w))+v(I*x);s[c+168>>2]=h+v(v(v(B*G)+v(J*H))+v(A*E));s[c+164>>2]=g+v(v(v(y*G)+v(z*H))+v(u*E));s[c+160>>2]=q+v(v(v(K*G)+v(w*H))+v(x*E))}if(!N){break a}oj(c+96|0,b,v(6.0868353843688965),L);o[c+108>>2]=0;q=s[c+96>>2];g=s[c+100>>2];h=s[c+104>>2];s[c+104>>2]=v(v(v(q*s[c+144>>2])+v(g*s[c+148>>2]))+v(h*s[c+152>>2]))+s[c+168>>2];s[c+100>>2]=v(v(v(q*s[c+128>>2])+v(g*s[c+132>>2]))+v(h*s[c+136>>2]))+s[c+164>>2];s[c+96>>2]=v(v(v(q*s[c+112>>2])+v(g*s[c+116>>2]))+v(h*s[c+120>>2]))+s[c+160>>2];d=c+160|0;while(1){oj(c+80|0,b,v(v(v(r|0)*v(6.283185005187988))*v(.03125)),L);o[c+92>>2]=0;q=s[c+80>>2];g=s[c+84>>2];h=s[c+88>>2];s[c+88>>2]=v(v(v(q*s[c+144>>2])+v(g*s[c+148>>2]))+v(h*s[c+152>>2]))+s[c+168>>2];s[c+84>>2]=v(v(v(q*s[c+128>>2])+v(g*s[c+132>>2]))+v(h*s[c+136>>2]))+s[c+164>>2];s[c+80>>2]=v(v(v(q*s[c+112>>2])+v(g*s[c+116>>2]))+v(h*s[c+120>>2]))+s[c+160>>2];i=l[o[o[a>>2]+20>>2]](a)|0;o[c+72>>2]=0;o[c+76>>2]=0;o[c+64>>2]=0;o[c+68>>2]=0;l[o[o[i>>2]+8>>2]](i,c+96|0,c+80|0,c- -64|0);if(!(r&3)){i=l[o[o[a>>2]+20>>2]](a)|0;o[c+72>>2]=0;o[c+76>>2]=0;o[c+64>>2]=0;o[c+68>>2]=0;l[o[o[i>>2]+8>>2]](i,d,c+80|0,c- -64|0)}i=o[c+92>>2];o[c+104>>2]=o[c+88>>2];o[c+108>>2]=i;i=o[c+84>>2];o[c+96>>2]=o[c+80>>2];o[c+100>>2]=i;r=r+1|0;if((r|0)!=32){continue}break}J=s[b+512>>2];K=s[b+452>>2];r=o[b+32>>2];e:{if(s[r+344>>2]>v(0)){O=s[r+36>>2];g=s[b+412>>2];t=s[r+40>>2];h=s[b+416>>2];E=v(v(O*g)+v(t*h));w=s[r+20>>2];x=s[r+24>>2];u=s[r+28>>2];C=s[b+420>>2];G=v(v(v(w*g)+v(x*h))+v(u*C));y=s[r+4>>2];z=s[r+8>>2];A=s[r+12>>2];H=v(v(v(y*g)+v(z*h))+v(A*C));D=s[b+372>>2];F=s[b+388>>2];k=s[b+404>>2];B=s[r+44>>2];I=v(v(v(D*O)+v(F*t))+v(k*B));m=s[b+368>>2];n=s[b+384>>2];j=s[b+400>>2];Q=v(v(v(m*O)+v(n*t))+v(j*B));q=s[b+364>>2];g=s[b+380>>2];h=s[b+396>>2];R=v(v(v(q*O)+v(g*t))+v(h*B));t=v(v(v(D*w)+v(F*x))+v(k*u));O=v(v(v(m*w)+v(n*x))+v(j*u));u=v(v(v(q*w)+v(g*x))+v(h*u));k=v(v(v(y*D)+v(z*F))+v(A*k));m=v(v(v(y*m)+v(z*n))+v(A*j));n=v(v(v(q*y)+v(g*z))+v(h*A));j=v(B*C);break e}r=o[b+28>>2];O=s[r+36>>2];g=s[b+348>>2];t=s[r+40>>2];h=s[b+352>>2];E=v(v(O*g)+v(t*h));w=s[r+20>>2];x=s[r+24>>2];u=s[r+28>>2];C=s[b+356>>2];G=v(v(v(w*g)+v(x*h))+v(u*C));y=s[r+4>>2];z=s[r+8>>2];A=s[r+12>>2];H=v(v(v(y*g)+v(z*h))+v(A*C));D=s[b+308>>2];F=s[b+324>>2];k=s[b+340>>2];B=s[r+44>>2];I=v(v(v(D*O)+v(F*t))+v(k*B));m=s[b+304>>2];n=s[b+320>>2];j=s[b+336>>2];Q=v(v(v(m*O)+v(n*t))+v(j*B));q=s[b+300>>2];g=s[b+316>>2];h=s[b+332>>2];R=v(v(v(q*O)+v(g*t))+v(h*B));t=v(v(v(D*w)+v(F*x))+v(k*u));O=v(v(v(m*w)+v(n*x))+v(j*u));u=v(v(v(q*w)+v(g*x))+v(h*u));k=v(v(v(y*D)+v(z*F))+v(A*k));m=v(v(v(y*m)+v(z*n))+v(A*j));n=v(v(v(q*y)+v(g*z))+v(h*A));j=v(B*C)}q=s[r+52>>2];g=s[r+56>>2];h=s[r+60>>2];o[c+172>>2]=0;o[c+156>>2]=0;s[c+152>>2]=I;s[c+148>>2]=Q;s[c+144>>2]=R;o[c+140>>2]=0;s[c+136>>2]=t;s[c+132>>2]=O;s[c+128>>2]=u;o[c+124>>2]=0;s[c+120>>2]=k;s[c+116>>2]=m;s[c+112>>2]=n;s[c+168>>2]=h+v(E+j);s[c+164>>2]=G+g;s[c+160>>2]=q+H;b=o[d+12>>2];o[c+88>>2]=o[d+8>>2];o[c+92>>2]=b;b=o[d+4>>2];o[c+80>>2]=o[d>>2];o[c+84>>2]=b;o[c+76>>2]=0;s[c+72>>2]=R;s[c+68>>2]=u;s[c+64>>2]=n;o[c+60>>2]=0;s[c+56>>2]=Q;s[c+52>>2]=O;s[c+48>>2]=m;a=l[o[o[a>>2]+20>>2]](a)|0;o[c+40>>2]=0;o[c+44>>2]=0;o[c+32>>2]=0;o[c+36>>2]=0;l[o[o[a>>2]+60>>2]](a,c+80|0,c- -64|0,c+48|0,L,L,v(v(-J)-K),v(K-J),c+32|0,1,v(10));break a;case 3:case 6:i=b+1072|0;d=o[i+4>>2];o[c+120>>2]=o[i>>2];o[c+124>>2]=d;P=b+1064|0;i=P;d=o[i+4>>2];o[c+112>>2]=o[i>>2];o[c+116>>2]=d;i=b+1088|0;d=o[i+4>>2];o[c+136>>2]=o[i>>2];o[c+140>>2]=d;r=b+1080|0;i=r;d=o[i+4>>2];o[c+128>>2]=o[i>>2];o[c+132>>2]=d;i=b+1104|0;d=o[i+4>>2];o[c+152>>2]=o[i>>2];o[c+156>>2]=d;i=b+1096|0;f=i;d=o[f+4>>2];o[c+144>>2]=o[f>>2];o[c+148>>2]=d;f=b+1120|0;d=o[f+4>>2];o[c+168>>2]=o[f>>2];o[c+172>>2]=d;d=b+1112|0;f=o[d+4>>2];o[c+160>>2]=o[d>>2];o[c+164>>2]=f;f:{if(e){f=l[o[o[a>>2]+20>>2]](a)|0;l[o[o[f>>2]+56>>2]](f,c+112|0,L);e=b+1136|0;f=o[e+4>>2];o[c+120>>2]=o[e>>2];o[c+124>>2]=f;e=b+1128|0;f=o[e+4>>2];o[c+112>>2]=o[e>>2];o[c+116>>2]=f;e=b+1152|0;f=o[e+4>>2];o[c+136>>2]=o[e>>2];o[c+140>>2]=f;e=b+1144|0;f=o[e+4>>2];o[c+128>>2]=o[e>>2];o[c+132>>2]=f;e=b+1168|0;f=o[e+4>>2];o[c+152>>2]=o[e>>2];o[c+156>>2]=f;e=b+1160|0;f=o[e+4>>2];o[c+144>>2]=o[e>>2];o[c+148>>2]=f;e=b+1184|0;f=o[e+4>>2];o[c+168>>2]=o[e>>2];o[c+172>>2]=f;e=b+1176|0;f=o[e+4>>2];o[c+160>>2]=o[e>>2];o[c+164>>2]=f;f=l[o[o[a>>2]+20>>2]](a)|0;l[o[o[f>>2]+56>>2]](f,c+112|0,L);break f}e=b+1136|0;f=o[e+4>>2];o[c+120>>2]=o[e>>2];o[c+124>>2]=f;e=b+1128|0;f=o[e+4>>2];o[c+112>>2]=o[e>>2];o[c+116>>2]=f;e=b+1152|0;f=o[e+4>>2];o[c+136>>2]=o[e>>2];o[c+140>>2]=f;e=b+1144|0;f=o[e+4>>2];o[c+128>>2]=o[e>>2];o[c+132>>2]=f;e=b+1168|0;f=o[e+4>>2];o[c+152>>2]=o[e>>2];o[c+156>>2]=f;e=b+1160|0;f=o[e+4>>2];o[c+144>>2]=o[e>>2];o[c+148>>2]=f;e=b+1184|0;f=o[e+4>>2];o[c+168>>2]=o[e>>2];o[c+172>>2]=f;e=b+1176|0;f=o[e+4>>2];o[c+160>>2]=o[e>>2];o[c+164>>2]=f}if(!N){break a}f=P;e=o[f+12>>2];o[c+120>>2]=o[f+8>>2];o[c+124>>2]=e;e=o[f+4>>2];o[c+112>>2]=o[f>>2];o[c+116>>2]=e;f=r;e=o[f+12>>2];o[c+136>>2]=o[f+8>>2];o[c+140>>2]=e;e=o[f+4>>2];o[c+128>>2]=o[f>>2];o[c+132>>2]=e;f=i;e=o[f+12>>2];o[c+152>>2]=o[f+8>>2];o[c+156>>2]=e;e=o[f+4>>2];o[c+144>>2]=o[f>>2];o[c+148>>2]=e;e=o[d+12>>2];o[c+168>>2]=o[d+8>>2];o[c+172>>2]=e;e=o[d+4>>2];o[c+160>>2]=o[d>>2];o[c+164>>2]=e;o[c+96>>2]=o[c+120>>2];o[c+100>>2]=o[c+136>>2];o[c+108>>2]=0;o[c+104>>2]=o[c+152>>2];o[c+80>>2]=o[c+112>>2];o[c+84>>2]=o[c+128>>2];o[c+92>>2]=0;o[c+88>>2]=o[c+144>>2];j=s[b+1e3>>2];q=s[b+996>>2];g=s[b+936>>2];h=s[b+932>>2];f=l[o[o[a>>2]+20>>2]](a)|0;o[c+72>>2]=0;o[c+76>>2]=0;o[c+64>>2]=0;o[c+68>>2]=0;N=b+1176|0;l[o[o[f>>2]+64>>2]](f,N,c+96|0,c+80|0,v(L*v(.8999999761581421)),h,g,q,j,c- -64|0,v(10),1);o[c+92>>2]=0;o[c+88>>2]=o[c+148>>2];o[c+84>>2]=o[c+132>>2];o[c+80>>2]=o[c+116>>2];g=s[b+1196>>2];k=s[c+80>>2];h=s[b+1200>>2];m=qa(h);n=s[c+84>>2];j=ra(h);s[c+68>>2]=v(n*j)-v(m*k);q=qa(g);h=s[c+88>>2];g=ra(g);s[c+72>>2]=v(v(k*v(j*q))+v(n*v(q*m)))+v(h*g);s[c+64>>2]=v(v(k*v(g*j))+v(n*v(g*m)))-v(q*h);e=b+1136|0;f=o[e+4>>2];o[c+120>>2]=o[e>>2];o[c+124>>2]=f;e=b+1128|0;f=o[e+4>>2];o[c+112>>2]=o[e>>2];o[c+116>>2]=f;e=b+1152|0;f=o[e+4>>2];o[c+136>>2]=o[e>>2];o[c+140>>2]=f;e=b+1144|0;f=o[e+4>>2];o[c+128>>2]=o[e>>2];o[c+132>>2]=f;e=b+1168|0;f=o[e+4>>2];o[c+152>>2]=o[e>>2];o[c+156>>2]=f;e=b+1160|0;f=o[e+4>>2];o[c+144>>2]=o[e>>2];o[c+148>>2]=f;f=o[N+4>>2];o[c+160>>2]=o[N>>2];o[c+164>>2]=f;e=b+1184|0;f=o[e+4>>2];o[c+168>>2]=o[e>>2];o[c+172>>2]=f;o[c+60>>2]=0;s[c+56>>2]=-s[c+144>>2];s[c+52>>2]=-s[c+128>>2];s[c+48>>2]=-s[c+112>>2];g=s[b+868>>2];h=s[b+872>>2];g:{if(!!(g>h)){f=l[o[o[a>>2]+20>>2]](a)|0;o[c+40>>2]=0;o[c+44>>2]=0;o[c+32>>2]=0;o[c+36>>2]=0;l[o[o[f>>2]+60>>2]](f,N,c+48|0,c- -64|0,L,L,v(-3.1415927410125732),v(3.1415927410125732),c+32|0,0,v(10));break g}if(!(g<h)){break g}f=l[o[o[a>>2]+20>>2]](a)|0;o[c+40>>2]=0;o[c+44>>2]=0;o[c+32>>2]=0;o[c+36>>2]=0;l[o[o[f>>2]+60>>2]](f,N,c+48|0,c- -64|0,L,L,g,h,c+32|0,1,v(10))}f=o[P+12>>2];o[c+120>>2]=o[P+8>>2];o[c+124>>2]=f;f=o[P+4>>2];o[c+112>>2]=o[P>>2];o[c+116>>2]=f;P=o[r+12>>2];o[c+136>>2]=o[r+8>>2];o[c+140>>2]=P;P=o[r+4>>2];o[c+128>>2]=o[r>>2];o[c+132>>2]=P;r=o[i+12>>2];o[c+152>>2]=o[i+8>>2];o[c+156>>2]=r;r=o[i+4>>2];o[c+144>>2]=o[i>>2];o[c+148>>2]=r;i=o[d+12>>2];o[c+168>>2]=o[d+8>>2];o[c+172>>2]=i;i=o[d+4>>2];o[c+160>>2]=o[d>>2];o[c+164>>2]=i;d=o[b+692>>2];o[c+40>>2]=o[b+688>>2];o[c+44>>2]=d;d=o[b+684>>2];o[c+32>>2]=o[b+680>>2];o[c+36>>2]=d;d=o[b+708>>2];o[c+24>>2]=o[b+704>>2];o[c+28>>2]=d;d=o[b+700>>2];o[c+16>>2]=o[b+696>>2];o[c+20>>2]=d;a=l[o[o[a>>2]+20>>2]](a)|0;o[c+8>>2]=0;o[c+12>>2]=0;o[c>>2]=0;o[c+4>>2]=0;l[o[o[a>>2]+72>>2]](a,c+32|0,c+16|0,c+112|0,c);break a;case 4:break b;default:break a}}d=o[b+836>>2];o[c+120>>2]=o[b+832>>2];o[c+124>>2]=d;r=b+824|0;i=r;d=o[i+4>>2];o[c+112>>2]=o[i>>2];o[c+116>>2]=d;d=o[b+852>>2];o[c+136>>2]=o[b+848>>2];o[c+140>>2]=d;d=o[b+844>>2];o[c+128>>2]=o[b+840>>2];o[c+132>>2]=d;d=o[b+868>>2];o[c+152>>2]=o[b+864>>2];o[c+156>>2]=d;d=o[b+860>>2];o[c+144>>2]=o[b+856>>2];o[c+148>>2]=d;d=o[b+884>>2];o[c+168>>2]=o[b+880>>2];o[c+172>>2]=d;d=o[b+876>>2];o[c+160>>2]=o[b+872>>2];o[c+164>>2]=d;h:{if(e){d=l[o[o[a>>2]+20>>2]](a)|0;l[o[o[d>>2]+56>>2]](d,c+112|0,L);d=o[b+900>>2];o[c+120>>2]=o[b+896>>2];o[c+124>>2]=d;d=o[b+892>>2];o[c+112>>2]=o[b+888>>2];o[c+116>>2]=d;d=o[b+916>>2];o[c+136>>2]=o[b+912>>2];o[c+140>>2]=d;d=o[b+908>>2];o[c+128>>2]=o[b+904>>2];o[c+132>>2]=d;d=o[b+932>>2];o[c+152>>2]=o[b+928>>2];o[c+156>>2]=d;d=o[b+924>>2];o[c+144>>2]=o[b+920>>2];o[c+148>>2]=d;d=o[b+948>>2];o[c+168>>2]=o[b+944>>2];o[c+172>>2]=d;d=o[b+940>>2];o[c+160>>2]=o[b+936>>2];o[c+164>>2]=d;d=l[o[o[a>>2]+20>>2]](a)|0;l[o[o[d>>2]+56>>2]](d,c+112|0,L);break h}d=o[b+900>>2];o[c+120>>2]=o[b+896>>2];o[c+124>>2]=d;d=o[b+892>>2];o[c+112>>2]=o[b+888>>2];o[c+116>>2]=d;d=o[b+916>>2];o[c+136>>2]=o[b+912>>2];o[c+140>>2]=d;d=o[b+908>>2];o[c+128>>2]=o[b+904>>2];o[c+132>>2]=d;d=o[b+932>>2];o[c+152>>2]=o[b+928>>2];o[c+156>>2]=d;d=o[b+924>>2];o[c+144>>2]=o[b+920>>2];o[c+148>>2]=d;d=o[b+948>>2];o[c+168>>2]=o[b+944>>2];o[c+172>>2]=d;d=o[b+940>>2];o[c+160>>2]=o[b+936>>2];o[c+164>>2]=d}if(!N){break a}d=p[b+180|0];i=d?r:b+888|0;G=s[i+48>>2];F=s[i+8>>2];k=s[i+4>>2];e=o[i+4>>2];H=s[i+52>>2];j=s[i+24>>2];I=s[i+16>>2];f=o[i+16>>2];q=s[i+20>>2];P=o[i+20>>2];t=s[i+56>>2];g=s[i+40>>2];C=s[i+32>>2];r=o[i+32>>2];h=s[i+36>>2];i=o[i+36>>2];d=(d?824:888)+b|0;D=s[d>>2];d=o[d>>2];E=s[b+184>>2];o[c+108>>2]=0;m=v(g*v(0));n=v(h*v(0));s[c+104>>2]=t+v(m+v(n+v(E*C)));j=v(j*v(0));q=v(q*v(0));s[c+100>>2]=H+v(j+v(q+v(E*I)));g=v(F*v(0));h=v(k*v(0));s[c+96>>2]=G+v(g+v(h+v(E*D)));k=s[b+188>>2];o[c+92>>2]=0;s[c+88>>2]=t+v(m+v(n+v(k*C)));s[c+84>>2]=H+v(j+v(q+v(k*I)));s[c+80>>2]=G+v(g+v(h+v(k*D)));N=l[o[o[a>>2]+20>>2]](a)|0;o[c+72>>2]=0;o[c+76>>2]=0;o[c+64>>2]=0;o[c+68>>2]=0;l[o[o[N>>2]+8>>2]](N,c+96|0,c+80|0,c- -64|0);o[c+76>>2]=0;o[c+72>>2]=r;o[c+68>>2]=f;o[c+64>>2]=d;o[c+60>>2]=0;o[c+56>>2]=i;o[c+52>>2]=P;o[c+48>>2]=e;g=s[b+196>>2];h=s[b+192>>2];a=l[o[o[a>>2]+20>>2]](a)|0;o[c+40>>2]=0;o[c+44>>2]=0;o[c+32>>2]=0;o[c+36>>2]=0;l[o[o[a>>2]+60>>2]](a,b+936|0,c- -64|0,c+48|0,L,L,h,g,c+32|0,1,v(10))}M=c+176|0}function dC(a,b,c,d){a=a|0;b=b|0;c=c|0;d=v(d);var e=0,f=v(0),g=v(0),h=v(0),i=v(0),j=0,k=v(0),l=0,m=v(0),n=v(0),q=v(0),r=v(0),t=v(0),w=v(0),x=v(0),y=v(0),z=v(0),A=v(0),B=0,D=v(0),E=v(0),F=v(0),G=v(0),H=v(0),I=v(0),J=v(0),K=v(0),L=v(0),N=v(0),O=v(0),P=v(0),Q=v(0),R=v(0),S=v(0),T=v(0),U=v(0),V=v(0),W=v(0),X=v(0),Y=v(0),Z=v(0),_=v(0),$=v(0),aa=v(0),ba=v(0),ca=v(0),da=v(0),ea=0,fa=0,ga=0,ha=v(0),ia=v(0),ja=v(0);e=M-464|0;M=e;a:{if(!p[a+527|0]){break a}j=o[a+32>>2];l=o[a+28>>2];if(!p[a+524|0]){f=s[a+348>>2];g=s[a+352>>2];h=s[a+356>>2];i=s[l+56>>2];r=v(v(v(v(f*s[l+20>>2])+v(g*s[l+24>>2]))+v(h*s[l+28>>2]))+i);k=v(r-i);t=v(s[b+192>>2]+s[b+80>>2]);i=s[l+52>>2];z=v(v(v(v(f*s[l+4>>2])+v(g*s[l+8>>2]))+v(h*s[l+12>>2]))+i);n=v(z-i);A=v(s[b+196>>2]+s[b+84>>2]);i=s[a+412>>2];w=s[a+416>>2];m=s[a+420>>2];q=s[j+56>>2];D=v(v(v(v(i*s[j+20>>2])+v(w*s[j+24>>2]))+v(m*s[j+28>>2]))+q);q=v(D-q);F=v(s[c+192>>2]+s[c+80>>2]);x=s[j+52>>2];E=v(v(v(v(i*s[j+4>>2])+v(w*s[j+8>>2]))+v(m*s[j+12>>2]))+x);x=v(E-x);H=v(s[c+196>>2]+s[c+84>>2]);I=v(v(v(s[b+184>>2]+s[b+72>>2])+v(v(k*t)-v(n*A)))-v(v(s[c+184>>2]+s[c+72>>2])+v(v(q*F)-v(x*H))));J=v(s[b+200>>2]+s[b+88>>2]);h=v(v(v(f*s[l+36>>2])+v(g*s[l+40>>2]))+v(h*s[l+44>>2]));f=s[l+60>>2];g=v(h+f);y=v(g-f);f=v(s[c+200>>2]+s[c+88>>2]);h=s[j+60>>2];i=v(v(v(v(i*s[j+36>>2])+v(w*s[j+40>>2]))+v(m*s[j+44>>2]))+h);w=v(i-h);F=v(v(v(s[b+180>>2]+s[b+68>>2])+v(v(n*J)-v(y*t)))-v(v(s[c+180>>2]+s[c+68>>2])+v(v(x*f)-v(w*F))));A=v(v(v(s[b+176>>2]+s[b+64>>2])+v(v(y*A)-v(k*J)))-v(v(s[c+176>>2]+s[c+64>>2])+v(v(w*H)-v(q*f))));H=v(g-i);D=v(r-D);z=v(z-E);fa=o[c+240>>2];ga=o[b+240>>2];while(1){B=u(ea,84)+a|0;f=v(v(1)/s[B+128>>2]);g=s[B+48>>2];h=s[B+52>>2];i=s[B+56>>2];f=v(v(f*v(v(v(v(v(z*g)+v(D*h))+v(H*i))*v(-.30000001192092896))/d))-v(f*v(v(v(A*g)+v(F*h))+v(I*i))));s[a+36>>2]=s[a+36>>2]+f;g=s[B+48>>2];h=s[B+52>>2];i=s[B+56>>2];if(ga){E=s[l+304>>2];J=s[l+296>>2];K=s[l+300>>2];L=s[l+288>>2];Q=s[l+280>>2];G=s[l+284>>2];t=s[l+272>>2];r=s[l+264>>2];O=s[l+268>>2];m=s[l+344>>2];s[b+64>>2]=v(v(f*v(g*m))*s[b+112>>2])+s[b+64>>2];s[b+68>>2]=v(v(f*v(h*m))*s[b+116>>2])+s[b+68>>2];s[b+72>>2]=v(v(f*v(i*m))*s[b+120>>2])+s[b+72>>2];m=v(v(k*i)-v(y*h));N=v(r*m);r=v(v(y*g)-v(n*i));P=t;t=v(v(n*h)-v(k*g));s[b+80>>2]=v(v(v(N+v(O*r))+v(P*t))*v(f*s[b+96>>2]))+s[b+80>>2];O=s[b+104>>2];s[b+84>>2]=v(v(v(v(m*Q)+v(r*G))+v(t*L))*v(f*s[b+100>>2]))+s[b+84>>2];s[b+88>>2]=v(v(v(v(m*J)+v(r*K))+v(t*E))*v(f*O))+s[b+88>>2]}if(fa){r=s[j+304>>2];t=s[j+296>>2];E=s[j+300>>2];J=s[j+288>>2];K=s[j+280>>2];L=s[j+284>>2];Q=s[j+272>>2];G=s[j+264>>2];O=s[j+268>>2];aa=s[B+56>>2];$=s[B+52>>2];m=s[j+344>>2];f=v(-f);s[c+64>>2]=v(s[c+112>>2]*v(v(m*s[B+48>>2])*f))+s[c+64>>2];s[c+68>>2]=v(v(v(m*$)*f)*s[c+116>>2])+s[c+68>>2];s[c+72>>2]=v(v(v(m*aa)*f)*s[c+120>>2])+s[c+72>>2];m=v(v(q*i)-v(w*h));i=v(v(w*g)-v(x*i));g=v(v(x*h)-v(q*g));s[c+80>>2]=v(v(v(v(G*m)+v(O*i))+v(Q*g))*v(s[c+96>>2]*f))+s[c+80>>2];h=s[c+104>>2];s[c+84>>2]=v(v(v(v(m*K)+v(i*L))+v(g*J))*v(s[c+100>>2]*f))+s[c+84>>2];s[c+88>>2]=v(v(v(v(m*t)+v(i*E))+v(g*r))*v(h*f))+s[c+88>>2]}ea=ea+1|0;if((ea|0)!=3){continue}break}}b:{if(p[a+552|0]){B=o[l+16>>2];o[e+384>>2]=o[l+12>>2];o[e+388>>2]=B;B=o[l+8>>2];o[e+376>>2]=o[l+4>>2];o[e+380>>2]=B;B=o[l+32>>2];o[e+400>>2]=o[l+28>>2];o[e+404>>2]=B;B=o[l+24>>2];o[e+392>>2]=o[l+20>>2];o[e+396>>2]=B;B=o[l+48>>2];o[e+416>>2]=o[l+44>>2];o[e+420>>2]=B;B=o[l+40>>2];o[e+408>>2]=o[l+36>>2];o[e+412>>2]=B;B=o[l+64>>2];o[e+432>>2]=o[l+60>>2];o[e+436>>2]=B;B=o[l+56>>2];o[e+424>>2]=o[l+52>>2];o[e+428>>2]=B;l=o[j+16>>2];o[e+320>>2]=o[j+12>>2];o[e+324>>2]=l;l=o[j+8>>2];o[e+312>>2]=o[j+4>>2];o[e+316>>2]=l;l=o[j+32>>2];o[e+336>>2]=o[j+28>>2];o[e+340>>2]=l;l=o[j+24>>2];o[e+328>>2]=o[j+20>>2];o[e+332>>2]=l;l=o[j+48>>2];o[e+352>>2]=o[j+44>>2];o[e+356>>2]=l;l=o[j+40>>2];o[e+344>>2]=o[j+36>>2];o[e+348>>2]=l;l=o[j+64>>2];o[e+368>>2]=o[j+60>>2];o[e+372>>2]=l;l=o[j+56>>2];o[e+360>>2]=o[j+52>>2];o[e+364>>2]=l;f=s[b+84>>2];g=s[b+196>>2];h=s[b+88>>2];i=s[b+200>>2];k=s[b+80>>2];n=s[b+192>>2];o[e+308>>2]=0;s[e+304>>2]=i+h;s[e+300>>2]=g+f;s[e+296>>2]=n+k;f=s[c+84>>2];g=s[c+196>>2];h=s[c+88>>2];i=s[c+200>>2];k=s[c+80>>2];n=s[c+192>>2];o[e+292>>2]=0;s[e+288>>2]=i+h;s[e+284>>2]=g+f;s[e+280>>2]=n+k;o[e+228>>2]=0;o[e+232>>2]=0;o[e+240>>2]=0;o[e+244>>2]=0;o[e+236>>2]=1065353216;o[e+260>>2]=0;o[e+264>>2]=0;o[e+256>>2]=1065353216;o[e+268>>2]=0;o[e+272>>2]=0;o[e+276>>2]=0;o[e+220>>2]=0;o[e+224>>2]=0;o[e+216>>2]=1065353216;o[e+248>>2]=0;o[e+252>>2]=0;o[e+208>>2]=0;o[e+212>>2]=0;o[e+200>>2]=0;o[e+204>>2]=0;rb(e+376|0,e+200|0,e+296|0,d,e+216|0);o[e+148>>2]=0;o[e+152>>2]=0;o[e+160>>2]=0;o[e+164>>2]=0;o[e+156>>2]=1065353216;o[e+180>>2]=0;o[e+184>>2]=0;o[e+176>>2]=1065353216;o[e+188>>2]=0;o[e+192>>2]=0;o[e+196>>2]=0;o[e+140>>2]=0;o[e+144>>2]=0;o[e+136>>2]=1065353216;o[e+168>>2]=0;o[e+172>>2]=0;rb(e+312|0,e+200|0,e+280|0,d,e+136|0);y=s[a+308>>2];r=s[a+304>>2];i=s[a+324>>2];n=s[a+316>>2];w=s[a+320>>2];m=s[a+404>>2];t=s[a+400>>2];z=s[a+396>>2];A=s[a+372>>2];D=s[a+368>>2];F=s[a+340>>2];E=s[a+332>>2];H=s[a+336>>2];I=s[a+388>>2];J=s[a+384>>2];K=s[a+380>>2];g=s[a+568>>2];k=s[a+564>>2];h=s[a+560>>2];ha=s[a+420>>2];P=s[a+412>>2];ia=s[a+416>>2];L=s[a+300>>2];O=s[a+356>>2];ja=s[a+352>>2];aa=s[a+348>>2];Q=s[a+364>>2];f=s[a+556>>2];o[e+132>>2]=0;o[e+116>>2]=0;o[e+100>>2]=0;x=v(v(2)/v(v(v(v(f*f)+v(h*h))+v(k*k))+v(g*g)));q=v(k*x);U=v(f*q);G=v(h*x);V=v(g*G);N=v(U-V);W=v(f*G);X=v(g*q);R=v(W+X);Y=v(h*G);G=v(k*q);k=v(v(1)-v(Y+G));$=v(v(A*N)+v(v(D*R)+v(Q*k)));Z=v(h*q);h=g;g=v(f*x);_=v(h*g);h=v(Z+_);q=v(W-X);f=v(f*g);x=v(v(1)-v(f+G));W=v(v(A*h)+v(v(Q*q)+v(D*x)));G=v(U+V);S=v(Z-_);T=v(v(1)-v(f+Y));U=v(v(v(Q*G)+v(D*S))+v(A*T));f=v(v(v(E*$)+v(H*W))+v(F*U));V=s[e+168>>2];X=v(v(N*I)+v(v(J*R)+v(K*k)));Y=v(v(h*I)+v(v(K*q)+v(J*x)));Z=v(v(v(K*G)+v(J*S))+v(I*T));g=v(v(v(E*X)+v(H*Y))+v(F*Z));_=s[e+172>>2];N=v(v(v(k*z)+v(R*t))+v(N*m));R=v(v(v(q*z)+v(x*t))+v(h*m));S=v(v(v(G*z)+v(S*t))+v(T*m));h=v(v(v(E*N)+v(H*R))+v(F*S));T=s[e+176>>2];s[e+112>>2]=v(v(f*V)+v(g*_))+v(h*T);q=v(v(v($*n)+v(W*w))+v(U*i));x=v(v(v(X*n)+v(Y*w))+v(Z*i));k=v(v(v(N*n)+v(R*w))+v(S*i));s[e+108>>2]=v(v(V*q)+v(_*x))+v(T*k);ba=s[e+152>>2];ca=s[e+156>>2];da=s[e+160>>2];s[e+96>>2]=v(v(f*ba)+v(g*ca))+v(h*da);s[e+92>>2]=v(v(q*ba)+v(x*ca))+v(k*da);G=v(0);A=v(P+v(v(v(Q*v(0))+v(D*v(0)))+v(A*v(0))));P=i;i=v(-ja);D=v(v(v(P*i)-v(y*aa))-v(F*O));n=v(v(v(n*i)-v(L*aa))-v(E*O));i=v(v(v(w*i)-v(r*aa))-v(H*O));w=v(A+v(v(U*D)+v(v($*n)+v(W*i))));A=v(v(ia+v(v(v(K*v(0))+v(J*v(0)))+v(I*v(0))))+v(v(Z*D)+v(v(X*n)+v(Y*i))));m=v(v(ha+v(v(v(z*v(0))+v(t*v(0)))+v(m*v(0))))+v(v(S*D)+v(v(N*n)+v(R*i))));J=v(v(v(v(V*w)+v(_*A))+v(T*m))+s[e+192>>2]);s[e+128>>2]=J;K=v(v(v(v(ba*w)+v(A*ca))+v(m*da))+s[e+188>>2]);s[e+124>>2]=K;o[e+84>>2]=0;n=v(v(v($*L)+v(W*r))+v(U*y));i=v(v(v(X*L)+v(Y*r))+v(Z*y));y=v(v(v(N*L)+v(R*r))+v(S*y));s[e+104>>2]=v(v(V*n)+v(_*i))+v(T*y);s[e+88>>2]=v(v(n*ba)+v(i*ca))+v(y*da);r=s[e+136>>2];t=s[e+140>>2];z=s[e+144>>2];s[e+80>>2]=v(v(f*r)+v(g*t))+v(h*z);s[e+76>>2]=v(v(q*r)+v(x*t))+v(k*z);s[e+72>>2]=v(v(n*r)+v(i*t))+v(y*z);L=v(v(v(z*m)+v(v(r*w)+v(t*A)))+s[e+184>>2]);s[e+120>>2]=L;o[e+68>>2]=0;o[e+52>>2]=0;o[e+36>>2]=0;r=s[e+248>>2];t=s[e+252>>2];z=s[e+256>>2];s[e+48>>2]=v(v(y*r)+v(k*t))+v(h*z);s[e+44>>2]=v(v(i*r)+v(x*t))+v(g*z);D=s[e+232>>2];F=s[e+236>>2];E=s[e+240>>2];s[e+32>>2]=v(v(y*D)+v(k*F))+v(h*E);s[e+28>>2]=v(v(i*D)+v(x*F))+v(g*E);A=v(-A);H=v(v(v(i*A)-v(n*w))-v(y*m));I=v(v(v(x*A)-v(q*w))-v(k*m));w=v(v(v(g*A)-v(f*w))-v(h*m));m=v(v(v(v(r*H)+v(t*I))+v(z*w))+s[e+272>>2]);s[e- -64>>2]=m;A=v(v(v(v(H*D)+v(I*F))+v(w*E))+s[e+268>>2]);s[e+60>>2]=A;o[e+20>>2]=0;s[e+40>>2]=v(v(n*r)+v(q*t))+v(f*z);s[e+24>>2]=v(v(n*D)+v(q*F))+v(f*E);t=y;y=s[e+216>>2];P=k;k=s[e+220>>2];E=h;h=s[e+224>>2];s[e+16>>2]=v(v(t*y)+v(P*k))+v(E*h);s[e+12>>2]=v(v(i*y)+v(x*k))+v(g*h);s[e+8>>2]=v(v(n*y)+v(q*k))+v(f*h);g=v(v(v(v(H*y)+v(I*k))+v(w*h))+s[e+264>>2]);s[e+56>>2]=g;o[e+212>>2]=0;f=v(v(1)/d);s[e+208>>2]=f*v(J-s[e+432>>2]);s[e+200>>2]=f*v(L-s[e+424>>2]);s[e+204>>2]=f*v(K-s[e+428>>2]);tb(e+376|0,e+72|0,e+448|0,e+444|0);o[e+212>>2]=0;s[e+208>>2]=f*v(m-s[e+368>>2]);s[e+204>>2]=f*v(A-s[e+364>>2]);s[e+200>>2]=f*v(g-s[e+360>>2]);q=s[e+452>>2];g=s[e+444>>2];t=s[e+456>>2];m=s[e+448>>2];tb(e+312|0,e+8|0,e+448|0,e+444|0);h=s[e+444>>2];x=v(v(f*v(h*s[e+456>>2]))-s[e+288>>2]);y=v(v(f*v(h*s[e+452>>2]))-s[e+284>>2]);w=v(v(f*v(s[e+448>>2]*h))-s[e+280>>2]);h=v(0);m=v(v(f*v(m*g))-s[e+296>>2]);r=v(v(f*v(g*q))-s[e+300>>2]);t=v(v(f*v(g*t))-s[e+304>>2]);f=v(v(v(m*m)+v(r*r))+v(t*t));if(!!(f>v(1.1920928955078125e-7))){f=v(v(1)/v(C(f)));n=v(m*f);j=o[a+28>>2];i=v(r*f);k=v(t*f);h=v(v(v(n*v(v(v(n*s[j+264>>2])+v(i*s[j+280>>2]))+v(k*s[j+296>>2])))+v(i*v(v(v(n*s[j+268>>2])+v(i*s[j+284>>2]))+v(k*s[j+300>>2]))))+v(k*v(v(v(n*s[j+272>>2])+v(i*s[j+288>>2]))+v(k*s[j+304>>2]))))}z=v(v(v(w*w)+v(y*y))+v(x*x));if(!!(z>v(1.1920928955078125e-7))){q=v(v(1)/v(C(z)));f=v(w*q);j=o[a+32>>2];g=v(y*q);q=v(x*q);G=v(v(v(f*v(v(v(f*s[j+264>>2])+v(g*s[j+280>>2]))+v(q*s[j+296>>2])))+v(g*v(v(v(f*s[j+268>>2])+v(g*s[j+284>>2]))+v(q*s[j+300>>2]))))+v(q*v(v(v(f*s[j+272>>2])+v(g*s[j+288>>2]))+v(q*s[j+304>>2]))))}f=v(v(h*n)+v(G*f));g=v(v(h*i)+v(G*g));h=v(v(h*k)+v(G*q));i=v(v(v(f*f)+v(g*g))+v(h*h));if(!(i>v(1.1920928955078125e-7))){break b}i=v(v(1)/v(C(i)));f=v(f*i);j=o[a+28>>2];g=v(g*i);h=v(h*i);n=v(v(v(f*v(v(v(f*s[j+264>>2])+v(g*s[j+280>>2]))+v(h*s[j+296>>2])))+v(g*v(v(v(f*s[j+268>>2])+v(g*s[j+284>>2]))+v(h*s[j+300>>2]))))+v(h*v(v(v(f*s[j+272>>2])+v(g*s[j+288>>2]))+v(h*s[j+304>>2]))));l=o[a+32>>2];g=v(v(v(f*v(v(v(f*s[l+264>>2])+v(g*s[l+280>>2]))+v(h*s[l+296>>2])))+v(g*v(v(v(f*s[l+268>>2])+v(g*s[l+284>>2]))+v(h*s[l+300>>2]))))+v(h*v(v(v(f*s[l+272>>2])+v(g*s[l+288>>2]))+v(h*s[l+304>>2]))));f=v(n+g);i=v(v(1)/v(f*f));f=v(v(v(t*n)-v(x*g))*i);h=v(v(v(r*n)-v(y*g))*i);g=v(v(v(m*n)-v(w*g))*i);x=s[a+572>>2];if(!!(x>=v(0))){y=s[a+576>>2];k=v(g+y);w=s[a+580>>2];q=v(h+w);m=s[a+584>>2];i=v(f+m);r=v(C(v(v(v(k*k)+v(q*q))+v(i*i))));n=p[a+553|0]?v(x/n):x;if(!!(r>n)){g=v(v(1)/r);f=v(v(n*v(i*g))-m);i=v(m+f);h=v(v(n*v(q*g))-w);q=v(w+h);g=v(v(n*v(k*g))-y);k=v(y+g)}s[a+584>>2]=i;s[a+580>>2]=q;s[a+576>>2]=k}i=f;f=v(C(v(v(v(g*g)+v(h*h))+v(f*f))));k=v(v(1)/f);i=v(i*k);h=v(h*k);g=v(g*k);if(o[b+240>>2]){n=s[j+304>>2];q=s[j+296>>2];x=s[j+300>>2];y=s[j+288>>2];w=s[j+280>>2];m=s[j+284>>2];r=s[j+272>>2];t=s[j+264>>2];z=s[j+268>>2];k=v(f*v(0));s[b+64>>2]=v(k*s[b+112>>2])+s[b+64>>2];s[b+68>>2]=v(k*s[b+116>>2])+s[b+68>>2];s[b+72>>2]=v(k*s[b+120>>2])+s[b+72>>2];s[b+80>>2]=v(v(v(v(g*t)+v(h*z))+v(i*r))*v(f*s[b+96>>2]))+s[b+80>>2];k=s[b+104>>2];s[b+84>>2]=v(v(v(v(g*w)+v(h*m))+v(i*y))*v(f*s[b+100>>2]))+s[b+84>>2];s[b+88>>2]=v(v(v(v(g*q)+v(h*x))+v(i*n))*v(f*k))+s[b+88>>2]}if(!o[c+240>>2]){break b}n=s[l+304>>2];q=s[l+296>>2];x=s[l+300>>2];y=s[l+288>>2];w=s[l+280>>2];m=s[l+284>>2];r=s[l+272>>2];t=s[l+264>>2];z=s[l+268>>2];k=v(f*v(-0));s[c+64>>2]=v(k*s[c+112>>2])+s[c+64>>2];s[c+68>>2]=v(k*s[c+116>>2])+s[c+68>>2];s[c+72>>2]=v(k*s[c+120>>2])+s[c+72>>2];f=v(-f);s[c+80>>2]=v(v(v(v(g*t)+v(h*z))+v(i*r))*v(s[c+96>>2]*f))+s[c+80>>2];k=s[c+104>>2];s[c+84>>2]=v(v(v(v(g*w)+v(h*m))+v(i*y))*v(s[c+100>>2]*f))+s[c+84>>2];s[c+88>>2]=v(v(v(v(g*q)+v(h*x))+v(i*n))*v(k*f))+s[c+88>>2];break b}f=s[a+440>>2];if(!(f>v(1.1920928955078125e-7))){break b}q=s[b+80>>2];i=v(v(s[c+192>>2]+s[c+80>>2])-v(s[b+192>>2]+q));x=s[b+84>>2];k=v(v(s[c+196>>2]+s[c+84>>2])-v(s[b+196>>2]+x));y=s[b+88>>2];h=v(v(s[c+200>>2]+s[c+88>>2])-v(s[b+200>>2]+y));g=v(v(v(i*i)+v(k*k))+v(h*h));if(!(g>v(1.1920928955078125e-7))){break b}P=h;E=f;n=v(v(1)/v(C(g)));f=v(i*n);w=s[l+264>>2];g=v(k*n);m=s[l+280>>2];h=v(h*n);n=s[l+296>>2];r=s[l+268>>2];t=s[l+284>>2];z=s[l+300>>2];A=s[l+272>>2];D=s[l+288>>2];F=s[l+304>>2];f=v(E*v(v(1)/v(v(v(v(f*v(v(v(f*w)+v(g*m))+v(h*n)))+v(g*v(v(v(f*r)+v(g*t))+v(h*z))))+v(h*v(v(v(f*A)+v(g*D))+v(h*F))))+v(v(v(f*v(v(v(f*s[j+264>>2])+v(g*s[j+280>>2]))+v(h*s[j+296>>2])))+v(g*v(v(v(f*s[j+268>>2])+v(g*s[j+284>>2]))+v(h*s[j+300>>2]))))+v(h*v(v(v(f*s[j+272>>2])+v(g*s[j+288>>2]))+v(h*s[j+304>>2])))))));g=v(P*f);i=v(i*f);h=v(k*f);f=v(C(v(v(g*g)+v(v(i*i)+v(h*h)))));k=v(v(1)/f);g=v(g*k);h=v(h*k);i=v(i*k);if(o[b+240>>2]){k=v(f*v(0));s[b+64>>2]=v(k*s[b+112>>2])+s[b+64>>2];s[b+68>>2]=v(k*s[b+116>>2])+s[b+68>>2];s[b+72>>2]=v(k*s[b+120>>2])+s[b+72>>2];s[b+88>>2]=y+v(v(v(v(i*n)+v(h*z))+v(g*F))*v(f*s[b+104>>2]));s[b+84>>2]=x+v(v(v(v(i*m)+v(h*t))+v(g*D))*v(f*s[b+100>>2]));s[b+80>>2]=q+v(v(v(v(i*w)+v(h*r))+v(g*A))*v(f*s[b+96>>2]))}if(!o[c+240>>2]){break b}n=s[j+304>>2];q=s[j+296>>2];x=s[j+300>>2];y=s[j+288>>2];w=s[j+280>>2];m=s[j+284>>2];r=s[j+272>>2];t=s[j+264>>2];z=s[j+268>>2];k=v(f*v(-0));s[c+64>>2]=v(k*s[c+112>>2])+s[c+64>>2];s[c+68>>2]=v(k*s[c+116>>2])+s[c+68>>2];s[c+72>>2]=v(k*s[c+120>>2])+s[c+72>>2];f=v(-f);s[c+80>>2]=v(v(v(v(i*t)+v(h*z))+v(g*r))*v(s[c+96>>2]*f))+s[c+80>>2];k=s[c+104>>2];s[c+84>>2]=v(v(v(v(i*w)+v(h*m))+v(g*y))*v(s[c+100>>2]*f))+s[c+84>>2];s[c+88>>2]=v(v(v(v(i*q)+v(h*x))+v(g*n))*v(k*f))+s[c+88>>2]}k=v(s[c+200>>2]+s[c+88>>2]);n=v(s[c+196>>2]+s[c+84>>2]);q=v(s[b+200>>2]+s[b+88>>2]);x=v(s[b+196>>2]+s[b+84>>2]);y=v(s[c+192>>2]+s[c+80>>2]);w=v(s[b+192>>2]+s[b+80>>2]);c:{if(!p[a+526|0]){break c}g=s[a+528>>2];f=v(v(v(g*s[a+504>>2])*s[a+432>>2])/d);h=s[a+460>>2];i=s[a+464>>2];m=s[a+468>>2];r=v(v(v(v(y-w)*h)+v(v(n-x)*i))+v(v(k-q)*m));if(!!(r>v(0))){f=v(f+v(v(g*r)*s[a+436>>2]))}g=s[a+516>>2];f=v(g+v(f*s[a+492>>2]));s[e+376>>2]=f;o[e+312>>2]=0;j=f>v(0)?e+376|0:e+312|0;f=s[j>>2];o[a+516>>2]=o[j>>2];f=v(f-g);g=v(m*f);h=v(h*f);m=s[a+536>>2];i=v(i*f);r=s[a+540>>2];t=s[a+544>>2];f=v(v(v(h*m)+v(i*r))+v(g*t));g=v(g-v(t*f));m=v(h-v(m*f));h=v(i-v(r*f));f=v(C(v(v(g*g)+v(v(m*m)+v(h*h)))));i=v(v(1)/f);g=v(g*i);h=v(h*i);i=v(m*i);if(o[b+240>>2]){j=o[a+28>>2];r=s[j+304>>2];t=s[j+296>>2];z=s[j+300>>2];A=s[j+288>>2];D=s[j+280>>2];F=s[j+284>>2];E=s[j+272>>2];H=s[j+268>>2];I=s[j+264>>2];m=v(f*v(0));s[b+64>>2]=v(m*s[b+112>>2])+s[b+64>>2];s[b+68>>2]=v(m*s[b+116>>2])+s[b+68>>2];s[b+72>>2]=v(m*s[b+120>>2])+s[b+72>>2];s[b+80>>2]=v(v(v(v(i*I)+v(h*H))+v(g*E))*v(f*s[b+96>>2]))+s[b+80>>2];m=s[b+104>>2];s[b+84>>2]=v(v(v(v(i*D)+v(h*F))+v(g*A))*v(f*s[b+100>>2]))+s[b+84>>2];s[b+88>>2]=v(v(v(v(i*t)+v(h*z))+v(g*r))*v(f*m))+s[b+88>>2]}if(!o[c+240>>2]){break c}j=o[a+32>>2];r=s[j+304>>2];t=s[j+296>>2];z=s[j+300>>2];A=s[j+288>>2];D=s[j+280>>2];F=s[j+284>>2];E=s[j+272>>2];H=s[j+268>>2];I=s[j+264>>2];m=v(f*v(-0));s[c+64>>2]=v(m*s[c+112>>2])+s[c+64>>2];s[c+68>>2]=v(m*s[c+116>>2])+s[c+68>>2];s[c+72>>2]=v(m*s[c+120>>2])+s[c+72>>2];f=v(-f);s[c+80>>2]=v(v(v(v(i*I)+v(h*H))+v(g*E))*v(s[c+96>>2]*f))+s[c+80>>2];m=s[c+104>>2];s[c+84>>2]=v(v(v(v(i*D)+v(h*F))+v(g*A))*v(s[c+100>>2]*f))+s[c+84>>2];s[c+88>>2]=v(v(v(v(i*t)+v(h*z))+v(g*r))*v(m*f))+s[c+88>>2]}if(!p[a+525|0]){break a}i=s[a+532>>2];d=v(v(v(i*s[a+508>>2])*s[a+432>>2])/d);f=s[a+476>>2];h=s[a+480>>2];g=s[a+484>>2];k=v(v(v(v(y-w)*f)+v(v(n-x)*h))+v(v(k-q)*g));if(!!(k>v(0))){d=v(d+v(v(i*k)*s[a+436>>2]))}i=s[a+520>>2];d=v(i+v(d*s[a+496>>2]));s[e+376>>2]=d;o[e+312>>2]=0;j=d>v(0)?e+376|0:e+312|0;d=s[j>>2];o[a+520>>2]=o[j>>2];d=v(d-i);if(o[b+240>>2]){j=o[a+28>>2];k=s[j+304>>2];n=s[j+296>>2];q=s[j+300>>2];x=s[j+288>>2];y=s[j+280>>2];w=s[j+284>>2];m=s[j+272>>2];r=s[j+268>>2];t=s[j+264>>2];i=v(d*v(0));s[b+64>>2]=v(i*s[b+112>>2])+s[b+64>>2];s[b+68>>2]=v(i*s[b+116>>2])+s[b+68>>2];s[b+72>>2]=v(i*s[b+120>>2])+s[b+72>>2];s[b+80>>2]=v(v(v(v(f*t)+v(h*r))+v(g*m))*v(d*s[b+96>>2]))+s[b+80>>2];i=s[b+104>>2];s[b+84>>2]=v(v(v(v(f*y)+v(h*w))+v(g*x))*v(d*s[b+100>>2]))+s[b+84>>2];s[b+88>>2]=v(v(v(v(f*n)+v(h*q))+v(g*k))*v(d*i))+s[b+88>>2];g=s[a+484>>2];h=s[a+480>>2];f=s[a+476>>2]}if(!o[c+240>>2]){break a}a=o[a+32>>2];k=s[a+304>>2];n=s[a+296>>2];q=s[a+300>>2];x=s[a+288>>2];y=s[a+280>>2];w=s[a+284>>2];m=s[a+272>>2];r=s[a+268>>2];t=s[a+264>>2];i=v(d*v(-0));s[c+64>>2]=v(i*s[c+112>>2])+s[c+64>>2];s[c+68>>2]=v(i*s[c+116>>2])+s[c+68>>2];s[c+72>>2]=v(i*s[c+120>>2])+s[c+72>>2];d=v(-d);s[c+80>>2]=v(v(v(v(f*t)+v(h*r))+v(g*m))*v(s[c+96>>2]*d))+s[c+80>>2];i=s[c+104>>2];s[c+84>>2]=v(v(v(v(f*y)+v(h*w))+v(g*x))*v(s[c+100>>2]*d))+s[c+84>>2];s[c+88>>2]=v(v(v(v(f*n)+v(h*q))+v(g*k))*v(i*d))+s[c+88>>2]}M=e+464|0}function zz(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,n=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0;j=M-96|0;M=j;ye(a,b,c);m[j+52|0]=1;o[j+48>>2]=0;m[j+72|0]=1;o[j+40>>2]=0;o[j+44>>2]=0;o[j+68>>2]=0;m[j+92|0]=1;o[j+60>>2]=0;o[j+64>>2]=0;o[j+88>>2]=0;o[j+80>>2]=0;o[j+84>>2]=0;o[j+28>>2]=0;m[j+32|0]=1;o[j+20>>2]=0;o[j+24>>2]=0;d=o[a+872>>2];o[b+292>>2]=d;a:{if(!d){o[b+260>>2]=0;break a}g=a+868|0;d=l[o[o[c>>2]+28>>2]](c,g)|0;o[b+260>>2]=d;if(!d){break a}i=o[b+292>>2];n=l[o[o[c>>2]+16>>2]](c,4,i)|0;if((i|0)>0){h=o[n+8>>2];while(1){d=h;e=o[o[a+880>>2]+(f<<2)>>2];k=0;b:{if(!e){break b}k=l[o[o[c>>2]+28>>2]](c,e)|0}o[d>>2]=k;if(!l[o[o[c>>2]+24>>2]](c,e)){k=l[o[o[c>>2]+16>>2]](c,16,1)|0;d=o[k+8>>2];o[d+12>>2]=o[e+16>>2];o[d+4>>2]=o[e+8>>2];o[d>>2]=o[e+4>>2];o[d+8>>2]=o[e+12>>2];l[o[o[c>>2]+20>>2]](c,k,21122,1414349395,e)}h=h+4|0;f=f+1|0;if((i|0)!=(f|0)){continue}break}}l[o[o[c>>2]+20>>2]](c,n,21122,1497453121,g)}d=o[a+712>>2];o[b+296>>2]=d;c:{if(!d){o[b+264>>2]=0;break c}k=a+708|0;d=l[o[o[c>>2]+28>>2]](c,k)|0;o[b+264>>2]=d;if(!d){break c}n=o[b+296>>2];g=l[o[o[c>>2]+16>>2]](c,100,n)|0;d=o[g+8>>2];h=0;o[j+12>>2]=0;if((n|0)>=1){while(1){i=o[a+720>>2];f=i+u(h,104)|0;o[d+52>>2]=o[f+56>>2];o[d+56>>2]=o[f+60>>2];o[d+60>>2]=o[f- -64>>2];o[d- -64>>2]=o[f+68>>2];o[d+88>>2]=o[f+92>>2];e=0;o[d+92>>2]=0-(m[f+100|0]&1);o[d+84>>2]=o[f+88>>2];f=o[f+4>>2];if(f){e=l[o[o[c>>2]+28>>2]](c,f)|0;i=o[a+720>>2];h=o[j+12>>2]}o[d>>2]=e;f=u(h,104)+i|0;o[d+68>>2]=o[f+72>>2];o[d+72>>2]=o[f+76>>2];o[d+76>>2]=o[f+80>>2];o[d+80>>2]=o[f+84>>2];o[d+4>>2]=o[f+8>>2];o[d+8>>2]=o[f+12>>2];o[d+12>>2]=o[f+16>>2];o[d+16>>2]=o[f+20>>2];o[d+20>>2]=o[f+24>>2];o[d+24>>2]=o[f+28>>2];o[d+28>>2]=o[f+32>>2];o[d+32>>2]=o[f+36>>2];o[d+36>>2]=o[f+40>>2];o[d+40>>2]=o[f+44>>2];o[d+44>>2]=o[f+48>>2];o[d+48>>2]=o[f+52>>2];o[j>>2]=f;yz(j+16|0,j,j+12|0);h=o[j+12>>2]+1|0;o[j+12>>2]=h;d=d+100|0;if((h|0)<(n|0)){continue}break}}l[o[o[c>>2]+20>>2]](c,g,21143,1145979475,k)}d=o[a+732>>2];o[b+300>>2]=d;d:{if(!d){o[b+268>>2]=0;break d}d=l[o[o[c>>2]+28>>2]](c,o[a+740>>2])|0;o[b+268>>2]=d;if(!d){break d}e=o[b+300>>2];n=l[o[o[c>>2]+16>>2]](c,20,e)|0;i=o[a+740>>2];if((e|0)>=1){d=o[n+8>>2];f=0;while(1){k=u(f,52);g=k+i|0;o[d+16>>2]=0-(m[g+20|0]&1);h=0;g=o[g+4>>2];if(g){h=l[o[o[c>>2]+28>>2]](c,g)|0;i=o[a+740>>2]}o[d>>2]=h;h=d;k=i+k|0;g=o[k+8>>2];if(g){g=(g-o[a+720>>2]|0)/104|0}else{g=-1}o[h+4>>2]=g;h=d;g=o[k+12>>2];if(g){g=(g-o[a+720>>2]|0)/104|0}else{g=-1}o[h+8>>2]=g;o[d+12>>2]=o[k+16>>2];d=d+20|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}l[o[o[c>>2]+20>>2]](c,n,21160,1497453121,i)}d=o[a+752>>2];o[b+304>>2]=d;e:{if(!d){o[b+272>>2]=0;break e}d=l[o[o[c>>2]+28>>2]](c,o[a+760>>2])|0;o[b+272>>2]=d;if(!d){break e}n=o[b+304>>2];k=l[o[o[c>>2]+16>>2]](c,36,n)|0;i=o[a+760>>2];if((n|0)>=1){d=o[k+8>>2];h=0;while(1){f=0;e=u(h,44);g=o[(e+i|0)+4>>2];if(g){f=l[o[o[c>>2]+28>>2]](c,g)|0;i=o[a+760>>2]}o[d+16>>2]=f;e=e+i|0;o[d>>2]=o[e+20>>2];o[d+4>>2]=o[e+24>>2];o[d+8>>2]=o[e+28>>2];o[d+12>>2]=o[e+32>>2];f=d;g=o[e+8>>2];if(g){g=(g-o[a+720>>2]|0)/104|0}else{g=-1}o[f+20>>2]=g;f=d;g=o[e+12>>2];if(g){g=(g-o[a+720>>2]|0)/104|0}else{g=-1}o[f+24>>2]=g;f=d;q=o[e+16>>2];g=-1;f:{if(!q){break f}g=(q-o[a+720>>2]|0)/104|0}o[f+28>>2]=g;o[d+32>>2]=o[e+36>>2];d=d+36|0;h=h+1|0;if((n|0)!=(h|0)){continue}break}}l[o[o[c>>2]+20>>2]](c,k,21177,1497453121,i)}d=o[a+772>>2];o[b+308>>2]=d;g:{if(!d){o[b+276>>2]=0;break g}d=l[o[o[c>>2]+28>>2]](c,o[a+780>>2])|0;o[b+276>>2]=d;if(!d){break g}i=0;n=o[b+308>>2];k=l[o[o[c>>2]+16>>2]](c,100,n)|0;h:{if((n|0)<=0){h=o[a+780>>2];break h}h=o[a+780>>2];d=o[k+8>>2];while(1){q=u(i,104);e=q+h|0;o[d>>2]=o[e+32>>2];o[d+4>>2]=o[e+36>>2];o[d+8>>2]=o[e+40>>2];o[d+12>>2]=o[e+44>>2];f=d;g=o[h+8>>2];if(g){g=(g-o[a+720>>2]|0)/104|0}else{g=-1}o[f+68>>2]=g;o[d+16>>2]=o[e+48>>2];o[d+20>>2]=o[e+52>>2];o[d+24>>2]=o[e+56>>2];o[d+28>>2]=o[e+60>>2];f=d;g=o[h+116>>2];if(g){g=(g-o[a+720>>2]|0)/104|0}else{g=-1}o[f+72>>2]=g;o[d+32>>2]=o[e- -64>>2];o[d+36>>2]=o[e+68>>2];o[d+40>>2]=o[e+72>>2];o[d+44>>2]=o[e+76>>2];f=d;g=o[h+224>>2];if(g){g=(g-o[a+720>>2]|0)/104|0}else{g=-1}o[f+76>>2]=g;o[d+48>>2]=o[e+80>>2];o[d+52>>2]=o[e+84>>2];o[d+56>>2]=o[e+88>>2];o[d+60>>2]=o[e+92>>2];f=d;g=o[h+332>>2];if(g){g=(g-o[a+720>>2]|0)/104|0}else{g=-1}o[f+80>>2]=g;o[d+88>>2]=o[e+96>>2];o[d+92>>2]=o[e+100>>2];f=o[e+4>>2];i:{if(f){f=l[o[o[c>>2]+28>>2]](c,f)|0;h=o[a+780>>2];break i}f=0}o[d+64>>2]=f;o[d+84>>2]=o[(h+q|0)+24>>2];d=d+100|0;i=i+1|0;if((n|0)!=(i|0)){continue}break}}l[o[o[c>>2]+20>>2]](c,k,21194,1497453121,h)}d=o[a+792>>2];o[b+312>>2]=d;j:{if(!d){o[b+280>>2]=0;break j}d=l[o[o[c>>2]+28>>2]](c,o[a+800>>2])|0;o[b+280>>2]=d;if(!d){break j}i=o[b+312>>2];n=l[o[o[c>>2]+16>>2]](c,92,i)|0;f=o[a+800>>2];if((i|0)>=1){d=o[n+8>>2];h=0;while(1){e=u(h,96)+f|0;o[d>>2]=o[e+28>>2];o[d+4>>2]=o[e+32>>2];o[d+8>>2]=o[e+36>>2];o[d+12>>2]=o[e+40>>2];o[d+16>>2]=o[e+44>>2];o[d+20>>2]=o[e+48>>2];o[d+24>>2]=o[e+52>>2];o[d+28>>2]=o[e+56>>2];o[d+32>>2]=o[e+60>>2];o[d+36>>2]=o[e- -64>>2];o[d+40>>2]=o[e+68>>2];o[d+44>>2]=o[e+72>>2];o[d+48>>2]=o[e+76>>2];o[d+52>>2]=o[e+80>>2];o[d+56>>2]=o[e+84>>2];o[d+60>>2]=o[e+88>>2];o[d+88>>2]=o[e+92>>2];o[d+64>>2]=o[e+4>>2];o[d+68>>2]=o[e+8>>2];o[d+72>>2]=o[e+12>>2];o[d+76>>2]=o[e+16>>2];f=d;g=o[e>>2];k=-1;k:{if(!g){break k}k=(g-o[a+720>>2]|0)/104|0}o[f+84>>2]=k;f=d;e=o[e+20>>2];g=0;l:{if(!e){break l}g=l[o[o[c>>2]+28>>2]](c,e)|0}o[f+80>>2]=g;d=d+92|0;f=o[a+800>>2];h=h+1|0;if((i|0)!=(h|0)){continue}break}}l[o[o[c>>2]+20>>2]](c,n,21212,1497453121,f)}o[b+352>>2]=o[a+316>>2];o[b+328>>2]=o[a+292>>2];o[b+344>>2]=o[a+308>>2];o[b+324>>2]=o[a+288>>2];o[b+340>>2]=o[a+304>>2];o[b+336>>2]=o[a+300>>2];o[b+412>>2]=o[a+376>>2];o[b+416>>2]=o[a+380>>2];o[b+420>>2]=o[a+384>>2];o[b+408>>2]=o[a+372>>2];d=o[a+364>>2];o[b+332>>2]=o[a+296>>2];o[b+356>>2]=o[a+320>>2];o[b+424>>2]=o[a+388>>2];o[b+348>>2]=o[a+312>>2];o[b+360>>2]=o[a+324>>2];o[b+364>>2]=o[a+328>>2];o[b+368>>2]=o[a+332>>2];o[b+372>>2]=o[a+336>>2];f=o[a+368>>2];o[b+400>>2]=d;o[b+404>>2]=f;o[b+376>>2]=o[a+340>>2];o[b+380>>2]=o[a+344>>2];o[b+384>>2]=o[a+348>>2];o[b+388>>2]=o[a+352>>2];o[b+392>>2]=o[a+356>>2];o[b+396>>2]=o[a+360>>2];g=a+472|0;o[b+256>>2]=l[o[o[c>>2]+28>>2]](c,g);q=l[o[o[c>>2]+16>>2]](c,192,1)|0;d=o[q+8>>2];o[d+96>>2]=o[a+632>>2];o[d+100>>2]=o[a+636>>2];o[d+104>>2]=o[a+640>>2];o[d+108>>2]=o[a+644>>2];o[d+112>>2]=o[a+648>>2];o[d+116>>2]=o[a+652>>2];o[d+120>>2]=o[a+656>>2];o[d+124>>2]=o[a+660>>2];o[d+128>>2]=o[a+664>>2];o[d+132>>2]=o[a+668>>2];o[d+136>>2]=o[a+672>>2];o[d+140>>2]=o[a+676>>2];o[d+180>>2]=p[a+473|0];o[d+176>>2]=p[a+472|0];o[d+144>>2]=o[a+520>>2];o[d+148>>2]=o[a+524>>2];o[d+152>>2]=o[a+528>>2];o[d+156>>2]=o[a+532>>2];f=o[a+484>>2];o[d+168>>2]=f;m:{if(!f){o[d+160>>2]=0;break m}o[d+160>>2]=l[o[o[c>>2]+28>>2]](c,o[a+492>>2]);h=o[d+168>>2];if(!h){break m}n=l[o[o[c>>2]+16>>2]](c,16,h)|0;k=o[a+492>>2];if((h|0)>=1){f=o[n+8>>2];i=0;while(1){e=k+(i<<4)|0;o[f>>2]=o[e>>2];o[f+4>>2]=o[e+4>>2];o[f+8>>2]=o[e+8>>2];o[f+12>>2]=o[e+12>>2];f=f+16|0;i=i+1|0;if((h|0)!=(i|0)){continue}break}}l[o[o[c>>2]+20>>2]](c,n,21232,1497453121,k)}o[d+184>>2]=o[a+476>>2];o[d>>2]=o[a+536>>2];o[d+4>>2]=o[a+540>>2];o[d+8>>2]=o[a+544>>2];o[d+12>>2]=o[a+548>>2];o[d+16>>2]=o[a+552>>2];o[d+20>>2]=o[a+556>>2];o[d+24>>2]=o[a+560>>2];o[d+28>>2]=o[a+564>>2];o[d+32>>2]=o[a+568>>2];o[d+36>>2]=o[a+572>>2];o[d+40>>2]=o[a+576>>2];o[d+44>>2]=o[a+580>>2];o[d+48>>2]=o[a+584>>2];o[d+52>>2]=o[a+588>>2];o[d+56>>2]=o[a+592>>2];o[d+60>>2]=o[a+596>>2];o[d- -64>>2]=o[a+600>>2];o[d+68>>2]=o[a+604>>2];o[d+72>>2]=o[a+608>>2];o[d+76>>2]=o[a+612>>2];o[d+80>>2]=o[a+616>>2];o[d+84>>2]=o[a+620>>2];o[d+88>>2]=o[a+624>>2];o[d+92>>2]=o[a+628>>2];f=o[a+504>>2];o[d+172>>2]=f;n:{if(!f){o[d+164>>2]=0;break n}o[d+164>>2]=l[o[o[c>>2]+28>>2]](c,o[a+512>>2]);h=o[d+172>>2];if(!h){break n}e=l[o[o[c>>2]+16>>2]](c,4,h)|0;i=o[a+512>>2];if((h|0)>=1){d=o[e+8>>2];f=0;while(1){o[d>>2]=o[i+(f<<2)>>2];d=d+4|0;f=f+1|0;if((h|0)!=(f|0)){continue}break}}l[o[o[c>>2]+20>>2]](c,e,21251,1497453121,i)}l[o[o[c>>2]+20>>2]](c,q,21257,1497453121,g);d=o[a+1112>>2];o[b+316>>2]=d;o:{if(!d){o[b+284>>2]=0;break o}o[b+284>>2]=l[o[o[c>>2]+28>>2]](c,o[o[a+1120>>2]>>2]);n=o[b+316>>2];if(!n){break o}g=l[o[o[c>>2]+16>>2]](c,348,n)|0;d=o[a+1120>>2];if((n|0)>=1){e=o[g+8>>2];k=0;while(1){i=k<<2;d=o[i+d>>2];o[e+320>>2]=o[d+360>>2];o[e+256>>2]=o[d+332>>2];o[e+260>>2]=o[d+336>>2];o[e+264>>2]=o[d+340>>2];o[e+268>>2]=o[d+344>>2];o[e+344>>2]=o[d+380>>2];o[e+340>>2]=p[d+377|0];o[e+160>>2]=o[d+228>>2];o[e+164>>2]=o[d+232>>2];o[e+168>>2]=o[d+236>>2];o[e+172>>2]=o[d+240>>2];o[e+336>>2]=p[d+376|0];o[e+208>>2]=o[d+276>>2];o[e+212>>2]=o[d+280>>2];o[e+216>>2]=o[d+284>>2];o[e+220>>2]=o[d+288>>2];o[e+224>>2]=o[d+292>>2];o[e+228>>2]=o[d+296>>2];o[e+232>>2]=o[d+300>>2];o[e+236>>2]=o[d+304>>2];o[e>>2]=o[d+60>>2];o[e+4>>2]=o[d- -64>>2];o[e+8>>2]=o[d+68>>2];o[e+12>>2]=o[d+72>>2];o[e+16>>2]=o[d+76>>2];o[e+20>>2]=o[d+80>>2];o[e+24>>2]=o[d+84>>2];o[e+28>>2]=o[d+88>>2];o[e+32>>2]=o[d+92>>2];o[e+36>>2]=o[d+96>>2];o[e+40>>2]=o[d+100>>2];o[e+44>>2]=o[d+104>>2];o[e+48>>2]=o[d+108>>2];o[e+52>>2]=o[d+112>>2];o[e+56>>2]=o[d+116>>2];o[e+60>>2]=o[d+120>>2];o[e+296>>2]=o[d+124>>2];o[e+300>>2]=o[d+128>>2];o[e+112>>2]=o[d+180>>2];o[e+116>>2]=o[d+184>>2];o[e+120>>2]=o[d+188>>2];o[e+124>>2]=o[d+192>>2];o[e+128>>2]=o[d+196>>2];o[e+132>>2]=o[d+200>>2];o[e+136>>2]=o[d+204>>2];o[e+140>>2]=o[d+208>>2];o[e+144>>2]=o[d+212>>2];o[e+148>>2]=o[d+216>>2];o[e+152>>2]=o[d+220>>2];o[e+156>>2]=o[d+224>>2];o[e+316>>2]=o[d+356>>2];o[e+64>>2]=o[d+132>>2];o[e+68>>2]=o[d+136>>2];o[e+72>>2]=o[d+140>>2];o[e+76>>2]=o[d+144>>2];o[e+80>>2]=o[d+148>>2];o[e+84>>2]=o[d+152>>2];o[e+88>>2]=o[d+156>>2];o[e+92>>2]=o[d+160>>2];o[e+96>>2]=o[d+164>>2];o[e+100>>2]=o[d+168>>2];o[e+104>>2]=o[d+172>>2];o[e+108>>2]=o[d+176>>2];o[e+240>>2]=o[d+316>>2];o[e+244>>2]=o[d+320>>2];o[e+248>>2]=o[d+324>>2];o[e+252>>2]=o[d+328>>2];o[e+324>>2]=o[d+364>>2];o[e+328>>2]=o[d+368>>2];o[e+312>>2]=o[d+352>>2];o[e+316>>2]=o[d+356>>2];o[e+320>>2]=o[d+360>>2];o[e+332>>2]=o[d+372>>2];f=o[d+44>>2];o[e+284>>2]=f;o[e+292>>2]=o[d+4>>2];o[e+288>>2]=o[d+24>>2];o[e+304>>2]=o[d+308>>2];o[e+176>>2]=o[d+244>>2];o[e+180>>2]=o[d+248>>2];o[e+184>>2]=o[d+252>>2];o[e+188>>2]=o[d+256>>2];o[e+192>>2]=o[d+260>>2];o[e+196>>2]=o[d+264>>2];o[e+200>>2]=o[d+268>>2];o[e+204>>2]=o[d+272>>2];o[e+308>>2]=o[d+312>>2];p:{if(!f){o[e+272>>2]=0;break p}d=l[o[o[c>>2]+28>>2]](c,o[d+52>>2])|0;o[e+272>>2]=d;if(!d){break p}q=o[e+284>>2];r=l[o[o[c>>2]+16>>2]](c,16,q)|0;s=o[o[i+o[a+1120>>2]>>2]+52>>2];if((q|0)>=1){d=o[r+8>>2];h=0;while(1){f=s+(h<<4)|0;o[d>>2]=o[f>>2];o[d+4>>2]=o[f+4>>2];o[d+8>>2]=o[f+8>>2];o[d+12>>2]=o[f+12>>2];d=d+16|0;h=h+1|0;if((q|0)!=(h|0)){continue}break}}l[o[o[c>>2]+20>>2]](c,r,21232,1497453121,s)}q:{if(!o[e+292>>2]){o[e+280>>2]=0;break q}d=l[o[o[c>>2]+28>>2]](c,o[o[i+o[a+1120>>2]>>2]+12>>2])|0;o[e+280>>2]=d;if(!d){break q}h=o[e+292>>2];q=l[o[o[c>>2]+16>>2]](c,4,h)|0;r=o[o[i+o[a+1120>>2]>>2]+12>>2];if((h|0)>=1){d=o[q+8>>2];f=0;while(1){o[d>>2]=o[r+(f<<2)>>2];d=d+4|0;f=f+1|0;if((h|0)!=(f|0)){continue}break}}l[o[o[c>>2]+20>>2]](c,q,21251,1497453121,r)}r:{if(!o[e+288>>2]){o[e+276>>2]=0;break r}d=l[o[o[c>>2]+28>>2]](c,o[i+o[a+1120>>2]>>2]+20|0)|0;o[e+276>>2]=d;if(!d){break r}q=o[e+292>>2];r=l[o[o[c>>2]+16>>2]](c,4,q)|0;s=o[i+o[a+1120>>2]>>2];if((q|0)>=1){v=o[s+32>>2];h=o[r+8>>2];f=0;w=o[j+68>>2];x=o[j+48>>2];t=o[j+88>>2];y=o[j+28>>2];while(1){i=o[(f<<2)+v>>2];d=(i<<15^-1)+i|0;d=u(d>>10^d,9);d=d>>6^d;d=(d<<11^-1)+d|0;d=o[((o[j+64>>2]+ -1&(d>>16^d))<<2)+y>>2];if(o[(d<<3)+t>>2]!=(i|0)){while(1){d=o[(d<<2)+x>>2];if((i|0)!=o[(d<<3)+t>>2]){continue}break}}o[h>>2]=o[(d<<2)+w>>2];h=h+4|0;f=f+1|0;if((q|0)!=(f|0)){continue}break}}l[o[o[c>>2]+20>>2]](c,r,21274,1497453121,s+20|0)}e=e+348|0;d=o[a+1120>>2];k=k+1|0;if((n|0)!=(k|0)){continue}break}}l[o[o[c>>2]+20>>2]](c,g,21278,1497453121,o[d>>2])}d=o[a+852>>2];o[b+320>>2]=d;s:{if(!d){o[b+288>>2]=0;break s}d=b;b=l[o[o[c>>2]+28>>2]](c,o[a+860>>2])|0;o[d+288>>2]=b;if(!b){break s}n=o[a+852>>2];k=l[o[o[c>>2]+16>>2]](c,104,n)|0;i=o[a+860>>2];if((n|0)>=1){d=o[k+8>>2];e=0;while(1){h=e<<2;b=o[h+i>>2];o[d+96>>2]=l[o[o[b>>2]+20>>2]](b);f=h+o[a+860>>2]|0;b=o[f>>2];o[d+8>>2]=o[b+28>>2];o[d+12>>2]=o[b+32>>2];o[d+16>>2]=o[b+36>>2];o[d+20>>2]=o[b+40>>2];o[d+24>>2]=o[b+44>>2];o[d+28>>2]=o[b+48>>2];o[d+32>>2]=o[b+52>>2];o[d+36>>2]=o[b+56>>2];o[d+40>>2]=o[b+60>>2];o[d+44>>2]=o[b+64>>2];o[d+48>>2]=o[b+68>>2];b=p[b+152|0];o[d+56>>2]=0;o[d+60>>2]=0;o[d>>2]=0;o[d+4>>2]=0;o[d+52>>2]=b;b=d- -64|0;o[b>>2]=0;o[b+4>>2]=0;o[d+72>>2]=0;o[d+76>>2]=0;o[d+80>>2]=0;o[d+84>>2]=0;b=o[o[f>>2]+4>>2];if(b){o[d+88>>2]=1;o[d>>2]=l[o[o[c>>2]+28>>2]](c,b)}i=o[a+860>>2];f=o[h+i>>2];b=o[f+12>>2];if(b){o[d+88>>2]=3;o[d>>2]=l[o[o[c>>2]+28>>2]](c,b);i=o[a+860>>2];f=o[h+i>>2]}b=o[f+8>>2];if(b){o[d+88>>2]=2;o[d>>2]=l[o[o[c>>2]+28>>2]](c,b);i=o[a+860>>2];f=o[h+i>>2]}b=o[f+16>>2];if(b){o[d+92>>2]=1;o[d+4>>2]=l[o[o[c>>2]+28>>2]](c,b);i=o[a+860>>2];f=o[h+i>>2]}b=o[f+24>>2];if(b){o[d+92>>2]=3;o[d+4>>2]=l[o[o[c>>2]+28>>2]](c,b);i=o[a+860>>2];f=o[h+i>>2]}b=o[f+20>>2];if(b){o[d+92>>2]=2;o[d+4>>2]=l[o[o[c>>2]+28>>2]](c,b);i=o[a+860>>2]}d=d+104|0;e=e+1|0;if((n|0)!=(e|0)){continue}break}}l[o[o[c>>2]+20>>2]](c,k,21298,1497453121,i)}a=o[j+88>>2];if(a){if(p[j+92|0]){if(a){o[7718]=o[7718]+1;l[o[6607]](a)}}o[j+88>>2]=0}o[j+88>>2]=0;m[j+92|0]=1;o[j+80>>2]=0;o[j+84>>2]=0;a=o[j+68>>2];if(a){if(p[j+72|0]){if(a){o[7718]=o[7718]+1;l[o[6607]](a)}}o[j+68>>2]=0}o[j+68>>2]=0;m[j+72|0]=1;o[j+60>>2]=0;o[j+64>>2]=0;a=o[j+48>>2];if(a){if(p[j+52|0]){if(a){o[7718]=o[7718]+1;l[o[6607]](a)}}o[j+48>>2]=0}o[j+48>>2]=0;m[j+52|0]=1;o[j+40>>2]=0;o[j+44>>2]=0;a=o[j+28>>2];if(a){if(p[j+32|0]){if(a){o[7718]=o[7718]+1;l[o[6607]](a)}}o[j+28>>2]=0}M=j+96|0;return 21318}function lH(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,n=0,q=v(0),r=0,t=v(0),w=v(0),x=0,y=0,z=v(0),A=0,B=v(0),D=0,E=0,F=0,G=v(0),H=v(0);c=M-240|0;M=c;d=o[a+52>>2];if(d){l[o[o[d>>2]>>2]](d)|0;d=o[a+52>>2];if(d){o[7718]=o[7718]+1;l[o[6607]](d)}}o[7717]=o[7717]+1;d=l[o[6606]](132,16)|0;fI(d);o[a+52>>2]=d;o[c+228>>2]=0;o[c+220>>2]=0;o[c+224>>2]=0;m[c+232|0]=1;a:{if((l[o[o[a>>2]+96>>2]](a)|0)<1){break a}while(1){b:{if((f|0)!=(i|0)){d=h;break b}g=i?i<<1:1;if((i|0)>=(g|0)){d=h;break b}e=0;d=0;if(g){o[7717]=o[7717]+1;d=l[o[6606]](g<<4,16)|0}c:{d:{if((i|0)>=1){while(1){j=e<<4;r=j+d|0;k=r;j=h+j|0;x=o[j+4>>2];o[k>>2]=o[j>>2];o[k+4>>2]=x;k=o[j+12>>2];o[r+8>>2]=o[j+8>>2];o[r+12>>2]=k;e=e+1|0;if((i|0)!=(e|0)){continue}break d}}if(!h){break c}}if(p[c+232|0]){if(h){o[7718]=o[7718]+1;l[o[6607]](h)}}o[c+228>>2]=0}o[c+228>>2]=d;m[c+232|0]=1;o[c+224>>2]=g}o[c+220>>2]=f+1;g=o[c+156>>2];f=f<<4;d=f+d|0;o[d>>2]=o[c+152>>2];o[d+4>>2]=g;g=o[c+164>>2];o[d+8>>2]=o[c+160>>2];o[d+12>>2]=g;h=o[c+228>>2];l[o[o[a>>2]+108>>2]](a,n,f+h|0);n=n+1|0;if((n|0)>=(l[o[o[a>>2]+96>>2]](a)|0)){break a}i=o[c+224>>2];f=o[c+220>>2];continue}}m[c+188|0]=1;o[c+184>>2]=0;m[c+208|0]=1;o[c+176>>2]=0;o[c+180>>2]=0;o[c+204>>2]=0;o[c+196>>2]=0;o[c+200>>2]=0;o[c+164>>2]=0;m[c+168|0]=1;o[c+156>>2]=0;o[c+160>>2]=0;e:{if(!b){lf(c+152|0,h,o[c+220>>2]);break e}o[c+60>>2]=0;m[c+64|0]=1;o[c+52>>2]=0;o[c+56>>2]=0;wy(c+216|0,c+48|0);o[c+140>>2]=0;m[c+144|0]=1;o[c+132>>2]=0;o[c+136>>2]=0;if(o[c+52>>2]>=1){h=0;while(1){b=o[c+60>>2]+(h<<4)|0;o[c+112>>2]=o[b+8>>2];d=o[b+4>>2];o[c+104>>2]=o[b>>2];o[c+108>>2]=d;q=v(s[b+12>>2]-v(l[o[o[a>>2]+48>>2]](a)));i=o[c+132>>2];f:{if((i|0)!=o[c+136>>2]){break f}b=i?i<<1:1;if((i|0)>=(b|0)){break f}e=0;d=0;if(b){o[7717]=o[7717]+1;d=l[o[6606]](b<<4,16)|0;i=o[c+132>>2]}if((i|0)>=1){while(1){f=e<<4;g=f+d|0;f=f+o[c+140>>2]|0;r=o[f+4>>2];o[g>>2]=o[f>>2];o[g+4>>2]=r;j=o[f+12>>2];o[g+8>>2]=o[f+8>>2];o[g+12>>2]=j;e=e+1|0;if((i|0)!=(e|0)){continue}break}}f=o[c+140>>2];if(f){if(p[c+144|0]){if(f){o[7718]=o[7718]+1;l[o[6607]](f)}}o[c+140>>2]=0}o[c+140>>2]=d;m[c+144|0]=1;o[c+136>>2]=b;i=o[c+132>>2]}d=o[c+108>>2];b=o[c+140>>2]+(i<<4)|0;o[b>>2]=o[c+104>>2];o[b+4>>2]=d;d=o[c+112>>2];s[b+12>>2]=q;o[b+8>>2]=d;o[c+132>>2]=o[c+132>>2]+1;h=h+1|0;if((h|0)<o[c+52>>2]){continue}break}}o[c+116>>2]=0;m[c+120|0]=1;o[c+108>>2]=0;o[c+112>>2]=0;vy(c+128|0,c+104|0);lf(c+152|0,o[c+116>>2],o[c+108>>2]);b=o[c+116>>2];if(b){if(p[c+120|0]){if(b){o[7718]=o[7718]+1;l[o[6607]](b)}}o[c+116>>2]=0}b=o[c+140>>2];if(b){if(p[c+144|0]){if(b){o[7718]=o[7718]+1;l[o[6607]](b)}}o[c+140>>2]=0}b=o[c+60>>2];if(!b){break e}if(p[c+64|0]){if(b){o[7718]=o[7718]+1;l[o[6607]](b)}}o[c+60>>2]=0}g=0;j=o[c+196>>2];if((j|0)>=1){e=0;o[7717]=o[7717]+1;D=l[o[6606]](j<<4,16)|0;while(1){f=o[c+52>>2];b=(e<<4)+D|0;d=b;o[d>>2]=o[c+48>>2];o[d+4>>2]=f;d=o[c+60>>2];o[b+8>>2]=o[c+56>>2];o[b+12>>2]=d;e=e+1|0;if((j|0)!=(e|0)){continue}break}}o[c+140>>2]=0;m[c+144|0]=1;o[c+132>>2]=0;o[c+136>>2]=0;m[c+63|0]=0;m[c+64|0]=0;m[c+65|0]=0;m[c+66|0]=0;o[c+56>>2]=0;o[c+60>>2]=0;o[c+48>>2]=0;o[c+52>>2]=0;g:{if((j|0)<=-1){d=j;while(1){b=u(d,36)+g|0;f=b;g=o[b+12>>2];if(g){if(p[b+16|0]){if(g){o[7718]=o[7718]+1;l[o[6607]](g)}}o[f+12>>2]=0}m[b+16|0]=1;o[f+12>>2]=0;o[b+4>>2]=0;o[b+8>>2]=0;b=d+1|0;if(b>>>0<d>>>0){break g}g=o[c+140>>2];d=b;continue}}if(!j){break g}Ae(c+128|0,j);f=c+48|3;g=f;d=0;while(1){b=o[c+140>>2]+u(d,36)|0;o[b+4>>2]=0;o[b+8>>2]=0;m[b+16|0]=1;o[b+12>>2]=0;h=p[f+4|0]|p[f+5|0]<<8|(p[f+6|0]<<16|p[f+7|0]<<24);e=p[f|0]|p[f+1|0]<<8|(p[f+2|0]<<16|p[f+3|0]<<24);m[b+20|0]=e;m[b+21|0]=e>>>8;m[b+22|0]=e>>>16;m[b+23|0]=e>>>24;m[b+24|0]=h;m[b+25|0]=h>>>8;m[b+26|0]=h>>>16;m[b+27|0]=h>>>24;h=p[g+12|0]|p[g+13|0]<<8|(p[g+14|0]<<16|p[g+15|0]<<24);e=p[g+8|0]|p[g+9|0]<<8|(p[g+10|0]<<16|p[g+11|0]<<24);m[b+28|0]=e;m[b+29|0]=e>>>8;m[b+30|0]=e>>>16;m[b+31|0]=e>>>24;m[b+32|0]=h;m[b+33|0]=h>>>8;m[b+34|0]=h>>>16;m[b+35|0]=h>>>24;d=d+1|0;if((j|0)!=(d|0)){continue}break}}o[c+132>>2]=j;d=o[a+52>>2];e=o[d+8>>2];h=o[c+156>>2];if((e|0)<(h|0)){if(o[d+12>>2]<(h|0)){h:{if(!h){f=0;b=e;break h}o[7717]=o[7717]+1;f=l[o[6606]](h<<4,16)|0;b=o[d+8>>2]}if((b|0)>=1){g=0;while(1){i=g<<4;r=i+f|0;n=r;i=i+o[d+16>>2]|0;k=o[i+4>>2];o[n>>2]=o[i>>2];o[n+4>>2]=k;n=o[i+12>>2];o[r+8>>2]=o[i+8>>2];o[r+12>>2]=n;g=g+1|0;if((b|0)!=(g|0)){continue}break}}b=o[d+16>>2];if(b){if(p[d+20|0]){if(b){o[7718]=o[7718]+1;l[o[6607]](b)}}o[d+16>>2]=0}o[d+16>>2]=f;o[d+12>>2]=h;m[d+20|0]=1}while(1){g=o[c+52>>2];b=o[d+16>>2]+(e<<4)|0;o[b>>2]=o[c+48>>2];o[b+4>>2]=g;f=o[c+60>>2];o[b+8>>2]=o[c+56>>2];o[b+12>>2]=f;e=e+1|0;if((h|0)!=(e|0)){continue}break}}o[d+8>>2]=h;e=0;if((h|0)>0){while(1){d=e<<4;b=d+o[o[a+52>>2]+16>>2]|0;d=d+o[c+164>>2]|0;f=o[d+4>>2];o[b>>2]=o[d>>2];o[b+4>>2]=f;f=o[d+12>>2];o[b+8>>2]=o[d+8>>2];o[b+12>>2]=f;e=e+1|0;if((h|0)!=(e|0)){continue}break}}if((j|0)>=1){b=0;while(1){f=0;A=o[c+184>>2]+u(o[o[c+204>>2]+(b<<2)>>2],12)|0;d=A;while(1){x=u(b,36);h=x+o[c+140>>2]|0;r=h;y=o[(u(o[d+4>>2],12)+d|0)+8>>2];g=o[h+4>>2];i:{if((g|0)!=o[h+8>>2]){break i}k=g?g<<1:1;if((g|0)>=(k|0)){break i}e=0;i=0;if(k){o[7717]=o[7717]+1;i=l[o[6606]](k<<2,16)|0;g=o[r+4>>2]}n=o[h+12>>2];j:{k:{if((g|0)>=1){while(1){E=e<<2;o[E+i>>2]=o[n+E>>2];e=e+1|0;if((e|0)!=(g|0)){continue}break k}}if(!n){break j}}if(p[h+16|0]){if(n){o[7718]=o[7718]+1;l[o[6607]](n)}}o[h+12>>2]=0;g=o[r+4>>2]}m[h+16|0]=1;o[h+12>>2]=i;o[h+8>>2]=k}o[o[h+12>>2]+(g<<2)>>2]=y;o[r+4>>2]=o[r+4>>2]+1;if((f|0)<=1){h=o[c+164>>2];g=h+(y<<4)|0;q=s[g+4>>2];h=h+(o[d+8>>2]<<4)|0;t=s[h+4>>2];w=s[g>>2];z=s[h>>2];B=s[g+8>>2];G=s[h+8>>2];g=(c+48|0)+(f<<4)|0;o[g+12>>2]=0;w=v(z-w);t=v(t-q);z=v(G-B);q=v(v(1)/v(C(v(v(v(w*w)+v(t*t))+v(z*z)))));s[g+8>>2]=z*q;s[g+4>>2]=t*q;s[g>>2]=w*q;f=f+1|0}else{f=2}d=u(o[d+4>>2],12)+d|0;d=u(o[d>>2],12)+d|0;if((A|0)!=(d|0)){continue}break}l:{if((f|0)==2){q=s[c+52>>2];w=s[c+68>>2];t=s[c+64>>2];z=s[c+56>>2];B=s[c+48>>2];G=s[c+72>>2];f=(b<<4)+D|0;o[f+12>>2]=0;H=v(v(w*B)-v(q*t));w=v(v(q*G)-v(z*w));t=v(v(z*t)-v(G*B));q=v(v(1)/v(C(v(v(H*H)+v(v(w*w)+v(t*t))))));s[f+8>>2]=H*q;s[f+4>>2]=t*q;q=v(w*q);s[f>>2]=q;d=o[c+140>>2];g=x+d|0;s[g+20>>2]=q;o[g+24>>2]=o[f+4>>2];f=o[f+8>>2];o[g+32>>2]=1900671690;o[g+28>>2]=f;break l}d=(b<<4)+D|0;o[d>>2]=0;o[d+4>>2]=0;o[d+8>>2]=0;o[d+12>>2]=0;d=o[c+140>>2]}d=d+x|0;g=o[d+4>>2];m:{if((g|0)<1){q=v(1.0000000150474662e+30);break m}h=o[d+12>>2];f=(b<<4)+D|0;w=s[f+8>>2];t=s[f+4>>2];z=s[f>>2];i=o[o[a+52>>2]+16>>2];q=v(1.0000000150474662e+30);e=0;while(1){f=i+(o[h+(e<<2)>>2]<<4)|0;B=v(v(v(s[f>>2]*z)+v(s[f+4>>2]*t))+v(s[f+8>>2]*w));q=q>B?B:q;e=e+1|0;if((g|0)!=(e|0)){continue}break}}s[d+32>>2]=-q;b=b+1|0;if((j|0)!=(b|0)){continue}break}}j=0;n:{if(o[c+132>>2]>0){r=0;i=0;while(1){o:{if((i|0)!=(j|0)){break o}i=j?j<<1:1;if(j>>>0>=i>>>0){i=j;break o}e=0;o[7717]=o[7717]+1;b=l[o[6606]](i<<2,16)|0;p:{q:{if(j){while(1){d=e<<2;o[d+b>>2]=o[d+r>>2];e=e+1|0;if((j|0)!=(e|0)){continue}break q}}if(r){break q}i=1;break p}if(r){o[7718]=o[7718]+1;l[o[6607]](r)}}r=b}o[(j<<2)+r>>2]=j;j=j+1|0;if((j|0)<o[c+132>>2]){continue}break}while(1){f=j+ -1|0;b=o[(f<<2)+r>>2];o[7717]=o[7717]+1;d=l[o[6606]](4,16)|0;o[d>>2]=b;r:{s:{if((j|0)<2){i=1;b=d;j=f;break s}e=o[c+140>>2];b=e+u(b,36)|0;q=s[b+20>>2];w=s[b+28>>2];t=s[b+24>>2];h=j+ -2|0;g=1;j=f;i=1;while(1){n=o[(h<<2)+r>>2];b=u(n,36)+e|0;t:{if(!(v(v(v(q*s[b+20>>2])+v(t*s[b+24>>2]))+v(w*s[b+28>>2]))>v(.9990000128746033))){f=g;b=d;break t}u:{v:{if((g|0)!=(i|0)){break v}f=g?g<<1:1;if((g|0)>=(f|0)){break v}e=0;b=0;if(f){o[7717]=o[7717]+1;b=l[o[6606]](f<<2,16)|0}w:{if((g|0)>=1){while(1){k=e<<2;o[k+b>>2]=o[d+k>>2];e=e+1|0;if((e|0)!=(g|0)){continue}break w}}if(!d){break u}}if(d){o[7718]=o[7718]+1;l[o[6607]](d)}break u}f=g;b=d}o[(i<<2)+b>>2]=n;i=i+1|0;e=0;if((j|0)<1){break t}while(1){d=(e<<2)+r|0;if((n|0)!=o[d>>2]){e=e+1|0;if((j|0)!=(e|0)){continue}break t}break}if((e|0)>=(j|0)){break t}g=d;j=j+ -1|0;d=(j<<2)+r|0;o[g>>2]=o[d>>2];o[d>>2]=n}if((h|0)>=1){h=h+ -1|0;e=o[c+140>>2];d=b;g=f;continue}break}x:{if((i|0)<=1){break x}d=0;o[c+116>>2]=0;m[c+120|0]=1;o[c+108>>2]=0;o[c+112>>2]=0;o[c+40>>2]=0;o[c+44>>2]=0;o[c+32>>2]=0;o[c+36>>2]=0;q=v(0);w=v(0);t=v(0);f=0;while(1){g=o[c+140>>2]+u(o[(f<<2)+b>>2],36)|0;z=s[g+24>>2];B=s[g+28>>2];s[c+32>>2]=s[g+20>>2]+t;s[c+40>>2]=B+q;s[c+36>>2]=z+w;h=o[g+4>>2];if((h|0)>=1){n=0;while(1){E=o[o[g+12>>2]+(n<<2)>>2];e=o[o[a+52>>2]+16>>2]+(E<<4)|0;k=o[e+12>>2];o[c+16>>2]=o[e+8>>2];o[c+20>>2]=k;k=o[e+4>>2];o[c+8>>2]=o[e>>2];o[c+12>>2]=k;y:{if((d|0)>=1){k=(d|0)>1?d:1;e=0;x=o[c+116>>2];while(1){if((E|0)==o[(x+u(e,24)|0)+20>>2]){break y}e=e+1|0;if((k|0)!=(e|0)){continue}break}}h=o[c+20>>2];o[c+56>>2]=o[c+16>>2];o[c+60>>2]=h;h=o[c+12>>2];o[c+48>>2]=o[c+8>>2];o[c+52>>2]=h;z:{if(o[c+112>>2]!=(d|0)){break z}A=d?d<<1:1;if((d|0)>=(A|0)){break z}e=0;h=0;if(A){o[7717]=o[7717]+1;h=l[o[6606]](u(A,24),16)|0;d=o[c+108>>2]}x=o[c+116>>2];A:{B:{if((d|0)>=1){while(1){k=u(e,24);y=k+h|0;k=k+x|0;F=o[k+4>>2];o[y>>2]=o[k>>2];o[y+4>>2]=F;F=o[k+20>>2];o[y+16>>2]=o[k+16>>2];o[y+20>>2]=F;F=o[k+12>>2];o[y+8>>2]=o[k+8>>2];o[y+12>>2]=F;e=e+1|0;if((e|0)!=(d|0)){continue}break B}}if(!x){break A}}if(p[c+120|0]){if(x){o[7718]=o[7718]+1;l[o[6607]](x)}d=o[c+108>>2]}o[c+116>>2]=0}o[c+116>>2]=h;m[c+120|0]=1;o[c+112>>2]=A}h=o[c+52>>2];d=o[c+116>>2]+u(d,24)|0;o[d>>2]=o[c+48>>2];o[d+4>>2]=h;h=o[c+60>>2];e=o[c+56>>2];k=o[c- -64>>2];o[d+20>>2]=E;o[d+16>>2]=k;o[d+8>>2]=e;o[d+12>>2]=h;d=o[c+108>>2]+1|0;o[c+108>>2]=d;h=o[g+4>>2]}n=n+1|0;if((n|0)<(h|0)){continue}break}}q=s[c+40>>2];w=s[c+36>>2];t=s[c+32>>2];f=f+1|0;if((i|0)!=(f|0)){continue}break}o[c+60>>2]=0;m[c+64|0]=1;o[c+52>>2]=0;o[c+56>>2]=0;d=o[c+140>>2]+u(o[b>>2],36)|0;o[c+68>>2]=o[d+20>>2];o[c+72>>2]=o[d+24>>2];o[c+76>>2]=o[d+28>>2];o[c+80>>2]=o[d+32>>2];z=t;t=v(v(1)/v(C(v(v(v(t*t)+v(w*w))+v(q*q)))));s[c+32>>2]=z*t;s[c+36>>2]=w*t;s[c+40>>2]=q*t;o[c+20>>2]=0;m[c+24|0]=1;o[c+12>>2]=0;o[c+16>>2]=0;kH(c+104|0,c+8|0,c+32|0);C:{if(o[c+12>>2]<=0){d=o[c+108>>2];break C}f=0;h=o[c+52>>2];while(1){k=u(f,24);x=k+o[c+20>>2]|0;D:{if(o[c+56>>2]!=(h|0)){break D}n=h?h<<1:1;if((h|0)>=(n|0)){break D}e=0;g=0;if(n){o[7717]=o[7717]+1;g=l[o[6606]](n<<2,16)|0;h=o[c+52>>2]}d=o[c+60>>2];E:{F:{if((h|0)>=1){while(1){y=e<<2;o[y+g>>2]=o[d+y>>2];e=e+1|0;if((h|0)!=(e|0)){continue}break F}}if(!d){break E}}if(p[c+64|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}}o[c+60>>2]=0;h=o[c+52>>2]}o[c+60>>2]=g;m[c+64|0]=1;o[c+56>>2]=n}o[o[c+60>>2]+(h<<2)>>2]=o[x+20>>2];h=o[c+52>>2]+1|0;o[c+52>>2]=h;d=o[c+108>>2];G:{if((d|0)<1){break G}g=o[(k+o[c+20>>2]|0)+20>>2];e=0;n=o[c+116>>2];while(1){k=n+u(e,24)|0;if((g|0)!=o[k+20>>2]){e=e+1|0;if((e|0)!=(d|0)){continue}break G}break}o[k+20>>2]=-1}f=f+1|0;if((f|0)<o[c+12>>2]){continue}break}}if((d|0)>=1){n=0;h=o[c+140>>2];f=o[c+132>>2];k=o[c+116>>2];while(1){x=o[(k+u(n,24)|0)+20>>2];H:{if((x|0)==-1){break H}g=0;if((f|0)<1){break H}while(1){e=0;I:{if((i|0)>0){while(1){if(o[(e<<2)+b>>2]==(g|0)){break I}e=e+1|0;if((i|0)!=(e|0)){continue}break}}e=h+u(g,36)|0;y=o[e+4>>2];if((y|0)<1){break I}A=o[e+12>>2];e=0;while(1){if((x|0)!=o[A+(e<<2)>>2]){e=e+1|0;if((e|0)<(y|0)){continue}break I}break}d=o[c+20>>2];if(d){if(p[c+24|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}}o[c+20>>2]=0}d=o[c+60>>2];if(d){if(p[c+64|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}}o[c+60>>2]=0}d=o[c+116>>2];if(!d){break x}if(p[c+120|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}}o[c+116>>2]=0;break x}g=g+1|0;if((f|0)!=(g|0)){continue}break}}n=n+1|0;if((n|0)!=(d|0)){continue}break}}Rk(o[a+52>>2]+24|0,c+48|0);d=o[c+20>>2];if(d){if(p[c+24|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}}o[c+20>>2]=0}d=o[c+60>>2];if(d){if(p[c+64|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}}o[c+60>>2]=0}d=o[c+116>>2];if(!d){break r}if(p[c+120|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}}o[c+116>>2]=0;break r}if((i|0)<1){break r}}n=0;while(1){d=o[(n<<2)+b>>2];o[c+60>>2]=0;o[c+52>>2]=0;o[c+56>>2]=0;f=o[c+140>>2];m[c+64|0]=1;d=f+u(d,36)|0;f=o[d+4>>2];J:{if((f|0)>=1){o[7717]=o[7717]+1;k=f<<2;h=l[o[6606]](k,16)|0;e=0;g=o[c+60>>2];x=o[c+52>>2];K:{L:{if((x|0)>=1){while(1){y=e<<2;o[y+h>>2]=o[g+y>>2];e=e+1|0;if((x|0)!=(e|0)){continue}break L}}if(!g){break K}}if(!p[c+64|0]){break K}if(g){o[7718]=o[7718]+1;l[o[6607]](g)}}o[c+60>>2]=h;m[c+64|0]=1;o[c+56>>2]=f;e=0;$(h,0,k);o[c+52>>2]=f;g=o[d+12>>2];h=o[c+60>>2];while(1){k=e<<2;o[k+h>>2]=o[g+k>>2];e=e+1|0;if((f|0)!=(e|0)){continue}break}break J}o[c+52>>2]=f}f=o[d+24>>2];o[c+68>>2]=o[d+20>>2];o[c+72>>2]=f;f=o[d+32>>2];o[c+76>>2]=o[d+28>>2];o[c+80>>2]=f;Rk(o[a+52>>2]+24|0,c+48|0);d=o[c+60>>2];if(d){if(p[c+64|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}}o[c+60>>2]=0}n=n+1|0;if((n|0)!=(i|0)){continue}break}}if(b){if(b){o[7718]=o[7718]+1;l[o[6607]](b)}}if(j){continue}break}Yk(o[a+52>>2]);if(!r){break n}if(r){o[7718]=o[7718]+1;l[o[6607]](r)}break n}Yk(o[a+52>>2])}g=o[c+132>>2];if((g|0)>=1){d=0;while(1){a=o[c+140>>2]+u(d,36)|0;b=a;f=o[b+12>>2];if(f){if(p[a+16|0]){if(f){o[7718]=o[7718]+1;l[o[6607]](f)}}o[b+12>>2]=0}m[a+16|0]=1;o[b+12>>2]=0;o[a+4>>2]=0;o[a+8>>2]=0;d=d+1|0;if((g|0)!=(d|0)){continue}break}}a=o[c+140>>2];if(a){if(p[c+144|0]){if(a){o[7718]=o[7718]+1;l[o[6607]](a)}}o[c+140>>2]=0}if(D){if(D){o[7718]=o[7718]+1;l[o[6607]](D)}}a=o[c+204>>2];if(a){if(p[c+208|0]){if(a){o[7718]=o[7718]+1;l[o[6607]](a)}}o[c+204>>2]=0}o[c+204>>2]=0;m[c+208|0]=1;o[c+196>>2]=0;o[c+200>>2]=0;a=o[c+184>>2];if(a){if(p[c+188|0]){if(a){o[7718]=o[7718]+1;l[o[6607]](a)}}o[c+184>>2]=0}o[c+184>>2]=0;m[c+188|0]=1;o[c+176>>2]=0;o[c+180>>2]=0;a=o[c+164>>2];if(a){if(p[c+168|0]){if(a){o[7718]=o[7718]+1;l[o[6607]](a)}}o[c+164>>2]=0}a=o[c+228>>2];if(a){if(p[c+232|0]){if(a){o[7718]=o[7718]+1;l[o[6607]](a)}}o[c+228>>2]=0}M=c+240|0;return 1}function nJ(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;var f=0,g=0,h=0,i=v(0),j=v(0),k=v(0),n=v(0),q=0,r=0,t=v(0),u=v(0),x=0,z=v(0),A=v(0),B=0,D=v(0),E=v(0),F=0,G=v(0),H=v(0),I=v(0),J=v(0),K=0,L=0,N=v(0),O=v(0),P=v(0),Q=v(0),R=v(0),S=0,T=v(0),U=v(0),V=v(0),W=0,X=v(0),Y=v(0),Z=v(0),_=v(0),$=v(0),aa=0,ba=v(0),ca=v(0),da=v(0),ea=v(0),fa=v(0);f=M-544|0;M=f;h=o[a+20>>2];if(!h){g=o[a+4>>2];h=l[o[o[g>>2]+12>>2]](g,o[b+8>>2],o[c+8>>2])|0;m[a+16|0]=1;o[a+20>>2]=h}o[e+4>>2]=h;q=o[b+4>>2];r=o[c+4>>2];a:{if(!(o[q+4>>2]!=10|o[r+4>>2]!=10)){z=s[h+752>>2];a=o[c+12>>2];d=o[r+52>>2];g=d<<2;c=a+g|0;u=s[c>>2];Y=s[a+48>>2];b=o[b+12>>2];I=v(Y-s[b+48>>2]);Q=s[c+16>>2];Z=s[a+52>>2];T=v(Z-s[b+52>>2]);U=s[c+32>>2];_=s[a+56>>2];V=v(_-s[b+56>>2]);n=v(v(v(u*I)+v(Q*T))+v(U*V));a=b;b=o[q+52>>2];c=b<<2;a=a+c|0;G=s[a>>2];A=s[a+16>>2];D=s[a+32>>2];J=v(v(v(G*I)+v(A*T))+v(D*V));a=r+28|0;k=s[a+g>>2];h=c;c=q+28|0;t=s[h+c>>2];R=s[a+((d+2|0)%3<<2)>>2];$=s[c+((b+2|0)%3<<2)>>2];E=v(v(v(G*u)+v(A*Q))+v(D*U));i=v(v(1)-v(E*E));b:{if(i==v(0)){break b}i=v(v(J-v(E*n))/i);j=v(-t);if(i<j){break b}j=i;if(!(i>t)){break b}j=t}i=v(v(E*j)-n);n=v(-k);c:{d:{if(!!(i<n)){k=v(J-v(k*E));j=v(-t);if(k<j){i=n;break c}if(!(k>t)){i=n;j=k;break c}i=n;break d}if(!(i>k)){break c}n=v(v(k*E)+J);j=v(-t);if(n<j){i=k;break c}if(!(n>t)){i=k;j=n;break c}i=k}j=t}E=v(U*i);k=v(E+v(V-v(D*j)));J=v(u*i);n=v(J+v(I-v(G*j)));u=v(Q*i);i=v(u+v(T-v(A*j)));j=v(v(k*k)+v(v(n*n)+v(i*i)));I=v(C(j));t=v(v(I-$)-R);if(!(t>z)){e:{if(!!(j<=v(1.4210854715202004e-14))){if(!!(v(w(D))>v(.7071067690849304))){o[f>>2]=0;i=v(v(1)/v(C(v(v(A*A)+v(D*D)))));k=v(A*i);s[f+8>>2]=k;i=v(i*v(-D));s[f+4>>2]=i;j=v(0);break e}o[f+8>>2]=0;j=v(v(1)/v(C(v(v(G*G)+v(A*A)))));i=v(G*j);s[f+4>>2]=i;j=v(j*v(-A));s[f>>2]=j;k=v(0);break e}o[f+12>>2]=0;j=v(v(-1)/I);k=v(k*j);s[f+8>>2]=k;i=v(i*j);s[f+4>>2]=i;j=v(n*j);s[f>>2]=j}o[f+420>>2]=0;s[f+416>>2]=v(_+E)+v(R*k);s[f+412>>2]=v(Z+u)+v(R*i);s[f+408>>2]=v(Y+J)+v(R*j)}if(!!(t<z)){l[o[o[e>>2]+16>>2]](e,f,f+408|0,t)}a=o[e+4>>2];if(!o[a+748>>2]){break a}b=o[a+740>>2];c=o[o[e+8>>2]+8>>2];if((b|0)!=(c|0)){sa(a,o[o[e+12>>2]+8>>2]+4|0,c+4|0);break a}sa(a,b+4|0,o[o[e+12>>2]+8>>2]+4|0);break a}o[f+536>>2]=1566444395;S=wg(f+328|0,q,r,o[a+8>>2],o[a+12>>2]);o[S+32>>2]=r;o[S+28>>2]=q;i=v(v(v(l[o[o[q>>2]+48>>2]](q))+v(l[o[o[r>>2]+48>>2]](r)))+s[o[a+20>>2]+752>>2]);s[f+536>>2]=i*i;g=o[b+12>>2];h=o[g+12>>2];o[f+416>>2]=o[g+8>>2];o[f+420>>2]=h;h=o[g+4>>2];o[f+408>>2]=o[g>>2];o[f+412>>2]=h;h=o[g+28>>2];o[f+432>>2]=o[g+24>>2];o[f+436>>2]=h;h=o[g+20>>2];o[f+424>>2]=o[g+16>>2];o[f+428>>2]=h;h=o[g+44>>2];o[f+448>>2]=o[g+40>>2];o[f+452>>2]=h;h=o[g+36>>2];o[f+440>>2]=o[g+32>>2];o[f+444>>2]=h;h=o[g+60>>2];o[f+464>>2]=o[g+56>>2];o[f+468>>2]=h;h=o[g+52>>2];o[f+456>>2]=o[g+48>>2];o[f+460>>2]=h;g=o[c+12>>2];h=o[g+12>>2];o[f+480>>2]=o[g+8>>2];o[f+484>>2]=h;h=o[g+4>>2];o[f+472>>2]=o[g>>2];o[f+476>>2]=h;x=o[g+20>>2];B=f+488|0;h=B;o[h>>2]=o[g+16>>2];o[h+4>>2]=x;h=o[g+28>>2];o[f+496>>2]=o[g+24>>2];o[f+500>>2]=h;F=o[g+36>>2];x=f+504|0;h=x;o[h>>2]=o[g+32>>2];o[h+4>>2]=F;h=o[g+44>>2];o[f+512>>2]=o[g+40>>2];o[f+516>>2]=h;L=o[g+52>>2];F=f+520|0;h=F;o[h>>2]=o[g+48>>2];o[h+4>>2]=L;h=o[g+60>>2];o[f+528>>2]=o[g+56>>2];o[f+532>>2]=h;f:{h=o[q+4>>2];if((h|0)>6){break f}g=o[r+4>>2];if((g|0)>6){break f}o[f+320>>2]=9928;i=v(0);if(h){i=v(l[o[o[q>>2]+48>>2]](q));g=o[r+4>>2]}if(g){j=v(l[o[o[r>>2]+48>>2]](r))}m[f+36|0]=0;s[f+28>>2]=j;s[f+24>>2]=i;o[f+4>>2]=e;o[f>>2]=10104;if(!o[q+52>>2]){break f}if(o[r+52>>2]){j=s[o[a+20>>2]+752>>2];g:{h:{if(p[d+24|0]){i=v(-1.0000000150474662e+30);if(rJ(o[q+52>>2],o[r+52>>2],o[b+12>>2],o[c+12>>2],f+240|0,e)){break h}break g}fb(S,f+408|0,f,o[d+20>>2],0);d=o[f+20>>2];o[f+248>>2]=o[f+16>>2];o[f+252>>2]=d;d=o[f+12>>2];o[f+240>>2]=o[f+8>>2];o[f+244>>2]=d;i=s[f+32>>2];if(!p[f+36|0]|i<v(0)^1){break g}}qJ(f+240|0,o[q+52>>2],o[r+52>>2],o[b+12>>2],o[c+12>>2],v(i-j),j,e)}if(!p[a+16|0]){break a}a=o[e+4>>2];if(!o[a+748>>2]){break a}b=o[a+740>>2];c=o[o[e+8>>2]+8>>2];if((b|0)!=(c|0)){sa(a,o[o[e+12>>2]+8>>2]+4|0,c+4|0);break a}sa(a,b+4|0,o[o[e+12>>2]+8>>2]+4|0);break a}if(o[r+4>>2]!=1){break f}o[f+244>>2]=0;g=o[c+12>>2];n=s[g+52>>2];t=s[g+20>>2];A=s[g+24>>2];D=s[g+56>>2];G=s[g+36>>2];E=s[g+40>>2];i=s[r- -64>>2];j=s[r+56>>2];k=s[r+60>>2];R=s[g+16>>2];J=s[g+32>>2];z=s[g+48>>2];u=s[g+8>>2];I=s[g>>2];Q=s[g+4>>2];o[7717]=o[7717]+1;g=l[o[6606]](16,16)|0;o[f+252>>2]=g;m[f+256|0]=1;o[f+248>>2]=1;o[g+12>>2]=0;s[g>>2]=z+v(v(v(j*I)+v(k*Q))+v(i*u));s[g+8>>2]=D+v(v(v(j*J)+v(k*G))+v(i*E));s[g+4>>2]=n+v(v(v(j*R)+v(k*t))+v(i*A));g=o[f+244>>2]+1|0;o[f+244>>2]=g;i=s[r+72>>2];h=o[c+12>>2];j=s[r+76>>2];k=s[r+80>>2];n=v(v(v(v(i*s[h+32>>2])+v(j*s[h+36>>2]))+v(k*s[h+40>>2]))+s[h+56>>2]);t=v(v(v(v(i*s[h+16>>2])+v(j*s[h+20>>2]))+v(k*s[h+24>>2]))+s[h+52>>2]);i=v(v(v(v(i*s[h>>2])+v(j*s[h+4>>2]))+v(k*s[h+8>>2]))+s[h+48>>2]);i:{if(o[f+248>>2]!=(g|0)){break i}B=g?g<<1:1;if((g|0)>=(B|0)){break i}h=0;if(B){o[7717]=o[7717]+1;K=l[o[6606]](B<<4,16)|0;g=o[f+244>>2]}if((g|0)>=1){while(1){x=h<<4;F=x+K|0;x=x+o[f+252>>2]|0;W=o[x+4>>2];o[F>>2]=o[x>>2];o[F+4>>2]=W;L=o[x+12>>2];o[F+8>>2]=o[x+8>>2];o[F+12>>2]=L;h=h+1|0;if((h|0)!=(g|0)){continue}break}}g=o[f+252>>2];if(g){if(p[f+256|0]){if(g){o[7718]=o[7718]+1;l[o[6607]](g)}}o[f+252>>2]=0}o[f+252>>2]=K;m[f+256|0]=1;o[f+248>>2]=B;g=o[f+244>>2]}g=o[f+252>>2]+(g<<4)|0;o[g+12>>2]=0;s[g+8>>2]=n;s[g+4>>2]=t;s[g>>2]=i;g=o[f+244>>2]+1|0;o[f+244>>2]=g;i=s[r+88>>2];c=o[c+12>>2];j=s[r+92>>2];k=s[r+96>>2];n=v(v(v(v(i*s[c>>2])+v(j*s[c+4>>2]))+v(k*s[c+8>>2]))+s[c+48>>2]);t=v(v(v(v(i*s[c+32>>2])+v(j*s[c+36>>2]))+v(k*s[c+40>>2]))+s[c+56>>2]);i=v(v(v(v(i*s[c+16>>2])+v(j*s[c+20>>2]))+v(k*s[c+24>>2]))+s[c+52>>2]);j:{if(o[f+248>>2]!=(g|0)){break j}c=g?g<<1:1;if((g|0)>=(c|0)){break j}h=0;K=0;if(c){o[7717]=o[7717]+1;K=l[o[6606]](c<<4,16)|0;g=o[f+244>>2]}if((g|0)>=1){while(1){B=h<<4;x=B+K|0;B=B+o[f+252>>2]|0;L=o[B+4>>2];o[x>>2]=o[B>>2];o[x+4>>2]=L;F=o[B+12>>2];o[x+8>>2]=o[B+8>>2];o[x+12>>2]=F;h=h+1|0;if((h|0)!=(g|0)){continue}break}}g=o[f+252>>2];if(g){if(p[f+256|0]){if(g){o[7718]=o[7718]+1;l[o[6607]](g)}}o[f+252>>2]=0}o[f+252>>2]=K;m[f+256|0]=1;o[f+248>>2]=c;g=o[f+244>>2]}c=o[f+252>>2]+(g<<4)|0;o[c+12>>2]=0;s[c+8>>2]=t;s[c+4>>2]=i;s[c>>2]=n;o[f+244>>2]=o[f+244>>2]+1;i=s[o[a+20>>2]+752>>2];fb(S,f+408|0,f+320|0,o[d+20>>2],0);j=s[S+4>>2];k=s[S+8>>2];n=s[S+12>>2];t=v(v(v(j*j)+v(k*k))+v(n*n));if(!!(t>v(1.1920928955078125e-7))){o[f+316>>2]=0;u=n;n=v(v(1)/t);s[f+312>>2]=u*n;s[f+308>>2]=k*n;s[f+304>>2]=j*n;j=s[S+56>>2];k=v(l[o[o[q>>2]+48>>2]](q));n=v(l[o[o[r>>2]+48>>2]](r));ll(f+304|0,o[q+52>>2],o[b+12>>2],f+240|0,v(v(v(j-k)-n)-i),i,e)}k:{if(!p[a+16|0]){break k}a=o[e+4>>2];if(!o[a+748>>2]){break k}b=o[a+740>>2];c=o[o[e+8>>2]+8>>2];if((b|0)!=(c|0)){sa(a,o[o[e+12>>2]+8>>2]+4|0,c+4|0);break k}sa(a,b+4|0,o[o[e+12>>2]+8>>2]+4|0)}a=o[f+252>>2];if(!a){break a}if(p[f+256|0]){if(a){o[7718]=o[7718]+1;l[o[6607]](a)}}o[f+252>>2]=0;break a}fb(S,f+408|0,e,o[d+20>>2],0);l:{if(!o[a+28>>2]|o[o[e+4>>2]+748>>2]>=o[a+32>>2]){break l}i=s[S+4>>2];j=s[S+8>>2];n=s[S+12>>2];t=v(v(v(i*i)+v(j*j))+v(n*n));if(!(t>v(1.1920928955078125e-7))){break l}K=f+472|0;L=f+456|0;W=f+440|0;aa=f+424|0;u=j;j=v(v(1)/t);t=v(u*j);R=v(i*j);J=v(n*j);m:{if(!!(v(w(J))>v(.7071067690849304))){i=v(v(1)/v(C(v(v(J*J)+v(t*t)))));j=v(t*i);i=v(i*v(-J));break m}j=v(v(1)/v(C(v(v(R*R)+v(t*t)))));i=v(R*j);k=v(j*v(-t));j=v(0)}n=v(l[o[o[q>>2]+16>>2]](q));A=v(l[o[o[r>>2]+16>>2]](r));D=s[6601];r=n<A;g=r?f+408|0:K;q=o[g+12>>2];o[f+248>>2]=o[g+8>>2];o[f+252>>2]=q;q=o[g+4>>2];o[f+240>>2]=o[g>>2];o[f+244>>2]=q;g=r?aa:B;q=o[g+12>>2];o[f+264>>2]=o[g+8>>2];o[f+268>>2]=q;q=o[g+4>>2];o[f+256>>2]=o[g>>2];o[f+260>>2]=q;g=r?W:x;q=o[g+12>>2];o[f+280>>2]=o[g+8>>2];o[f+284>>2]=q;q=o[g+4>>2];o[f+272>>2]=o[g>>2];o[f+276>>2]=q;g=r?L:F;q=o[g+12>>2];o[f+296>>2]=o[g+8>>2];o[f+300>>2]=q;q=o[g+4>>2];o[f+288>>2]=o[g>>2];o[f+292>>2]=q;h=o[a+28>>2];if((h|0)<1){break l}u=j;n=v(v(y(v(D/(r?n:A)),v(.39269909262657166)))*v(.5));ea=v(v(v(k*k)+v(i*i))+v(j*j));j=v(qa(n)/v(C(ea)));A=v(u*j);D=v(i*j);G=v(k*j);fa=v(C(v(v(J*J)+v(v(R*R)+v(t*t)))));E=ra(n);q=0;while(1){if(!!(ea>v(1.1920928955078125e-7))){n=v(v(v(v(6.2831854820251465)/v(h|0))*v(q|0))*v(.5));k=v(qa(n)/fa);i=v(J*k);j=v(t*k);k=v(R*k);n=ra(n);n:{if(!!r){g=o[b+12>>2];I=s[g+36>>2];Q=s[g+20>>2];T=s[g+40>>2];U=s[g+24>>2];V=s[g+32>>2];Y=s[g>>2];Z=s[g+16>>2];_=s[g+4>>2];$=s[g+8>>2];o[f+452>>2]=0;o[f+436>>2]=0;o[f+420>>2]=0;H=v(v(A*k)+v(v(v(D*n)-v(E*j))-v(G*i)));N=v(v(A*i)+v(v(D*j)+v(v(E*n)+v(G*k))));O=v(v(D*i)+v(v(v(G*n)-v(E*k))-v(A*j)));P=v(v(G*j)+v(v(v(A*n)-v(E*i))-v(D*k)));z=v(v(v(i*H)+v(v(k*N)+v(n*O)))-v(j*P));u=v(v(v(v(n*N)-v(k*O))-v(j*H))-v(i*P));ba=v(v(v(j*O)+v(v(i*N)+v(n*P)))-v(k*H));i=v(v(v(k*P)+v(v(n*H)+v(j*N)))-v(i*O));j=v(v(2)/v(v(u*u)+v(v(ba*ba)+v(v(z*z)+v(i*i)))));k=v(ba*j);N=v(z*k);n=v(i*j);O=v(u*n);H=v(N-O);P=v(i*k);X=v(z*j);ca=v(u*X);j=v(P+ca);X=v(z*X);da=v(i*n);i=v(v(1)-v(X+da));s[f+448>>2]=v(v($*H)+v(U*j))+v(T*i);s[f+444>>2]=v(v(H*_)+v(j*Q))+v(i*I);s[f+440>>2]=v(v(H*Y)+v(j*Z))+v(i*V);n=v(z*n);z=v(u*k);i=v(n+z);u=v(ba*k);j=v(v(1)-v(X+u));k=v(P-ca);s[f+432>>2]=v(v($*i)+v(U*j))+v(T*k);s[f+428>>2]=v(v(i*_)+v(j*Q))+v(k*I);s[f+424>>2]=v(v(i*Y)+v(j*Z))+v(k*V);i=v(v(1)-v(da+u));j=v(n-z);k=v(N+O);s[f+416>>2]=v(v($*i)+v(U*j))+v(T*k);s[f+412>>2]=v(v(i*_)+v(j*Q))+v(k*I);s[f+408>>2]=v(v(i*Y)+v(j*Z))+v(k*V);g=o[c+12>>2];h=o[g+4>>2];o[K>>2]=o[g>>2];o[K+4>>2]=h;h=o[g+12>>2];o[K+8>>2]=o[g+8>>2];o[K+12>>2]=h;h=o[g+28>>2];o[B+8>>2]=o[g+24>>2];o[B+12>>2]=h;h=o[g+20>>2];o[B>>2]=o[g+16>>2];o[B+4>>2]=h;h=o[g+44>>2];o[x+8>>2]=o[g+40>>2];o[x+12>>2]=h;h=o[g+36>>2];o[x>>2]=o[g+32>>2];o[x+4>>2]=h;h=o[g+60>>2];o[F+8>>2]=o[g+56>>2];o[F+12>>2]=h;h=o[g+52>>2];o[F>>2]=o[g+48>>2];o[F+4>>2]=h;break n}g=o[b+12>>2];h=o[g+12>>2];o[f+416>>2]=o[g+8>>2];o[f+420>>2]=h;h=o[g+4>>2];o[f+408>>2]=o[g>>2];o[f+412>>2]=h;h=o[g+28>>2];o[aa+8>>2]=o[g+24>>2];o[aa+12>>2]=h;h=o[g+20>>2];o[aa>>2]=o[g+16>>2];o[aa+4>>2]=h;h=o[g+44>>2];o[W+8>>2]=o[g+40>>2];o[W+12>>2]=h;h=o[g+36>>2];o[W>>2]=o[g+32>>2];o[W+4>>2]=h;h=o[g+60>>2];o[L+8>>2]=o[g+56>>2];o[L+12>>2]=h;h=o[g+52>>2];o[L>>2]=o[g+48>>2];o[L+4>>2]=h;g=o[c+12>>2];I=s[g+36>>2];Q=s[g+20>>2];T=s[g+40>>2];U=s[g+24>>2];V=s[g+32>>2];Y=s[g>>2];Z=s[g+16>>2];_=s[g+4>>2];$=s[g+8>>2];o[f+516>>2]=0;o[f+500>>2]=0;o[f+484>>2]=0;H=v(v(A*k)+v(v(v(D*n)-v(E*j))-v(G*i)));N=v(v(A*i)+v(v(D*j)+v(v(E*n)+v(G*k))));O=v(v(D*i)+v(v(v(G*n)-v(E*k))-v(A*j)));P=v(v(G*j)+v(v(v(A*n)-v(E*i))-v(D*k)));z=v(v(v(i*H)+v(v(k*N)+v(n*O)))-v(j*P));u=v(v(v(v(n*N)-v(k*O))-v(j*H))-v(i*P));ba=v(v(v(j*O)+v(v(i*N)+v(n*P)))-v(k*H));i=v(v(v(k*P)+v(v(n*H)+v(j*N)))-v(i*O));j=v(v(2)/v(v(u*u)+v(v(ba*ba)+v(v(z*z)+v(i*i)))));k=v(ba*j);N=v(z*k);n=v(i*j);O=v(u*n);H=v(N-O);P=v(i*k);X=v(z*j);ca=v(u*X);j=v(P+ca);X=v(z*X);da=v(i*n);i=v(v(1)-v(X+da));s[f+512>>2]=v(v($*H)+v(U*j))+v(T*i);s[f+508>>2]=v(v(H*_)+v(j*Q))+v(i*I);s[f+504>>2]=v(v(H*Y)+v(j*Z))+v(i*V);n=v(z*n);z=v(u*k);i=v(n+z);u=v(ba*k);j=v(v(1)-v(X+u));k=v(P-ca);s[f+496>>2]=v(v($*i)+v(U*j))+v(T*k);s[f+492>>2]=v(v(i*_)+v(j*Q))+v(k*I);s[f+488>>2]=v(v(i*Y)+v(j*Z))+v(k*V);i=v(v(1)-v(da+u));j=v(n-z);k=v(N+O);s[f+480>>2]=v(v($*i)+v(U*j))+v(T*k);s[f+476>>2]=v(v(i*_)+v(j*Q))+v(k*I);s[f+472>>2]=v(v(i*Y)+v(j*Z))+v(k*V)}g=o[d+20>>2];o[f+32>>2]=e;o[f>>2]=10288;h=o[f+420>>2];o[f+44>>2]=o[f+416>>2];o[f+48>>2]=h;h=o[f+412>>2];o[f+36>>2]=o[f+408>>2];o[f+40>>2]=h;h=o[aa+12>>2];o[f+60>>2]=o[aa+8>>2];o[f+64>>2]=h;h=o[aa+4>>2];o[f+52>>2]=o[aa>>2];o[f+56>>2]=h;h=o[W+12>>2];o[f+76>>2]=o[W+8>>2];o[f+80>>2]=h;h=o[W+4>>2];o[f+68>>2]=o[W>>2];o[f+72>>2]=h;h=o[L+12>>2];o[f+92>>2]=o[L+8>>2];o[f+96>>2]=h;h=o[L+4>>2];o[f+84>>2]=o[L>>2];o[f+88>>2]=h;h=o[K+12>>2];o[f+108>>2]=o[K+8>>2];o[f+112>>2]=h;h=o[K+4>>2];o[f+100>>2]=o[K>>2];o[f+104>>2]=h;h=o[B+12>>2];o[f+124>>2]=o[B+8>>2];o[f+128>>2]=h;h=o[B+4>>2];o[f+116>>2]=o[B>>2];o[f+120>>2]=h;h=o[x+12>>2];o[f+140>>2]=o[x+8>>2];o[f+144>>2]=h;h=o[x+4>>2];o[f+132>>2]=o[x>>2];o[f+136>>2]=h;h=o[F+12>>2];o[f+156>>2]=o[F+8>>2];o[f+160>>2]=h;h=o[F+4>>2];o[f+148>>2]=o[F>>2];o[f+152>>2]=h;h=o[f+252>>2];o[f+172>>2]=o[f+248>>2];o[f+176>>2]=h;h=o[f+244>>2];o[f+164>>2]=o[f+240>>2];o[f+168>>2]=h;h=o[f+268>>2];o[f+188>>2]=o[f+264>>2];o[f+192>>2]=h;h=o[f+260>>2];o[f+180>>2]=o[f+256>>2];o[f+184>>2]=h;h=o[f+284>>2];o[f+204>>2]=o[f+280>>2];o[f+208>>2]=h;h=o[f+276>>2];o[f+196>>2]=o[f+272>>2];o[f+200>>2]=h;h=o[f+292>>2];o[f+212>>2]=o[f+288>>2];o[f+216>>2]=h;h=o[f+300>>2];o[f+220>>2]=o[f+296>>2];o[f+224>>2]=h;o[f+232>>2]=g;m[f+228|0]=r;fb(S,f+408|0,f,g,0);h=o[a+28>>2]}q=q+1|0;if((q|0)<(h|0)){continue}break}}if(!p[a+16|0]){break a}a=o[e+4>>2];if(!o[a+748>>2]){break a}b=o[a+740>>2];c=o[o[e+8>>2]+8>>2];if((b|0)!=(c|0)){sa(a,o[o[e+12>>2]+8>>2]+4|0,c+4|0);break a}sa(a,b+4|0,o[o[e+12>>2]+8>>2]+4|0)}M=f+544|0}function nK(a,b,c,d,e,f,g,h,i,j){var k=0,m=v(0),n=v(0),p=v(0),q=v(0),r=v(0),t=v(0),x=v(0),y=v(0),z=v(0),A=v(0),B=0,D=v(0),E=v(0),F=v(0),G=v(0),H=v(0),I=v(0),J=v(0),K=0,L=v(0),N=0,O=v(0),P=v(0),Q=v(0),R=v(0),S=v(0),T=v(0),U=v(0),V=v(0),W=v(0),X=v(0),Y=v(0),Z=0,_=v(0),$=v(0),aa=v(0),ba=v(0),ca=v(0),da=v(0),ea=v(0),fa=v(0),ga=v(0),ha=0,ia=v(0),ka=v(0),la=v(0),ma=v(0),na=v(0),oa=0,pa=v(0),qa=0,ra=0,sa=0,ta=0,ua=0,va=0,wa=v(0),xa=v(0),ya=0,za=0,Aa=0,Ba=0;k=M-384|0;M=k;G=s[b+36>>2];U=s[b+4>>2];y=s[b+20>>2];P=s[b+40>>2];fa=s[b+8>>2];_=s[b+24>>2];x=s[a+8>>2];A=s[d+8>>2];r=s[a>>2];t=s[d>>2];J=s[a+4>>2];L=s[d+4>>2];m=s[b+32>>2];pa=s[b>>2];n=s[b+16>>2];p=v(s[c>>2]*v(.5));s[k+372>>2]=p;q=v(s[c+4>>2]*v(.5));s[k+376>>2]=q;D=v(s[c+8>>2]*v(.5));s[k+380>>2]=D;H=v(s[f>>2]*v(.5));s[k+360>>2]=H;E=v(s[f+4>>2]*v(.5));s[k+364>>2]=E;z=v(s[f+8>>2]*v(.5));s[k+368>>2]=z;r=v(t-r);t=v(L-J);x=v(A-x);A=v(v(v(pa*r)+v(n*t))+v(m*x));$=s[e>>2];Q=s[e+16>>2];V=s[e+32>>2];J=v(v(v(pa*$)+v(n*Q))+v(m*V));ia=v(w(J));F=s[e+4>>2];aa=s[e+20>>2];ba=s[e+36>>2];L=v(v(v(pa*F)+v(n*aa))+v(m*ba));wa=v(w(L));ca=s[e+8>>2];da=s[e+24>>2];ga=s[e+40>>2];R=v(v(v(pa*ca)+v(n*da))+v(m*ga));xa=v(w(R));n=v(v(w(A))-v(v(v(p+v(H*ia))+v(E*wa))+v(z*xa)));a:{if(n>v(0)){break a}S=v(v(v(U*ca)+v(y*da))+v(G*ga));ka=v(w(S));W=v(v(v(U*F)+v(y*aa))+v(G*ba));ea=v(w(W));X=v(v(v(U*$)+v(y*Q))+v(G*V));Y=v(w(X));m=v(-3.4028234663852886e+38);c=0;if(!!(n>v(-3.4028234663852886e+38))){N=A<v(0);m=n;B=b;c=1}G=v(v(v(r*U)+v(t*y))+v(x*G));n=v(v(w(G))-v(v(v(q+v(H*Y))+v(E*ea))+v(z*ka)));if(n>v(0)){break a}T=v(v(v(fa*ca)+v(_*da))+v(P*ga));la=v(w(T));O=v(v(v(fa*F)+v(_*aa))+v(P*ba));ma=v(w(O));I=v(v(v(fa*$)+v(_*Q))+v(P*V));na=v(w(I));if(!!(n>m)){B=b+4|0;N=G<v(0);m=n;c=2}y=v(v(v(r*fa)+v(t*_))+v(x*P));n=v(v(w(y))-v(v(v(D+v(H*na))+v(E*ma))+v(z*la)));if(n>v(0)){break a}if(!!(n>m)){B=b+8|0;N=y<v(0);m=n;c=3}P=v(v(v(r*$)+v(t*Q))+v(x*V));n=v(v(w(P))-v(H+v(v(D*na)+v(v(p*ia)+v(q*Y)))));if(n>v(0)){break a}if(!!(n>m)){N=P<v(0);m=n;B=e;c=4}P=v(v(v(r*F)+v(t*aa))+v(x*ba));n=v(v(w(P))-v(E+v(v(D*ma)+v(v(p*wa)+v(q*ea)))));if(n>v(0)){break a}if(!!(n>m)){B=e+4|0;N=P<v(0);m=n;c=5}r=v(v(v(r*ca)+v(t*da))+v(x*ga));n=v(v(w(r))-v(z+v(v(D*la)+v(v(p*xa)+v(q*ka)))));if(n>v(0)){break a}if(!!(n>m)){B=e+8|0;N=r<v(0);m=n;c=6}V=v(v(y*X)-v(G*I));aa=v(wa+v(9999999747378752e-21));ba=v(na+v(9999999747378752e-21));ca=v(Y+v(9999999747378752e-21));da=v(xa+v(9999999747378752e-21));n=v(v(w(V))-v(v(z*aa)+v(v(v(q*ba)+v(D*ca))+v(E*da))));if(n>v(1.1920928955078125e-7)){break a}P=v(ma+v(9999999747378752e-21));_=v(ea+v(9999999747378752e-21));$=v(ia+v(9999999747378752e-21));t=v(0);ga=v(X*X);ea=v(v(I*I)+v(0));Q=v(C(v(ga+ea)));b:{if(!(Q>v(1.1920928955078125e-7))){x=v(0);r=v(0);break b}x=v(0);n=v(n/Q);r=v(0);if(!(v(n*v(1.0499999523162842))>m)){break b}N=V<v(0);x=v(v(-I)/Q);t=v(v(0)/Q);B=0;c=7;m=n;r=v(X/Q)}Y=v(v(y*W)-v(G*O));n=v(v(w(Y))-v(v(z*$)+v(v(v(q*P)+v(D*_))+v(H*da))));if(n>v(1.1920928955078125e-7)){break a}Q=v(la+v(9999999747378752e-21));V=v(ka+v(9999999747378752e-21));ka=v(W*W);la=v(v(O*O)+v(0));F=v(C(v(ka+la)));c:{if(!(F>v(1.1920928955078125e-7))){break c}n=v(n/F);if(!(v(n*v(1.0499999523162842))>m)){break c}N=Y<v(0);r=v(W/F);x=v(v(-O)/F);t=v(v(0)/F);B=0;c=8;m=n}Y=v(v(y*S)-v(G*T));n=v(v(w(Y))-v(v(E*$)+v(v(H*aa)+v(v(q*Q)+v(D*V)))));if(n>v(1.1920928955078125e-7)){break a}ma=v(S*S);na=v(v(T*T)+v(0));F=v(C(v(ma+na)));d:{if(!(F>v(1.1920928955078125e-7))){break d}n=v(n/F);if(!(v(n*v(1.0499999523162842))>m)){break d}N=Y<v(0);r=v(S/F);x=v(v(-T)/F);t=v(v(0)/F);B=0;c=9;m=n}Y=v(v(A*I)-v(y*J));n=v(v(w(Y))-v(v(z*_)+v(v(v(p*ba)+v(D*$))+v(E*V))));if(n>v(1.1920928955078125e-7)){break a}ia=v(J*J);F=v(C(v(ia+ea)));e:{if(!(F>v(1.1920928955078125e-7))){break e}n=v(n/F);if(!(v(n*v(1.0499999523162842))>m)){break e}N=Y<v(0);r=v(v(-J)/F);x=v(v(0)/F);t=v(I/F);B=0;c=10;m=n}F=v(v(A*O)-v(y*L));n=v(v(w(F))-v(v(z*ca)+v(v(v(p*P)+v(D*aa))+v(H*V))));if(n>v(1.1920928955078125e-7)){break a}ea=v(L*L);I=v(C(v(ea+la)));f:{if(!(I>v(1.1920928955078125e-7))){break f}n=v(n/I);if(!(v(n*v(1.0499999523162842))>m)){break f}N=F<v(0);r=v(v(-L)/I);x=v(v(0)/I);t=v(O/I);B=0;c=11;m=n}O=v(v(A*T)-v(y*R));n=v(v(w(O))-v(v(E*ca)+v(v(H*_)+v(v(p*Q)+v(D*da)))));if(n>v(1.1920928955078125e-7)){break a}I=v(R*R);y=v(C(v(I+na)));g:{if(!(y>v(1.1920928955078125e-7))){break g}n=v(n/y);if(!(v(n*v(1.0499999523162842))>m)){break g}N=O<v(0);r=v(v(-R)/y);x=v(v(0)/y);t=v(T/y);B=0;c=12;m=n}T=v(v(G*J)-v(A*X));n=v(v(w(T))-v(v(z*P)+v(v(v(p*ca)+v(q*$))+v(E*Q))));if(n>v(1.1920928955078125e-7)){break a}y=v(C(v(v(ga+ia)+v(0))));h:{if(!(y>v(1.1920928955078125e-7))){break h}n=v(n/y);if(!(v(n*v(1.0499999523162842))>m)){break h}N=T<v(0);r=v(v(0)/y);x=v(J/y);t=v(v(-X)/y);B=0;c=13;m=n}y=v(v(G*L)-v(A*W));n=v(v(w(y))-v(v(z*ba)+v(v(v(p*_)+v(q*aa))+v(H*Q))));if(n>v(1.1920928955078125e-7)){break a}z=v(C(v(v(ka+ea)+v(0))));i:{if(!(z>v(1.1920928955078125e-7))){break i}n=v(n/z);if(!(v(n*v(1.0499999523162842))>m)){break i}N=y<v(0);r=v(v(0)/z);x=v(L/z);t=v(v(-W)/z);B=0;c=14;m=n}z=v(v(G*R)-v(A*S));n=v(v(w(z))-v(v(E*ba)+v(v(H*P)+v(v(p*V)+v(q*da)))));if(n>v(1.1920928955078125e-7)){break a}j:{k:{l:{m:{p=v(C(v(v(ma+I)+v(0))));if(!(p>v(1.1920928955078125e-7))){break m}n=v(n/p);if(!(v(n*v(1.0499999523162842))>m)){break m}N=z<v(0);r=v(v(0)/p);x=v(R/p);t=v(v(-S)/p);c=15;break l}if(!c){break a}if(B){break k}n=m}p=v(v(v(pa*t)+v(U*x))+v(fa*r));s[g>>2]=p;q=v(v(v(t*s[b+16>>2])+v(x*s[b+20>>2]))+v(r*s[b+24>>2]));s[g+4>>2]=q;t=v(v(v(t*s[b+32>>2])+v(x*s[b+36>>2]))+v(r*s[b+40>>2]));s[g+8>>2]=t;break j}p=s[B>>2];o[g>>2]=o[B>>2];q=s[B+16>>2];o[g+4>>2]=o[B+16>>2];t=s[B+32>>2];o[g+8>>2]=o[B+32>>2];n=m}if(N){s[g+8>>2]=-t;s[g+4>>2]=-q;s[g>>2]=-p}s[h>>2]=-n;if((c|0)>=7){o[k+120>>2]=o[a+8>>2];f=o[a+4>>2];o[k+112>>2]=o[a>>2];o[k+116>>2]=f;q=v(0);E=s[k+112>>2];z=s[k+116>>2];m=s[k+372>>2];y=m;t=v(-m);m=s[g>>2];A=s[b>>2];r=s[g+4>>2];G=s[b+16>>2];p=s[g+8>>2];x=s[b+32>>2];t=v(v(v(m*A)+v(r*G))+v(p*x))>v(0)?y:t;F=v(s[k+120>>2]+v(t*x));x=s[k+376>>2];y=s[b+4>>2];J=s[b+20>>2];L=s[b+36>>2];x=v(v(v(m*y)+v(r*J))+v(p*L))>v(0)?x:v(-x);F=v(F+v(x*L));L=s[b+8>>2];R=s[b+24>>2];S=s[b+40>>2];D=v(v(v(m*L)+v(r*R))+v(p*S))>v(0)?D:v(-D);s[k+120>>2]=F+v(D*S);s[k+116>>2]=v(v(z+v(t*G))+v(x*J))+v(D*R);s[k+112>>2]=v(v(E+v(t*A))+v(x*y))+v(D*L);o[k+216>>2]=o[d+8>>2];a=o[d+4>>2];o[k+208>>2]=o[d>>2];o[k+212>>2]=a;y=v(-H);A=H;D=s[e>>2];H=s[e+16>>2];x=s[e+32>>2];t=v(v(v(m*D)+v(r*H))+v(p*x))>v(0)?y:A;y=v(s[k+216>>2]+v(t*x));x=s[k+364>>2];E=s[e+4>>2];z=s[e+20>>2];A=s[e+36>>2];x=v(v(v(m*E)+v(r*z))+v(p*A))>v(0)?v(-x):x;F=v(y+v(x*A));A=s[k+368>>2];I=v(-A);y=A;A=s[e+8>>2];G=s[e+24>>2];m=v(v(m*A)+v(r*G));r=s[e+40>>2];m=v(m+v(p*r))>v(0)?I:y;r=v(F+v(m*r));s[k+216>>2]=r;p=v(v(v(s[k+212>>2]+v(t*H))+v(x*z))+v(m*G));s[k+212>>2]=p;m=v(v(v(s[k+208>>2]+v(t*D))+v(x*E))+v(m*A));s[k+208>>2]=m;a=b;b=c+ -7|0;d=(b|0)/3|0;a=a+(d<<2)|0;E=s[a>>2];b=(b-u(d,3)<<2)+e|0;t=s[b>>2];z=s[a+16>>2];x=s[b+16>>2];A=s[a+32>>2];D=s[b+32>>2];H=v(v(v(E*t)+v(z*x))+v(A*D));G=v(v(1)-v(H*H));if(!(G<=v(9999999747378752e-20))){q=v(m-s[k+112>>2]);y=v(q*E);E=v(p-s[k+116>>2]);y=v(y+v(E*z));z=v(r-s[k+120>>2]);q=v(v(v(v(y+v(z*A))*H)-v(v(v(q*t)+v(E*x))+v(z*D)))*v(v(1)/G))}s[k+216>>2]=r+v(q*D);s[k+212>>2]=p+v(q*x);s[k+208>>2]=m+v(q*t);m=s[g>>2];r=s[g+4>>2];p=s[g+8>>2];o[k+300>>2]=0;s[k+296>>2]=-p;s[k+292>>2]=-r;s[k+288>>2]=-m;l[o[o[j>>2]+16>>2]](j,k+288|0,k+208|0,n);o[i>>2]=c;break a}x=s[g>>2];n:{if((c|0)<=3){n=s[g+8>>2];r=s[g+4>>2];ta=k+372|0;K=e;B=k+360|0;break n}x=v(-x);n=v(-s[g+8>>2]);r=v(-s[g+4>>2]);f=d;ta=k+360|0;d=a;a=f;K=b;b=e;B=k+372|0}p=v(v(v(x*s[K>>2])+v(r*s[K+16>>2]))+v(n*s[K+32>>2]));s[k+344>>2]=p;q=v(v(v(x*s[K+4>>2])+v(r*s[K+20>>2]))+v(n*s[K+36>>2]));s[k+348>>2]=q;m=v(v(v(x*s[K+8>>2])+v(r*s[K+24>>2]))+v(n*s[K+40>>2]));s[k+352>>2]=m;m=v(w(m));q=v(w(q));p=v(w(p));o:{if(!!(q>p)){h=q>m;e=h?1:2;f=0;break o}h=p>m;e=(h^1)<<1;f=h}ya=f;f=e<<2;m=s[f+B>>2];p=v(m*s[f+K>>2]);q=v(s[d>>2]-s[a>>2]);za=h?2:1;e=k;p:{if(!(s[f+(k+344|0)>>2]<v(0))){p=v(q-p);s[k+328>>2]=p;q=v(v(s[d+4>>2]-s[a+4>>2])-v(m*s[(f|16)+K>>2]));s[k+332>>2]=q;m=v(v(s[d+8>>2]-s[a+8>>2])-v(m*s[(f|32)+K>>2]));break p}p=v(q+p);s[k+328>>2]=p;q=v(v(s[d+4>>2]-s[a+4>>2])+v(m*s[(f|16)+K>>2]));s[k+332>>2]=q;m=v(v(s[d+8>>2]-s[a+8>>2])+v(m*s[(f|32)+K>>2]))}s[e+336>>2]=m;e=4;d=1;h=2;q:{r:{s:{Aa=((c|0)<4?-1:-4)+c|0;switch(Aa|0){case 0:break q;case 1:break s;default:break r}}d=0;break q}h=1;d=0}f=d<<2;d=f+b|0;t=s[d+32>>2];D=s[d>>2];H=s[d+16>>2];d=h<<2;b=d+b|0;E=s[b>>2];z=s[b+16>>2];A=s[b+32>>2];G=v(v(v(p*E)+v(q*z))+v(m*A));b=ya<<2;ua=b+K|0;J=s[ua>>2];L=s[ua+16>>2];R=s[ua+32>>2];y=v(v(v(E*J)+v(z*L))+v(A*R));S=s[b+B>>2];W=v(y*S);X=v(G+W);b=za<<2;va=b+K|0;T=s[va>>2];O=s[va+16>>2];I=s[va+32>>2];z=v(v(v(E*T)+v(z*O))+v(A*I));U=s[b+B>>2];E=v(z*U);s[k+316>>2]=X-E;A=v(v(v(p*D)+v(q*H))+v(m*t));J=v(v(v(D*J)+v(H*L))+v(t*R));p=v(S*J);q=v(A+p);D=v(v(v(D*T)+v(H*O))+v(t*I));m=v(U*D);s[k+312>>2]=q-m;s[k+308>>2]=X+E;s[k+304>>2]=q+m;q=v(G-W);s[k+300>>2]=q+E;p=v(A-p);s[k+296>>2]=p+m;s[k+292>>2]=q-E;s[k+288>>2]=p-m;o[k+280>>2]=o[f+ta>>2];o[k+284>>2]=o[d+ta>>2];f=k+208|0;B=k+288|0;N=1;b=0;t:{while(1){u:{v:{if((e|0)>0){Ba=b^1;ha=b<<2;oa=ha+(k+280|0)|0;d=f;b=B;h=0;while(1){p=s[oa>>2];Z=b+ha|0;q=s[Z>>2];t=v(-q);if(!!(p>t)){o[d>>2]=o[b>>2];o[d+4>>2]=o[b+4>>2];h=h+1|0;if(h&8){break u}p=s[oa>>2];q=s[Z>>2];t=v(-q);d=d+8|0}qa=t<p;Z=b+8|0;ra=(e|0)>1;sa=ra?Z:B;t=s[sa+ha>>2];if((qa|0)!=(p>v(-t)|0)){qa=b;b=Ba<<2;m=s[qa+b>>2];s[b+d>>2]=m+v(v(v(-p)-q)*v(v(s[b+sa>>2]-m)/v(t-q)));s[d+ha>>2]=-s[oa>>2];h=h+1|0;if(h&8){break u}d=d+8|0}e=e+ -1|0;b=Z;if(ra){continue}break}e=0;B=(k+208|0)==(f|0)?k+112|0:k+208|0;if((h|0)<=0){break v}d=B;b=f;while(1){Z=b+ha|0;q=s[Z>>2];p=s[oa>>2];if(!!(q<p)){o[d>>2]=o[b>>2];o[d+4>>2]=o[b+4>>2];e=e+1|0;if(e&8){break t}p=s[oa>>2];q=s[Z>>2];d=d+8|0}Z=b+8|0;ra=(h|0)>1;sa=ra?Z:f;t=s[sa+ha>>2];if((q<p|0)!=(t<p|0)){qa=b;b=Ba<<2;m=s[qa+b>>2];s[b+d>>2]=m+v(v(p-q)*v(v(s[b+sa>>2]-m)/v(t-q)));o[d+ha>>2]=o[oa>>2];e=e+1|0;if(e&8){break t}d=d+8|0}h=h+ -1|0;b=Z;if(ra){continue}break}break v}B=(k+208|0)==(f|0)?k+112|0:k+208|0;e=0}b=1;d=N;f=(k+208|0)==(B|0)?k+112|0:k+208|0;N=0;if(d){continue}break t}break}B=f;e=h}if((k+208|0)!=(B|0)){ja(k+208|0,B,e<<3)}if((e|0)<1){break a}m=v(v(1)/v(v(J*z)-v(y*D)));q=v(m*v(-y));t=v(z*m);D=v(D*m);H=v(J*m);E=s[(Aa<<2)+ta>>2];b=za<<2;z=s[(b|32)+K>>2];d=ya<<2;y=s[(d|32)+K>>2];J=s[(b|16)+K>>2];L=s[(d|16)+K>>2];R=s[va>>2];S=s[ua>>2];b=0;W=s[k+336>>2];X=s[k+332>>2];T=s[k+328>>2];d=0;while(1){f=(k+112|0)+u(b,12)|0;h=d<<3;O=s[h+(k+208|0)>>2];p=v(O-A);I=s[(k+208|0)+(h|4)>>2];U=v(I-G);m=v(v(t*p)-v(D*U));p=v(v(q*p)+v(H*U));U=v(v(T+v(m*S))+v(p*R));s[f>>2]=U;fa=v(v(X+v(m*L))+v(p*J));s[f+4>>2]=fa;m=v(v(W+v(m*y))+v(p*z));s[f+8>>2]=m;m=v(E-v(v(v(x*U)+v(r*fa))+v(n*m)));s[(k+80|0)+(b<<2)>>2]=m;if(!!(m>=v(0))){f=b<<3;s[f+(k+208|0)>>2]=O;s[(k+208|0)+(f|4)>>2]=I;b=b+1|0}d=d+1|0;if((e|0)!=(d|0)){continue}break}if((b|0)<1){break a}d=(b|0)<4?b:4;f=(d|0)>1?d:1;w:{if((b|0)<=(f|0)){if((c|0)>=4){e=0;while(1){d=(k+112|0)+u(e,12)|0;n=s[g>>2];m=s[(k+80|0)+(e<<2)>>2];s[k+32>>2]=v(s[d>>2]+s[a>>2])-v(n*m);r=s[g+4>>2];s[k+36>>2]=v(s[d+4>>2]+s[a+4>>2])-v(m*r);p=s[g+8>>2];s[k+40>>2]=v(s[d+8>>2]+s[a+8>>2])-v(m*p);o[k+76>>2]=0;s[k+72>>2]=-p;s[k+68>>2]=-r;s[k+64>>2]=-n;l[o[o[j>>2]+16>>2]](j,k- -64|0,k+32|0,v(-m));e=e+1|0;if((e|0)!=(b|0)){continue}break}break w}e=0;while(1){d=(k+112|0)+u(e,12)|0;s[k+32>>2]=s[d>>2]+s[a>>2];s[k+36>>2]=s[d+4>>2]+s[a+4>>2];s[k+40>>2]=s[d+8>>2]+s[a+8>>2];m=s[g>>2];n=s[g+4>>2];r=s[g+8>>2];o[k+76>>2]=0;s[k+72>>2]=-r;s[k+68>>2]=-n;s[k+64>>2]=-m;l[o[o[j>>2]+16>>2]](j,k- -64|0,k+32|0,v(-s[(k+80|0)+(e<<2)>>2]));e=e+1|0;if((e|0)!=(b|0)){continue}break}break w}d=0;if((b|0)>=2){p=s[k+80>>2];e=1;while(1){m=s[(k+80|0)+(e<<2)>>2];h=m>p;p=h?m:p;d=h?e:d;e=e+1|0;if((e|0)!=(b|0)){continue}break}}oK(b,k+208|0,f,d,k+32|0);h=(c|0)>3;b=0;while(1){d=o[(k+32|0)+(b<<2)>>2];e=(k+112|0)+u(d,12)|0;p=v(s[e>>2]+s[a>>2]);s[k+64>>2]=p;q=v(s[e+4>>2]+s[a+4>>2]);s[k+68>>2]=q;t=v(s[e+8>>2]+s[a+8>>2]);s[k+72>>2]=t;x:{if(!h){m=s[g>>2];n=s[g+4>>2];r=s[g+8>>2];o[k+28>>2]=0;s[k+24>>2]=-r;s[k+20>>2]=-n;s[k+16>>2]=-m;l[o[o[j>>2]+16>>2]](j,k+16|0,k- -64|0,v(-s[(k+80|0)+(d<<2)>>2]));break x}n=s[g>>2];r=s[g+4>>2];m=s[g+8>>2];o[k+28>>2]=0;s[k+24>>2]=-m;s[k+20>>2]=-r;s[k+16>>2]=-n;o[k+12>>2]=0;A=m;m=s[(k+80|0)+(d<<2)>>2];s[k+8>>2]=t-v(A*m);s[k+4>>2]=q-v(r*m);s[k>>2]=p-v(n*m);l[o[o[j>>2]+16>>2]](j,k+16|0,k,v(-m))}b=b+1|0;if((f|0)!=(b|0)){continue}break}}o[i>>2]=c}M=k+384|0}function Ni(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=v(0),q=0,r=v(0),t=v(0),x=v(0),z=0,A=0,B=0,C=v(0),D=0,E=v(0),F=0,G=v(0),H=v(0),I=0;D=M-16|0;M=D;d=o[a+1112>>2];if((d|0)>=1){while(1){Df(a,0);d=o[a+1112>>2];if((d|0)>0){continue}break}}e=o[a+712>>2];g=(e|0)>(b|0)?b:e;if((d|0)<(g|0)){if(o[a+1116>>2]<(g|0)){a:{if(!g){e=0;break a}o[7717]=o[7717]+1;e=l[o[6606]](g<<2,16)|0;f=o[a+1112>>2];if((f|0)<1){break a}b=0;while(1){j=b<<2;o[j+e>>2]=o[j+o[a+1120>>2]>>2];b=b+1|0;if((f|0)!=(b|0)){continue}break}}b=o[a+1120>>2];if(b){if(p[a+1124|0]){if(b){o[7718]=o[7718]+1;l[o[6607]](b)}}o[a+1120>>2]=0}o[a+1120>>2]=e;o[a+1116>>2]=g;m[a+1124|0]=1}while(1){o[o[a+1120>>2]+(d<<2)>>2]=0;d=d+1|0;if((g|0)!=(d|0)){continue}break}}o[a+1112>>2]=g;b:{c:{d:{e:{f:{if((g|0)<1){break f}b=0;while(1){o[7717]=o[7717]+1;d=l[o[6606]](384,16)|0;m[d+36|0]=1;o[d+4>>2]=0;o[d+8>>2]=0;o[d+12>>2]=0;m[d+16|0]=1;o[d+32>>2]=0;m[d+56|0]=1;o[d+24>>2]=0;o[d+28>>2]=0;o[d+52>>2]=0;o[d+348>>2]=0;o[d+352>>2]=0;o[d+44>>2]=0;o[d+48>>2]=0;m[d+376|0]=0;o[d+368>>2]=1120403456;o[d+372>>2]=1008981770;o[d+356>>2]=0;o[d+360>>2]=0;o[d+364>>2]=0;e=b<<2;o[e+o[a+1120>>2]>>2]=d;m[o[e+o[a+1120>>2]>>2]+377|0]=1;b=b+1|0;g=o[a+1112>>2];if((b|0)<(g|0)){continue}break}if((g|0)<1){break f}e=o[a+712>>2];if((e|0)<=0){k=v(v(v(1)/v(e|0))*v(0));r=k;x=k;break e}d=g;while(1){j=o[a+720>>2]+u(h,104)|0;x=s[j+8>>2];C=s[j+16>>2];E=s[j+12>>2];b=o[o[a+1120>>2]+((u(h,29873)|0)%(d|0)<<2)>>2];f=o[b+24>>2];g:{if((f|0)!=o[b+28>>2]){break g}q=f?f<<1:1;if((f|0)>=(q|0)){break g}h:{if(!q){i=0;break h}o[7717]=o[7717]+1;i=l[o[6606]](q<<2,16)|0;f=o[b+24>>2]}if((f|0)>=1){d=0;while(1){e=d<<2;o[e+i>>2]=o[e+o[b+32>>2]>>2];d=d+1|0;if((f|0)!=(d|0)){continue}break}}d=o[b+32>>2];if(d){if(p[b+36|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}f=o[b+24>>2]}o[b+32>>2]=0}o[b+32>>2]=i;o[b+28>>2]=q;m[b+36|0]=1;e=o[a+712>>2]}t=v(t+x);k=v(k+C);r=v(r+E);o[o[b+32>>2]+(f<<2)>>2]=j;o[b+24>>2]=f+1;h=h+1|0;if((h|0)<(e|0)){d=o[a+1112>>2];continue}break}j=0;if((g|0)<0){break c}x=k;k=v(v(1)/v(e|0));x=v(x*k);r=v(r*k);k=v(t*k);if(g){break e}g=0;j=0;break d}c=o[a+772>>2];if(c){if((g|0)<(c|0)){if(o[a+1116>>2]<(c|0)){o[7717]=o[7717]+1;d=l[o[6606]](c<<2,16)|0;e=o[a+1112>>2];if((e|0)>=1){b=0;while(1){f=b<<2;o[f+d>>2]=o[f+o[a+1120>>2]>>2];b=b+1|0;if((e|0)!=(b|0)){continue}break}}b=o[a+1120>>2];if(b){if(p[a+1124|0]){if(b){o[7718]=o[7718]+1;l[o[6607]](b)}}o[a+1120>>2]=0}o[a+1120>>2]=d;o[a+1116>>2]=c;m[a+1124|0]=1}while(1){o[o[a+1120>>2]+(g<<2)>>2]=0;g=g+1|0;if((c|0)!=(g|0)){continue}break}}o[a+1112>>2]=c;if((c|0)>=1){b=0;while(1){o[7717]=o[7717]+1;c=l[o[6606]](384,16)|0;m[c+36|0]=1;o[c+4>>2]=0;o[c+8>>2]=0;o[c+12>>2]=0;m[c+16|0]=1;o[c+32>>2]=0;m[c+56|0]=1;o[c+24>>2]=0;o[c+28>>2]=0;o[c+52>>2]=0;o[c+348>>2]=0;o[c+352>>2]=0;o[c+44>>2]=0;o[c+48>>2]=0;m[c+376|0]=0;o[c+368>>2]=1120403456;o[c+372>>2]=1008981770;o[c+356>>2]=0;o[c+360>>2]=0;o[c+364>>2]=0;d=b<<2;o[d+o[a+1120>>2]>>2]=c;m[o[d+o[a+1120>>2]>>2]+377|0]=1;b=b+1|0;if((b|0)<o[a+1112>>2]){continue}break}}if(o[a+772>>2]<1){break b}while(1){i=0;while(1){e=(o[a+780>>2]+u(h,104)|0)+(i<<2)|0;b=o[o[a+1120>>2]+(h<<2)>>2];f=o[b+24>>2];i:{if((f|0)!=o[b+28>>2]){break i}c=f?f<<1:1;if((f|0)>=(c|0)){break i}j:{if(!c){g=0;break j}o[7717]=o[7717]+1;g=l[o[6606]](c<<2,16)|0;f=o[b+24>>2]}if((f|0)>=1){d=0;while(1){j=d<<2;o[j+g>>2]=o[j+o[b+32>>2]>>2];d=d+1|0;if((f|0)!=(d|0)){continue}break}}d=o[b+32>>2];if(d){if(p[b+36|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}f=o[b+24>>2]}o[b+32>>2]=0}o[b+32>>2]=g;o[b+28>>2]=c;m[b+36|0]=1}o[o[b+32>>2]+(f<<2)>>2]=o[e+8>>2];o[b+24>>2]=f+1;i=i+1|0;if((i|0)!=4){continue}break}h=h+1|0;if((h|0)<o[a+772>>2]){continue}break}break b}c=o[a+752>>2];if((g|0)<(c|0)){if(o[a+1116>>2]<(c|0)){k:{if(!c){e=0;break k}o[7717]=o[7717]+1;e=l[o[6606]](c<<2,16)|0;d=o[a+1112>>2];if((d|0)<1){break k}b=0;while(1){f=b<<2;o[f+e>>2]=o[f+o[a+1120>>2]>>2];b=b+1|0;if((d|0)!=(b|0)){continue}break}}b=o[a+1120>>2];if(b){if(p[a+1124|0]){if(b){o[7718]=o[7718]+1;l[o[6607]](b)}}o[a+1120>>2]=0}o[a+1120>>2]=e;o[a+1116>>2]=c;m[a+1124|0]=1}while(1){o[o[a+1120>>2]+(g<<2)>>2]=0;g=g+1|0;if((c|0)!=(g|0)){continue}break}}o[a+1112>>2]=c;if((c|0)>=1){b=0;while(1){o[7717]=o[7717]+1;c=l[o[6606]](384,16)|0;m[c+36|0]=1;o[c+4>>2]=0;o[c+8>>2]=0;o[c+12>>2]=0;m[c+16|0]=1;o[c+32>>2]=0;m[c+56|0]=1;o[c+24>>2]=0;o[c+28>>2]=0;o[c+52>>2]=0;o[c+348>>2]=0;o[c+352>>2]=0;o[c+44>>2]=0;o[c+48>>2]=0;m[c+376|0]=0;o[c+368>>2]=1120403456;o[c+372>>2]=1008981770;o[c+356>>2]=0;o[c+360>>2]=0;o[c+364>>2]=0;d=b<<2;o[d+o[a+1120>>2]>>2]=c;m[o[d+o[a+1120>>2]>>2]+377|0]=1;b=b+1|0;if((b|0)<o[a+1112>>2]){continue}break}}if(o[a+752>>2]<1){break b}while(1){i=0;while(1){e=(o[a+760>>2]+u(h,44)|0)+(i<<2)|0;b=o[o[a+1120>>2]+(h<<2)>>2];f=o[b+24>>2];l:{if((f|0)!=o[b+28>>2]){break l}c=f?f<<1:1;if((f|0)>=(c|0)){break l}m:{if(!c){g=0;break m}o[7717]=o[7717]+1;g=l[o[6606]](c<<2,16)|0;f=o[b+24>>2]}if((f|0)>=1){d=0;while(1){j=d<<2;o[j+g>>2]=o[j+o[b+32>>2]>>2];d=d+1|0;if((f|0)!=(d|0)){continue}break}}d=o[b+32>>2];if(d){if(p[b+36|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}f=o[b+24>>2]}o[b+32>>2]=0}o[b+32>>2]=g;o[b+28>>2]=c;m[b+36|0]=1}o[o[b+32>>2]+(f<<2)>>2]=o[e+8>>2];o[b+24>>2]=f+1;i=i+1|0;if((i|0)!=3){continue}break}h=h+1|0;if((h|0)<o[a+752>>2]){continue}break}break b}o[7717]=o[7717]+1;j=l[o[6606]](g<<4,16)|0}b=0;while(1){d=(b<<4)+j|0;o[d+12>>2]=0;s[d+8>>2]=x;s[d+4>>2]=r;s[d>>2]=k;b=b+1|0;if((g|0)!=(b|0)){continue}break}}b=0;while(1){d=b;b=d+1|0;x=v(v(2)-v(y(v(v(d|0)*v(.0625)),v(1))));z=0;i=0;while(1){h=i<<2;d=o[h+o[a+1120>>2]>>2];e=o[d+24>>2];n:{if((e|0)<1){k=v(0);r=v(0);t=v(0);break n}q=o[d+32>>2];t=v(0);d=0;r=v(0);k=v(0);while(1){f=o[q+(d<<2)>>2];k=v(k+s[f+8>>2]);t=v(t+s[f+16>>2]);r=v(r+s[f+12>>2]);d=d+1|0;if((e|0)!=(d|0)){continue}break}}if(e){d=(i<<4)+j|0;o[d+12>>2]=0;C=s[d+8>>2];E=t;t=v(v(1)/v(e|0));G=v(C+v(x*v(v(E*t)-C)));s[d+8>>2]=G;E=s[d+4>>2];H=v(E+v(x*v(v(r*t)-E)));s[d+4>>2]=H;r=s[d>>2];k=v(r+v(x*v(v(k*t)-r)));s[d>>2]=k;k=v(k-r);r=v(k*k);k=v(H-E);r=v(r+v(k*k));k=v(G-C);q=v(r+v(k*k))>v(1.1920928955078125e-7);f=o[h+o[a+1120>>2]>>2];d=o[f+24>>2];if((d|0)<=-1){if(o[f+28>>2]<=-1){e=o[f+32>>2];if(e){if(p[f+36|0]){if(e){o[7718]=o[7718]+1;l[o[6607]](e)}}o[f+32>>2]=0}o[f+28>>2]=0;o[f+32>>2]=0;m[f+36|0]=1}while(1){o[o[f+32>>2]+(d<<2)>>2]=0;e=d+1|0;h=e>>>0>=d>>>0;d=e;if(h){continue}break}}o[f+24>>2]=0;z=q|z}i=i+1|0;if((i|0)!=(g|0)){continue}break}q=0;e=o[a+712>>2];if((e|0)>0){while(1){B=o[a+720>>2]+u(q,104)|0;f=0;if((g|0)>=2){x=s[B+8>>2];r=s[B+12>>2];t=s[B+16>>2];k=v(v(v(w(v(s[j>>2]-x)))+v(w(v(s[j+4>>2]-r))))+v(w(v(s[j+8>>2]-t))));d=1;while(1){i=(d<<4)+j|0;C=v(v(v(w(v(s[i>>2]-x)))+v(w(v(s[i+4>>2]-r))))+v(w(v(s[i+8>>2]-t))));i=C<k;k=i?C:k;f=i?d:f;d=d+1|0;if((g|0)!=(d|0)){continue}break}}h=o[o[a+1120>>2]+(f<<2)>>2];f=o[h+24>>2];o:{if((f|0)!=o[h+28>>2]){break o}A=f?f<<1:1;if((f|0)>=(A|0)){break o}p:{if(!A){i=0;break p}o[7717]=o[7717]+1;i=l[o[6606]](A<<2,16)|0;f=o[h+24>>2]}if((f|0)>=1){d=0;while(1){e=d<<2;o[e+i>>2]=o[e+o[h+32>>2]>>2];d=d+1|0;if((f|0)!=(d|0)){continue}break}}d=o[h+32>>2];if(d){if(p[h+36|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}f=o[h+24>>2]}o[h+32>>2]=0}o[h+32>>2]=i;o[h+28>>2]=A;m[h+36|0]=1;e=o[a+712>>2]}o[o[h+32>>2]+(f<<2)>>2]=B;o[h+24>>2]=f+1;q=q+1|0;if((q|0)<(e|0)){continue}break}}if((b|0)<(c|0)&z){continue}break}q:{if((e|0)<1){q=0;break q}o[7717]=o[7717]+1;b=e<<2;q=l[o[6606]](b,16)|0;$(q,255,b)}e=o[a+1112>>2];if((e|0)>=1){f=o[a+1120>>2];b=0;while(1){c=o[f+(b<<2)>>2];if(o[c+24>>2]>=1){e=o[c+32>>2];g=o[a+720>>2];d=0;while(1){o[((o[e+(d<<2)>>2]-g|0)/104<<2)+q>>2]=b;d=d+1|0;if((d|0)<o[c+24>>2]){continue}break}e=o[a+1112>>2]}b=b+1|0;if((b|0)<(e|0)){continue}break}}if(o[a+752>>2]>=1){c=0;while(1){b=o[a+760>>2]+u(c,44)|0;e=o[a+720>>2];d=(o[b+8>>2]-e|0)/104|0;o[D+4>>2]=d;o[D+8>>2]=(o[b+12>>2]-e|0)/104;o[D+12>>2]=(o[b+16>>2]-e|0)/104;z=0;while(1){g=o[(d<<2)+q>>2];i=1;while(1){b=o[(D+4|0)+((i+z>>>0)%3<<2)>>2];r:{if((g|0)==o[(b<<2)+q>>2]){break r}B=o[a+720>>2]+u(b,104)|0;e=o[o[a+1120>>2]+(g<<2)>>2];b=o[e+24>>2];s:{if((b|0)<1){break s}f=o[e+32>>2];d=0;while(1){if((B|0)!=o[f+(d<<2)>>2]){d=d+1|0;if((d|0)!=(b|0)){continue}break s}break}if((b|0)!=(d|0)){break r}}t:{if(o[e+28>>2]!=(b|0)){break t}f=b?b<<1:1;if((b|0)>=(f|0)){break t}u:{if(!f){h=0;break u}o[7717]=o[7717]+1;h=l[o[6606]](f<<2,16)|0;b=o[e+24>>2]}if((b|0)>=1){d=0;while(1){A=d<<2;o[A+h>>2]=o[A+o[e+32>>2]>>2];d=d+1|0;if((d|0)!=(b|0)){continue}break}}d=o[e+32>>2];if(d){if(p[e+36|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}b=o[e+24>>2]}o[e+32>>2]=0}o[e+32>>2]=h;o[e+28>>2]=f;m[e+36|0]=1}o[o[e+32>>2]+(b<<2)>>2]=B;o[e+24>>2]=b+1}i=i+1|0;if((i|0)!=3){continue}break}z=z+1|0;if((z|0)!=3){d=o[(D+4|0)+(z<<2)>>2];continue}break}c=c+1|0;if((c|0)<o[a+752>>2]){continue}break}e=o[a+1112>>2]}if((e|0)>=2){d=0;o[7717]=o[7717]+1;c=l[o[6606]](384,16)|0;n[c+376>>1]=0;o[c+368>>2]=1120403456;o[c+372>>2]=1008981770;o[c+348>>2]=0;o[c+352>>2]=0;o[c+12>>2]=0;m[c+16|0]=1;m[c+36|0]=1;o[c+4>>2]=0;o[c+8>>2]=0;o[c+32>>2]=0;m[c+56|0]=1;o[c+24>>2]=0;o[c+28>>2]=0;o[c+52>>2]=0;o[c+44>>2]=0;o[c+48>>2]=0;o[c+364>>2]=0;o[c+356>>2]=0;o[c+360>>2]=0;e=o[a+712>>2];v:{if((e|0)<1){break v}o[7717]=o[7717]+1;b=l[o[6606]](e<<2,16)|0;f=o[c+24>>2];if((f|0)>=1){while(1){g=d<<2;o[g+b>>2]=o[g+o[c+32>>2]>>2];d=d+1|0;if((f|0)!=(d|0)){continue}break}}d=o[c+32>>2];if(d){if(p[c+36|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}}o[c+32>>2]=0}o[c+32>>2]=b;m[c+36|0]=1;o[c+28>>2]=e;f=o[a+712>>2];if((f|0)<1){break v}d=o[c+24>>2];i=0;while(1){h=o[a+720>>2]+u(i,104)|0;w:{if((d|0)!=(e|0)){break w}b=e?e<<1:1;if((e|0)>=(b|0)){d=e;break w}d=0;g=0;if(b){o[7717]=o[7717]+1;g=l[o[6606]](b<<2,16)|0;e=o[c+24>>2]}if((e|0)>=1){while(1){f=d<<2;o[f+g>>2]=o[f+o[c+32>>2]>>2];d=d+1|0;if((e|0)!=(d|0)){continue}break}}d=o[c+32>>2];if(d){if(p[c+36|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}e=o[c+24>>2]}o[c+32>>2]=0}d=e;o[c+32>>2]=g;m[c+36|0]=1;o[c+28>>2]=b;f=o[a+712>>2];e=b}o[o[c+32>>2]+(d<<2)>>2]=h;d=d+1|0;o[c+24>>2]=d;i=i+1|0;if((i|0)<(f|0)){continue}break}}e=o[a+1112>>2];x:{if((e|0)!=o[a+1116>>2]){break x}b=e?e<<1:1;if((e|0)>=(b|0)){break x}d=0;g=0;if(b){o[7717]=o[7717]+1;g=l[o[6606]](b<<2,16)|0;e=o[a+1112>>2]}if((e|0)>=1){while(1){f=d<<2;o[f+g>>2]=o[f+o[a+1120>>2]>>2];d=d+1|0;if((e|0)!=(d|0)){continue}break}}d=o[a+1120>>2];if(d){if(p[a+1124|0]){if(d){o[7718]=o[7718]+1;l[o[6607]](d)}e=o[a+1112>>2]}o[a+1120>>2]=0}o[a+1120>>2]=g;o[a+1116>>2]=b;m[a+1124|0]=1}d=e<<2;o[d+o[a+1120>>2]>>2]=c;e=e+1|0;o[a+1112>>2]=e;b=o[a+1120>>2];c=o[b>>2];f=b;b=b+d|0;o[f>>2]=o[b>>2];o[b>>2]=c}if((e|0)>=1){d=0;while(1){if(!o[o[o[a+1120>>2]+(d<<2)>>2]+24>>2]){Df(a,d);e=o[a+1112>>2];d=d+ -1|0}d=d+1|0;if((d|0)<(e|0)){continue}break}}if(q){if(q){o[7718]=o[7718]+1;l[o[6607]](q)}}if(!j){break b}if(j){o[7718]=o[7718]+1;l[o[6607]](j)}}y:{if(!o[a+1112>>2]){q=0;break y}Zz(a);Mi(a);q=o[a+1112>>2];e=u(q,q);c=o[a+1132>>2];if((e|0)>(c|0)){z:{if(o[a+1136>>2]>=(e|0)){b=o[a+1140>>2];break z}d=0;f=c;b=0;if(e){o[7717]=o[7717]+1;b=l[o[6606]](e,16)|0;f=o[a+1132>>2]}g=o[a+1140>>2];A:{if((f|0)>=1){while(1){m[b+d|0]=p[d+g|0];d=d+1|0;if((f|0)!=(d|0)){continue}break A}}if(g){break A}o[a+1140>>2]=b;o[a+1136>>2]=e;m[a+1144|0]=1;break z}if(p[a+1144|0]){if(g){o[7718]=o[7718]+1;l[o[6607]](g)}}o[a+1140>>2]=b;m[a+1144|0]=1;o[a+1136>>2]=e}$(b+c|0,0,e-c|0);q=o[a+1112>>2]}o[a+1132>>2]=e;if((q|0)<1){break y}g=o[a+1140>>2];a=o[a+1120>>2];j=0;while(1){b=o[a+(j<<2)>>2];o[b+380>>2]=j;c=o[b+24>>2];z=(c|0)>0?c:0;h=0;while(1){I=g+(u(h,q)+j|0)|0;B:{if((c|0)>=1){A=o[a+(h<<2)>>2];e=o[A+24>>2];i=0;while(1){if((e|0)>=1){f=o[o[b+32>>2]+(i<<2)>>2];B=o[A+32>>2];d=0;while(1){F=1;if((f|0)==o[B+(d<<2)>>2]){break B}d=d+1|0;if((d|0)<(e|0)){continue}break}}i=i+1|0;if((z|0)!=(i|0)){continue}break}}F=0}m[I|0]=F;h=h+1|0;if((q|0)!=(h|0)){continue}break}j=j+1|0;if((j|0)!=(q|0)){continue}break}}M=D+16|0;return q}function ff(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;l=M-16|0;M=l;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{if(a>>>0<=244){f=o[7724];g=a>>>0<11?16:a+11&-8;a=g>>>3|0;b=f>>>a|0;if(b&3){c=a+((b^-1)&1)|0;e=c<<3;b=o[e+30944>>2];a=b+8|0;d=o[b+8>>2];e=e+30936|0;l:{if((d|0)==(e|0)){o[7724]=uL(c)&f;break l}o[d+12>>2]=e;o[e+8>>2]=d}c=c<<3;o[b+4>>2]=c|3;b=b+c|0;o[b+4>>2]=o[b+4>>2]|1;break a}i=o[7726];if(g>>>0<=i>>>0){break k}if(b){c=2<<a;a=(0-c|c)&b<<a;a=(0-a&a)+ -1|0;b=a>>>12&16;c=b;a=a>>>b|0;b=a>>>5&8;c=c|b;a=a>>>b|0;b=a>>>2&4;c=c|b;a=a>>>b|0;b=a>>>1&2;c=c|b;a=a>>>b|0;b=a>>>1&1;c=(c|b)+(a>>>b|0)|0;d=c<<3;b=o[d+30944>>2];a=o[b+8>>2];d=d+30936|0;m:{if((a|0)==(d|0)){f=uL(c)&f;o[7724]=f;break m}o[a+12>>2]=d;o[d+8>>2]=a}a=b+8|0;o[b+4>>2]=g|3;h=b+g|0;c=c<<3;e=c-g|0;o[h+4>>2]=e|1;o[b+c>>2]=e;if(i){c=i>>>3|0;b=(c<<3)+30936|0;d=o[7729];c=1<<c;n:{if(!(c&f)){o[7724]=c|f;c=b;break n}c=o[b+8>>2]}o[b+8>>2]=d;o[c+12>>2]=d;o[d+12>>2]=b;o[d+8>>2]=c}o[7729]=h;o[7726]=e;break a}k=o[7725];if(!k){break k}a=(k&0-k)+ -1|0;b=a>>>12&16;c=b;a=a>>>b|0;b=a>>>5&8;c=c|b;a=a>>>b|0;b=a>>>2&4;c=c|b;a=a>>>b|0;b=a>>>1&2;c=c|b;a=a>>>b|0;b=a>>>1&1;b=o[((c|b)+(a>>>b|0)<<2)+31200>>2];d=(o[b+4>>2]&-8)-g|0;c=b;while(1){o:{a=o[c+16>>2];if(!a){a=o[c+20>>2];if(!a){break o}}e=(o[a+4>>2]&-8)-g|0;c=e>>>0<d>>>0;d=c?e:d;b=c?a:b;c=a;continue}break}j=o[b+24>>2];e=o[b+12>>2];if((e|0)!=(b|0)){a=o[b+8>>2];o[a+12>>2]=e;o[e+8>>2]=a;break b}c=b+20|0;a=o[c>>2];if(!a){a=o[b+16>>2];if(!a){break j}c=b+16|0}while(1){h=c;e=a;c=a+20|0;a=o[c>>2];if(a){continue}c=e+16|0;a=o[e+16>>2];if(a){continue}break}o[h>>2]=0;break b}g=-1;if(a>>>0>4294967231){break k}b=a+11|0;g=b&-8;i=o[7725];if(!i){break k}c=0-g|0;b=b>>>8|0;f=0;p:{if(!b){break p}f=31;if(g>>>0>16777215){break p}d=b+1048320>>>16&8;b=b<<d;a=b+520192>>>16&4;f=b<<a;b=f+245760>>>16&2;a=(f<<b>>>15|0)-(b|(a|d))|0;f=(a<<1|g>>>a+21&1)+28|0}d=o[(f<<2)+31200>>2];q:{r:{s:{if(!d){a=0;break s}b=g<<((f|0)==31?0:25-(f>>>1|0)|0);a=0;while(1){t:{h=(o[d+4>>2]&-8)-g|0;if(h>>>0>=c>>>0){break t}e=d;c=h;if(c){break t}c=0;a=d;break r}h=o[d+20>>2];d=o[((b>>>29&4)+d|0)+16>>2];a=h?(h|0)==(d|0)?a:h:a;b=b<<((d|0)!=0);if(d){continue}break}}if(!(a|e)){a=2<<f;a=(0-a|a)&i;if(!a){break k}a=(a&0-a)+ -1|0;b=a>>>12&16;d=b;a=a>>>b|0;b=a>>>5&8;d=d|b;a=a>>>b|0;b=a>>>2&4;d=d|b;a=a>>>b|0;b=a>>>1&2;d=d|b;a=a>>>b|0;b=a>>>1&1;a=o[((d|b)+(a>>>b|0)<<2)+31200>>2]}if(!a){break q}}while(1){d=(o[a+4>>2]&-8)-g|0;b=d>>>0<c>>>0;c=b?d:c;e=b?a:e;b=o[a+16>>2];if(b){a=b}else{a=o[a+20>>2]}if(a){continue}break}}if(!e|c>>>0>=o[7726]-g>>>0){break k}h=o[e+24>>2];b=o[e+12>>2];if((e|0)!=(b|0)){a=o[e+8>>2];o[a+12>>2]=b;o[b+8>>2]=a;break c}d=e+20|0;a=o[d>>2];if(!a){a=o[e+16>>2];if(!a){break i}d=e+16|0}while(1){f=d;b=a;d=a+20|0;a=o[d>>2];if(a){continue}d=b+16|0;a=o[b+16>>2];if(a){continue}break}o[f>>2]=0;break c}b=o[7726];if(b>>>0>=g>>>0){a=o[7729];c=b-g|0;u:{if(c>>>0>=16){o[7726]=c;d=a+g|0;o[7729]=d;o[d+4>>2]=c|1;o[a+b>>2]=c;o[a+4>>2]=g|3;break u}o[7729]=0;o[7726]=0;o[a+4>>2]=b|3;b=a+b|0;o[b+4>>2]=o[b+4>>2]|1}a=a+8|0;break a}d=o[7727];if(d>>>0>g>>>0){b=d-g|0;o[7727]=b;a=o[7730];c=a+g|0;o[7730]=c;o[c+4>>2]=b|1;o[a+4>>2]=g|3;a=a+8|0;break a}a=0;e=g+47|0;c=e;if(o[7842]){b=o[7844]}else{o[7845]=-1;o[7846]=-1;o[7843]=4096;o[7844]=4096;o[7842]=l+12&-16^1431655768;o[7847]=0;o[7835]=0;b=4096}f=c+b|0;h=0-b|0;c=f&h;if(c>>>0<=g>>>0){break a}b=o[7834];if(b){i=o[7832];j=i+c|0;if(j>>>0<=i>>>0|j>>>0>b>>>0){break a}}if(p[31340]&4){break f}v:{w:{b=o[7730];if(b){a=31344;while(1){i=o[a>>2];if(i+o[a+4>>2]>>>0>b>>>0?i>>>0<=b>>>0:0){break w}a=o[a+8>>2];if(a){continue}break}}b=Bb(0);if((b|0)==-1){break g}f=c;a=o[7843];d=a+ -1|0;if(d&b){f=(c-b|0)+(b+d&0-a)|0}if(f>>>0<=g>>>0|f>>>0>2147483646){break g}a=o[7834];if(a){d=o[7832];h=d+f|0;if(h>>>0<=d>>>0|h>>>0>a>>>0){break g}}a=Bb(f);if((b|0)!=(a|0)){break v}break e}f=h&f-d;if(f>>>0>2147483646){break g}b=Bb(f);if((b|0)==(o[a>>2]+o[a+4>>2]|0)){break h}a=b}if(!((a|0)==-1|g+48>>>0<=f>>>0)){b=o[7844];b=b+(e-f|0)&0-b;if(b>>>0>2147483646){b=a;break e}if((Bb(b)|0)!=-1){f=b+f|0;b=a;break e}Bb(0-f|0);break g}b=a;if((a|0)!=-1){break e}break g}e=0;break b}b=0;break c}if((b|0)!=-1){break e}}o[7835]=o[7835]|4}if(c>>>0>2147483646){break d}b=Bb(c);a=Bb(0);if(b>>>0>=a>>>0|(b|0)==-1|(a|0)==-1){break d}f=a-b|0;if(f>>>0<=g+40>>>0){break d}}a=o[7832]+f|0;o[7832]=a;if(a>>>0>r[7833]){o[7833]=a}x:{y:{z:{c=o[7730];if(c){a=31344;while(1){d=o[a>>2];e=o[a+4>>2];if((d+e|0)==(b|0)){break z}a=o[a+8>>2];if(a){continue}break}break y}a=o[7728];if(!(b>>>0>=a>>>0?a:0)){o[7728]=b}a=0;o[7837]=f;o[7836]=b;o[7732]=-1;o[7733]=o[7842];o[7839]=0;while(1){c=a<<3;d=c+30936|0;o[c+30944>>2]=d;o[c+30948>>2]=d;a=a+1|0;if((a|0)!=32){continue}break}a=f+ -40|0;c=b+8&7?-8-b&7:0;d=a-c|0;o[7727]=d;c=b+c|0;o[7730]=c;o[c+4>>2]=d|1;o[(a+b|0)+4>>2]=40;o[7731]=o[7846];break x}if(p[a+12|0]&8|b>>>0<=c>>>0|d>>>0>c>>>0){break y}o[a+4>>2]=e+f;a=c+8&7?-8-c&7:0;b=a+c|0;o[7730]=b;d=o[7727]+f|0;a=d-a|0;o[7727]=a;o[b+4>>2]=a|1;o[(c+d|0)+4>>2]=40;o[7731]=o[7846];break x}e=o[7728];if(b>>>0<e>>>0){o[7728]=b;e=0}d=b+f|0;a=31344;A:{B:{C:{D:{E:{F:{while(1){if((d|0)!=o[a>>2]){a=o[a+8>>2];if(a){continue}break F}break}if(!(p[a+12|0]&8)){break E}}a=31344;while(1){d=o[a>>2];if(d>>>0<=c>>>0){e=d+o[a+4>>2]|0;if(e>>>0>c>>>0){break D}}a=o[a+8>>2];continue}}o[a>>2]=b;o[a+4>>2]=o[a+4>>2]+f;j=(b+8&7?-8-b&7:0)+b|0;o[j+4>>2]=g|3;b=d+(d+8&7?-8-d&7:0)|0;a=(b-j|0)-g|0;h=g+j|0;if((b|0)==(c|0)){o[7730]=h;a=o[7727]+a|0;o[7727]=a;o[h+4>>2]=a|1;break B}if(o[7729]==(b|0)){o[7729]=h;a=o[7726]+a|0;o[7726]=a;o[h+4>>2]=a|1;o[a+h>>2]=a;break B}c=o[b+4>>2];if((c&3)==1){k=c&-8;G:{if(c>>>0<=255){e=c>>>3|0;c=o[b+8>>2];d=o[b+12>>2];if((d|0)==(c|0)){o[7724]=o[7724]&uL(e);break G}o[c+12>>2]=d;o[d+8>>2]=c;break G}i=o[b+24>>2];f=o[b+12>>2];H:{if((f|0)!=(b|0)){c=o[b+8>>2];o[c+12>>2]=f;o[f+8>>2]=c;break H}I:{d=b+20|0;g=o[d>>2];if(g){break I}d=b+16|0;g=o[d>>2];if(g){break I}f=0;break H}while(1){c=d;f=g;d=g+20|0;g=o[d>>2];if(g){continue}d=f+16|0;g=o[f+16>>2];if(g){continue}break}o[c>>2]=0}if(!i){break G}c=o[b+28>>2];d=(c<<2)+31200|0;J:{if(o[d>>2]==(b|0)){o[d>>2]=f;if(f){break J}o[7725]=o[7725]&uL(c);break G}o[i+(o[i+16>>2]==(b|0)?16:20)>>2]=f;if(!f){break G}}o[f+24>>2]=i;c=o[b+16>>2];if(c){o[f+16>>2]=c;o[c+24>>2]=f}c=o[b+20>>2];if(!c){break G}o[f+20>>2]=c;o[c+24>>2]=f}b=b+k|0;a=a+k|0}o[b+4>>2]=o[b+4>>2]&-2;o[h+4>>2]=a|1;o[a+h>>2]=a;if(a>>>0<=255){b=a>>>3|0;a=(b<<3)+30936|0;c=o[7724];b=1<<b;K:{if(!(c&b)){o[7724]=b|c;b=a;break K}b=o[a+8>>2]}o[a+8>>2]=h;o[b+12>>2]=h;o[h+12>>2]=a;o[h+8>>2]=b;break B}c=h;d=a>>>8|0;b=0;L:{if(!d){break L}b=31;if(a>>>0>16777215){break L}e=d+1048320>>>16&8;d=d<<e;b=d+520192>>>16&4;g=d<<b;d=g+245760>>>16&2;b=(g<<d>>>15|0)-(d|(b|e))|0;b=(b<<1|a>>>b+21&1)+28|0}o[c+28>>2]=b;o[h+16>>2]=0;o[h+20>>2]=0;c=(b<<2)+31200|0;d=o[7725];e=1<<b;M:{if(!(d&e)){o[7725]=d|e;o[c>>2]=h;break M}d=a<<((b|0)==31?0:25-(b>>>1|0)|0);b=o[c>>2];while(1){c=b;if((o[b+4>>2]&-8)==(a|0)){break C}b=d>>>29|0;d=d<<1;e=(b&4)+c|0;b=o[e+16>>2];if(b){continue}break}o[e+16>>2]=h}o[h+24>>2]=c;o[h+12>>2]=h;o[h+8>>2]=h;break B}a=f+ -40|0;d=b+8&7?-8-b&7:0;h=a-d|0;o[7727]=h;d=b+d|0;o[7730]=d;o[d+4>>2]=h|1;o[(a+b|0)+4>>2]=40;o[7731]=o[7846];a=(e+(e+ -39&7?39-e&7:0)|0)+ -47|0;d=a>>>0<c+16>>>0?c:a;o[d+4>>2]=27;a=o[7839];o[d+16>>2]=o[7838];o[d+20>>2]=a;a=o[7837];o[d+8>>2]=o[7836];o[d+12>>2]=a;o[7838]=d+8;o[7837]=f;o[7836]=b;o[7839]=0;a=d+24|0;while(1){o[a+4>>2]=7;b=a+8|0;a=a+4|0;if(e>>>0>b>>>0){continue}break}if((c|0)==(d|0)){break x}o[d+4>>2]=o[d+4>>2]&-2;e=d-c|0;o[c+4>>2]=e|1;o[d>>2]=e;if(e>>>0<=255){b=e>>>3|0;a=(b<<3)+30936|0;d=o[7724];b=1<<b;N:{if(!(d&b)){o[7724]=b|d;b=a;break N}b=o[a+8>>2]}o[a+8>>2]=c;o[b+12>>2]=c;o[c+12>>2]=a;o[c+8>>2]=b;break x}o[c+16>>2]=0;o[c+20>>2]=0;b=c;d=e>>>8|0;a=0;O:{if(!d){break O}a=31;if(e>>>0>16777215){break O}f=d+1048320>>>16&8;d=d<<f;a=d+520192>>>16&4;h=d<<a;d=h+245760>>>16&2;a=(h<<d>>>15|0)-(d|(a|f))|0;a=(a<<1|e>>>a+21&1)+28|0}o[b+28>>2]=a;b=(a<<2)+31200|0;d=o[7725];f=1<<a;P:{if(!(d&f)){o[7725]=d|f;o[b>>2]=c;o[c+24>>2]=b;break P}a=e<<((a|0)==31?0:25-(a>>>1|0)|0);b=o[b>>2];while(1){d=b;if((e|0)==(o[b+4>>2]&-8)){break A}b=a>>>29|0;a=a<<1;f=d+(b&4)|0;b=o[f+16>>2];if(b){continue}break}o[f+16>>2]=c;o[c+24>>2]=d}o[c+12>>2]=c;o[c+8>>2]=c;break x}a=o[c+8>>2];o[a+12>>2]=h;o[c+8>>2]=h;o[h+24>>2]=0;o[h+12>>2]=c;o[h+8>>2]=a}a=j+8|0;break a}a=o[d+8>>2];o[a+12>>2]=c;o[d+8>>2]=c;o[c+24>>2]=0;o[c+12>>2]=d;o[c+8>>2]=a}a=o[7727];if(a>>>0<=g>>>0){break d}b=a-g|0;o[7727]=b;a=o[7730];c=a+g|0;o[7730]=c;o[c+4>>2]=b|1;o[a+4>>2]=g|3;a=a+8|0;break a}o[7722]=48;a=0;break a}Q:{if(!h){break Q}a=o[e+28>>2];d=(a<<2)+31200|0;R:{if(o[d>>2]==(e|0)){o[d>>2]=b;if(b){break R}i=uL(a)&i;o[7725]=i;break Q}o[h+(o[h+16>>2]==(e|0)?16:20)>>2]=b;if(!b){break Q}}o[b+24>>2]=h;a=o[e+16>>2];if(a){o[b+16>>2]=a;o[a+24>>2]=b}a=o[e+20>>2];if(!a){break Q}o[b+20>>2]=a;o[a+24>>2]=b}S:{if(c>>>0<=15){a=c+g|0;o[e+4>>2]=a|3;a=a+e|0;o[a+4>>2]=o[a+4>>2]|1;break S}o[e+4>>2]=g|3;d=e+g|0;o[d+4>>2]=c|1;o[c+d>>2]=c;if(c>>>0<=255){b=c>>>3|0;a=(b<<3)+30936|0;c=o[7724];b=1<<b;T:{if(!(c&b)){o[7724]=b|c;b=a;break T}b=o[a+8>>2]}o[a+8>>2]=d;o[b+12>>2]=d;o[d+12>>2]=a;o[d+8>>2]=b;break S}b=d;g=c>>>8|0;a=0;U:{if(!g){break U}a=31;if(c>>>0>16777215){break U}f=g+1048320>>>16&8;g=g<<f;a=g+520192>>>16&4;h=g<<a;g=h+245760>>>16&2;a=(h<<g>>>15|0)-(g|(a|f))|0;a=(a<<1|c>>>a+21&1)+28|0}o[b+28>>2]=a;o[d+16>>2]=0;o[d+20>>2]=0;b=(a<<2)+31200|0;V:{g=1<<a;W:{if(!(g&i)){o[7725]=g|i;o[b>>2]=d;break W}a=c<<((a|0)==31?0:25-(a>>>1|0)|0);g=o[b>>2];while(1){b=g;if((o[b+4>>2]&-8)==(c|0)){break V}g=a>>>29|0;a=a<<1;f=(g&4)+b|0;g=o[f+16>>2];if(g){continue}break}o[f+16>>2]=d}o[d+24>>2]=b;o[d+12>>2]=d;o[d+8>>2]=d;break S}a=o[b+8>>2];o[a+12>>2]=d;o[b+8>>2]=d;o[d+24>>2]=0;o[d+12>>2]=b;o[d+8>>2]=a}a=e+8|0;break a}X:{if(!j){break X}a=o[b+28>>2];c=(a<<2)+31200|0;Y:{if(o[c>>2]==(b|0)){o[c>>2]=e;if(e){break Y}o[7725]=uL(a)&k;break X}o[j+(o[j+16>>2]==(b|0)?16:20)>>2]=e;if(!e){break X}}o[e+24>>2]=j;a=o[b+16>>2];if(a){o[e+16>>2]=a;o[a+24>>2]=e}a=o[b+20>>2];if(!a){break X}o[e+20>>2]=a;o[a+24>>2]=e}Z:{if(d>>>0<=15){a=d+g|0;o[b+4>>2]=a|3;a=a+b|0;o[a+4>>2]=o[a+4>>2]|1;break Z}o[b+4>>2]=g|3;g=b+g|0;o[g+4>>2]=d|1;o[d+g>>2]=d;if(i){c=i>>>3|0;a=(c<<3)+30936|0;e=o[7729];c=1<<c;_:{if(!(c&f)){o[7724]=c|f;c=a;break _}c=o[a+8>>2]}o[a+8>>2]=e;o[c+12>>2]=e;o[e+12>>2]=a;o[e+8>>2]=c}o[7729]=g;o[7726]=d}a=b+8|0}M=l+16|0;return a|0}function Hf(a,b,c,d,e){var f=v(0),g=v(0),h=v(0),i=v(0),j=v(0),k=0,l=v(0),n=v(0),q=v(0),r=v(0),t=v(0),u=v(0),x=v(0),A=v(0),B=v(0),D=v(0),E=v(0),F=v(0),G=v(0),H=v(0),I=v(0),J=v(0),K=v(0),L=v(0),N=v(0),O=v(0),P=v(0),Q=v(0),R=v(0),S=v(0),T=v(0),U=v(0),V=v(0),W=v(0),X=v(0),Y=v(0),Z=v(0),_=v(0),$=v(0),aa=v(0),ba=v(0),ca=v(0),da=v(0),ea=v(0),fa=v(0),ga=v(0),ha=v(0),ia=v(0),ja=v(0),ka=v(0),la=v(0),ma=v(0),na=v(0),oa=v(0),pa=v(0),sa=v(0),ta=v(0),ua=v(0),va=v(0),wa=v(0),xa=v(0),za=v(0),Aa=v(0),Ba=v(0),Ca=v(0),Da=v(0),Ea=v(0),Fa=v(0),Ga=v(0),Ha=v(0),Ia=0,Ja=v(0),Ka=v(0),La=v(0),Ma=v(0),Na=v(0),Oa=v(0);k=M-80|0;M=k;m[a+525|0]=0;m[a+526|0]=0;o[a+500>>2]=0;o[a+504>>2]=0;a:{if(!(p[a+527|0]|!p[a+552|0])){Ja=s[c+52>>2];Ka=s[c+56>>2];S=s[a+412>>2];u=s[a+416>>2];K=s[a+420>>2];La=s[b+52>>2];Ma=s[b+56>>2];I=s[a+348>>2];A=s[a+352>>2];P=s[a+356>>2];h=s[c+20>>2];j=s[c+24>>2];l=s[b+20>>2];D=s[b+24>>2];T=s[a+308>>2];V=s[a+324>>2];W=s[a+340>>2];X=s[a+316>>2];Y=s[a+332>>2];Z=s[a+304>>2];E=s[b+36>>2];_=s[a+320>>2];q=s[b+40>>2];ga=s[a+336>>2];ha=s[a+372>>2];ia=s[a+388>>2];ja=s[a+404>>2];ka=s[a+368>>2];sa=s[a+384>>2];ta=s[a+400>>2];i=s[a+568>>2];G=s[a+564>>2];f=s[a+560>>2];Q=s[c+36>>2];ua=s[a+380>>2];R=s[c+40>>2];va=s[a+396>>2];Na=s[c+48>>2];L=s[c+8>>2];B=s[c+4>>2];F=s[c>>2];Oa=s[b+48>>2];t=s[b+8>>2];H=s[b>>2];N=s[b+4>>2];x=s[c+16>>2];J=s[b+16>>2];wa=s[a+300>>2];r=s[b+32>>2];g=s[a+556>>2];n=s[c+32>>2];xa=s[a+364>>2];o[k+76>>2]=0;o[k+60>>2]=0;o[k+44>>2]=0;la=v(v(v(T*r)+v(V*E))+v(W*q));O=v(v(2)/v(v(v(v(g*g)+v(f*f))+v(G*G))+v(i*i)));$=v(g*O);aa=v(g*$);U=v(f*O);ba=v(f*U);za=v(v(1)-v(aa+ba));ma=v(v(v(ha*n)+v(ia*Q))+v(ja*R));O=v(G*O);ca=v(g*O);da=v(i*U);Aa=v(ca+da);na=v(v(v(xa*n)+v(ua*Q))+v(va*R));ea=v(f*O);fa=v(i*$);Ba=v(ea-fa);f=v(v(v(ka*n)+v(sa*Q))+v(ta*R));$=v(v(za*ma)+v(v(Aa*na)+v(Ba*f)));oa=v(v(v(wa*r)+v(X*E))+v(Y*q));Ca=v(ca-da);G=v(G*O);Da=v(v(1)-v(ba+G));U=v(g*U);O=v(i*O);Ea=v(U+O);g=v(v(Ca*ma)+v(v(Da*na)+v(Ea*f)));i=v(v(v(Z*r)+v(_*E))+v(ga*q));Fa=v(ea+fa);Ga=v(U-O);Ha=v(v(1)-v(aa+G));G=v(v(Fa*ma)+v(v(Ga*na)+v(Ha*f)));s[k+56>>2]=v(la*$)+v(v(oa*g)+v(i*G));O=v(v(v(T*J)+v(V*l))+v(W*D));U=v(v(v(wa*J)+v(X*l))+v(Y*D));aa=v(v(v(Z*J)+v(_*l))+v(ga*D));s[k+52>>2]=v(O*$)+v(v(U*g)+v(aa*G));ba=v(v(v(ha*x)+v(ia*h))+v(ja*j));ca=v(v(v(xa*x)+v(ua*h))+v(va*j));da=v(v(v(ka*x)+v(sa*h))+v(ta*j));ea=v(v(za*ba)+v(v(Aa*ca)+v(Ba*da)));fa=v(v(Ca*ba)+v(v(Da*ca)+v(Ea*da)));pa=v(v(Fa*ba)+v(v(Ga*ca)+v(Ha*da)));s[k+40>>2]=v(la*ea)+v(v(oa*fa)+v(i*pa));s[k+36>>2]=v(O*ea)+v(v(U*fa)+v(aa*pa));J=v(-v(La+v(v(v(J*I)+v(l*A))+v(D*P))));l=v(v(v(H*T)+v(N*V))+v(t*W));T=v(Oa+v(v(v(H*I)+v(N*A))+v(t*P)));q=v(Ma+v(v(v(r*I)+v(E*A))+v(q*P)));r=v(v(v(O*J)-v(l*T))-v(la*q));D=v(v(v(wa*H)+v(X*N))+v(Y*t));I=v(v(v(U*J)-v(D*T))-v(oa*q));E=v(v(v(H*Z)+v(N*_))+v(t*ga));t=v(v(v(aa*J)-v(E*T))-v(i*q));s[k+72>>2]=v(v(r*$)+v(v(I*g)+v(t*G)))+v(v(v(ma*v(0))+v(v(na*v(0))+v(f*v(0))))+v(Ka+v(v(v(n*S)+v(Q*u))+v(R*K))));s[k+68>>2]=v(v(r*ea)+v(v(I*fa)+v(t*pa)))+v(v(v(ba*v(0))+v(v(ca*v(0))+v(da*v(0))))+v(Ja+v(v(v(x*S)+v(h*u))+v(j*K))));o[k+28>>2]=0;s[k+48>>2]=v(l*$)+v(v(D*g)+v(E*G));s[k+32>>2]=v(l*ea)+v(v(D*fa)+v(E*pa));g=v(v(v(xa*F)+v(ua*B))+v(va*L));f=v(v(v(F*ka)+v(B*sa))+v(L*ta));h=v(v(v(F*ha)+v(B*ia))+v(L*ja));j=v(v(v(Aa*g)+v(Ba*f))+v(za*h));q=v(v(v(Da*g)+v(Ea*f))+v(Ca*h));n=i;i=v(v(v(Ga*g)+v(Ha*f))+v(Fa*h));s[k+24>>2]=v(la*j)+v(v(oa*q)+v(n*i));s[k+20>>2]=v(O*j)+v(v(U*q)+v(aa*i));s[k+16>>2]=v(l*j)+v(v(D*q)+v(E*i));s[k+64>>2]=v(v(r*j)+v(v(I*q)+v(t*i)))+v(v(v(v(g*v(0))+v(f*v(0)))+v(h*v(0)))+v(Na+v(v(v(F*S)+v(B*u))+v(L*K))));ya(k+16|0,k);g=s[k>>2];i=s[k+4>>2];f=s[k+8>>2];h=v(v(v(g*g)+v(i*i))+v(f*f));if(v(w(h))<v(1.1920928955078125e-7)){break a}o[a+472>>2]=0;h=v(v(1)/v(C(h)));s[a+468>>2]=h*f;s[a+464>>2]=h*i;s[a+460>>2]=h*g;g=Sa(v(y(v(z(s[k+12>>2],v(-1))),v(1))));g=v(g+g);s[a+504>>2]=g;if(v(w(g))<v(1.1920928955078125e-7)){break a}m[a+526|0]=1;break a}ya(b,k+16|0);ya(a+300|0,k);g=s[k+24>>2];f=s[k+8>>2];h=s[k+4>>2];j=s[k+20>>2];q=s[k+12>>2];L=s[k+28>>2];B=s[k+16>>2];F=s[k>>2];ya(c,k+16|0);ya(a+364|0,k);J=v(-0);N=v(1);G=v(v(v(F*g)+v(v(q*j)+v(L*h)))-v(B*f));t=s[k+28>>2];H=s[k+8>>2];x=s[k+12>>2];r=s[k+24>>2];n=s[k+16>>2];S=s[k+4>>2];u=s[k>>2];K=s[k+20>>2];l=v(v(v(v(t*H)+v(x*r))+v(n*S))-v(u*K));Q=v(v(v(v(L*F)+v(B*q))+v(j*f))-v(g*h));D=v(v(v(v(t*x)-v(u*n))-v(K*S))-v(H*r));R=v(v(v(v(L*q)-v(F*B))-v(j*h))-v(f*g));E=v(v(v(v(t*u)+v(n*x))+v(K*H))-v(r*S));L=v(v(v(v(L*f)+v(q*g))+v(B*h))-v(F*j));q=v(v(v(u*r)+v(v(x*K)+v(t*S)))-v(n*H));B=v(v(G*l)+v(v(v(Q*D)-v(R*E))-v(L*q)));F=v(v(Q*q)+v(v(v(L*D)-v(R*l))-v(G*E)));t=v(v(L*l)+v(v(v(Q*E)+v(R*D))+v(G*q)));f=v(t*v(0));h=v(B*v(0));g=v(v(F+f)-h);H=v(v(L*E)+v(v(v(G*D)-v(R*q))-v(Q*l)));f=v(v(f+h)-H);j=v(H*v(0));x=v(F*v(0));h=v(v(v(-B)-j)-x);j=v(v(t+j)-x);x=v(v(B*g)+v(v(v(t*f)-v(F*h))-v(H*j)));n=x;A=v(x*x);x=v(v(H*f)+v(v(v(t*j)-v(B*h))-v(F*g)));g=v(v(F*j)+v(v(v(t*g)-v(H*h))-v(B*f)));f=v(v(1)/v(C(v(A+v(v(x*x)+v(g*g))))));j=v(n*f);g=v(g*f);h=v(x*f);f=v(v(j*v(0))+v(v(g*v(0))+h));if(!(f<v(-.9999998807907104))){N=v(h*v(0));i=v(f+v(1));f=v(C(v(i+i)));h=v(v(1)/f);i=v(v(g-N)*h);J=v(v(v(j*v(0))-v(g*v(0)))*h);I=v(f*v(.5));N=v(v(N-j)*h)}g=v(v(1)/v(C(v(v(v(v(J*J)+v(N*N))+v(i*i))+v(I*I)))));N=v(N*g);S=v(I*g);x=v(i*g);J=v(J*g);b:{c:{f=s[a+444>>2];u=s[a+456>>2];Ia=f>=u;if(!Ia){break c}r=s[a+448>>2];if(!(r>=u)){break c}j=Sa(v(y(v(z(S,v(-1))),v(1))));n=v(j+j);g=v(0);d:{if(!(n>v(1.1920928955078125e-7))){break d}j=v(v(1)/v(C(v(v(x*x)+v(v(J*J)+v(N*N))))));h=v(x*j);i=v(J*j);j=v(N*j);g=f;if(!(v(w(j))>v(1.1920928955078125e-7))){break d}g=v(v(h*h)/v(j*j));g=v(C(v(v(g+v(1))/v(v(g/v(f*f))+v(v(1)/v(r*r))))))}A=s[a+428>>2];u=v(g*A);if(!(n>u)){break b}m[a+526|0]=1;I=v(1);K=v(n-u);s[a+504>>2]=K;s[a+528>>2]=n<g^1|A<v(.9999998807907104)^1?I:v(K/v(g-u));if(!!(v(w(j))>v(1.1920928955078125e-7))){g=v(w(v(j*v(v(r/f)*v(v(-h)/j)))));g=h<v(0)?g:v(-g);f=v(v(1)/v(C(v(v(v(i*i)+v(j*j))+v(g*g)))));h=v(f*v(-g));j=v(j*f);i=v(i*f)}o[a+536>>2]=0;o[a+540>>2]=0;o[a+472>>2]=0;o[a+544>>2]=0;o[a+548>>2]=0;g=v(-j);f=v(v(v(D*g)-v(l*i))+v(E*h));r=v(v(q*i)+v(v(E*g)-v(D*h)));n=v(v(v(E*i)+v(q*j))+v(l*h));h=v(v(l*j)+v(v(q*v(-h))-v(D*i)));g=v(v(E*f)+v(v(v(D*r)-v(l*n))-v(q*h)));s[a+468>>2]=g;i=v(v(l*h)+v(v(v(D*f)-v(q*n))-v(E*r)));s[a+464>>2]=i;f=v(v(q*r)+v(v(v(D*h)-v(E*n))-v(l*f)));s[a+460>>2]=f;s[a+492>>2]=v(1)/v(v(v(v(f*v(v(v(f*s[d>>2])+v(s[d+16>>2]*i))+v(s[d+32>>2]*g)))+v(i*v(v(v(f*s[d+4>>2])+v(i*s[d+20>>2]))+v(g*s[d+36>>2]))))+v(g*v(v(v(f*s[d+8>>2])+v(i*s[d+24>>2]))+v(g*s[d+40>>2]))))+v(v(v(f*v(v(v(f*s[e>>2])+v(i*s[e+16>>2]))+v(g*s[e+32>>2])))+v(i*v(v(v(f*s[e+4>>2])+v(i*s[e+20>>2]))+v(g*s[e+36>>2]))))+v(g*v(v(v(f*s[e+8>>2])+v(i*s[e+24>>2]))+v(g*s[e+40>>2])))));break b}h=s[b>>2];g=s[a+308>>2];K=s[b+4>>2];i=s[a+324>>2];I=s[b+8>>2];n=s[a+340>>2];ga=v(v(v(h*g)+v(K*i))+v(I*n));A=s[a+364>>2];P=s[a+380>>2];T=s[a+396>>2];j=v(v(v(A*s[c>>2])+v(P*s[c+4>>2]))+v(T*s[c+8>>2]));V=s[b+16>>2];W=s[b+20>>2];X=s[b+24>>2];ha=v(v(v(V*g)+v(W*i))+v(X*n));r=v(v(v(A*s[c+16>>2])+v(P*s[c+20>>2]))+v(T*s[c+24>>2]));Y=s[b+32>>2];Z=s[b+36>>2];_=s[b+40>>2];ia=v(v(v(Y*g)+v(Z*i))+v(_*n));n=v(v(v(A*s[c+32>>2])+v(P*s[c+36>>2]))+v(T*s[c+40>>2]));g=v(v(v(ga*j)+v(ha*r))+v(ia*n));i=s[a+304>>2];A=s[a+320>>2];P=s[a+336>>2];T=v(v(v(h*i)+v(K*A))+v(I*P));ja=v(v(v(V*i)+v(W*A))+v(X*P));ka=v(v(v(Y*i)+v(Z*A))+v(_*P));i=v(v(v(T*j)+v(ja*r))+v(ka*n));A=s[a+300>>2];O=v(A*h);h=s[a+316>>2];P=s[a+332>>2];K=v(v(O+v(h*K))+v(P*I));I=v(v(v(A*V)+v(h*W))+v(P*X));A=v(v(v(A*Y)+v(h*Z))+v(P*_));h=v(v(v(K*j)+v(I*r))+v(A*n));e:{if(!!(f<u)){f=s[a+448>>2];if(!!(f<u)){if(v(w(g))<v(1.1920928955078125e-7)?!!(v(w(i))<v(1.1920928955078125e-7)):0){break b}m[a+526|0]=1;o[a+472>>2]=0;s[a+468>>2]=-v(v(I*j)-v(K*r));s[a+464>>2]=-v(v(K*n)-v(A*j));s[a+460>>2]=-v(v(A*r)-v(I*n));break b}if(v(w(g))<v(1.1920928955078125e-7)?!!(v(w(h))<v(1.1920928955078125e-7)):0){break e}m[a+526|0]=1;if(!(f>=u)){break e}u=_a(g,h);if(!!(u>f)){i=v(0);g=qa(f);h=ra(f);break e}i=v(0);if(!(u<v(-f))){break e}g=v(-qa(f));h=ra(f);break e}if(v(w(i))<v(1.1920928955078125e-7)?!!(v(w(h))<v(1.1920928955078125e-7)):0){break e}m[a+526|0]=1;if(!Ia){break e}u=_a(i,h);f:{if(!!(u>f)){g=v(0);i=qa(f);break f}g=v(0);if(!(u<v(-f))){break e}i=v(-qa(f))}h=ra(f)}o[a+472>>2]=0;f=v(v(ia*g)+v(v(ka*i)+v(A*h)));u=v(v(ga*g)+v(v(T*i)+v(K*h)));i=v(v(ha*g)+v(v(ja*i)+v(I*h)));g=v(v(1)/v(C(v(v(f*f)+v(v(u*u)+v(i*i))))));f=v(f*g);h=v(i*g);i=v(v(r*f)-v(n*h));A=n;n=v(u*g);g=v(v(A*n)-v(j*f));f=v(v(j*h)-v(r*n));h=v(C(v(v(v(i*i)+v(g*g))+v(f*f))));s[a+504>>2]=h;h=v(v(1)/h);s[a+468>>2]=h*v(-f);s[a+464>>2]=h*v(-g);s[a+460>>2]=h*v(-i)}r=s[a+452>>2];if(!!(r>=v(0))){j=v(v(F*x)+v(v(H*N)+v(v(t*S)+v(B*J))));g=v(v(B*N)+v(v(v(F*S)-v(t*x))-v(H*J)));i=v(v(H*x)+v(v(v(B*S)-v(t*J))-v(F*N)));h=v(v(F*J)+v(v(v(H*S)-v(t*N))-v(B*x)));f=v(v(1)/v(C(v(v(j*j)+v(v(g*g)+v(v(i*i)+v(h*h)))))));g=v(g*f);h=v(h*f);i=v(i*f);f=v(j*f);j=Sa(v(y(v(z(f,v(-1))),v(1))));j=v(j+j);if(!!(j>v(3.1415927410125732))){f=Sa(v(y(v(z(v(-f),v(-1))),v(1))));j=v(f+f);h=v(-h);i=v(-i);g=v(-g)}s[a+512>>2]=j;if(!!(j>v(1.1920928955078125e-7))){f=v(v(1)/v(C(v(v(v(i*i)+v(h*h))+v(g*g)))));g=v(g*f);h=v(h*f);i=v(i*f)}F=s[a+428>>2];B=v(r*F);if(!!(j>B)){m[a+525|0]=1;t=v(j-B);s[a+508>>2]=t;b=a;f=v(1);g:{if(!(j<r)){break g}f=v(1);if(!(F<v(.9999998807907104))){break g}f=v(t/v(r-B))}s[b+532>>2]=f;o[a+488>>2]=0;f=v(-h);B=v(v(v(D*f)-v(l*i))+v(E*g));F=v(v(q*i)+v(v(E*f)-v(D*g)));t=v(v(v(E*i)+v(q*h))+v(l*g));H=v(v(l*h)+v(v(q*v(-g))-v(D*i)));f=v(v(E*B)+v(v(v(D*F)-v(l*t))-v(q*H)));s[a+484>>2]=f;j=v(v(l*H)+v(v(v(D*B)-v(q*t))-v(E*F)));s[a+480>>2]=j;l=v(v(q*F)+v(v(v(D*H)-v(E*t))-v(l*B)));s[a+476>>2]=l;s[a+496>>2]=v(1)/v(v(v(v(l*v(v(v(l*s[d>>2])+v(s[d+16>>2]*j))+v(s[d+32>>2]*f)))+v(j*v(v(v(l*s[d+4>>2])+v(j*s[d+20>>2]))+v(f*s[d+36>>2]))))+v(f*v(v(v(l*s[d+8>>2])+v(j*s[d+24>>2]))+v(f*s[d+40>>2]))))+v(v(v(l*v(v(v(l*s[e>>2])+v(j*s[e+16>>2]))+v(f*s[e+32>>2])))+v(j*v(v(v(l*s[e+4>>2])+v(j*s[e+20>>2]))+v(f*s[e+36>>2]))))+v(f*v(v(v(l*s[e+8>>2])+v(j*s[e+24>>2]))+v(f*s[e+40>>2])))))}if(!p[a+526|0]){break a}o[a+548>>2]=0;j=v(-h);f=v(v(v(R*j)-v(L*i))+v(Q*g));j=v(v(G*i)+v(v(Q*j)-v(R*g)));l=v(v(v(Q*i)+v(G*h))+v(L*g));g=v(v(L*h)+v(v(G*v(-g))-v(R*i)));s[a+544>>2]=v(Q*f)+v(v(v(R*j)-v(L*l))-v(G*g));s[a+540>>2]=v(L*g)+v(v(v(R*f)-v(G*l))-v(Q*j));s[a+536>>2]=v(G*j)+v(v(v(R*g)-v(Q*l))-v(L*f));break a}o[a+512>>2]=0}M=k+80|0}function wi(a,b,c,d,e){var f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,p=0,q=0,r=0,s=0,t=0,v=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,F=0,G=0,H=0,I=0,J=0,K=0,L=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0;h=M-48|0;M=h;t=o[e>>2];r=b;C=o[d>>2];if(C){r=o[C+12>>2]}A=o[r+96>>2];l=o[b+96>>2];T=o[c+96>>2]-l|0;f=o[(C?C:t)+12>>2];m=o[b+92>>2];g=o[f+92>>2]-m|0;k=c;L=o[c+92>>2]-m|0;w=o[f+96>>2]-l|0;c=u(T,g)-u(L,w)|0;O=c;P=c>>31;c=T;x=c>>31;n=tL(O,P,c,x);z=N;j=o[b+88>>2];i=o[f+88>>2]-j|0;U=o[k+88>>2]-j|0;b=u(i,L)-u(g,U)|0;Q=b;R=b>>31;b=U;p=b>>31;f=tL(Q,R,b,p);H=n-f|0;I=z-(N+(n>>>0<f>>>0)|0)|0;G=o[r+92>>2];n=G;g=tL(H,I,n,n>>31);z=N;n=L;D=n>>31;f=tL(Q,R,n,D);F=N;q=g;g=u(b,w)-u(c,i)|0;V=g;S=g>>31;c=tL(g,S,c,x);J=f-c|0;F=F-(N+(f>>>0<c>>>0)|0)|0;r=o[r+88>>2];c=r;f=tL(J,F,c,c>>31);c=q+f|0;g=N+z|0;g=c>>>0<f>>>0?g+1|0:g;b=tL(b,p,V,S);f=N;q=c;c=tL(n,D,O,P);D=b-c|0;K=f-(N+(b>>>0<c>>>0)|0)|0;c=tL(D,K,A,A>>31);b=q+c|0;f=N+g|0;n=b;c=b>>>0<c>>>0?f+1|0:f;b=tL(O,P,j,j>>31);f=N;l=tL(Q,R,l,l>>31);b=l+b|0;f=N+f|0;f=b>>>0<l>>>0?f+1|0:f;l=tL(V,S,m,m>>31);b=l+b|0;f=N+f|0;B=b;p=b>>>0<l>>>0?f+1|0:f;k=t?o[t+12>>2]:k;w=o[k+96>>2];x=o[k+92>>2];z=o[k+88>>2];b=t;a:{if(!C){break a}b=t;if(!o[C+12>>2]){break a}b=o[o[C+8>>2]+4>>2];j=o[b+12>>2];f=j;l=o[f+92>>2];m=l;l=l>>31;k=tL(m,l,V,S);g=N;q=k;f=o[f+88>>2];y=f;v=f>>31;k=tL(f,v,O,P);f=q+k|0;g=N+g|0;g=f>>>0<k>>>0?g+1|0:g;i=f;f=o[j+96>>2];q=f;s=f>>31;k=tL(f,s,Q,R);j=i+k|0;f=N+g|0;f=j>>>0<k>>>0?f+1|0:f;b:{if((f|0)<(p|0)?1:(f|0)<=(p|0)?j>>>0>=B>>>0?0:1:0){break b}k=b+12|0;E=o[a+100>>2];while(1){if((E|0)==o[b+20>>2]){break b}f=tL(m,l,H,I);m=N;j=tL(y,v,J,F);l=j+f|0;f=N+m|0;f=l>>>0<j>>>0?f+1|0:f;m=tL(q,s,D,K);l=m+l|0;g=N+f|0;g=l>>>0<m>>>0?g+1|0:g;f=g;if((f|0)<(c|0)?1:(f|0)<=(c|0)?l>>>0>n>>>0?0:1:0){break b}o[d>>2]=b;c=o[k>>2];A=o[c+96>>2];G=o[c+92>>2];r=o[c+88>>2];if(c){b=o[o[b+8>>2]+4>>2];k=b+12|0;n=l;c=f;g=o[b+12>>2];f=g;l=o[f+92>>2];m=l;l=l>>31;j=tL(m,l,V,S);i=N;f=o[f+88>>2];y=f;v=f>>31;q=tL(f,v,O,P);j=q+j|0;f=N+i|0;f=j>>>0<q>>>0?f+1|0:f;i=j;j=o[g+96>>2];q=j;s=j>>31;g=tL(j,s,Q,R);j=i+g|0;i=N+f|0;i=j>>>0<g>>>0?i+1|0:i;if((i|0)<(p|0)?1:(i|0)<=(p|0)?j>>>0>=B>>>0?0:1:0){break b}continue}break}n=l;c=f}b=o[e>>2]}f=tL(H,I,x,x>>31);l=N;m=tL(J,F,z,z>>31);f=m+f|0;g=N+l|0;g=f>>>0<m>>>0?g+1|0:g;m=tL(D,K,w,w>>31);l=m+f|0;f=N+g|0;f=l>>>0<m>>>0?f+1|0:f;m=l;l=f;c:{if(!b){b=0;break c}if(!o[b+12>>2]){break c}k=o[o[b+8>>2]>>2];j=o[k+12>>2];f=j;g=o[f+92>>2];y=g;v=g>>31;g=tL(g,v,V,S);i=N;W=g;f=o[f+88>>2];q=f;s=f>>31;g=tL(f,s,O,P);f=W+g|0;i=N+i|0;i=f>>>0<g>>>0?i+1|0:i;W=f;f=o[j+96>>2];g=f;E=f>>31;X=tL(f,E,Q,R);j=W+X|0;f=N+i|0;f=j>>>0<X>>>0?f+1|0:f;if((f|0)<(p|0)?1:(f|0)<=(p|0)?j>>>0>=B>>>0?0:1:0){break c}X=k+12|0;Y=o[a+100>>2];while(1){j=k;if((Y|0)==o[j+20>>2]){break c}f=tL(y,v,H,I);i=N;y=tL(q,s,J,F);k=y+f|0;f=N+i|0;f=k>>>0<y>>>0?f+1|0:f;g=tL(D,K,g,E);k=g+k|0;i=N+f|0;i=k>>>0<g>>>0?i+1|0:i;g=k;f=i;if((f|0)<(l|0)?1:(f|0)<=(l|0)?g>>>0>m>>>0?0:1:0){break c}o[e>>2]=j;b=o[X>>2];w=o[b+96>>2];x=o[b+92>>2];z=o[b+88>>2];if(b){k=o[o[j+8>>2]>>2];X=k+12|0;m=g;l=f;b=j;g=o[k+12>>2];f=g;j=o[f+92>>2];y=j;v=j>>31;j=tL(j,v,V,S);i=N;f=o[f+88>>2];q=f;s=f>>31;E=tL(f,s,O,P);j=E+j|0;f=N+i|0;f=j>>>0<E>>>0?f+1|0:f;W=j;j=o[g+96>>2];g=j;E=g>>31;i=tL(g,E,Q,R);j=W+i|0;f=N+f|0;f=j>>>0<i>>>0?f+1|0:f;if((f|0)<(p|0)?1:(f|0)<=(p|0)?j>>>0>=B>>>0?0:1:0){break c}continue}break}b=j;m=g;l=f}d:{c=l-((m>>>0<n>>>0)+c|0)|0;n=m-n|0;if((c|0)>0?1:(c|0)>=0?n>>>0<1?0:1:0){while(1){p=(u(x-G|0,L)+u(z-r|0,U)|0)+u(w-A|0,T)|0;b=p;l=b;y=b>>31;e:{v=o[d>>2];if(!v|!o[v+12>>2]){break e}q=o[o[v>>2]+8>>2];if(o[q+20>>2]<=o[a+100>>2]){break e}b=o[q+12>>2];m=o[b+92>>2];f=m-G|0;j=o[b+88>>2];g=j-r|0;k=o[b+96>>2];b=k-A|0;t=(u(f,L)+u(g,U)|0)+u(b,T)|0;f=tL(H,I,f,f>>31);i=N;s=tL(J,F,g,g>>31);g=s+f|0;f=N+i|0;f=g>>>0<s>>>0?f+1|0:f;i=g;g=tL(D,K,b,b>>31);b=i+g|0;f=N+f|0;f=b>>>0<g>>>0?f+1|0:f;g=b;i=f;f:{if(!(f|b)){if((t|0)<0){break f}break e}if((i|0)>-1?1:(i|0)>=-1?g>>>0<=4294967295?0:1:0){break e}b=t;s=b>>31;f=h;g:{if((b|0)>=1){o[h+24>>2]=b;o[h+28>>2]=s;o[h+40>>2]=1;b=-1;break g}if((t|0)<=-1){o[h+40>>2]=-1;o[h+24>>2]=0-b;o[h+28>>2]=0-((0<b>>>0)+s|0);b=1;break g}o[h+24>>2]=0;o[h+28>>2]=0;o[h+40>>2]=0;b=0}o[f+40>>2]=b;o[h+32>>2]=0-g;o[h+36>>2]=0-((0<g>>>0)+i|0);h:{if((p|0)>=1){o[h>>2]=l;o[h+4>>2]=y;o[h+16>>2]=1;g=-1;break h}if((p|0)<=-1){o[h+16>>2]=-1;b=l;o[h>>2]=0-b;o[h+4>>2]=0-((0<b>>>0)+y|0);g=1;break h}o[h>>2]=0;o[h+4>>2]=0;o[h+16>>2]=0;g=0}t=h;f=c;b=n;i=f;i:{if((f|0)>0?1:(f|0)>=0?b>>>0<=0?0:1:0){break i}b=0;i=0;if((c|0)>-1?1:(c|0)>=-1?n>>>0<=4294967295?0:1:0){break i}o[h+16>>2]=g;f=n;b=0-f|0;i=0-((0<f>>>0)+c|0)|0}f=i;o[t+8>>2]=b;o[t+12>>2]=f;if((Xb(h+24|0,h)|0)<=-1){break e}}o[d>>2]=(v|0)==(C|0)?0:q;b=x-m|0;b=tL(H,I,b,b>>31);c=N;f=b;b=z-j|0;n=tL(J,F,b,b>>31);b=f+n|0;f=N+c|0;f=b>>>0<n>>>0?f+1|0:f;g=b;b=w-k|0;c=tL(D,K,b,b>>31);b=g+c|0;f=N+f|0;n=b;c=b>>>0<c>>>0?f+1|0:f;r=j;G=m;A=k;continue}b=o[e>>2];if(!b|!o[b+12>>2]){break d}v=o[o[b+8>>2]>>2];if(o[v+20>>2]<=o[a+100>>2]){break d}b=o[v+12>>2];m=o[b+92>>2];j=m-x|0;f=j;k=f;t=f>>31;f=tL(f,t,V,S);g=N;i=f;x=o[b+88>>2];z=x-z|0;f=z;q=f;s=f>>31;B=tL(f,s,O,P);f=i+B|0;i=N+g|0;i=f>>>0<B>>>0?i+1|0:i;g=f;f=o[b+96>>2];w=f-w|0;b=w;B=b;E=b>>31;b=tL(Q,R,b,E);if((g|0)!=(0-b|0)|(0-(N+(0<b>>>0)|0)|0)!=(i|0)){break d}b=m-G|0;b=tL(H,I,b,b>>31);m=N;g=b;b=x-r|0;x=tL(J,F,b,b>>31);b=g+x|0;g=N+m|0;g=b>>>0<x>>>0?g+1|0:g;i=b;b=f-A|0;m=tL(D,K,b,b>>31);b=i+m|0;f=N+g|0;f=b>>>0<m>>>0?f+1|0:f;m=b;b=f;if((f|0)<0?1:(f|0)<=0?m>>>0>=1?0:1:0){break d}j=(u(j,L)+u(z,U)|0)+u(w,T)|0;f=tL(k,t,H,I);t=N;g=tL(q,s,J,F);k=g+f|0;f=N+t|0;f=k>>>0<g>>>0?f+1|0:f;t=tL(D,K,B,E);k=t+k|0;f=N+f|0;f=k>>>0<t>>>0?f+1|0:f;t=f;j:{if(!(f|k)){if((j|0)<0){break j}break d}if((t|0)>-1?1:(t|0)>=-1?k>>>0<=4294967295?0:1:0){break d}f=j;w=f>>31;g=h;k:{if((f|0)>=1){o[h+24>>2]=f;o[h+28>>2]=w;o[h+40>>2]=1;f=-1;break k}if((j|0)<=-1){o[h+40>>2]=-1;o[h+24>>2]=0-f;o[h+28>>2]=0-((0<f>>>0)+w|0);f=1;break k}o[h+24>>2]=0;o[h+28>>2]=0;o[h+40>>2]=0;f=0}o[g+40>>2]=f;o[h+32>>2]=0-k;o[h+36>>2]=0-((0<k>>>0)+t|0);l:{if((p|0)>=1){o[h>>2]=l;o[h+4>>2]=y;o[h+16>>2]=1;k=-1;break l}if((p|0)<=-1){o[h+16>>2]=-1;o[h>>2]=0-l;o[h+4>>2]=0-((0<l>>>0)+y|0);k=1;break l}o[h>>2]=0;o[h+4>>2]=0;o[h+16>>2]=0;k=0}j=h;q=h;l=c;f=n;g=f;m:{if((c|0)>0?1:(c|0)>=0?f>>>0<=0?0:1:0){break m}l=0;g=0;if((c|0)>-1?1:(c|0)>=-1?n>>>0<=4294967295?0:1:0){break m}o[h+16>>2]=k;l=0-((0<n>>>0)+c|0)|0;g=0-n|0}o[q+8>>2]=g;o[j+12>>2]=l;if((Xb(h+24|0,h)|0)<=0){break d}}o[e>>2]=v;c=o[v+12>>2];w=o[c+96>>2];x=o[c+92>>2];z=o[c+88>>2];n=m;c=b;continue}}if((c|0)>-1?1:(c|0)>=-1?n>>>0<=4294967295?0:1:0){break d}while(1){y=(u(x-G|0,L)+u(z-r|0,U)|0)+u(w-A|0,T)|0;f=y;m=f;v=f>>31;n:{if(!b|!o[b+12>>2]){break n}q=o[o[b+4>>2]+8>>2];if(o[q+20>>2]<=o[a+100>>2]){break n}f=o[q+12>>2];l=o[f+92>>2];i=l-x|0;j=o[f+88>>2];p=j-z|0;k=o[f+96>>2];C=k-w|0;g=(u(i,L)+u(p,U)|0)+u(C,T)|0;f=tL(H,I,i,i>>31);s=N;p=tL(J,F,p,p>>31);i=p+f|0;f=N+s|0;f=i>>>0<p>>>0?f+1|0:f;p=tL(D,K,C,C>>31);i=p+i|0;f=N+f|0;f=i>>>0<p>>>0?f+1|0:f;p=f;o:{if(!(f|i)){if((g|0)>0){break o}break n}if((p|0)>-1?1:(p|0)>=-1?i>>>0<=4294967295?0:1:0){break n}f=g;s=f>>31;B=h;p:{if((f|0)>=1){o[h+24>>2]=f;o[h+28>>2]=s;o[h+40>>2]=1;f=-1;break p}if((g|0)<=-1){o[h+40>>2]=-1;o[h+24>>2]=0-f;o[h+28>>2]=0-((0<f>>>0)+s|0);f=1;break p}o[h+24>>2]=0;o[h+28>>2]=0;o[h+40>>2]=0;f=0}o[B+40>>2]=f;o[h+32>>2]=0-i;o[h+36>>2]=0-((0<i>>>0)+p|0);q:{if((y|0)>=1){o[h>>2]=m;o[h+4>>2]=v;o[h+16>>2]=1;p=-1;break q}if((y|0)<=-1){o[h+16>>2]=-1;f=m;o[h>>2]=0-f;o[h+4>>2]=0-((0<f>>>0)+v|0);p=1;break q}o[h>>2]=0;o[h+4>>2]=0;o[h+16>>2]=0;p=0}i=h;f=n;g=c;r:{if((c|0)>0?1:(c|0)>=0?f>>>0<=0?0:1:0){break r}f=0;g=0;if((c|0)>-1?1:(c|0)>=-1?n>>>0<=4294967295?0:1:0){break r}o[h+16>>2]=p;g=n;f=0-g|0;g=0-((0<g>>>0)+c|0)|0}o[i+8>>2]=f;o[i+12>>2]=g;if((Xb(h+24|0,h)|0)>=1){break n}}b=(b|0)==(t|0)?0:q;o[e>>2]=b;c=l-G|0;c=tL(H,I,c,c>>31);n=N;f=c;c=j-r|0;m=tL(J,F,c,c>>31);c=f+m|0;f=N+n|0;f=c>>>0<m>>>0?f+1|0:f;g=c;c=k-A|0;n=tL(D,K,c,c>>31);c=g+n|0;f=N+f|0;f=c>>>0<n>>>0?f+1|0:f;n=c;c=f;z=j;x=l;w=k;continue}b=o[d>>2];if(!b|!o[b+12>>2]){break d}p=o[o[b+8>>2]+4>>2];if(o[p+20>>2]<=o[a+100>>2]){break d}b=o[p+12>>2];l=o[b+92>>2];k=l-G|0;f=k;g=f;G=f>>31;f=tL(f,G,V,S);j=N;i=f;C=o[b+88>>2];r=C-r|0;f=r;q=f;s=f>>31;B=tL(f,s,O,P);f=i+B|0;i=N+j|0;i=f>>>0<B>>>0?i+1|0:i;j=o[b+96>>2];A=j-A|0;b=A;B=b;E=b>>31;b=tL(Q,R,b,E);if((0-b|0)!=(f|0)|(0-(N+(0<b>>>0)|0)|0)!=(i|0)){break d}b=x-l|0;b=tL(H,I,b,b>>31);f=N;i=b;b=z-C|0;l=tL(J,F,b,b>>31);b=i+l|0;f=N+f|0;f=b>>>0<l>>>0?f+1|0:f;i=b;b=w-j|0;l=tL(D,K,b,b>>31);b=i+l|0;f=N+f|0;j=b;f=b>>>0<l>>>0?f+1|0:f;l=f;if((f|0)>-1?1:(f|0)>=-1?b>>>0<=4294967295?0:1:0){break d}r=(u(k,L)+u(r,U)|0)+u(A,T)|0;b=tL(g,G,H,I);f=N;k=tL(q,s,J,F);b=k+b|0;g=N+f|0;g=b>>>0<k>>>0?g+1|0:g;k=tL(D,K,B,E);b=k+b|0;f=N+g|0;f=b>>>0<k>>>0?f+1|0:f;k=b;g=f;s:{if(!(f|b)){if((r|0)<=0){break d}break s}if((g|0)>-1?1:(g|0)>=-1?k>>>0<=4294967295?0:1:0){break d}b=r;A=b>>31;f=h;t:{if((b|0)>=1){o[h+24>>2]=b;o[h+28>>2]=A;o[h+40>>2]=1;b=-1;break t}if((r|0)<=-1){o[h+40>>2]=-1;o[h+24>>2]=0-b;o[h+28>>2]=0-((0<b>>>0)+A|0);b=1;break t}o[h+24>>2]=0;o[h+28>>2]=0;o[h+40>>2]=0;b=0}o[f+40>>2]=b;o[h+32>>2]=0-k;o[h+36>>2]=0-((0<k>>>0)+g|0);u:{if((y|0)>=1){o[h>>2]=m;o[h+4>>2]=v;o[h+16>>2]=1;r=-1;break u}if((y|0)<=-1){o[h+16>>2]=-1;o[h>>2]=0-m;o[h+4>>2]=0-((0<m>>>0)+v|0);r=1;break u}o[h>>2]=0;o[h+4>>2]=0;o[h+16>>2]=0;r=0}m=h;k=h;b=n;f=c;g=b;v:{if((f|0)>0?1:(f|0)>=0?b>>>0<=0?0:1:0){break v}f=0;g=0;if((c|0)>-1?1:(c|0)>=-1?n>>>0<=4294967295?0:1:0){break v}o[h+16>>2]=r;f=0-((0<n>>>0)+c|0)|0;g=0-n|0}o[k+8>>2]=g;o[m+12>>2]=f;if((Xb(h+24|0,h)|0)>=0){break d}}o[d>>2]=p;c=o[p+12>>2];A=o[c+96>>2];G=o[c+92>>2];b=o[e>>2];r=o[c+88>>2];n=j;c=l;continue}}M=h+48|0}function EB(a,b,c,d,e,f,g,h,i){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;g=g|0;h=h|0;i=i|0;var j=0,k=0,n=0,q=0,r=0,t=v(0),x=v(0),y=0,z=v(0),A=v(0),B=v(0),C=v(0),D=v(0),E=v(0),F=0,G=v(0),H=v(0),I=0,J=v(0),K=v(0),L=v(0),N=v(0),O=v(0),P=0,Q=v(0),R=0,S=v(0),T=v(0),U=0,V=0,W=0,X=v(0),Y=v(0),Z=v(0),_=v(0),aa=v(0),ba=v(0),ca=v(0),da=v(0),ea=v(0),fa=v(0),ha=v(0),ka=v(0),la=v(0),ma=v(0),na=v(0),oa=v(0),pa=v(0),qa=v(0),ra=v(0),sa=v(0);q=M-256|0;M=q;o[a+188>>2]=-1;ia(19832);i=0;o[a+184>>2]=0;if((c|0)>0){while(1){o[o[(i<<2)+b>>2]+212>>2]=-1;i=i+1|0;if((i|0)!=(c|0)){continue}break}}F=o[a+12>>2];if((F|0)<=(c|0)){F=c+1|0;i=0;a:{if(!F){break a}o[7717]=o[7717]+1;i=l[o[6606]](u(F,244),16)|0}y=o[a+8>>2];if((y|0)>=1){while(1){j=u(k,244);n=j+i|0;j=j+o[a+16>>2]|0;I=o[j+4>>2];o[n>>2]=o[j>>2];o[n+4>>2]=I;r=o[j+12>>2];o[n+8>>2]=o[j+8>>2];o[n+12>>2]=r;r=o[j+28>>2];o[n+24>>2]=o[j+24>>2];o[n+28>>2]=r;r=o[j+20>>2];o[n+16>>2]=o[j+16>>2];o[n+20>>2]=r;r=o[j+44>>2];o[n+40>>2]=o[j+40>>2];o[n+44>>2]=r;r=o[j+36>>2];o[n+32>>2]=o[j+32>>2];o[n+36>>2]=r;r=o[j+52>>2];o[n+48>>2]=o[j+48>>2];o[n+52>>2]=r;r=o[j+60>>2];o[n+56>>2]=o[j+56>>2];o[n+60>>2]=r;ja(n- -64|0,j- -64|0,180);k=k+1|0;if((y|0)!=(k|0)){continue}break}}j=o[a+16>>2];if(j){if(p[a+20|0]){if(j){o[7718]=o[7718]+1;l[o[6607]](j)}}o[a+16>>2]=0}o[a+16>>2]=i;o[a+12>>2]=F;m[a+20|0]=1}$(q+8|0,0,244);i=o[a+8>>2];if((i|0)<=-1){if((F|0)<=-1){j=o[a+16>>2];if(j){if(p[a+20|0]){if(j){o[7718]=o[7718]+1;l[o[6607]](j)}}o[a+16>>2]=0}o[a+12>>2]=0;o[a+16>>2]=0;m[a+20|0]=1}n=q+72|0;while(1){k=o[q+12>>2];j=o[a+16>>2]+u(i,244)|0;o[j>>2]=o[q+8>>2];o[j+4>>2]=k;k=o[q+20>>2];o[j+8>>2]=o[q+16>>2];o[j+12>>2]=k;k=o[q+36>>2];o[j+24>>2]=o[q+32>>2];o[j+28>>2]=k;k=o[q+28>>2];o[j+16>>2]=o[q+24>>2];o[j+20>>2]=k;k=o[q+52>>2];o[j+40>>2]=o[q+48>>2];o[j+44>>2]=k;k=o[q+44>>2];o[j+32>>2]=o[q+40>>2];o[j+36>>2]=k;k=o[q+60>>2];o[j+48>>2]=o[q+56>>2];o[j+52>>2]=k;k=o[q+68>>2];o[j+56>>2]=o[q+64>>2];o[j+60>>2]=k;ja(j- -64|0,n,180);j=i+1|0;k=j>>>0>=i>>>0;i=j;if(k){continue}break}}o[a+8>>2]=0;if((c|0)>=1){i=0;while(1){j=(i<<2)+b|0;n=$a(a,o[j>>2],s[h+12>>2]);j=o[j>>2];if(!(!j|!(o[j+236>>2]&2)|(!(p[j+504|0]&2)|s[j+344>>2]==v(0)))){k=o[a+16>>2];eE(q+8|0,j,s[h+76>>2]);z=s[j+304>>2];A=s[j+272>>2];J=s[j+288>>2];G=s[j+300>>2];E=s[j+268>>2];H=s[j+284>>2];n=k+u(n,244)|0;t=s[q+8>>2];B=s[q+12>>2];C=s[q+16>>2];x=s[h+12>>2];s[n+224>>2]=s[n+224>>2]-v(v(v(v(t*s[j+264>>2])+v(B*s[j+280>>2]))+v(C*s[j+296>>2]))*x);s[n+228>>2]=s[n+228>>2]-v(x*v(v(v(t*E)+v(B*H))+v(C*G)));s[n+232>>2]=s[n+232>>2]-v(x*v(v(v(t*A)+v(B*J))+v(C*z)))}i=i+1|0;if((i|0)!=(c|0)){continue}break}}i=0;if((g|0)>0){while(1){b=o[(i<<2)+f>>2];l[o[o[b>>2]+8>>2]](b);o[b+36>>2]=0;i=i+1|0;if((i|0)!=(g|0)){continue}break}}c=o[a+168>>2];if(!((c|0)>=(g|0)|o[a+172>>2]>=(g|0))){b:{if(!g){b=0;break b}o[7717]=o[7717]+1;b=l[o[6606]](g<<3,16)|0;c=o[a+168>>2]}if((c|0)>=1){i=0;while(1){j=i<<3;n=j+b|0;j=j+o[a+176>>2]|0;k=o[j+4>>2];o[n>>2]=o[j>>2];o[n+4>>2]=k;i=i+1|0;if((i|0)!=(c|0)){continue}break}}c=o[a+176>>2];if(c){if(p[a+180|0]){if(c){o[7718]=o[7718]+1;l[o[6607]](c)}}o[a+176>>2]=0}o[a+176>>2]=b;o[a+172>>2]=g;m[a+180|0]=1}o[a+168>>2]=g;b=0;if((g|0)>=1){i=0;while(1){n=o[a+176>>2];k=(i<<2)+f|0;c=o[k>>2];j=o[c+44>>2];if(j){o[j>>2]=0;o[j+4>>2]=0;o[j+56>>2]=0;o[j+60>>2]=0;o[j+48>>2]=0;o[j+52>>2]=0;o[j+40>>2]=0;o[j+44>>2]=0;o[j+32>>2]=0;o[j+36>>2]=0;o[j+24>>2]=0;o[j+28>>2]=0;o[j+16>>2]=0;o[j+20>>2]=0;o[j+8>>2]=0;o[j+12>>2]=0;c=o[k>>2]}j=n+(i<<3)|0;c:{if(p[c+20|0]){l[o[o[c>>2]+16>>2]](c,j);c=o[j>>2];break c}o[j>>2]=0;o[j+4>>2]=0;c=0}b=c+b|0;i=i+1|0;if((i|0)!=(g|0)){continue}break}}c=o[a+48>>2];if(!((c|0)>=(b|0)|o[a+52>>2]>=(b|0))){d:{if(!b){k=0;break d}o[7717]=o[7717]+1;k=l[o[6606]](u(b,152),16)|0;c=o[a+48>>2]}if((c|0)>=1){i=0;while(1){j=u(i,152);ja(j+k|0,j+o[a+56>>2]|0,152);i=i+1|0;if((i|0)!=(c|0)){continue}break}}c=o[a+56>>2];if(c){if(p[a+60|0]){if(c){o[7718]=o[7718]+1;l[o[6607]](c)}}o[a+56>>2]=0}o[a+56>>2]=k;o[a+52>>2]=b;m[a+60|0]=1}o[a+48>>2]=b;if((g|0)>=1){i=o[a+176>>2];F=0;while(1){V=R<<3;P=V+i|0;if(o[P>>2]){U=(R<<2)+f|0;I=o[U>>2];i=o[I+32>>2];b=o[a+56>>2];j=o[I+28>>2];k=$a(a,j,s[h+12>>2]);r=$a(a,i,s[h+12>>2]);W=o[a+16>>2];c=o[I+24>>2];y=(c|0)>0?c:o[h+20>>2];if((y|0)>o[a+184>>2]){o[a+184>>2]=y}n=b+u(F,152)|0;b=0;if(o[P>>2]>=1){while(1){c=$(n+u(b,152)|0,0,152);o[c+120>>2]=-8388609;o[c+124>>2]=2139095039;o[c+148>>2]=r;o[c+144>>2]=k;o[c+96>>2]=0;o[c+100>>2]=0;o[c+136>>2]=y;b=b+1|0;if((b|0)<o[P>>2]){continue}break}}y=W+u(k,244)|0;b=y;o[b+64>>2]=0;o[b+68>>2]=0;o[b+144>>2]=0;o[b+148>>2]=0;o[b+88>>2]=0;o[b+92>>2]=0;o[b+80>>2]=0;o[b+84>>2]=0;o[b+72>>2]=0;o[b+76>>2]=0;o[b+152>>2]=0;o[b+156>>2]=0;o[b+160>>2]=0;o[b+164>>2]=0;o[b+168>>2]=0;o[b+172>>2]=0;r=W+u(r,244)|0;b=r;o[b+88>>2]=0;o[b+92>>2]=0;o[b+80>>2]=0;o[b+84>>2]=0;o[b+72>>2]=0;o[b+76>>2]=0;o[b+64>>2]=0;o[b+68>>2]=0;o[b+144>>2]=0;o[b+148>>2]=0;o[b+152>>2]=0;o[b+156>>2]=0;o[b+160>>2]=0;o[b+164>>2]=0;o[b+168>>2]=0;o[b+172>>2]=0;s[q+8>>2]=v(1)/s[h+12>>2];b=o[h+32>>2];o[q+36>>2]=n+112;o[q+32>>2]=38;o[q+28>>2]=n+32;o[q+24>>2]=n+48;o[q+20>>2]=n;o[q+16>>2]=n+16;o[q+12>>2]=b;o[n+116>>2]=o[h+40>>2];b=o[h+4>>2];o[q+48>>2]=n+124;o[q+44>>2]=n+120;o[q+40>>2]=n+116;o[q+60>>2]=b;o[q+56>>2]=o[h+20>>2];b=o[U>>2];l[o[o[b>>2]+20>>2]](b,q+8|0);if(o[P>>2]>=1){c=0;while(1){b=n+u(c,152)|0;t=s[o[U>>2]+16>>2];if(!!(s[b+124>>2]>=t)){s[b+124>>2]=t}t=v(-t);if(!!(s[b+120>>2]<=t)){s[b+120>>2]=t}o[b+132>>2]=I;k=o[I+28>>2];x=s[k+268>>2];z=s[k+272>>2];A=s[k+548>>2];J=s[k+288>>2];G=s[k+280>>2];E=s[k+284>>2];t=s[k+552>>2];C=s[k+304>>2];B=s[k+296>>2];H=s[k+300>>2];L=s[k+544>>2];D=s[k+264>>2];o[b+76>>2]=0;K=t;t=s[b>>2];N=v(B*t);B=s[b+4>>2];O=C;C=s[b+8>>2];s[b+72>>2]=K*v(v(N+v(H*B))+v(O*C));s[b+68>>2]=A*v(v(v(t*G)+v(B*E))+v(C*J));s[b+64>>2]=L*v(v(v(D*t)+v(x*B))+v(z*C));k=o[I+32>>2];J=s[k+268>>2];G=s[k+272>>2];E=s[k+548>>2];H=s[k+288>>2];L=s[k+280>>2];D=s[k+284>>2];x=s[k+552>>2];A=s[k+304>>2];z=s[k+296>>2];N=s[k+300>>2];Q=s[k+544>>2];S=s[k+264>>2];o[b+92>>2]=0;K=x;x=s[b+32>>2];T=v(z*x);z=s[b+36>>2];O=A;A=s[b+40>>2];s[b+88>>2]=K*v(v(T+v(N*z))+v(O*A));s[b+84>>2]=E*v(v(v(x*L)+v(z*D))+v(A*H));s[b+80>>2]=Q*v(v(v(S*x)+v(J*z))+v(G*A));J=v(0);G=s[b+16>>2];E=s[j+344>>2];H=s[b+20>>2];L=s[b+24>>2];K=v(v(v(v(G*v(G*E))+v(H*v(E*H)))+v(L*v(E*L)))+v(v(v(t*v(v(v(t*s[j+264>>2])+v(B*s[j+268>>2]))+v(C*s[j+272>>2])))+v(B*v(v(v(t*s[j+280>>2])+v(B*s[j+284>>2]))+v(C*s[j+288>>2]))))+v(C*v(v(v(t*s[j+296>>2])+v(B*s[j+300>>2]))+v(C*s[j+304>>2])))));E=s[b+48>>2];D=s[i+344>>2];N=s[b+52>>2];Q=s[b+56>>2];D=v(v(K+v(v(v(E*v(E*D))+v(N*v(D*N)))+v(Q*v(D*Q))))+v(v(v(x*v(v(v(x*s[i+264>>2])+v(z*s[i+268>>2]))+v(A*s[i+272>>2])))+v(z*v(v(v(x*s[i+280>>2])+v(z*s[i+284>>2]))+v(A*s[i+288>>2]))))+v(A*v(v(v(x*s[i+296>>2])+v(z*s[i+300>>2]))+v(A*s[i+304>>2])))));D=v(w(D))>v(1.1920928955078125e-7)?v(v(1)/D):v(0);s[b+108>>2]=D;S=v(0);K=v(0);O=v(0);T=v(0);X=v(0);Y=v(0);if(o[y+240>>2]){Y=s[y+232>>2];X=s[y+228>>2];T=s[y+224>>2];K=s[y+212>>2];O=s[y+208>>2];S=s[y+216>>2]}Z=v(0);_=v(0);aa=v(0);ba=v(0);ca=v(0);if(o[r+240>>2]){ca=s[r+232>>2];ba=s[r+228>>2];aa=s[r+224>>2];Z=s[r+212>>2];_=s[r+208>>2];J=s[r+216>>2]}da=s[j+320>>2];ea=s[j+312>>2];fa=s[j+316>>2];ha=s[j+336>>2];ka=s[j+328>>2];la=s[j+332>>2];ma=s[i+320>>2];na=s[i+312>>2];oa=s[i+316>>2];pa=s[i+336>>2];qa=s[i+328>>2];ra=s[i+332>>2];sa=s[q+60>>2];o[b+100>>2]=0;s[b+112>>2]=v(D*s[b+112>>2])+v(D*v(v(0)-v(sa*v(v(v(v(v(G*v(O+ea))+v(H*v(K+fa)))+v(L*v(S+da)))+v(v(v(t*v(T+ka))+v(B*v(X+la)))+v(C*v(Y+ha))))+v(v(v(v(E*v(_+na))+v(N*v(Z+oa)))+v(Q*v(J+ma)))+v(v(v(x*v(aa+qa))+v(z*v(ba+ra)))+v(A*v(ca+pa))))))));c=c+1|0;if((c|0)<o[P>>2]){continue}break}}i=o[a+176>>2]}F=o[i+V>>2]+F|0;R=R+1|0;if((R|0)!=(g|0)){continue}break}}l[o[o[a>>2]+28>>2]](a,d,e,h);e=o[a+68>>2];d=o[a+28>>2];c=o[a+128>>2];f=o[a+48>>2];if(!((c|0)>=(f|0)|o[a+132>>2]>=(f|0))){i=0;b=0;if(f){o[7717]=o[7717]+1;b=l[o[6606]](f<<2,16)|0;c=o[a+128>>2]}g=o[a+136>>2];e:{f:{if((c|0)>=1){while(1){j=i<<2;o[j+b>>2]=o[g+j>>2];i=i+1|0;if((c|0)!=(i|0)){continue}break f}}if(!g){break e}}if(p[a+140|0]){if(g){o[7718]=o[7718]+1;l[o[6607]](g)}}o[a+136>>2]=0}o[a+136>>2]=b;o[a+132>>2]=f;m[a+140|0]=1}o[a+128>>2]=f;g:{if(p[h+64|0]&16){c=o[a+108>>2];h=d<<1;if(!((c|0)>=(h|0)|o[a+112>>2]>=(h|0))){i=0;b=0;if(d){o[7717]=o[7717]+1;b=l[o[6606]](d<<3,16)|0;c=o[a+108>>2]}g=o[a+116>>2];h:{i:{if((c|0)>=1){while(1){j=i<<2;o[j+b>>2]=o[g+j>>2];i=i+1|0;if((c|0)!=(i|0)){continue}break i}}if(!g){break h}}if(p[a+120|0]){if(g){o[7718]=o[7718]+1;l[o[6607]](g)}}o[a+116>>2]=0}o[a+116>>2]=b;o[a+112>>2]=h;m[a+120|0]=1}o[a+108>>2]=h;break g}c=o[a+108>>2];if(!((c|0)>=(d|0)|o[a+112>>2]>=(d|0))){i=0;b=0;if(d){o[7717]=o[7717]+1;b=l[o[6606]](d<<2,16)|0;c=o[a+108>>2]}g=o[a+116>>2];j:{k:{if((c|0)>=1){while(1){h=i<<2;o[h+b>>2]=o[g+h>>2];i=i+1|0;if((c|0)!=(i|0)){continue}break k}}if(!g){break j}}if(p[a+120|0]){if(g){o[7718]=o[7718]+1;l[o[6607]](g)}}o[a+116>>2]=0}o[a+116>>2]=b;o[a+112>>2]=d;m[a+120|0]=1}o[a+108>>2]=d}c=o[a+148>>2];if(!((c|0)>=(e|0)|o[a+152>>2]>=(e|0))){i=0;b=0;if(e){o[7717]=o[7717]+1;b=l[o[6606]](e<<2,16)|0;c=o[a+148>>2]}g=o[a+156>>2];l:{m:{if((c|0)>=1){while(1){h=i<<2;o[h+b>>2]=o[g+h>>2];i=i+1|0;if((c|0)!=(i|0)){continue}break m}}if(!g){break l}}if(p[a+160|0]){if(g){o[7718]=o[7718]+1;l[o[6607]](g)}}o[a+156>>2]=0}o[a+156>>2]=b;o[a+152>>2]=e;m[a+160|0]=1}o[a+148>>2]=e;if((f|0)>=1){b=o[a+136>>2];i=0;while(1){o[b+(i<<2)>>2]=i;i=i+1|0;if((f|0)!=(i|0)){continue}break}}if((d|0)>=1){b=o[a+116>>2];i=0;while(1){o[b+(i<<2)>>2]=i;i=i+1|0;if((d|0)!=(i|0)){continue}break}}if((e|0)>=1){a=o[a+156>>2];i=0;while(1){o[a+(i<<2)>>2]=i;i=i+1|0;if((e|0)!=(i|0)){continue}break}}ga();M=q+256|0;return v(v(0))}function pC(a,b,c,d,f,j,k,l){var n=v(0),q=0,r=0,t=v(0)
gitextract_3aeii0b2/ ├── .gitignore ├── .vscode/ │ └── launch.json ├── README.md ├── index.html ├── package.json ├── server.js ├── src/ │ ├── WebGL.js │ ├── app.js │ ├── builds/ │ │ ├── ammo.js │ │ ├── ammo.wasm.js │ │ └── ammo.wasm.wasm │ ├── jsm/ │ │ ├── Roboto_Regular.json │ │ ├── fragment.glsl │ │ └── vertex.glsl │ └── resources/ │ ├── eventHandlers.js │ ├── preload.js │ ├── surfaces.js │ ├── textures.js │ ├── utils.js │ └── world.js ├── style.css └── webpack.config.js
SYMBOL INDEX (339 symbols across 9 files)
FILE: src/app.js
function createPhysicsWorld (line 55) | function createPhysicsWorld() {
function createGridPlane (line 70) | function createGridPlane() {
function createBall (line 123) | function createBall() {
function createBeachBall (line 184) | function createBeachBall() {
function createBox (line 230) | function createBox(x, y, z, scaleX, scaleY, scaleZ, boxTexture, URLLink,...
function floydWords (line 276) | function floydWords(x, y, z) {
function loadFloydText (line 297) | function loadFloydText() {
function loadEngineerText (line 341) | function loadEngineerText() {
function createBillboard (line 384) | function createBillboard(x, y, z, textureImage = billboardTextures.grass...
function createBillboardRotated (line 448) | function createBillboardRotated(x, y, z, textureImage = billboardTexture...
function createWallX (line 511) | function createWallX(x, y, z) {
function createWallZ (line 535) | function createWallZ(x, y, z) {
function wallOfBricks (line 559) | function wallOfBricks() {
function createBrick (line 618) | function createBrick(sx, sy, sz, mass, pos, quat, material) {
function createBrickBody (line 629) | function createBrickBody(threeObject, physicsShape, mass, pos, quat) {
function createTriangle (line 659) | function createTriangle(x, z) {
function addRigidPhysics (line 682) | function addRigidPhysics(item, itemScale) {
function moveBall (line 704) | function moveBall() {
function renderFrame (line 729) | function renderFrame() {
function startButtonEventListener (line 764) | function startButtonEventListener() {
function updatePhysics (line 781) | function updatePhysics(deltaTime) {
function start (line 846) | function start() {
FILE: src/builds/ammo.js
function a (line 13) | function a(){}
function c (line 13) | function c(v,J){return function(){v.apply(J,arguments)}}
function d (line 13) | function d(v){if(!(this instanceof d))throw new TypeError("Promises must...
function e (line 13) | function e(v,J){for(;3===v.m;)v=v.o;0===v.m?v.s.push(J):(v.ia=!0,d.ja(fu...
function g (line 14) | function g(v,J){try{if(J===v)throw new TypeError("A promise cannot be re...
function n (line 14) | function n(v,J){v.m=2;v.o=J;D(v)}
function D (line 14) | function D(v){2===v.m&&0===v.s.length&&d.ja(function(){v.ia||d.ka(v.o)})...
function Y (line 14) | function Y(v,J,ba){this.Vc="function"===typeof v?
function ma (line 15) | function ma(v,J){var ba=!1;try{v(function(za){ba||(ba=!0,g(J,za))},funct...
function za (line 15) | function za(Cc,Ub){try{if(Ub&&("object"===typeof Ub||"function"===typeof...
function va (line 22) | function va(){return{buffer:new ArrayBuffer(wa/65536*65536),grow:functio...
function ya (line 22) | function ya(){return{exports:(
function Da (line 68) | function Da(){return{then:function(a){a({instance:new ya})}}}
function assert (line 69) | function assert(a,c){a||qa("Assertion failed: "+c)}
function Oa (line 71) | function Oa(a){for(;0<a.length;){var c=a.shift();if("function"==typeof c...
function Ua (line 71) | function Ua(){var a=b.preRun.shift();Pa.unshift(a)}
function qa (line 72) | function qa(a){if(b.onAbort)b.onAbort(a);a+="";sa(a);ta(a);Fa=!0;throw n...
function Za (line 73) | function Za(a,c){return String.prototype.startsWith?a.startsWith(c):0===...
function cb (line 73) | function cb(){try{if(ua)return new Uint8Array(ua);var a=pa(ab);if(a)retu...
function db (line 74) | function db(){return ua||!ea&&!fa||"function"!==typeof fetch||Za(ab,"fil...
function hb (line 78) | function hb(a,c){gb.length=0;var d;for(c>>=2;d=Ja[a++];)gb.push(105>d?Ma...
function ra (line 78) | function ra(a){for(var c=[],d=0;d<a.length;d++){var e=a[d];255<e&&(ib&&a...
function pa (line 81) | function pa(a){if(Za(a,$a)){a=a.slice($a.length);if("boolean"===typeof h...
function a (line 83) | function a(g){b.asm=g.exports;Wa--;b.monitorRunDependencies&&b.monitorRu...
function c (line 83) | function c(g){a(g.instance)}
function d (line 83) | function d(g){return db().then(function(){return Da()}).then(g,function(...
function SA (line 635) | function SA(){function a(){if(!QA&&(QA=!0,b.calledRun=!0,!Fa)){Ta=!0;Oa(...
function f (line 636) | function f(){}
function h (line 636) | function h(a){return(a||f).c}
function k (line 636) | function k(a,c){var d=h(c),e=d[a];if(e)return e;e=Object.create((c||f).p...
function YA (line 637) | function YA(){if(XA){for(var a=0;a<WA.length;a++)b._free(WA[a]);WA.lengt...
function ZA (line 638) | function ZA(a,c){assert(TA);a=a.length*c.BYTES_PER_ELEMENT;a=a+7&-8;VA+a...
function $A (line 638) | function $A(a,c,d){d>>>=0;switch(c.BYTES_PER_ELEMENT){case 2:d>>>=1;brea...
function aB (line 639) | function aB(a){if("string"===typeof a){for(var c=0,d=0;d<a.length;++d){v...
function bB (line 640) | function bB(a){if("object"===typeof a){var c=ZA(a,La);$A(a,La,c);return ...
function cB (line 640) | function cB(){throw"cannot construct a btCollisionWorld, no constructor ...
function m (line 644) | function m(){throw"cannot construct a btCollisionShape, no constructor i...
function q (line 646) | function q(){throw"cannot construct a btCollisionObject, no constructor ...
function jB (line 651) | function jB(){throw"cannot construct a btDynamicsWorld, no constructor i...
function kB (line 657) | function kB(){throw"cannot construct a btTypedConstraint, no constructor...
function lB (line 659) | function lB(){throw"cannot construct a btConcaveShape, no constructor in...
function mB (line 660) | function mB(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&...
function gB (line 662) | function gB(){throw"cannot construct a btIDebugDraw, no constructor in I...
function nB (line 665) | function nB(a){a&&"object"===typeof a&&(a=a.a);this.a=void 0===a?qd():rd...
function oB (line 665) | function oB(){throw"cannot construct a btTriangleMeshShape, no construct...
function u (line 666) | function u(){this.a=xd();h(u)[this.a]=this}
function pB (line 672) | function pB(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&...
function qB (line 673) | function qB(){throw"cannot construct a btActionInterface, no constructor...
function p (line 674) | function p(a,c,d){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c...
function rB (line 678) | function rB(){throw"cannot construct a btVehicleRaycaster, no constructo...
function sB (line 679) | function sB(){throw"cannot construct a btQuadWord, no constructor in IDL";}
function tB (line 680) | function tB(a){a&&"object"===typeof a&&(a=a.a);this.a=Me(a);h(tB)[this.a...
function w (line 682) | function w(a,c,d,e){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof...
function uB (line 690) | function uB(){throw"cannot construct a btConvexShape, no constructor in ...
function dB (line 692) | function dB(){throw"cannot construct a btDispatcher, no constructor in I...
function wB (line 693) | function wB(a,c,d,e,g){a&&"object"===typeof a&&(a=a.a);c&&"object"===typ...
function xB (line 696) | function xB(){throw"cannot construct a btStridingMeshInterface, no const...
function yB (line 697) | function yB(){throw"cannot construct a btMotionState, no constructor in ...
function x (line 698) | function x(){throw"cannot construct a ConvexResultCallback, no construct...
function zB (line 700) | function zB(){throw"cannot construct a ContactResultCallback, no constru...
function AB (line 701) | function AB(){throw"cannot construct a btSoftBodySolver, no constructor ...
function y (line 702) | function y(){throw"cannot construct a RayResultCallback, no constructor ...
function BB (line 705) | function BB(){throw"cannot construct a btMatrix3x3, no constructor in ID...
function CB (line 706) | function CB(){throw"cannot construct a btScalarArray, no constructor in ...
function z (line 707) | function z(){throw"cannot construct a Material, no constructor in IDL";}
function l (line 710) | function l(){throw"cannot construct a btDispatcherInfo, no constructor i...
function A (line 717) | function A(){throw"cannot construct a btWheelInfoConstructionInfo, no co...
function DB (line 725) | function DB(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&...
function fB (line 726) | function fB(){throw"cannot construct a btBroadphaseInterface, no constru...
function B (line 727) | function B(a,c,d,e){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof...
function EB (line 736) | function EB(){throw"cannot construct a btCollisionConfiguration, no cons...
function vB (line 736) | function vB(){this.a=xi();h(vB)[this.a]=this}
function FB (line 737) | function FB(a){a&&"object"===typeof a&&(a=a.a);this.a=void 0===a?Di():Ei...
function E (line 740) | function E(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&&...
function F (line 745) | function F(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&&...
function IB (line 752) | function IB(){throw"cannot construct a tMaterialArray, no constructor in...
function JB (line 753) | function JB(a){a&&"object"===typeof a&&(a=a.a);this.a=Ij(a);h(JB)[this.a...
function KB (line 753) | function KB(){this.a=Lj();h(KB)[this.a]=this}
function G (line 754) | function G(){this.a=Qj();h(G)[this.a]=this}
function LB (line 756) | function LB(){throw"cannot construct a LocalShapeInfo, no constructor in...
function H (line 758) | function H(a){a&&"object"===typeof a&&(a=a.a);this.a=dk(a);h(H)[this.a]=...
function MB (line 770) | function MB(){throw"cannot construct a btIndexedMeshArray, no constructo...
function OB (line 771) | function OB(){this.a=rl();h(OB)[this.a]=this}
function PB (line 772) | function PB(a,c,d,e,g,n,D,Y,ma){a&&"object"===typeof a&&(a=a.a);c&&"obje...
function QB (line 774) | function QB(){this.a=Al();h(QB)[this.a]=this}
function RB (line 774) | function RB(a){a&&"object"===typeof a&&(a=a.a);this.a=Cl(a);h(RB)[this.a...
function SB (line 775) | function SB(a,c,d,e,g){a&&"object"===typeof a&&(a=a.a);c&&"object"===typ...
function hB (line 776) | function hB(){throw"cannot construct a VoidPtr, no constructor in IDL";}
function I (line 776) | function I(){this.a=Ml();h(I)[this.a]=this}
function TB (line 782) | function TB(a,c,d,e){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeo...
function UB (line 786) | function UB(a,c,d,e,g,n,D){a&&"object"===typeof a&&(a=a.a);c&&"object"==...
function VB (line 790) | function VB(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&...
function WB (line 791) | function WB(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&...
function XB (line 793) | function XB(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&...
function YB (line 795) | function YB(a,c){YA();"object"==typeof a&&(a=bB(a));c&&"object"===typeof...
function K (line 797) | function K(){this.a=wn();h(K)[this.a]=this}
function $B (line 801) | function $B(){throw"cannot construct a btCollisionObjectWrapper, no cons...
function aC (line 802) | function aC(a){a&&"object"===typeof a&&(a=a.a);this.a=Mn(a);h(aC)[this.a...
function bC (line 803) | function bC(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&...
function L (line 805) | function L(a){a&&"object"===typeof a&&(a=a.a);this.a=Zn(a);h(L)[this.a]=...
function N (line 821) | function N(a,c,d,e){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof...
function cC (line 824) | function cC(){this.a=qp();h(cC)[this.a]=this}
function O (line 825) | function O(){throw"cannot construct a Anchor, no constructor in IDL";}
function P (line 829) | function P(){throw"cannot construct a btVehicleRaycasterResult, no const...
function HB (line 832) | function HB(){throw"cannot construct a btVector3Array, no constructor in...
function dC (line 832) | function dC(){throw"cannot construct a btConstraintSolver, no constructo...
function Q (line 833) | function Q(a,c,d){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c...
function eC (line 840) | function eC(a){a&&"object"===typeof a&&(a=a.a);this.a=xq(a);h(eC)[this.a...
function fC (line 841) | function fC(a){a&&"object"===typeof a&&(a=a.a);this.a=Eq(a);h(fC)[this.a...
function ZB (line 843) | function ZB(){throw"cannot construct a btConvexPolyhedron, no constructo...
function hC (line 844) | function hC(){this.a=Qq();h(hC)[this.a]=this}
function iC (line 845) | function iC(){throw"cannot construct a tAnchorArray, no constructor in I...
function M (line 846) | function M(){throw"cannot construct a RaycastInfo, no constructor in IDL";}
function jC (line 852) | function jC(a,c,d){YA();a&&"object"===typeof a&&(a=a.a);"object"==typeof...
function R (line 853) | function R(a,c,d,e){YA();a&&"object"===typeof a&&(a=a.a);c&&"object"===t...
function mC (line 867) | function mC(){throw"cannot construct a btIntArray, no constructor in IDL";}
function S (line 868) | function S(){throw"cannot construct a Config, no constructor in IDL";}
function Node (line 882) | function Node(){throw"cannot construct a Node, no constructor in IDL";}
function nC (line 887) | function nC(){this.a=Wt();h(nC)[this.a]=this}
function oC (line 887) | function oC(){throw"cannot construct a btOverlappingPairCallback, no con...
function pC (line 888) | function pC(a,c,d,e){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeo...
function qC (line 892) | function qC(){throw"cannot construct a btSoftBodyArray, no constructor i...
function gC (line 893) | function gC(){throw"cannot construct a btFaceArray, no constructor in ID...
function sC (line 894) | function sC(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&...
function eB (line 895) | function eB(){throw"cannot construct a btOverlappingPairCache, no constr...
function NB (line 896) | function NB(){throw"cannot construct a btIndexedMesh, no constructor in ...
function U (line 897) | function U(a,c,d,e,g){a&&"object"===typeof a&&(a=a.a);c&&"object"===type...
function tC (line 907) | function tC(a,c,d,e){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeo...
function r (line 909) | function r(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&&...
function W (line 911) | function W(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&&...
function uC (line 917) | function uC(a){a&&"object"===typeof a&&(a=a.a);this.a=void 0===a?nw():ow...
function vC (line 917) | function vC(){this.a=qw();h(vC)[this.a]=this}
function xC (line 919) | function xC(a,c,d){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof ...
function GB (line 920) | function GB(){throw"cannot construct a btConstCollisionObjectArray, no c...
function yC (line 921) | function yC(a,c,d,e,g){a&&"object"===typeof a&&(a=a.a);c&&"object"===typ...
function T (line 924) | function T(){this.a=Ow();h(T)[this.a]=this}
function C (line 930) | function C(){throw"cannot construct a btManifoldPoint, no constructor in...
function zC (line 935) | function zC(a,c,d,e){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeo...
function AC (line 938) | function AC(){this.a=Zx();h(AC)[this.a]=this}
function iB (line 944) | function iB(){throw"cannot construct a btBroadphaseProxy, no constructor...
function kC (line 946) | function kC(){throw"cannot construct a tNodeArray, no constructor in IDL";}
function BC (line 947) | function BC(a){a&&"object"===typeof a&&(a=a.a);this.a=oy(a);h(BC)[this.a...
function rC (line 948) | function rC(){throw"cannot construct a btFace, no constructor in IDL";}
function CC (line 950) | function CC(){this.a=Ay();h(CC)[this.a]=this}
function DC (line 953) | function DC(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&...
function V (line 955) | function V(a,c,d,e){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof...
function EC (line 960) | function EC(a,c){a&&"object"===typeof a&&(a=a.a);c&&"object"===typeof c&...
function t (line 962) | function t(){throw"cannot construct a btContactSolverInfo, no constructo...
function FC (line 965) | function FC(a,c,d,e,g){a&&"object"===typeof a&&(a=a.a);c&&"object"===typ...
function GC (line 969) | function GC(a){a&&"object"===typeof a&&(a=a.a);this.a=dA(a);h(GC)[this.a...
function X (line 971) | function X(){throw"cannot construct a Face, no constructor in IDL";}
function lC (line 973) | function lC(){throw"cannot construct a tFaceArray, no constructor in IDL";}
function Z (line 974) | function Z(a,c,d,e,g){a&&"object"===typeof a&&(a=a.a);c&&"object"===type...
function a (line 978) | function a(){b.BT_CONSTRAINT_ERP=GA();b.BT_CONSTRAINT_STOP_ERP=HA();b.BT...
FILE: src/builds/ammo.wasm.js
function assert (line 16) | function assert(a,c){a||oa("Assertion failed: "+c)}
function Fa (line 17) | function Fa(a){for(;0<a.length;){var c=a.shift();if("function"==typeof c...
function La (line 18) | function La(){var a=b.preRun.shift();Ga.unshift(a)}
function oa (line 18) | function oa(a){if(b.onAbort)b.onAbort(a);a+="";pa(a);qa(a);va=!0;throw n...
function Pa (line 18) | function Pa(a){var c=Qa;return String.prototype.startsWith?c.startsWith(...
function Ra (line 18) | function Ra(){return Pa("data:application/octet-stream;base64,")}
function Ta (line 19) | function Ta(){try{if(ra)return new Uint8Array(ra);if(la)return la(Qa);th...
function Ua (line 19) | function Ua(){return ra||!ea&&!fa||"function"!==typeof fetch||Pa("file:/...
function Ya (line 23) | function Ya(a,c){Xa.length=0;var d;for(c>>=2;d=za[a++];)Xa.push(105>d?Ca...
function a (line 24) | function a(g){b.asm=g.exports;Ma--;b.monitorRunDependencies&&b.monitorRu...
function c (line 24) | function c(g){a(g.instance)}
function d (line 24) | function d(g){return Ua().then(function(n){return WebAssembly.instantiat...
function CA (line 456) | function CA(){function a(){if(!AA&&(AA=!0,b.calledRun=!0,!va)){Ka=!0;Fa(...
function f (line 457) | function f(){}
function h (line 457) | function h(a){return(a||f).jy}
function k (line 457) | function k(a,c){var d=h(c),e=d[a];if(e)return e;e=Object.create((c||f).p...
function IA (line 458) | function IA(){if(HA){for(var a=0;a<GA.length;a++)b._free(GA[a]);GA.lengt...
function JA (line 459) | function JA(a,c){assert(DA);a=a.length*c.BYTES_PER_ELEMENT;a=a+7&-8;FA+a...
function KA (line 459) | function KA(a,c,d){d>>>=0;switch(c.BYTES_PER_ELEMENT){case 2:d>>>=1;brea...
function LA (line 460) | function LA(a){if("string"===typeof a){for(var c=0,d=0;d<a.length;++d){v...
function MA (line 461) | function MA(a){if("object"===typeof a){var c=JA(a,Ba);KA(a,Ba,c);return ...
function NA (line 461) | function NA(){throw"cannot construct a btCollisionWorld, no constructor ...
function m (line 466) | function m(){throw"cannot construct a btCollisionShape, no constructor i...
function q (line 468) | function q(){throw"cannot construct a btCollisionObject, no constructor ...
function u (line 473) | function u(){throw"cannot construct a btDynamicsWorld, no constructor in...
function TA (line 479) | function TA(){throw"cannot construct a btTypedConstraint, no constructor...
function UA (line 481) | function UA(){throw"cannot construct a btConcaveShape, no constructor in...
function VA (line 482) | function VA(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c...
function RA (line 484) | function RA(){throw"cannot construct a btIDebugDraw, no constructor in I...
function WA (line 487) | function WA(a){a&&"object"===typeof a&&(a=a.hy);this.hy=void 0===a?ad():...
function XA (line 487) | function XA(){throw"cannot construct a btTriangleMeshShape, no construct...
function w (line 488) | function w(){this.hy=hd();h(w)[this.hy]=this}
function YA (line 494) | function YA(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c...
function ZA (line 495) | function ZA(){throw"cannot construct a btActionInterface, no constructor...
function p (line 497) | function p(a,c,d){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof ...
function $A (line 500) | function $A(){throw"cannot construct a btVehicleRaycaster, no constructo...
function aB (line 501) | function aB(){throw"cannot construct a btQuadWord, no constructor in IDL";}
function bB (line 503) | function bB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=we(a);h(bB)[this...
function x (line 505) | function x(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeo...
function cB (line 513) | function cB(){throw"cannot construct a btConvexShape, no constructor in ...
function OA (line 515) | function OA(){throw"cannot construct a btDispatcher, no constructor in I...
function eB (line 516) | function eB(a,c,d,e,g){a&&"object"===typeof a&&(a=a.hy);c&&"object"===ty...
function fB (line 519) | function fB(){throw"cannot construct a btStridingMeshInterface, no const...
function gB (line 520) | function gB(){throw"cannot construct a btMotionState, no constructor in ...
function y (line 521) | function y(){throw"cannot construct a ConvexResultCallback, no construct...
function hB (line 524) | function hB(){throw"cannot construct a ContactResultCallback, no constru...
function iB (line 525) | function iB(){throw"cannot construct a btSoftBodySolver, no constructor ...
function z (line 526) | function z(){throw"cannot construct a RayResultCallback, no constructor ...
function jB (line 529) | function jB(){throw"cannot construct a btMatrix3x3, no constructor in ID...
function kB (line 530) | function kB(){throw"cannot construct a btScalarArray, no constructor in ...
function A (line 531) | function A(){throw"cannot construct a Material, no constructor in IDL";}
function l (line 534) | function l(){throw"cannot construct a btDispatcherInfo, no constructor i...
function B (line 541) | function B(){throw"cannot construct a btWheelInfoConstructionInfo, no co...
function lB (line 549) | function lB(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c...
function QA (line 550) | function QA(){throw"cannot construct a btBroadphaseInterface, no constru...
function C (line 551) | function C(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeo...
function mB (line 560) | function mB(){throw"cannot construct a btCollisionConfiguration, no cons...
function dB (line 560) | function dB(){this.hy=hi();h(dB)[this.hy]=this}
function nB (line 561) | function nB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=void 0===a?ni():...
function E (line 564) | function E(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&...
function G (line 569) | function G(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&...
function qB (line 576) | function qB(){throw"cannot construct a tMaterialArray, no constructor in...
function rB (line 577) | function rB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=sj(a);h(rB)[this...
function sB (line 578) | function sB(){this.hy=vj();h(sB)[this.hy]=this}
function H (line 579) | function H(){this.hy=Aj();h(H)[this.hy]=this}
function tB (line 581) | function tB(){throw"cannot construct a LocalShapeInfo, no constructor in...
function I (line 583) | function I(a){a&&"object"===typeof a&&(a=a.hy);this.hy=Nj(a);h(I)[this.h...
function uB (line 595) | function uB(){throw"cannot construct a btIndexedMeshArray, no constructo...
function wB (line 596) | function wB(){this.hy=bl();h(wB)[this.hy]=this}
function xB (line 597) | function xB(a,c,d,e,g,n,F,aa,ta){a&&"object"===typeof a&&(a=a.hy);c&&"ob...
function yB (line 599) | function yB(){this.hy=kl();h(yB)[this.hy]=this}
function zB (line 599) | function zB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=ml(a);h(zB)[this...
function AB (line 601) | function AB(a,c,d,e,g){a&&"object"===typeof a&&(a=a.hy);c&&"object"===ty...
function SA (line 602) | function SA(){throw"cannot construct a VoidPtr, no constructor in IDL";}
function J (line 602) | function J(){this.hy=wl();h(J)[this.hy]=this}
function BB (line 608) | function BB(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===type...
function CB (line 613) | function CB(a,c,d,e,g,n,F){a&&"object"===typeof a&&(a=a.hy);c&&"object"=...
function DB (line 617) | function DB(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c...
function EB (line 618) | function EB(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c...
function FB (line 620) | function FB(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c...
function GB (line 622) | function GB(a,c){IA();"object"==typeof a&&(a=MA(a));c&&"object"===typeof...
function K (line 624) | function K(){this.hy=fn();h(K)[this.hy]=this}
function IB (line 629) | function IB(){throw"cannot construct a btCollisionObjectWrapper, no cons...
function JB (line 629) | function JB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=wn(a);h(JB)[this...
function KB (line 631) | function KB(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c...
function L (line 632) | function L(a){a&&"object"===typeof a&&(a=a.hy);this.hy=Jn(a);h(L)[this.h...
function N (line 649) | function N(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeo...
function LB (line 652) | function LB(){this.hy=ap();h(LB)[this.hy]=this}
function O (line 653) | function O(){throw"cannot construct a Anchor, no constructor in IDL";}
function P (line 657) | function P(){throw"cannot construct a btVehicleRaycasterResult, no const...
function pB (line 660) | function pB(){throw"cannot construct a btVector3Array, no constructor in...
function MB (line 661) | function MB(){throw"cannot construct a btConstraintSolver, no constructo...
function Q (line 661) | function Q(a,c,d){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof ...
function NB (line 668) | function NB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=hq(a);h(NB)[this...
function OB (line 669) | function OB(a){a&&"object"===typeof a&&(a=a.hy);this.hy=oq(a);h(OB)[this...
function HB (line 671) | function HB(){throw"cannot construct a btConvexPolyhedron, no constructo...
function QB (line 672) | function QB(){this.hy=Aq();h(QB)[this.hy]=this}
function RB (line 673) | function RB(){throw"cannot construct a tAnchorArray, no constructor in I...
function M (line 674) | function M(){throw"cannot construct a RaycastInfo, no constructor in IDL";}
function SB (line 680) | function SB(a,c,d){IA();a&&"object"===typeof a&&(a=a.hy);"object"==typeo...
function R (line 681) | function R(a,c,d,e){IA();a&&"object"===typeof a&&(a=a.hy);c&&"object"===...
function VB (line 696) | function VB(){throw"cannot construct a btIntArray, no constructor in IDL";}
function S (line 697) | function S(){throw"cannot construct a Config, no constructor in IDL";}
function Node (line 711) | function Node(){throw"cannot construct a Node, no constructor in IDL";}
function WB (line 716) | function WB(){this.hy=Gt();h(WB)[this.hy]=this}
function XB (line 716) | function XB(){throw"cannot construct a btOverlappingPairCallback, no con...
function T (line 717) | function T(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeo...
function YB (line 721) | function YB(){throw"cannot construct a btSoftBodyArray, no constructor i...
function PB (line 722) | function PB(){throw"cannot construct a btFaceArray, no constructor in ID...
function $B (line 723) | function $B(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c...
function PA (line 724) | function PA(){throw"cannot construct a btOverlappingPairCache, no constr...
function vB (line 725) | function vB(){throw"cannot construct a btIndexedMesh, no constructor in ...
function V (line 726) | function V(a,c,d,e,g){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typ...
function aC (line 737) | function aC(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===type...
function r (line 739) | function r(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&...
function X (line 741) | function X(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c&...
function bC (line 747) | function bC(a){a&&"object"===typeof a&&(a=a.hy);this.hy=void 0===a?Yv():...
function cC (line 747) | function cC(){this.hy=aw();h(cC)[this.hy]=this}
function dC (line 749) | function dC(a,c,d){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof...
function oB (line 750) | function oB(){throw"cannot construct a btConstCollisionObjectArray, no c...
function eC (line 751) | function eC(a,c,d,e,g){a&&"object"===typeof a&&(a=a.hy);c&&"object"===ty...
function U (line 754) | function U(){this.hy=yw();h(U)[this.hy]=this}
function D (line 760) | function D(){throw"cannot construct a btManifoldPoint, no constructor in...
function fC (line 765) | function fC(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===type...
function gC (line 768) | function gC(){this.hy=Jx();h(gC)[this.hy]=this}
function t (line 774) | function t(){throw"cannot construct a btBroadphaseProxy, no constructor ...
function TB (line 776) | function TB(){throw"cannot construct a tNodeArray, no constructor in IDL";}
function hC (line 777) | function hC(a){a&&"object"===typeof a&&(a=a.hy);this.hy=Zx(a);h(hC)[this...
function ZB (line 778) | function ZB(){throw"cannot construct a btFace, no constructor in IDL";}
function iC (line 780) | function iC(){this.hy=ky();h(iC)[this.hy]=this}
function jC (line 783) | function jC(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c...
function W (line 785) | function W(a,c,d,e){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeo...
function kC (line 791) | function kC(a,c){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typeof c...
function v (line 792) | function v(){throw"cannot construct a btContactSolverInfo, no constructo...
function lC (line 795) | function lC(a,c,d,e,g){a&&"object"===typeof a&&(a=a.hy);c&&"object"===ty...
function mC (line 800) | function mC(a){a&&"object"===typeof a&&(a=a.hy);this.hy=Oz(a);h(mC)[this...
function Y (line 801) | function Y(){throw"cannot construct a Face, no constructor in IDL";}
function UB (line 804) | function UB(){throw"cannot construct a tFaceArray, no constructor in IDL";}
function Z (line 805) | function Z(a,c,d,e,g){a&&"object"===typeof a&&(a=a.hy);c&&"object"===typ...
function a (line 809) | function a(){b.BT_CONSTRAINT_ERP=qA();b.BT_CONSTRAINT_STOP_ERP=rA();b.BT...
FILE: src/resources/eventHandlers.js
function setupEventHandlers (line 5) | function setupEventHandlers() {
function handleKeyDown (line 10) | function handleKeyDown(event) {
function handleKeyUp (line 36) | function handleKeyUp(event) {
function isTouchscreenDevice (line 62) | function isTouchscreenDevice() {
function touchEvent (line 77) | function touchEvent(coordinates) {
function createJoystick (line 101) | function createJoystick(parent) {
FILE: src/resources/preload.js
function noWebGL (line 8) | function noWebGL() {
FILE: src/resources/surfaces.js
function simpleText (line 4) | function simpleText(x, y, z, inputText, fontSize) {
function floatingLabel (line 43) | function floatingLabel(x, y, z, inputMessage) {
function allSkillsSection (line 80) | function allSkillsSection(
function createTextOnPlane (line 116) | function createTextOnPlane(x, y, z, inputText, size1, size2) {
FILE: src/resources/textures.js
constant SVG (line 34) | let SVG = {};
constant URL (line 38) | let URL = {};
FILE: src/resources/utils.js
function rotateCamera (line 8) | function rotateCamera(ballPosition) {
function getCanvasRelativePosition (line 75) | function getCanvasRelativePosition(event) {
function launchClickPosition (line 83) | function launchClickPosition(event) {
function launchHover (line 104) | function launchHover(event) {
FILE: src/resources/world.js
function createWorld (line 23) | function createWorld() {
function glowingParticles (line 86) | function glowingParticles() {
function createLensFlare (line 127) | function createLensFlare(x, y, z, xScale, zScale, boxTexture) {
function addParticles (line 155) | function addParticles() {
function getRandomArbitrary (line 172) | function getRandomArbitrary(min, max) {
function moveParticles (line 294) | function moveParticles() {
Condensed preview — 22 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,713K chars).
[
{
"path": ".gitignore",
"chars": 29,
"preview": "node_modules\nbuild\nREADME2.md"
},
{
"path": ".vscode/launch.json",
"chars": 488,
"preview": "{\n // Use IntelliSense to learn about possible attributes.\n // Hover to view descriptions of existing attributes.\n"
},
{
"path": "README.md",
"chars": 2026,
"preview": "# Portfolio 2020\n\nAs a quarantine project, I wanted to learn 3D web development, and decided to revamp my portfolio into"
},
{
"path": "index.html",
"chars": 3724,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <!-- Global site tag (gtag.js) - Google Analytics -->\n <script async sr"
},
{
"path": "package.json",
"chars": 981,
"preview": "{\n \"name\": \"portfolio_2020\",\n \"version\": \"1.0.0\",\n \"description\": \"webpack starter\",\n \"main\": \"app.js\",\n \"scripts\":"
},
{
"path": "server.js",
"chars": 589,
"preview": "const express = require(\"express\");\nconst path = require(\"path\");\nconst port = process.env.PORT || 8080;\nconst app = exp"
},
{
"path": "src/WebGL.js",
"chars": 1811,
"preview": "/**\n * @author alteredq / http://alteredqualia.com/\n * @author mrdoob / http://mrdoob.com/\n */\n\n\n\nvar WEBGL = {\n\n\tisWebG"
},
{
"path": "src/app.js",
"chars": 29970,
"preview": "import * as THREE from 'three';\nimport { WEBGL } from './WebGL';\nimport * as Ammo from './builds/ammo';\nimport { billboa"
},
{
"path": "src/builds/ammo.js",
"chars": 1881243,
"preview": "\n// This is ammo.js, a port of Bullet Physics to JavaScript. zlib licensed.\n\nvar Ammo = (function() {\n var _scriptDir ="
},
{
"path": "src/builds/ammo.wasm.js",
"chars": 393767,
"preview": "\n// This is ammo.js, a port of Bullet Physics to JavaScript. zlib licensed.\n\nvar Ammo = (function() {\n var _scriptDir ="
},
{
"path": "src/jsm/Roboto_Regular.json",
"chars": 338105,
"preview": "{\"glyphs\":{\"0\":{\"ha\":780,\"x_min\":78,\"x_max\":701,\"o\":\"m 701 421 q 626 94 701 201 q 391 -14 551 -14 q 157 91 233 -14 q 78 "
},
{
"path": "src/jsm/fragment.glsl",
"chars": 734,
"preview": "varying vec3 vColor;\nvoid main()\n{\n // Disc\n /*\n float strength = distance(gl_PointCoord, vec2(0.5));\n str"
},
{
"path": "src/jsm/vertex.glsl",
"chars": 932,
"preview": "uniform float uSize;\nattribute float aScale;\n\nvarying vec3 vColor;\nuniform float uTime;\n\nattribute vec3 aRandomness;\n\nvo"
},
{
"path": "src/resources/eventHandlers.js",
"chars": 4209,
"preview": "// create keyboard control event listeners\n\nexport let moveDirection = { left: 0, right: 0, forward: 0, back: 0 };\n\nexpo"
},
{
"path": "src/resources/preload.js",
"chars": 1372,
"preview": "export let preloadDivs = document.getElementsByClassName('preload');\nexport let preloadOpacity = document.getElementsByC"
},
{
"path": "src/resources/surfaces.js",
"chars": 3658,
"preview": "import * as THREE from \"three\";\nimport { scene, manager } from \"./world\";\n\nexport function simpleText(x, y, z, inputText"
},
{
"path": "src/resources/textures.js",
"chars": 2134,
"preview": "//billboardTextures\nlet billboardTextures = {};\nbillboardTextures.terpSolutionsTexture = '../src/jsm/terpSolutions.png';"
},
{
"path": "src/resources/utils.js",
"chars": 4937,
"preview": "//start link events\nimport * as THREE from 'three';\nimport { camera, renderer, scene } from './world';\nimport { cursorHo"
},
{
"path": "src/resources/world.js",
"chars": 9218,
"preview": "// use Three.js to set up graphics\nimport * as THREE from 'three';\nimport Stats from 'stats.js';\nimport galaxyVertexShad"
},
{
"path": "style.css",
"chars": 6203,
"preview": "body {\n margin: 0;\n color: #fff;\n font-family: 'Roboto', sans-serif;\n font-size: 16px;\n overscroll-behavior: none;\n"
},
{
"path": "webpack.config.js",
"chars": 916,
"preview": "const path = require('path');\nconst CompressionPlugin = require('compression-webpack-plugin');\n\nmodule.exports = {\n ent"
}
]
// ... and 1 more files (download for full content)
About this extraction
This page contains the full source code of the 0xFloyd/Portfolio_2020 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 22 files (2.6 MB), approximately 672.7k tokens, and a symbol index with 339 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.