From 6b2a9d0a3e8f1737f02b184daf86c0d296e15b27 Mon Sep 17 00:00:00 2001 From: lcluber Date: Thu, 4 Apr 2019 23:18:53 +0200 Subject: [PATCH] Improved typings --- .dockerignore | 2 +- .travis.yml | 27 + CHANGELOG.md | 4 + dist/roostr.d.ts | 240 +- dist/roostr.iife.js | 3303 ++++++++--------- dist/roostr.iife.min.js | 2 +- dist/roostr.js | 96 +- doc/assets/js/search.js | 2 +- doc/classes/_cameras_camera_.camera.html | 24 +- ...eras_orthographic_.orthographiccamera.html | 38 +- ...ameras_perspective_.perspectivecamera.html | 34 +- doc/classes/_geometry_basic_.basicmesh.html | 325 ++ doc/classes/_geometry_cannon_.cannon.html | 98 +- doc/classes/_geometry_cube_.cube.html | 98 +- .../_geometry_custommesh_.custommesh.html | 60 +- ...ometry_fullscreenquad_.fullscreenquad.html | 94 +- .../_geometry_hemisphere_.hemisphere.html | 98 +- doc/classes/_geometry_line_.line.html | 34 +- .../_geometry_multiquad_.multiquad.html | 119 +- doc/classes/_geometry_quad_.quad.html | 94 +- doc/classes/_geometry_sphere_.sphere.html | 98 +- doc/classes/_geometry_submesh_.submesh.html | 6 +- doc/classes/_geometry_vwing_.vwing.html | 98 +- ..._lights_directional_.directionallight.html | 21 +- doc/classes/_lights_point_.pointlight.html | 30 +- doc/classes/_lights_spot_.spotlight.html | 42 +- doc/classes/_material_.material.html | 17 +- doc/classes/_mesh_.mesh.html | 137 +- doc/classes/_program_.program.html | 9 +- doc/classes/_renderer_global_.renderer.html | 31 +- doc/classes/_renderer_mesh_.meshrenderer.html | 27 +- .../_renderer_scene_.scenerenderer.html | 26 +- doc/classes/_scene_lights_.lights.html | 52 +- doc/classes/_scene_scene_.scene.html | 51 +- .../_scene_scenegraph_.scenegraph.html | 22 +- doc/classes/_shader_.shader.html | 9 +- doc/classes/_texture_.texture.html | 9 +- doc/classes/_uniform_.uniform.html | 12 +- doc/enums/_mesh_.edrawmethod.html | 7 +- doc/globals.html | 12 + doc/index.html | 12 +- .../_geometry_multiquad_.iquad.html | 6 +- .../_interfaces_.icustomuniforms.html | 182 + ...hts.html => _interfaces_.iflatlights.html} | 147 +- ...ml => _interfaces_.imaterialuniforms.html} | 42 +- ...rogram.html => _interfaces_.iprogram.html} | 81 +- doc/modules/_geometry_basic_.html | 167 + doc/modules/_interfaces_.html | 179 + doc/modules/_lights_directional_.html | 22 - doc/modules/_material_.html | 9 - doc/modules/_mesh_.html | 9 - doc/modules/_scene_lights_.html | 31 - doc/modules/_scene_scene_.html | 22 - doc/modules/_shader_.html | 2 +- doc/modules/_types_.html | 180 + package-lock.json | 3182 ++++++++++++---- package.json | 14 +- src/ts/cameras/camera.ts | 2 +- src/ts/cameras/orthographic.ts | 2 +- src/ts/cameras/perspective.ts | 2 +- src/ts/geometry/basic.ts | 24 + src/ts/geometry/cannon.ts | 14 +- src/ts/geometry/cube.ts | 16 +- src/ts/geometry/customMesh.ts | 14 +- src/ts/geometry/fullscreenQuad.ts | 12 +- src/ts/geometry/hemisphere.ts | 15 +- src/ts/geometry/line.ts | 8 +- src/ts/geometry/multiQuad.ts | 26 +- src/ts/geometry/quad.ts | 13 +- src/ts/geometry/sphere.ts | 15 +- src/ts/geometry/vwing.ts | 15 +- src/ts/interfaces.ts | 43 + src/ts/lights/directional.ts | 2 +- src/ts/material.ts | 8 +- src/ts/mesh.ts | 72 +- src/ts/program.ts | 26 +- src/ts/renderer/global.ts | 4 +- src/ts/renderer/mesh.ts | 2 +- src/ts/renderer/scene.ts | 1 - src/ts/scene/lights.ts | 25 +- src/ts/scene/scene.ts | 13 +- src/ts/scene/sceneGraph.ts | 2 +- src/ts/shader.ts | 16 +- src/ts/texture.ts | 4 +- src/ts/types.ts | 2 + src/ts/uniform.ts | 4 +- tsconfig.json | 12 +- web/js/{example.js => sandbox.js} | 0 web/public/js/main.min.js | 2 +- 89 files changed, 6359 insertions(+), 3852 deletions(-) create mode 100644 .travis.yml create mode 100644 doc/classes/_geometry_basic_.basicmesh.html create mode 100644 doc/interfaces/_interfaces_.icustomuniforms.html rename doc/interfaces/{_scene_lights_.iflatlights.html => _interfaces_.iflatlights.html} (63%) rename doc/interfaces/{_material_.imaterialuniforms.html => _interfaces_.imaterialuniforms.html} (84%) rename doc/interfaces/{_mesh_.iprogram.html => _interfaces_.iprogram.html} (81%) create mode 100644 doc/modules/_geometry_basic_.html create mode 100644 doc/modules/_interfaces_.html create mode 100644 doc/modules/_types_.html create mode 100644 src/ts/geometry/basic.ts create mode 100644 src/ts/interfaces.ts create mode 100644 src/ts/types.ts rename web/js/{example.js => sandbox.js} (100%) diff --git a/.dockerignore b/.dockerignore index 66c15d3..c536f54 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,6 @@ .git .sass-cache -.ts-cache +.tscache build node_modules src diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..32faaa5 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,27 @@ +language: node_js +node_js: + - 8.12.0 + +branches: + only: + - master + +services: + - docker + +env: + - NODE_ENV=development + +before_install: + +install: + - npm install -g grunt-cli typescript && npm install + +before_script: + +script: + - grunt lib + - grunt website + - grunt doc + +after_script: diff --git a/CHANGELOG.md b/CHANGELOG.md index e46172d..aa5c0d5 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +Version 0.5.5 (April 04th 2019) +----------------------------- + * Improved typings. + Version 0.5.4 (December 16th 2018) ----------------------------- * Added clearMeshes() method to Scene class. diff --git a/dist/roostr.d.ts b/dist/roostr.d.ts index 9828304..2fdbd4c 100644 --- a/dist/roostr.d.ts +++ b/dist/roostr.d.ts @@ -58,38 +58,33 @@ export declare class PerspectiveCamera extends Camera { setProjectionMatrix(viewport: Int32Array): void; } -export declare class Cannon { - vertices: Array; - indices: Array; - normals: Array; - subMeshes: Array; +export declare class BasicMesh { + vertices: number[]; + indices: number[]; + normals: number[]; + subMeshes: SubMesh[]; itemSize: number; - nbSubMeshes: number; primitive: string; constructor(); } -export declare class Cube { - vertices: Array; - indices: Array; - normals: Array; - subMeshes: Array; - itemSize: number; - nbSubMeshes: number; - primitive: string; +export declare class Cannon extends BasicMesh { + constructor(); +} + +export declare class Cube extends BasicMesh { constructor(size: number); } export declare class CustomMesh { - vertices: Float32Array; - indices: Int32Array; - normals: Float32Array; - uvs: Float32Array; - subMeshes: Array; + vertices: Float32Array | null; + indices: Int32Array | null; + normals: Float32Array | null; + uvs: Float32Array | null; + subMeshes: SubMesh[]; itemSize: number; - nbSubMeshes: number; primitive: string; - primitives: Array; + primitives: string[]; constructor(); setVertices(array: Float32Array): void; setIndices(array: Int32Array): void; @@ -101,35 +96,22 @@ export declare class CustomMesh { setPrimitive(primitive: string): boolean; } -export declare class FullscreenQuad { - vertices: Array; - uvs: Array; - subMeshes: Array; - itemSize: number; - nbSubMeshes: number; - primitive: string; +export declare class FullscreenQuad extends BasicMesh { + uvs: number[]; constructor(); } -export declare class Hemisphere { - vertices: Array; - indices: Array; - normals: Array; - subMeshes: Array; - itemSize: number; - nbSubMeshes: number; - primitive: string; +export declare class Hemisphere extends BasicMesh { constructor(); } export declare class Line { - vertices: Array; + vertices: number[]; thickness: number; - subMeshes: Array; + subMeshes: SubMesh[]; itemSize: number; - nbSubMeshes: number; primitive: string; - constructor(vertices: Array, thickness: number); + constructor(vertices: number[], thickness: number); } export interface IQuad { @@ -137,38 +119,25 @@ export interface IQuad { indices: Int32Array; uvs: Float32Array; } -export declare class MultiQuad { - vertices: Array; - indices: Array; - uvs: Array; - subMeshes: Array; - itemSize: number; - nbSubMeshes: number; - primitive: string; +export declare class MultiQuad extends BasicMesh { + uvs: number[]; quad: IQuad; - constructor(width: number, height: number, quantity: number); - private createQuads; + constructor(width: number, height: number); + createQuads(length: number): void; private createIndices; } -export declare class Quad { - vertices: Array; - uvs: Array; - subMeshes: Array; + +export declare class Quad extends BasicMesh { + vertices: number[]; + uvs: number[]; + subMeshes: SubMesh[]; itemSize: number; - nbSubMeshes: number; primitive: string; constructor(width: number, height: number); } -export declare class Sphere { - vertices: Array; - indices: Array; - normals: Array; - subMeshes: Array; - itemSize: number; - nbSubMeshes: number; - primitive: string; +export declare class Sphere extends BasicMesh { constructor(); } export declare class SubMesh { @@ -177,18 +146,44 @@ export declare class SubMesh { constructor(start: number, count: number); } -export declare class VWing { - vertices: Array; - indices: Array; - normals: Array; - subMeshes: Array; - itemSize: number; - nbSubMeshes: number; - primitive: string; +export declare class VWing extends BasicMesh { constructor(); } -export declare type Light = 'directional' | 'point' | 'spot'; +export interface ICustomUniforms { + [key: string]: Uniform; +} +export interface IMaterialUniforms { + materialAmbient: Uniform; + materialDiffuse: Uniform; + materialSpecular: Uniform; + materialShininess: Uniform; +} +export interface IProgram extends WebGLProgram { + vertexNormal: GLint; + vertexPosition: GLint; + textureCoord: GLint; + sampler: WebGLUniformLocation; + modelMatrix: WebGLUniformLocation; + projectionMatrix: WebGLUniformLocation; + viewMatrix: WebGLUniformLocation; + time: WebGLUniformLocation; + screenResolution: WebGLUniformLocation; +} +export interface IFlatLights { + position: number[]; + diffuse: number[]; + specular: number[]; + constantAttenuation: number[]; + linearAttenuation: number[]; + quadraticAttenuation: number[]; + cutoff: number[]; + exponent: number[]; + direction: number[]; + type: number[]; +} + + export declare class DirectionalLight { position: Vector3; diffuse: Vector3; @@ -222,12 +217,6 @@ export declare class SpotLight extends PointLight { } -export interface IMaterialUniforms { - materialAmbient: Uniform; - materialDiffuse: Uniform; - materialSpecular: Uniform; - materialShininess: Uniform; -} export declare class Material { ambient: Vector3; diffuse: Vector3; @@ -246,43 +235,32 @@ export declare enum eDrawMethod { drawElements = "drawElements", drawArrays = "drawArrays" } -export interface IProgram extends WebGLProgram { - vertexNormal: GLint; - vertexPosition: GLint; - textureCoord: GLint; - sampler: WebGLUniformLocation; - modelMatrix: WebGLUniformLocation; - projectionMatrix: WebGLUniformLocation; - viewMatrix: WebGLUniformLocation; - time: WebGLUniformLocation; - screenResolution: WebGLUniformLocation; -} export declare class Mesh { - vertices: Array; - indices: Array; - normals: Array; - uvs: Array; - itemSize: number; - subMeshes: Array; + vertices: number[] | null; + indices: number[] | null; + normals: number[] | null; + uvs: number[] | null; + itemSize: number | null; + subMeshes: SubMesh[]; nbSubMeshes: number; - primitive: string; - customUniforms: object; + primitive: string | null; + customUniforms: ICustomUniforms; context: WebGLRenderingContext; renderer: MeshRenderer; - WebGLTexture: WebGLTexture; - vertexBuffer: WebGLBuffer; - indexBuffer: WebGLBuffer; - normalBuffer: WebGLBuffer; - texCoordBuffer: WebGLBuffer; + WebGLTexture: WebGLTexture | null; + vertexBuffer: WebGLBuffer | null; + indexBuffer: WebGLBuffer | null; + normalBuffer: WebGLBuffer | null; + texCoordBuffer: WebGLBuffer | null; modelMatrix: Matrix4x3; rotationMatrix: Matrix4x3; worldMatrix: Matrix4x3; active: boolean; drawMethod: eDrawMethod; - programs: Array; + programs: IProgram[]; nbPrograms: number; - materials: Array; - children: Array; + materials: Material[]; + children: Mesh[]; blendMode: boolean; zOrder: number; constructor(mesh: Mesh, context: WebGLRenderingContext); @@ -297,7 +275,7 @@ export declare class Mesh { setWorldMatrix(worldMatrix: Matrix4x3): void; setTexture(img: HTMLImageElement): void; addCustomUniform(name: string, type: string, value: number | Array): void; - setCustomUniform(name: string, value: string): void; + setCustomUniform(name: string, value: number | number[]): void; private createProgram; private addProgramAttribute; private addProgramUniform; @@ -307,7 +285,7 @@ export declare class Mesh { render(projectionMatrix: Float32Array, viewMatrix: Float32Array, lights: IFlatLights, time: number, blendMode: boolean): void; } export declare class Program { - static create(context: WebGLRenderingContext, vertexShader: string, fragmentShader: string): WebGLProgram; + static create(context: WebGLRenderingContext, vertexShader: string, fragmentShader: string): WebGLProgram | null; } export declare class Renderer { canvas: HTMLCanvasElement; @@ -321,14 +299,14 @@ export declare class Renderer { setViewport(width: number, height: number): void; setClearColor(red: number, green: number, blue: number, alpha: number): void; clearFrame(): void; - getContext(): WebGLRenderingContext; + getContext(): WebGLRenderingContext | null; } export declare class MeshRenderer { context: WebGLRenderingContext; constructor(context: WebGLRenderingContext); defaultSettings(): void; - createBuffer(target: string, size: number | Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | ArrayBuffer | Uint8ClampedArray | Float32Array | Float64Array, drawMethod: string): WebGLBuffer; + createBuffer(target: string, size: ArrayBuffer | ArrayBufferView | null, drawMethod: string): WebGLBuffer | null; useProgram(program: WebGLProgram): void; bindBuffer(target: string, buffer: WebGLBuffer): void; vertexAttribPointer(index: number, size: number, type: string, normalized: boolean, stride: number, offset: number): void; @@ -373,31 +351,19 @@ export declare class SceneRenderer { -export declare type Light = DirectionalLight | PointLight | SpotLight; -export interface IFlatLights { - position: Array; - diffuse: Array; - specular: Array; - constantAttenuation: Array; - linearAttenuation: Array; - quadraticAttenuation: Array; - cutoff: Array; - exponent: Array; - direction: Array; - type: Array; -} + export declare class Lights { - directionals: Array; - points: Array; - spots: Array; + directionals: DirectionalLight[]; + points: PointLight[]; + spots: SpotLight[]; nbDirectionals: number; nbPoints: number; nbSpots: number; flatArrays: IFlatLights; - types: Array; + types: string[]; nbTypes: number; constructor(); - addLight(light: Light): void; + addLight(light: DirectionalLight | PointLight | SpotLight): void; private ClearFlatArrays; flatten(): IFlatLights; getFlatArray(property: string): any; @@ -408,9 +374,8 @@ export declare class Lights { -export declare type Light = DirectionalLight | PointLight | SpotLight; export declare class Scene { - meshes: Array; + meshes: Mesh[]; nbMeshes: number; lights: Lights; private context; @@ -418,12 +383,12 @@ export declare class Scene { private graph; constructor(context: WebGLRenderingContext); addMesh(mesh: Mesh): void; - addLight(light: Light): void; + addLight(light: DirectionalLight | PointLight | SpotLight): void; clearMeshes(): void; - getLightsProperty(property: string): Array; + getLightsProperty(property: string): number[]; enableBlendMode(equation: string, source: string, destination: string): void; disableBlendMode(): void; - getRendererBlendMode(): GLenum | Float32Array | GLint | WebGLBuffer | GLboolean | Array | GLfloat | WebGLFramebuffer | Int32Array | GLuint | WebGLTexture; + getRendererBlendMode(): GLenum | Float32Array | GLint | WebGLBuffer | GLboolean | GLboolean[] | GLfloat | WebGLFramebuffer | Int32Array | GLuint | WebGLTexture; render(camera: Camera, time: number): void; private computeWorldMatrices; private renderBlended; @@ -433,20 +398,21 @@ export declare class SceneGraph { model: Array; nbModel: number; modelStackTop: number; - constructor(context: WebGLRenderingContext); + constructor(); pushModelMatrix(modelMatrix: Matrix4x3): void; popModelMatrix(): void; getWorldMatrix(): Matrix4x3; } export declare type ShaderType = 'VERTEX_SHADER' | 'FRAGMENT_SHADER'; export declare class Shader { - static create(context: WebGLRenderingContext, str: string, type: ShaderType): WebGLShader; + static create(context: WebGLRenderingContext, str: string, type: ShaderType): WebGLShader | null; } export declare class Texture { - static create(img: HTMLImageElement, context: WebGLRenderingContext): WebGLTexture; + static create(img: HTMLImageElement, context: WebGLRenderingContext): WebGLTexture | null; } +export declare type Light = 'directional' | 'point' | 'spot'; export declare class Uniform { type: string; - value: number | Array; - constructor(type: string, value: number | Array); + value: number | number[]; + constructor(type: string, value: number | number[]); } diff --git a/dist/roostr.iife.js b/dist/roostr.iife.js index dd0956f..d5c4cf7 100644 --- a/dist/roostr.iife.js +++ b/dist/roostr.iife.js @@ -108,25 +108,25 @@ var Roostr = (function (exports) { } _createClass(Utils, null, [{ - key: "round", + key: 'round', value: function round(x, decimals) { decimals = Math.pow(10, decimals); return Math.round(x * decimals) / decimals; } }, { - key: "floor", + key: 'floor', value: function floor(x, decimals) { decimals = Math.pow(10, decimals); return Math.floor(x * decimals) / decimals; } }, { - key: "ceil", + key: 'ceil', value: function ceil(x, decimals) { decimals = Math.pow(10, decimals); return Math.ceil(x * decimals) / decimals; } }, { - key: "trunc", + key: 'trunc', value: function trunc(x, decimals) { decimals = Math.pow(10, decimals); var v = +x * decimals; @@ -136,72 +136,72 @@ var Roostr = (function (exports) { return (v - v % 1) / decimals || (v < 0 ? -0 : v === 0 ? v : 0); } }, { - key: "roundToNearest", + key: 'roundToNearest', value: function roundToNearest(x, nearest) { return Math.round(x / nearest) * nearest; } }, { - key: "mix", + key: 'mix', value: function mix(x, y, ratio) { return (1 - ratio) * x + ratio * y; } }, { - key: "sign", + key: 'sign', value: function sign(x) { return x ? x < 0 ? -1 : 1 : 0; } }, { - key: "opposite", + key: 'opposite', value: function opposite(x) { return -x; } }, { - key: "clamp", + key: 'clamp', value: function clamp(x, min, max) { return Math.min(Math.max(x, min), max); } }, { - key: "normalize", + key: 'normalize', value: function normalize(x, min, max) { return (x - min) / (max - min); } }, { - key: "lerp", + key: 'lerp', value: function lerp(normal, min, max) { return (max - min) * normal + min; } }, { - key: "map", + key: 'map', value: function map(x, sourceMin, sourceMax, destMin, destMax) { return this.lerp(this.normalize(x, sourceMin, sourceMax), destMin, destMax); } }, { - key: "isEven", + key: 'isEven', value: function isEven(x) { return !(x & 1); } }, { - key: "isOdd", + key: 'isOdd', value: function isOdd(x) { return x & 1; } }, { - key: "isOrigin", + key: 'isOrigin', value: function isOrigin(x) { return x === 0 ? true : false; } }, { - key: "isPositive", + key: 'isPositive', value: function isPositive(x) { return x >= 0 ? true : false; } }, { - key: "isNegative", + key: 'isNegative', value: function isNegative(x) { return x < 0 ? true : false; } }, { - key: "validate", + key: 'validate', value: function validate(x) { return isNaN(x) ? 0.0 : x; } @@ -216,13 +216,13 @@ var Roostr = (function (exports) { } _createClass(Trigonometry, null, [{ - key: "init", + key: 'init', value: function init() { Trigonometry.createRoundedPis(); Trigonometry.createFactorialArray(); } }, { - key: "createRoundedPis", + key: 'createRoundedPis', value: function createRoundedPis() { var decimals = 2; this.pi = Utils.round(Math.PI, decimals); @@ -230,7 +230,7 @@ var Roostr = (function (exports) { this.halfpi = Utils.round(Math.PI * 0.5, decimals); } }, { - key: "createFactorialArray", + key: 'createFactorialArray', value: function createFactorialArray() { var maxSin = this.sineLoops[this.sineLoops.length - 1] * 3; var maxCos = this.cosineLoops[this.cosineLoops.length - 1] * 2; @@ -240,12 +240,12 @@ var Roostr = (function (exports) { } } }, { - key: "factorial", + key: 'factorial', value: function factorial(i) { return i > 1 ? i - 1 : 1; } }, { - key: "setSinePrecision", + key: 'setSinePrecision', value: function setSinePrecision(value) { if (value < this.sineLoops.length) { this.sineDecimals = value; @@ -255,7 +255,7 @@ var Roostr = (function (exports) { return 2; } }, { - key: "setCosinePrecision", + key: 'setCosinePrecision', value: function setCosinePrecision(value) { if (value < Trigonometry.cosineLoops.length) { this.cosineDecimals = value; @@ -265,7 +265,7 @@ var Roostr = (function (exports) { return 2; } }, { - key: "setArctanPrecision", + key: 'setArctanPrecision', value: function setArctanPrecision(value) { if (value < Trigonometry.arctanLoops.length) { this.cosineDecimals = value; @@ -275,17 +275,17 @@ var Roostr = (function (exports) { return 2; } }, { - key: "degreeToRadian", + key: 'degreeToRadian', value: function degreeToRadian(degree) { return degree * this.pi / 180; } }, { - key: "radianToDegree", + key: 'radianToDegree', value: function radianToDegree(radian) { return radian * 180 / this.pi; } }, { - key: "normalizeRadian", + key: 'normalizeRadian', value: function normalizeRadian(angle) { if (angle > this.pi || angle < -this.pi) { return angle - this.twopi * Math.floor((angle + this.pi) / this.twopi); @@ -293,7 +293,7 @@ var Roostr = (function (exports) { return angle; } }, { - key: "sine", + key: 'sine', value: function sine(angle) { angle = this.normalizeRadian(angle); if (Trigonometry.sineDecimals <= 2 && angle < 0.28 && angle > -0.28) { @@ -303,7 +303,7 @@ var Roostr = (function (exports) { } } }, { - key: "cosine", + key: 'cosine', value: function cosine(angle) { angle = this.normalizeRadian(angle); var squaredAngle = angle * angle; @@ -314,7 +314,7 @@ var Roostr = (function (exports) { } } }, { - key: "arctan2", + key: 'arctan2', value: function arctan2(x, y) { var angle = y / x; if (x > 0) { @@ -336,12 +336,12 @@ var Roostr = (function (exports) { } } }, { - key: "arctan2Vector2", + key: 'arctan2Vector2', value: function arctan2Vector2(vector2) { return this.arctan2(vector2.x, vector2.y); } }, { - key: "arctan", + key: 'arctan', value: function arctan(angle) { var loops = Trigonometry.arctanLoops[this.arctanDecimals]; if (angle < 1 && angle > -1) { @@ -357,22 +357,22 @@ var Roostr = (function (exports) { } } }, { - key: "sineEquation", + key: 'sineEquation', value: function sineEquation(amplitude, period, shiftX, shiftY) { return amplitude * this.sine(period + shiftX) + shiftY; } }, { - key: "cosineEquation", + key: 'cosineEquation', value: function cosineEquation(amplitude, period, shiftX, shiftY) { return amplitude * this.cosine(period + shiftX) + shiftY; } }, { - key: "arctanEquation", + key: 'arctanEquation', value: function arctanEquation(amplitude, period, shiftX, shiftY) { return amplitude * this.arctan(period + shiftX) + shiftY; } }, { - key: "taylorSerie", + key: 'taylorSerie', value: function taylorSerie(start, max, x, angle, needFactorial) { var squaredAngle = angle * angle; var result = x; @@ -406,22 +406,22 @@ var Roostr = (function (exports) { } _createClass(Time, null, [{ - key: "millisecondToSecond", + key: 'millisecondToSecond', value: function millisecondToSecond(millisecond) { return millisecond * 0.001; } }, { - key: "secondToMilliecond", + key: 'secondToMilliecond', value: function secondToMilliecond(second) { return second * 1000; } }, { - key: "millisecondToFramePerSecond", + key: 'millisecondToFramePerSecond', value: function millisecondToFramePerSecond(millisecond) { return Math.round(1000 / millisecond); } }, { - key: "framePerSecondToMillisecond", + key: 'framePerSecondToMillisecond', value: function framePerSecondToMillisecond(refreshRate) { return Utils.round(1000 / refreshRate, 1); } @@ -436,17 +436,17 @@ var Roostr = (function (exports) { } _createClass(Random, null, [{ - key: "float", + key: 'float', value: function float(min, max) { return min + Math.random() * (max - min); } }, { - key: "integer", + key: 'integer', value: function integer(min, max) { return Math.floor(min + Math.random() * (max - min + 1)); } }, { - key: "distribution", + key: 'distribution', value: function distribution(min, max, iterations) { var total = 0; for (var i = 0; i < iterations; i++) { @@ -455,7 +455,7 @@ var Roostr = (function (exports) { return total / iterations; } }, { - key: "pick", + key: 'pick', value: function pick(value1, value2) { return Math.random() < 0.5 ? value1 : value2; } @@ -470,13 +470,13 @@ var Roostr = (function (exports) { } _createClass(Bezier, null, [{ - key: "quadratic", + key: 'quadratic', value: function quadratic(p0, p1, p2, t) { var oneMinusT = 1 - t; return Math.pow(oneMinusT, 2) * p0 + oneMinusT * 2 * t * p1 + t * t * p2; } }, { - key: "cubic", + key: 'cubic', value: function cubic(p0, p1, p2, p3, t) { var oneMinusT = 1 - t; var tByT = t * t; @@ -487,42 +487,38 @@ var Roostr = (function (exports) { return Bezier; }(); - var Axis; - (function (Axis) { - Axis["x"] = "x"; - Axis["y"] = "y"; - })(Axis || (Axis = {})); - var Vector2 = function () { function Vector2(x, y) { _classCallCheck(this, Vector2); - this.x = x; - this.y = y; + this._x = 0.0; + this._y = 0.0; + this.x = x || 0.0; + this.y = y || 0.0; } _createClass(Vector2, [{ - key: "isOrigin", + key: 'isOrigin', value: function isOrigin() { return Utils.isOrigin(this.x) && Utils.isOrigin(this.y) ? true : false; } }, { - key: "isNotOrigin", + key: 'isNotOrigin', value: function isNotOrigin() { return !Utils.isOrigin(this.x) || !Utils.isOrigin(this.y) ? true : false; } }, { - key: "isPositive", + key: 'isPositive', value: function isPositive() { return Utils.isPositive(this.x) && Utils.isPositive(this.y) ? true : false; } }, { - key: "isNegative", + key: 'isNegative', value: function isNegative() { return Utils.isNegative(this.x) && Utils.isNegative(this.y) ? true : false; } }, { - key: "fromArray", + key: 'fromArray', value: function fromArray(array, offset) { if (offset === undefined) { offset = 0; @@ -532,43 +528,43 @@ var Roostr = (function (exports) { return this; } }, { - key: "toArray", + key: 'toArray', value: function toArray() { return [this.x, this.y]; } }, { - key: "toString", + key: 'toString', value: function toString() { - return '(' + Axis.x + ' = ' + this.x + ';' + Axis.y + ' = ' + this.y + ')'; + return '(x = ' + this.x + ';y = ' + this.y + ')'; } }, { - key: "set", + key: 'set', value: function set(x, y) { this.x = x; this.y = y; return this; } }, { - key: "clone", + key: 'clone', value: function clone() { return new Vector2(this.x, this.y); } }, { - key: "copy", + key: 'copy', value: function copy(vector2) { this.x = vector2.x; this.y = vector2.y; return this; } }, { - key: "origin", + key: 'origin', value: function origin() { this.x = 0.0; this.y = 0.0; return this; } }, { - key: "setAngle", + key: 'setAngle', value: function setAngle(angle) { if (Utils.validate(angle)) { var length = this.getMagnitude(); @@ -578,22 +574,22 @@ var Roostr = (function (exports) { return this; } }, { - key: "getAngle", + key: 'getAngle', value: function getAngle() { return Math.atan2(this.y, this.x); } }, { - key: "getMagnitude", + key: 'getMagnitude', value: function getMagnitude() { return Math.sqrt(this.getSquaredMagnitude()); } }, { - key: "getSquaredMagnitude", + key: 'getSquaredMagnitude', value: function getSquaredMagnitude() { return this.x * this.x + this.y * this.y; } }, { - key: "getDistance", + key: 'getDistance', value: function getDistance(vector2) { this.subtract(vector2); var magnitude = this.getMagnitude(); @@ -601,7 +597,7 @@ var Roostr = (function (exports) { return magnitude; } }, { - key: "getSquaredDistance", + key: 'getSquaredDistance', value: function getSquaredDistance(vector2) { this.subtract(vector2); var squaredMagnitude = this.getSquaredMagnitude(); @@ -609,186 +605,180 @@ var Roostr = (function (exports) { return squaredMagnitude; } }, { - key: "quadraticBezier", + key: 'quadraticBezier', value: function quadraticBezier(p0, p1, p2, t) { this.x = Bezier.quadratic(p0.x, p1.x, p2.x, t); this.y = Bezier.quadratic(p0.y, p1.y, p2.y, t); return this; } }, { - key: "cubicBezier", + key: 'cubicBezier', value: function cubicBezier(p0, p1, p2, p3, t) { this.x = Bezier.cubic(p0.x, p1.x, p2.x, p3.x, t); this.y = Bezier.cubic(p0.y, p1.y, p2.y, p3.y, t); return this; } }, { - key: "add", + key: 'add', value: function add(vector2) { this.x += vector2.x; this.y += vector2.y; return this; } }, { - key: "addScalar", + key: 'addScalar', value: function addScalar(scalar) { this.x += scalar; this.y += scalar; return this; } }, { - key: "addScaledVector", + key: 'addScaledVector', value: function addScaledVector(vector2, scalar) { this.x += vector2.x * scalar; this.y += vector2.y * scalar; return this; } }, { - key: "addVectors", + key: 'addVectors', value: function addVectors(v1, v2) { this.x = v1.x + v2.x; this.y = v1.y + v2.y; return this; } }, { - key: "subtract", + key: 'subtract', value: function subtract(vector2) { this.x -= vector2.x; this.y -= vector2.y; return this; } }, { - key: "subtractScalar", + key: 'subtractScalar', value: function subtractScalar(scalar) { this.x -= scalar; this.y -= scalar; return this; } }, { - key: "subtractScaledVector", + key: 'subtractScaledVector', value: function subtractScaledVector(vector2, scalar) { this.x -= vector2.x * scalar; this.y -= vector2.y * scalar; return this; } }, { - key: "subtractVectors", + key: 'subtractVectors', value: function subtractVectors(v1, v2) { this.x = v1.x - v2.x; this.y = v1.y - v2.y; return this; } }, { - key: "scale", + key: 'scale', value: function scale(value) { this.x *= value; this.y *= value; return this; } }, { - key: "scaleVector", + key: 'scaleVector', value: function scaleVector(v1, value) { this.x = v1.x * value; this.y = v1.y * value; return this; } }, { - key: "multiply", + key: 'multiply', value: function multiply(vector2) { this.x *= vector2.x; this.y *= vector2.y; return this; } }, { - key: "multiplyScaledVector", + key: 'multiplyScaledVector', value: function multiplyScaledVector(vector2, scalar) { this.x *= vector2.x * scalar; this.y *= vector2.y * scalar; return this; } }, { - key: "multiplyVectors", + key: 'multiplyVectors', value: function multiplyVectors(v1, v2) { this.x = v1.x * v2.x; this.y = v1.y * v2.y; return this; } }, { - key: "divide", + key: 'divide', value: function divide(vector2) { this.x /= vector2.x; this.y /= vector2.y; return this; } }, { - key: "divideScaledVector", + key: 'divideScaledVector', value: function divideScaledVector(vector2, scalar) { this.x /= vector2.x * scalar; this.y /= vector2.y * scalar; return this; } }, { - key: "divideVectors", + key: 'divideVectors', value: function divideVectors(v1, v2) { this.x = v1.x / v2.x; this.y = v1.y / v2.y; return this; } }, { - key: "halve", + key: 'halve', value: function halve() { this.x *= 0.5; this.y *= 0.5; return this; } }, { - key: "max", + key: 'max', value: function max(vector2) { this.x = Math.max(this.x, vector2.x); this.y = Math.max(this.y, vector2.y); return this; } }, { - key: "min", + key: 'min', value: function min(vector2) { this.x = Math.min(this.x, vector2.x); this.y = Math.min(this.y, vector2.y); return this; } }, { - key: "maxScalar", + key: 'maxScalar', value: function maxScalar(scalar) { this.x = Math.max(this.x, scalar); this.y = Math.max(this.y, scalar); return this; } }, { - key: "minScalar", + key: 'minScalar', value: function minScalar(scalar) { this.x = Math.min(this.x, scalar); this.y = Math.min(this.y, scalar); return this; } }, { - key: "maxAxis", + key: 'maxAxis', value: function maxAxis() { - if (this.y > this.x) { - return Axis.y; - } - return Axis.x; + return this.y > this.x ? 'y' : 'x'; } }, { - key: "minAxis", + key: 'minAxis', value: function minAxis() { - if (this.y < this.x) { - return Axis.y; - } - return Axis.x; + return this.y < this.x ? 'y' : 'x'; } }, { - key: "setOppositeAxis", + key: 'setOppositeAxis', value: function setOppositeAxis(axis, value) { - if (axis === Axis.y) { + if (axis === 'y') { this.x = value; } else { this.y = value; @@ -796,7 +786,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "normalize", + key: 'normalize', value: function normalize() { var length = this.getMagnitude(); if (length && length != 1) { @@ -805,60 +795,60 @@ var Roostr = (function (exports) { return this; } }, { - key: "normalizeVector", + key: 'normalizeVector', value: function normalizeVector(v) { this.copy(v); return this.normalize(); } }, { - key: "absolute", + key: 'absolute', value: function absolute() { this.x = Math.abs(this.x); this.y = Math.abs(this.y); return this; } }, { - key: "absoluteVector", + key: 'absoluteVector', value: function absoluteVector(v) { this.x = Math.abs(v.x); this.y = Math.abs(v.y); return this; } }, { - key: "opposite", + key: 'opposite', value: function opposite() { this.x = -this.x; this.y = -this.y; return this; } }, { - key: "oppositeVector", + key: 'oppositeVector', value: function oppositeVector(v) { this.x = -v.x; this.y = -v.y; return this; } }, { - key: "clamp", + key: 'clamp', value: function clamp(rectangle) { this.x = Utils.clamp(this.x, rectangle.topLeftCorner.x, rectangle.bottomRightCorner.x); this.y = Utils.clamp(this.y, rectangle.topLeftCorner.y, rectangle.bottomRightCorner.y); return this; } }, { - key: "lerp", + key: 'lerp', value: function lerp(normal, min, max) { this.x = Utils.lerp(normal, min.x, max.x); this.y = Utils.lerp(normal, min.y, max.y); return this; } }, { - key: "dotProduct", + key: 'dotProduct', value: function dotProduct(vector2) { return this.x * vector2.x + this.y * vector2.y; } }, { - key: "x", + key: 'x', set: function set(x) { this._x = Utils.validate(x); }, @@ -866,7 +856,7 @@ var Roostr = (function (exports) { return this._x; } }, { - key: "y", + key: 'y', set: function set(y) { this._y = Utils.validate(y); }, @@ -883,44 +873,46 @@ var Roostr = (function (exports) { _classCallCheck(this, Circle); this.shape = 'circle'; + this._radius = 0.0; + this._diameter = 0.0; this.position = new Vector2(positionX, positionY); this.radius = radius; } _createClass(Circle, [{ - key: "clone", + key: 'clone', value: function clone() { return new Circle(this.position.x, this.position.y, this.radius); } }, { - key: "copy", + key: 'copy', value: function copy(circle) { this.position.copy(circle.position); this.radius = circle.radius; } }, { - key: "set", + key: 'set', value: function set(positionX, positionY, radius) { this.position.set(positionX, positionY); this.radius = radius; } }, { - key: "setPositionXY", + key: 'setPositionXY', value: function setPositionXY(positionX, positionY) { this.position.set(positionX, positionY); } }, { - key: "setPositionFromVector", + key: 'setPositionFromVector', value: function setPositionFromVector(position) { this.position.copy(position); } }, { - key: "scale", + key: 'scale', value: function scale(scalar) { this.radius *= scalar; } }, { - key: "draw", + key: 'draw', value: function draw(context, fillColor, strokeColor, strokeWidth) { context.beginPath(); context.arc(this.position.x, this.position.y, this.radius, 0, Trigonometry.twopi, false); @@ -935,7 +927,7 @@ var Roostr = (function (exports) { } } }, { - key: "radius", + key: 'radius', set: function set(radius) { this._radius = radius; this._diameter = this._radius * 2; @@ -944,7 +936,7 @@ var Roostr = (function (exports) { return this._radius; } }, { - key: "diameter", + key: 'diameter', set: function set(diameter) { this._diameter = diameter; this._radius = this._diameter * 0.5; @@ -971,63 +963,63 @@ var Roostr = (function (exports) { } _createClass(Rectangle, [{ - key: "clone", + key: 'clone', value: function clone() { return new Rectangle(this.position.x, this.position.y, this.size.x, this.size.y); } }, { - key: "copy", + key: 'copy', value: function copy(rectangle) { this.setSizeFromVector(rectangle.size); this.setPositionFromVector(rectangle.position); } }, { - key: "set", + key: 'set', value: function set(positionX, positionY, sizeX, sizeY) { this.setSizeXY(sizeX, sizeY); this.setPositionXY(positionX, positionY); } }, { - key: "setPositionX", + key: 'setPositionX', value: function setPositionX(x) { this.setPosition('x', x); } }, { - key: "setPositionY", + key: 'setPositionY', value: function setPositionY(y) { this.setPosition('y', y); } }, { - key: "setPosition", + key: 'setPosition', value: function setPosition(property, value) { this.position[property] = value; this.topLeftCorner[property] = value - this.halfSize[property]; this.bottomRightCorner[property] = value + this.halfSize[property]; } }, { - key: "setPositionXY", + key: 'setPositionXY', value: function setPositionXY(positionX, positionY) { this.position.set(positionX, positionY); this.setCorners(); } }, { - key: "setPositionFromVector", + key: 'setPositionFromVector', value: function setPositionFromVector(position) { this.position.copy(position); this.setCorners(); } }, { - key: "setSizeX", + key: 'setSizeX', value: function setSizeX(width) { this.setSize('x', width); } }, { - key: "setSizeY", + key: 'setSizeY', value: function setSizeY(height) { this.setSize('y', height); } }, { - key: "setSize", + key: 'setSize', value: function setSize(property, value) { this.size[property] = value; this.setHalfSize(); @@ -1035,33 +1027,33 @@ var Roostr = (function (exports) { this.bottomRightCorner[property] = this.position[property] + this.halfSize[property]; } }, { - key: "setSizeXY", + key: 'setSizeXY', value: function setSizeXY(width, height) { this.size.set(width, height); this.setHalfSize(); this.setCorners(); } }, { - key: "setSizeFromVector", + key: 'setSizeFromVector', value: function setSizeFromVector(size) { this.size.copy(size); this.setHalfSize(); this.setCorners(); } }, { - key: "setCorners", + key: 'setCorners', value: function setCorners() { this.topLeftCorner.set(this.position.x - this.halfSize.x, this.position.y - this.halfSize.y); this.bottomRightCorner.set(this.position.x + this.halfSize.x, this.position.y + this.halfSize.y); } }, { - key: "setHalfSize", + key: 'setHalfSize', value: function setHalfSize() { this.halfSize.copy(this.size); this.halfSize.halve(); } }, { - key: "draw", + key: 'draw', value: function draw(context, fillColor, strokeColor, strokeWidth) { context.beginPath(); context.rect(this.topLeftCorner.x, this.topLeftCorner.y, this.size.x, this.size.y); @@ -1080,24 +1072,20 @@ var Roostr = (function (exports) { return Rectangle; }(); - var Axis$1; - (function (Axis) { - Axis["x"] = "x"; - Axis["y"] = "y"; - Axis["z"] = "z"; - })(Axis$1 || (Axis$1 = {})); - var Vector3 = function () { function Vector3(x, y, z) { _classCallCheck(this, Vector3); - this.x = x; - this.y = y; - this.z = z; + this._x = 0.0; + this._y = 0.0; + this._z = 0.0; + this.x = x || 0.0; + this.y = y || 0.0; + this.z = z || 0.0; } _createClass(Vector3, [{ - key: "fromArray", + key: 'fromArray', value: function fromArray(array, offset) { if (offset === undefined) { offset = 0; @@ -1108,17 +1096,17 @@ var Roostr = (function (exports) { return this; } }, { - key: "toArray", + key: 'toArray', value: function toArray() { return [this.x, this.y, this.z]; } }, { - key: "toString", + key: 'toString', value: function toString() { - return '(' + Axis$1.x + ' = ' + this.x + ';' + Axis$1.y + ' = ' + this.y + ';' + Axis$1.z + ' = ' + this.z + ')'; + return '(x = ' + this.x + ';y = ' + this.y + ';z = ' + this.z + ')'; } }, { - key: "set", + key: 'set', value: function set(x, y, z) { this.x = x; this.y = y; @@ -1126,12 +1114,12 @@ var Roostr = (function (exports) { return this; } }, { - key: "clone", + key: 'clone', value: function clone() { return new Vector3(this.x, this.y, this.z); } }, { - key: "copy", + key: 'copy', value: function copy(vector3) { this.x = vector3.x; this.y = vector3.y; @@ -1139,7 +1127,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "origin", + key: 'origin', value: function origin() { this.x = 0.0; this.y = 0.0; @@ -1147,17 +1135,17 @@ var Roostr = (function (exports) { return this; } }, { - key: "getMagnitude", + key: 'getMagnitude', value: function getMagnitude() { return Math.sqrt(this.getSquaredMagnitude()); } }, { - key: "getSquaredMagnitude", + key: 'getSquaredMagnitude', value: function getSquaredMagnitude() { return this.x * this.x + this.y * this.y + this.z * this.z; } }, { - key: "getDistance", + key: 'getDistance', value: function getDistance(vector3) { this.subtract(vector3); var magnitude = this.getMagnitude(); @@ -1165,7 +1153,7 @@ var Roostr = (function (exports) { return magnitude; } }, { - key: "getSquaredDistance", + key: 'getSquaredDistance', value: function getSquaredDistance(vector3) { this.subtract(vector3); var squaredMagnitude = this.getSquaredMagnitude(); @@ -1173,7 +1161,7 @@ var Roostr = (function (exports) { return squaredMagnitude; } }, { - key: "add", + key: 'add', value: function add(vector3) { this.x += vector3.x; this.y += vector3.y; @@ -1181,7 +1169,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "addScalar", + key: 'addScalar', value: function addScalar(scalar) { this.x += scalar; this.y += scalar; @@ -1189,7 +1177,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "addScaledVector", + key: 'addScaledVector', value: function addScaledVector(vector3, scalar) { this.x += vector3.x * scalar; this.y += vector3.y * scalar; @@ -1197,7 +1185,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "addVectors", + key: 'addVectors', value: function addVectors(v1, v2) { this.x = v1.x + v2.x; this.y = v1.y + v2.y; @@ -1205,7 +1193,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "subtract", + key: 'subtract', value: function subtract(vector3) { this.x -= vector3.x; this.y -= vector3.y; @@ -1213,7 +1201,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "subtractScalar", + key: 'subtractScalar', value: function subtractScalar(scalar) { this.x -= scalar; this.y -= scalar; @@ -1221,7 +1209,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "subtractScaledVector", + key: 'subtractScaledVector', value: function subtractScaledVector(vector3, scalar) { this.x -= vector3.x * scalar; this.y -= vector3.y * scalar; @@ -1229,7 +1217,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "subtractVectors", + key: 'subtractVectors', value: function subtractVectors(v1, v2) { this.x = v1.x - v2.x; this.y = v1.y - v2.y; @@ -1237,7 +1225,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "scale", + key: 'scale', value: function scale(value) { this.x *= value; this.y *= value; @@ -1245,7 +1233,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "multiply", + key: 'multiply', value: function multiply(vector3) { this.x *= vector3.x; this.y *= vector3.y; @@ -1253,7 +1241,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "multiplyScaledVector", + key: 'multiplyScaledVector', value: function multiplyScaledVector(vector3, scalar) { this.x *= vector3.x * scalar; this.y *= vector3.y * scalar; @@ -1261,7 +1249,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "multiplyVectors", + key: 'multiplyVectors', value: function multiplyVectors(v1, v2) { this.x = v1.x * v2.x; this.y = v1.y * v2.y; @@ -1269,7 +1257,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "divide", + key: 'divide', value: function divide(vector3) { this.x /= vector3.x; this.y /= vector3.y; @@ -1277,7 +1265,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "divideScaledVector", + key: 'divideScaledVector', value: function divideScaledVector(vector3, scalar) { this.x /= vector3.x * scalar; this.y /= vector3.y * scalar; @@ -1285,7 +1273,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "divideVectors", + key: 'divideVectors', value: function divideVectors(v1, v2) { this.x = v1.x / v2.x; this.y = v1.y / v2.y; @@ -1293,7 +1281,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "halve", + key: 'halve', value: function halve() { this.x *= 0.5; this.y *= 0.5; @@ -1301,7 +1289,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "max", + key: 'max', value: function max(vector3) { this.x = Math.max(this.x, vector3.x); this.y = Math.max(this.y, vector3.y); @@ -1309,7 +1297,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "min", + key: 'min', value: function min(vector3) { this.x = Math.min(this.x, vector3.x); this.y = Math.min(this.y, vector3.y); @@ -1317,7 +1305,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "maxScalar", + key: 'maxScalar', value: function maxScalar(scalar) { this.x = Math.max(this.x, scalar); this.y = Math.max(this.y, scalar); @@ -1325,7 +1313,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "minScalar", + key: 'minScalar', value: function minScalar(scalar) { this.x = Math.min(this.x, scalar); this.y = Math.min(this.y, scalar); @@ -1333,7 +1321,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "normalize", + key: 'normalize', value: function normalize() { var length = this.getMagnitude(); if (length && length != 1) { @@ -1342,12 +1330,12 @@ var Roostr = (function (exports) { return this; } }, { - key: "dotProduct", + key: 'dotProduct', value: function dotProduct(vector3) { return this.x * vector3.x + this.y * vector3.y + this.z * vector3.z; } }, { - key: "cross", + key: 'cross', value: function cross(vector3) { var x = this.x, y = this.y, @@ -1358,7 +1346,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "crossVectors", + key: 'crossVectors', value: function crossVectors(v1, v2) { var v1x = v1.x, v1y = v1.y, @@ -1372,7 +1360,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "x", + key: 'x', set: function set(x) { this._x = Utils.validate(x); }, @@ -1380,7 +1368,7 @@ var Roostr = (function (exports) { return this._x; } }, { - key: "y", + key: 'y', set: function set(y) { this._y = Utils.validate(y); }, @@ -1388,7 +1376,7 @@ var Roostr = (function (exports) { return this._y; } }, { - key: "z", + key: 'z', set: function set(z) { this._z = Utils.validate(z); }, @@ -1412,56 +1400,56 @@ var Roostr = (function (exports) { } _createClass(Matrix4x3, [{ - key: "make", + key: 'make', value: function make(x1, x2, x3, y1, y2, y3, z1, z2, z3, t1, t2, t3) { - this.m[0] = Utils.validate(x1); - this.m[1] = Utils.validate(x2); - this.m[2] = Utils.validate(x3); + this.m[0] = Utils.validate(x1 || 0.0); + this.m[1] = Utils.validate(x2 || 0.0); + this.m[2] = Utils.validate(x3 || 0.0); this.m[3] = 0.0; - this.m[4] = Utils.validate(y1); - this.m[5] = Utils.validate(y2); - this.m[6] = Utils.validate(y3); + this.m[4] = Utils.validate(y1 || 0.0); + this.m[5] = Utils.validate(y2 || 0.0); + this.m[6] = Utils.validate(y3 || 0.0); this.m[7] = 0.0; - this.m[8] = Utils.validate(z1); - this.m[9] = Utils.validate(z2); - this.m[10] = Utils.validate(z3); + this.m[8] = Utils.validate(z1 || 0.0); + this.m[9] = Utils.validate(z2 || 0.0); + this.m[10] = Utils.validate(z3 || 0.0); this.m[11] = 0.0; - this.m[12] = Utils.validate(t1); - this.m[13] = Utils.validate(t2); - this.m[14] = Utils.validate(t3); + this.m[12] = Utils.validate(t1 || 0.0); + this.m[13] = Utils.validate(t2 || 0.0); + this.m[14] = Utils.validate(t3 || 0.0); this.m[15] = 1.0; } }, { - key: "copy", + key: 'copy', value: function copy(matrix4x3) { var m = matrix4x3.m; this.make(m[0], m[1], m[2], m[4], m[5], m[6], m[8], m[9], m[10], m[12], m[13], m[14]); return this; } }, { - key: "toArray", + key: 'toArray', value: function toArray() { return this.m; } }, { - key: "toString", + key: 'toString', value: function toString() { return '(' + this.m[0] + ',' + this.m[1] + ',' + this.m[2] + ',' + this.m[3] + ';' + this.m[4] + ',' + this.m[5] + ',' + this.m[6] + ',' + this.m[7] + ';' + this.m[8] + ',' + this.m[9] + ',' + this.m[10] + ',' + this.m[11] + ';' + this.m[12] + ',' + this.m[13] + ',' + this.m[14] + ',' + this.m[15] + ')'; } }, { - key: "identity", + key: 'identity', value: function identity() { this.make(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0); return this; } }, { - key: "scale", + key: 'scale', value: function scale(vector3) { this.make(vector3.x, 0.0, 0.0, 0.0, vector3.y, 0.0, 0.0, 0.0, vector3.z, 0.0, 0.0, 0.0); return this; } }, { - key: "rotateX", + key: 'rotateX', value: function rotateX(angle) { var cos = Trigonometry.cosine(angle); var sin = Trigonometry.sine(angle); @@ -1469,7 +1457,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "rotateY", + key: 'rotateY', value: function rotateY(angle) { var cos = Trigonometry.cosine(angle); var sin = Trigonometry.sine(angle); @@ -1477,7 +1465,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "rotateZ", + key: 'rotateZ', value: function rotateZ(angle) { var cos = Trigonometry.cosine(angle); var sin = Trigonometry.sine(angle); @@ -1485,13 +1473,13 @@ var Roostr = (function (exports) { return this; } }, { - key: "translate", + key: 'translate', value: function translate(vector3) { this.make(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, vector3.x, vector3.y, vector3.z); return this; } }, { - key: "multiply", + key: 'multiply', value: function multiply(matrix4x3) { var m1 = this.m; var m2 = matrix4x3.m; @@ -1499,7 +1487,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "lookAtRH", + key: 'lookAtRH', value: function lookAtRH(eye, target, up) { this.zAxis.subtractVectors(eye, target).normalize(); this.xAxis.crossVectors(up, this.zAxis).normalize(); @@ -1517,63 +1505,60 @@ var Roostr = (function (exports) { _classCallCheck(this, Matrix4x4); this.m = new Float32Array(16); - this.xAxis = new Vector3(); - this.yAxis = new Vector3(); - this.zAxis = new Vector3(); this.make(x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, t1, t2, t3, t4); } _createClass(Matrix4x4, [{ - key: "make", + key: 'make', value: function make(x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4, t1, t2, t3, t4) { - this.m[0] = Utils.validate(x1); - this.m[1] = Utils.validate(x2); - this.m[2] = Utils.validate(x3); - this.m[3] = Utils.validate(x4); - this.m[4] = Utils.validate(y1); - this.m[5] = Utils.validate(y2); - this.m[6] = Utils.validate(y3); - this.m[7] = Utils.validate(y4); - this.m[8] = Utils.validate(z1); - this.m[9] = Utils.validate(z2); - this.m[10] = Utils.validate(z3); - this.m[11] = Utils.validate(z4); - this.m[12] = Utils.validate(t1); - this.m[13] = Utils.validate(t2); - this.m[14] = Utils.validate(t3); - this.m[15] = Utils.validate(t4); - } - }, { - key: "copy", + this.m[0] = Utils.validate(x1 || 0.0); + this.m[1] = Utils.validate(x2 || 0.0); + this.m[2] = Utils.validate(x3 || 0.0); + this.m[3] = Utils.validate(x4 || 0.0); + this.m[4] = Utils.validate(y1 || 0.0); + this.m[5] = Utils.validate(y2 || 0.0); + this.m[6] = Utils.validate(y3 || 0.0); + this.m[7] = Utils.validate(y4 || 0.0); + this.m[8] = Utils.validate(z1 || 0.0); + this.m[9] = Utils.validate(z2 || 0.0); + this.m[10] = Utils.validate(z3 || 0.0); + this.m[11] = Utils.validate(z4 || 0.0); + this.m[12] = Utils.validate(t1 || 0.0); + this.m[13] = Utils.validate(t2 || 0.0); + this.m[14] = Utils.validate(t3 || 0.0); + this.m[15] = Utils.validate(t4 || 0.0); + } + }, { + key: 'copy', value: function copy(matrix4x4) { var m = matrix4x4.m; this.make(m[0], m[1], m[2], m[3], m[4], m[5], m[6], m[7], m[8], m[9], m[10], m[11], m[12], m[13], m[14], m[15]); return this; } }, { - key: "toArray", + key: 'toArray', value: function toArray() { return this.m; } }, { - key: "toString", + key: 'toString', value: function toString() { return '(' + this.m[0] + ',' + this.m[1] + ',' + this.m[2] + ',' + this.m[3] + ';' + this.m[4] + ',' + this.m[5] + ',' + this.m[6] + ',' + this.m[7] + ';' + this.m[8] + ',' + this.m[9] + ',' + this.m[10] + ',' + this.m[11] + ';' + this.m[12] + ',' + this.m[13] + ',' + this.m[14] + ',' + this.m[15] + ')'; } }, { - key: "identity", + key: 'identity', value: function identity() { this.make(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0); return this; } }, { - key: "scale", + key: 'scale', value: function scale(vector3) { this.make(vector3.x, 0.0, 0.0, 0.0, 0.0, vector3.y, 0.0, 0.0, 0.0, 0.0, vector3.z, 0.0, 0.0, 0.0, 0.0, 1.0); return this; } }, { - key: "rotateX", + key: 'rotateX', value: function rotateX(angle) { var cos = Trigonometry.cosine(angle); var sin = Trigonometry.sine(angle); @@ -1581,7 +1566,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "rotateY", + key: 'rotateY', value: function rotateY(angle) { var cos = Trigonometry.cosine(angle); var sin = Trigonometry.sine(angle); @@ -1589,7 +1574,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "rotateZ", + key: 'rotateZ', value: function rotateZ(angle) { var cos = Trigonometry.cosine(angle); var sin = Trigonometry.sine(angle); @@ -1597,13 +1582,13 @@ var Roostr = (function (exports) { return this; } }, { - key: "translate", + key: 'translate', value: function translate(vector3) { this.make(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, vector3.x, vector3.y, vector3.z, 1.0); return this; } }, { - key: "multiply", + key: 'multiply', value: function multiply(matrix4x4) { var m1 = this.m; var m2 = matrix4x4.m; @@ -1611,7 +1596,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "perspective", + key: 'perspective', value: function perspective(fovy, aspect, znear, zfar) { var f = Math.tan(Trigonometry.halfpi - 0.5 * fovy * Trigonometry.pi / 180); var rangeInv = 1.0 / (znear - zfar); @@ -1619,7 +1604,7 @@ var Roostr = (function (exports) { return this; } }, { - key: "orthographic", + key: 'orthographic', value: function orthographic(left, right, top, bottom, near, far) { var w = right - left; var h = top - bottom; @@ -1636,7 +1621,7 @@ var Roostr = (function (exports) { }(); var SceneGraph = function () { - function SceneGraph(context) { + function SceneGraph() { this.model = [new Matrix4x3()]; this.model[0].identity(); this.nbModel = this.model.length; @@ -1665,7 +1650,7 @@ var Roostr = (function (exports) { /** MIT License * - * Copyright (c) 2010 Ludovic CLUBER + * Copyright (c) 2015 Ludovic CLUBER * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -1685,93 +1670,165 @@ var Roostr = (function (exports) { * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * - * http://aiasjs.lcluber.com + * http://mouettejs.lcluber.com */ - var HTTP = function () { - function HTTP() { - _classCallCheck$1(this, HTTP); + var LEVELS = [{ id: 1, name: 'info' }, { id: 2, name: 'trace' }, { id: 3, name: 'warn' }, { id: 4, name: 'error' }, { id: 99, name: 'off' }]; + + var Message = function () { + function Message(levelName, content) { + _classCallCheck$1(this, Message); + + this.setLevel(levelName); + this.content = content; } - _createClass$1(HTTP, null, [{ - key: 'get', - value: function get(url) { - return this.call('GET', url); + _createClass$1(Message, [{ + key: 'setLevel', + value: function setLevel(name) { + this.level = this.findLevel(name); } }, { - key: 'head', - value: function head(url) { - return this.call('HEAD', url); + key: 'getLevelId', + value: function getLevelId() { + return this.level.id; } }, { - key: 'post', - value: function post(url) { - return this.call('POST', url); + key: 'display', + value: function display() { + console[this.level.name](this.content); } }, { - key: 'put', - value: function put(url) { - return this.call('PUT', url); + key: 'findLevel', + value: function findLevel(name) { + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + + try { + for (var _iterator = LEVELS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var level = _step.value; + + if (level.name === name) { + return level; + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } + } + + return this.level ? this.level : LEVELS[0]; + } + }]); + + return Message; + }(); + + var Logger = function () { + function Logger() { + _classCallCheck$1(this, Logger); + } + + _createClass$1(Logger, [{ + key: 'level', + set: function set(name) { + Logger._level = Logger.findLevel(name); + }, + get: function get() { + return Logger._level.name; + } + }], [{ + key: 'info', + value: function info(text) { + Logger.log('info', text); } }, { - key: 'delete', - value: function _delete(url) { - return this.call('DELETE', url); + key: 'trace', + value: function trace(text) { + Logger.log('trace', text); } }, { - key: 'connect', - value: function connect(url) { - return this.call('CONNECT', url); + key: 'time', + value: function time(text) { + Logger.log('time', text); } }, { - key: 'options', - value: function options(url) { - return this.call('OPTIONS', url); + key: 'warn', + value: function warn(text) { + Logger.log('warn', text); } }, { - key: 'trace', - value: function trace(url) { - return this.call('TRACE', url); + key: 'error', + value: function error(text) { + Logger.log('error', text); } }, { - key: 'patch', - value: function patch(url) { - return this.call('PATCH', url); + key: 'log', + value: function log(levelName, content) { + Logger.addMessage(levelName, content); + var message = this.messages[this.nbMessages - 1]; + if (this._level.id <= message.getLevelId()) { + message.display(); + } } }, { - key: 'call', - value: function call(method, url) { - var _this = this; + key: 'addMessage', + value: function addMessage(levelName, content) { + this.messages.push(new Message(levelName, content)); + this.nbMessages++; + } + }, { + key: 'findLevel', + value: function findLevel(name) { + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; - return new Promise(function (resolve, reject) { - var http = new XMLHttpRequest(); - if (_this.noCache) { - url += '?cache=' + new Date().getTime(); + try { + for (var _iterator2 = LEVELS[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var level = _step2.value; + + if (level.name === name) { + return level; + } } - http.open(method, url, _this.async); - http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - http.onreadystatechange = function () { - if (http.readyState == 4) { - if (http.status == 200) { - console.log('xhr done successfully (' + url + ')'); - resolve(http.responseText); - } else { - console.log('error', 'xhr failed (' + url + ')'); - reject(http.status); - } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); } - }; - console.log('xhr processing starting (' + url + ')'); - http.send(); - }); + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + return this._level ? this._level : LEVELS[0]; } }]); - return HTTP; + return Logger; }(); - HTTP.async = true; - HTTP.noCache = false; + Logger._level = Logger.findLevel(LEVELS[0].name); + Logger.messages = []; + Logger.nbMessages = 0; + Logger.target = document.getElementById('Mouette'); var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; @@ -1801,313 +1858,265 @@ var Roostr = (function (exports) { * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * - * http://weejs.lcluber.com + * http://chjs.lcluber.com */ - var Check = function () { - function Check() { - _classCallCheck$2(this, Check); + var Is = function () { + function Is() { + _classCallCheck$2(this, Is); } - _createClass$2(Check, null, [{ - key: 'isJSON', - value: function isJSON(str) { - if (!this.isString(str)) { + _createClass$2(Is, null, [{ + key: 'json', + value: function json(str) { + if (!this.string(str)) { return false; } var json = str.replace(/(\r\n|\n|\r|\t)/gm, ''); try { json = JSON.parse(str); } catch (e) { - console.log(e); + Logger.error(e); return false; } return json; } }, { - key: 'isFunction', - value: function isFunction(func) { + key: 'function', + value: function _function(func) { var getType = {}; return func && getType.toString.call(func) === '[object Function]'; } }, { - key: 'isObject', - value: function isObject(object) { - return object !== null && (typeof object === 'undefined' ? 'undefined' : _typeof(object)) === 'object'; + key: 'object', + value: function object(_object) { + return _object !== null && (typeof _object === 'undefined' ? 'undefined' : _typeof(_object)) === 'object'; } }, { - key: 'isASCII', - value: function isASCII(code, extended) { + key: 'array', + value: function array(_array) { + return _array !== null && _array.constructor === Array; + } + }, { + key: 'ascii', + value: function ascii(code, extended) { return (extended ? /^[\x00-\xFF]*$/ : /^[\x00-\x7F]*$/).test(code); } }, { - key: 'isInteger', - value: function isInteger(value) { + key: 'integer', + value: function integer(value) { return value === parseInt(value, 10); } }, { - key: 'isString', - value: function isString(str) { + key: 'float', + value: function float(value) { + return Number(value) === value && value % 1 !== 0; + } + }, { + key: 'string', + value: function string(str) { return typeof str === 'string'; } }]); - return Check; + return Is; }(); - var Dom = function () { - function Dom() { - _classCallCheck$2(this, Dom); + var _createClass$3 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + function _classCallCheck$3(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + /** MIT License + * + * Copyright (c) 2015 Ludovic CLUBER + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * http://mouettejs.lcluber.com + */ + + var LEVELS$1 = [{ id: 1, name: 'info' }, { id: 2, name: 'trace' }, { id: 3, name: 'warn' }, { id: 4, name: 'error' }, { id: 99, name: 'off' }]; + + var Message$1 = function () { + function Message(levelName, content) { + _classCallCheck$3(this, Message); + + this.setLevel(levelName); + this.content = content; } - _createClass$2(Dom, null, [{ - key: 'scrollToBottom', - value: function scrollToBottom(HtmlElement) { - HtmlElement.scrollTop = HtmlElement.scrollHeight; - } - }, { - key: 'findById', - value: function findById(id) { - return document.getElementById(id); - } - }, { - key: 'showById', - value: function showById(a) { - this.findById(a).style.display = 'block'; - } - }, { - key: 'hideById', - value: function hideById(a) { - this.findById(a).style.display = 'none'; - } - }, { - key: 'showOverflow', - value: function showOverflow() { - document.body.style.overflow = 'visible'; - } - }, { - key: 'hideOverflow', - value: function hideOverflow() { - document.body.style.overflow = 'hidden'; - } - }, { - key: 'getInputValue', - value: function getInputValue(a) { - return this.findById(a).value; + _createClass$3(Message, [{ + key: 'setLevel', + value: function setLevel(name) { + this.level = this.findLevel(name); } }, { - key: 'clearInputValue', - value: function clearInputValue(a) { - this.findById(a).value = ''; + key: 'getLevelId', + value: function getLevelId() { + return this.level.id; } }, { - key: 'focusOn', - value: function focusOn(a) { - this.findById(a).focus(); + key: 'display', + value: function display() { + console[this.level.name](this.content); } }, { - key: 'addHTMLElement', - value: function addHTMLElement(parentElement, childElementType, childElementOptions) { - var newElement = document.createElement(childElementType); - if (childElementOptions !== undefined) { - Object.keys(childElementOptions).forEach(function (key) { - if (key === 'textContent' || key === 'innerHTML') { - newElement[key] = childElementOptions[key]; - } else { - newElement.setAttribute(key, childElementOptions[key]); - } - }); - } - parentElement.appendChild(newElement); - return newElement; - } - }]); - - return Dom; - }(); - - var Bind = function () { - function Bind(element, data) { - _classCallCheck$2(this, Bind); + key: 'findLevel', + value: function findLevel(name) { + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; - this.data = data; - this.element = element; - this.element.value = data; - this.element.addEventListener('change', this, false); - } + try { + for (var _iterator = LEVELS$1[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var level = _step.value; - _createClass$2(Bind, [{ - key: 'handleEvent', - value: function handleEvent(event) { - switch (event.type) { - case 'change': - this.change(this.element.value); + if (level.name === name) { + return level; + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } } - } - }, { - key: 'change', - value: function change(value) { - this.data = value; - this.element.value = value; + + return this.level ? this.level : LEVELS$1[0]; } }]); - return Bind; + return Message; }(); - var String = function () { - function String() { - _classCallCheck$2(this, String); + var Logger$1 = function () { + function Logger() { + _classCallCheck$3(this, Logger); } - _createClass$2(String, null, [{ - key: 'ucfirst', - value: function ucfirst(string) { - return string.charAt(0).toUpperCase() + string.slice(1); + _createClass$3(Logger, [{ + key: 'level', + set: function set(name) { + Logger._level = Logger.findLevel(name); + }, + get: function get() { + return Logger._level.name; + } + }], [{ + key: 'info', + value: function info(text) { + Logger.log('info', text); } }, { - key: 'toASCII', - value: function toASCII(code) { - return code.charCodeAt(0); + key: 'trace', + value: function trace(text) { + Logger.log('trace', text); } - }]); - - return String; - }(); - - var File = function () { - function File() { - _classCallCheck$2(this, File); - } - - _createClass$2(File, null, [{ - key: 'load', - value: function load(path) { - return HTTP.get(path); + }, { + key: 'time', + value: function time(text) { + Logger.log('time', text); } }, { - key: 'removeTrailingSlash', - value: function removeTrailingSlash(path) { - return path.replace(/\/+$/, ''); + key: 'warn', + value: function warn(text) { + Logger.log('warn', text); } }, { - key: 'getName', - value: function getName(path) { - return path.replace(/^.*[\\\/]/, ''); + key: 'error', + value: function error(text) { + Logger.log('error', text); } }, { - key: 'getExtension', - value: function getExtension(path) { - return path.split('.').pop(); + key: 'log', + value: function log(levelName, content) { + Logger.addMessage(levelName, content); + var message = this.messages[this.nbMessages - 1]; + if (this._level.id <= message.getLevelId()) { + message.display(); + } } }, { - key: 'getDirectory', - value: function getDirectory(path) { - return path.replace(/[^\\\/]*$/, ''); + key: 'addMessage', + value: function addMessage(levelName, content) { + this.messages.push(new Message$1(levelName, content)); + this.nbMessages++; } }, { - key: 'checkExtension', - value: function checkExtension(extension, validExtensions) { - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; + key: 'findLevel', + value: function findLevel(name) { + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; try { - for (var _iterator = validExtensions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var validExtension = _step.value; + for (var _iterator2 = LEVELS$1[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var level = _step2.value; - if (extension === validExtension) { - return true; + if (level.name === name) { + return level; } } } catch (err) { - _didIteratorError = true; - _iteratorError = err; + _didIteratorError2 = true; + _iteratorError2 = err; } finally { try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); } } finally { - if (_didIteratorError) { - throw _iteratorError; + if (_didIteratorError2) { + throw _iteratorError2; } } } - return false; - } - }]); - - return File; - }(); - - var Img = function () { - function Img() { - _classCallCheck$2(this, Img); - } - - _createClass$2(Img, null, [{ - key: 'load', - value: function load(path) { - return new Promise(function (resolve, reject) { - var img = new Image(); - img.src = path; - img.name = File.getName(path); - console.log('xhr processing starting (' + path + ')'); - img.addEventListener('load', function () { - console.log('xhr done successfully (' + path + ')'); - resolve(img); - }); - img.addEventListener('error', function () { - console.log('error', 'xhr failed (' + path + ')'); - reject(new Error('xhr failed (' + path + ')')); - }); - }); + return this._level ? this._level : LEVELS$1[0]; } }]); - return Img; + return Logger; }(); - var Sound = function () { - function Sound() { - _classCallCheck$2(this, Sound); - } - - _createClass$2(Sound, null, [{ - key: 'load', - value: function load(path) { - return new Promise(function (resolve, reject) { - var snd = new Audio(); - snd.src = path; - console.log('xhr processing starting (' + path + ')'); - snd.addEventListener('canplaythrough', function () { - console.log('xhr done successfully (' + path + ')'); - resolve(snd); - }, false); - snd.addEventListener('canplay', function () { - console.log('xhr done successfully (' + path + ')'); - resolve(snd); - }, false); - snd.addEventListener('error', function () { - console.log('error', 'xhr failed (' + path + ')'); - reject(new Error('xhr failed (' + path + ')')); - }, false); - }); - } - }]); + Logger$1._level = Logger$1.findLevel(LEVELS$1[0].name); + Logger$1.messages = []; + Logger$1.nbMessages = 0; + Logger$1.target = document.getElementById('Mouette'); - return Sound; - }(); + var _typeof$1 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - var _createClass$3 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + var _createClass$4 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _classCallCheck$3(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + function _classCallCheck$4(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** MIT License * - * Copyright (c) 2010 Ludovic CLUBER + * Copyright (c) 2018 Ludovic CLUBER * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -2127,126 +2136,67 @@ var Roostr = (function (exports) { * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * - * http://aiasjs.lcluber.com + * http://chjs.lcluber.com */ - var HTTP$1 = function () { - function HTTP() { - _classCallCheck$3(this, HTTP); + var Is$1 = function () { + function Is() { + _classCallCheck$4(this, Is); } - _createClass$3(HTTP, null, [{ - key: 'get', - value: function get(url) { - return this.call('GET', url); + _createClass$4(Is, null, [{ + key: 'json', + value: function json(str) { + if (!this.string(str)) { + return false; + } + var json = str.replace(/(\r\n|\n|\r|\t)/gm, ''); + try { + json = JSON.parse(str); + } catch (e) { + Logger$1.error(e); + return false; + } + return json; } }, { - key: 'head', - value: function head(url) { - return this.call('HEAD', url); + key: 'function', + value: function _function(func) { + var getType = {}; + return func && getType.toString.call(func) === '[object Function]'; } }, { - key: 'post', - value: function post(url, data) { - return this.call('POST', url, data); + key: 'object', + value: function object(_object) { + return _object !== null && (typeof _object === 'undefined' ? 'undefined' : _typeof$1(_object)) === 'object'; } }, { - key: 'put', - value: function put(url, data) { - return this.call('PUT', url, data); + key: 'ascii', + value: function ascii(code, extended) { + return (extended ? /^[\x00-\xFF]*$/ : /^[\x00-\x7F]*$/).test(code); } }, { - key: 'delete', - value: function _delete(url) { - return this.call('DELETE', url); + key: 'integer', + value: function integer(value) { + return value === parseInt(value, 10); } }, { - key: 'connect', - value: function connect(url) { - return this.call('CONNECT', url); - } - }, { - key: 'options', - value: function options(url) { - return this.call('OPTIONS', url); - } - }, { - key: 'trace', - value: function trace(url) { - return this.call('TRACE', url); - } - }, { - key: 'patch', - value: function patch(url, data) { - return this.call('PATCH', url, data); - } - }, { - key: 'setHeaders', - value: function setHeaders(headers) { - for (var property in headers) { - if (headers.hasOwnProperty(property)) { - this.headers[property] = headers[property]; - } - } - } - }, { - key: 'call', - value: function call(method, url, data) { - var _this = this; - - return new Promise(function (resolve, reject) { - var http = new XMLHttpRequest(); - if (_this.noCache) { - url += '?cache=' + new Date().getTime(); - } - http.open(method, url, _this.async); - for (var property in _this.headers) { - if (_this.headers.hasOwnProperty(property)) { - http.setRequestHeader(property, _this.headers[property]); - } - } - http.onreadystatechange = function () { - if (http.readyState == 4) { - if (http.status == 200) { - console.log('xhr done successfully (' + url + ')'); - resolve(http.responseText); - } else { - console.log('error', 'xhr failed (' + url + ')'); - reject(http.status); - } - } - }; - console.log('xhr processing starting (' + url + ')'); - if (data == undefined) { - http.send(); - return; - } - if (Check.isObject(data)) { - data = JSON.stringify(data); - } - http.send(data); - }); + key: 'string', + value: function string(str) { + return typeof str === 'string'; } }]); - return HTTP; + return Is; }(); - HTTP$1.async = true; - HTTP$1.noCache = false; - HTTP$1.headers = { - 'Content-Type': 'application/json' - }; - - var _typeof$1 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - - var _createClass$4 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + var _createClass$5 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _classCallCheck$4(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + function _classCallCheck$5(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** MIT License * - * Copyright (c) 2018 Ludovic CLUBER + * Copyright (c) 2010 Ludovic CLUBER * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -2266,860 +2216,124 @@ var Roostr = (function (exports) { * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * - * http://weejs.lcluber.com + * http://aiasjs.lcluber.com */ - var Check$1 = function () { - function Check() { - _classCallCheck$4(this, Check); - } - - _createClass$4(Check, null, [{ - key: 'isJSON', - value: function isJSON(str) { - if (!this.isString(str)) { - return false; - } - var json = str.replace(/(\r\n|\n|\r|\t)/gm, ''); - try { - json = JSON.parse(str); - } catch (e) { - console.log(e); - return false; - } - return json; - } - }, { - key: 'isFunction', - value: function isFunction(func) { - var getType = {}; - return func && getType.toString.call(func) === '[object Function]'; - } - }, { - key: 'isObject', - value: function isObject(object) { - return object !== null && (typeof object === 'undefined' ? 'undefined' : _typeof$1(object)) === 'object'; - } - }, { - key: 'isASCII', - value: function isASCII(code, extended) { - return (extended ? /^[\x00-\xFF]*$/ : /^[\x00-\x7F]*$/).test(code); - } - }, { - key: 'isInteger', - value: function isInteger(value) { - return value === parseInt(value, 10); - } - }, { - key: 'isString', - value: function isString(str) { - return typeof str === 'string'; - } - }]); - - return Check; - }(); - - var Dom$1 = function () { - function Dom() { - _classCallCheck$4(this, Dom); + var HTTP = function () { + function HTTP() { + _classCallCheck$5(this, HTTP); } - _createClass$4(Dom, null, [{ - key: 'scrollToBottom', - value: function scrollToBottom(HtmlElement) { - HtmlElement.scrollTop = HtmlElement.scrollHeight; + _createClass$5(HTTP, null, [{ + key: 'get', + value: function get(url) { + return this.call('GET', url); } }, { - key: 'findById', - value: function findById(id) { - return document.getElementById(id); + key: 'head', + value: function head(url) { + return this.call('HEAD', url); } }, { - key: 'showById', - value: function showById(a) { - this.findById(a).style.display = 'block'; + key: 'post', + value: function post(url, data) { + return this.call('POST', url, data); } }, { - key: 'hideById', - value: function hideById(a) { - this.findById(a).style.display = 'none'; + key: 'put', + value: function put(url, data) { + return this.call('PUT', url, data); } }, { - key: 'showOverflow', - value: function showOverflow() { - document.body.style.overflow = 'visible'; + key: 'delete', + value: function _delete(url) { + return this.call('DELETE', url); } }, { - key: 'hideOverflow', - value: function hideOverflow() { - document.body.style.overflow = 'hidden'; + key: 'connect', + value: function connect(url) { + return this.call('CONNECT', url); } }, { - key: 'getInputValue', - value: function getInputValue(a) { - return this.findById(a).value; + key: 'options', + value: function options(url) { + return this.call('OPTIONS', url); } }, { - key: 'clearInputValue', - value: function clearInputValue(a) { - this.findById(a).value = ''; + key: 'trace', + value: function trace(url) { + return this.call('TRACE', url); } }, { - key: 'focusOn', - value: function focusOn(a) { - this.findById(a).focus(); + key: 'patch', + value: function patch(url, data) { + return this.call('PATCH', url, data); } }, { - key: 'addHTMLElement', - value: function addHTMLElement(parentElement, childElementType, childElementOptions) { - var newElement = document.createElement(childElementType); - if (childElementOptions !== undefined) { - Object.keys(childElementOptions).forEach(function (key) { - if (key === 'textContent' || key === 'innerHTML') { - newElement[key] = childElementOptions[key]; - } else { - newElement.setAttribute(key, childElementOptions[key]); - } - }); - } - parentElement.appendChild(newElement); - return newElement; - } - }]); - - return Dom; - }(); - - var Bind$1 = function () { - function Bind(element, data) { - _classCallCheck$4(this, Bind); - - this.data = data; - this.element = element; - this.element.value = data; - this.element.addEventListener('change', this, false); - } - - _createClass$4(Bind, [{ - key: 'handleEvent', - value: function handleEvent(event) { - switch (event.type) { - case 'change': - this.change(this.element.value); + key: 'setHeaders', + value: function setHeaders(headers) { + for (var property in headers) { + if (headers.hasOwnProperty(property)) { + this.headers[property] = headers[property]; + } } } }, { - key: 'change', - value: function change(value) { - this.data = value; - this.element.value = value; - } - }]); - - return Bind; - }(); - - var String$1 = function () { - function String() { - _classCallCheck$4(this, String); - } - - _createClass$4(String, null, [{ - key: 'ucfirst', - value: function ucfirst(string) { - return string.charAt(0).toUpperCase() + string.slice(1); - } - }, { - key: 'toASCII', - value: function toASCII(code) { - return code.charCodeAt(0); - } - }]); - - return String; - }(); - - var File$1 = function () { - function File() { - _classCallCheck$4(this, File); - } - - _createClass$4(File, null, [{ - key: 'load', - value: function load(path) { - return HTTP$1.get(path); - } - }, { - key: 'removeTrailingSlash', - value: function removeTrailingSlash(path) { - return path.replace(/\/+$/, ''); - } - }, { - key: 'getName', - value: function getName(path) { - return path.replace(/^.*[\\\/]/, ''); - } - }, { - key: 'getExtension', - value: function getExtension(path) { - return path.split('.').pop(); - } - }, { - key: 'getDirectory', - value: function getDirectory(path) { - return path.replace(/[^\\\/]*$/, ''); - } - }, { - key: 'checkExtension', - value: function checkExtension(extension, validExtensions) { - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = validExtensions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var validExtension = _step.value; + key: 'call', + value: function call(method, url, data) { + var _this = this; - if (extension === validExtension) { - return true; + return new Promise(function (resolve, reject) { + var http = new XMLHttpRequest(); + if (_this.noCache) { + url += '?cache=' + new Date().getTime(); + } + http.open(method, url, _this.async); + for (var property in _this.headers) { + if (_this.headers.hasOwnProperty(property)) { + http.setRequestHeader(property, _this.headers[property]); } } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - return false; - } - }]); - - return File; - }(); - - /** MIT License - * - * Copyright (c) 2011 Ludovic CLUBER - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * http://weejs.lcluber.com - */ - - var Dom$1$1 = function () { - function Dom$1() { - _classCallCheck$4(this, Dom$1); - } - - _createClass$4(Dom$1, null, [{ - key: 'scrollToBottom', - value: function scrollToBottom(HtmlElement) { - HtmlElement.scrollTop = HtmlElement.scrollHeight; - } - }, { - key: 'findById', - value: function findById(id) { - return document.getElementById(id); - } - }, { - key: 'showById', - value: function showById(a) { - this.findById(a).style.display = 'block'; - } - }, { - key: 'hideById', - value: function hideById(a) { - this.findById(a).style.display = 'none'; - } - }, { - key: 'showOverflow', - value: function showOverflow() { - document.body.style.overflow = 'visible'; - } - }, { - key: 'hideOverflow', - value: function hideOverflow() { - document.body.style.overflow = 'hidden'; - } - }, { - key: 'getInputValue', - value: function getInputValue(a) { - return this.findById(a).value; - } - }, { - key: 'clearInputValue', - value: function clearInputValue(a) { - this.findById(a).value = ''; - } - }, { - key: 'focusOn', - value: function focusOn(a) { - this.findById(a).focus(); - } - }, { - key: 'addHTMLElement', - value: function addHTMLElement(parentElement, childElementType, childElementOptions) { - var newElement = document.createElement(childElementType); - if (childElementOptions !== undefined) { - Object.keys(childElementOptions).forEach(function (key) { - if (key === 'textContent') { - newElement.textContent = childElementOptions[key]; - } else { - newElement.setAttribute(key, childElementOptions[key]); - } - }); - } - parentElement.appendChild(newElement); - return newElement; - } - }]); - - return Dom$1; - }(); - - /** MIT License - * - * Copyright (c) 2015 Ludovic CLUBER - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - * - * http://mouettejs.lcluber.com - */ - - var LEVELS = [{ id: 1, name: 'info' }, { id: 2, name: 'trace' }, { id: 3, name: 'warn' }, { id: 4, name: 'error' }, { id: 99, name: 'off' }]; - - var Message = function () { - function Message(levelName, content) { - _classCallCheck$4(this, Message); - - this.setLevel(levelName); - this.content = content; - } - - _createClass$4(Message, [{ - key: 'setLevel', - value: function setLevel(name) { - this.level = this.findLevel(name); - } - }, { - key: 'getLevelId', - value: function getLevelId() { - return this.level.id; - } - }, { - key: 'display', - value: function display() { - console[this.level.name](this.content); - } - }, { - key: 'findLevel', - value: function findLevel(name) { - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = LEVELS[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var level = _step2.value; - - if (level.name === name) { - return level; - } - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } - } - - return this.level ? this.level : LEVELS[0]; - } - }]); - - return Message; - }(); - - var Logger = function () { - function Logger() { - _classCallCheck$4(this, Logger); - } - - _createClass$4(Logger, [{ - key: 'level', - set: function set(name) { - Logger._level = Logger.findLevel(name); - }, - get: function get() { - return Logger._level.name; - } - }], [{ - key: 'info', - value: function info(text) { - Logger.log('info', text); - } - }, { - key: 'trace', - value: function trace(text) { - Logger.log('trace', text); - } - }, { - key: 'time', - value: function time(text) { - Logger.log('time', text); - } - }, { - key: 'warn', - value: function warn(text) { - Logger.log('warn', text); - } - }, { - key: 'error', - value: function error(text) { - Logger.log('error', text); - } - }, { - key: 'log', - value: function log(levelName, content) { - Logger.addMessage(levelName, content); - var message = this.messages[this.nbMessages - 1]; - if (this._level.id <= message.getLevelId()) { - message.display(); - } - } - }, { - key: 'addMessage', - value: function addMessage(levelName, content) { - this.messages.push(new Message(levelName, content)); - this.nbMessages++; - } - }, { - key: 'findLevel', - value: function findLevel(name) { - var _iteratorNormalCompletion3 = true; - var _didIteratorError3 = false; - var _iteratorError3 = undefined; - - try { - for (var _iterator3 = LEVELS[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { - var level = _step3.value; - - if (level.name === name) { - return level; - } - } - } catch (err) { - _didIteratorError3 = true; - _iteratorError3 = err; - } finally { - try { - if (!_iteratorNormalCompletion3 && _iterator3.return) { - _iterator3.return(); - } - } finally { - if (_didIteratorError3) { - throw _iteratorError3; - } - } - } - - return this._level ? this._level : LEVELS[0]; - } - }]); - - return Logger; - }(); - - Logger._level = Logger.findLevel(LEVELS[0].name); - Logger.messages = []; - Logger.nbMessages = 0; - Logger.target = Dom$1$1.findById('Mouette'); - - var Img$1 = function () { - function Img$1() { - _classCallCheck$4(this, Img$1); - } - - _createClass$4(Img$1, null, [{ - key: 'load', - value: function load(path) { - return new Promise(function (resolve, reject) { - var img = new Image(); - img.src = path; - img.name = File$1.getName(path); - Logger.info('xhr processing starting (' + path + ')'); - img.addEventListener('load', function () { - Logger.info('xhr done successfully (' + path + ')'); - resolve(img); - }); - img.addEventListener('error', function () { - Logger.error('xhr failed (' + path + ')'); - reject(new Error('xhr failed (' + path + ')')); - }); - }); - } - }]); - - return Img$1; - }(); - - var Sound$1 = function () { - function Sound$1() { - _classCallCheck$4(this, Sound$1); - } - - _createClass$4(Sound$1, null, [{ - key: 'load', - value: function load(path) { - return new Promise(function (resolve, reject) { - var snd = new Audio(); - snd.src = path; - Logger.info('xhr processing starting (' + path + ')'); - snd.addEventListener('canplaythrough', function () { - Logger.info('xhr done successfully (' + path + ')'); - resolve(snd); - }, false); - snd.addEventListener('canplay', function () { - Logger.info('xhr done successfully (' + path + ')'); - resolve(snd); - }, false); - snd.addEventListener('error', function () { - Logger.error('xhr failed (' + path + ')'); - reject(new Error('xhr failed (' + path + ')')); - }, false); - }); - } - }]); - - return Sound$1; - }(); - - var Lights = function () { - function Lights() { - this.directionals = []; - this.points = []; - this.spots = []; - this.nbDirectionals = 0; - this.nbPoints = 0; - this.nbSpots = 0; - this.flatArrays = { - position: [], - diffuse: [], - specular: [], - constantAttenuation: [], - linearAttenuation: [], - quadraticAttenuation: [], - cutoff: [], - exponent: [], - direction: [], - type: [] - }; - this.types = ['spots', 'points', 'directionals']; - this.nbTypes = 3; - } - Lights.prototype.addLight = function (light) { - var type = light.type; - this[type + 's'].push(light); - this['nb' + String$1.ucfirst(type) + 's']++; - }; - Lights.prototype.ClearFlatArrays = function () { - for (var property in this.flatArrays) { - if (this.flatArrays.hasOwnProperty(property)) { - this.flatArrays[property].length = 0; - } - } - }; - Lights.prototype.flatten = function () { - this.ClearFlatArrays(); - for (var i = 0; i < this.nbTypes; i++) { - var type = this.types[i]; - for (var j = 0; j < this['nb' + String$1.ucfirst(type)]; j++) { - for (var property in this.flatArrays) { - if (this[type][j].hasOwnProperty(property) && this.flatArrays.hasOwnProperty(property)) { - var lightProperty = this[type][j][property]; - var flatArraysProperty = this.flatArrays[property]; - if (typeof lightProperty.toArray === 'function') { - flatArraysProperty.push.apply(flatArraysProperty, lightProperty.toArray()); + http.onreadystatechange = function () { + if (http.readyState == 4) { + if (http.status == 200) { + Logger$1.info('xhr done successfully (' + url + ')'); + resolve(http.responseText); } else { - flatArraysProperty.push(lightProperty); + Logger$1.error('xhr failed (' + url + ')'); + reject(http.status); } } + }; + Logger$1.info('xhr processing starting (' + url + ')'); + if (data == undefined) { + http.send(); + return; } - } - } - return this.flatArrays; - }; - Lights.prototype.getFlatArray = function (property) { - if (this.flatArrays.hasOwnProperty(property)) { - return this.flatArrays[property]; - } - }; - return Lights; - }(); - - var Scene = function () { - function Scene(context) { - this.meshes = []; - this.nbMeshes = 0; - this.lights = new Lights(); - this.context = context; - this.renderer = new SceneRenderer(this.context); - this.graph = new SceneGraph(context); - } - Scene.prototype.addMesh = function (mesh) { - this.meshes.push(mesh); - this.nbMeshes++; - }; - Scene.prototype.addLight = function (light) { - this.lights.addLight(light); - }; - Scene.prototype.clearMeshes = function () { - this.meshes = []; - this.nbMeshes = 0; - }; - Scene.prototype.getLightsProperty = function (property) { - return this.lights.getFlatArray(property); - }; - Scene.prototype.enableBlendMode = function (equation, source, destination) { - this.renderer.enableBlendMode(equation, source, destination); - }; - Scene.prototype.disableBlendMode = function () { - this.renderer.disableBlendMode(); - }; - Scene.prototype.getRendererBlendMode = function () { - return this.renderer.getParameter(this.context.BLEND); - }; - Scene.prototype.render = function (camera, time) { - this.computeWorldMatrices(); - this.lights.flatten(); - this.disableBlendMode(); - for (var _i = 0, _a = this.meshes; _i < _a.length; _i++) { - var mesh = _a[_i]; - mesh.render(camera.getProjectionMatrix(), camera.getViewMatrix(), this.lights.flatten(), time, false); - } - this.renderBlended(camera, time); - }; - Scene.prototype.computeWorldMatrices = function () { - for (var _i = 0, _a = this.meshes; _i < _a.length; _i++) { - var mesh = _a[_i]; - mesh.computeWorldMatrix(this.graph); - } - }; - Scene.prototype.renderBlended = function (camera, time) { - this.enableBlendMode('FUNC_ADD', 'SRC_ALPHA', 'ONE'); - for (var _i = 0, _a = this.meshes; _i < _a.length; _i++) { - var mesh = _a[_i]; - mesh.render(camera.getProjectionMatrix(), camera.getViewMatrix(), this.lights.flatten(), time, true); - } - }; - return Scene; - }(); - - var Renderer = function () { - function Renderer(canvasID) { - this.canvas = Dom$1.findById(canvasID); - this.canvas.width = 1280; - this.canvas.height = 720; - this.context = this.canvas.getContext("webgl") || this.canvas.getContext("experimental-webgl", { alpha: false }); - this.defaultSettings(); - } - Renderer.prototype.defaultSettings = function () { - this.context.getExtension('OES_standard_derivatives'); - this.setFrontFace('CW'); - this.enable('CULL_FACE'); - this.setCullFace('BACK'); - this.setViewport(this.context.drawingBufferWidth, this.context.drawingBufferHeight); - this.setClearColor(0.0, 0.0, 0.0, 1.0); - }; - Renderer.prototype.setFrontFace = function (mode) { - this.context.frontFace(this.context[mode]); - }; - Renderer.prototype.enable = function (capability) { - this.context.enable(this.context[capability]); - }; - Renderer.prototype.disable = function (capability) { - this.context.disable(this.context[capability]); - }; - Renderer.prototype.setCullFace = function (mode) { - this.context.cullFace(this.context[mode]); - }; - Renderer.prototype.setViewport = function (width, height) { - this.context.viewport(0, 0, width, height); - }; - Renderer.prototype.setClearColor = function (red, green, blue, alpha) { - this.context.clearColor(red, green, blue, alpha); - }; - Renderer.prototype.clearFrame = function () { - this.context.clear(this.context.COLOR_BUFFER_BIT | this.context.DEPTH_BUFFER_BIT); - }; - Renderer.prototype.getContext = function () { - return this.context; - }; - return Renderer; - }(); - - var Camera = function () { - function Camera(position, target, up) { - this.viewMatrix = new Matrix4x3(); - this.projectionMatrix = new Matrix4x4(); - this.position = position; - this.target = target; - this.up = up; - } - Camera.prototype.setViewMatrix = function () { - this.viewMatrix.lookAtRH(this.position, this.target, this.up); - }; - Camera.prototype.setPosition = function (vector3) { - this.position.copy(vector3); - this.setViewMatrix(); - }; - Camera.prototype.setTarget = function (vector3) { - this.target.copy(vector3); - this.setViewMatrix(); - }; - Camera.prototype.setUp = function (vector3) { - this.up.copy(vector3); - this.setViewMatrix(); - }; - Camera.prototype.getViewMatrix = function () { - return this.viewMatrix.toArray(); - }; - Camera.prototype.getProjectionMatrix = function () { - return this.projectionMatrix.toArray(); - }; - return Camera; - }(); - - var __extends = undefined && undefined.__extends || function () { - var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) { - if (b.hasOwnProperty(p)) d[p] = b[p]; - } - }; - return function (d, b) { - extendStatics(d, b); - function __() { - this.constructor = d; - } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; - }(); - var PerspectiveCamera = function (_super) { - __extends(PerspectiveCamera, _super); - function PerspectiveCamera(fov, zNear, zFar, context) { - var _this = _super.call(this, new Vector3(), new Vector3(), new Vector3(0.0, 1.0, 0.0)) || this; - _this.fov = fov; - _this.ratio = 0; - _this.zNear = zNear; - _this.zFar = zFar; - _this.setProjectionMatrix(context.getParameter(context.VIEWPORT)); - _super.prototype.setViewMatrix.call(_this); - return _this; - } - PerspectiveCamera.prototype.setProjectionMatrix = function (viewport) { - this.ratio = viewport[2] / Math.max(1, viewport[3]); - this.projectionMatrix.perspective(this.fov, this.ratio, this.zNear, this.zFar); - }; - return PerspectiveCamera; - }(Camera); - - var __extends$1 = undefined && undefined.__extends || function () { - var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) { - if (b.hasOwnProperty(p)) d[p] = b[p]; - } - }; - return function (d, b) { - extendStatics(d, b); - function __() { - this.constructor = d; + if (Is$1.object(data)) { + data = JSON.stringify(data); + } + http.send(data); + }); } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); - }; + }]); + + return HTTP; }(); - var OrthographicCamera = function (_super) { - __extends$1(OrthographicCamera, _super); - function OrthographicCamera(left, right, top, bottom, near, far) { - var _this = _super.call(this, new Vector3(), new Vector3(), new Vector3(0.0, 1.0, 0.0)) || this; - _this.left = left; - _this.right = right; - _this.top = top; - _this.bottom = bottom; - _this.near = near; - _this.far = far; - _this.setProjectionMatrix(); - _super.prototype.setViewMatrix.call(_this); - return _this; - } - OrthographicCamera.prototype.setProjectionMatrix = function () { - this.projectionMatrix.orthographic(this.left, this.right, this.top, this.bottom, this.near, this.far); - }; - return OrthographicCamera; - }(Camera); - var _typeof$2 = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + HTTP.async = true; + HTTP.noCache = false; + HTTP.headers = { + 'Content-Type': 'application/json' + }; - var _createClass$5 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + var _createClass$6 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _classCallCheck$5(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + function _classCallCheck$6(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** MIT License * - * Copyright (c) 2011 Ludovic CLUBER + * Copyright (c) 2015 Ludovic CLUBER * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -3139,76 +2353,243 @@ var Roostr = (function (exports) { * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * - * http://weejs.lcluber.com + * http://mouettejs.lcluber.com */ - var Check$2 = function () { - function Check() { - _classCallCheck$5(this, Check); + var LEVELS$2 = [{ id: 1, name: 'info' }, { id: 2, name: 'trace' }, { id: 3, name: 'warn' }, { id: 4, name: 'error' }, { id: 99, name: 'off' }]; + + var Message$2 = function () { + function Message(levelName, content) { + _classCallCheck$6(this, Message); + + this.setLevel(levelName); + this.content = content; } - _createClass$5(Check, null, [{ - key: 'isJSON', - value: function isJSON(str) { - var json = str.replace(/(\r\n|\n|\r|\t)/gm, ''); + _createClass$6(Message, [{ + key: 'setLevel', + value: function setLevel(name) { + this.level = this.findLevel(name); + } + }, { + key: 'getLevelId', + value: function getLevelId() { + return this.level.id; + } + }, { + key: 'display', + value: function display() { + console[this.level.name](this.content); + } + }, { + key: 'findLevel', + value: function findLevel(name) { + var _iteratorNormalCompletion = true; + var _didIteratorError = false; + var _iteratorError = undefined; + try { - json = JSON.parse(str); - } catch (e) { - console.log(e); - return false; + for (var _iterator = LEVELS$2[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { + var level = _step.value; + + if (level.name === name) { + return level; + } + } + } catch (err) { + _didIteratorError = true; + _iteratorError = err; + } finally { + try { + if (!_iteratorNormalCompletion && _iterator.return) { + _iterator.return(); + } + } finally { + if (_didIteratorError) { + throw _iteratorError; + } + } } - return json; + + return this.level ? this.level : LEVELS$2[0]; + } + }]); + + return Message; + }(); + + var Logger$2 = function () { + function Logger() { + _classCallCheck$6(this, Logger); + } + + _createClass$6(Logger, [{ + key: 'level', + set: function set(name) { + Logger._level = Logger.findLevel(name); + }, + get: function get() { + return Logger._level.name; + } + }], [{ + key: 'info', + value: function info(text) { + Logger.log('info', text); } }, { - key: 'isFunction', - value: function isFunction(func) { - var getType = {}; - return func && getType.toString.call(func) === '[object Function]'; + key: 'trace', + value: function trace(text) { + Logger.log('trace', text); } }, { - key: 'isObject', - value: function isObject(object) { - return object !== null && (this.isFunction(object) || (typeof object === 'undefined' ? 'undefined' : _typeof$2(object)) === 'object'); + key: 'time', + value: function time(text) { + Logger.log('time', text); } }, { - key: 'isASCII', - value: function isASCII(code, extended) { - return (extended ? /^[\x00-\xFF]*$/ : /^[\x00-\x7F]*$/).test(code); + key: 'warn', + value: function warn(text) { + Logger.log('warn', text); } }, { - key: 'isInteger', - value: function isInteger(value) { - return value === parseInt(value, 10); + key: 'error', + value: function error(text) { + Logger.log('error', text); + } + }, { + key: 'log', + value: function log(levelName, content) { + Logger.addMessage(levelName, content); + var message = this.messages[this.nbMessages - 1]; + if (this._level.id <= message.getLevelId()) { + message.display(); + } + } + }, { + key: 'addMessage', + value: function addMessage(levelName, content) { + this.messages.push(new Message$2(levelName, content)); + this.nbMessages++; + } + }, { + key: 'findLevel', + value: function findLevel(name) { + var _iteratorNormalCompletion2 = true; + var _didIteratorError2 = false; + var _iteratorError2 = undefined; + + try { + for (var _iterator2 = LEVELS$2[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { + var level = _step2.value; + + if (level.name === name) { + return level; + } + } + } catch (err) { + _didIteratorError2 = true; + _iteratorError2 = err; + } finally { + try { + if (!_iteratorNormalCompletion2 && _iterator2.return) { + _iterator2.return(); + } + } finally { + if (_didIteratorError2) { + throw _iteratorError2; + } + } + } + + return this._level ? this._level : LEVELS$2[0]; } }]); - return Check; + return Logger; }(); - var Dom$2 = function () { + Logger$2._level = Logger$2.findLevel(LEVELS$2[0].name); + Logger$2.messages = []; + Logger$2.nbMessages = 0; + Logger$2.target = document.getElementById('Mouette'); + + var _createClass$7 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + + function _classCallCheck$7(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + + /** MIT License + * + * Copyright (c) 2018 Ludovic CLUBER + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * http://weejs.lcluber.com + */ + + var Dom = function () { function Dom() { - _classCallCheck$5(this, Dom); + _classCallCheck$7(this, Dom); } - _createClass$5(Dom, null, [{ + _createClass$7(Dom, null, [{ key: 'scrollToBottom', value: function scrollToBottom(HtmlElement) { HtmlElement.scrollTop = HtmlElement.scrollHeight; } + }, { + key: 'scrollToTop', + value: function scrollToTop(HtmlElement) { + HtmlElement.scrollTop = 0; + } }, { key: 'findById', value: function findById(id) { return document.getElementById(id); } }, { - key: 'showById', - value: function showById(a) { - this.findById(a).style.display = 'block'; + key: 'findByClass', + value: function findByClass(className) { + return this.arrayFrom(document.getElementsByClassName(className)); + } + }, { + key: 'findByTag', + value: function findByTag(tagName) { + return this.arrayFrom(document.getElementsByTagName(tagName)); + } + }, { + key: 'showElement', + value: function showElement(element) { + return this.styleElement(element, 'display', 'block'); + } + }, { + key: 'hideElement', + value: function hideElement(element) { + return this.styleElement(element, 'display', 'none'); } }, { - key: 'hideById', - value: function hideById(a) { - this.findById(a).style.display = 'none'; + key: 'styleElement', + value: function styleElement(element, parameter, value) { + element = this.checkElement(element); + if (element) { + element.style[parameter] = value; + } + return element; } }, { key: 'showOverflow', @@ -3222,43 +2603,82 @@ var Roostr = (function (exports) { } }, { key: 'getInputValue', - value: function getInputValue(a) { - return this.findById(a).value; + value: function getInputValue(element) { + element = this.checkElement(element); + if (element) { + return element.value; + } + return null; } }, { key: 'clearInputValue', - value: function clearInputValue(a) { - this.findById(a).value = ''; + value: function clearInputValue(element) { + element = this.checkElement(element); + if (element) { + element.value = ''; + } + return element; } }, { key: 'focusOn', - value: function focusOn(a) { - this.findById(a).focus(); + value: function focusOn(element) { + element = this.checkElement(element); + if (element) { + element.focus(); + } + return element; } }, { key: 'addHTMLElement', - value: function addHTMLElement(parentElement, childElementType, childElementOptions) { + value: function addHTMLElement(parentElement, childElementType, childElementAttributes) { + parentElement = this.checkElement(parentElement); var newElement = document.createElement(childElementType); - if (childElementOptions !== undefined) { - Object.keys(childElementOptions).forEach(function (key) { - if (key === 'textContent') { - newElement.textContent = childElementOptions[key]; + if (childElementAttributes) { + Object.keys(childElementAttributes).forEach(function (key) { + if (key === 'textContent' || key === 'innerHTML') { + newElement[key] = childElementAttributes[key]; } else { - newElement.setAttribute(key, childElementOptions[key]); + newElement.setAttribute(key, childElementAttributes[key]); } }); } parentElement.appendChild(newElement); return newElement; } + }, { + key: 'clearHTMLElement', + value: function clearHTMLElement(element) { + element = this.checkElement(element); + if (element) { + element.innerHTML = ''; + } + return element; + } + }, { + key: 'arrayFrom', + value: function arrayFrom(HTMLCollection) { + var elements = []; + for (var i = 0; i < HTMLCollection.length; i++) { + elements.push(HTMLCollection[i]); + } + return elements; + } + }, { + key: 'checkElement', + value: function checkElement(element) { + if (Is.string(element)) { + element = this.findById(element); + } + return element; + } }]); return Dom; }(); - var Bind$2 = function () { + var Bind = function () { function Bind(element, data) { - _classCallCheck$5(this, Bind); + _classCallCheck$7(this, Bind); this.data = data; this.element = element; @@ -3266,7 +2686,7 @@ var Roostr = (function (exports) { this.element.addEventListener('change', this, false); } - _createClass$5(Bind, [{ + _createClass$7(Bind, [{ key: 'handleEvent', value: function handleEvent(event) { switch (event.type) { @@ -3285,12 +2705,12 @@ var Roostr = (function (exports) { return Bind; }(); - var String$2 = function () { + var String = function () { function String() { - _classCallCheck$5(this, String); + _classCallCheck$7(this, String); } - _createClass$5(String, null, [{ + _createClass$7(String, null, [{ key: 'ucfirst', value: function ucfirst(string) { return string.charAt(0).toUpperCase() + string.slice(1); @@ -3298,63 +2718,22 @@ var Roostr = (function (exports) { }, { key: 'toASCII', value: function toASCII(code) { - return code.charCodeAt(0); - } - }]); - - return String; - }(); - - var Ajax = function () { - function Ajax() { - _classCallCheck$5(this, Ajax); - } - - _createClass$5(Ajax, null, [{ - key: 'call', - value: function call(url) { - var _this = this; - - return new Promise(function (resolve, reject) { - var http = new XMLHttpRequest(); - if (_this.noCache) { - url += '?cache=' + new Date().getTime(); - } - http.open(_this.method, url, _this.async); - http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); - http.onreadystatechange = function () { - if (http.readyState == 4) { - if (http.status == 200) { - console.log('xhr done successfully (' + url + ')'); - resolve(http.responseText); - } else { - console.log('error', 'xhr failed (' + url + ')'); - reject(http.status); - } - } - }; - console.log('xhr processing starting (' + url + ')'); - http.send(); - }); + return code.charCodeAt(0); } }]); - return Ajax; + return String; }(); - Ajax.method = 'GET'; - Ajax.async = true; - Ajax.noCache = false; - - var File$2 = function () { + var File = function () { function File() { - _classCallCheck$5(this, File); + _classCallCheck$7(this, File); } - _createClass$5(File, null, [{ + _createClass$7(File, null, [{ key: 'load', value: function load(path) { - return Ajax.call(path); + return HTTP.get(path); } }, { key: 'removeTrailingSlash', @@ -3413,25 +2792,25 @@ var Roostr = (function (exports) { return File; }(); - var Img$1$1 = function () { + var Img = function () { function Img() { - _classCallCheck$5(this, Img); + _classCallCheck$7(this, Img); } - _createClass$5(Img, null, [{ + _createClass$7(Img, null, [{ key: 'load', value: function load(path) { return new Promise(function (resolve, reject) { var img = new Image(); img.src = path; - img.name = File$2.getName(path); - console.log('xhr processing starting (' + path + ')'); + img.name = File.getName(path); + Logger$2.info('xhr processing starting (' + path + ')'); img.addEventListener('load', function () { - console.log('xhr done successfully (' + path + ')'); + Logger$2.info('xhr done successfully (' + path + ')'); resolve(img); }); img.addEventListener('error', function () { - console.log('error', 'xhr failed (' + path + ')'); + Logger$2.error('xhr failed (' + path + ')'); reject(new Error('xhr failed (' + path + ')')); }); }); @@ -3441,28 +2820,28 @@ var Roostr = (function (exports) { return Img; }(); - var Sound$1$1 = function () { + var Sound = function () { function Sound() { - _classCallCheck$5(this, Sound); + _classCallCheck$7(this, Sound); } - _createClass$5(Sound, null, [{ + _createClass$7(Sound, null, [{ key: 'load', value: function load(path) { return new Promise(function (resolve, reject) { var snd = new Audio(); snd.src = path; - console.log('xhr processing starting (' + path + ')'); + Logger$2.info('xhr processing starting (' + path + ')'); snd.addEventListener('canplaythrough', function () { - console.log('xhr done successfully (' + path + ')'); + Logger$2.info('xhr done successfully (' + path + ')'); resolve(snd); }, false); snd.addEventListener('canplay', function () { - console.log('xhr done successfully (' + path + ')'); + Logger$2.info('xhr done successfully (' + path + ')'); resolve(snd); }, false); snd.addEventListener('error', function () { - console.log('error', 'xhr failed (' + path + ')'); + Logger$2.error('xhr failed (' + path + ')'); reject(new Error('xhr failed (' + path + ')')); }, false); }); @@ -3472,9 +2851,282 @@ var Roostr = (function (exports) { return Sound; }(); - var _createClass$6 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + var Lights = function () { + function Lights() { + this.directionals = []; + this.points = []; + this.spots = []; + this.nbDirectionals = 0; + this.nbPoints = 0; + this.nbSpots = 0; + this.flatArrays = { + position: [], + diffuse: [], + specular: [], + constantAttenuation: [], + linearAttenuation: [], + quadraticAttenuation: [], + cutoff: [], + exponent: [], + direction: [], + type: [] + }; + this.types = ['spots', 'points', 'directionals']; + this.nbTypes = 3; + } + Lights.prototype.addLight = function (light) { + var type = light.type; + this[type + 's'].push(light); + this['nb' + String.ucfirst(type) + 's']++; + }; + Lights.prototype.ClearFlatArrays = function () { + for (var property in this.flatArrays) { + if (this.flatArrays.hasOwnProperty(property)) { + this.flatArrays[property].length = 0; + } + } + }; + Lights.prototype.flatten = function () { + this.ClearFlatArrays(); + for (var i = 0; i < this.nbTypes; i++) { + var type = this.types[i]; + for (var j = 0; j < this['nb' + String.ucfirst(type)]; j++) { + for (var property in this.flatArrays) { + if (this[type][j].hasOwnProperty(property) && this.flatArrays.hasOwnProperty(property)) { + var lightProperty = this[type][j][property]; + var flatArraysProperty = this.flatArrays[property]; + if (typeof lightProperty.toArray === 'function') { + flatArraysProperty.push.apply(flatArraysProperty, lightProperty.toArray()); + } else { + flatArraysProperty.push(lightProperty); + } + } + } + } + } + return this.flatArrays; + }; + Lights.prototype.getFlatArray = function (property) { + if (this.flatArrays.hasOwnProperty(property)) { + return this.flatArrays[property]; + } + }; + return Lights; + }(); + + var Scene = function () { + function Scene(context) { + this.meshes = []; + this.nbMeshes = 0; + this.lights = new Lights(); + this.context = context; + this.renderer = new SceneRenderer(this.context); + this.graph = new SceneGraph(); + } + Scene.prototype.addMesh = function (mesh) { + this.meshes.push(mesh); + this.nbMeshes++; + }; + Scene.prototype.addLight = function (light) { + this.lights.addLight(light); + }; + Scene.prototype.clearMeshes = function () { + this.meshes = []; + this.nbMeshes = 0; + }; + Scene.prototype.getLightsProperty = function (property) { + return this.lights.getFlatArray(property); + }; + Scene.prototype.enableBlendMode = function (equation, source, destination) { + this.renderer.enableBlendMode(equation, source, destination); + }; + Scene.prototype.disableBlendMode = function () { + this.renderer.disableBlendMode(); + }; + Scene.prototype.getRendererBlendMode = function () { + return this.renderer.getParameter(this.context.BLEND); + }; + Scene.prototype.render = function (camera, time) { + this.computeWorldMatrices(); + this.lights.flatten(); + this.disableBlendMode(); + for (var _i = 0, _a = this.meshes; _i < _a.length; _i++) { + var mesh = _a[_i]; + mesh.render(camera.getProjectionMatrix(), camera.getViewMatrix(), this.lights.flatten(), time, false); + } + this.renderBlended(camera, time); + }; + Scene.prototype.computeWorldMatrices = function () { + for (var _i = 0, _a = this.meshes; _i < _a.length; _i++) { + var mesh = _a[_i]; + mesh.computeWorldMatrix(this.graph); + } + }; + Scene.prototype.renderBlended = function (camera, time) { + this.enableBlendMode('FUNC_ADD', 'SRC_ALPHA', 'ONE'); + for (var _i = 0, _a = this.meshes; _i < _a.length; _i++) { + var mesh = _a[_i]; + mesh.render(camera.getProjectionMatrix(), camera.getViewMatrix(), this.lights.flatten(), time, true); + } + }; + return Scene; + }(); + + var Renderer = function () { + function Renderer(canvasID) { + this.canvas = Dom.findById(canvasID); + this.canvas.width = 1280; + this.canvas.height = 720; + this.context = this.canvas.getContext("webgl") || this.canvas.getContext("experimental-webgl", { alpha: false }); + this.defaultSettings(); + } + Renderer.prototype.defaultSettings = function () { + this.context.getExtension('OES_standard_derivatives'); + this.setFrontFace('CW'); + this.enable('CULL_FACE'); + this.setCullFace('BACK'); + this.setViewport(this.context.drawingBufferWidth, this.context.drawingBufferHeight); + this.setClearColor(0.0, 0.0, 0.0, 1.0); + }; + Renderer.prototype.setFrontFace = function (mode) { + this.context.frontFace(this.context[mode]); + }; + Renderer.prototype.enable = function (capability) { + this.context.enable(this.context[capability]); + }; + Renderer.prototype.disable = function (capability) { + this.context.disable(this.context[capability]); + }; + Renderer.prototype.setCullFace = function (mode) { + this.context.cullFace(this.context[mode]); + }; + Renderer.prototype.setViewport = function (width, height) { + this.context.viewport(0, 0, width, height); + }; + Renderer.prototype.setClearColor = function (red, green, blue, alpha) { + this.context.clearColor(red, green, blue, alpha); + }; + Renderer.prototype.clearFrame = function () { + this.context.clear(this.context.COLOR_BUFFER_BIT | this.context.DEPTH_BUFFER_BIT); + }; + Renderer.prototype.getContext = function () { + return this.context; + }; + return Renderer; + }(); + + var Camera = function () { + function Camera(position, target, up) { + this.viewMatrix = new Matrix4x3(); + this.projectionMatrix = new Matrix4x4(); + this.position = position; + this.target = target; + this.up = up; + } + Camera.prototype.setViewMatrix = function () { + this.viewMatrix.lookAtRH(this.position, this.target, this.up); + }; + Camera.prototype.setPosition = function (vector3) { + this.position.copy(vector3); + this.setViewMatrix(); + }; + Camera.prototype.setTarget = function (vector3) { + this.target.copy(vector3); + this.setViewMatrix(); + }; + Camera.prototype.setUp = function (vector3) { + this.up.copy(vector3); + this.setViewMatrix(); + }; + Camera.prototype.getViewMatrix = function () { + return this.viewMatrix.toArray(); + }; + Camera.prototype.getProjectionMatrix = function () { + return this.projectionMatrix.toArray(); + }; + return Camera; + }(); + + var __extends = undefined && undefined.__extends || function () { + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; + return _extendStatics(d, b); + }; + return function (d, b) { + _extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + }(); + var PerspectiveCamera = function (_super) { + __extends(PerspectiveCamera, _super); + function PerspectiveCamera(fov, zNear, zFar, context) { + var _this = _super.call(this, new Vector3(), new Vector3(), new Vector3(0.0, 1.0, 0.0)) || this; + _this.fov = fov; + _this.ratio = 0; + _this.zNear = zNear; + _this.zFar = zFar; + _this.setProjectionMatrix(context.getParameter(context.VIEWPORT)); + _super.prototype.setViewMatrix.call(_this); + return _this; + } + PerspectiveCamera.prototype.setProjectionMatrix = function (viewport) { + this.ratio = viewport[2] / Math.max(1, viewport[3]); + this.projectionMatrix.perspective(this.fov, this.ratio, this.zNear, this.zFar); + }; + return PerspectiveCamera; + }(Camera); + + var __extends$1 = undefined && undefined.__extends || function () { + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; + return _extendStatics(d, b); + }; + return function (d, b) { + _extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + }(); + var OrthographicCamera = function (_super) { + __extends$1(OrthographicCamera, _super); + function OrthographicCamera(left, right, top, bottom, near, far) { + var _this = _super.call(this, new Vector3(), new Vector3(), new Vector3(0.0, 1.0, 0.0)) || this; + _this.left = left; + _this.right = right; + _this.top = top; + _this.bottom = bottom; + _this.near = near; + _this.far = far; + _this.setProjectionMatrix(); + _super.prototype.setViewMatrix.call(_this); + return _this; + } + OrthographicCamera.prototype.setProjectionMatrix = function () { + this.projectionMatrix.orthographic(this.left, this.right, this.top, this.bottom, this.near, this.far); + }; + return OrthographicCamera; + }(Camera); + + var _createClass$8 = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - function _classCallCheck$6(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + function _classCallCheck$8(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } /** MIT License * @@ -3501,171 +3153,96 @@ var Roostr = (function (exports) { * http://mouettejs.lcluber.com */ - var LEVELS$1 = [{ id: 1, name: 'info' }, { id: 2, name: 'trace' }, { id: 3, name: 'warn' }, { id: 4, name: 'error' }, { id: 99, name: 'off' }]; + var LEVELS$3 = { + info: { id: 1, name: 'info', color: '#28a745' }, + trace: { id: 2, name: 'trace', color: '#17a2b8' }, + warn: { id: 3, name: 'warn', color: '#ffc107' }, + error: { id: 4, name: 'error', color: '#dc3545' }, + off: { id: 99, name: 'off', color: null } + }; - var Message$1 = function () { - function Message(levelName, content) { - _classCallCheck$6(this, Message); + var Message$3 = function () { + function Message(level, content) { + _classCallCheck$8(this, Message); - this.setLevel(levelName); + this.id = level.id; + this.name = level.name; + this.color = level.color; this.content = content; } - _createClass$6(Message, [{ - key: 'setLevel', - value: function setLevel(name) { - this.level = this.findLevel(name); - } - }, { - key: 'getLevelId', - value: function getLevelId() { - return this.level.id; - } - }, { + _createClass$8(Message, [{ key: 'display', value: function display() { - console[this.level.name](this.content); - } - }, { - key: 'findLevel', - value: function findLevel(name) { - var _iteratorNormalCompletion = true; - var _didIteratorError = false; - var _iteratorError = undefined; - - try { - for (var _iterator = LEVELS$1[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { - var level = _step.value; - - if (level.name === name) { - return level; - } - } - } catch (err) { - _didIteratorError = true; - _iteratorError = err; - } finally { - try { - if (!_iteratorNormalCompletion && _iterator.return) { - _iterator.return(); - } - } finally { - if (_didIteratorError) { - throw _iteratorError; - } - } - } - - return this.level ? this.level : LEVELS$1[0]; + console[this.name]('%c' + this.content, 'color:' + this.color + ';'); } }]); return Message; }(); - var Logger$1 = function () { + var Logger$3 = function () { function Logger() { - _classCallCheck$6(this, Logger); + _classCallCheck$8(this, Logger); } - _createClass$6(Logger, [{ + _createClass$8(Logger, [{ key: 'level', set: function set(name) { - Logger._level = Logger.findLevel(name); + Logger._level = LEVELS$3.hasOwnProperty(name) ? LEVELS$3[name] : LEVELS$3.info; }, get: function get() { return Logger._level.name; } }], [{ key: 'info', - value: function info(text) { - Logger.log('info', text); + value: function info(message) { + Logger.log(LEVELS$3.info, message); } }, { key: 'trace', - value: function trace(text) { - Logger.log('trace', text); - } - }, { - key: 'time', - value: function time(text) { - Logger.log('time', text); + value: function trace(message) { + Logger.log(LEVELS$3.trace, message); } }, { key: 'warn', - value: function warn(text) { - Logger.log('warn', text); + value: function warn(message) { + Logger.log(LEVELS$3.warn, message); } }, { key: 'error', - value: function error(text) { - Logger.log('error', text); + value: function error(message) { + Logger.log(LEVELS$3.error, message); } }, { key: 'log', - value: function log(levelName, content) { - Logger.addMessage(levelName, content); - var message = this.messages[this.nbMessages - 1]; - if (this._level.id <= message.getLevelId()) { - message.display(); - } - } - }, { - key: 'addMessage', - value: function addMessage(levelName, content) { - this.messages.push(new Message$1(levelName, content)); + value: function log(level, messageContent) { + var message = new Message$3(level, messageContent); + this.messages.push(message); this.nbMessages++; - } - }, { - key: 'findLevel', - value: function findLevel(name) { - var _iteratorNormalCompletion2 = true; - var _didIteratorError2 = false; - var _iteratorError2 = undefined; - - try { - for (var _iterator2 = LEVELS$1[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { - var level = _step2.value; - - if (level.name === name) { - return level; - } - } - } catch (err) { - _didIteratorError2 = true; - _iteratorError2 = err; - } finally { - try { - if (!_iteratorNormalCompletion2 && _iterator2.return) { - _iterator2.return(); - } - } finally { - if (_didIteratorError2) { - throw _iteratorError2; - } - } + if (this._level.id <= message.id) { + message.display(); } - - return this._level ? this._level : LEVELS$1[0]; } }]); return Logger; }(); - Logger$1._level = Logger$1.findLevel(LEVELS$1[0].name); - Logger$1.messages = []; - Logger$1.nbMessages = 0; - Logger$1.target = Dom$2.findById('Mouette'); + Logger$3._level = LEVELS$3.info; + Logger$3.messages = []; + Logger$3.nbMessages = 0; var Shader = function () { function Shader() {} Shader.create = function (context, str, type) { var shader = context.createShader(context[type]); - context.shaderSource(shader, str); - context.compileShader(shader); - if (!context.getShaderParameter(shader, context.COMPILE_STATUS)) { - Logger$1.error('shader creation failed : ' + context.getShaderInfoLog(shader)); + if (shader) { + context.shaderSource(shader, str); + context.compileShader(shader); + if (!context.getShaderParameter(shader, context.COMPILE_STATUS)) { + Logger$3.error('shader creation failed : ' + context.getShaderInfoLog(shader)); + } } return shader; }; @@ -3676,13 +3253,19 @@ var Roostr = (function (exports) { function Program() {} Program.create = function (context, vertexShader, fragmentShader) { var program = context.createProgram(); - var vshader = Shader.create(context, vertexShader, 'VERTEX_SHADER'); - var fshader = Shader.create(context, fragmentShader, 'FRAGMENT_SHADER'); - context.attachShader(program, vshader); - context.attachShader(program, fshader); - context.linkProgram(program); - if (!context.getProgramParameter(program, context.LINK_STATUS)) { - Logger$1.error('program creation failed : ' + context.getProgramInfoLog(program)); + if (program) { + var vshader = Shader.create(context, vertexShader, 'VERTEX_SHADER'); + var fshader = Shader.create(context, fragmentShader, 'FRAGMENT_SHADER'); + if (vshader) { + context.attachShader(program, vshader); + } + if (fshader) { + context.attachShader(program, fshader); + } + context.linkProgram(program); + if (!context.getProgramParameter(program, context.LINK_STATUS)) { + Logger$3.error('program creation failed : ' + context.getProgramInfoLog(program)); + } } return program; }; @@ -3694,7 +3277,7 @@ var Roostr = (function (exports) { Texture.create = function (img, context) { var webGLTexture = context.createTexture(); context.bindTexture(context.TEXTURE_2D, webGLTexture); - context.pixelStorei(context.UNPACK_FLIP_Y_WEBGL, true); + context.pixelStorei(context.UNPACK_FLIP_Y_WEBGL, 1); context.texParameteri(context.TEXTURE_2D, context.TEXTURE_MAG_FILTER, context.LINEAR); context.texParameteri(context.TEXTURE_2D, context.TEXTURE_MIN_FILTER, context.LINEAR); context.texParameteri(context.TEXTURE_2D, context.TEXTURE_WRAP_S, context.CLAMP_TO_EDGE); @@ -3764,7 +3347,7 @@ var Roostr = (function (exports) { this.context = context; this.renderer = new MeshRenderer(this.context); this.WebGLTexture = null; - this.vertexBuffer = this.renderer.createBuffer('ARRAY_BUFFER', new Float32Array(this.vertices), 'STATIC_DRAW'); + this.vertexBuffer = this.vertices ? this.renderer.createBuffer('ARRAY_BUFFER', new Float32Array(this.vertices), 'STATIC_DRAW') : null; this.indexBuffer = this.indices ? this.renderer.createBuffer('ELEMENT_ARRAY_BUFFER', new Uint16Array(this.indices), 'STATIC_DRAW') : null; this.normalBuffer = this.normals ? this.renderer.createBuffer('ARRAY_BUFFER', new Float32Array(this.normals), 'STATIC_DRAW') : null; this.texCoordBuffer = this.uvs ? this.renderer.createBuffer('ARRAY_BUFFER', new Float32Array(this.uvs), 'STATIC_DRAW') : null; @@ -3868,11 +3451,11 @@ var Roostr = (function (exports) { this.nbPrograms++; }; Mesh.prototype.addProgramAttribute = function (name) { - this.programs[this.nbPrograms][name] = this.context.getAttribLocation(this.programs[this.nbPrograms], 'a' + String$1.ucfirst(name)); + this.programs[this.nbPrograms][name] = this.context.getAttribLocation(this.programs[this.nbPrograms], 'a' + String.ucfirst(name)); this.context.enableVertexAttribArray(this.programs[this.nbPrograms][name]); }; Mesh.prototype.addProgramUniform = function (name) { - this.programs[this.nbPrograms][name] = this.context.getUniformLocation(this.programs[this.nbPrograms], 'u' + String$1.ucfirst(name)); + this.programs[this.nbPrograms][name] = this.context.getUniformLocation(this.programs[this.nbPrograms], 'u' + String.ucfirst(name)); }; Mesh.prototype.activateBlendMode = function () { this.blendMode = true; @@ -3891,14 +3474,10 @@ var Roostr = (function (exports) { }; Mesh.prototype.render = function (projectionMatrix, viewMatrix, lights, time, blendMode) { if (this.isActive()) { - var program = null; + var program = this.programs[0]; for (var i = 0; i < this.nbSubMeshes; i++) { if (this.blendMode === blendMode) { - if (this.programs[i]) { - program = this.programs[i]; - } else { - program = this.programs[this.nbPrograms - 1]; - } + program = this.programs[i] || this.programs[this.nbPrograms - 1]; this.renderer.useProgram(program); if (this.materials[i]) { var materialUniforms = this.materials[i].uniforms; @@ -3967,45 +3546,121 @@ var Roostr = (function (exports) { return Line; }(); - var FullscreenQuad = function () { + var BasicMesh = function () { + function BasicMesh() { + this.vertices = []; + this.indices = []; + this.normals = []; + this.subMeshes = []; + this.itemSize = 3; + this.primitive = 'TRIANGLES'; + } + return BasicMesh; + }(); + + var __extends$2 = undefined && undefined.__extends || function () { + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; + return _extendStatics(d, b); + }; + return function (d, b) { + _extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + }(); + var FullscreenQuad = function (_super) { + __extends$2(FullscreenQuad, _super); function FullscreenQuad() { - this.vertices = [1.0, -1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0]; - this.uvs = [1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0]; - this.subMeshes = [new SubMesh(0, 4)]; - this.itemSize = 2; - this.primitive = 'TRIANGLE_STRIP'; + var _this = _super.call(this) || this; + _this.vertices = [1.0, -1.0, -1.0, -1.0, 1.0, 1.0, -1.0, 1.0]; + _this.uvs = [1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0]; + _this.subMeshes = [new SubMesh(0, 4)]; + _this.itemSize = 2; + _this.primitive = 'TRIANGLE_STRIP'; + return _this; } return FullscreenQuad; - }(); + }(BasicMesh); - var Quad = function () { + var __extends$3 = undefined && undefined.__extends || function () { + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; + return _extendStatics(d, b); + }; + return function (d, b) { + _extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; + }(); + var Quad = function (_super) { + __extends$3(Quad, _super); function Quad(width, height) { + var _this = _super.call(this) || this; width = width ? width * 0.5 : 1.0; height = height ? height * 0.5 : 1.0; - this.vertices = [width, -height, 0.0, -width, -height, 0.0, width, height, 0.0, -width, height, 0.0]; - this.uvs = [1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0]; - this.subMeshes = [new SubMesh(0, 4)]; - this.itemSize = 3; - this.primitive = 'TRIANGLE_STRIP'; + _this.vertices = [width, -height, 0.0, -width, -height, 0.0, width, height, 0.0, -width, height, 0.0]; + _this.uvs = [1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 1.0]; + _this.subMeshes = [new SubMesh(0, 4)]; + _this.itemSize = 3; + _this.primitive = 'TRIANGLE_STRIP'; + return _this; } return Quad; + }(BasicMesh); + + var __extends$4 = undefined && undefined.__extends || function () { + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; + return _extendStatics(d, b); + }; + return function (d, b) { + _extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; }(); - - var MultiQuad = function () { - function MultiQuad(width, height, quantity) { + var MultiQuad = function (_super) { + __extends$4(MultiQuad, _super); + function MultiQuad(width, height) { + var _this = _super.call(this) || this; width = width ? width * 0.5 : 1.0; height = height ? height * 0.5 : 1.0; - this.quad = { + _this.quad = { vertices: new Float32Array([width, -height, 0.0, -width, height, 0.0, -width, -height, 0.0, width, height, 0.0]), indices: new Int32Array([0, 1, 2, 0, 3, 1]), uvs: new Float32Array([1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0]) }; - this.vertices = []; - this.indices = []; - this.uvs = []; - this.subMeshes = [new SubMesh(0, 4)]; - this.itemSize = 3; - this.primitive = 'TRIANGLE'; + _this.vertices = []; + _this.indices = []; + _this.uvs = []; + _this.subMeshes = [new SubMesh(0, 4)]; + return _this; } MultiQuad.prototype.createQuads = function (length) { for (var i = 0; i < length; i++) { @@ -4022,68 +3677,168 @@ var Roostr = (function (exports) { return indices; }; return MultiQuad; + }(BasicMesh); + + var __extends$5 = undefined && undefined.__extends || function () { + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; + return _extendStatics(d, b); + }; + return function (d, b) { + _extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; }(); - - var Cube = function () { + var Cube = function (_super) { + __extends$5(Cube, _super); function Cube(size) { + var _this = _super.call(this) || this; size = size ? size * 0.5 : 1.0; - this.vertices = [size, -size, -size, -size, -size, size, size, -size, size, -size, size, size, size, size, -size, size, size, size, -size, -size, -size, -size, size, -size]; - this.indices = [0, 1, 2, 3, 4, 5, 5, 0, 2, 4, 6, 0, 6, 3, 1, 2, 3, 5, 0, 6, 1, 3, 7, 4, 5, 4, 0, 4, 7, 6, 6, 7, 3, 2, 1, 3]; - this.normals = [0.5773, -0.5773, -0.5773, -0.5773, -0.5773, 0.5773, 0.5773, -0.5773, 0.5773, -0.5773, 0.5773, 0.5773, 0.5773, 0.5773, -0.5773, 0.5773, 0.5773, 0.5773, -0.5773, -0.5773, -0.5773, -0.5773, 0.5773, -0.5773]; - this.subMeshes = [new SubMesh(0, 36)]; - this.itemSize = 3; - this.primitive = 'TRIANGLES'; + _this.vertices = [size, -size, -size, -size, -size, size, size, -size, size, -size, size, size, size, size, -size, size, size, size, -size, -size, -size, -size, size, -size]; + _this.indices = [0, 1, 2, 3, 4, 5, 5, 0, 2, 4, 6, 0, 6, 3, 1, 2, 3, 5, 0, 6, 1, 3, 7, 4, 5, 4, 0, 4, 7, 6, 6, 7, 3, 2, 1, 3]; + _this.normals = [0.5773, -0.5773, -0.5773, -0.5773, -0.5773, 0.5773, 0.5773, -0.5773, 0.5773, -0.5773, 0.5773, 0.5773, 0.5773, 0.5773, -0.5773, 0.5773, 0.5773, 0.5773, -0.5773, -0.5773, -0.5773, -0.5773, 0.5773, -0.5773]; + _this.subMeshes = [new SubMesh(0, 36)]; + return _this; } return Cube; + }(BasicMesh); + + var __extends$6 = undefined && undefined.__extends || function () { + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; + return _extendStatics(d, b); + }; + return function (d, b) { + _extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; }(); - - var Sphere = function () { + var Sphere = function (_super) { + __extends$6(Sphere, _super); function Sphere() { - this.vertices = [-0.7071, -0.7071, 0, -0.5449, -0.8315, 0.1084, -0.5556, -0.8315, 0, -0.8315, 0.5556, 0, -0.9061, 0.3827, 0.1802, -0.9239, 0.3827, 0, -0.3753, -0.9239, 0.0747, -0.3827, -0.9239, 0, -0.9619, 0.1951, 0.1913, -0.9808, 0.1951, 0, -0.1913, -0.9808, 0.0381, -0.1951, -0.9808, 0, -0.9808, 0, 0.1951, -1, 0, 0, -0.1951, 0.9808, 0, 0, 1, 0, -0.1913, 0.9808, 0.0381, 0, -1, 0, -0.9619, -0.1951, 0.1913, -0.9808, -0.1951, 0, -0.3753, 0.9239, 0.0747, -0.3827, 0.9239, 0, -0.9239, -0.3827, 0, -0.9061, -0.3827, 0.1802, -0.5556, 0.8315, 0, -0.5449, 0.8315, 0.1084, -0.8155, -0.5556, 0.1622, -0.8315, -0.5556, 0, -0.6935, 0.7071, 0.1379, -0.7071, 0.7071, 0, -0.6935, -0.7071, 0.1379, -0.8155, 0.5556, 0.1622, -0.7682, -0.5556, 0.3182, -0.6533, -0.7071, 0.2706, -0.7682, 0.5556, 0.3182, -0.5133, -0.8315, 0.2126, -0.8536, 0.3827, 0.3536, -0.3536, -0.9239, 0.1464, -0.9061, 0.1951, 0.3753, -0.1802, -0.9808, 0.0747, -0.9239, 0, 0.3827, -0.1802, 0.9808, 0.0747, -0.9061, -0.1951, 0.3753, -0.3536, 0.9239, 0.1464, -0.8536, -0.3827, 0.3536, -0.5133, 0.8315, 0.2126, -0.6533, 0.7071, 0.2706, -0.1622, 0.9808, 0.1084, -0.1622, -0.9808, 0.1084, -0.8155, -0.1951, 0.5449, -0.3182, 0.9239, 0.2126, -0.7682, -0.3827, 0.5133, -0.4619, 0.8315, 0.3087, -0.6913, -0.5556, 0.4619, -0.5879, 0.7071, 0.3928, -0.5879, -0.7071, 0.3928, -0.6913, 0.5556, 0.4619, -0.4619, -0.8315, 0.3087, -0.7682, 0.3827, 0.5133, -0.3182, -0.9239, 0.2126, -0.8155, 0.1951, 0.5449, -0.8315, 0, 0.5556, -0.5879, 0.5556, 0.5879, -0.3928, -0.8315, 0.3928, -0.6533, 0.3827, 0.6533, -0.2706, -0.9239, 0.2706, -0.6935, 0.1951, 0.6935, -0.1379, -0.9808, 0.1379, -0.7071, 0, 0.7071, -0.1379, 0.9808, 0.1379, -0.6935, -0.1951, 0.6935, -0.2706, 0.9239, 0.2706, -0.6533, -0.3827, 0.6533, -0.3928, 0.8315, 0.3928, -0.5879, -0.5556, 0.5879, -0.5, 0.7071, 0.5, -0.5, -0.7071, 0.5, -0.5449, -0.1951, 0.8155, -0.2126, 0.9239, 0.3182, -0.5133, -0.3827, 0.7682, -0.3087, 0.8315, 0.4619, -0.4619, -0.5556, 0.6913, -0.3928, 0.7071, 0.5879, -0.3928, -0.7071, 0.5879, -0.4619, 0.5556, 0.6913, -0.3087, -0.8315, 0.4619, -0.5133, 0.3827, 0.7682, -0.2126, -0.9239, 0.3182, -0.5449, 0.1951, 0.8155, -0.1084, -0.9808, 0.1622, -0.5556, 0, 0.8315, -0.1084, 0.9808, 0.1622, -0.2126, -0.8315, 0.5133, -0.3536, 0.3827, 0.8536, -0.1464, -0.9239, 0.3536, -0.3753, 0.1951, 0.9061, -0.0747, -0.9808, 0.1802, -0.3827, 0, 0.9239, -0.0747, 0.9808, 0.1802, -0.3753, -0.1951, 0.9061, -0.1464, 0.9239, 0.3536, -0.3536, -0.3827, 0.8536, -0.2126, 0.8315, 0.5133, -0.3182, -0.5556, 0.7682, -0.2706, 0.7071, 0.6533, -0.2706, -0.7071, 0.6533, -0.3182, 0.5556, 0.7682, -0.1802, -0.3827, 0.9061, -0.1084, 0.8315, 0.5449, -0.1622, -0.5556, 0.8155, -0.1379, 0.7071, 0.6935, -0.1379, -0.7071, 0.6935, -0.1622, 0.5556, 0.8155, -0.1084, -0.8315, 0.5449, -0.1802, 0.3827, 0.9061, -0.0747, -0.9239, 0.3753, -0.1913, 0.1951, 0.9619, -0.0381, -0.9808, 0.1913, -0.1951, 0, 0.9808, -0.0381, 0.9808, 0.1913, -0.1913, -0.1951, 0.9619, -0.0747, 0.9239, 0.3753, 0, -0.8315, 0.5556, 0, -0.9239, 0.3827, 0, 0.3827, 0.9239, 0, 0.1951, 0.9808, 0, -0.9808, 0.1951, 0, 0, 1, 0, 0.9808, 0.1951, 0, -0.1951, 0.9808, 0, 0.9239, 0.3827, 0, -0.3827, 0.9239, 0, 0.8315, 0.5556, 0, -0.5556, 0.8315, 0, 0.7071, 0.7071, 0, -0.7071, 0.7071, 0, 0.5556, 0.8315, 0.1084, 0.8315, 0.5449, 0.1802, -0.3827, 0.9061, 0.1622, -0.5556, 0.8155, 0.138, 0.7071, 0.6935, 0.138, -0.7071, 0.6935, 0.1622, 0.5556, 0.8155, 0.1084, -0.8315, 0.5449, 0.1802, 0.3827, 0.9061, 0.0747, -0.9239, 0.3753, 0.1913, 0.1951, 0.9619, 0.0381, -0.9808, 0.1913, 0.1951, 0, 0.9808, 0.0381, 0.9808, 0.1913, 0.1913, -0.1951, 0.9619, 0.0747, 0.9239, 0.3753, 0.3536, 0.3827, 0.8536, 0.3753, 0.1951, 0.9061, 0.0747, -0.9808, 0.1802, 0.3827, 0, 0.9239, 0.0747, 0.9808, 0.1802, 0.3753, -0.1951, 0.9061, 0.1464, 0.9239, 0.3536, 0.3536, -0.3827, 0.8536, 0.2126, 0.8315, 0.5133, 0.3182, -0.5556, 0.7682, 0.2706, 0.7071, 0.6533, 0.2706, -0.7071, 0.6533, 0.3182, 0.5556, 0.7682, 0.2126, -0.8315, 0.5133, 0.1464, -0.9239, 0.3536, 0.5133, -0.3827, 0.7682, 0.4619, -0.5556, 0.6913, 0.3928, 0.7071, 0.5879, 0.3928, -0.7071, 0.5879, 0.4619, 0.5556, 0.6913, 0.3087, -0.8315, 0.4619, 0.5133, 0.3827, 0.7682, 0.2126, -0.9239, 0.3182, 0.5449, 0.1951, 0.8155, 0.1084, -0.9808, 0.1622, 0.5556, 0, 0.8315, 0.1084, 0.9808, 0.1622, 0.5449, -0.1951, 0.8155, 0.2126, 0.9239, 0.3182, 0.3087, 0.8315, 0.4619, 0.2706, -0.9239, 0.2706, 0.138, -0.9808, 0.1379, 0.7071, 0, 0.7071, 0.138, 0.9808, 0.1379, 0.6935, -0.1951, 0.6935, 0.2706, 0.9239, 0.2706, 0.6533, -0.3827, 0.6533, 0.3928, 0.8315, 0.3928, 0.5879, -0.5556, 0.5879, 0.5, 0.7071, 0.5, 0.5, -0.7071, 0.5, 0.5879, 0.5556, 0.5879, 0.3928, -0.8315, 0.3928, 0.6533, 0.3827, 0.6533, 0.6935, 0.1951, 0.6935, 0.4619, 0.8315, 0.3087, 0.5879, 0.7071, 0.3928, 0.5879, -0.7071, 0.3928, 0.6913, 0.5556, 0.4619, 0.4619, -0.8315, 0.3087, 0.7682, 0.3827, 0.5133, 0.3182, -0.9239, 0.2126, 0.8155, 0.1951, 0.5449, 0.1622, -0.9808, 0.1084, 0.8315, 0, 0.5556, 0.1622, 0.9808, 0.1084, 0.8155, -0.1951, 0.5449, 0.3182, 0.9239, 0.2126, 0.7682, -0.3827, 0.5133, 0.6913, -0.5556, 0.4619, 0.9239, 0, 0.3827, 0.1802, 0.9808, 0.0747, 0.1802, -0.9808, 0.0747, 0.9061, -0.1951, 0.3753, 0.3536, 0.9239, 0.1464, 0.8536, -0.3827, 0.3536, 0.5133, 0.8315, 0.2126, 0.7682, -0.5556, 0.3182, 0.6533, 0.7071, 0.2706, 0.6533, -0.7071, 0.2706, 0.7682, 0.5556, 0.3182, 0.5133, -0.8315, 0.2126, 0.8536, 0.3827, 0.3536, 0.3536, -0.9239, 0.1464, 0.9061, 0.1951, 0.3753, 0.6935, -0.7071, 0.1379, 0.8155, 0.5556, 0.1622, 0.5449, -0.8315, 0.1084, 0.9061, 0.3827, 0.1802, 0.3753, -0.9239, 0.0747, 0.9619, 0.1951, 0.1913, 0.1913, -0.9808, 0.0381, 0.9808, 0, 0.1951, 0.1913, 0.9808, 0.0381, 0.9619, -0.1951, 0.1913, 0.3753, 0.9239, 0.0747, 0.9061, -0.3827, 0.1802, 0.5449, 0.8315, 0.1084, 0.8155, -0.5556, 0.1622, 0.6935, 0.7071, 0.1379, 0.1951, -0.9808, 0, 0.9808, -0.1951, 0, 0.3827, 0.9239, 0, 0.9239, -0.3827, 0, 0.5556, 0.8315, 0, 0.8315, -0.5556, 0, 0.7071, 0.7071, 0, 0.7071, -0.7071, 0, 0.8315, 0.5556, 0, 0.5556, -0.8315, 0, 0.9239, 0.3827, 0, 0.3827, -0.9239, 0, 0.9808, 0.1951, 0, 1, 0, 0, 0.1951, 0.9808, 0, 0.5449, -0.8315, -0.1084, 0.9061, 0.3827, -0.1802, 0.3753, -0.9239, -0.0747, 0.9619, 0.1951, -0.1913, 0.1913, -0.9808, -0.0381, 0.9808, 0, -0.1951, 0.1913, 0.9808, -0.0381, 0.9619, -0.1951, -0.1913, 0.3753, 0.9239, -0.0747, 0.9061, -0.3827, -0.1802, 0.5449, 0.8315, -0.1084, 0.8155, -0.5556, -0.1622, 0.6935, 0.7071, -0.1379, 0.6935, -0.7071, -0.1379, 0.8155, 0.5556, -0.1622, 0.3536, 0.9239, -0.1464, 0.8536, -0.3827, -0.3536, 0.5133, 0.8315, -0.2126, 0.7682, -0.5556, -0.3182, 0.6533, 0.7071, -0.2706, 0.6533, -0.7071, -0.2706, 0.7682, 0.5556, -0.3182, 0.5133, -0.8315, -0.2126, 0.8536, 0.3827, -0.3536, 0.3536, -0.9239, -0.1464, 0.9061, 0.1951, -0.3753, 0.1802, -0.9808, -0.0747, 0.9239, 0, -0.3827, 0.1802, 0.9808, -0.0747, 0.9061, -0.1951, -0.3753, 0.7682, 0.3827, -0.5133, 0.3182, -0.9239, -0.2126, 0.8155, 0.1951, -0.5449, 0.1622, -0.9808, -0.1084, 0.8315, 0, -0.5556, 0.1622, 0.9808, -0.1084, 0.8155, -0.1951, -0.5449, 0.3182, 0.9239, -0.2126, 0.7682, -0.3827, -0.5133, 0.4619, 0.8315, -0.3087, 0.6913, -0.5556, -0.4619, 0.5879, 0.7071, -0.3928, 0.5879, -0.7071, -0.3928, 0.6913, 0.5556, -0.4619, 0.4619, -0.8315, -0.3087, 0.6533, -0.3827, -0.6533, 0.3928, 0.8315, -0.3928, 0.5879, -0.5556, -0.5879, 0.5, 0.7071, -0.5, 0.5, -0.7071, -0.5, 0.5879, 0.5556, -0.5879, 0.3928, -0.8315, -0.3928, 0.6533, 0.3827, -0.6533, 0.2706, -0.9239, -0.2706, 0.6935, 0.1951, -0.6935, 0.1379, -0.9808, -0.1379, 0.7071, 0, -0.7071, 0.138, 0.9808, -0.1379, 0.6935, -0.1951, -0.6935, 0.2706, 0.9239, -0.2706, 0.3087, -0.8315, -0.4619, 0.2126, -0.9239, -0.3182, 0.5133, 0.3827, -0.7682, 0.5449, 0.1951, -0.8155, 0.1084, -0.9808, -0.1622, 0.5556, 0, -0.8315, 0.1084, 0.9808, -0.1622, 0.5449, -0.1951, -0.8155, 0.2126, 0.9239, -0.3182, 0.5133, -0.3827, -0.7682, 0.3087, 0.8315, -0.4619, 0.4619, -0.5556, -0.6913, 0.3928, 0.7071, -0.5879, 0.3928, -0.7071, -0.5879, 0.4619, 0.5556, -0.6913, 0.2126, 0.8315, -0.5133, 0.3536, -0.3827, -0.8536, 0.3182, -0.5556, -0.7682, 0.2706, 0.7071, -0.6533, 0.2706, -0.7071, -0.6533, 0.3182, 0.5556, -0.7682, 0.2126, -0.8315, -0.5133, 0.3536, 0.3827, -0.8536, 0.1464, -0.9239, -0.3536, 0.3753, 0.1951, -0.9061, 0.0747, -0.9808, -0.1802, 0.3827, 0, -0.9239, 0.0747, 0.9808, -0.1802, 0.3753, -0.1951, -0.9061, 0.1464, 0.9239, -0.3536, 0.1802, 0.3827, -0.9061, 0.1913, 0.1951, -0.9619, 0.0381, -0.9808, -0.1913, 0.1951, 0, -0.9808, 0.0381, 0.9808, -0.1913, 0.1913, -0.1951, -0.9619, 0.0747, 0.9239, -0.3753, 0.1802, -0.3827, -0.9061, 0.1084, 0.8315, -0.5449, 0.1622, -0.5556, -0.8155, 0.1379, 0.7071, -0.6935, 0.1379, -0.7071, -0.6935, 0.1622, 0.5556, -0.8155, 0.1084, -0.8315, -0.5449, 0.0747, -0.9239, -0.3753, 0, -0.3827, -0.9239, 0, -0.5556, -0.8315, 0, 0.8315, -0.5556, 0, 0.7071, -0.7071, 0, -0.7071, -0.7071, 0, 0.5556, -0.8315, 0, -0.8315, -0.5556, 0, 0.3827, -0.9239, 0, -0.9239, -0.3827, 0, 0.1951, -0.9808, 0, -0.9808, -0.1951, 0, 0, -1, 0, 0.9808, -0.1951, 0, -0.1951, -0.9808, 0, 0.9239, -0.3827, -0.0381, -0.9808, -0.1913, -0.1951, 0, -0.9808, -0.0381, 0.9808, -0.1913, -0.1913, -0.1951, -0.9619, -0.0747, 0.9239, -0.3753, -0.1802, -0.3827, -0.9061, -0.1084, 0.8315, -0.5449, -0.1622, -0.5556, -0.8155, -0.1379, 0.7071, -0.6935, -0.1379, -0.7071, -0.6935, -0.1622, 0.5556, -0.8155, -0.1084, -0.8315, -0.5449, -0.1802, 0.3827, -0.9061, -0.0747, -0.9239, -0.3753, -0.1913, 0.1951, -0.9619, -0.2706, -0.7071, -0.6533, -0.3182, 0.5556, -0.7682, -0.2126, -0.8315, -0.5133, -0.3536, 0.3827, -0.8536, -0.1464, -0.9239, -0.3536, -0.3753, 0.1951, -0.9061, -0.0747, -0.9808, -0.1802, -0.3827, 0, -0.9239, -0.0747, 0.9808, -0.1802, -0.3753, -0.1951, -0.9061, -0.1464, 0.9239, -0.3536, -0.3536, -0.3827, -0.8536, -0.2126, 0.8315, -0.5133, -0.3182, -0.5556, -0.7682, -0.2706, 0.7071, -0.6533, -0.1084, 0.9808, -0.1622, -0.1084, -0.9808, -0.1622, -0.5556, 0, -0.8315, -0.5449, -0.1951, -0.8155, -0.2126, 0.9239, -0.3182, -0.5133, -0.3827, -0.7682, -0.3087, 0.8315, -0.4619, -0.4619, -0.5556, -0.6913, -0.3928, 0.7071, -0.5879, -0.3928, -0.7071, -0.5879, -0.4619, 0.5556, -0.6913, -0.3087, -0.8315, -0.4619, -0.5133, 0.3827, -0.7682, -0.2126, -0.9239, -0.3182, -0.5449, 0.1951, -0.8155, -0.5, 0.7071, -0.5, -0.5879, 0.5556, -0.5879, -0.3928, -0.8315, -0.3928, -0.6533, 0.3827, -0.6533, -0.2706, -0.9239, -0.2706, -0.6935, 0.1951, -0.6935, -0.1379, -0.9808, -0.1379, -0.7071, 0, -0.7071, -0.1379, 0.9808, -0.1379, -0.6935, -0.1951, -0.6935, -0.2706, 0.9239, -0.2706, -0.6533, -0.3827, -0.6533, -0.3928, 0.8315, -0.3928, -0.5879, -0.5556, -0.5879, -0.5, -0.7071, -0.5, -0.8155, -0.1951, -0.5449, -0.3182, 0.9239, -0.2126, -0.7682, -0.3827, -0.5133, -0.4619, 0.8315, -0.3087, -0.6913, -0.5556, -0.4619, -0.5879, 0.7071, -0.3928, -0.5879, -0.7071, -0.3928, -0.6913, 0.5556, -0.4619, -0.4619, -0.8315, -0.3087, -0.7682, 0.3827, -0.5133, -0.3182, -0.9239, -0.2126, -0.8155, 0.1951, -0.5449, -0.1622, -0.9808, -0.1084, -0.8315, 0, -0.5556, -0.1622, 0.9808, -0.1084, -0.5133, -0.8315, -0.2126, -0.8536, 0.3827, -0.3536, -0.3536, -0.9239, -0.1464, -0.9061, 0.1951, -0.3753, -0.1802, -0.9808, -0.0747, -0.9239, 0, -0.3827, -0.1802, 0.9808, -0.0747, -0.9061, -0.1951, -0.3753, -0.3536, 0.9239, -0.1464, -0.8536, -0.3827, -0.3536, -0.5133, 0.8315, -0.2126, -0.7682, -0.5556, -0.3182, -0.6533, 0.7071, -0.2706, -0.6533, -0.7071, -0.2706, -0.7682, 0.5556, -0.3182, -0.3753, 0.9239, -0.0747, -0.9061, -0.3827, -0.1802, -0.5449, 0.8315, -0.1084, -0.8155, -0.5556, -0.1622, -0.6935, 0.7071, -0.1379, -0.6935, -0.7071, -0.1379, -0.8155, 0.5556, -0.1622, -0.5449, -0.8315, -0.1084, -0.9061, 0.3827, -0.1802, -0.3753, -0.9239, -0.0747, -0.9619, 0.1951, -0.1913, -0.1913, -0.9808, -0.0381, -0.9808, 0, -0.1951, -0.1913, 0.9808, -0.0381, -0.9619, -0.1951, -0.1913]; - this.indices = [0, 1, 2, 3, 4, 5, 2, 6, 7, 5, 8, 9, 7, 10, 11, 9, 12, 13, 14, 15, 16, 17, 11, 10, 13, 18, 19, 14, 20, 21, 22, 18, 23, 24, 20, 25, 22, 26, 27, 24, 28, 29, 0, 26, 30, 29, 31, 3, 30, 32, 33, 28, 34, 31, 30, 35, 1, 31, 36, 4, 1, 37, 6, 4, 38, 8, 6, 39, 10, 8, 40, 12, 16, 15, 41, 17, 10, 39, 18, 40, 42, 16, 43, 20, 23, 42, 44, 20, 45, 25, 23, 32, 26, 25, 46, 28, 41, 15, 47, 17, 39, 48, 40, 49, 42, 41, 50, 43, 42, 51, 44, 43, 52, 45, 32, 51, 53, 45, 54, 46, 33, 53, 55, 46, 56, 34, 33, 57, 35, 34, 58, 36, 35, 59, 37, 38, 58, 60, 37, 48, 39, 38, 61, 40, 54, 62, 56, 55, 63, 57, 56, 64, 58, 57, 65, 59, 58, 66, 60, 59, 67, 48, 61, 66, 68, 47, 15, 69, 17, 48, 67, 61, 70, 49, 47, 71, 50, 49, 72, 51, 50, 73, 52, 53, 72, 74, 52, 75, 54, 53, 76, 55, 68, 77, 70, 69, 78, 71, 70, 79, 72, 71, 80, 73, 74, 79, 81, 73, 82, 75, 74, 83, 76, 62, 82, 84, 63, 83, 85, 62, 86, 64, 65, 85, 87, 64, 88, 66, 65, 89, 67, 68, 88, 90, 69, 15, 91, 17, 67, 89, 83, 92, 85, 84, 93, 86, 87, 92, 94, 88, 93, 95, 87, 96, 89, 88, 97, 90, 91, 15, 98, 17, 89, 96, 90, 99, 77, 91, 100, 78, 77, 101, 79, 78, 102, 80, 81, 101, 103, 80, 104, 82, 83, 103, 105, 84, 104, 106, 99, 107, 101, 100, 108, 102, 103, 107, 109, 104, 108, 110, 105, 109, 111, 104, 112, 106, 105, 113, 92, 106, 114, 93, 92, 115, 94, 95, 114, 116, 96, 115, 117, 95, 118, 97, 98, 15, 119, 17, 96, 117, 97, 120, 99, 98, 121, 100, 115, 122, 123, 116, 124, 125, 117, 123, 126, 116, 127, 118, 119, 15, 128, 17, 117, 126, 120, 127, 129, 119, 130, 121, 120, 131, 107, 121, 132, 108, 109, 131, 133, 108, 134, 110, 109, 135, 111, 110, 136, 112, 113, 135, 122, 112, 124, 114, 130, 137, 132, 133, 138, 139, 132, 140, 134, 133, 141, 135, 136, 140, 142, 122, 141, 143, 136, 144, 124, 122, 145, 123, 125, 144, 146, 126, 145, 147, 125, 148, 127, 128, 15, 149, 17, 126, 147, 127, 150, 129, 130, 149, 151, 129, 138, 131, 146, 152, 153, 145, 154, 147, 146, 155, 148, 149, 15, 156, 17, 147, 154, 148, 157, 150, 149, 158, 151, 150, 159, 138, 137, 158, 160, 139, 159, 161, 137, 162, 140, 139, 163, 141, 140, 164, 142, 141, 165, 143, 142, 152, 144, 145, 165, 166, 161, 167, 168, 160, 169, 162, 161, 170, 163, 164, 169, 171, 165, 170, 172, 164, 173, 152, 165, 174, 166, 153, 173, 175, 166, 176, 154, 153, 177, 155, 156, 15, 178, 17, 154, 176, 157, 177, 179, 156, 180, 158, 157, 167, 159, 158, 181, 160, 176, 182, 183, 175, 184, 177, 178, 15, 185, 17, 176, 183, 177, 186, 179, 178, 187, 180, 179, 188, 167, 180, 189, 181, 167, 190, 168, 181, 191, 169, 168, 192, 170, 169, 193, 171, 172, 192, 194, 171, 195, 173, 172, 182, 174, 175, 195, 196, 191, 197, 198, 190, 199, 192, 193, 198, 200, 194, 199, 201, 193, 202, 195, 194, 203, 182, 196, 202, 204, 183, 203, 205, 196, 206, 184, 185, 15, 207, 17, 183, 205, 186, 206, 208, 185, 209, 187, 186, 210, 188, 187, 197, 189, 190, 210, 211, 204, 212, 206, 207, 15, 213, 17, 205, 214, 206, 215, 208, 207, 216, 209, 208, 217, 210, 197, 216, 218, 211, 217, 219, 197, 220, 198, 211, 221, 199, 198, 222, 200, 201, 221, 223, 200, 224, 202, 201, 225, 203, 204, 224, 226, 203, 214, 205, 219, 227, 221, 220, 228, 222, 221, 229, 223, 222, 230, 224, 223, 231, 225, 226, 230, 232, 214, 231, 233, 226, 234, 212, 213, 15, 235, 17, 214, 233, 212, 236, 215, 213, 237, 216, 215, 238, 217, 216, 239, 218, 219, 238, 240, 218, 241, 220, 17, 233, 242, 234, 243, 236, 235, 244, 237, 236, 245, 238, 239, 244, 246, 240, 245, 247, 241, 246, 248, 240, 249, 227, 241, 250, 228, 229, 249, 251, 228, 252, 230, 229, 253, 231, 232, 252, 254, 233, 253, 242, 232, 255, 234, 235, 15, 256, 249, 257, 251, 250, 258, 252, 251, 259, 253, 254, 258, 260, 253, 261, 242, 254, 262, 255, 256, 15, 263, 17, 242, 261, 255, 264, 243, 256, 265, 244, 243, 266, 245, 244, 267, 246, 247, 266, 268, 248, 267, 269, 247, 270, 249, 250, 269, 271, 263, 272, 265, 264, 273, 266, 265, 274, 267, 268, 273, 275, 269, 274, 276, 268, 277, 270, 271, 276, 278, 270, 279, 257, 271, 280, 258, 259, 279, 281, 260, 280, 282, 261, 281, 283, 260, 284, 262, 263, 15, 285, 17, 261, 283, 264, 284, 286, 278, 287, 280, 279, 288, 281, 282, 287, 289, 283, 288, 290, 282, 291, 284, 285, 15, 292, 17, 283, 290, 284, 293, 286, 285, 294, 272, 286, 295, 273, 272, 296, 274, 275, 295, 297, 274, 298, 276, 275, 299, 277, 278, 298, 300, 279, 299, 301, 293, 302, 295, 294, 303, 296, 297, 302, 304, 298, 303, 305, 297, 306, 299, 300, 305, 307, 299, 308, 301, 300, 309, 287, 301, 310, 288, 289, 309, 311, 288, 312, 290, 291, 311, 313, 292, 15, 314, 17, 290, 312, 291, 315, 293, 292, 316, 294, 310, 317, 318, 311, 319, 320, 310, 321, 312, 311, 322, 313, 314, 15, 323, 17, 312, 321, 313, 324, 315, 314, 325, 316, 315, 326, 302, 316, 327, 303, 304, 326, 328, 305, 327, 329, 304, 330, 306, 307, 329, 331, 306, 317, 308, 307, 319, 309, 325, 332, 327, 328, 333, 334, 329, 332, 335, 330, 334, 336, 331, 335, 337, 330, 338, 317, 331, 339, 319, 318, 338, 340, 320, 339, 341, 321, 340, 342, 320, 343, 322, 323, 15, 344, 17, 321, 342, 322, 345, 324, 323, 346, 325, 324, 333, 326, 341, 347, 348, 340, 349, 342, 341, 350, 343, 344, 15, 351, 17, 342, 349, 343, 352, 345, 346, 351, 353, 345, 354, 333, 346, 355, 332, 334, 354, 356, 335, 355, 357, 334, 358, 336, 337, 357, 359, 336, 360, 338, 337, 347, 339, 340, 360, 361, 356, 362, 363, 357, 364, 365, 356, 366, 358, 357, 367, 359, 360, 366, 368, 359, 369, 347, 361, 368, 370, 348, 369, 371, 361, 372, 349, 348, 373, 350, 351, 15, 374, 17, 349, 372, 352, 373, 375, 353, 374, 376, 352, 362, 354, 353, 364, 355, 370, 377, 372, 371, 378, 373, 374, 15, 379, 17, 372, 377, 375, 378, 380, 376, 379, 381, 375, 382, 362, 376, 383, 364, 363, 382, 384, 365, 383, 385, 363, 386, 366, 367, 385, 387, 366, 388, 368, 367, 389, 369, 370, 388, 390, 371, 389, 391, 384, 392, 386, 385, 393, 387, 386, 394, 388, 387, 395, 389, 390, 394, 396, 391, 395, 397, 390, 398, 377, 391, 399, 378, 379, 15, 400, 17, 377, 398, 378, 401, 380, 379, 402, 381, 380, 403, 382, 381, 404, 383, 384, 403, 405, 385, 404, 406, 400, 15, 407, 17, 398, 408, 401, 409, 410, 400, 411, 402, 401, 412, 403, 404, 411, 413, 405, 412, 414, 406, 413, 415, 405, 416, 392, 393, 415, 417, 392, 418, 394, 393, 419, 395, 396, 418, 420, 397, 419, 421, 396, 408, 398, 397, 409, 399, 417, 422, 423, 416, 424, 418, 417, 425, 419, 418, 426, 420, 421, 425, 427, 420, 428, 408, 421, 429, 409, 407, 15, 430, 17, 408, 428, 410, 429, 431, 407, 432, 411, 410, 433, 412, 411, 434, 413, 414, 433, 435, 413, 422, 415, 414, 436, 416, 429, 437, 431, 430, 438, 432, 431, 439, 433, 432, 440, 434, 435, 439, 441, 434, 442, 422, 435, 443, 436, 423, 442, 444, 424, 443, 445, 423, 446, 425, 424, 447, 426, 427, 446, 448, 426, 449, 428, 429, 448, 450, 430, 15, 451, 17, 428, 449, 443, 452, 445, 444, 453, 446, 445, 454, 447, 448, 453, 455, 447, 456, 449, 448, 457, 450, 451, 15, 458, 17, 449, 456, 450, 459, 437, 438, 458, 460, 437, 461, 439, 440, 460, 462, 441, 461, 463, 442, 462, 464, 441, 465, 443, 444, 464, 466, 458, 467, 460, 459, 468, 461, 460, 469, 462, 463, 468, 470, 462, 471, 464, 463, 472, 465, 466, 471, 473, 465, 474, 452, 466, 475, 453, 452, 476, 454, 455, 475, 477, 456, 476, 478, 455, 479, 457, 458, 15, 480, 17, 456, 478, 457, 481, 459, 475, 3, 5, 474, 7, 476, 477, 5, 9, 476, 11, 478, 479, 9, 13, 480, 15, 14, 17, 478, 11, 479, 19, 481, 467, 14, 21, 481, 22, 468, 469, 21, 24, 468, 27, 470, 471, 24, 29, 470, 0, 472, 473, 29, 3, 472, 2, 474, 0, 30, 1, 3, 31, 4, 2, 1, 6, 5, 4, 8, 7, 6, 10, 9, 8, 12, 13, 12, 18, 14, 16, 20, 22, 19, 18, 24, 21, 20, 22, 23, 26, 24, 25, 28, 0, 27, 26, 29, 28, 31, 30, 26, 32, 28, 46, 34, 30, 33, 35, 31, 34, 36, 1, 35, 37, 4, 36, 38, 6, 37, 39, 8, 38, 40, 18, 12, 40, 16, 41, 43, 23, 18, 42, 20, 43, 45, 23, 44, 32, 25, 45, 46, 40, 61, 49, 41, 47, 50, 42, 49, 51, 43, 50, 52, 32, 44, 51, 45, 52, 54, 33, 32, 53, 46, 54, 56, 33, 55, 57, 34, 56, 58, 35, 57, 59, 38, 36, 58, 37, 59, 48, 38, 60, 61, 54, 75, 62, 55, 76, 63, 56, 62, 64, 57, 63, 65, 58, 64, 66, 59, 65, 67, 61, 60, 66, 61, 68, 70, 47, 69, 71, 49, 70, 72, 50, 71, 73, 53, 51, 72, 52, 73, 75, 53, 74, 76, 68, 90, 77, 69, 91, 78, 70, 77, 79, 71, 78, 80, 74, 72, 79, 73, 80, 82, 74, 81, 83, 62, 75, 82, 63, 76, 83, 62, 84, 86, 65, 63, 85, 64, 86, 88, 65, 87, 89, 68, 66, 88, 83, 105, 92, 84, 106, 93, 87, 85, 92, 88, 86, 93, 87, 94, 96, 88, 95, 97, 90, 97, 99, 91, 98, 100, 77, 99, 101, 78, 100, 102, 81, 79, 101, 80, 102, 104, 83, 81, 103, 84, 82, 104, 99, 120, 107, 100, 121, 108, 103, 101, 107, 104, 102, 108, 105, 103, 109, 104, 110, 112, 105, 111, 113, 106, 112, 114, 92, 113, 115, 95, 93, 114, 96, 94, 115, 95, 116, 118, 97, 118, 120, 98, 119, 121, 115, 113, 122, 116, 114, 124, 117, 115, 123, 116, 125, 127, 120, 118, 127, 119, 128, 130, 120, 129, 131, 121, 130, 132, 109, 107, 131, 108, 132, 134, 109, 133, 135, 110, 134, 136, 113, 111, 135, 112, 136, 124, 130, 151, 137, 133, 131, 138, 132, 137, 140, 133, 139, 141, 136, 134, 140, 122, 135, 141, 136, 142, 144, 122, 143, 145, 125, 124, 144, 126, 123, 145, 125, 146, 148, 127, 148, 150, 130, 128, 149, 129, 150, 138, 146, 144, 152, 145, 166, 154, 146, 153, 155, 148, 155, 157, 149, 156, 158, 150, 157, 159, 137, 151, 158, 139, 138, 159, 137, 160, 162, 139, 161, 163, 140, 162, 164, 141, 163, 165, 142, 164, 152, 145, 143, 165, 161, 159, 167, 160, 181, 169, 161, 168, 170, 164, 162, 169, 165, 163, 170, 164, 171, 173, 165, 172, 174, 153, 152, 173, 166, 174, 176, 153, 175, 177, 157, 155, 177, 156, 178, 180, 157, 179, 167, 158, 180, 181, 176, 174, 182, 175, 196, 184, 177, 184, 186, 178, 185, 187, 179, 186, 188, 180, 187, 189, 167, 188, 190, 181, 189, 191, 168, 190, 192, 169, 191, 193, 172, 170, 192, 171, 193, 195, 172, 194, 182, 175, 173, 195, 191, 189, 197, 190, 211, 199, 193, 191, 198, 194, 192, 199, 193, 200, 202, 194, 201, 203, 196, 195, 202, 183, 182, 203, 196, 204, 206, 186, 184, 206, 185, 207, 209, 186, 208, 210, 187, 209, 197, 190, 188, 210, 204, 226, 212, 206, 212, 215, 207, 213, 216, 208, 215, 217, 197, 209, 216, 211, 210, 217, 197, 218, 220, 211, 219, 221, 198, 220, 222, 201, 199, 221, 200, 222, 224, 201, 223, 225, 204, 202, 224, 203, 225, 214, 219, 240, 227, 220, 241, 228, 221, 227, 229, 222, 228, 230, 223, 229, 231, 226, 224, 230, 214, 225, 231, 226, 232, 234, 212, 234, 236, 213, 235, 237, 215, 236, 238, 216, 237, 239, 219, 217, 238, 218, 239, 241, 234, 255, 243, 235, 256, 244, 236, 243, 245, 239, 237, 244, 240, 238, 245, 241, 239, 246, 240, 247, 249, 241, 248, 250, 229, 227, 249, 228, 250, 252, 229, 251, 253, 232, 230, 252, 233, 231, 253, 232, 254, 255, 249, 270, 257, 250, 271, 258, 251, 257, 259, 254, 252, 258, 253, 259, 261, 254, 260, 262, 255, 262, 264, 256, 263, 265, 243, 264, 266, 244, 265, 267, 247, 245, 266, 248, 246, 267, 247, 268, 270, 250, 248, 269, 263, 285, 272, 264, 286, 273, 265, 272, 274, 268, 266, 273, 269, 267, 274, 268, 275, 277, 271, 269, 276, 270, 277, 279, 271, 278, 280, 259, 257, 279, 260, 258, 280, 261, 259, 281, 260, 282, 284, 264, 262, 284, 278, 300, 287, 279, 301, 288, 282, 280, 287, 283, 281, 288, 282, 289, 291, 284, 291, 293, 285, 292, 294, 286, 293, 295, 272, 294, 296, 275, 273, 295, 274, 296, 298, 275, 297, 299, 278, 276, 298, 279, 277, 299, 293, 315, 302, 294, 316, 303, 297, 295, 302, 298, 296, 303, 297, 304, 306, 300, 298, 305, 299, 306, 308, 300, 307, 309, 301, 308, 310, 289, 287, 309, 288, 310, 312, 291, 289, 311, 291, 313, 315, 292, 314, 316, 310, 308, 317, 311, 309, 319, 310, 318, 321, 311, 320, 322, 313, 322, 324, 314, 323, 325, 315, 324, 326, 316, 325, 327, 304, 302, 326, 305, 303, 327, 304, 328, 330, 307, 305, 329, 306, 330, 317, 307, 331, 319, 325, 346, 332, 328, 326, 333, 329, 327, 332, 330, 328, 334, 331, 329, 335, 330, 336, 338, 331, 337, 339, 318, 317, 338, 320, 319, 339, 321, 318, 340, 320, 341, 343, 322, 343, 345, 323, 344, 346, 324, 345, 333, 341, 339, 347, 340, 361, 349, 341, 348, 350, 343, 350, 352, 346, 344, 351, 345, 352, 354, 346, 353, 355, 334, 333, 354, 335, 332, 355, 334, 356, 358, 337, 335, 357, 336, 358, 360, 337, 359, 347, 340, 338, 360, 356, 354, 362, 357, 355, 364, 356, 363, 366, 357, 365, 367, 360, 358, 366, 359, 367, 369, 361, 360, 368, 348, 347, 369, 361, 370, 372, 348, 371, 373, 352, 350, 373, 353, 351, 374, 352, 375, 362, 353, 376, 364, 370, 390, 377, 371, 391, 378, 375, 373, 378, 376, 374, 379, 375, 380, 382, 376, 381, 383, 363, 362, 382, 365, 364, 383, 363, 384, 386, 367, 365, 385, 366, 386, 388, 367, 387, 389, 370, 368, 388, 371, 369, 389, 384, 405, 392, 385, 406, 393, 386, 392, 394, 387, 393, 395, 390, 388, 394, 391, 389, 395, 390, 396, 398, 391, 397, 399, 378, 399, 401, 379, 400, 402, 380, 401, 403, 381, 402, 404, 384, 382, 403, 385, 383, 404, 401, 399, 409, 400, 407, 411, 401, 410, 412, 404, 402, 411, 405, 403, 412, 406, 404, 413, 405, 414, 416, 393, 406, 415, 392, 416, 418, 393, 417, 419, 396, 394, 418, 397, 395, 419, 396, 420, 408, 397, 421, 409, 417, 415, 422, 416, 436, 424, 417, 423, 425, 418, 424, 426, 421, 419, 425, 420, 426, 428, 421, 427, 429, 410, 409, 429, 407, 430, 432, 410, 431, 433, 411, 432, 434, 414, 412, 433, 413, 434, 422, 414, 435, 436, 429, 450, 437, 430, 451, 438, 431, 437, 439, 432, 438, 440, 435, 433, 439, 434, 440, 442, 435, 441, 443, 423, 422, 442, 424, 436, 443, 423, 444, 446, 424, 445, 447, 427, 425, 446, 426, 447, 449, 429, 427, 448, 443, 465, 452, 444, 466, 453, 445, 452, 454, 448, 446, 453, 447, 454, 456, 448, 455, 457, 450, 457, 459, 438, 451, 458, 437, 459, 461, 440, 438, 460, 441, 439, 461, 442, 440, 462, 441, 463, 465, 444, 442, 464, 458, 480, 467, 459, 481, 468, 460, 467, 469, 463, 461, 468, 462, 469, 471, 463, 470, 472, 466, 464, 471, 465, 472, 474, 466, 473, 475, 452, 474, 476, 455, 453, 475, 456, 454, 476, 455, 477, 479, 457, 479, 481, 475, 473, 3, 474, 2, 7, 477, 475, 5, 476, 7, 11, 479, 477, 9, 479, 13, 19, 467, 480, 14, 481, 19, 22, 469, 467, 21, 468, 22, 27, 471, 469, 24, 470, 27, 0, 473, 471, 29, 472, 0, 2]; - this.normals = [-0.7101, -0.704, 0, -0.549, -0.8286, 0.1092, -0.5598, -0.8286, 0, -0.8333, 0.5528, 0, -0.907, 0.3805, 0.1804, -0.9247, 0.3805, 0, -0.3804, -0.9217, 0.0757, -0.3879, -0.9217, 0, -0.9622, 0.1939, 0.1914, -0.981, 0.1939, 0, -0.1971, -0.9796, 0.0392, -0.201, -0.9796, 0, -0.9808, 0, 0.1951, -1, 0, 0, -0.201, 0.9796, 0, 0, 1, 0, -0.1971, 0.9796, 0.0392, 0, -1, 0, -0.9622, -0.1939, 0.1914, -0.981, -0.1939, 0, -0.3804, 0.9217, 0.0757, -0.3879, 0.9217, 0, -0.9247, -0.3805, 0, -0.907, -0.3805, 0.1804, -0.5598, 0.8286, 0, -0.549, 0.8286, 0.1092, -0.8173, -0.5528, 0.1626, -0.8333, -0.5528, 0, -0.6965, 0.704, 0.1385, -0.7101, 0.704, 0, -0.6965, -0.704, 0.1385, -0.8173, 0.5528, 0.1626, -0.7699, -0.5528, 0.3189, -0.6561, -0.704, 0.2717, -0.7699, 0.5528, 0.3189, -0.5171, -0.8286, 0.2142, -0.8544, 0.3805, 0.3539, -0.3583, -0.9217, 0.1484, -0.9063, 0.1939, 0.3754, -0.1856, -0.9796, 0.0769, -0.9239, 0, 0.3827, -0.1856, 0.9796, 0.0769, -0.9063, -0.1939, 0.3754, -0.3583, 0.9217, 0.1484, -0.8544, -0.3805, 0.3539, -0.5171, 0.8286, 0.2142, -0.6561, 0.704, 0.2717, -0.1671, 0.9796, 0.1116, -0.1671, -0.9796, 0.1116, -0.8157, -0.1939, 0.545, -0.3225, 0.9217, 0.2155, -0.7689, -0.3805, 0.5137, -0.4654, 0.8286, 0.311, -0.6929, -0.5528, 0.463, -0.5904, 0.704, 0.3945, -0.5904, -0.704, 0.3945, -0.6929, 0.5528, 0.463, -0.4654, -0.8286, 0.311, -0.7689, 0.3805, 0.5137, -0.3225, -0.9217, 0.2155, -0.8157, 0.1939, 0.545, -0.8314, 0, 0.5556, -0.5893, 0.5528, 0.5893, -0.3958, -0.8286, 0.3958, -0.6539, 0.3805, 0.6539, -0.2743, -0.9217, 0.2743, -0.6937, 0.1939, 0.6937, -0.1421, -0.9796, 0.1421, -0.7071, 0, 0.7071, -0.1421, 0.9796, 0.1421, -0.6937, -0.1939, 0.6937, -0.2743, 0.9217, 0.2743, -0.6539, -0.3805, 0.6539, -0.3958, 0.8286, 0.3958, -0.5893, -0.5528, 0.5893, -0.5021, 0.704, 0.5021, -0.5021, -0.704, 0.5021, -0.545, -0.1939, 0.8157, -0.2155, 0.9217, 0.3225, -0.5137, -0.3805, 0.7689, -0.311, 0.8286, 0.4654, -0.463, -0.5528, 0.6929, -0.3945, 0.704, 0.5904, -0.3945, -0.704, 0.5904, -0.463, 0.5528, 0.6929, -0.311, -0.8286, 0.4654, -0.5137, 0.3805, 0.7689, -0.2155, -0.9217, 0.3225, -0.545, 0.1939, 0.8157, -0.1116, -0.9796, 0.1671, -0.5556, 0, 0.8314, -0.1116, 0.9796, 0.1671, -0.2142, -0.8286, 0.5171, -0.3539, 0.3805, 0.8544, -0.1484, -0.9217, 0.3583, -0.3754, 0.1939, 0.9063, -0.0769, -0.9796, 0.1856, -0.3827, 0, 0.9239, -0.0769, 0.9796, 0.1856, -0.3754, -0.1939, 0.9063, -0.1484, 0.9217, 0.3583, -0.3539, -0.3805, 0.8544, -0.2142, 0.8286, 0.5171, -0.3189, -0.5528, 0.7699, -0.2717, 0.704, 0.6561, -0.2717, -0.704, 0.6561, -0.3189, 0.5528, 0.7699, -0.1804, -0.3805, 0.907, -0.1092, 0.8286, 0.549, -0.1626, -0.5528, 0.8173, -0.1385, 0.704, 0.6965, -0.1385, -0.704, 0.6965, -0.1626, 0.5528, 0.8173, -0.1092, -0.8286, 0.549, -0.1804, 0.3805, 0.907, -0.0757, -0.9217, 0.3804, -0.1914, 0.1939, 0.9622, -0.0392, -0.9796, 0.1971, -0.1951, 0, 0.9808, -0.0392, 0.9796, 0.1971, -0.1914, -0.1939, 0.9622, -0.0757, 0.9217, 0.3804, 0, -0.8286, 0.5598, 0, -0.9217, 0.3879, 0, 0.3805, 0.9247, 0, 0.1939, 0.981, 0, -0.9796, 0.201, 0, 0, 1, 0, 0.9796, 0.201, 0, -0.1939, 0.981, 0, 0.9217, 0.3879, 0, -0.3805, 0.9247, 0, 0.8286, 0.5598, 0, -0.5528, 0.8333, 0, 0.704, 0.7101, 0, -0.704, 0.7101, 0, 0.5528, 0.8333, 0.1092, 0.8286, 0.549, 0.1804, -0.3805, 0.907, 0.1626, -0.5528, 0.8173, 0.1385, 0.704, 0.6965, 0.1385, -0.704, 0.6965, 0.1626, 0.5528, 0.8173, 0.1092, -0.8286, 0.549, 0.1804, 0.3805, 0.907, 0.0757, -0.9217, 0.3804, 0.1914, 0.1939, 0.9622, 0.0392, -0.9796, 0.1971, 0.1951, 0, 0.9808, 0.0392, 0.9796, 0.1971, 0.1914, -0.1939, 0.9622, 0.0757, 0.9217, 0.3804, 0.3539, 0.3805, 0.8544, 0.3754, 0.1939, 0.9063, 0.0769, -0.9796, 0.1856, 0.3827, 0, 0.9239, 0.0769, 0.9796, 0.1856, 0.3754, -0.1939, 0.9063, 0.1484, 0.9217, 0.3583, 0.3539, -0.3805, 0.8544, 0.2142, 0.8286, 0.5171, 0.3189, -0.5528, 0.7699, 0.2717, 0.704, 0.6561, 0.2717, -0.704, 0.6561, 0.3189, 0.5528, 0.7699, 0.2142, -0.8286, 0.5171, 0.1484, -0.9217, 0.3583, 0.5137, -0.3805, 0.7689, 0.463, -0.5528, 0.6929, 0.3945, 0.704, 0.5904, 0.3945, -0.704, 0.5904, 0.463, 0.5528, 0.6929, 0.311, -0.8286, 0.4654, 0.5137, 0.3805, 0.7689, 0.2155, -0.9217, 0.3225, 0.545, 0.1939, 0.8157, 0.1116, -0.9796, 0.1671, 0.5556, 0, 0.8314, 0.1116, 0.9796, 0.1671, 0.545, -0.1939, 0.8157, 0.2155, 0.9217, 0.3225, 0.311, 0.8286, 0.4654, 0.2743, -0.9217, 0.2743, 0.1421, -0.9796, 0.1421, 0.7071, 0, 0.7071, 0.1421, 0.9796, 0.1421, 0.6937, -0.1939, 0.6937, 0.2743, 0.9217, 0.2743, 0.6539, -0.3805, 0.6539, 0.3958, 0.8286, 0.3958, 0.5893, -0.5528, 0.5893, 0.5021, 0.704, 0.5021, 0.5021, -0.704, 0.5021, 0.5893, 0.5528, 0.5893, 0.3958, -0.8286, 0.3958, 0.6539, 0.3805, 0.6539, 0.6937, 0.1939, 0.6937, 0.4654, 0.8286, 0.311, 0.5904, 0.704, 0.3945, 0.5904, -0.704, 0.3945, 0.6929, 0.5528, 0.463, 0.4654, -0.8286, 0.311, 0.7689, 0.3805, 0.5137, 0.3225, -0.9217, 0.2155, 0.8157, 0.1939, 0.545, 0.1671, -0.9796, 0.1116, 0.8314, 0, 0.5556, 0.1671, 0.9796, 0.1116, 0.8157, -0.1939, 0.545, 0.3225, 0.9217, 0.2155, 0.7689, -0.3805, 0.5137, 0.6929, -0.5528, 0.463, 0.9239, 0, 0.3827, 0.1856, 0.9796, 0.0769, 0.1856, -0.9796, 0.0769, 0.9063, -0.1939, 0.3754, 0.3583, 0.9217, 0.1484, 0.8544, -0.3805, 0.3539, 0.5171, 0.8286, 0.2142, 0.7699, -0.5528, 0.3189, 0.6561, 0.704, 0.2717, 0.6561, -0.704, 0.2717, 0.7699, 0.5528, 0.3189, 0.5171, -0.8286, 0.2142, 0.8544, 0.3805, 0.3539, 0.3583, -0.9217, 0.1484, 0.9063, 0.1939, 0.3754, 0.6965, -0.704, 0.1385, 0.8173, 0.5528, 0.1626, 0.549, -0.8286, 0.1092, 0.907, 0.3805, 0.1804, 0.3804, -0.9217, 0.0757, 0.9622, 0.1939, 0.1914, 0.1971, -0.9796, 0.0392, 0.9808, 0, 0.1951, 0.1971, 0.9796, 0.0392, 0.9622, -0.1939, 0.1914, 0.3804, 0.9217, 0.0757, 0.907, -0.3805, 0.1804, 0.549, 0.8286, 0.1092, 0.8173, -0.5528, 0.1626, 0.6965, 0.704, 0.1385, 0.201, -0.9796, 0, 0.981, -0.1939, 0, 0.3879, 0.9217, 0, 0.9247, -0.3805, 0, 0.5598, 0.8286, 0, 0.8333, -0.5528, 0, 0.7101, 0.704, 0, 0.7101, -0.704, 0, 0.8333, 0.5528, 0, 0.5598, -0.8286, 0, 0.9247, 0.3805, 0, 0.3879, -0.9217, 0, 0.981, 0.1939, 0, 1, 0, 0, 0.201, 0.9796, 0, 0.549, -0.8286, -0.1092, 0.907, 0.3805, -0.1804, 0.3804, -0.9217, -0.0757, 0.9622, 0.1939, -0.1914, 0.1971, -0.9796, -0.0392, 0.9808, 0, -0.1951, 0.1971, 0.9796, -0.0392, 0.9622, -0.1939, -0.1914, 0.3804, 0.9217, -0.0757, 0.907, -0.3805, -0.1804, 0.549, 0.8286, -0.1092, 0.8173, -0.5528, -0.1626, 0.6965, 0.704, -0.1385, 0.6965, -0.704, -0.1385, 0.8173, 0.5528, -0.1626, 0.3583, 0.9217, -0.1484, 0.8544, -0.3805, -0.3539, 0.5171, 0.8286, -0.2142, 0.7699, -0.5528, -0.3189, 0.6561, 0.704, -0.2717, 0.6561, -0.704, -0.2717, 0.7699, 0.5528, -0.3189, 0.5171, -0.8286, -0.2142, 0.8544, 0.3805, -0.3539, 0.3583, -0.9217, -0.1484, 0.9063, 0.1939, -0.3754, 0.1856, -0.9796, -0.0769, 0.9239, 0, -0.3827, 0.1856, 0.9796, -0.0769, 0.9063, -0.1939, -0.3754, 0.7689, 0.3805, -0.5137, 0.3225, -0.9217, -0.2155, 0.8157, 0.1939, -0.545, 0.1671, -0.9796, -0.1116, 0.8314, 0, -0.5556, 0.1671, 0.9796, -0.1116, 0.8157, -0.1939, -0.545, 0.3225, 0.9217, -0.2155, 0.7689, -0.3805, -0.5137, 0.4654, 0.8286, -0.311, 0.6929, -0.5528, -0.463, 0.5904, 0.704, -0.3945, 0.5904, -0.704, -0.3945, 0.6929, 0.5528, -0.463, 0.4654, -0.8286, -0.311, 0.6539, -0.3805, -0.6539, 0.3958, 0.8286, -0.3958, 0.5893, -0.5528, -0.5893, 0.5021, 0.704, -0.5021, 0.5021, -0.704, -0.5021, 0.5893, 0.5528, -0.5893, 0.3958, -0.8286, -0.3958, 0.6539, 0.3805, -0.6539, 0.2743, -0.9217, -0.2743, 0.6937, 0.1939, -0.6937, 0.1421, -0.9796, -0.1421, 0.7071, 0, -0.7071, 0.1421, 0.9796, -0.1421, 0.6937, -0.1939, -0.6937, 0.2743, 0.9217, -0.2743, 0.311, -0.8286, -0.4654, 0.2155, -0.9217, -0.3225, 0.5137, 0.3805, -0.7689, 0.545, 0.1939, -0.8157, 0.1116, -0.9796, -0.1671, 0.5556, 0, -0.8314, 0.1116, 0.9796, -0.1671, 0.545, -0.1939, -0.8157, 0.2155, 0.9217, -0.3225, 0.5137, -0.3805, -0.7689, 0.311, 0.8286, -0.4654, 0.463, -0.5528, -0.6929, 0.3945, 0.704, -0.5904, 0.3945, -0.704, -0.5904, 0.463, 0.5528, -0.6929, 0.2142, 0.8286, -0.5171, 0.3539, -0.3805, -0.8544, 0.3189, -0.5528, -0.7699, 0.2717, 0.704, -0.6561, 0.2717, -0.704, -0.6561, 0.3189, 0.5528, -0.7699, 0.2142, -0.8286, -0.5171, 0.3539, 0.3805, -0.8544, 0.1484, -0.9217, -0.3583, 0.3754, 0.1939, -0.9063, 0.0769, -0.9796, -0.1856, 0.3827, 0, -0.9239, 0.0769, 0.9796, -0.1856, 0.3754, -0.1939, -0.9063, 0.1484, 0.9217, -0.3583, 0.1804, 0.3805, -0.907, 0.1914, 0.1939, -0.9622, 0.0392, -0.9796, -0.1971, 0.1951, 0, -0.9808, 0.0392, 0.9796, -0.1971, 0.1914, -0.1939, -0.9622, 0.0757, 0.9217, -0.3804, 0.1804, -0.3805, -0.907, 0.1092, 0.8286, -0.549, 0.1626, -0.5528, -0.8173, 0.1385, 0.704, -0.6965, 0.1385, -0.704, -0.6965, 0.1626, 0.5528, -0.8173, 0.1092, -0.8286, -0.549, 0.0757, -0.9217, -0.3804, 0, -0.3805, -0.9247, 0, -0.5528, -0.8333, 0, 0.8286, -0.5598, 0, 0.704, -0.7101, 0, -0.704, -0.7101, 0, 0.5528, -0.8333, 0, -0.8286, -0.5598, 0, 0.3805, -0.9247, 0, -0.9217, -0.3879, 0, 0.1939, -0.981, 0, -0.9796, -0.201, 0, 0, -1, 0, 0.9796, -0.201, 0, -0.1939, -0.981, 0, 0.9217, -0.3879, -0.0392, -0.9796, -0.1971, -0.1951, 0, -0.9808, -0.0392, 0.9796, -0.1971, -0.1914, -0.1939, -0.9622, -0.0757, 0.9217, -0.3804, -0.1804, -0.3805, -0.907, -0.1092, 0.8286, -0.549, -0.1626, -0.5528, -0.8173, -0.1385, 0.704, -0.6965, -0.1385, -0.704, -0.6965, -0.1626, 0.5528, -0.8173, -0.1092, -0.8286, -0.549, -0.1804, 0.3805, -0.907, -0.0757, -0.9217, -0.3804, -0.1914, 0.1939, -0.9622, -0.2717, -0.704, -0.6561, -0.3189, 0.5528, -0.7699, -0.2142, -0.8286, -0.5171, -0.3539, 0.3805, -0.8544, -0.1484, -0.9217, -0.3583, -0.3754, 0.1939, -0.9063, -0.0769, -0.9796, -0.1856, -0.3827, 0, -0.9239, -0.0769, 0.9796, -0.1856, -0.3754, -0.1939, -0.9063, -0.1484, 0.9217, -0.3583, -0.3539, -0.3805, -0.8544, -0.2142, 0.8286, -0.5171, -0.3189, -0.5528, -0.7699, -0.2717, 0.704, -0.6561, -0.1116, 0.9796, -0.1671, -0.1116, -0.9796, -0.1671, -0.5556, 0, -0.8314, -0.545, -0.1939, -0.8157, -0.2155, 0.9217, -0.3225, -0.5137, -0.3805, -0.7689, -0.311, 0.8286, -0.4654, -0.463, -0.5528, -0.6929, -0.3945, 0.704, -0.5904, -0.3945, -0.704, -0.5904, -0.463, 0.5528, -0.6929, -0.311, -0.8286, -0.4654, -0.5137, 0.3805, -0.7689, -0.2155, -0.9217, -0.3225, -0.545, 0.1939, -0.8157, -0.5021, 0.704, -0.5021, -0.5893, 0.5528, -0.5893, -0.3958, -0.8286, -0.3958, -0.6539, 0.3805, -0.6539, -0.2743, -0.9217, -0.2743, -0.6937, 0.1939, -0.6937, -0.1421, -0.9796, -0.1421, -0.7071, 0, -0.7071, -0.1421, 0.9796, -0.1421, -0.6937, -0.1939, -0.6937, -0.2743, 0.9217, -0.2743, -0.6539, -0.3805, -0.6539, -0.3958, 0.8286, -0.3958, -0.5893, -0.5528, -0.5893, -0.5021, -0.704, -0.5021, -0.8157, -0.1939, -0.545, -0.3225, 0.9217, -0.2155, -0.7689, -0.3805, -0.5137, -0.4654, 0.8286, -0.311, -0.6929, -0.5528, -0.463, -0.5904, 0.704, -0.3945, -0.5904, -0.704, -0.3945, -0.6929, 0.5528, -0.463, -0.4654, -0.8286, -0.311, -0.7689, 0.3805, -0.5137, -0.3225, -0.9217, -0.2155, -0.8157, 0.1939, -0.545, -0.1671, -0.9796, -0.1116, -0.8314, 0, -0.5556, -0.1671, 0.9796, -0.1116, -0.5171, -0.8286, -0.2142, -0.8544, 0.3805, -0.3539, -0.3583, -0.9217, -0.1484, -0.9063, 0.1939, -0.3754, -0.1856, -0.9796, -0.0769, -0.9239, 0, -0.3827, -0.1856, 0.9796, -0.0769, -0.9063, -0.1939, -0.3754, -0.3583, 0.9217, -0.1484, -0.8544, -0.3805, -0.3539, -0.5171, 0.8286, -0.2142, -0.7699, -0.5528, -0.3189, -0.6561, 0.704, -0.2717, -0.6561, -0.704, -0.2717, -0.7699, 0.5528, -0.3189, -0.3804, 0.9217, -0.0757, -0.907, -0.3805, -0.1804, -0.549, 0.8286, -0.1092, -0.8173, -0.5528, -0.1626, -0.6965, 0.704, -0.1385, -0.6965, -0.704, -0.1385, -0.8173, 0.5528, -0.1626, -0.549, -0.8286, -0.1092, -0.907, 0.3805, -0.1804, -0.3804, -0.9217, -0.0757, -0.9622, 0.1939, -0.1914, -0.1971, -0.9796, -0.0392, -0.9808, 0, -0.1951, -0.1971, 0.9796, -0.0392, -0.9622, -0.1939, -0.1914]; - this.subMeshes = [new SubMesh(0, 2880)]; - this.itemSize = 3; - this.primitive = 'TRIANGLES'; + var _this = _super.call(this) || this; + _this.vertices = [-0.7071, -0.7071, 0, -0.5449, -0.8315, 0.1084, -0.5556, -0.8315, 0, -0.8315, 0.5556, 0, -0.9061, 0.3827, 0.1802, -0.9239, 0.3827, 0, -0.3753, -0.9239, 0.0747, -0.3827, -0.9239, 0, -0.9619, 0.1951, 0.1913, -0.9808, 0.1951, 0, -0.1913, -0.9808, 0.0381, -0.1951, -0.9808, 0, -0.9808, 0, 0.1951, -1, 0, 0, -0.1951, 0.9808, 0, 0, 1, 0, -0.1913, 0.9808, 0.0381, 0, -1, 0, -0.9619, -0.1951, 0.1913, -0.9808, -0.1951, 0, -0.3753, 0.9239, 0.0747, -0.3827, 0.9239, 0, -0.9239, -0.3827, 0, -0.9061, -0.3827, 0.1802, -0.5556, 0.8315, 0, -0.5449, 0.8315, 0.1084, -0.8155, -0.5556, 0.1622, -0.8315, -0.5556, 0, -0.6935, 0.7071, 0.1379, -0.7071, 0.7071, 0, -0.6935, -0.7071, 0.1379, -0.8155, 0.5556, 0.1622, -0.7682, -0.5556, 0.3182, -0.6533, -0.7071, 0.2706, -0.7682, 0.5556, 0.3182, -0.5133, -0.8315, 0.2126, -0.8536, 0.3827, 0.3536, -0.3536, -0.9239, 0.1464, -0.9061, 0.1951, 0.3753, -0.1802, -0.9808, 0.0747, -0.9239, 0, 0.3827, -0.1802, 0.9808, 0.0747, -0.9061, -0.1951, 0.3753, -0.3536, 0.9239, 0.1464, -0.8536, -0.3827, 0.3536, -0.5133, 0.8315, 0.2126, -0.6533, 0.7071, 0.2706, -0.1622, 0.9808, 0.1084, -0.1622, -0.9808, 0.1084, -0.8155, -0.1951, 0.5449, -0.3182, 0.9239, 0.2126, -0.7682, -0.3827, 0.5133, -0.4619, 0.8315, 0.3087, -0.6913, -0.5556, 0.4619, -0.5879, 0.7071, 0.3928, -0.5879, -0.7071, 0.3928, -0.6913, 0.5556, 0.4619, -0.4619, -0.8315, 0.3087, -0.7682, 0.3827, 0.5133, -0.3182, -0.9239, 0.2126, -0.8155, 0.1951, 0.5449, -0.8315, 0, 0.5556, -0.5879, 0.5556, 0.5879, -0.3928, -0.8315, 0.3928, -0.6533, 0.3827, 0.6533, -0.2706, -0.9239, 0.2706, -0.6935, 0.1951, 0.6935, -0.1379, -0.9808, 0.1379, -0.7071, 0, 0.7071, -0.1379, 0.9808, 0.1379, -0.6935, -0.1951, 0.6935, -0.2706, 0.9239, 0.2706, -0.6533, -0.3827, 0.6533, -0.3928, 0.8315, 0.3928, -0.5879, -0.5556, 0.5879, -0.5, 0.7071, 0.5, -0.5, -0.7071, 0.5, -0.5449, -0.1951, 0.8155, -0.2126, 0.9239, 0.3182, -0.5133, -0.3827, 0.7682, -0.3087, 0.8315, 0.4619, -0.4619, -0.5556, 0.6913, -0.3928, 0.7071, 0.5879, -0.3928, -0.7071, 0.5879, -0.4619, 0.5556, 0.6913, -0.3087, -0.8315, 0.4619, -0.5133, 0.3827, 0.7682, -0.2126, -0.9239, 0.3182, -0.5449, 0.1951, 0.8155, -0.1084, -0.9808, 0.1622, -0.5556, 0, 0.8315, -0.1084, 0.9808, 0.1622, -0.2126, -0.8315, 0.5133, -0.3536, 0.3827, 0.8536, -0.1464, -0.9239, 0.3536, -0.3753, 0.1951, 0.9061, -0.0747, -0.9808, 0.1802, -0.3827, 0, 0.9239, -0.0747, 0.9808, 0.1802, -0.3753, -0.1951, 0.9061, -0.1464, 0.9239, 0.3536, -0.3536, -0.3827, 0.8536, -0.2126, 0.8315, 0.5133, -0.3182, -0.5556, 0.7682, -0.2706, 0.7071, 0.6533, -0.2706, -0.7071, 0.6533, -0.3182, 0.5556, 0.7682, -0.1802, -0.3827, 0.9061, -0.1084, 0.8315, 0.5449, -0.1622, -0.5556, 0.8155, -0.1379, 0.7071, 0.6935, -0.1379, -0.7071, 0.6935, -0.1622, 0.5556, 0.8155, -0.1084, -0.8315, 0.5449, -0.1802, 0.3827, 0.9061, -0.0747, -0.9239, 0.3753, -0.1913, 0.1951, 0.9619, -0.0381, -0.9808, 0.1913, -0.1951, 0, 0.9808, -0.0381, 0.9808, 0.1913, -0.1913, -0.1951, 0.9619, -0.0747, 0.9239, 0.3753, 0, -0.8315, 0.5556, 0, -0.9239, 0.3827, 0, 0.3827, 0.9239, 0, 0.1951, 0.9808, 0, -0.9808, 0.1951, 0, 0, 1, 0, 0.9808, 0.1951, 0, -0.1951, 0.9808, 0, 0.9239, 0.3827, 0, -0.3827, 0.9239, 0, 0.8315, 0.5556, 0, -0.5556, 0.8315, 0, 0.7071, 0.7071, 0, -0.7071, 0.7071, 0, 0.5556, 0.8315, 0.1084, 0.8315, 0.5449, 0.1802, -0.3827, 0.9061, 0.1622, -0.5556, 0.8155, 0.138, 0.7071, 0.6935, 0.138, -0.7071, 0.6935, 0.1622, 0.5556, 0.8155, 0.1084, -0.8315, 0.5449, 0.1802, 0.3827, 0.9061, 0.0747, -0.9239, 0.3753, 0.1913, 0.1951, 0.9619, 0.0381, -0.9808, 0.1913, 0.1951, 0, 0.9808, 0.0381, 0.9808, 0.1913, 0.1913, -0.1951, 0.9619, 0.0747, 0.9239, 0.3753, 0.3536, 0.3827, 0.8536, 0.3753, 0.1951, 0.9061, 0.0747, -0.9808, 0.1802, 0.3827, 0, 0.9239, 0.0747, 0.9808, 0.1802, 0.3753, -0.1951, 0.9061, 0.1464, 0.9239, 0.3536, 0.3536, -0.3827, 0.8536, 0.2126, 0.8315, 0.5133, 0.3182, -0.5556, 0.7682, 0.2706, 0.7071, 0.6533, 0.2706, -0.7071, 0.6533, 0.3182, 0.5556, 0.7682, 0.2126, -0.8315, 0.5133, 0.1464, -0.9239, 0.3536, 0.5133, -0.3827, 0.7682, 0.4619, -0.5556, 0.6913, 0.3928, 0.7071, 0.5879, 0.3928, -0.7071, 0.5879, 0.4619, 0.5556, 0.6913, 0.3087, -0.8315, 0.4619, 0.5133, 0.3827, 0.7682, 0.2126, -0.9239, 0.3182, 0.5449, 0.1951, 0.8155, 0.1084, -0.9808, 0.1622, 0.5556, 0, 0.8315, 0.1084, 0.9808, 0.1622, 0.5449, -0.1951, 0.8155, 0.2126, 0.9239, 0.3182, 0.3087, 0.8315, 0.4619, 0.2706, -0.9239, 0.2706, 0.138, -0.9808, 0.1379, 0.7071, 0, 0.7071, 0.138, 0.9808, 0.1379, 0.6935, -0.1951, 0.6935, 0.2706, 0.9239, 0.2706, 0.6533, -0.3827, 0.6533, 0.3928, 0.8315, 0.3928, 0.5879, -0.5556, 0.5879, 0.5, 0.7071, 0.5, 0.5, -0.7071, 0.5, 0.5879, 0.5556, 0.5879, 0.3928, -0.8315, 0.3928, 0.6533, 0.3827, 0.6533, 0.6935, 0.1951, 0.6935, 0.4619, 0.8315, 0.3087, 0.5879, 0.7071, 0.3928, 0.5879, -0.7071, 0.3928, 0.6913, 0.5556, 0.4619, 0.4619, -0.8315, 0.3087, 0.7682, 0.3827, 0.5133, 0.3182, -0.9239, 0.2126, 0.8155, 0.1951, 0.5449, 0.1622, -0.9808, 0.1084, 0.8315, 0, 0.5556, 0.1622, 0.9808, 0.1084, 0.8155, -0.1951, 0.5449, 0.3182, 0.9239, 0.2126, 0.7682, -0.3827, 0.5133, 0.6913, -0.5556, 0.4619, 0.9239, 0, 0.3827, 0.1802, 0.9808, 0.0747, 0.1802, -0.9808, 0.0747, 0.9061, -0.1951, 0.3753, 0.3536, 0.9239, 0.1464, 0.8536, -0.3827, 0.3536, 0.5133, 0.8315, 0.2126, 0.7682, -0.5556, 0.3182, 0.6533, 0.7071, 0.2706, 0.6533, -0.7071, 0.2706, 0.7682, 0.5556, 0.3182, 0.5133, -0.8315, 0.2126, 0.8536, 0.3827, 0.3536, 0.3536, -0.9239, 0.1464, 0.9061, 0.1951, 0.3753, 0.6935, -0.7071, 0.1379, 0.8155, 0.5556, 0.1622, 0.5449, -0.8315, 0.1084, 0.9061, 0.3827, 0.1802, 0.3753, -0.9239, 0.0747, 0.9619, 0.1951, 0.1913, 0.1913, -0.9808, 0.0381, 0.9808, 0, 0.1951, 0.1913, 0.9808, 0.0381, 0.9619, -0.1951, 0.1913, 0.3753, 0.9239, 0.0747, 0.9061, -0.3827, 0.1802, 0.5449, 0.8315, 0.1084, 0.8155, -0.5556, 0.1622, 0.6935, 0.7071, 0.1379, 0.1951, -0.9808, 0, 0.9808, -0.1951, 0, 0.3827, 0.9239, 0, 0.9239, -0.3827, 0, 0.5556, 0.8315, 0, 0.8315, -0.5556, 0, 0.7071, 0.7071, 0, 0.7071, -0.7071, 0, 0.8315, 0.5556, 0, 0.5556, -0.8315, 0, 0.9239, 0.3827, 0, 0.3827, -0.9239, 0, 0.9808, 0.1951, 0, 1, 0, 0, 0.1951, 0.9808, 0, 0.5449, -0.8315, -0.1084, 0.9061, 0.3827, -0.1802, 0.3753, -0.9239, -0.0747, 0.9619, 0.1951, -0.1913, 0.1913, -0.9808, -0.0381, 0.9808, 0, -0.1951, 0.1913, 0.9808, -0.0381, 0.9619, -0.1951, -0.1913, 0.3753, 0.9239, -0.0747, 0.9061, -0.3827, -0.1802, 0.5449, 0.8315, -0.1084, 0.8155, -0.5556, -0.1622, 0.6935, 0.7071, -0.1379, 0.6935, -0.7071, -0.1379, 0.8155, 0.5556, -0.1622, 0.3536, 0.9239, -0.1464, 0.8536, -0.3827, -0.3536, 0.5133, 0.8315, -0.2126, 0.7682, -0.5556, -0.3182, 0.6533, 0.7071, -0.2706, 0.6533, -0.7071, -0.2706, 0.7682, 0.5556, -0.3182, 0.5133, -0.8315, -0.2126, 0.8536, 0.3827, -0.3536, 0.3536, -0.9239, -0.1464, 0.9061, 0.1951, -0.3753, 0.1802, -0.9808, -0.0747, 0.9239, 0, -0.3827, 0.1802, 0.9808, -0.0747, 0.9061, -0.1951, -0.3753, 0.7682, 0.3827, -0.5133, 0.3182, -0.9239, -0.2126, 0.8155, 0.1951, -0.5449, 0.1622, -0.9808, -0.1084, 0.8315, 0, -0.5556, 0.1622, 0.9808, -0.1084, 0.8155, -0.1951, -0.5449, 0.3182, 0.9239, -0.2126, 0.7682, -0.3827, -0.5133, 0.4619, 0.8315, -0.3087, 0.6913, -0.5556, -0.4619, 0.5879, 0.7071, -0.3928, 0.5879, -0.7071, -0.3928, 0.6913, 0.5556, -0.4619, 0.4619, -0.8315, -0.3087, 0.6533, -0.3827, -0.6533, 0.3928, 0.8315, -0.3928, 0.5879, -0.5556, -0.5879, 0.5, 0.7071, -0.5, 0.5, -0.7071, -0.5, 0.5879, 0.5556, -0.5879, 0.3928, -0.8315, -0.3928, 0.6533, 0.3827, -0.6533, 0.2706, -0.9239, -0.2706, 0.6935, 0.1951, -0.6935, 0.1379, -0.9808, -0.1379, 0.7071, 0, -0.7071, 0.138, 0.9808, -0.1379, 0.6935, -0.1951, -0.6935, 0.2706, 0.9239, -0.2706, 0.3087, -0.8315, -0.4619, 0.2126, -0.9239, -0.3182, 0.5133, 0.3827, -0.7682, 0.5449, 0.1951, -0.8155, 0.1084, -0.9808, -0.1622, 0.5556, 0, -0.8315, 0.1084, 0.9808, -0.1622, 0.5449, -0.1951, -0.8155, 0.2126, 0.9239, -0.3182, 0.5133, -0.3827, -0.7682, 0.3087, 0.8315, -0.4619, 0.4619, -0.5556, -0.6913, 0.3928, 0.7071, -0.5879, 0.3928, -0.7071, -0.5879, 0.4619, 0.5556, -0.6913, 0.2126, 0.8315, -0.5133, 0.3536, -0.3827, -0.8536, 0.3182, -0.5556, -0.7682, 0.2706, 0.7071, -0.6533, 0.2706, -0.7071, -0.6533, 0.3182, 0.5556, -0.7682, 0.2126, -0.8315, -0.5133, 0.3536, 0.3827, -0.8536, 0.1464, -0.9239, -0.3536, 0.3753, 0.1951, -0.9061, 0.0747, -0.9808, -0.1802, 0.3827, 0, -0.9239, 0.0747, 0.9808, -0.1802, 0.3753, -0.1951, -0.9061, 0.1464, 0.9239, -0.3536, 0.1802, 0.3827, -0.9061, 0.1913, 0.1951, -0.9619, 0.0381, -0.9808, -0.1913, 0.1951, 0, -0.9808, 0.0381, 0.9808, -0.1913, 0.1913, -0.1951, -0.9619, 0.0747, 0.9239, -0.3753, 0.1802, -0.3827, -0.9061, 0.1084, 0.8315, -0.5449, 0.1622, -0.5556, -0.8155, 0.1379, 0.7071, -0.6935, 0.1379, -0.7071, -0.6935, 0.1622, 0.5556, -0.8155, 0.1084, -0.8315, -0.5449, 0.0747, -0.9239, -0.3753, 0, -0.3827, -0.9239, 0, -0.5556, -0.8315, 0, 0.8315, -0.5556, 0, 0.7071, -0.7071, 0, -0.7071, -0.7071, 0, 0.5556, -0.8315, 0, -0.8315, -0.5556, 0, 0.3827, -0.9239, 0, -0.9239, -0.3827, 0, 0.1951, -0.9808, 0, -0.9808, -0.1951, 0, 0, -1, 0, 0.9808, -0.1951, 0, -0.1951, -0.9808, 0, 0.9239, -0.3827, -0.0381, -0.9808, -0.1913, -0.1951, 0, -0.9808, -0.0381, 0.9808, -0.1913, -0.1913, -0.1951, -0.9619, -0.0747, 0.9239, -0.3753, -0.1802, -0.3827, -0.9061, -0.1084, 0.8315, -0.5449, -0.1622, -0.5556, -0.8155, -0.1379, 0.7071, -0.6935, -0.1379, -0.7071, -0.6935, -0.1622, 0.5556, -0.8155, -0.1084, -0.8315, -0.5449, -0.1802, 0.3827, -0.9061, -0.0747, -0.9239, -0.3753, -0.1913, 0.1951, -0.9619, -0.2706, -0.7071, -0.6533, -0.3182, 0.5556, -0.7682, -0.2126, -0.8315, -0.5133, -0.3536, 0.3827, -0.8536, -0.1464, -0.9239, -0.3536, -0.3753, 0.1951, -0.9061, -0.0747, -0.9808, -0.1802, -0.3827, 0, -0.9239, -0.0747, 0.9808, -0.1802, -0.3753, -0.1951, -0.9061, -0.1464, 0.9239, -0.3536, -0.3536, -0.3827, -0.8536, -0.2126, 0.8315, -0.5133, -0.3182, -0.5556, -0.7682, -0.2706, 0.7071, -0.6533, -0.1084, 0.9808, -0.1622, -0.1084, -0.9808, -0.1622, -0.5556, 0, -0.8315, -0.5449, -0.1951, -0.8155, -0.2126, 0.9239, -0.3182, -0.5133, -0.3827, -0.7682, -0.3087, 0.8315, -0.4619, -0.4619, -0.5556, -0.6913, -0.3928, 0.7071, -0.5879, -0.3928, -0.7071, -0.5879, -0.4619, 0.5556, -0.6913, -0.3087, -0.8315, -0.4619, -0.5133, 0.3827, -0.7682, -0.2126, -0.9239, -0.3182, -0.5449, 0.1951, -0.8155, -0.5, 0.7071, -0.5, -0.5879, 0.5556, -0.5879, -0.3928, -0.8315, -0.3928, -0.6533, 0.3827, -0.6533, -0.2706, -0.9239, -0.2706, -0.6935, 0.1951, -0.6935, -0.1379, -0.9808, -0.1379, -0.7071, 0, -0.7071, -0.1379, 0.9808, -0.1379, -0.6935, -0.1951, -0.6935, -0.2706, 0.9239, -0.2706, -0.6533, -0.3827, -0.6533, -0.3928, 0.8315, -0.3928, -0.5879, -0.5556, -0.5879, -0.5, -0.7071, -0.5, -0.8155, -0.1951, -0.5449, -0.3182, 0.9239, -0.2126, -0.7682, -0.3827, -0.5133, -0.4619, 0.8315, -0.3087, -0.6913, -0.5556, -0.4619, -0.5879, 0.7071, -0.3928, -0.5879, -0.7071, -0.3928, -0.6913, 0.5556, -0.4619, -0.4619, -0.8315, -0.3087, -0.7682, 0.3827, -0.5133, -0.3182, -0.9239, -0.2126, -0.8155, 0.1951, -0.5449, -0.1622, -0.9808, -0.1084, -0.8315, 0, -0.5556, -0.1622, 0.9808, -0.1084, -0.5133, -0.8315, -0.2126, -0.8536, 0.3827, -0.3536, -0.3536, -0.9239, -0.1464, -0.9061, 0.1951, -0.3753, -0.1802, -0.9808, -0.0747, -0.9239, 0, -0.3827, -0.1802, 0.9808, -0.0747, -0.9061, -0.1951, -0.3753, -0.3536, 0.9239, -0.1464, -0.8536, -0.3827, -0.3536, -0.5133, 0.8315, -0.2126, -0.7682, -0.5556, -0.3182, -0.6533, 0.7071, -0.2706, -0.6533, -0.7071, -0.2706, -0.7682, 0.5556, -0.3182, -0.3753, 0.9239, -0.0747, -0.9061, -0.3827, -0.1802, -0.5449, 0.8315, -0.1084, -0.8155, -0.5556, -0.1622, -0.6935, 0.7071, -0.1379, -0.6935, -0.7071, -0.1379, -0.8155, 0.5556, -0.1622, -0.5449, -0.8315, -0.1084, -0.9061, 0.3827, -0.1802, -0.3753, -0.9239, -0.0747, -0.9619, 0.1951, -0.1913, -0.1913, -0.9808, -0.0381, -0.9808, 0, -0.1951, -0.1913, 0.9808, -0.0381, -0.9619, -0.1951, -0.1913]; + _this.indices = [0, 1, 2, 3, 4, 5, 2, 6, 7, 5, 8, 9, 7, 10, 11, 9, 12, 13, 14, 15, 16, 17, 11, 10, 13, 18, 19, 14, 20, 21, 22, 18, 23, 24, 20, 25, 22, 26, 27, 24, 28, 29, 0, 26, 30, 29, 31, 3, 30, 32, 33, 28, 34, 31, 30, 35, 1, 31, 36, 4, 1, 37, 6, 4, 38, 8, 6, 39, 10, 8, 40, 12, 16, 15, 41, 17, 10, 39, 18, 40, 42, 16, 43, 20, 23, 42, 44, 20, 45, 25, 23, 32, 26, 25, 46, 28, 41, 15, 47, 17, 39, 48, 40, 49, 42, 41, 50, 43, 42, 51, 44, 43, 52, 45, 32, 51, 53, 45, 54, 46, 33, 53, 55, 46, 56, 34, 33, 57, 35, 34, 58, 36, 35, 59, 37, 38, 58, 60, 37, 48, 39, 38, 61, 40, 54, 62, 56, 55, 63, 57, 56, 64, 58, 57, 65, 59, 58, 66, 60, 59, 67, 48, 61, 66, 68, 47, 15, 69, 17, 48, 67, 61, 70, 49, 47, 71, 50, 49, 72, 51, 50, 73, 52, 53, 72, 74, 52, 75, 54, 53, 76, 55, 68, 77, 70, 69, 78, 71, 70, 79, 72, 71, 80, 73, 74, 79, 81, 73, 82, 75, 74, 83, 76, 62, 82, 84, 63, 83, 85, 62, 86, 64, 65, 85, 87, 64, 88, 66, 65, 89, 67, 68, 88, 90, 69, 15, 91, 17, 67, 89, 83, 92, 85, 84, 93, 86, 87, 92, 94, 88, 93, 95, 87, 96, 89, 88, 97, 90, 91, 15, 98, 17, 89, 96, 90, 99, 77, 91, 100, 78, 77, 101, 79, 78, 102, 80, 81, 101, 103, 80, 104, 82, 83, 103, 105, 84, 104, 106, 99, 107, 101, 100, 108, 102, 103, 107, 109, 104, 108, 110, 105, 109, 111, 104, 112, 106, 105, 113, 92, 106, 114, 93, 92, 115, 94, 95, 114, 116, 96, 115, 117, 95, 118, 97, 98, 15, 119, 17, 96, 117, 97, 120, 99, 98, 121, 100, 115, 122, 123, 116, 124, 125, 117, 123, 126, 116, 127, 118, 119, 15, 128, 17, 117, 126, 120, 127, 129, 119, 130, 121, 120, 131, 107, 121, 132, 108, 109, 131, 133, 108, 134, 110, 109, 135, 111, 110, 136, 112, 113, 135, 122, 112, 124, 114, 130, 137, 132, 133, 138, 139, 132, 140, 134, 133, 141, 135, 136, 140, 142, 122, 141, 143, 136, 144, 124, 122, 145, 123, 125, 144, 146, 126, 145, 147, 125, 148, 127, 128, 15, 149, 17, 126, 147, 127, 150, 129, 130, 149, 151, 129, 138, 131, 146, 152, 153, 145, 154, 147, 146, 155, 148, 149, 15, 156, 17, 147, 154, 148, 157, 150, 149, 158, 151, 150, 159, 138, 137, 158, 160, 139, 159, 161, 137, 162, 140, 139, 163, 141, 140, 164, 142, 141, 165, 143, 142, 152, 144, 145, 165, 166, 161, 167, 168, 160, 169, 162, 161, 170, 163, 164, 169, 171, 165, 170, 172, 164, 173, 152, 165, 174, 166, 153, 173, 175, 166, 176, 154, 153, 177, 155, 156, 15, 178, 17, 154, 176, 157, 177, 179, 156, 180, 158, 157, 167, 159, 158, 181, 160, 176, 182, 183, 175, 184, 177, 178, 15, 185, 17, 176, 183, 177, 186, 179, 178, 187, 180, 179, 188, 167, 180, 189, 181, 167, 190, 168, 181, 191, 169, 168, 192, 170, 169, 193, 171, 172, 192, 194, 171, 195, 173, 172, 182, 174, 175, 195, 196, 191, 197, 198, 190, 199, 192, 193, 198, 200, 194, 199, 201, 193, 202, 195, 194, 203, 182, 196, 202, 204, 183, 203, 205, 196, 206, 184, 185, 15, 207, 17, 183, 205, 186, 206, 208, 185, 209, 187, 186, 210, 188, 187, 197, 189, 190, 210, 211, 204, 212, 206, 207, 15, 213, 17, 205, 214, 206, 215, 208, 207, 216, 209, 208, 217, 210, 197, 216, 218, 211, 217, 219, 197, 220, 198, 211, 221, 199, 198, 222, 200, 201, 221, 223, 200, 224, 202, 201, 225, 203, 204, 224, 226, 203, 214, 205, 219, 227, 221, 220, 228, 222, 221, 229, 223, 222, 230, 224, 223, 231, 225, 226, 230, 232, 214, 231, 233, 226, 234, 212, 213, 15, 235, 17, 214, 233, 212, 236, 215, 213, 237, 216, 215, 238, 217, 216, 239, 218, 219, 238, 240, 218, 241, 220, 17, 233, 242, 234, 243, 236, 235, 244, 237, 236, 245, 238, 239, 244, 246, 240, 245, 247, 241, 246, 248, 240, 249, 227, 241, 250, 228, 229, 249, 251, 228, 252, 230, 229, 253, 231, 232, 252, 254, 233, 253, 242, 232, 255, 234, 235, 15, 256, 249, 257, 251, 250, 258, 252, 251, 259, 253, 254, 258, 260, 253, 261, 242, 254, 262, 255, 256, 15, 263, 17, 242, 261, 255, 264, 243, 256, 265, 244, 243, 266, 245, 244, 267, 246, 247, 266, 268, 248, 267, 269, 247, 270, 249, 250, 269, 271, 263, 272, 265, 264, 273, 266, 265, 274, 267, 268, 273, 275, 269, 274, 276, 268, 277, 270, 271, 276, 278, 270, 279, 257, 271, 280, 258, 259, 279, 281, 260, 280, 282, 261, 281, 283, 260, 284, 262, 263, 15, 285, 17, 261, 283, 264, 284, 286, 278, 287, 280, 279, 288, 281, 282, 287, 289, 283, 288, 290, 282, 291, 284, 285, 15, 292, 17, 283, 290, 284, 293, 286, 285, 294, 272, 286, 295, 273, 272, 296, 274, 275, 295, 297, 274, 298, 276, 275, 299, 277, 278, 298, 300, 279, 299, 301, 293, 302, 295, 294, 303, 296, 297, 302, 304, 298, 303, 305, 297, 306, 299, 300, 305, 307, 299, 308, 301, 300, 309, 287, 301, 310, 288, 289, 309, 311, 288, 312, 290, 291, 311, 313, 292, 15, 314, 17, 290, 312, 291, 315, 293, 292, 316, 294, 310, 317, 318, 311, 319, 320, 310, 321, 312, 311, 322, 313, 314, 15, 323, 17, 312, 321, 313, 324, 315, 314, 325, 316, 315, 326, 302, 316, 327, 303, 304, 326, 328, 305, 327, 329, 304, 330, 306, 307, 329, 331, 306, 317, 308, 307, 319, 309, 325, 332, 327, 328, 333, 334, 329, 332, 335, 330, 334, 336, 331, 335, 337, 330, 338, 317, 331, 339, 319, 318, 338, 340, 320, 339, 341, 321, 340, 342, 320, 343, 322, 323, 15, 344, 17, 321, 342, 322, 345, 324, 323, 346, 325, 324, 333, 326, 341, 347, 348, 340, 349, 342, 341, 350, 343, 344, 15, 351, 17, 342, 349, 343, 352, 345, 346, 351, 353, 345, 354, 333, 346, 355, 332, 334, 354, 356, 335, 355, 357, 334, 358, 336, 337, 357, 359, 336, 360, 338, 337, 347, 339, 340, 360, 361, 356, 362, 363, 357, 364, 365, 356, 366, 358, 357, 367, 359, 360, 366, 368, 359, 369, 347, 361, 368, 370, 348, 369, 371, 361, 372, 349, 348, 373, 350, 351, 15, 374, 17, 349, 372, 352, 373, 375, 353, 374, 376, 352, 362, 354, 353, 364, 355, 370, 377, 372, 371, 378, 373, 374, 15, 379, 17, 372, 377, 375, 378, 380, 376, 379, 381, 375, 382, 362, 376, 383, 364, 363, 382, 384, 365, 383, 385, 363, 386, 366, 367, 385, 387, 366, 388, 368, 367, 389, 369, 370, 388, 390, 371, 389, 391, 384, 392, 386, 385, 393, 387, 386, 394, 388, 387, 395, 389, 390, 394, 396, 391, 395, 397, 390, 398, 377, 391, 399, 378, 379, 15, 400, 17, 377, 398, 378, 401, 380, 379, 402, 381, 380, 403, 382, 381, 404, 383, 384, 403, 405, 385, 404, 406, 400, 15, 407, 17, 398, 408, 401, 409, 410, 400, 411, 402, 401, 412, 403, 404, 411, 413, 405, 412, 414, 406, 413, 415, 405, 416, 392, 393, 415, 417, 392, 418, 394, 393, 419, 395, 396, 418, 420, 397, 419, 421, 396, 408, 398, 397, 409, 399, 417, 422, 423, 416, 424, 418, 417, 425, 419, 418, 426, 420, 421, 425, 427, 420, 428, 408, 421, 429, 409, 407, 15, 430, 17, 408, 428, 410, 429, 431, 407, 432, 411, 410, 433, 412, 411, 434, 413, 414, 433, 435, 413, 422, 415, 414, 436, 416, 429, 437, 431, 430, 438, 432, 431, 439, 433, 432, 440, 434, 435, 439, 441, 434, 442, 422, 435, 443, 436, 423, 442, 444, 424, 443, 445, 423, 446, 425, 424, 447, 426, 427, 446, 448, 426, 449, 428, 429, 448, 450, 430, 15, 451, 17, 428, 449, 443, 452, 445, 444, 453, 446, 445, 454, 447, 448, 453, 455, 447, 456, 449, 448, 457, 450, 451, 15, 458, 17, 449, 456, 450, 459, 437, 438, 458, 460, 437, 461, 439, 440, 460, 462, 441, 461, 463, 442, 462, 464, 441, 465, 443, 444, 464, 466, 458, 467, 460, 459, 468, 461, 460, 469, 462, 463, 468, 470, 462, 471, 464, 463, 472, 465, 466, 471, 473, 465, 474, 452, 466, 475, 453, 452, 476, 454, 455, 475, 477, 456, 476, 478, 455, 479, 457, 458, 15, 480, 17, 456, 478, 457, 481, 459, 475, 3, 5, 474, 7, 476, 477, 5, 9, 476, 11, 478, 479, 9, 13, 480, 15, 14, 17, 478, 11, 479, 19, 481, 467, 14, 21, 481, 22, 468, 469, 21, 24, 468, 27, 470, 471, 24, 29, 470, 0, 472, 473, 29, 3, 472, 2, 474, 0, 30, 1, 3, 31, 4, 2, 1, 6, 5, 4, 8, 7, 6, 10, 9, 8, 12, 13, 12, 18, 14, 16, 20, 22, 19, 18, 24, 21, 20, 22, 23, 26, 24, 25, 28, 0, 27, 26, 29, 28, 31, 30, 26, 32, 28, 46, 34, 30, 33, 35, 31, 34, 36, 1, 35, 37, 4, 36, 38, 6, 37, 39, 8, 38, 40, 18, 12, 40, 16, 41, 43, 23, 18, 42, 20, 43, 45, 23, 44, 32, 25, 45, 46, 40, 61, 49, 41, 47, 50, 42, 49, 51, 43, 50, 52, 32, 44, 51, 45, 52, 54, 33, 32, 53, 46, 54, 56, 33, 55, 57, 34, 56, 58, 35, 57, 59, 38, 36, 58, 37, 59, 48, 38, 60, 61, 54, 75, 62, 55, 76, 63, 56, 62, 64, 57, 63, 65, 58, 64, 66, 59, 65, 67, 61, 60, 66, 61, 68, 70, 47, 69, 71, 49, 70, 72, 50, 71, 73, 53, 51, 72, 52, 73, 75, 53, 74, 76, 68, 90, 77, 69, 91, 78, 70, 77, 79, 71, 78, 80, 74, 72, 79, 73, 80, 82, 74, 81, 83, 62, 75, 82, 63, 76, 83, 62, 84, 86, 65, 63, 85, 64, 86, 88, 65, 87, 89, 68, 66, 88, 83, 105, 92, 84, 106, 93, 87, 85, 92, 88, 86, 93, 87, 94, 96, 88, 95, 97, 90, 97, 99, 91, 98, 100, 77, 99, 101, 78, 100, 102, 81, 79, 101, 80, 102, 104, 83, 81, 103, 84, 82, 104, 99, 120, 107, 100, 121, 108, 103, 101, 107, 104, 102, 108, 105, 103, 109, 104, 110, 112, 105, 111, 113, 106, 112, 114, 92, 113, 115, 95, 93, 114, 96, 94, 115, 95, 116, 118, 97, 118, 120, 98, 119, 121, 115, 113, 122, 116, 114, 124, 117, 115, 123, 116, 125, 127, 120, 118, 127, 119, 128, 130, 120, 129, 131, 121, 130, 132, 109, 107, 131, 108, 132, 134, 109, 133, 135, 110, 134, 136, 113, 111, 135, 112, 136, 124, 130, 151, 137, 133, 131, 138, 132, 137, 140, 133, 139, 141, 136, 134, 140, 122, 135, 141, 136, 142, 144, 122, 143, 145, 125, 124, 144, 126, 123, 145, 125, 146, 148, 127, 148, 150, 130, 128, 149, 129, 150, 138, 146, 144, 152, 145, 166, 154, 146, 153, 155, 148, 155, 157, 149, 156, 158, 150, 157, 159, 137, 151, 158, 139, 138, 159, 137, 160, 162, 139, 161, 163, 140, 162, 164, 141, 163, 165, 142, 164, 152, 145, 143, 165, 161, 159, 167, 160, 181, 169, 161, 168, 170, 164, 162, 169, 165, 163, 170, 164, 171, 173, 165, 172, 174, 153, 152, 173, 166, 174, 176, 153, 175, 177, 157, 155, 177, 156, 178, 180, 157, 179, 167, 158, 180, 181, 176, 174, 182, 175, 196, 184, 177, 184, 186, 178, 185, 187, 179, 186, 188, 180, 187, 189, 167, 188, 190, 181, 189, 191, 168, 190, 192, 169, 191, 193, 172, 170, 192, 171, 193, 195, 172, 194, 182, 175, 173, 195, 191, 189, 197, 190, 211, 199, 193, 191, 198, 194, 192, 199, 193, 200, 202, 194, 201, 203, 196, 195, 202, 183, 182, 203, 196, 204, 206, 186, 184, 206, 185, 207, 209, 186, 208, 210, 187, 209, 197, 190, 188, 210, 204, 226, 212, 206, 212, 215, 207, 213, 216, 208, 215, 217, 197, 209, 216, 211, 210, 217, 197, 218, 220, 211, 219, 221, 198, 220, 222, 201, 199, 221, 200, 222, 224, 201, 223, 225, 204, 202, 224, 203, 225, 214, 219, 240, 227, 220, 241, 228, 221, 227, 229, 222, 228, 230, 223, 229, 231, 226, 224, 230, 214, 225, 231, 226, 232, 234, 212, 234, 236, 213, 235, 237, 215, 236, 238, 216, 237, 239, 219, 217, 238, 218, 239, 241, 234, 255, 243, 235, 256, 244, 236, 243, 245, 239, 237, 244, 240, 238, 245, 241, 239, 246, 240, 247, 249, 241, 248, 250, 229, 227, 249, 228, 250, 252, 229, 251, 253, 232, 230, 252, 233, 231, 253, 232, 254, 255, 249, 270, 257, 250, 271, 258, 251, 257, 259, 254, 252, 258, 253, 259, 261, 254, 260, 262, 255, 262, 264, 256, 263, 265, 243, 264, 266, 244, 265, 267, 247, 245, 266, 248, 246, 267, 247, 268, 270, 250, 248, 269, 263, 285, 272, 264, 286, 273, 265, 272, 274, 268, 266, 273, 269, 267, 274, 268, 275, 277, 271, 269, 276, 270, 277, 279, 271, 278, 280, 259, 257, 279, 260, 258, 280, 261, 259, 281, 260, 282, 284, 264, 262, 284, 278, 300, 287, 279, 301, 288, 282, 280, 287, 283, 281, 288, 282, 289, 291, 284, 291, 293, 285, 292, 294, 286, 293, 295, 272, 294, 296, 275, 273, 295, 274, 296, 298, 275, 297, 299, 278, 276, 298, 279, 277, 299, 293, 315, 302, 294, 316, 303, 297, 295, 302, 298, 296, 303, 297, 304, 306, 300, 298, 305, 299, 306, 308, 300, 307, 309, 301, 308, 310, 289, 287, 309, 288, 310, 312, 291, 289, 311, 291, 313, 315, 292, 314, 316, 310, 308, 317, 311, 309, 319, 310, 318, 321, 311, 320, 322, 313, 322, 324, 314, 323, 325, 315, 324, 326, 316, 325, 327, 304, 302, 326, 305, 303, 327, 304, 328, 330, 307, 305, 329, 306, 330, 317, 307, 331, 319, 325, 346, 332, 328, 326, 333, 329, 327, 332, 330, 328, 334, 331, 329, 335, 330, 336, 338, 331, 337, 339, 318, 317, 338, 320, 319, 339, 321, 318, 340, 320, 341, 343, 322, 343, 345, 323, 344, 346, 324, 345, 333, 341, 339, 347, 340, 361, 349, 341, 348, 350, 343, 350, 352, 346, 344, 351, 345, 352, 354, 346, 353, 355, 334, 333, 354, 335, 332, 355, 334, 356, 358, 337, 335, 357, 336, 358, 360, 337, 359, 347, 340, 338, 360, 356, 354, 362, 357, 355, 364, 356, 363, 366, 357, 365, 367, 360, 358, 366, 359, 367, 369, 361, 360, 368, 348, 347, 369, 361, 370, 372, 348, 371, 373, 352, 350, 373, 353, 351, 374, 352, 375, 362, 353, 376, 364, 370, 390, 377, 371, 391, 378, 375, 373, 378, 376, 374, 379, 375, 380, 382, 376, 381, 383, 363, 362, 382, 365, 364, 383, 363, 384, 386, 367, 365, 385, 366, 386, 388, 367, 387, 389, 370, 368, 388, 371, 369, 389, 384, 405, 392, 385, 406, 393, 386, 392, 394, 387, 393, 395, 390, 388, 394, 391, 389, 395, 390, 396, 398, 391, 397, 399, 378, 399, 401, 379, 400, 402, 380, 401, 403, 381, 402, 404, 384, 382, 403, 385, 383, 404, 401, 399, 409, 400, 407, 411, 401, 410, 412, 404, 402, 411, 405, 403, 412, 406, 404, 413, 405, 414, 416, 393, 406, 415, 392, 416, 418, 393, 417, 419, 396, 394, 418, 397, 395, 419, 396, 420, 408, 397, 421, 409, 417, 415, 422, 416, 436, 424, 417, 423, 425, 418, 424, 426, 421, 419, 425, 420, 426, 428, 421, 427, 429, 410, 409, 429, 407, 430, 432, 410, 431, 433, 411, 432, 434, 414, 412, 433, 413, 434, 422, 414, 435, 436, 429, 450, 437, 430, 451, 438, 431, 437, 439, 432, 438, 440, 435, 433, 439, 434, 440, 442, 435, 441, 443, 423, 422, 442, 424, 436, 443, 423, 444, 446, 424, 445, 447, 427, 425, 446, 426, 447, 449, 429, 427, 448, 443, 465, 452, 444, 466, 453, 445, 452, 454, 448, 446, 453, 447, 454, 456, 448, 455, 457, 450, 457, 459, 438, 451, 458, 437, 459, 461, 440, 438, 460, 441, 439, 461, 442, 440, 462, 441, 463, 465, 444, 442, 464, 458, 480, 467, 459, 481, 468, 460, 467, 469, 463, 461, 468, 462, 469, 471, 463, 470, 472, 466, 464, 471, 465, 472, 474, 466, 473, 475, 452, 474, 476, 455, 453, 475, 456, 454, 476, 455, 477, 479, 457, 479, 481, 475, 473, 3, 474, 2, 7, 477, 475, 5, 476, 7, 11, 479, 477, 9, 479, 13, 19, 467, 480, 14, 481, 19, 22, 469, 467, 21, 468, 22, 27, 471, 469, 24, 470, 27, 0, 473, 471, 29, 472, 0, 2]; + _this.normals = [-0.7101, -0.704, 0, -0.549, -0.8286, 0.1092, -0.5598, -0.8286, 0, -0.8333, 0.5528, 0, -0.907, 0.3805, 0.1804, -0.9247, 0.3805, 0, -0.3804, -0.9217, 0.0757, -0.3879, -0.9217, 0, -0.9622, 0.1939, 0.1914, -0.981, 0.1939, 0, -0.1971, -0.9796, 0.0392, -0.201, -0.9796, 0, -0.9808, 0, 0.1951, -1, 0, 0, -0.201, 0.9796, 0, 0, 1, 0, -0.1971, 0.9796, 0.0392, 0, -1, 0, -0.9622, -0.1939, 0.1914, -0.981, -0.1939, 0, -0.3804, 0.9217, 0.0757, -0.3879, 0.9217, 0, -0.9247, -0.3805, 0, -0.907, -0.3805, 0.1804, -0.5598, 0.8286, 0, -0.549, 0.8286, 0.1092, -0.8173, -0.5528, 0.1626, -0.8333, -0.5528, 0, -0.6965, 0.704, 0.1385, -0.7101, 0.704, 0, -0.6965, -0.704, 0.1385, -0.8173, 0.5528, 0.1626, -0.7699, -0.5528, 0.3189, -0.6561, -0.704, 0.2717, -0.7699, 0.5528, 0.3189, -0.5171, -0.8286, 0.2142, -0.8544, 0.3805, 0.3539, -0.3583, -0.9217, 0.1484, -0.9063, 0.1939, 0.3754, -0.1856, -0.9796, 0.0769, -0.9239, 0, 0.3827, -0.1856, 0.9796, 0.0769, -0.9063, -0.1939, 0.3754, -0.3583, 0.9217, 0.1484, -0.8544, -0.3805, 0.3539, -0.5171, 0.8286, 0.2142, -0.6561, 0.704, 0.2717, -0.1671, 0.9796, 0.1116, -0.1671, -0.9796, 0.1116, -0.8157, -0.1939, 0.545, -0.3225, 0.9217, 0.2155, -0.7689, -0.3805, 0.5137, -0.4654, 0.8286, 0.311, -0.6929, -0.5528, 0.463, -0.5904, 0.704, 0.3945, -0.5904, -0.704, 0.3945, -0.6929, 0.5528, 0.463, -0.4654, -0.8286, 0.311, -0.7689, 0.3805, 0.5137, -0.3225, -0.9217, 0.2155, -0.8157, 0.1939, 0.545, -0.8314, 0, 0.5556, -0.5893, 0.5528, 0.5893, -0.3958, -0.8286, 0.3958, -0.6539, 0.3805, 0.6539, -0.2743, -0.9217, 0.2743, -0.6937, 0.1939, 0.6937, -0.1421, -0.9796, 0.1421, -0.7071, 0, 0.7071, -0.1421, 0.9796, 0.1421, -0.6937, -0.1939, 0.6937, -0.2743, 0.9217, 0.2743, -0.6539, -0.3805, 0.6539, -0.3958, 0.8286, 0.3958, -0.5893, -0.5528, 0.5893, -0.5021, 0.704, 0.5021, -0.5021, -0.704, 0.5021, -0.545, -0.1939, 0.8157, -0.2155, 0.9217, 0.3225, -0.5137, -0.3805, 0.7689, -0.311, 0.8286, 0.4654, -0.463, -0.5528, 0.6929, -0.3945, 0.704, 0.5904, -0.3945, -0.704, 0.5904, -0.463, 0.5528, 0.6929, -0.311, -0.8286, 0.4654, -0.5137, 0.3805, 0.7689, -0.2155, -0.9217, 0.3225, -0.545, 0.1939, 0.8157, -0.1116, -0.9796, 0.1671, -0.5556, 0, 0.8314, -0.1116, 0.9796, 0.1671, -0.2142, -0.8286, 0.5171, -0.3539, 0.3805, 0.8544, -0.1484, -0.9217, 0.3583, -0.3754, 0.1939, 0.9063, -0.0769, -0.9796, 0.1856, -0.3827, 0, 0.9239, -0.0769, 0.9796, 0.1856, -0.3754, -0.1939, 0.9063, -0.1484, 0.9217, 0.3583, -0.3539, -0.3805, 0.8544, -0.2142, 0.8286, 0.5171, -0.3189, -0.5528, 0.7699, -0.2717, 0.704, 0.6561, -0.2717, -0.704, 0.6561, -0.3189, 0.5528, 0.7699, -0.1804, -0.3805, 0.907, -0.1092, 0.8286, 0.549, -0.1626, -0.5528, 0.8173, -0.1385, 0.704, 0.6965, -0.1385, -0.704, 0.6965, -0.1626, 0.5528, 0.8173, -0.1092, -0.8286, 0.549, -0.1804, 0.3805, 0.907, -0.0757, -0.9217, 0.3804, -0.1914, 0.1939, 0.9622, -0.0392, -0.9796, 0.1971, -0.1951, 0, 0.9808, -0.0392, 0.9796, 0.1971, -0.1914, -0.1939, 0.9622, -0.0757, 0.9217, 0.3804, 0, -0.8286, 0.5598, 0, -0.9217, 0.3879, 0, 0.3805, 0.9247, 0, 0.1939, 0.981, 0, -0.9796, 0.201, 0, 0, 1, 0, 0.9796, 0.201, 0, -0.1939, 0.981, 0, 0.9217, 0.3879, 0, -0.3805, 0.9247, 0, 0.8286, 0.5598, 0, -0.5528, 0.8333, 0, 0.704, 0.7101, 0, -0.704, 0.7101, 0, 0.5528, 0.8333, 0.1092, 0.8286, 0.549, 0.1804, -0.3805, 0.907, 0.1626, -0.5528, 0.8173, 0.1385, 0.704, 0.6965, 0.1385, -0.704, 0.6965, 0.1626, 0.5528, 0.8173, 0.1092, -0.8286, 0.549, 0.1804, 0.3805, 0.907, 0.0757, -0.9217, 0.3804, 0.1914, 0.1939, 0.9622, 0.0392, -0.9796, 0.1971, 0.1951, 0, 0.9808, 0.0392, 0.9796, 0.1971, 0.1914, -0.1939, 0.9622, 0.0757, 0.9217, 0.3804, 0.3539, 0.3805, 0.8544, 0.3754, 0.1939, 0.9063, 0.0769, -0.9796, 0.1856, 0.3827, 0, 0.9239, 0.0769, 0.9796, 0.1856, 0.3754, -0.1939, 0.9063, 0.1484, 0.9217, 0.3583, 0.3539, -0.3805, 0.8544, 0.2142, 0.8286, 0.5171, 0.3189, -0.5528, 0.7699, 0.2717, 0.704, 0.6561, 0.2717, -0.704, 0.6561, 0.3189, 0.5528, 0.7699, 0.2142, -0.8286, 0.5171, 0.1484, -0.9217, 0.3583, 0.5137, -0.3805, 0.7689, 0.463, -0.5528, 0.6929, 0.3945, 0.704, 0.5904, 0.3945, -0.704, 0.5904, 0.463, 0.5528, 0.6929, 0.311, -0.8286, 0.4654, 0.5137, 0.3805, 0.7689, 0.2155, -0.9217, 0.3225, 0.545, 0.1939, 0.8157, 0.1116, -0.9796, 0.1671, 0.5556, 0, 0.8314, 0.1116, 0.9796, 0.1671, 0.545, -0.1939, 0.8157, 0.2155, 0.9217, 0.3225, 0.311, 0.8286, 0.4654, 0.2743, -0.9217, 0.2743, 0.1421, -0.9796, 0.1421, 0.7071, 0, 0.7071, 0.1421, 0.9796, 0.1421, 0.6937, -0.1939, 0.6937, 0.2743, 0.9217, 0.2743, 0.6539, -0.3805, 0.6539, 0.3958, 0.8286, 0.3958, 0.5893, -0.5528, 0.5893, 0.5021, 0.704, 0.5021, 0.5021, -0.704, 0.5021, 0.5893, 0.5528, 0.5893, 0.3958, -0.8286, 0.3958, 0.6539, 0.3805, 0.6539, 0.6937, 0.1939, 0.6937, 0.4654, 0.8286, 0.311, 0.5904, 0.704, 0.3945, 0.5904, -0.704, 0.3945, 0.6929, 0.5528, 0.463, 0.4654, -0.8286, 0.311, 0.7689, 0.3805, 0.5137, 0.3225, -0.9217, 0.2155, 0.8157, 0.1939, 0.545, 0.1671, -0.9796, 0.1116, 0.8314, 0, 0.5556, 0.1671, 0.9796, 0.1116, 0.8157, -0.1939, 0.545, 0.3225, 0.9217, 0.2155, 0.7689, -0.3805, 0.5137, 0.6929, -0.5528, 0.463, 0.9239, 0, 0.3827, 0.1856, 0.9796, 0.0769, 0.1856, -0.9796, 0.0769, 0.9063, -0.1939, 0.3754, 0.3583, 0.9217, 0.1484, 0.8544, -0.3805, 0.3539, 0.5171, 0.8286, 0.2142, 0.7699, -0.5528, 0.3189, 0.6561, 0.704, 0.2717, 0.6561, -0.704, 0.2717, 0.7699, 0.5528, 0.3189, 0.5171, -0.8286, 0.2142, 0.8544, 0.3805, 0.3539, 0.3583, -0.9217, 0.1484, 0.9063, 0.1939, 0.3754, 0.6965, -0.704, 0.1385, 0.8173, 0.5528, 0.1626, 0.549, -0.8286, 0.1092, 0.907, 0.3805, 0.1804, 0.3804, -0.9217, 0.0757, 0.9622, 0.1939, 0.1914, 0.1971, -0.9796, 0.0392, 0.9808, 0, 0.1951, 0.1971, 0.9796, 0.0392, 0.9622, -0.1939, 0.1914, 0.3804, 0.9217, 0.0757, 0.907, -0.3805, 0.1804, 0.549, 0.8286, 0.1092, 0.8173, -0.5528, 0.1626, 0.6965, 0.704, 0.1385, 0.201, -0.9796, 0, 0.981, -0.1939, 0, 0.3879, 0.9217, 0, 0.9247, -0.3805, 0, 0.5598, 0.8286, 0, 0.8333, -0.5528, 0, 0.7101, 0.704, 0, 0.7101, -0.704, 0, 0.8333, 0.5528, 0, 0.5598, -0.8286, 0, 0.9247, 0.3805, 0, 0.3879, -0.9217, 0, 0.981, 0.1939, 0, 1, 0, 0, 0.201, 0.9796, 0, 0.549, -0.8286, -0.1092, 0.907, 0.3805, -0.1804, 0.3804, -0.9217, -0.0757, 0.9622, 0.1939, -0.1914, 0.1971, -0.9796, -0.0392, 0.9808, 0, -0.1951, 0.1971, 0.9796, -0.0392, 0.9622, -0.1939, -0.1914, 0.3804, 0.9217, -0.0757, 0.907, -0.3805, -0.1804, 0.549, 0.8286, -0.1092, 0.8173, -0.5528, -0.1626, 0.6965, 0.704, -0.1385, 0.6965, -0.704, -0.1385, 0.8173, 0.5528, -0.1626, 0.3583, 0.9217, -0.1484, 0.8544, -0.3805, -0.3539, 0.5171, 0.8286, -0.2142, 0.7699, -0.5528, -0.3189, 0.6561, 0.704, -0.2717, 0.6561, -0.704, -0.2717, 0.7699, 0.5528, -0.3189, 0.5171, -0.8286, -0.2142, 0.8544, 0.3805, -0.3539, 0.3583, -0.9217, -0.1484, 0.9063, 0.1939, -0.3754, 0.1856, -0.9796, -0.0769, 0.9239, 0, -0.3827, 0.1856, 0.9796, -0.0769, 0.9063, -0.1939, -0.3754, 0.7689, 0.3805, -0.5137, 0.3225, -0.9217, -0.2155, 0.8157, 0.1939, -0.545, 0.1671, -0.9796, -0.1116, 0.8314, 0, -0.5556, 0.1671, 0.9796, -0.1116, 0.8157, -0.1939, -0.545, 0.3225, 0.9217, -0.2155, 0.7689, -0.3805, -0.5137, 0.4654, 0.8286, -0.311, 0.6929, -0.5528, -0.463, 0.5904, 0.704, -0.3945, 0.5904, -0.704, -0.3945, 0.6929, 0.5528, -0.463, 0.4654, -0.8286, -0.311, 0.6539, -0.3805, -0.6539, 0.3958, 0.8286, -0.3958, 0.5893, -0.5528, -0.5893, 0.5021, 0.704, -0.5021, 0.5021, -0.704, -0.5021, 0.5893, 0.5528, -0.5893, 0.3958, -0.8286, -0.3958, 0.6539, 0.3805, -0.6539, 0.2743, -0.9217, -0.2743, 0.6937, 0.1939, -0.6937, 0.1421, -0.9796, -0.1421, 0.7071, 0, -0.7071, 0.1421, 0.9796, -0.1421, 0.6937, -0.1939, -0.6937, 0.2743, 0.9217, -0.2743, 0.311, -0.8286, -0.4654, 0.2155, -0.9217, -0.3225, 0.5137, 0.3805, -0.7689, 0.545, 0.1939, -0.8157, 0.1116, -0.9796, -0.1671, 0.5556, 0, -0.8314, 0.1116, 0.9796, -0.1671, 0.545, -0.1939, -0.8157, 0.2155, 0.9217, -0.3225, 0.5137, -0.3805, -0.7689, 0.311, 0.8286, -0.4654, 0.463, -0.5528, -0.6929, 0.3945, 0.704, -0.5904, 0.3945, -0.704, -0.5904, 0.463, 0.5528, -0.6929, 0.2142, 0.8286, -0.5171, 0.3539, -0.3805, -0.8544, 0.3189, -0.5528, -0.7699, 0.2717, 0.704, -0.6561, 0.2717, -0.704, -0.6561, 0.3189, 0.5528, -0.7699, 0.2142, -0.8286, -0.5171, 0.3539, 0.3805, -0.8544, 0.1484, -0.9217, -0.3583, 0.3754, 0.1939, -0.9063, 0.0769, -0.9796, -0.1856, 0.3827, 0, -0.9239, 0.0769, 0.9796, -0.1856, 0.3754, -0.1939, -0.9063, 0.1484, 0.9217, -0.3583, 0.1804, 0.3805, -0.907, 0.1914, 0.1939, -0.9622, 0.0392, -0.9796, -0.1971, 0.1951, 0, -0.9808, 0.0392, 0.9796, -0.1971, 0.1914, -0.1939, -0.9622, 0.0757, 0.9217, -0.3804, 0.1804, -0.3805, -0.907, 0.1092, 0.8286, -0.549, 0.1626, -0.5528, -0.8173, 0.1385, 0.704, -0.6965, 0.1385, -0.704, -0.6965, 0.1626, 0.5528, -0.8173, 0.1092, -0.8286, -0.549, 0.0757, -0.9217, -0.3804, 0, -0.3805, -0.9247, 0, -0.5528, -0.8333, 0, 0.8286, -0.5598, 0, 0.704, -0.7101, 0, -0.704, -0.7101, 0, 0.5528, -0.8333, 0, -0.8286, -0.5598, 0, 0.3805, -0.9247, 0, -0.9217, -0.3879, 0, 0.1939, -0.981, 0, -0.9796, -0.201, 0, 0, -1, 0, 0.9796, -0.201, 0, -0.1939, -0.981, 0, 0.9217, -0.3879, -0.0392, -0.9796, -0.1971, -0.1951, 0, -0.9808, -0.0392, 0.9796, -0.1971, -0.1914, -0.1939, -0.9622, -0.0757, 0.9217, -0.3804, -0.1804, -0.3805, -0.907, -0.1092, 0.8286, -0.549, -0.1626, -0.5528, -0.8173, -0.1385, 0.704, -0.6965, -0.1385, -0.704, -0.6965, -0.1626, 0.5528, -0.8173, -0.1092, -0.8286, -0.549, -0.1804, 0.3805, -0.907, -0.0757, -0.9217, -0.3804, -0.1914, 0.1939, -0.9622, -0.2717, -0.704, -0.6561, -0.3189, 0.5528, -0.7699, -0.2142, -0.8286, -0.5171, -0.3539, 0.3805, -0.8544, -0.1484, -0.9217, -0.3583, -0.3754, 0.1939, -0.9063, -0.0769, -0.9796, -0.1856, -0.3827, 0, -0.9239, -0.0769, 0.9796, -0.1856, -0.3754, -0.1939, -0.9063, -0.1484, 0.9217, -0.3583, -0.3539, -0.3805, -0.8544, -0.2142, 0.8286, -0.5171, -0.3189, -0.5528, -0.7699, -0.2717, 0.704, -0.6561, -0.1116, 0.9796, -0.1671, -0.1116, -0.9796, -0.1671, -0.5556, 0, -0.8314, -0.545, -0.1939, -0.8157, -0.2155, 0.9217, -0.3225, -0.5137, -0.3805, -0.7689, -0.311, 0.8286, -0.4654, -0.463, -0.5528, -0.6929, -0.3945, 0.704, -0.5904, -0.3945, -0.704, -0.5904, -0.463, 0.5528, -0.6929, -0.311, -0.8286, -0.4654, -0.5137, 0.3805, -0.7689, -0.2155, -0.9217, -0.3225, -0.545, 0.1939, -0.8157, -0.5021, 0.704, -0.5021, -0.5893, 0.5528, -0.5893, -0.3958, -0.8286, -0.3958, -0.6539, 0.3805, -0.6539, -0.2743, -0.9217, -0.2743, -0.6937, 0.1939, -0.6937, -0.1421, -0.9796, -0.1421, -0.7071, 0, -0.7071, -0.1421, 0.9796, -0.1421, -0.6937, -0.1939, -0.6937, -0.2743, 0.9217, -0.2743, -0.6539, -0.3805, -0.6539, -0.3958, 0.8286, -0.3958, -0.5893, -0.5528, -0.5893, -0.5021, -0.704, -0.5021, -0.8157, -0.1939, -0.545, -0.3225, 0.9217, -0.2155, -0.7689, -0.3805, -0.5137, -0.4654, 0.8286, -0.311, -0.6929, -0.5528, -0.463, -0.5904, 0.704, -0.3945, -0.5904, -0.704, -0.3945, -0.6929, 0.5528, -0.463, -0.4654, -0.8286, -0.311, -0.7689, 0.3805, -0.5137, -0.3225, -0.9217, -0.2155, -0.8157, 0.1939, -0.545, -0.1671, -0.9796, -0.1116, -0.8314, 0, -0.5556, -0.1671, 0.9796, -0.1116, -0.5171, -0.8286, -0.2142, -0.8544, 0.3805, -0.3539, -0.3583, -0.9217, -0.1484, -0.9063, 0.1939, -0.3754, -0.1856, -0.9796, -0.0769, -0.9239, 0, -0.3827, -0.1856, 0.9796, -0.0769, -0.9063, -0.1939, -0.3754, -0.3583, 0.9217, -0.1484, -0.8544, -0.3805, -0.3539, -0.5171, 0.8286, -0.2142, -0.7699, -0.5528, -0.3189, -0.6561, 0.704, -0.2717, -0.6561, -0.704, -0.2717, -0.7699, 0.5528, -0.3189, -0.3804, 0.9217, -0.0757, -0.907, -0.3805, -0.1804, -0.549, 0.8286, -0.1092, -0.8173, -0.5528, -0.1626, -0.6965, 0.704, -0.1385, -0.6965, -0.704, -0.1385, -0.8173, 0.5528, -0.1626, -0.549, -0.8286, -0.1092, -0.907, 0.3805, -0.1804, -0.3804, -0.9217, -0.0757, -0.9622, 0.1939, -0.1914, -0.1971, -0.9796, -0.0392, -0.9808, 0, -0.1951, -0.1971, 0.9796, -0.0392, -0.9622, -0.1939, -0.1914]; + _this.subMeshes = [new SubMesh(0, 2880)]; + return _this; } return Sphere; + }(BasicMesh); + + var __extends$7 = undefined && undefined.__extends || function () { + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; + return _extendStatics(d, b); + }; + return function (d, b) { + _extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; }(); - - var Hemisphere = function () { + var Hemisphere = function (_super) { + __extends$7(Hemisphere, _super); function Hemisphere() { - this.vertices = [-0.5556, -0.8315, 0, -0.3753, -0.9239, 0.0747, -0.3827, -0.9239, 0, -0.9239, 0.3827, 0, -0.9619, 0.1951, 0.1913, -0.9808, 0.1951, 0, -0.1913, -0.9808, 0.0381, -0.1951, -0.9808, 0, -0.9808, 0, 0.1951, -1, 0, 0, -0.1951, 0.9808, 0, 0, 1, 0, -0.1913, 0.9808, 0.0381, 0, -1, 0, -0.9619, -0.1951, 0.1913, -0.9808, -0.1951, 0, -0.3753, 0.9239, 0.0747, -0.3827, 0.9239, 0, -0.9239, -0.3827, 0, -0.9061, -0.3827, 0.1802, -0.5556, 0.8315, 0, -0.5449, 0.8315, 0.1084, -0.8155, -0.5556, 0.1622, -0.8315, -0.5556, 0, -0.6935, 0.7071, 0.1379, -0.7071, 0.7071, 0, -0.7071, -0.7071, 0, -0.6935, -0.7071, 0.1379, -0.8155, 0.5556, 0.1622, -0.8315, 0.5556, 0, -0.5449, -0.8315, 0.1084, -0.9061, 0.3827, 0.1802, -0.5133, -0.8315, 0.2126, -0.8536, 0.3827, 0.3536, -0.3536, -0.9239, 0.1464, -0.9061, 0.1951, 0.3753, -0.1802, -0.9808, 0.0747, -0.9239, 0, 0.3827, -0.1802, 0.9808, 0.0747, -0.9061, -0.1951, 0.3753, -0.3536, 0.9239, 0.1464, -0.8536, -0.3827, 0.3536, -0.5133, 0.8315, 0.2126, -0.7682, -0.5556, 0.3182, -0.6533, 0.7071, 0.2706, -0.6533, -0.7071, 0.2706, -0.7682, 0.5556, 0.3182, -0.3182, 0.9239, 0.2126, -0.7682, -0.3827, 0.5133, -0.4619, 0.8315, 0.3087, -0.6913, -0.5556, 0.4619, -0.5879, 0.7071, 0.3928, -0.5879, -0.7071, 0.3928, -0.6913, 0.5556, 0.4619, -0.4619, -0.8315, 0.3087, -0.7682, 0.3827, 0.5133, -0.3182, -0.9239, 0.2126, -0.8155, 0.1951, 0.5449, -0.1622, -0.9808, 0.1084, -0.8315, 0, 0.5556, -0.1622, 0.9808, 0.1084, -0.8155, -0.1951, 0.5449, -0.6533, 0.3827, 0.6533, -0.2706, -0.9239, 0.2706, -0.6935, 0.1951, 0.6935, -0.1379, -0.9808, 0.1379, -0.7071, 0, 0.7071, -0.1379, 0.9808, 0.1379, -0.6935, -0.1951, 0.6935, -0.2706, 0.9239, 0.2706, -0.6533, -0.3827, 0.6533, -0.3928, 0.8315, 0.3928, -0.5879, -0.5556, 0.5879, -0.5, 0.7071, 0.5, -0.5, -0.7071, 0.5, -0.5879, 0.5556, 0.5879, -0.3928, -0.8315, 0.3928, -0.5133, -0.3827, 0.7682, -0.3087, 0.8315, 0.4619, -0.4619, -0.5556, 0.6913, -0.3928, 0.7071, 0.5879, -0.3928, -0.7071, 0.5879, -0.4619, 0.5556, 0.6913, -0.3087, -0.8315, 0.4619, -0.5133, 0.3827, 0.7682, -0.2126, -0.9239, 0.3182, -0.5449, 0.1951, 0.8155, -0.1084, -0.9808, 0.1622, -0.5556, 0, 0.8315, -0.1084, 0.9808, 0.1622, -0.5449, -0.1951, 0.8155, -0.2126, 0.9239, 0.3182, -0.2126, -0.8315, 0.5133, -0.1464, -0.9239, 0.3536, -0.3536, 0.3827, 0.8536, -0.3753, 0.1951, 0.9061, -0.0747, -0.9808, 0.1802, -0.3827, 0, 0.9239, -0.0747, 0.9808, 0.1802, -0.3753, -0.1951, 0.9061, -0.1464, 0.9239, 0.3536, -0.3536, -0.3827, 0.8536, -0.2126, 0.8315, 0.5133, -0.3182, -0.5556, 0.7682, -0.2706, 0.7071, 0.6533, -0.2706, -0.7071, 0.6533, -0.3182, 0.5556, 0.7682, -0.1802, -0.3827, 0.9061, -0.1622, -0.5556, 0.8155, -0.1084, 0.8315, 0.5449, -0.1379, 0.7071, 0.6935, -0.1379, -0.7071, 0.6935, -0.1622, 0.5556, 0.8155, -0.1084, -0.8315, 0.5449, -0.1802, 0.3827, 0.9061, -0.0747, -0.9239, 0.3753, -0.1913, 0.1951, 0.9619, -0.0381, -0.9808, 0.1913, -0.1951, 0, 0.9808, -0.0381, 0.9808, 0.1913, -0.1913, -0.1951, 0.9619, -0.0747, 0.9239, 0.3753, 0, -0.9239, 0.3827, 0, -0.9808, 0.1951, 0, 0, 1, 0, 0.9808, 0.1951, 0, -0.1951, 0.9808, 0, 0.9239, 0.3827, 0, -0.3827, 0.9239, 0, 0.8315, 0.5556, 0, -0.5556, 0.8315, 0, 0.7071, 0.7071, 0, -0.7071, 0.7071, 0, 0.5556, 0.8315, 0, -0.8315, 0.5556, 0, 0.3827, 0.9239, 0, 0.1951, 0.9808, 0.138, 0.7071, 0.6935, 0.138, -0.7071, 0.6935, 0.1622, 0.5556, 0.8155, 0.1084, -0.8315, 0.5449, 0.1802, 0.3827, 0.9061, 0.0747, -0.9239, 0.3753, 0.1913, 0.1951, 0.9619, 0.0381, -0.9808, 0.1913, 0.1951, 0, 0.9808, 0.0381, 0.9808, 0.1913, 0.1913, -0.1951, 0.9619, 0.0747, 0.9239, 0.3753, 0.1802, -0.3827, 0.9061, 0.1084, 0.8315, 0.5449, 0.1622, -0.5556, 0.8155, 0.3827, 0, 0.9239, 0.0747, 0.9808, 0.1802, 0.0747, -0.9808, 0.1802, 0.3753, -0.1951, 0.9061, 0.1464, 0.9239, 0.3536, 0.3536, -0.3827, 0.8536, 0.2126, 0.8315, 0.5133, 0.3182, -0.5556, 0.7682, 0.2706, 0.7071, 0.6533, 0.2706, -0.7071, 0.6533, 0.3182, 0.5556, 0.7682, 0.2126, -0.8315, 0.5133, 0.3536, 0.3827, 0.8536, 0.1464, -0.9239, 0.3536, 0.3753, 0.1951, 0.9061, 0.3928, -0.7071, 0.5879, 0.3928, 0.7071, 0.5879, 0.4619, 0.5556, 0.6913, 0.3087, -0.8315, 0.4619, 0.5133, 0.3827, 0.7682, 0.2126, -0.9239, 0.3182, 0.5449, 0.1951, 0.8155, 0.1084, -0.9808, 0.1622, 0.5556, 0, 0.8315, 0.1084, 0.9808, 0.1622, 0.5449, -0.1951, 0.8155, 0.2126, 0.9239, 0.3182, 0.5133, -0.3827, 0.7682, 0.3087, 0.8315, 0.4619, 0.4619, -0.5556, 0.6913, 0.138, 0.9808, 0.1379, 0.138, -0.9808, 0.1379, 0.6935, -0.1951, 0.6935, 0.2706, 0.9239, 0.2706, 0.6533, -0.3827, 0.6533, 0.3928, 0.8315, 0.3928, 0.5879, -0.5556, 0.5879, 0.5, 0.7071, 0.5, 0.5, -0.7071, 0.5, 0.5879, 0.5556, 0.5879, 0.3928, -0.8315, 0.3928, 0.6533, 0.3827, 0.6533, 0.2706, -0.9239, 0.2706, 0.6935, 0.1951, 0.6935, 0.7071, 0, 0.7071, 0.5879, 0.7071, 0.3928, 0.6913, 0.5556, 0.4619, 0.5879, -0.7071, 0.3928, 0.4619, -0.8315, 0.3087, 0.7682, 0.3827, 0.5133, 0.3182, -0.9239, 0.2126, 0.8155, 0.1951, 0.5449, 0.1622, -0.9808, 0.1084, 0.8315, 0, 0.5556, 0.1622, 0.9808, 0.1084, 0.8155, -0.1951, 0.5449, 0.3182, 0.9239, 0.2126, 0.7682, -0.3827, 0.5133, 0.4619, 0.8315, 0.3087, 0.6913, -0.5556, 0.4619, 0.9061, -0.1951, 0.3753, 0.3536, 0.9239, 0.1464, 0.8536, -0.3827, 0.3536, 0.5133, 0.8315, 0.2126, 0.7682, -0.5556, 0.3182, 0.6533, 0.7071, 0.2706, 0.6533, -0.7071, 0.2706, 0.7682, 0.5556, 0.3182, 0.5133, -0.8315, 0.2126, 0.8536, 0.3827, 0.3536, 0.3536, -0.9239, 0.1464, 0.9061, 0.1951, 0.3753, 0.1802, -0.9808, 0.0747, 0.9239, 0, 0.3827, 0.1802, 0.9808, 0.0747, 0.5449, -0.8315, 0.1084, 0.9061, 0.3827, 0.1802, 0.3753, -0.9239, 0.0747, 0.9619, 0.1951, 0.1913, 0.1913, -0.9808, 0.0381, 0.9808, 0, 0.1951, 0.1913, 0.9808, 0.0381, 0.9619, -0.1951, 0.1913, 0.3753, 0.9239, 0.0747, 0.9061, -0.3827, 0.1802, 0.5449, 0.8315, 0.1084, 0.8155, -0.5556, 0.1622, 0.6935, 0.7071, 0.1379, 0.6935, -0.7071, 0.1379, 0.8155, 0.5556, 0.1622, 0.9239, -0.3827, 0, 0.3827, 0.9239, 0, 0.5556, 0.8315, 0, 0.8315, -0.5556, 0, 0.7071, 0.7071, 0, 0.7071, -0.7071, 0, 0.8315, 0.5556, 0, 0.5556, -0.8315, 0, 0.9239, 0.3827, 0, 0.3827, -0.9239, 0, 0.9808, 0.1951, 0, 0.1951, -0.9808, 0, 1, 0, 0, 0.1951, 0.9808, 0, 0.9808, -0.1951, 0]; - this.indices = [0, 1, 2, 3, 4, 5, 2, 6, 7, 5, 8, 9, 10, 11, 12, 13, 7, 6, 9, 14, 15, 10, 16, 17, 18, 14, 19, 20, 16, 21, 18, 22, 23, 20, 24, 25, 26, 22, 27, 25, 28, 29, 26, 30, 0, 29, 31, 3, 27, 32, 30, 28, 33, 31, 30, 34, 1, 31, 35, 4, 1, 36, 6, 4, 37, 8, 12, 11, 38, 13, 6, 36, 14, 37, 39, 12, 40, 16, 19, 39, 41, 16, 42, 21, 19, 43, 22, 21, 44, 24, 27, 43, 45, 24, 46, 28, 38, 47, 40, 39, 48, 41, 40, 49, 42, 43, 48, 50, 42, 51, 44, 45, 50, 52, 44, 53, 46, 45, 54, 32, 46, 55, 33, 32, 56, 34, 35, 55, 57, 34, 58, 36, 35, 59, 37, 38, 11, 60, 13, 36, 58, 37, 61, 39, 53, 62, 55, 54, 63, 56, 55, 64, 57, 56, 65, 58, 59, 64, 66, 60, 11, 67, 13, 58, 65, 59, 68, 61, 60, 69, 47, 61, 70, 48, 47, 71, 49, 50, 70, 72, 49, 73, 51, 50, 74, 52, 51, 75, 53, 52, 76, 54, 68, 77, 70, 69, 78, 71, 72, 77, 79, 71, 80, 73, 72, 81, 74, 75, 80, 82, 76, 81, 83, 75, 84, 62, 63, 83, 85, 62, 86, 64, 63, 87, 65, 66, 86, 88, 67, 11, 89, 13, 65, 87, 66, 90, 68, 67, 91, 69, 85, 92, 93, 86, 94, 95, 85, 96, 87, 86, 97, 88, 89, 11, 98, 13, 87, 96, 88, 99, 90, 89, 100, 91, 90, 101, 77, 91, 102, 78, 79, 101, 103, 78, 104, 80, 81, 103, 105, 82, 104, 106, 81, 92, 83, 82, 94, 84, 103, 107, 108, 104, 109, 110, 105, 108, 111, 104, 112, 106, 105, 113, 92, 106, 114, 94, 92, 115, 93, 95, 114, 116, 96, 115, 117, 95, 118, 97, 98, 11, 119, 13, 96, 117, 97, 120, 99, 98, 121, 100, 99, 107, 101, 100, 109, 102, 117, 122, 123, 116, 124, 118, 119, 11, 125, 13, 117, 123, 120, 124, 126, 119, 127, 121, 120, 128, 107, 121, 129, 109, 108, 128, 130, 109, 131, 110, 108, 132, 111, 110, 133, 112, 113, 132, 134, 112, 135, 114, 115, 134, 122, 116, 135, 136, 129, 137, 131, 130, 138, 132, 133, 137, 139, 134, 138, 140, 133, 141, 135, 134, 142, 122, 136, 141, 143, 123, 142, 144, 136, 145, 124, 125, 11, 146, 13, 123, 144, 124, 147, 126, 127, 146, 148, 126, 149, 128, 127, 150, 129, 130, 149, 151, 143, 152, 145, 146, 11, 153, 13, 144, 154, 145, 155, 147, 146, 156, 148, 147, 157, 149, 150, 156, 158, 151, 157, 159, 150, 160, 137, 151, 161, 138, 137, 162, 139, 138, 163, 140, 139, 164, 141, 142, 163, 165, 143, 164, 166, 142, 154, 144, 159, 167, 161, 162, 168, 169, 163, 167, 170, 162, 171, 164, 163, 172, 165, 166, 171, 173, 165, 174, 154, 166, 175, 152, 153, 11, 176, 13, 154, 174, 155, 175, 177, 153, 178, 156, 155, 179, 157, 156, 180, 158, 159, 179, 181, 158, 168, 160, 176, 11, 182, 13, 174, 183, 175, 184, 177, 176, 185, 178, 177, 186, 179, 178, 187, 180, 179, 188, 181, 180, 189, 168, 181, 190, 167, 168, 191, 169, 170, 190, 192, 169, 193, 171, 170, 194, 172, 173, 193, 195, 174, 194, 183, 173, 196, 175, 191, 197, 198, 192, 199, 200, 191, 201, 193, 192, 202, 194, 195, 201, 203, 183, 202, 204, 195, 205, 196, 182, 11, 206, 13, 183, 204, 184, 205, 207, 182, 208, 185, 184, 209, 186, 185, 210, 187, 188, 209, 211, 189, 210, 197, 188, 199, 190, 205, 212, 207, 206, 213, 208, 207, 214, 209, 210, 213, 215, 211, 214, 216, 210, 217, 197, 211, 218, 199, 197, 219, 198, 200, 218, 220, 198, 221, 201, 200, 222, 202, 203, 221, 223, 202, 224, 204, 203, 225, 205, 206, 11, 226, 13, 204, 224, 218, 227, 220, 219, 228, 221, 220, 229, 222, 223, 228, 230, 224, 229, 231, 223, 232, 225, 226, 11, 233, 13, 224, 231, 225, 234, 212, 226, 235, 213, 212, 236, 214, 213, 237, 215, 216, 236, 238, 215, 239, 217, 216, 240, 218, 217, 241, 219, 234, 242, 236, 237, 243, 244, 238, 242, 245, 239, 244, 246, 238, 247, 240, 239, 248, 241, 227, 247, 249, 241, 250, 228, 227, 251, 229, 230, 250, 252, 231, 251, 253, 230, 254, 232, 233, 11, 255, 13, 231, 253, 232, 256, 234, 233, 243, 235, 0, 30, 1, 3, 31, 4, 2, 1, 6, 5, 4, 8, 9, 8, 14, 10, 12, 16, 18, 15, 14, 20, 17, 16, 18, 19, 22, 20, 21, 24, 26, 23, 22, 25, 24, 28, 26, 27, 30, 29, 28, 31, 27, 45, 32, 28, 46, 33, 30, 32, 34, 31, 33, 35, 1, 34, 36, 4, 35, 37, 14, 8, 37, 12, 38, 40, 19, 14, 39, 16, 40, 42, 19, 41, 43, 21, 42, 44, 27, 22, 43, 24, 44, 46, 38, 60, 47, 39, 61, 48, 40, 47, 49, 43, 41, 48, 42, 49, 51, 45, 43, 50, 44, 51, 53, 45, 52, 54, 46, 53, 55, 32, 54, 56, 35, 33, 55, 34, 56, 58, 35, 57, 59, 37, 59, 61, 53, 75, 62, 54, 76, 63, 55, 62, 64, 56, 63, 65, 59, 57, 64, 59, 66, 68, 60, 67, 69, 61, 68, 70, 47, 69, 71, 50, 48, 70, 49, 71, 73, 50, 72, 74, 51, 73, 75, 52, 74, 76, 68, 90, 77, 69, 91, 78, 72, 70, 77, 71, 78, 80, 72, 79, 81, 75, 73, 80, 76, 74, 81, 75, 82, 84, 63, 76, 83, 62, 84, 86, 63, 85, 87, 66, 64, 86, 66, 88, 90, 67, 89, 91, 85, 83, 92, 86, 84, 94, 85, 93, 96, 86, 95, 97, 88, 97, 99, 89, 98, 100, 90, 99, 101, 91, 100, 102, 79, 77, 101, 78, 102, 104, 81, 79, 103, 82, 80, 104, 81, 105, 92, 82, 106, 94, 103, 101, 107, 104, 102, 109, 105, 103, 108, 104, 110, 112, 105, 111, 113, 106, 112, 114, 92, 113, 115, 95, 94, 114, 96, 93, 115, 95, 116, 118, 97, 118, 120, 98, 119, 121, 99, 120, 107, 100, 121, 109, 117, 115, 122, 116, 136, 124, 120, 118, 124, 119, 125, 127, 120, 126, 128, 121, 127, 129, 108, 107, 128, 109, 129, 131, 108, 130, 132, 110, 131, 133, 113, 111, 132, 112, 133, 135, 115, 113, 134, 116, 114, 135, 129, 150, 137, 130, 151, 138, 133, 131, 137, 134, 132, 138, 133, 139, 141, 134, 140, 142, 136, 135, 141, 123, 122, 142, 136, 143, 145, 124, 145, 147, 127, 125, 146, 126, 147, 149, 127, 148, 150, 130, 128, 149, 143, 166, 152, 145, 152, 155, 146, 153, 156, 147, 155, 157, 150, 148, 156, 151, 149, 157, 150, 158, 160, 151, 159, 161, 137, 160, 162, 138, 161, 163, 139, 162, 164, 142, 140, 163, 143, 141, 164, 142, 165, 154, 159, 181, 167, 162, 160, 168, 163, 161, 167, 162, 169, 171, 163, 170, 172, 166, 164, 171, 165, 172, 174, 166, 173, 175, 155, 152, 175, 153, 176, 178, 155, 177, 179, 156, 178, 180, 159, 157, 179, 158, 180, 168, 175, 196, 184, 176, 182, 185, 177, 184, 186, 178, 185, 187, 179, 186, 188, 180, 187, 189, 181, 188, 190, 168, 189, 191, 170, 167, 190, 169, 191, 193, 170, 192, 194, 173, 171, 193, 174, 172, 194, 173, 195, 196, 191, 189, 197, 192, 190, 199, 191, 198, 201, 192, 200, 202, 195, 193, 201, 183, 194, 202, 195, 203, 205, 184, 196, 205, 182, 206, 208, 184, 207, 209, 185, 208, 210, 188, 186, 209, 189, 187, 210, 188, 211, 199, 205, 225, 212, 206, 226, 213, 207, 212, 214, 210, 208, 213, 211, 209, 214, 210, 215, 217, 211, 216, 218, 197, 217, 219, 200, 199, 218, 198, 219, 221, 200, 220, 222, 203, 201, 221, 202, 222, 224, 203, 223, 225, 218, 240, 227, 219, 241, 228, 220, 227, 229, 223, 221, 228, 224, 222, 229, 223, 230, 232, 225, 232, 234, 226, 233, 235, 212, 234, 236, 213, 235, 237, 216, 214, 236, 215, 237, 239, 216, 238, 240, 217, 239, 241, 234, 256, 242, 237, 235, 243, 238, 236, 242, 239, 237, 244, 238, 245, 247, 239, 246, 248, 227, 240, 247, 241, 248, 250, 227, 249, 251, 230, 228, 250, 231, 229, 251, 230, 252, 254, 232, 254, 256, 233, 255, 243]; - this.normals = [-0.5589, -0.8274, 0.055, -0.3804, -0.9217, 0.0757, -0.3876, -0.921, 0.0381, -0.9209, 0.3789, 0.0907, -0.9622, 0.1939, 0.1914, -0.9764, 0.193, 0.0962, -0.1971, -0.9796, 0.0392, -0.2009, -0.9794, 0.0198, -0.9808, 0, 0.1951, -0.9952, 0, 0.098, -0.2009, 0.9794, 0.0198, 0, 0.998, 0.063, -0.1971, 0.9796, 0.0392, 0, -0.998, 0.063, -0.9622, -0.1939, 0.1914, -0.9764, -0.193, 0.0962, -0.3804, 0.9217, 0.0757, -0.3876, 0.921, 0.0381, -0.9209, -0.3789, 0.0907, -0.907, -0.3805, 0.1804, -0.5589, 0.8274, 0.055, -0.549, 0.8286, 0.1092, -0.8173, -0.5528, 0.1626, -0.8305, -0.5509, 0.0818, -0.6965, 0.704, 0.1385, -0.7084, 0.7023, 0.0698, -0.7084, -0.7023, 0.0698, -0.6965, -0.704, 0.1385, -0.8173, 0.5528, 0.1626, -0.8305, 0.5509, 0.0818, -0.549, -0.8286, 0.1092, -0.907, 0.3805, 0.1804, -0.5171, -0.8286, 0.2142, -0.8544, 0.3805, 0.3539, -0.3583, -0.9217, 0.1484, -0.9063, 0.1939, 0.3754, -0.1856, -0.9796, 0.0769, -0.9239, 0, 0.3827, -0.1856, 0.9796, 0.0769, -0.9063, -0.1939, 0.3754, -0.3583, 0.9217, 0.1484, -0.8544, -0.3805, 0.3539, -0.5171, 0.8286, 0.2142, -0.7699, -0.5528, 0.3189, -0.6561, 0.704, 0.2717, -0.6561, -0.704, 0.2717, -0.7699, 0.5528, 0.3189, -0.3225, 0.9217, 0.2155, -0.7689, -0.3805, 0.5137, -0.4654, 0.8286, 0.311, -0.6929, -0.5528, 0.463, -0.5904, 0.704, 0.3945, -0.5904, -0.704, 0.3945, -0.6929, 0.5528, 0.463, -0.4654, -0.8286, 0.311, -0.7689, 0.3805, 0.5137, -0.3225, -0.9217, 0.2155, -0.8157, 0.1939, 0.545, -0.1671, -0.9796, 0.1116, -0.8314, 0, 0.5556, -0.1671, 0.9796, 0.1116, -0.8157, -0.1939, 0.545, -0.6539, 0.3805, 0.6539, -0.2743, -0.9217, 0.2743, -0.6937, 0.1939, 0.6937, -0.1421, -0.9796, 0.1421, -0.7071, 0, 0.7071, -0.1421, 0.9796, 0.1421, -0.6937, -0.1939, 0.6937, -0.2743, 0.9217, 0.2743, -0.6539, -0.3805, 0.6539, -0.3958, 0.8286, 0.3958, -0.5893, -0.5528, 0.5893, -0.5021, 0.704, 0.5021, -0.5021, -0.704, 0.5021, -0.5893, 0.5528, 0.5893, -0.3958, -0.8286, 0.3958, -0.5137, -0.3805, 0.7689, -0.311, 0.8286, 0.4654, -0.463, -0.5528, 0.6929, -0.3945, 0.704, 0.5904, -0.3945, -0.704, 0.5904, -0.463, 0.5528, 0.6929, -0.311, -0.8286, 0.4654, -0.5137, 0.3805, 0.7689, -0.2155, -0.9217, 0.3225, -0.545, 0.1939, 0.8157, -0.1116, -0.9796, 0.1671, -0.5556, 0, 0.8314, -0.1116, 0.9796, 0.1671, -0.545, -0.1939, 0.8157, -0.2155, 0.9217, 0.3225, -0.2142, -0.8286, 0.5171, -0.1484, -0.9217, 0.3583, -0.3539, 0.3805, 0.8544, -0.3754, 0.1939, 0.9063, -0.0769, -0.9796, 0.1856, -0.3827, 0, 0.9239, -0.0769, 0.9796, 0.1856, -0.3754, -0.1939, 0.9063, -0.1484, 0.9217, 0.3583, -0.3539, -0.3805, 0.8544, -0.2142, 0.8286, 0.5171, -0.3189, -0.5528, 0.7699, -0.2717, 0.704, 0.6561, -0.2717, -0.704, 0.6561, -0.3189, 0.5528, 0.7699, -0.1804, -0.3805, 0.907, -0.1626, -0.5528, 0.8173, -0.1092, 0.8286, 0.549, -0.1385, 0.704, 0.6965, -0.1385, -0.704, 0.6965, -0.1626, 0.5528, 0.8173, -0.1092, -0.8286, 0.549, -0.1804, 0.3805, 0.907, -0.0757, -0.9217, 0.3804, -0.1914, 0.1939, 0.9622, -0.0392, -0.9796, 0.1971, -0.1951, 0, 0.9808, -0.0392, 0.9796, 0.1971, -0.1914, -0.1939, 0.9622, -0.0757, 0.9217, 0.3804, 0, -0.9217, 0.3879, 0, -0.9796, 0.201, 0, 0, 1, 0, 0.9796, 0.201, 0, -0.1939, 0.981, 0, 0.9217, 0.3879, 0, -0.3805, 0.9247, 0, 0.8286, 0.5598, 0, -0.5528, 0.8333, 0, 0.704, 0.7101, 0, -0.704, 0.7101, 0, 0.5528, 0.8333, 0, -0.8286, 0.5598, 0, 0.3805, 0.9247, 0, 0.1939, 0.981, 0.1385, 0.704, 0.6965, 0.1385, -0.704, 0.6965, 0.1626, 0.5528, 0.8173, 0.1092, -0.8286, 0.549, 0.1804, 0.3805, 0.907, 0.0757, -0.9217, 0.3804, 0.1914, 0.1939, 0.9622, 0.0392, -0.9796, 0.1971, 0.1951, 0, 0.9808, 0.0392, 0.9796, 0.1971, 0.1914, -0.1939, 0.9622, 0.0757, 0.9217, 0.3804, 0.1804, -0.3805, 0.907, 0.1092, 0.8286, 0.549, 0.1626, -0.5528, 0.8173, 0.3827, 0, 0.9239, 0.0769, 0.9796, 0.1856, 0.0769, -0.9796, 0.1856, 0.3754, -0.1939, 0.9063, 0.1484, 0.9217, 0.3583, 0.3539, -0.3805, 0.8544, 0.2142, 0.8286, 0.5171, 0.3189, -0.5528, 0.7699, 0.2717, 0.704, 0.6561, 0.2717, -0.704, 0.6561, 0.3189, 0.5528, 0.7699, 0.2142, -0.8286, 0.5171, 0.3539, 0.3805, 0.8544, 0.1484, -0.9217, 0.3583, 0.3754, 0.1939, 0.9063, 0.3945, -0.704, 0.5904, 0.3945, 0.704, 0.5904, 0.463, 0.5528, 0.6929, 0.311, -0.8286, 0.4654, 0.5137, 0.3805, 0.7689, 0.2155, -0.9217, 0.3225, 0.545, 0.1939, 0.8157, 0.1116, -0.9796, 0.1671, 0.5556, 0, 0.8314, 0.1116, 0.9796, 0.1671, 0.545, -0.1939, 0.8157, 0.2155, 0.9217, 0.3225, 0.5137, -0.3805, 0.7689, 0.311, 0.8286, 0.4654, 0.463, -0.5528, 0.6929, 0.1421, 0.9796, 0.1421, 0.1421, -0.9796, 0.1421, 0.6937, -0.1939, 0.6937, 0.2743, 0.9217, 0.2743, 0.6539, -0.3805, 0.6539, 0.3958, 0.8286, 0.3958, 0.5893, -0.5528, 0.5893, 0.5021, 0.704, 0.5021, 0.5021, -0.704, 0.5021, 0.5893, 0.5528, 0.5893, 0.3958, -0.8286, 0.3958, 0.6539, 0.3805, 0.6539, 0.2743, -0.9217, 0.2743, 0.6937, 0.1939, 0.6937, 0.7071, 0, 0.7071, 0.5904, 0.704, 0.3945, 0.6929, 0.5528, 0.463, 0.5904, -0.704, 0.3945, 0.4654, -0.8286, 0.311, 0.7689, 0.3805, 0.5137, 0.3225, -0.9217, 0.2155, 0.8157, 0.1939, 0.545, 0.1671, -0.9796, 0.1116, 0.8314, 0, 0.5556, 0.1671, 0.9796, 0.1116, 0.8157, -0.1939, 0.545, 0.3225, 0.9217, 0.2155, 0.7689, -0.3805, 0.5137, 0.4654, 0.8286, 0.311, 0.6929, -0.5528, 0.463, 0.9063, -0.1939, 0.3754, 0.3583, 0.9217, 0.1484, 0.8544, -0.3805, 0.3539, 0.5171, 0.8286, 0.2142, 0.7699, -0.5528, 0.3189, 0.6561, 0.704, 0.2717, 0.6561, -0.704, 0.2717, 0.7699, 0.5528, 0.3189, 0.5171, -0.8286, 0.2142, 0.8544, 0.3805, 0.3539, 0.3583, -0.9217, 0.1484, 0.9063, 0.1939, 0.3754, 0.1856, -0.9796, 0.0769, 0.9239, 0, 0.3827, 0.1856, 0.9796, 0.0769, 0.549, -0.8286, 0.1092, 0.907, 0.3805, 0.1804, 0.3804, -0.9217, 0.0757, 0.9622, 0.1939, 0.1914, 0.1971, -0.9796, 0.0392, 0.9808, 0, 0.1951, 0.1971, 0.9796, 0.0392, 0.9622, -0.1939, 0.1914, 0.3804, 0.9217, 0.0757, 0.907, -0.3805, 0.1804, 0.549, 0.8286, 0.1092, 0.8173, -0.5528, 0.1626, 0.6965, 0.704, 0.1385, 0.6965, -0.704, 0.1385, 0.8173, 0.5528, 0.1626, 0.9209, -0.3789, 0.0907, 0.3876, 0.921, 0.0381, 0.5589, 0.8274, 0.055, 0.8305, -0.5509, 0.0818, 0.7084, 0.7023, 0.0698, 0.7084, -0.7023, 0.0698, 0.8305, 0.5509, 0.0818, 0.5589, -0.8274, 0.055, 0.9209, 0.3789, 0.0907, 0.3876, -0.921, 0.0381, 0.9764, 0.193, 0.0962, 0.2009, -0.9794, 0.0198, 0.9952, 0, 0.098, 0.2009, 0.9794, 0.0198, 0.9764, -0.193, 0.0962]; - this.subMeshes = [new SubMesh(0, 1440)]; - this.itemSize = 3; - this.primitive = 'TRIANGLES'; + var _this = _super.call(this) || this; + _this.vertices = [-0.5556, -0.8315, 0, -0.3753, -0.9239, 0.0747, -0.3827, -0.9239, 0, -0.9239, 0.3827, 0, -0.9619, 0.1951, 0.1913, -0.9808, 0.1951, 0, -0.1913, -0.9808, 0.0381, -0.1951, -0.9808, 0, -0.9808, 0, 0.1951, -1, 0, 0, -0.1951, 0.9808, 0, 0, 1, 0, -0.1913, 0.9808, 0.0381, 0, -1, 0, -0.9619, -0.1951, 0.1913, -0.9808, -0.1951, 0, -0.3753, 0.9239, 0.0747, -0.3827, 0.9239, 0, -0.9239, -0.3827, 0, -0.9061, -0.3827, 0.1802, -0.5556, 0.8315, 0, -0.5449, 0.8315, 0.1084, -0.8155, -0.5556, 0.1622, -0.8315, -0.5556, 0, -0.6935, 0.7071, 0.1379, -0.7071, 0.7071, 0, -0.7071, -0.7071, 0, -0.6935, -0.7071, 0.1379, -0.8155, 0.5556, 0.1622, -0.8315, 0.5556, 0, -0.5449, -0.8315, 0.1084, -0.9061, 0.3827, 0.1802, -0.5133, -0.8315, 0.2126, -0.8536, 0.3827, 0.3536, -0.3536, -0.9239, 0.1464, -0.9061, 0.1951, 0.3753, -0.1802, -0.9808, 0.0747, -0.9239, 0, 0.3827, -0.1802, 0.9808, 0.0747, -0.9061, -0.1951, 0.3753, -0.3536, 0.9239, 0.1464, -0.8536, -0.3827, 0.3536, -0.5133, 0.8315, 0.2126, -0.7682, -0.5556, 0.3182, -0.6533, 0.7071, 0.2706, -0.6533, -0.7071, 0.2706, -0.7682, 0.5556, 0.3182, -0.3182, 0.9239, 0.2126, -0.7682, -0.3827, 0.5133, -0.4619, 0.8315, 0.3087, -0.6913, -0.5556, 0.4619, -0.5879, 0.7071, 0.3928, -0.5879, -0.7071, 0.3928, -0.6913, 0.5556, 0.4619, -0.4619, -0.8315, 0.3087, -0.7682, 0.3827, 0.5133, -0.3182, -0.9239, 0.2126, -0.8155, 0.1951, 0.5449, -0.1622, -0.9808, 0.1084, -0.8315, 0, 0.5556, -0.1622, 0.9808, 0.1084, -0.8155, -0.1951, 0.5449, -0.6533, 0.3827, 0.6533, -0.2706, -0.9239, 0.2706, -0.6935, 0.1951, 0.6935, -0.1379, -0.9808, 0.1379, -0.7071, 0, 0.7071, -0.1379, 0.9808, 0.1379, -0.6935, -0.1951, 0.6935, -0.2706, 0.9239, 0.2706, -0.6533, -0.3827, 0.6533, -0.3928, 0.8315, 0.3928, -0.5879, -0.5556, 0.5879, -0.5, 0.7071, 0.5, -0.5, -0.7071, 0.5, -0.5879, 0.5556, 0.5879, -0.3928, -0.8315, 0.3928, -0.5133, -0.3827, 0.7682, -0.3087, 0.8315, 0.4619, -0.4619, -0.5556, 0.6913, -0.3928, 0.7071, 0.5879, -0.3928, -0.7071, 0.5879, -0.4619, 0.5556, 0.6913, -0.3087, -0.8315, 0.4619, -0.5133, 0.3827, 0.7682, -0.2126, -0.9239, 0.3182, -0.5449, 0.1951, 0.8155, -0.1084, -0.9808, 0.1622, -0.5556, 0, 0.8315, -0.1084, 0.9808, 0.1622, -0.5449, -0.1951, 0.8155, -0.2126, 0.9239, 0.3182, -0.2126, -0.8315, 0.5133, -0.1464, -0.9239, 0.3536, -0.3536, 0.3827, 0.8536, -0.3753, 0.1951, 0.9061, -0.0747, -0.9808, 0.1802, -0.3827, 0, 0.9239, -0.0747, 0.9808, 0.1802, -0.3753, -0.1951, 0.9061, -0.1464, 0.9239, 0.3536, -0.3536, -0.3827, 0.8536, -0.2126, 0.8315, 0.5133, -0.3182, -0.5556, 0.7682, -0.2706, 0.7071, 0.6533, -0.2706, -0.7071, 0.6533, -0.3182, 0.5556, 0.7682, -0.1802, -0.3827, 0.9061, -0.1622, -0.5556, 0.8155, -0.1084, 0.8315, 0.5449, -0.1379, 0.7071, 0.6935, -0.1379, -0.7071, 0.6935, -0.1622, 0.5556, 0.8155, -0.1084, -0.8315, 0.5449, -0.1802, 0.3827, 0.9061, -0.0747, -0.9239, 0.3753, -0.1913, 0.1951, 0.9619, -0.0381, -0.9808, 0.1913, -0.1951, 0, 0.9808, -0.0381, 0.9808, 0.1913, -0.1913, -0.1951, 0.9619, -0.0747, 0.9239, 0.3753, 0, -0.9239, 0.3827, 0, -0.9808, 0.1951, 0, 0, 1, 0, 0.9808, 0.1951, 0, -0.1951, 0.9808, 0, 0.9239, 0.3827, 0, -0.3827, 0.9239, 0, 0.8315, 0.5556, 0, -0.5556, 0.8315, 0, 0.7071, 0.7071, 0, -0.7071, 0.7071, 0, 0.5556, 0.8315, 0, -0.8315, 0.5556, 0, 0.3827, 0.9239, 0, 0.1951, 0.9808, 0.138, 0.7071, 0.6935, 0.138, -0.7071, 0.6935, 0.1622, 0.5556, 0.8155, 0.1084, -0.8315, 0.5449, 0.1802, 0.3827, 0.9061, 0.0747, -0.9239, 0.3753, 0.1913, 0.1951, 0.9619, 0.0381, -0.9808, 0.1913, 0.1951, 0, 0.9808, 0.0381, 0.9808, 0.1913, 0.1913, -0.1951, 0.9619, 0.0747, 0.9239, 0.3753, 0.1802, -0.3827, 0.9061, 0.1084, 0.8315, 0.5449, 0.1622, -0.5556, 0.8155, 0.3827, 0, 0.9239, 0.0747, 0.9808, 0.1802, 0.0747, -0.9808, 0.1802, 0.3753, -0.1951, 0.9061, 0.1464, 0.9239, 0.3536, 0.3536, -0.3827, 0.8536, 0.2126, 0.8315, 0.5133, 0.3182, -0.5556, 0.7682, 0.2706, 0.7071, 0.6533, 0.2706, -0.7071, 0.6533, 0.3182, 0.5556, 0.7682, 0.2126, -0.8315, 0.5133, 0.3536, 0.3827, 0.8536, 0.1464, -0.9239, 0.3536, 0.3753, 0.1951, 0.9061, 0.3928, -0.7071, 0.5879, 0.3928, 0.7071, 0.5879, 0.4619, 0.5556, 0.6913, 0.3087, -0.8315, 0.4619, 0.5133, 0.3827, 0.7682, 0.2126, -0.9239, 0.3182, 0.5449, 0.1951, 0.8155, 0.1084, -0.9808, 0.1622, 0.5556, 0, 0.8315, 0.1084, 0.9808, 0.1622, 0.5449, -0.1951, 0.8155, 0.2126, 0.9239, 0.3182, 0.5133, -0.3827, 0.7682, 0.3087, 0.8315, 0.4619, 0.4619, -0.5556, 0.6913, 0.138, 0.9808, 0.1379, 0.138, -0.9808, 0.1379, 0.6935, -0.1951, 0.6935, 0.2706, 0.9239, 0.2706, 0.6533, -0.3827, 0.6533, 0.3928, 0.8315, 0.3928, 0.5879, -0.5556, 0.5879, 0.5, 0.7071, 0.5, 0.5, -0.7071, 0.5, 0.5879, 0.5556, 0.5879, 0.3928, -0.8315, 0.3928, 0.6533, 0.3827, 0.6533, 0.2706, -0.9239, 0.2706, 0.6935, 0.1951, 0.6935, 0.7071, 0, 0.7071, 0.5879, 0.7071, 0.3928, 0.6913, 0.5556, 0.4619, 0.5879, -0.7071, 0.3928, 0.4619, -0.8315, 0.3087, 0.7682, 0.3827, 0.5133, 0.3182, -0.9239, 0.2126, 0.8155, 0.1951, 0.5449, 0.1622, -0.9808, 0.1084, 0.8315, 0, 0.5556, 0.1622, 0.9808, 0.1084, 0.8155, -0.1951, 0.5449, 0.3182, 0.9239, 0.2126, 0.7682, -0.3827, 0.5133, 0.4619, 0.8315, 0.3087, 0.6913, -0.5556, 0.4619, 0.9061, -0.1951, 0.3753, 0.3536, 0.9239, 0.1464, 0.8536, -0.3827, 0.3536, 0.5133, 0.8315, 0.2126, 0.7682, -0.5556, 0.3182, 0.6533, 0.7071, 0.2706, 0.6533, -0.7071, 0.2706, 0.7682, 0.5556, 0.3182, 0.5133, -0.8315, 0.2126, 0.8536, 0.3827, 0.3536, 0.3536, -0.9239, 0.1464, 0.9061, 0.1951, 0.3753, 0.1802, -0.9808, 0.0747, 0.9239, 0, 0.3827, 0.1802, 0.9808, 0.0747, 0.5449, -0.8315, 0.1084, 0.9061, 0.3827, 0.1802, 0.3753, -0.9239, 0.0747, 0.9619, 0.1951, 0.1913, 0.1913, -0.9808, 0.0381, 0.9808, 0, 0.1951, 0.1913, 0.9808, 0.0381, 0.9619, -0.1951, 0.1913, 0.3753, 0.9239, 0.0747, 0.9061, -0.3827, 0.1802, 0.5449, 0.8315, 0.1084, 0.8155, -0.5556, 0.1622, 0.6935, 0.7071, 0.1379, 0.6935, -0.7071, 0.1379, 0.8155, 0.5556, 0.1622, 0.9239, -0.3827, 0, 0.3827, 0.9239, 0, 0.5556, 0.8315, 0, 0.8315, -0.5556, 0, 0.7071, 0.7071, 0, 0.7071, -0.7071, 0, 0.8315, 0.5556, 0, 0.5556, -0.8315, 0, 0.9239, 0.3827, 0, 0.3827, -0.9239, 0, 0.9808, 0.1951, 0, 0.1951, -0.9808, 0, 1, 0, 0, 0.1951, 0.9808, 0, 0.9808, -0.1951, 0]; + _this.indices = [0, 1, 2, 3, 4, 5, 2, 6, 7, 5, 8, 9, 10, 11, 12, 13, 7, 6, 9, 14, 15, 10, 16, 17, 18, 14, 19, 20, 16, 21, 18, 22, 23, 20, 24, 25, 26, 22, 27, 25, 28, 29, 26, 30, 0, 29, 31, 3, 27, 32, 30, 28, 33, 31, 30, 34, 1, 31, 35, 4, 1, 36, 6, 4, 37, 8, 12, 11, 38, 13, 6, 36, 14, 37, 39, 12, 40, 16, 19, 39, 41, 16, 42, 21, 19, 43, 22, 21, 44, 24, 27, 43, 45, 24, 46, 28, 38, 47, 40, 39, 48, 41, 40, 49, 42, 43, 48, 50, 42, 51, 44, 45, 50, 52, 44, 53, 46, 45, 54, 32, 46, 55, 33, 32, 56, 34, 35, 55, 57, 34, 58, 36, 35, 59, 37, 38, 11, 60, 13, 36, 58, 37, 61, 39, 53, 62, 55, 54, 63, 56, 55, 64, 57, 56, 65, 58, 59, 64, 66, 60, 11, 67, 13, 58, 65, 59, 68, 61, 60, 69, 47, 61, 70, 48, 47, 71, 49, 50, 70, 72, 49, 73, 51, 50, 74, 52, 51, 75, 53, 52, 76, 54, 68, 77, 70, 69, 78, 71, 72, 77, 79, 71, 80, 73, 72, 81, 74, 75, 80, 82, 76, 81, 83, 75, 84, 62, 63, 83, 85, 62, 86, 64, 63, 87, 65, 66, 86, 88, 67, 11, 89, 13, 65, 87, 66, 90, 68, 67, 91, 69, 85, 92, 93, 86, 94, 95, 85, 96, 87, 86, 97, 88, 89, 11, 98, 13, 87, 96, 88, 99, 90, 89, 100, 91, 90, 101, 77, 91, 102, 78, 79, 101, 103, 78, 104, 80, 81, 103, 105, 82, 104, 106, 81, 92, 83, 82, 94, 84, 103, 107, 108, 104, 109, 110, 105, 108, 111, 104, 112, 106, 105, 113, 92, 106, 114, 94, 92, 115, 93, 95, 114, 116, 96, 115, 117, 95, 118, 97, 98, 11, 119, 13, 96, 117, 97, 120, 99, 98, 121, 100, 99, 107, 101, 100, 109, 102, 117, 122, 123, 116, 124, 118, 119, 11, 125, 13, 117, 123, 120, 124, 126, 119, 127, 121, 120, 128, 107, 121, 129, 109, 108, 128, 130, 109, 131, 110, 108, 132, 111, 110, 133, 112, 113, 132, 134, 112, 135, 114, 115, 134, 122, 116, 135, 136, 129, 137, 131, 130, 138, 132, 133, 137, 139, 134, 138, 140, 133, 141, 135, 134, 142, 122, 136, 141, 143, 123, 142, 144, 136, 145, 124, 125, 11, 146, 13, 123, 144, 124, 147, 126, 127, 146, 148, 126, 149, 128, 127, 150, 129, 130, 149, 151, 143, 152, 145, 146, 11, 153, 13, 144, 154, 145, 155, 147, 146, 156, 148, 147, 157, 149, 150, 156, 158, 151, 157, 159, 150, 160, 137, 151, 161, 138, 137, 162, 139, 138, 163, 140, 139, 164, 141, 142, 163, 165, 143, 164, 166, 142, 154, 144, 159, 167, 161, 162, 168, 169, 163, 167, 170, 162, 171, 164, 163, 172, 165, 166, 171, 173, 165, 174, 154, 166, 175, 152, 153, 11, 176, 13, 154, 174, 155, 175, 177, 153, 178, 156, 155, 179, 157, 156, 180, 158, 159, 179, 181, 158, 168, 160, 176, 11, 182, 13, 174, 183, 175, 184, 177, 176, 185, 178, 177, 186, 179, 178, 187, 180, 179, 188, 181, 180, 189, 168, 181, 190, 167, 168, 191, 169, 170, 190, 192, 169, 193, 171, 170, 194, 172, 173, 193, 195, 174, 194, 183, 173, 196, 175, 191, 197, 198, 192, 199, 200, 191, 201, 193, 192, 202, 194, 195, 201, 203, 183, 202, 204, 195, 205, 196, 182, 11, 206, 13, 183, 204, 184, 205, 207, 182, 208, 185, 184, 209, 186, 185, 210, 187, 188, 209, 211, 189, 210, 197, 188, 199, 190, 205, 212, 207, 206, 213, 208, 207, 214, 209, 210, 213, 215, 211, 214, 216, 210, 217, 197, 211, 218, 199, 197, 219, 198, 200, 218, 220, 198, 221, 201, 200, 222, 202, 203, 221, 223, 202, 224, 204, 203, 225, 205, 206, 11, 226, 13, 204, 224, 218, 227, 220, 219, 228, 221, 220, 229, 222, 223, 228, 230, 224, 229, 231, 223, 232, 225, 226, 11, 233, 13, 224, 231, 225, 234, 212, 226, 235, 213, 212, 236, 214, 213, 237, 215, 216, 236, 238, 215, 239, 217, 216, 240, 218, 217, 241, 219, 234, 242, 236, 237, 243, 244, 238, 242, 245, 239, 244, 246, 238, 247, 240, 239, 248, 241, 227, 247, 249, 241, 250, 228, 227, 251, 229, 230, 250, 252, 231, 251, 253, 230, 254, 232, 233, 11, 255, 13, 231, 253, 232, 256, 234, 233, 243, 235, 0, 30, 1, 3, 31, 4, 2, 1, 6, 5, 4, 8, 9, 8, 14, 10, 12, 16, 18, 15, 14, 20, 17, 16, 18, 19, 22, 20, 21, 24, 26, 23, 22, 25, 24, 28, 26, 27, 30, 29, 28, 31, 27, 45, 32, 28, 46, 33, 30, 32, 34, 31, 33, 35, 1, 34, 36, 4, 35, 37, 14, 8, 37, 12, 38, 40, 19, 14, 39, 16, 40, 42, 19, 41, 43, 21, 42, 44, 27, 22, 43, 24, 44, 46, 38, 60, 47, 39, 61, 48, 40, 47, 49, 43, 41, 48, 42, 49, 51, 45, 43, 50, 44, 51, 53, 45, 52, 54, 46, 53, 55, 32, 54, 56, 35, 33, 55, 34, 56, 58, 35, 57, 59, 37, 59, 61, 53, 75, 62, 54, 76, 63, 55, 62, 64, 56, 63, 65, 59, 57, 64, 59, 66, 68, 60, 67, 69, 61, 68, 70, 47, 69, 71, 50, 48, 70, 49, 71, 73, 50, 72, 74, 51, 73, 75, 52, 74, 76, 68, 90, 77, 69, 91, 78, 72, 70, 77, 71, 78, 80, 72, 79, 81, 75, 73, 80, 76, 74, 81, 75, 82, 84, 63, 76, 83, 62, 84, 86, 63, 85, 87, 66, 64, 86, 66, 88, 90, 67, 89, 91, 85, 83, 92, 86, 84, 94, 85, 93, 96, 86, 95, 97, 88, 97, 99, 89, 98, 100, 90, 99, 101, 91, 100, 102, 79, 77, 101, 78, 102, 104, 81, 79, 103, 82, 80, 104, 81, 105, 92, 82, 106, 94, 103, 101, 107, 104, 102, 109, 105, 103, 108, 104, 110, 112, 105, 111, 113, 106, 112, 114, 92, 113, 115, 95, 94, 114, 96, 93, 115, 95, 116, 118, 97, 118, 120, 98, 119, 121, 99, 120, 107, 100, 121, 109, 117, 115, 122, 116, 136, 124, 120, 118, 124, 119, 125, 127, 120, 126, 128, 121, 127, 129, 108, 107, 128, 109, 129, 131, 108, 130, 132, 110, 131, 133, 113, 111, 132, 112, 133, 135, 115, 113, 134, 116, 114, 135, 129, 150, 137, 130, 151, 138, 133, 131, 137, 134, 132, 138, 133, 139, 141, 134, 140, 142, 136, 135, 141, 123, 122, 142, 136, 143, 145, 124, 145, 147, 127, 125, 146, 126, 147, 149, 127, 148, 150, 130, 128, 149, 143, 166, 152, 145, 152, 155, 146, 153, 156, 147, 155, 157, 150, 148, 156, 151, 149, 157, 150, 158, 160, 151, 159, 161, 137, 160, 162, 138, 161, 163, 139, 162, 164, 142, 140, 163, 143, 141, 164, 142, 165, 154, 159, 181, 167, 162, 160, 168, 163, 161, 167, 162, 169, 171, 163, 170, 172, 166, 164, 171, 165, 172, 174, 166, 173, 175, 155, 152, 175, 153, 176, 178, 155, 177, 179, 156, 178, 180, 159, 157, 179, 158, 180, 168, 175, 196, 184, 176, 182, 185, 177, 184, 186, 178, 185, 187, 179, 186, 188, 180, 187, 189, 181, 188, 190, 168, 189, 191, 170, 167, 190, 169, 191, 193, 170, 192, 194, 173, 171, 193, 174, 172, 194, 173, 195, 196, 191, 189, 197, 192, 190, 199, 191, 198, 201, 192, 200, 202, 195, 193, 201, 183, 194, 202, 195, 203, 205, 184, 196, 205, 182, 206, 208, 184, 207, 209, 185, 208, 210, 188, 186, 209, 189, 187, 210, 188, 211, 199, 205, 225, 212, 206, 226, 213, 207, 212, 214, 210, 208, 213, 211, 209, 214, 210, 215, 217, 211, 216, 218, 197, 217, 219, 200, 199, 218, 198, 219, 221, 200, 220, 222, 203, 201, 221, 202, 222, 224, 203, 223, 225, 218, 240, 227, 219, 241, 228, 220, 227, 229, 223, 221, 228, 224, 222, 229, 223, 230, 232, 225, 232, 234, 226, 233, 235, 212, 234, 236, 213, 235, 237, 216, 214, 236, 215, 237, 239, 216, 238, 240, 217, 239, 241, 234, 256, 242, 237, 235, 243, 238, 236, 242, 239, 237, 244, 238, 245, 247, 239, 246, 248, 227, 240, 247, 241, 248, 250, 227, 249, 251, 230, 228, 250, 231, 229, 251, 230, 252, 254, 232, 254, 256, 233, 255, 243]; + _this.normals = [-0.5589, -0.8274, 0.055, -0.3804, -0.9217, 0.0757, -0.3876, -0.921, 0.0381, -0.9209, 0.3789, 0.0907, -0.9622, 0.1939, 0.1914, -0.9764, 0.193, 0.0962, -0.1971, -0.9796, 0.0392, -0.2009, -0.9794, 0.0198, -0.9808, 0, 0.1951, -0.9952, 0, 0.098, -0.2009, 0.9794, 0.0198, 0, 0.998, 0.063, -0.1971, 0.9796, 0.0392, 0, -0.998, 0.063, -0.9622, -0.1939, 0.1914, -0.9764, -0.193, 0.0962, -0.3804, 0.9217, 0.0757, -0.3876, 0.921, 0.0381, -0.9209, -0.3789, 0.0907, -0.907, -0.3805, 0.1804, -0.5589, 0.8274, 0.055, -0.549, 0.8286, 0.1092, -0.8173, -0.5528, 0.1626, -0.8305, -0.5509, 0.0818, -0.6965, 0.704, 0.1385, -0.7084, 0.7023, 0.0698, -0.7084, -0.7023, 0.0698, -0.6965, -0.704, 0.1385, -0.8173, 0.5528, 0.1626, -0.8305, 0.5509, 0.0818, -0.549, -0.8286, 0.1092, -0.907, 0.3805, 0.1804, -0.5171, -0.8286, 0.2142, -0.8544, 0.3805, 0.3539, -0.3583, -0.9217, 0.1484, -0.9063, 0.1939, 0.3754, -0.1856, -0.9796, 0.0769, -0.9239, 0, 0.3827, -0.1856, 0.9796, 0.0769, -0.9063, -0.1939, 0.3754, -0.3583, 0.9217, 0.1484, -0.8544, -0.3805, 0.3539, -0.5171, 0.8286, 0.2142, -0.7699, -0.5528, 0.3189, -0.6561, 0.704, 0.2717, -0.6561, -0.704, 0.2717, -0.7699, 0.5528, 0.3189, -0.3225, 0.9217, 0.2155, -0.7689, -0.3805, 0.5137, -0.4654, 0.8286, 0.311, -0.6929, -0.5528, 0.463, -0.5904, 0.704, 0.3945, -0.5904, -0.704, 0.3945, -0.6929, 0.5528, 0.463, -0.4654, -0.8286, 0.311, -0.7689, 0.3805, 0.5137, -0.3225, -0.9217, 0.2155, -0.8157, 0.1939, 0.545, -0.1671, -0.9796, 0.1116, -0.8314, 0, 0.5556, -0.1671, 0.9796, 0.1116, -0.8157, -0.1939, 0.545, -0.6539, 0.3805, 0.6539, -0.2743, -0.9217, 0.2743, -0.6937, 0.1939, 0.6937, -0.1421, -0.9796, 0.1421, -0.7071, 0, 0.7071, -0.1421, 0.9796, 0.1421, -0.6937, -0.1939, 0.6937, -0.2743, 0.9217, 0.2743, -0.6539, -0.3805, 0.6539, -0.3958, 0.8286, 0.3958, -0.5893, -0.5528, 0.5893, -0.5021, 0.704, 0.5021, -0.5021, -0.704, 0.5021, -0.5893, 0.5528, 0.5893, -0.3958, -0.8286, 0.3958, -0.5137, -0.3805, 0.7689, -0.311, 0.8286, 0.4654, -0.463, -0.5528, 0.6929, -0.3945, 0.704, 0.5904, -0.3945, -0.704, 0.5904, -0.463, 0.5528, 0.6929, -0.311, -0.8286, 0.4654, -0.5137, 0.3805, 0.7689, -0.2155, -0.9217, 0.3225, -0.545, 0.1939, 0.8157, -0.1116, -0.9796, 0.1671, -0.5556, 0, 0.8314, -0.1116, 0.9796, 0.1671, -0.545, -0.1939, 0.8157, -0.2155, 0.9217, 0.3225, -0.2142, -0.8286, 0.5171, -0.1484, -0.9217, 0.3583, -0.3539, 0.3805, 0.8544, -0.3754, 0.1939, 0.9063, -0.0769, -0.9796, 0.1856, -0.3827, 0, 0.9239, -0.0769, 0.9796, 0.1856, -0.3754, -0.1939, 0.9063, -0.1484, 0.9217, 0.3583, -0.3539, -0.3805, 0.8544, -0.2142, 0.8286, 0.5171, -0.3189, -0.5528, 0.7699, -0.2717, 0.704, 0.6561, -0.2717, -0.704, 0.6561, -0.3189, 0.5528, 0.7699, -0.1804, -0.3805, 0.907, -0.1626, -0.5528, 0.8173, -0.1092, 0.8286, 0.549, -0.1385, 0.704, 0.6965, -0.1385, -0.704, 0.6965, -0.1626, 0.5528, 0.8173, -0.1092, -0.8286, 0.549, -0.1804, 0.3805, 0.907, -0.0757, -0.9217, 0.3804, -0.1914, 0.1939, 0.9622, -0.0392, -0.9796, 0.1971, -0.1951, 0, 0.9808, -0.0392, 0.9796, 0.1971, -0.1914, -0.1939, 0.9622, -0.0757, 0.9217, 0.3804, 0, -0.9217, 0.3879, 0, -0.9796, 0.201, 0, 0, 1, 0, 0.9796, 0.201, 0, -0.1939, 0.981, 0, 0.9217, 0.3879, 0, -0.3805, 0.9247, 0, 0.8286, 0.5598, 0, -0.5528, 0.8333, 0, 0.704, 0.7101, 0, -0.704, 0.7101, 0, 0.5528, 0.8333, 0, -0.8286, 0.5598, 0, 0.3805, 0.9247, 0, 0.1939, 0.981, 0.1385, 0.704, 0.6965, 0.1385, -0.704, 0.6965, 0.1626, 0.5528, 0.8173, 0.1092, -0.8286, 0.549, 0.1804, 0.3805, 0.907, 0.0757, -0.9217, 0.3804, 0.1914, 0.1939, 0.9622, 0.0392, -0.9796, 0.1971, 0.1951, 0, 0.9808, 0.0392, 0.9796, 0.1971, 0.1914, -0.1939, 0.9622, 0.0757, 0.9217, 0.3804, 0.1804, -0.3805, 0.907, 0.1092, 0.8286, 0.549, 0.1626, -0.5528, 0.8173, 0.3827, 0, 0.9239, 0.0769, 0.9796, 0.1856, 0.0769, -0.9796, 0.1856, 0.3754, -0.1939, 0.9063, 0.1484, 0.9217, 0.3583, 0.3539, -0.3805, 0.8544, 0.2142, 0.8286, 0.5171, 0.3189, -0.5528, 0.7699, 0.2717, 0.704, 0.6561, 0.2717, -0.704, 0.6561, 0.3189, 0.5528, 0.7699, 0.2142, -0.8286, 0.5171, 0.3539, 0.3805, 0.8544, 0.1484, -0.9217, 0.3583, 0.3754, 0.1939, 0.9063, 0.3945, -0.704, 0.5904, 0.3945, 0.704, 0.5904, 0.463, 0.5528, 0.6929, 0.311, -0.8286, 0.4654, 0.5137, 0.3805, 0.7689, 0.2155, -0.9217, 0.3225, 0.545, 0.1939, 0.8157, 0.1116, -0.9796, 0.1671, 0.5556, 0, 0.8314, 0.1116, 0.9796, 0.1671, 0.545, -0.1939, 0.8157, 0.2155, 0.9217, 0.3225, 0.5137, -0.3805, 0.7689, 0.311, 0.8286, 0.4654, 0.463, -0.5528, 0.6929, 0.1421, 0.9796, 0.1421, 0.1421, -0.9796, 0.1421, 0.6937, -0.1939, 0.6937, 0.2743, 0.9217, 0.2743, 0.6539, -0.3805, 0.6539, 0.3958, 0.8286, 0.3958, 0.5893, -0.5528, 0.5893, 0.5021, 0.704, 0.5021, 0.5021, -0.704, 0.5021, 0.5893, 0.5528, 0.5893, 0.3958, -0.8286, 0.3958, 0.6539, 0.3805, 0.6539, 0.2743, -0.9217, 0.2743, 0.6937, 0.1939, 0.6937, 0.7071, 0, 0.7071, 0.5904, 0.704, 0.3945, 0.6929, 0.5528, 0.463, 0.5904, -0.704, 0.3945, 0.4654, -0.8286, 0.311, 0.7689, 0.3805, 0.5137, 0.3225, -0.9217, 0.2155, 0.8157, 0.1939, 0.545, 0.1671, -0.9796, 0.1116, 0.8314, 0, 0.5556, 0.1671, 0.9796, 0.1116, 0.8157, -0.1939, 0.545, 0.3225, 0.9217, 0.2155, 0.7689, -0.3805, 0.5137, 0.4654, 0.8286, 0.311, 0.6929, -0.5528, 0.463, 0.9063, -0.1939, 0.3754, 0.3583, 0.9217, 0.1484, 0.8544, -0.3805, 0.3539, 0.5171, 0.8286, 0.2142, 0.7699, -0.5528, 0.3189, 0.6561, 0.704, 0.2717, 0.6561, -0.704, 0.2717, 0.7699, 0.5528, 0.3189, 0.5171, -0.8286, 0.2142, 0.8544, 0.3805, 0.3539, 0.3583, -0.9217, 0.1484, 0.9063, 0.1939, 0.3754, 0.1856, -0.9796, 0.0769, 0.9239, 0, 0.3827, 0.1856, 0.9796, 0.0769, 0.549, -0.8286, 0.1092, 0.907, 0.3805, 0.1804, 0.3804, -0.9217, 0.0757, 0.9622, 0.1939, 0.1914, 0.1971, -0.9796, 0.0392, 0.9808, 0, 0.1951, 0.1971, 0.9796, 0.0392, 0.9622, -0.1939, 0.1914, 0.3804, 0.9217, 0.0757, 0.907, -0.3805, 0.1804, 0.549, 0.8286, 0.1092, 0.8173, -0.5528, 0.1626, 0.6965, 0.704, 0.1385, 0.6965, -0.704, 0.1385, 0.8173, 0.5528, 0.1626, 0.9209, -0.3789, 0.0907, 0.3876, 0.921, 0.0381, 0.5589, 0.8274, 0.055, 0.8305, -0.5509, 0.0818, 0.7084, 0.7023, 0.0698, 0.7084, -0.7023, 0.0698, 0.8305, 0.5509, 0.0818, 0.5589, -0.8274, 0.055, 0.9209, 0.3789, 0.0907, 0.3876, -0.921, 0.0381, 0.9764, 0.193, 0.0962, 0.2009, -0.9794, 0.0198, 0.9952, 0, 0.098, 0.2009, 0.9794, 0.0198, 0.9764, -0.193, 0.0962]; + _this.subMeshes = [new SubMesh(0, 1440)]; + return _this; } return Hemisphere; + }(BasicMesh); + + var __extends$8 = undefined && undefined.__extends || function () { + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; + return _extendStatics(d, b); + }; + return function (d, b) { + _extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; }(); - - var VWing = function () { + var VWing = function (_super) { + __extends$8(VWing, _super); function VWing() { - this.vertices = [0, 0, -7.3975, 0, -0.2707, 0, 1.4678, 0, 0, 0, 0.5653, 1.8374, 0, 1.4694, 0, 0, 1.553, -1.0874, 0, 0.7405, -5.3869, 2.3189, 0.251, 0, 1.4678, 0, 0, 1.6633, 2.6, 1.6982, 6.65, -0.8596, 3.1485, 2.3189, 0.251, 0, 1.9333, -0.2938, -1.9828, 1.4678, 0, 0, 2.3189, 0.251, 0, 1.4678, 0, 0, 1.4678, 0, 0, 1.6148, -0.4246, -2.7743, 1.9333, -0.2938, -1.9828, 1.4678, 0, 0, 1.6148, -0.4246, -2.7743, 1.6148, -0.4246, -2.7743, 1.9333, -0.2938, -1.9828, -1.4678, 0, 0, -2.3189, 0.251, 0, -1.6633, 2.6, 1.6982, -1.4678, 0, 0, -6.65, -0.8596, 3.1485, -1.9333, -0.2938, -1.9828, -2.3189, 0.251, 0, -1.4678, 0, 0, -2.3189, 0.251, 0, -1.4678, 0, 0, -1.4678, 0, 0, -1.6148, -0.4246, -2.7743, -1.9333, -0.2938, -1.9828, -1.6148, -0.4246, -2.7743, -1.4678, 0, 0, -1.6148, -0.4246, -2.7743, -1.9333, -0.2938, -1.9828, 0, -0.2707, 0, 0, 0.5653, 1.8374, 1.4678, 0, 0, 0, -0.2707, 0, -1.4678, 0, 0]; - this.indices = [0, 1, 2, 2, 3, 4, 5, 2, 4, 6, 0, 2, 5, 6, 2, 7, 8, 9, 10, 11, 12, 10, 12, 13, 14, 10, 15, 16, 12, 17, 7, 9, 18, 9, 19, 20, 21, 22, 9, 0, 23, 1, 23, 4, 3, 5, 4, 23, 6, 23, 0, 5, 23, 6, 24, 25, 26, 27, 28, 29, 27, 30, 28, 31, 32, 27, 33, 34, 28, 24, 35, 25, 25, 36, 37, 38, 25, 39, 40, 41, 42, 43, 44, 41]; - this.normals = [0, -0.1063, -0.9943, 0, -0.9819, 0.1891, 0.9233, -0.2975, 0.2427, 0, 0.0714, 0.9974, 0, 0.9697, 0.2443, 0, 0.9961, -0.088, 0, 0.9478, -0.3187, 0.553, 0.7911, 0.2613, -0.7402, -0.526, 0.4187, -0.0528, 0.7418, 0.6686, 0.7771, -0.1425, 0.6131, 0.553, 0.7911, 0.2613, 0.8324, -0.4718, -0.2906, -0.7402, -0.526, 0.4187, 0.553, 0.7911, 0.2613, -0.7402, -0.526, 0.4187, -0.7402, -0.526, 0.4187, -0.1135, -0.2998, -0.9472, 0.8324, -0.4718, -0.2906, -0.7402, -0.526, 0.4187, -0.1135, -0.2998, -0.9472, -0.1135, -0.2998, -0.9472, 0.8324, -0.4718, -0.2906, -0.9233, -0.2975, 0.2427, -0.553, 0.7911, 0.2613, 0.0528, 0.7418, 0.6686, 0.7402, -0.526, 0.4187, -0.7771, -0.1425, 0.6131, -0.8324, -0.4718, -0.2906, -0.553, 0.7911, 0.2613, 0.7402, -0.526, 0.4187, -0.553, 0.7911, 0.2613, 0.7402, -0.526, 0.4187, 0.7402, -0.526, 0.4187, 0.1135, -0.2998, -0.9472, -0.8324, -0.4718, -0.2906, 0.1135, -0.2998, -0.9472, 0.7402, -0.526, 0.4187, 0.1135, -0.2998, -0.9472, -0.8324, -0.4718, -0.2906, 0, -0.9819, 0.1891, 0, 0.0714, 0.9974, 0.9233, -0.2975, 0.2427, 0, -0.9819, 0.1891, -0.9233, -0.2975, 0.2427]; - this.subMeshes = [new SubMesh(0, 78), new SubMesh(78, 6)]; - this.itemSize = 3; - this.primitive = 'TRIANGLES'; + var _this = _super.call(this) || this; + _this.vertices = [0, 0, -7.3975, 0, -0.2707, 0, 1.4678, 0, 0, 0, 0.5653, 1.8374, 0, 1.4694, 0, 0, 1.553, -1.0874, 0, 0.7405, -5.3869, 2.3189, 0.251, 0, 1.4678, 0, 0, 1.6633, 2.6, 1.6982, 6.65, -0.8596, 3.1485, 2.3189, 0.251, 0, 1.9333, -0.2938, -1.9828, 1.4678, 0, 0, 2.3189, 0.251, 0, 1.4678, 0, 0, 1.4678, 0, 0, 1.6148, -0.4246, -2.7743, 1.9333, -0.2938, -1.9828, 1.4678, 0, 0, 1.6148, -0.4246, -2.7743, 1.6148, -0.4246, -2.7743, 1.9333, -0.2938, -1.9828, -1.4678, 0, 0, -2.3189, 0.251, 0, -1.6633, 2.6, 1.6982, -1.4678, 0, 0, -6.65, -0.8596, 3.1485, -1.9333, -0.2938, -1.9828, -2.3189, 0.251, 0, -1.4678, 0, 0, -2.3189, 0.251, 0, -1.4678, 0, 0, -1.4678, 0, 0, -1.6148, -0.4246, -2.7743, -1.9333, -0.2938, -1.9828, -1.6148, -0.4246, -2.7743, -1.4678, 0, 0, -1.6148, -0.4246, -2.7743, -1.9333, -0.2938, -1.9828, 0, -0.2707, 0, 0, 0.5653, 1.8374, 1.4678, 0, 0, 0, -0.2707, 0, -1.4678, 0, 0]; + _this.indices = [0, 1, 2, 2, 3, 4, 5, 2, 4, 6, 0, 2, 5, 6, 2, 7, 8, 9, 10, 11, 12, 10, 12, 13, 14, 10, 15, 16, 12, 17, 7, 9, 18, 9, 19, 20, 21, 22, 9, 0, 23, 1, 23, 4, 3, 5, 4, 23, 6, 23, 0, 5, 23, 6, 24, 25, 26, 27, 28, 29, 27, 30, 28, 31, 32, 27, 33, 34, 28, 24, 35, 25, 25, 36, 37, 38, 25, 39, 40, 41, 42, 43, 44, 41]; + _this.normals = [0, -0.1063, -0.9943, 0, -0.9819, 0.1891, 0.9233, -0.2975, 0.2427, 0, 0.0714, 0.9974, 0, 0.9697, 0.2443, 0, 0.9961, -0.088, 0, 0.9478, -0.3187, 0.553, 0.7911, 0.2613, -0.7402, -0.526, 0.4187, -0.0528, 0.7418, 0.6686, 0.7771, -0.1425, 0.6131, 0.553, 0.7911, 0.2613, 0.8324, -0.4718, -0.2906, -0.7402, -0.526, 0.4187, 0.553, 0.7911, 0.2613, -0.7402, -0.526, 0.4187, -0.7402, -0.526, 0.4187, -0.1135, -0.2998, -0.9472, 0.8324, -0.4718, -0.2906, -0.7402, -0.526, 0.4187, -0.1135, -0.2998, -0.9472, -0.1135, -0.2998, -0.9472, 0.8324, -0.4718, -0.2906, -0.9233, -0.2975, 0.2427, -0.553, 0.7911, 0.2613, 0.0528, 0.7418, 0.6686, 0.7402, -0.526, 0.4187, -0.7771, -0.1425, 0.6131, -0.8324, -0.4718, -0.2906, -0.553, 0.7911, 0.2613, 0.7402, -0.526, 0.4187, -0.553, 0.7911, 0.2613, 0.7402, -0.526, 0.4187, 0.7402, -0.526, 0.4187, 0.1135, -0.2998, -0.9472, -0.8324, -0.4718, -0.2906, 0.1135, -0.2998, -0.9472, 0.7402, -0.526, 0.4187, 0.1135, -0.2998, -0.9472, -0.8324, -0.4718, -0.2906, 0, -0.9819, 0.1891, 0, 0.0714, 0.9974, 0.9233, -0.2975, 0.2427, 0, -0.9819, 0.1891, -0.9233, -0.2975, 0.2427]; + _this.subMeshes = [new SubMesh(0, 78), new SubMesh(78, 6)]; + return _this; } return VWing; + }(BasicMesh); + + var __extends$9 = undefined && undefined.__extends || function () { + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; + return _extendStatics(d, b); + }; + return function (d, b) { + _extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; }(); - - var Cannon = function () { + var Cannon = function (_super) { + __extends$9(Cannon, _super); function Cannon() { - this.vertices = [0, -0.4, 0.1885, 0.7, 0, -0.9849, 0, -0.4, -0.9849, 0, 0.4, -0.9849, 0.7, 0, 0.4525, 0, 0.4, 0.9293, 0, 0, -0.8408, 0, 0.4, -0.9849, 0, 0, 1.9525, 0, 0.4, 0.9293, 0.7, 0, 0.4525, 0, 0, -0.8408, 0, 0.3, -1.1203, 0.6, 0, -1.1203, 0, 0.11, -2.8486, 0.2351, 0, -3.0108, 0, -0.11, -3.0108, 0, -0.3, -1.1203, 0, 0, -0.8408, 0.7, 0, 0.4525, 0, -0.4, 0.1885, -0.7, 0, -0.9849, -0.7, 0, 0.4525, 0, 0.4, -0.9849, -0.7, 0, 0.4525, 0, 0.4, 0.9293, 0, 0, -0.8408, -0.6, 0, -1.1203, -0.2351, 0, -3.0108, 0, 0, -0.8408, -0.7, 0, 0.4525, 0, -0.4, 0.1885, 0.7, 0, 0.4525, -0.7, 0, 0.4525]; - this.indices = [0, 1, 2, 3, 4, 5, 1, 6, 2, 1, 7, 6, 8, 9, 10, 11, 12, 13, 14, 13, 12, 15, 14, 16, 13, 17, 18, 19, 20, 8, 17, 13, 15, 15, 16, 17, 21, 0, 2, 22, 3, 5, 21, 2, 6, 21, 6, 23, 8, 24, 25, 26, 27, 12, 27, 14, 12, 28, 16, 14, 27, 29, 17, 30, 8, 31, 17, 28, 27, 28, 17, 16, 0, 32, 1, 3, 1, 4, 14, 15, 13, 21, 33, 0, 22, 21, 3, 27, 28, 14]; - this.normals = [0, -0.9962, 0.0863, 0.7964, 0, -0.6047, 0, -0.7073, -0.7069, 0, 0.7073, -0.7069, 0.9834, -0.0314, 0.1787, 0, 0.973, 0.231, 0, 0, -1, 0, 0.7073, -0.7069, 0, -0.0518, 0.9987, 0, 0.973, 0.231, 0.9834, -0.0314, 0.1787, 0, 0, -1, 0, 0.9499, 0.3124, 0.9369, 0.0022, 0.3496, 0, 0.9436, -0.3311, 0.6731, 0.0686, -0.7363, 0, -0.5683, -0.8228, 0, -0.948, 0.3182, 0, 0, -1, 0.9834, -0.0314, 0.1787, 0, -0.9962, 0.0863, -0.7964, 0, -0.6047, -0.9834, -0.0314, 0.1787, 0, 0.7073, -0.7069, -0.9834, -0.0314, 0.1787, 0, 0.973, 0.231, 0, 0, -1, -0.9369, 0.0022, 0.3496, -0.6731, 0.0686, -0.7363, 0, 0, -1, -0.9834, -0.0314, 0.1787, 0, -0.9962, 0.0863, 0.9834, -0.0314, 0.1787, -0.9834, -0.0314, 0.1787]; - this.subMeshes = [new SubMesh(0, 90)]; - this.itemSize = 3; - this.primitive = 'TRIANGLES'; + var _this = _super.call(this) || this; + _this.vertices = [0, -0.4, 0.1885, 0.7, 0, -0.9849, 0, -0.4, -0.9849, 0, 0.4, -0.9849, 0.7, 0, 0.4525, 0, 0.4, 0.9293, 0, 0, -0.8408, 0, 0.4, -0.9849, 0, 0, 1.9525, 0, 0.4, 0.9293, 0.7, 0, 0.4525, 0, 0, -0.8408, 0, 0.3, -1.1203, 0.6, 0, -1.1203, 0, 0.11, -2.8486, 0.2351, 0, -3.0108, 0, -0.11, -3.0108, 0, -0.3, -1.1203, 0, 0, -0.8408, 0.7, 0, 0.4525, 0, -0.4, 0.1885, -0.7, 0, -0.9849, -0.7, 0, 0.4525, 0, 0.4, -0.9849, -0.7, 0, 0.4525, 0, 0.4, 0.9293, 0, 0, -0.8408, -0.6, 0, -1.1203, -0.2351, 0, -3.0108, 0, 0, -0.8408, -0.7, 0, 0.4525, 0, -0.4, 0.1885, 0.7, 0, 0.4525, -0.7, 0, 0.4525]; + _this.indices = [0, 1, 2, 3, 4, 5, 1, 6, 2, 1, 7, 6, 8, 9, 10, 11, 12, 13, 14, 13, 12, 15, 14, 16, 13, 17, 18, 19, 20, 8, 17, 13, 15, 15, 16, 17, 21, 0, 2, 22, 3, 5, 21, 2, 6, 21, 6, 23, 8, 24, 25, 26, 27, 12, 27, 14, 12, 28, 16, 14, 27, 29, 17, 30, 8, 31, 17, 28, 27, 28, 17, 16, 0, 32, 1, 3, 1, 4, 14, 15, 13, 21, 33, 0, 22, 21, 3, 27, 28, 14]; + _this.normals = [0, -0.9962, 0.0863, 0.7964, 0, -0.6047, 0, -0.7073, -0.7069, 0, 0.7073, -0.7069, 0.9834, -0.0314, 0.1787, 0, 0.973, 0.231, 0, 0, -1, 0, 0.7073, -0.7069, 0, -0.0518, 0.9987, 0, 0.973, 0.231, 0.9834, -0.0314, 0.1787, 0, 0, -1, 0, 0.9499, 0.3124, 0.9369, 0.0022, 0.3496, 0, 0.9436, -0.3311, 0.6731, 0.0686, -0.7363, 0, -0.5683, -0.8228, 0, -0.948, 0.3182, 0, 0, -1, 0.9834, -0.0314, 0.1787, 0, -0.9962, 0.0863, -0.7964, 0, -0.6047, -0.9834, -0.0314, 0.1787, 0, 0.7073, -0.7069, -0.9834, -0.0314, 0.1787, 0, 0.973, 0.231, 0, 0, -1, -0.9369, 0.0022, 0.3496, -0.6731, 0.0686, -0.7363, 0, 0, -1, -0.9834, -0.0314, 0.1787, 0, -0.9962, 0.0863, 0.9834, -0.0314, 0.1787, -0.9834, -0.0314, 0.1787]; + _this.subMeshes = [new SubMesh(0, 90)]; + return _this; } return Cannon; - }(); + }(BasicMesh); var CustomMesh = function () { function CustomMesh() { @@ -4150,16 +3905,19 @@ var Roostr = (function (exports) { return DirectionalLight; }(); - var __extends$2 = undefined && undefined.__extends || function () { - var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) { - if (b.hasOwnProperty(p)) d[p] = b[p]; - } + var __extends$10 = undefined && undefined.__extends || function () { + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; + return _extendStatics(d, b); }; return function (d, b) { - extendStatics(d, b); + _extendStatics(d, b); function __() { this.constructor = d; } @@ -4167,7 +3925,7 @@ var Roostr = (function (exports) { }; }(); var PointLight = function (_super) { - __extends$2(PointLight, _super); + __extends$10(PointLight, _super); function PointLight() { var _this = _super.call(this) || this; _this.constantAttenuation = 0; @@ -4182,16 +3940,19 @@ var Roostr = (function (exports) { return PointLight; }(DirectionalLight); - var __extends$3 = undefined && undefined.__extends || function () { - var extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { - d.__proto__ = b; - } || function (d, b) { - for (var p in b) { - if (b.hasOwnProperty(p)) d[p] = b[p]; - } + var __extends$11 = undefined && undefined.__extends || function () { + var _extendStatics = function extendStatics(d, b) { + _extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) { + d.__proto__ = b; + } || function (d, b) { + for (var p in b) { + if (b.hasOwnProperty(p)) d[p] = b[p]; + } + }; + return _extendStatics(d, b); }; return function (d, b) { - extendStatics(d, b); + _extendStatics(d, b); function __() { this.constructor = d; } @@ -4199,7 +3960,7 @@ var Roostr = (function (exports) { }; }(); var SpotLight = function (_super) { - __extends$3(SpotLight, _super); + __extends$11(SpotLight, _super); function SpotLight() { var _this = _super.call(this) || this; _this.cutoff = 180; diff --git a/dist/roostr.iife.min.js b/dist/roostr.iife.min.js index 786599f..354e03c 100644 --- a/dist/roostr.iife.min.js +++ b/dist/roostr.iife.min.js @@ -23,4 +23,4 @@ * http://roostrjs.lcluber.com */ -var Roostr=function(t){"use strict";function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var u=function(){function t(t){this.context=t,this.defaultSettings()}return t.prototype.defaultSettings=function(){this.setDepthFunc("LEQUAL"),this.enableDepthTest(),this.disableBlendMode()},t.prototype.enable=function(t){this.context.enable(this.context[t])},t.prototype.disable=function(t){this.context.disable(this.context[t])},t.prototype.setDepthFunc=function(t){this.context.depthFunc(this.context[t])},t.prototype.setBlendFunction=function(t,e){this.context.blendFunc(this.context[t],this.context[e])},t.prototype.setBlendEquation=function(t){this.context.blendEquation(this.context[t])},t.prototype.enableDepthTest=function(){this.enable("DEPTH_TEST"),this.context.depthMask(!0)},t.prototype.disableDepthTest=function(){this.disable("DEPTH_TEST"),this.context.depthMask(!1)},t.prototype.enableBlendMode=function(t,e,i){this.setBlendEquation(t),this.setBlendFunction(e,i),this.enable("BLEND")},t.prototype.disableBlendMode=function(){this.disable("BLEND")},t.prototype.getParameter=function(t){return this.context.getParameter(t)},t}(),h=function(){function t(t,e){for(var i=0;i=0}},{key:"isNegative",value:function(t){return t<0}},{key:"validate",value:function(t){return isNaN(t)?0:t}}]),t}(),l=function(){function t(){e(this,t)}return h(t,null,[{key:"init",value:function(){t.createRoundedPis(),t.createFactorialArray()}},{key:"createRoundedPis",value:function(){this.pi=c.round(Math.PI,2),this.twopi=c.round(2*Math.PI,2),this.halfpi=c.round(.5*Math.PI,2)}},{key:"createFactorialArray",value:function(){for(var t=3*this.sineLoops[this.sineLoops.length-1],e=2*this.cosineLoops[this.cosineLoops.length-1],i=1,n=1;i<=Math.max(t,e);i++)n*=this.factorial(i),this.factorialArray.push(n)}},{key:"factorial",value:function(t){return t>1?t-1:1}},{key:"setSinePrecision",value:function(t){return tthis.pi||t<-this.pi?t-this.twopi*Math.floor((t+this.pi)/this.twopi):t}},{key:"sine",value:function(e){return e=this.normalizeRadian(e),t.sineDecimals<=2&&e<.28&&e>-.28?e:this.taylorSerie(3,t.sineLoops[this.sineDecimals],e,e,!0)}},{key:"cosine",value:function(e){var i=(e=this.normalizeRadian(e))*e;return this.cosineDecimals<=2&&e<=.5&&e>=-.5?1-.5*i:this.taylorSerie(2,t.cosineLoops[this.cosineDecimals],1,e,!0)}},{key:"arctan2",value:function(t,e){var i=e/t;return t>0?this.arctan(i):t<0?e<0?this.arctan(i)-this.pi:this.arctan(i)+this.pi:e<0?-this.halfpi:e>0&&this.halfpi}},{key:"arctan2Vector2",value:function(t){return this.arctan2(t.x,t.y)}},{key:"arctan",value:function(e){var i=t.arctanLoops[this.arctanDecimals];return e<1&&e>-1?this.taylorSerie(3,i,e,e,!1):e>=1?(e=1/e,-(this.taylorSerie(3,i,e,e,!1)-this.halfpi)):(e=-1/e,this.taylorSerie(3,i,e,e,!1)-this.halfpi)}},{key:"sineEquation",value:function(t,e,i,n){return t*this.sine(e+i)+n}},{key:"cosineEquation",value:function(t,e,i,n){return t*this.cosine(e+i)+n}},{key:"arctanEquation",value:function(t,e,i,n){return t*this.arctan(e+i)+n}},{key:"taylorSerie",value:function(t,e,i,n,r){for(var s=n*n,o=i,a=-1,u=0;t<=e;t+=2,u++)o+=(i*=s)/(r?this.factorialArray[t]:t)*a,a=c.opposite(a);return o}}]),t}();l.sineLoops=[9,11,13,15,17,18,19,21,23],l.cosineLoops=[6,8,10,12,14,16,18,20,22],l.arctanLoops=[17,19,21,23,25,27,29,31,33],l.sineDecimals=2,l.cosineDecimals=2,l.arctanDecimals=2,l.factorialArray=[],l.init();(function(){function t(){e(this,t)}h(t,null,[{key:"millisecondToSecond",value:function(t){return.001*t}},{key:"secondToMilliecond",value:function(t){return 1e3*t}},{key:"millisecondToFramePerSecond",value:function(t){return Math.round(1e3/t)}},{key:"framePerSecondToMillisecond",value:function(t){return c.round(1e3/t,1)}}])})(),function(){function t(){e(this,t)}h(t,null,[{key:"float",value:function(t,e){return t+Math.random()*(e-t)}},{key:"integer",value:function(t,e){return Math.floor(t+Math.random()*(e-t+1))}},{key:"distribution",value:function(t,e,i){for(var n=0,r=0;rthis.x?f.y:f.x}},{key:"minAxis",value:function(){return this.y=0}},{key:"isNegative",value:function(t){return t<0}},{key:"validate",value:function(t){return isNaN(t)?0:t}}]),t}(),y=function(){function t(){e(this,t)}return l(t,null,[{key:"init",value:function(){t.createRoundedPis(),t.createFactorialArray()}},{key:"createRoundedPis",value:function(){this.pi=f.round(Math.PI,2),this.twopi=f.round(2*Math.PI,2),this.halfpi=f.round(.5*Math.PI,2)}},{key:"createFactorialArray",value:function(){for(var t=3*this.sineLoops[this.sineLoops.length-1],e=2*this.cosineLoops[this.cosineLoops.length-1],i=1,n=1;i<=Math.max(t,e);i++)n*=this.factorial(i),this.factorialArray.push(n)}},{key:"factorial",value:function(t){return t>1?t-1:1}},{key:"setSinePrecision",value:function(t){return tthis.pi||t<-this.pi?t-this.twopi*Math.floor((t+this.pi)/this.twopi):t}},{key:"sine",value:function(e){return e=this.normalizeRadian(e),t.sineDecimals<=2&&e<.28&&e>-.28?e:this.taylorSerie(3,t.sineLoops[this.sineDecimals],e,e,!0)}},{key:"cosine",value:function(e){var i=(e=this.normalizeRadian(e))*e;return this.cosineDecimals<=2&&e<=.5&&e>=-.5?1-.5*i:this.taylorSerie(2,t.cosineLoops[this.cosineDecimals],1,e,!0)}},{key:"arctan2",value:function(t,e){var i=e/t;return t>0?this.arctan(i):t<0?e<0?this.arctan(i)-this.pi:this.arctan(i)+this.pi:e<0?-this.halfpi:e>0&&this.halfpi}},{key:"arctan2Vector2",value:function(t){return this.arctan2(t.x,t.y)}},{key:"arctan",value:function(e){var i=t.arctanLoops[this.arctanDecimals];return e<1&&e>-1?this.taylorSerie(3,i,e,e,!1):e>=1?(e=1/e,-(this.taylorSerie(3,i,e,e,!1)-this.halfpi)):(e=-1/e,this.taylorSerie(3,i,e,e,!1)-this.halfpi)}},{key:"sineEquation",value:function(t,e,i,n){return t*this.sine(e+i)+n}},{key:"cosineEquation",value:function(t,e,i,n){return t*this.cosine(e+i)+n}},{key:"arctanEquation",value:function(t,e,i,n){return t*this.arctan(e+i)+n}},{key:"taylorSerie",value:function(t,e,i,n,r){for(var o=n*n,s=i,a=-1,u=0;t<=e;t+=2,u++)s+=(i*=o)/(r?this.factorialArray[t]:t)*a,a=f.opposite(a);return s}}]),t}();y.sineLoops=[9,11,13,15,17,18,19,21,23],y.cosineLoops=[6,8,10,12,14,16,18,20,22],y.arctanLoops=[17,19,21,23,25,27,29,31,33],y.sineDecimals=2,y.cosineDecimals=2,y.arctanDecimals=2,y.factorialArray=[],y.init();(function(){function t(){e(this,t)}l(t,null,[{key:"millisecondToSecond",value:function(t){return.001*t}},{key:"secondToMilliecond",value:function(t){return 1e3*t}},{key:"millisecondToFramePerSecond",value:function(t){return Math.round(1e3/t)}},{key:"framePerSecondToMillisecond",value:function(t){return f.round(1e3/t,1)}}])})(),function(){function t(){e(this,t)}l(t,null,[{key:"float",value:function(t,e){return t+Math.random()*(e-t)}},{key:"integer",value:function(t,e){return Math.floor(t+Math.random()*(e-t+1))}},{key:"distribution",value:function(t,e,i){for(var n=0,r=0;rthis.x?"y":"x"}},{key:"minAxis",value:function(){return this.yconstructor
  • Parameters

    @@ -159,7 +159,7 @@

    position

    position: Vector3
    @@ -169,7 +169,7 @@

    projectionMatrix

    projectionMatrix: Matrix4x4
    @@ -179,7 +179,7 @@

    target

    target: Vector3
    @@ -189,7 +189,7 @@

    up

    up: Vector3
    @@ -199,7 +199,7 @@

    viewMatrix

    viewMatrix: Matrix4x3
    @@ -216,7 +216,7 @@

    getProjectionMatrix

  • Returns Float32Array

    @@ -233,7 +233,7 @@

    getViewMatrix

  • Returns Float32Array

    @@ -250,7 +250,7 @@

    setPosition

  • Parameters

    @@ -273,7 +273,7 @@

    setTarget

  • Parameters

    @@ -296,7 +296,7 @@

    setUp

  • Parameters

    @@ -319,7 +319,7 @@

    setViewMatrix

  • Returns void

    diff --git a/doc/classes/_cameras_orthographic_.orthographiccamera.html b/doc/classes/_cameras_orthographic_.orthographiccamera.html index 78a3ce8..04639a2 100644 --- a/doc/classes/_cameras_orthographic_.orthographiccamera.html +++ b/doc/classes/_cameras_orthographic_.orthographiccamera.html @@ -136,7 +136,7 @@

    constructor

    Parameters

    @@ -173,7 +173,7 @@

    bottom

    bottom: number
    @@ -183,7 +183,7 @@

    far

    far: number
    @@ -193,7 +193,7 @@

    left

    left: number
    @@ -203,7 +203,7 @@

    near

    near: number
    @@ -214,7 +214,7 @@

    position

    @@ -225,7 +225,7 @@

    projectionMatrix

    @@ -235,7 +235,7 @@

    right

    right: number
    @@ -246,7 +246,7 @@

    target

    @@ -256,7 +256,7 @@

    top

    top: number
    @@ -267,7 +267,7 @@

    up

    @@ -278,7 +278,7 @@

    viewMatrix

    @@ -296,7 +296,7 @@

    getProjectionMatrix

    Returns Float32Array

    @@ -314,7 +314,7 @@

    getViewMatrix

    Returns Float32Array

    @@ -332,7 +332,7 @@

    setPosition

    Parameters

    @@ -355,7 +355,7 @@

    setProjectionMatrix

  • Returns void

    @@ -373,7 +373,7 @@

    setTarget

    Parameters

    @@ -397,7 +397,7 @@

    setUp

    Parameters

    @@ -421,7 +421,7 @@

    setViewMatrix

    Returns void

    diff --git a/doc/classes/_cameras_perspective_.perspectivecamera.html b/doc/classes/_cameras_perspective_.perspectivecamera.html index ab691bd..f2fc9ad 100644 --- a/doc/classes/_cameras_perspective_.perspectivecamera.html +++ b/doc/classes/_cameras_perspective_.perspectivecamera.html @@ -134,7 +134,7 @@

    constructor

    Parameters

    @@ -165,7 +165,7 @@

    fov

    fov: number
    @@ -176,7 +176,7 @@

    position

    @@ -187,7 +187,7 @@

    projectionMatrix

    @@ -197,7 +197,7 @@

    ratio

    ratio: number
    @@ -208,7 +208,7 @@

    target

    @@ -219,7 +219,7 @@

    up

    @@ -230,7 +230,7 @@

    viewMatrix

    @@ -240,7 +240,7 @@

    zFar

    zFar: number
    @@ -250,7 +250,7 @@

    zNear

    zNear: number
    @@ -268,7 +268,7 @@

    getProjectionMatrix

    Returns Float32Array

    @@ -286,7 +286,7 @@

    getViewMatrix

    Returns Float32Array

    @@ -304,7 +304,7 @@

    setPosition

    Parameters

    @@ -327,7 +327,7 @@

    setProjectionMatrix

  • Parameters

    @@ -351,7 +351,7 @@

    setTarget

    Parameters

    @@ -375,7 +375,7 @@

    setUp

    Parameters

    @@ -399,7 +399,7 @@

    setViewMatrix

    Returns void

    diff --git a/doc/classes/_geometry_basic_.basicmesh.html b/doc/classes/_geometry_basic_.basicmesh.html new file mode 100644 index 0000000..5d80aca --- /dev/null +++ b/doc/classes/_geometry_basic_.basicmesh.html @@ -0,0 +1,325 @@ + + + + + + BasicMesh | Roostr.js - Documentation + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Class BasicMesh

    +
    +
    +
    +
    +
    +
    +
    +

    Hierarchy

    + +
    +
    +

    Index

    +
    +
    +
    +

    Constructors

    + +
    +
    +

    Properties

    + +
    +
    +
    +
    +
    +

    Constructors

    +
    + +

    constructor

    + + +
    +
    +
    +

    Properties

    +
    + +

    indices

    +
    indices: number[]
    + +
    +
    + +

    itemSize

    +
    itemSize: number
    + +
    +
    + +

    normals

    +
    normals: number[]
    + +
    +
    + +

    primitive

    +
    primitive: string
    + +
    +
    + +

    subMeshes

    +
    subMeshes: SubMesh[]
    + +
    +
    + +

    vertices

    +
    vertices: number[]
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/doc/classes/_geometry_cannon_.cannon.html b/doc/classes/_geometry_cannon_.cannon.html index 48d64fa..b1b0fd9 100644 --- a/doc/classes/_geometry_cannon_.cannon.html +++ b/doc/classes/_geometry_cannon_.cannon.html @@ -73,7 +73,12 @@

    Class Cannon

    Hierarchy

    @@ -84,19 +89,18 @@

    Index

    Constructors

    -
    +

    Properties

    @@ -104,17 +108,18 @@

    Properties

    Constructors

    -
    +

    constructor

    -
    -
    +

    Properties

    -
    +

    indices

    -
    indices: Array<number>
    +
    indices: number[]
    -
    +

    itemSize

    itemSize: number
    -
    -
    - -

    nbSubMeshes

    -
    nbSubMeshes: number
    -
    -
    +

    normals

    -
    normals: Array<number>
    +
    normals: number[]
    -
    +

    primitive

    primitive: string
    -
    +

    subMeshes

    -
    subMeshes: Array<SubMesh>
    +
    subMeshes: SubMesh[]
    -
    +

    vertices

    -
    vertices: Array<number>
    +
    vertices: number[]
    @@ -214,28 +215,25 @@

    vertices

  • Cannon diff --git a/doc/classes/_geometry_cube_.cube.html b/doc/classes/_geometry_cube_.cube.html index 0d42f79..c93c425 100644 --- a/doc/classes/_geometry_cube_.cube.html +++ b/doc/classes/_geometry_cube_.cube.html @@ -73,7 +73,12 @@

    Class Cube

    Hierarchy

  • @@ -84,19 +89,18 @@

    Index

    Constructors

    -
    +

    Properties

    @@ -104,17 +108,18 @@

    Properties

    Constructors

    -
    +

    constructor

    -
    -
    +

    Properties

    -
    +

    indices

    -
    indices: Array<number>
    +
    indices: number[]
    -
    +

    itemSize

    itemSize: number
    -
    -
    - -

    nbSubMeshes

    -
    nbSubMeshes: number
    -
    -
    +

    normals

    -
    normals: Array<number>
    +
    normals: number[]
    -
    +

    primitive

    primitive: string
    -
    +

    subMeshes

    -
    subMeshes: Array<SubMesh>
    +
    subMeshes: SubMesh[]
    -
    +

    vertices

    -
    vertices: Array<number>
    +
    vertices: number[]
    @@ -220,28 +221,25 @@

    vertices

  • Cube diff --git a/doc/classes/_geometry_custommesh_.custommesh.html b/doc/classes/_geometry_custommesh_.custommesh.html index 1f5235b..cf1a3e3 100644 --- a/doc/classes/_geometry_custommesh_.custommesh.html +++ b/doc/classes/_geometry_custommesh_.custommesh.html @@ -92,7 +92,6 @@

    Properties

  • -
    - -

    nbSubMeshes

    -
    nbSubMeshes: number
    -

    normals

    -
    normals: Float32Array
    +
    normals: Float32Array | null
    @@ -185,47 +174,47 @@

    primitive

    primitive: string

    primitives

    -
    primitives: Array<string>
    +
    primitives: string[]

    subMeshes

    -
    subMeshes: Array<SubMesh>
    +
    subMeshes: SubMesh[]

    uvs

    -
    uvs: Float32Array
    +
    uvs: Float32Array | null

    vertices

    -
    vertices: Float32Array
    +
    vertices: Float32Array | null
    @@ -242,7 +231,7 @@

    addSubMesh

  • Parameters

    @@ -268,7 +257,7 @@

    addSubMeshes

  • Parameters

    @@ -291,7 +280,7 @@

    setIndices

  • Parameters

    @@ -314,7 +303,7 @@

    setItemSize

  • Parameters

    @@ -337,7 +326,7 @@

    setNormals

  • Parameters

    @@ -360,7 +349,7 @@

    setPrimitive

  • Parameters

    @@ -383,7 +372,7 @@

    setUvs

  • Parameters

    @@ -406,7 +395,7 @@

    setVertices

  • Parameters

    @@ -448,9 +437,6 @@

    Returns void itemSize

  • -
  • - nbSubMeshes -
  • normals
  • diff --git a/doc/classes/_geometry_fullscreenquad_.fullscreenquad.html b/doc/classes/_geometry_fullscreenquad_.fullscreenquad.html index 4cecd99..85e7824 100644 --- a/doc/classes/_geometry_fullscreenquad_.fullscreenquad.html +++ b/doc/classes/_geometry_fullscreenquad_.fullscreenquad.html @@ -73,7 +73,12 @@

    Class FullscreenQuad

    Hierarchy

    • - FullscreenQuad + BasicMesh +
        +
      • + FullscreenQuad +
      • +
    @@ -84,18 +89,19 @@

    Index

    Constructors

    Properties

    @@ -103,17 +109,18 @@

    Properties

    Constructors

    -
    +

    constructor

    -
    @@ -138,7 +138,7 @@

    diffuse

    diffuse: Vector3
    @@ -148,7 +148,7 @@

    shininess

    shininess: number
    @@ -158,17 +158,17 @@

    specular

    specular: Vector3

    uniforms

    - +
    @@ -214,9 +214,6 @@

    uniforms

  • diff --git a/doc/classes/_mesh_.mesh.html b/doc/classes/_mesh_.mesh.html index a021668..11c2c54 100644 --- a/doc/classes/_mesh_.mesh.html +++ b/doc/classes/_mesh_.mesh.html @@ -158,7 +158,7 @@

    constructor

  • Parameters

    @@ -180,10 +180,10 @@

    Properties

    WebGLTexture

    -
    WebGLTexture: WebGLTexture
    +
    WebGLTexture: WebGLTexture | null
    @@ -193,7 +193,7 @@

    active

    active: boolean
    @@ -203,17 +203,17 @@

    blendMode

    blendMode: boolean

    children

    -
    children: Array<Mesh>
    +
    children: Mesh[]
    @@ -223,17 +223,17 @@

    context

    context: WebGLRenderingContext

    customUniforms

    -
    customUniforms: object
    +
    customUniforms: ICustomUniforms
    @@ -243,47 +243,47 @@

    drawMethod

    drawMethod: eDrawMethod

    indexBuffer

    -
    indexBuffer: WebGLBuffer
    +
    indexBuffer: WebGLBuffer | null

    indices

    -
    indices: Array<number>
    +
    indices: number[] | null

    itemSize

    -
    itemSize: number
    +
    itemSize: number | null

    materials

    -
    materials: Array<Material>
    +
    materials: Material[]
    @@ -293,7 +293,7 @@

    modelMatrix

    modelMatrix: Matrix4x3
    @@ -303,7 +303,7 @@

    nbPrograms

    nbPrograms: number
    @@ -313,47 +313,47 @@

    nbSubMeshes

    nbSubMeshes: number

    normalBuffer

    -
    normalBuffer: WebGLBuffer
    +
    normalBuffer: WebGLBuffer | null

    normals

    -
    normals: Array<number>
    +
    normals: number[] | null

    primitive

    -
    primitive: string
    +
    primitive: string | null

    programs

    -
    programs: Array<IProgram>
    +
    programs: IProgram[]
    @@ -363,7 +363,7 @@

    renderer

    renderer: MeshRenderer
    @@ -373,57 +373,57 @@

    rotationMatrix

    rotationMatrix: Matrix4x3

    subMeshes

    -
    subMeshes: Array<SubMesh>
    +
    subMeshes: SubMesh[]

    texCoordBuffer

    -
    texCoordBuffer: WebGLBuffer
    +
    texCoordBuffer: WebGLBuffer | null

    uvs

    -
    uvs: Array<number>
    +
    uvs: number[] | null

    vertexBuffer

    -
    vertexBuffer: WebGLBuffer
    +
    vertexBuffer: WebGLBuffer | null

    vertices

    -
    vertices: Array<number>
    +
    vertices: number[] | null
    @@ -433,7 +433,7 @@

    worldMatrix

    worldMatrix: Matrix4x3
    @@ -443,7 +443,7 @@

    zOrder

    zOrder: number
    @@ -460,7 +460,7 @@

    activateBlendMode

  • Returns void

    @@ -477,7 +477,7 @@

    addChild

  • Parameters

    @@ -500,7 +500,7 @@

    addCustomUniform

  • Parameters

    @@ -529,7 +529,7 @@

    addMaterial

  • Parameters

    @@ -552,7 +552,7 @@

    addProgram

  • Parameters

    @@ -581,7 +581,7 @@

    Private addProgramAtt
  • Parameters

    @@ -604,7 +604,7 @@

    Private addProgramUni
  • Parameters

    @@ -627,7 +627,7 @@

    clearPrograms

  • Returns void

    @@ -644,7 +644,7 @@

    computeWorldMatrix

  • Parameters

    @@ -667,7 +667,7 @@

    Private createProgram

  • Returns void

    @@ -684,7 +684,7 @@

    deactivateBlendMode

  • Returns void

    @@ -701,7 +701,7 @@

    isActive

  • Returns boolean

    @@ -712,13 +712,13 @@

    Returns boolean

    render

      -
    • render(projectionMatrix: Float32Array, viewMatrix: Float32Array, lights: IFlatLights, time: number, blendMode: boolean): void
    • +
    • render(projectionMatrix: Float32Array, viewMatrix: Float32Array, lights: IFlatLights, time: number, blendMode: boolean): void
    • Parameters

      @@ -730,7 +730,7 @@
      projectionMatrix: Float32Array
      viewMatrix: Float32Array
    • -
      lights: IFlatLights
      +
      lights: IFlatLights
    • time: number
      @@ -753,7 +753,7 @@

      setActive

    • Returns void

      @@ -764,13 +764,13 @@

      Returns void

      setCustomUniform

        -
      • setCustomUniform(name: string, value: string): void
      • +
      • setCustomUniform(name: string, value: number | number[]): void
      • Parameters

        @@ -779,7 +779,7 @@

        Parameters

        name: string
      • -
        value: string
        +
        value: number | number[]

      Returns void

      @@ -796,7 +796,7 @@

      setInactive

    • Returns void

      @@ -813,7 +813,7 @@

      setTexture

    • Parameters

      @@ -836,7 +836,7 @@

      setWorldMatrix

    • Parameters

      @@ -859,7 +859,7 @@

      toggleActive

    • Returns boolean

      @@ -1034,9 +1034,6 @@

      Returns boolean

    diff --git a/doc/classes/_program_.program.html b/doc/classes/_program_.program.html index eb43fa9..7b8146e 100644 --- a/doc/classes/_program_.program.html +++ b/doc/classes/_program_.program.html @@ -96,13 +96,13 @@

    Methods

    Static create

      -
    • create(context: WebGLRenderingContext, vertexShader: string, fragmentShader: string): WebGLProgram
    • +
    • create(context: WebGLRenderingContext, vertexShader: string, fragmentShader: string): WebGLProgram | null
    • Parameters

      @@ -117,7 +117,10 @@
      vertexShader: string
      fragmentShader: string
    -

    Returns WebGLProgram

    +

    Returns WebGLProgram + | + null +

  • diff --git a/doc/classes/_renderer_global_.renderer.html b/doc/classes/_renderer_global_.renderer.html index 51498b8..9263ab7 100644 --- a/doc/classes/_renderer_global_.renderer.html +++ b/doc/classes/_renderer_global_.renderer.html @@ -123,7 +123,7 @@

    constructor

  • Parameters

    @@ -145,7 +145,7 @@

    canvas

    canvas: HTMLCanvasElement
    @@ -155,7 +155,7 @@

    context

    context: WebGLRenderingContext
    @@ -172,7 +172,7 @@

    clearFrame

  • Returns void

    @@ -189,7 +189,7 @@

    defaultSettings

  • Returns void

    @@ -206,7 +206,7 @@

    disable

  • Parameters

    @@ -229,7 +229,7 @@

    enable

  • Parameters

    @@ -246,16 +246,19 @@

    Returns void

    getContext

      -
    • getContext(): WebGLRenderingContext
    • +
    • getContext(): WebGLRenderingContext | null
    @@ -269,7 +272,7 @@

    setClearColor

  • Parameters

    @@ -301,7 +304,7 @@

    setCullFace

  • Parameters

    @@ -324,7 +327,7 @@

    setFrontFace

  • Parameters

    @@ -347,7 +350,7 @@

    setViewport

  • Parameters

    diff --git a/doc/classes/_renderer_mesh_.meshrenderer.html b/doc/classes/_renderer_mesh_.meshrenderer.html index 1a3b8c1..34bd0b3 100644 --- a/doc/classes/_renderer_mesh_.meshrenderer.html +++ b/doc/classes/_renderer_mesh_.meshrenderer.html @@ -120,7 +120,7 @@

    constructor

  • Parameters

    @@ -142,7 +142,7 @@

    context

    context: WebGLRenderingContext
    @@ -159,7 +159,7 @@

    bindBuffer

  • Parameters

    @@ -179,13 +179,13 @@

    Returns void

    createBuffer

      -
    • createBuffer(target: string, size: number | Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | ArrayBuffer | Uint8ClampedArray | Float32Array | Float64Array, drawMethod: string): WebGLBuffer
    • +
    • createBuffer(target: string, size: ArrayBuffer | ArrayBufferView | null, drawMethod: string): WebGLBuffer | null
    • Parameters

      @@ -194,13 +194,16 @@

      Parameters

      target: string
    • -
      size: number | Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | ArrayBuffer | Uint8ClampedArray | Float32Array | Float64Array
      +
      size: ArrayBuffer | ArrayBufferView | null
    • drawMethod: string
    -

    Returns WebGLBuffer

    +

    Returns WebGLBuffer + | + null +

  • @@ -214,7 +217,7 @@

    defaultSettings

  • Returns void

    @@ -231,7 +234,7 @@

    drawArrays

  • Parameters

    @@ -257,7 +260,7 @@

    drawElements

  • Parameters

    @@ -283,7 +286,7 @@

    useProgram

  • Parameters

    @@ -306,7 +309,7 @@

    vertexAttribPointer

  • Parameters

    diff --git a/doc/classes/_renderer_scene_.scenerenderer.html b/doc/classes/_renderer_scene_.scenerenderer.html index 87e7655..e253286 100644 --- a/doc/classes/_renderer_scene_.scenerenderer.html +++ b/doc/classes/_renderer_scene_.scenerenderer.html @@ -124,7 +124,7 @@

    constructor

  • Parameters

    @@ -146,7 +146,7 @@

    context

    context: WebGLRenderingContext
    @@ -163,7 +163,7 @@

    defaultSettings

  • Returns void

    @@ -180,7 +180,7 @@

    disable

  • Parameters

    @@ -203,7 +203,7 @@

    disableBlendMode

  • Returns void

    @@ -220,7 +220,7 @@

    disableDepthTest

  • Returns void

    @@ -237,7 +237,7 @@

    enable

  • Parameters

    @@ -260,7 +260,7 @@

    enableBlendMode

  • Parameters

    @@ -289,7 +289,7 @@

    enableDepthTest

  • Returns void

    @@ -306,7 +306,7 @@

    getParameter

  • Parameters

    @@ -350,7 +350,7 @@

    setBlendEquation

  • Parameters

    @@ -373,7 +373,7 @@

    setBlendFunction

  • Parameters

    @@ -399,7 +399,7 @@

    setDepthFunc

  • Parameters

    diff --git a/doc/classes/_scene_lights_.lights.html b/doc/classes/_scene_lights_.lights.html index 3ca8c9f..8dea31f 100644 --- a/doc/classes/_scene_lights_.lights.html +++ b/doc/classes/_scene_lights_.lights.html @@ -125,7 +125,7 @@

    constructor

  • Returns Lights

    @@ -138,20 +138,20 @@

    Properties

    directionals

    -
    directionals: Array<DirectionalLight>
    +
    directionals: DirectionalLight[]

    flatArrays

    -
    flatArrays: IFlatLights
    +
    flatArrays: IFlatLights
    @@ -161,7 +161,7 @@

    nbDirectionals

    nbDirectionals: number
    @@ -171,7 +171,7 @@

    nbPoints

    nbPoints: number
    @@ -181,7 +181,7 @@

    nbSpots

    nbSpots: number
    @@ -191,37 +191,37 @@

    nbTypes

    nbTypes: number

    points

    -
    points: Array<PointLight>
    +
    points: PointLight[]

    spots

    -
    spots: Array<SpotLight>
    +
    spots: SpotLight[]

    types

    -
    types: Array<string>
    +
    types: string[]
    @@ -238,7 +238,7 @@

    Private ClearFlatArra
  • Returns void

    @@ -249,19 +249,19 @@

    Returns void

    addLight

    diff --git a/doc/classes/_scene_scene_.scene.html b/doc/classes/_scene_scene_.scene.html index b6dab37..2625df4 100644 --- a/doc/classes/_scene_scene_.scene.html +++ b/doc/classes/_scene_scene_.scene.html @@ -128,7 +128,7 @@

    constructor

  • Parameters

    @@ -150,7 +150,7 @@

    Private context

    context: WebGLRenderingContext
    @@ -160,7 +160,7 @@

    Private graph

    graph: SceneGraph
    @@ -170,17 +170,17 @@

    lights

    lights: Lights

    meshes

    -
    meshes: Array<Mesh>
    +
    meshes: Mesh[]
    @@ -190,7 +190,7 @@

    nbMeshes

    nbMeshes: number
    @@ -200,7 +200,7 @@

    Private renderer

    renderer: SceneRenderer
    @@ -211,19 +211,19 @@

    Methods

    addLight

    @@ -360,13 +360,13 @@

    Returns Array

    getRendererBlendMode

      -
    • getRendererBlendMode(): GLenum | Float32Array | GLint | WebGLBuffer | GLboolean | Array<GLboolean> | GLfloat | WebGLFramebuffer | Int32Array | GLuint | WebGLTexture
    • +
    • getRendererBlendMode(): GLenum | Float32Array | GLint | WebGLBuffer | GLboolean | GLboolean[] | GLfloat | WebGLFramebuffer | Int32Array | GLuint | WebGLTexture
    diff --git a/doc/classes/_scene_scenegraph_.scenegraph.html b/doc/classes/_scene_scenegraph_.scenegraph.html index c9517e3..104daeb 100644 --- a/doc/classes/_scene_scenegraph_.scenegraph.html +++ b/doc/classes/_scene_scenegraph_.scenegraph.html @@ -112,21 +112,15 @@

    Constructors

    constructor

    @@ -140,7 +134,7 @@

    model

    model: Array<Matrix4x3>
    @@ -150,7 +144,7 @@

    modelStackTop

    modelStackTop: number
    @@ -160,7 +154,7 @@

    nbModel

    nbModel: number
    @@ -177,7 +171,7 @@

    getWorldMatrix

  • Returns Matrix4x3

    @@ -194,7 +188,7 @@

    popModelMatrix

  • Returns void

    @@ -211,7 +205,7 @@

    pushModelMatrix

  • Parameters

    diff --git a/doc/classes/_shader_.shader.html b/doc/classes/_shader_.shader.html index 2d87135..0868150 100644 --- a/doc/classes/_shader_.shader.html +++ b/doc/classes/_shader_.shader.html @@ -96,13 +96,13 @@

    Methods

    Static create

      -
    • create(context: WebGLRenderingContext, str: string, type: ShaderType): WebGLShader
    • +
    • create(context: WebGLRenderingContext, str: string, type: ShaderType): WebGLShader | null
    -

    Returns WebGLShader

    +

    Returns WebGLShader + | + null +

  • diff --git a/doc/classes/_texture_.texture.html b/doc/classes/_texture_.texture.html index 304bb65..8c8200b 100644 --- a/doc/classes/_texture_.texture.html +++ b/doc/classes/_texture_.texture.html @@ -96,13 +96,13 @@

    Methods

    Static create

      -
    • create(img: HTMLImageElement, context: WebGLRenderingContext): WebGLTexture
    • +
    • create(img: HTMLImageElement, context: WebGLRenderingContext): WebGLTexture | null
    • Parameters

      @@ -114,7 +114,10 @@
      img: HTMLImageElement
      context: WebGLRenderingContext
    -

    Returns WebGLTexture

    +

    Returns WebGLTexture + | + null +

  • diff --git a/doc/classes/_uniform_.uniform.html b/doc/classes/_uniform_.uniform.html index 870d67e..1b6643c 100644 --- a/doc/classes/_uniform_.uniform.html +++ b/doc/classes/_uniform_.uniform.html @@ -103,13 +103,13 @@

    Constructors

    constructor

      -
    • new Uniform(type: string, value: number | Array<number>): Uniform
    • +
    • new Uniform(type: string, value: number | number[]): Uniform
    • Parameters

      @@ -118,7 +118,7 @@

      Parameters

      type: string
    • -
      value: number | Array<number>
      +
      value: number | number[]

    Returns Uniform

    @@ -134,17 +134,17 @@

    type

    type: string

    value

    -
    value: number | Array<number>
    +
    value: number | number[]
    diff --git a/doc/enums/_mesh_.edrawmethod.html b/doc/enums/_mesh_.edrawmethod.html index 116ddd7..7a04597 100644 --- a/doc/enums/_mesh_.edrawmethod.html +++ b/doc/enums/_mesh_.edrawmethod.html @@ -91,7 +91,7 @@

    drawArrays

    drawArrays: = "drawArrays"
    @@ -101,7 +101,7 @@

    drawElements

    drawElements: = "drawElements"
    @@ -138,9 +138,6 @@

    drawElements

  • Mesh
  • -
  • - IProgram -
  • diff --git a/doc/globals.html b/doc/globals.html index 9bf847c..52bf803 100644 --- a/doc/globals.html +++ b/doc/globals.html @@ -73,6 +73,7 @@

    External modules

  • "cameras/camera"
  • "cameras/orthographic"
  • "cameras/perspective"
  • +
  • "geometry/basic"
  • "geometry/cannon"
  • "geometry/cube"
  • "geometry/customMesh"
  • @@ -84,6 +85,7 @@

    External modules

  • "geometry/sphere"
  • "geometry/submesh"
  • "geometry/vwing"
  • +
  • "interfaces"
  • "lights/directional"
  • "lights/point"
  • "lights/spot"
  • @@ -99,6 +101,7 @@

    External modules

  • "scene/sceneGraph"
  • "shader"
  • "texture"
  • +
  • "types"
  • "uniform"
  • @@ -115,6 +118,9 @@

    External modules

  • Internals
  • +
  • + "interfaces" +
  • "material"
  • @@ -133,6 +139,9 @@

    External modules

  • "texture"
  • +
  • + "types" +
  • "uniform"
  • @@ -148,6 +157,9 @@

    External modules

  • "cameras/perspective"
  • +
  • + "geometry/basic" +
  • "geometry/cannon"
  • diff --git a/doc/index.html b/doc/index.html index 037d999..b4f60e4 100644 --- a/doc/index.html +++ b/doc/index.html @@ -69,8 +69,7 @@

    Synopsis

    Motivation

    The main purpose of this library is to provide a simple way to develop 3D apps for browsers.

    Installation

    -
    $ npm install @lcluber/roostrjs
    -
    +
    $ npm install @lcluber/roostrjs

    Or download it here.

    Demo

    See a basic example here.

    @@ -110,6 +109,9 @@

    License

  • Internals
  • +
  • + "interfaces" +
  • "material"
  • @@ -128,6 +130,9 @@

    License

  • "texture"
  • +
  • + "types" +
  • "uniform"
  • @@ -143,6 +148,9 @@

    License

  • "cameras/perspective"
  • +
  • + "geometry/basic" +
  • "geometry/cannon"
  • diff --git a/doc/interfaces/_geometry_multiquad_.iquad.html b/doc/interfaces/_geometry_multiquad_.iquad.html index 865c191..0c1a21e 100644 --- a/doc/interfaces/_geometry_multiquad_.iquad.html +++ b/doc/interfaces/_geometry_multiquad_.iquad.html @@ -100,7 +100,7 @@

    indices

    indices: Int32Array
    @@ -110,7 +110,7 @@

    uvs

    uvs: Float32Array
    @@ -120,7 +120,7 @@

    vertices

    vertices: Float32Array
    diff --git a/doc/interfaces/_interfaces_.icustomuniforms.html b/doc/interfaces/_interfaces_.icustomuniforms.html new file mode 100644 index 0000000..45c2f20 --- /dev/null +++ b/doc/interfaces/_interfaces_.icustomuniforms.html @@ -0,0 +1,182 @@ + + + + + + ICustomUniforms | Roostr.js - Documentation + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface ICustomUniforms

    +
    +
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + ICustomUniforms +
    • +
    +
    +
    +

    Indexable

    +
    [key: string]: Uniform
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/doc/interfaces/_scene_lights_.iflatlights.html b/doc/interfaces/_interfaces_.iflatlights.html similarity index 63% rename from doc/interfaces/_scene_lights_.iflatlights.html rename to doc/interfaces/_interfaces_.iflatlights.html index 2b2be80..85f5b96 100644 --- a/doc/interfaces/_scene_lights_.iflatlights.html +++ b/doc/interfaces/_interfaces_.iflatlights.html @@ -56,10 +56,10 @@ Globals

  • - "scene/lights" + "interfaces"
  • - IFlatLights + IFlatLights
  • Interface IFlatLights

    @@ -81,123 +81,123 @@

    Hierarchy

    Index

    -
    +

    Properties

    -
    +

    constantAttenuation

    -
    constantAttenuation: Array<number>
    +
    constantAttenuation: number[]
    -
    +

    cutoff

    -
    cutoff: Array<number>
    +
    cutoff: number[]
    -
    +

    diffuse

    -
    diffuse: Array<number>
    +
    diffuse: number[]
    -
    +

    direction

    -
    direction: Array<number>
    +
    direction: number[]
    -
    +

    exponent

    -
    exponent: Array<number>
    +
    exponent: number[]
    -
    +

    linearAttenuation

    -
    linearAttenuation: Array<number>
    +
    linearAttenuation: number[]
    -
    +

    position

    -
    position: Array<number>
    +
    position: number[]
    -
    +

    quadraticAttenuation

    -
    quadraticAttenuation: Array<number>
    +
    quadraticAttenuation: number[]
    -
    +

    specular

    -
    specular: Array<number>
    +
    specular: number[]
    -
    +

    type

    -
    type: Array<number>
    +
    type: number[]
    @@ -209,57 +209,60 @@

    type

  • Globals
  • -
  • - "scene/lights" +
  • + "interfaces"
  • diff --git a/doc/interfaces/_material_.imaterialuniforms.html b/doc/interfaces/_interfaces_.imaterialuniforms.html similarity index 84% rename from doc/interfaces/_material_.imaterialuniforms.html rename to doc/interfaces/_interfaces_.imaterialuniforms.html index cb6ddc0..25f0c46 100644 --- a/doc/interfaces/_material_.imaterialuniforms.html +++ b/doc/interfaces/_interfaces_.imaterialuniforms.html @@ -56,10 +56,10 @@ Globals
  • - "material" + "interfaces"
  • - IMaterialUniforms + IMaterialUniforms
  • Interface IMaterialUniforms

    @@ -84,10 +84,10 @@

    Index

    Properties

    @@ -101,7 +101,7 @@

    materialAmbient

    materialAmbient: Uniform
    @@ -111,7 +111,7 @@

    materialDiffuse

    materialDiffuse: Uniform
    @@ -121,7 +121,7 @@

    materialShininess

    materialShininess: Uniform
    @@ -131,7 +131,7 @@

    materialSpecular

    materialSpecular: Uniform
    @@ -144,36 +144,42 @@

    materialSpecular

    Globals

  • - "material" + "interfaces"
  • diff --git a/doc/interfaces/_mesh_.iprogram.html b/doc/interfaces/_interfaces_.iprogram.html similarity index 81% rename from doc/interfaces/_mesh_.iprogram.html rename to doc/interfaces/_interfaces_.iprogram.html index 6d8d69c..3775bfd 100644 --- a/doc/interfaces/_mesh_.iprogram.html +++ b/doc/interfaces/_interfaces_.iprogram.html @@ -56,10 +56,10 @@ Globals

  • - "mesh" + "interfaces"
  • - IProgram + IProgram
  • Interface IProgram

    @@ -89,16 +89,16 @@

    Index

    Properties

    @@ -112,7 +112,7 @@

    WebGLProgram

    WebGLProgram: object
    @@ -127,7 +127,7 @@
    constructor: function
  • Returns WebGLProgram

    @@ -145,7 +145,7 @@

    modelMatrix

    modelMatrix: WebGLUniformLocation
    @@ -155,7 +155,7 @@

    projectionMatrix

    projectionMatrix: WebGLUniformLocation
    @@ -165,7 +165,7 @@

    sampler

    sampler: WebGLUniformLocation
    @@ -175,7 +175,7 @@

    screenResolution

    screenResolution: WebGLUniformLocation
    @@ -185,7 +185,7 @@

    textureCoord

    textureCoord: GLint
    @@ -195,7 +195,7 @@

    time

    time: WebGLUniformLocation
    @@ -205,7 +205,7 @@

    vertexNormal

    vertexNormal: GLint
    @@ -215,7 +215,7 @@

    vertexPosition

    vertexPosition: GLint
    @@ -225,7 +225,7 @@

    viewMatrix

    viewMatrix: WebGLUniformLocation
    @@ -238,52 +238,55 @@

    viewMatrix

    Globals
  • - "mesh" + "interfaces"
  • -
    -

    Type aliases

    -
    - -

    Light

    -
    Light: "directional" | "point" | "spot"
    - -
    -
    diff --git a/doc/modules/_material_.html b/doc/modules/_material_.html index b20d3e8..8f84502 100644 --- a/doc/modules/_material_.html +++ b/doc/modules/_material_.html @@ -76,12 +76,6 @@

    Classes

  • Material
  • -
    -

    Interfaces

    - -
    @@ -102,9 +96,6 @@

    Interfaces

  • Material
  • -
  • - IMaterialUniforms -
  • diff --git a/doc/modules/_mesh_.html b/doc/modules/_mesh_.html index 15f438d..c612bd2 100644 --- a/doc/modules/_mesh_.html +++ b/doc/modules/_mesh_.html @@ -82,12 +82,6 @@

    Classes

  • Mesh
  • -
    -

    Interfaces

    - -
    @@ -111,9 +105,6 @@

    Interfaces

  • Mesh
  • -
  • - IProgram -
  • diff --git a/doc/modules/_scene_lights_.html b/doc/modules/_scene_lights_.html index 3326d16..9c9988f 100644 --- a/doc/modules/_scene_lights_.html +++ b/doc/modules/_scene_lights_.html @@ -76,34 +76,9 @@

    Classes

  • Lights
  • -
    -

    Interfaces

    - -
    -
    -

    Type aliases

    - -
    -
    -

    Type aliases

    -
    - -

    Light

    - - -
    -
    diff --git a/doc/modules/_scene_scene_.html b/doc/modules/_scene_scene_.html index f844753..f3026ed 100644 --- a/doc/modules/_scene_scene_.html +++ b/doc/modules/_scene_scene_.html @@ -76,28 +76,9 @@

    Classes

  • Scene
  • -
    -

    Type aliases

    - -
    -
    -

    Type aliases

    -
    - -

    Light

    - - -
    -
    diff --git a/doc/modules/_shader_.html b/doc/modules/_shader_.html index 7ab2a5b..deab451 100644 --- a/doc/modules/_shader_.html +++ b/doc/modules/_shader_.html @@ -93,7 +93,7 @@

    ShaderType

    ShaderType: "VERTEX_SHADER" | "FRAGMENT_SHADER"
    diff --git a/doc/modules/_types_.html b/doc/modules/_types_.html new file mode 100644 index 0000000..7011c0b --- /dev/null +++ b/doc/modules/_types_.html @@ -0,0 +1,180 @@ + + + + + + "types" | Roostr.js - Documentation + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    External module "types"

    +
    +
    +
    +
    +
    +
    +
    +

    Index

    +
    +
    +
    +

    Type aliases

    + +
    +
    +
    +
    +
    +

    Type aliases

    +
    + +

    Light

    +
    Light: "directional" | "point" | "spot"
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Module
    • +
    • Object literal
    • +
    • Variable
    • +
    • Function
    • +
    • Function with type parameter
    • +
    • Index signature
    • +
    • Type alias
    • +
    +
      +
    • Enumeration
    • +
    • Enumeration member
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Interface
    • +
    • Interface with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Index signature
    • +
    +
      +
    • Class
    • +
    • Class with type parameter
    • +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    • Accessor
    • +
    • Index signature
    • +
    +
      +
    • Inherited constructor
    • +
    • Inherited property
    • +
    • Inherited method
    • +
    • Inherited accessor
    • +
    +
      +
    • Protected property
    • +
    • Protected method
    • +
    • Protected accessor
    • +
    +
      +
    • Private property
    • +
    • Private method
    • +
    • Private accessor
    • +
    +
      +
    • Static property
    • +
    • Static method
    • +
    +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 9e68077..ac51221 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,11 +11,12 @@ "dev": true }, "@lcluber/aiasjs": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/@lcluber/aiasjs/-/aiasjs-0.1.7.tgz", - "integrity": "sha512-gwVOz21k6rMdoGPg/ObdgzgY50JlaGBd4iZliu1Lk4pbzoM9V6iodH9W5zcDkHrgzxgr3kGugriKCZxz+jM6WQ==", + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/@lcluber/aiasjs/-/aiasjs-0.1.9.tgz", + "integrity": "sha512-sFWtD3/7iufvIcUmHi/R1PlENMU+w4sMyyZdhn11R5QK8Kw71OvzLicwu0T2G/1gvzyONwK+JRBd2w0inkS5lw==", "requires": { - "@lcluber/weejs": "0.1.16", + "@lcluber/chjs": "0.1.0", + "@lcluber/mouettejs": "0.2.8", "body-parser": "1.18.2", "cookie-parser": "1.4.3", "debug": "3.1.0", @@ -28,11 +29,12 @@ "serve-favicon": "2.5.0" }, "dependencies": { - "@lcluber/aiasjs": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@lcluber/aiasjs/-/aiasjs-0.1.6.tgz", - "integrity": "sha512-RUhTTWzh2ekqRTq80mJcBvC3CicvdtsB1S28f++6a1gvvJV0czG44EIqsYVX0fq33QvZqQWwqnx442TaUtClHA==", + "@lcluber/chjs": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@lcluber/chjs/-/chjs-0.1.0.tgz", + "integrity": "sha512-KNkkJJTvpfm3qzqQu4pF02KE4kmCpodJ8gBdJatbUp6FdDCY49toTHukCLyprHJrcuRziVWYmGrQyLYkviFWVw==", "requires": { + "@lcluber/mouettejs": "0.2.8", "body-parser": "1.18.2", "cookie-parser": "1.4.3", "debug": "3.1.0", @@ -45,55 +47,171 @@ "serve-favicon": "2.5.0" } }, - "@lcluber/weejs": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/@lcluber/weejs/-/weejs-0.1.16.tgz", - "integrity": "sha512-EWF6jbjBVzJYdQeo9QvL+J3pItxSHsvk0730MSmFpgB19Yy5yAl/FTnYy7VPnckZU3Hlvwm0iw1ZcHxcptdnnA==", + "@lcluber/mouettejs": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@lcluber/mouettejs/-/mouettejs-0.2.8.tgz", + "integrity": "sha512-X47Y7QYQXqM8aA3Ju3jIzqlWYeIZzmyw9JauIiMPC6Yj7mMU/m1X7o5diLu3x3oMzTIf6FCtM7l51wokYaUINw==", "requires": { - "@lcluber/aiasjs": "0.1.6", - "body-parser": "1.18.2", + "body-parser": "1.16.1", "cookie-parser": "1.4.3", - "debug": "3.1.0", - "express": "4.16.3", - "i18next": "11.2.3", - "i18next-express-middleware": "1.1.1", - "i18next-node-fs-backend": "1.0.0", - "morgan": "1.9.0", - "pug": "2.0.3", - "serve-favicon": "2.5.0" + "express": "4.14.1", + "i18next": "4.0.0", + "i18next-express-middleware": "1.0.2", + "i18next-node-fs-backend": "0.1.3", + "morgan": "1.8.1", + "pug": "2.0.0-beta11", + "serve-favicon": "2.4.0" }, "dependencies": { - "@lcluber/aiasjs": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@lcluber/aiasjs/-/aiasjs-0.1.6.tgz", - "integrity": "sha512-RUhTTWzh2ekqRTq80mJcBvC3CicvdtsB1S28f++6a1gvvJV0czG44EIqsYVX0fq33QvZqQWwqnx442TaUtClHA==", + "body-parser": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.16.1.tgz", + "integrity": "sha1-UVQNBFrfp6DGmVoBS7ax7ZuAIyk=", "requires": { - "body-parser": "1.18.2", - "cookie-parser": "1.4.3", - "debug": "3.1.0", - "express": "4.16.3", - "i18next": "11.2.3", - "i18next-express-middleware": "1.1.1", - "i18next-node-fs-backend": "1.0.0", - "morgan": "1.9.0", - "pug": "2.0.3", - "serve-favicon": "2.5.0" + "bytes": "2.4.0", + "content-type": "~1.0.2", + "debug": "2.6.1", + "depd": "~1.1.0", + "http-errors": "~1.5.1", + "iconv-lite": "0.4.15", + "on-finished": "~2.3.0", + "qs": "6.2.1", + "raw-body": "~2.2.0", + "type-is": "~1.6.14" + } + }, + "debug": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz", + "integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=", + "requires": { + "ms": "0.7.2" + } + }, + "express": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.14.1.tgz", + "integrity": "sha1-ZGwjf3ZvFIwhIK/wc4F7nk1+DTM=", + "requires": { + "accepts": "~1.3.3", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "~1.0.2", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "~2.2.0", + "depd": "~1.1.0", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.7.0", + "finalhandler": "0.5.1", + "fresh": "0.3.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.1", + "path-to-regexp": "0.1.7", + "proxy-addr": "~1.1.3", + "qs": "6.2.0", + "range-parser": "~1.2.0", + "send": "0.14.2", + "serve-static": "~1.11.2", + "type-is": "~1.6.14", + "utils-merge": "1.0.0", + "vary": "~1.1.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "qs": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", + "integrity": "sha1-O3hIwDwt7OaalSKw+ujEEm10Xzs=" + } + } + }, + "i18next": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-4.0.0.tgz", + "integrity": "sha1-1i1h5ErIWL4FjF8mZmrqnulhbtc=" + }, + "i18next-express-middleware": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/i18next-express-middleware/-/i18next-express-middleware-1.0.2.tgz", + "integrity": "sha1-C4V3kKi6QPaqVRCZ/Oy8++bvmpI=", + "requires": { + "cookies": "0.6.1" + } + }, + "i18next-node-fs-backend": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/i18next-node-fs-backend/-/i18next-node-fs-backend-0.1.3.tgz", + "integrity": "sha1-lhWWOWyt0hEuFnziDxPwIAxE7vg=", + "requires": { + "js-yaml": "3.5.4", + "json5": "0.5.0" + } + }, + "morgan": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.8.1.tgz", + "integrity": "sha1-+TAj04h70nt439YCPOp4ku4npLE=", + "requires": { + "basic-auth": "~1.1.0", + "debug": "2.6.1", + "depd": "~1.1.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + } + }, + "pug": { + "version": "2.0.0-beta11", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.0-beta11.tgz", + "integrity": "sha1-Favmr1AEx+LPRhPksnRlyVRrXwE=", + "requires": { + "pug-code-gen": "^1.1.1", + "pug-filters": "^2.1.1", + "pug-lexer": "^3.0.0", + "pug-linker": "^2.0.2", + "pug-load": "^2.0.5", + "pug-parser": "^2.0.2", + "pug-runtime": "^2.0.3", + "pug-strip-comments": "^1.0.2" + } + }, + "serve-favicon": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.4.0.tgz", + "integrity": "sha1-Bk3N/bDyUK47FI6xjIu/PRhePdA=", + "requires": { + "etag": "~1.8.0", + "fresh": "0.4.0", + "ms": "0.7.2", + "parseurl": "~1.3.1" + }, + "dependencies": { + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "fresh": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.4.0.tgz", + "integrity": "sha1-R1YmqTSo00gLIQGh1uzvfa/XxVM=" + } } - } - } - }, - "basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "requires": { - "safe-buffer": "5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, @@ -114,6 +232,11 @@ "type-is": "~1.6.15" }, "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -121,14 +244,69 @@ "requires": { "ms": "2.0.0" } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } } } }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, "clean-css": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", @@ -137,28 +315,21 @@ "source-map": "~0.6.0" } }, - "cookies": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.1.tgz", - "integrity": "sha1-fIphX1SBxhq58WyDNzG8uPZjuZs=", - "requires": { - "depd": "~1.1.1", - "keygrip": "~1.0.2" - } - }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, "express": { "version": "4.16.3", "resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz", @@ -204,58 +375,103 @@ "ms": "2.0.0" } }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - } - } - }, - "finalhandler": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "requires": { - "ms": "2.0.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" } }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" } } }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "http-errors": { - "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, "i18next": { "version": "11.2.3", "resolved": "https://registry.npmjs.org/i18next/-/i18next-11.2.3.tgz", @@ -267,6 +483,17 @@ "integrity": "sha512-ckezoLWx5VAihjlhcJ6tgyPsRgz1VnEIWcAqZ4e7SdFQNQU9d5s2Lxs/LiWwkcnkgV6fQqWKr0evJJ/8dzOAvQ==", "requires": { "cookies": "0.7.1" + }, + "dependencies": { + "cookies": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.1.tgz", + "integrity": "sha1-fIphX1SBxhq58WyDNzG8uPZjuZs=", + "requires": { + "depd": "~1.1.1", + "keygrip": "~1.0.2" + } + } } }, "i18next-node-fs-backend": { @@ -278,11 +505,6 @@ "json5": "0.5.0" } }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, "ipaddr.js": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", @@ -305,6 +527,14 @@ "on-headers": "~1.0.1" }, "dependencies": { + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -312,42 +542,1165 @@ "requires": { "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "proxy-addr": { - "version": "2.0.4", + "pug": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", + "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", + "requires": { + "pug-code-gen": "^2.0.1", + "pug-filters": "^3.1.0", + "pug-lexer": "^4.0.0", + "pug-linker": "^3.0.5", + "pug-load": "^2.0.11", + "pug-parser": "^5.0.0", + "pug-runtime": "^2.0.4", + "pug-strip-comments": "^1.0.3" + }, + "dependencies": { + "pug-code-gen": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", + "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", + "requires": { + "constantinople": "^3.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.1", + "pug-attrs": "^2.0.3", + "pug-error": "^1.3.2", + "pug-runtime": "^2.0.4", + "void-elements": "^2.0.1", + "with": "^5.0.0" + } + }, + "pug-filters": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz", + "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=", + "requires": { + "clean-css": "^4.1.11", + "constantinople": "^3.0.1", + "jstransformer": "1.0.0", + "pug-error": "^1.3.2", + "pug-walk": "^1.1.7", + "resolve": "^1.1.6", + "uglify-js": "^2.6.1" + } + }, + "pug-lexer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz", + "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=", + "requires": { + "character-parser": "^2.1.1", + "is-expression": "^3.0.0", + "pug-error": "^1.3.2" + } + }, + "pug-linker": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", + "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", + "requires": { + "pug-error": "^1.3.2", + "pug-walk": "^1.1.7" + } + }, + "pug-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz", + "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=", + "requires": { + "pug-error": "^1.3.2", + "token-stream": "0.0.1" + } + } + } + }, + "serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "requires": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@lcluber/chjs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@lcluber/chjs/-/chjs-0.1.1.tgz", + "integrity": "sha512-oN6b+Eep1vIVIXPCGpkemrMuFn/yhVlW/NX50TZWb3FVnJGCTAT7JTz6fhJP92xDxHKEGeCFGqS4zEvCoO+7Bw==", + "requires": { + "@lcluber/mouettejs": "0.2.8", + "body-parser": "1.18.2", + "cookie-parser": "1.4.3", + "debug": "3.1.0", + "express": "4.16.3", + "i18next": "11.2.3", + "i18next-express-middleware": "1.1.1", + "i18next-node-fs-backend": "1.0.0", + "morgan": "1.9.0", + "pug": "2.0.3", + "serve-favicon": "2.5.0" + }, + "dependencies": { + "@lcluber/mouettejs": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@lcluber/mouettejs/-/mouettejs-0.2.8.tgz", + "integrity": "sha512-X47Y7QYQXqM8aA3Ju3jIzqlWYeIZzmyw9JauIiMPC6Yj7mMU/m1X7o5diLu3x3oMzTIf6FCtM7l51wokYaUINw==", + "requires": { + "body-parser": "1.16.1", + "cookie-parser": "1.4.3", + "express": "4.14.1", + "i18next": "4.0.0", + "i18next-express-middleware": "1.0.2", + "i18next-node-fs-backend": "0.1.3", + "morgan": "1.8.1", + "pug": "2.0.0-beta11", + "serve-favicon": "2.4.0" + }, + "dependencies": { + "body-parser": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.16.1.tgz", + "integrity": "sha1-UVQNBFrfp6DGmVoBS7ax7ZuAIyk=", + "requires": { + "bytes": "2.4.0", + "content-type": "~1.0.2", + "debug": "2.6.1", + "depd": "~1.1.0", + "http-errors": "~1.5.1", + "iconv-lite": "0.4.15", + "on-finished": "~2.3.0", + "qs": "6.2.1", + "raw-body": "~2.2.0", + "type-is": "~1.6.14" + } + }, + "debug": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz", + "integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=", + "requires": { + "ms": "0.7.2" + } + }, + "express": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.14.1.tgz", + "integrity": "sha1-ZGwjf3ZvFIwhIK/wc4F7nk1+DTM=", + "requires": { + "accepts": "~1.3.3", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "~1.0.2", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "~2.2.0", + "depd": "~1.1.0", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.7.0", + "finalhandler": "0.5.1", + "fresh": "0.3.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.1", + "path-to-regexp": "0.1.7", + "proxy-addr": "~1.1.3", + "qs": "6.2.0", + "range-parser": "~1.2.0", + "send": "0.14.2", + "serve-static": "~1.11.2", + "type-is": "~1.6.14", + "utils-merge": "1.0.0", + "vary": "~1.1.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "qs": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", + "integrity": "sha1-O3hIwDwt7OaalSKw+ujEEm10Xzs=" + } + } + }, + "i18next": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-4.0.0.tgz", + "integrity": "sha1-1i1h5ErIWL4FjF8mZmrqnulhbtc=" + }, + "i18next-express-middleware": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/i18next-express-middleware/-/i18next-express-middleware-1.0.2.tgz", + "integrity": "sha1-C4V3kKi6QPaqVRCZ/Oy8++bvmpI=", + "requires": { + "cookies": "0.6.1" + } + }, + "i18next-node-fs-backend": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/i18next-node-fs-backend/-/i18next-node-fs-backend-0.1.3.tgz", + "integrity": "sha1-lhWWOWyt0hEuFnziDxPwIAxE7vg=", + "requires": { + "js-yaml": "3.5.4", + "json5": "0.5.0" + } + }, + "morgan": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.8.1.tgz", + "integrity": "sha1-+TAj04h70nt439YCPOp4ku4npLE=", + "requires": { + "basic-auth": "~1.1.0", + "debug": "2.6.1", + "depd": "~1.1.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + } + }, + "pug": { + "version": "2.0.0-beta11", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.0-beta11.tgz", + "integrity": "sha1-Favmr1AEx+LPRhPksnRlyVRrXwE=", + "requires": { + "pug-code-gen": "^1.1.1", + "pug-filters": "^2.1.1", + "pug-lexer": "^3.0.0", + "pug-linker": "^2.0.2", + "pug-load": "^2.0.5", + "pug-parser": "^2.0.2", + "pug-runtime": "^2.0.3", + "pug-strip-comments": "^1.0.2" + } + }, + "serve-favicon": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.4.0.tgz", + "integrity": "sha1-Bk3N/bDyUK47FI6xjIu/PRhePdA=", + "requires": { + "etag": "~1.8.0", + "fresh": "0.4.0", + "ms": "0.7.2", + "parseurl": "~1.3.1" + }, + "dependencies": { + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "fresh": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.4.0.tgz", + "integrity": "sha1-R1YmqTSo00gLIQGh1uzvfa/XxVM=" + } + } + } + } + }, + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + }, + "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "requires": { + "source-map": "~0.6.0" + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "express": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.3", + "qs": "6.5.1", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + } + } + }, + "i18next": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-11.2.3.tgz", + "integrity": "sha512-RixAuXma0Q5vXxyiYJs2Hm3/WiWfdeX+UorTDRaLVz/r7t89dDzmFNGdIM9j0PxJLQby/s3uQ9/oCUv5J9nLWw==" + }, + "i18next-express-middleware": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/i18next-express-middleware/-/i18next-express-middleware-1.1.1.tgz", + "integrity": "sha512-ckezoLWx5VAihjlhcJ6tgyPsRgz1VnEIWcAqZ4e7SdFQNQU9d5s2Lxs/LiWwkcnkgV6fQqWKr0evJJ/8dzOAvQ==", + "requires": { + "cookies": "0.7.1" + }, + "dependencies": { + "cookies": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.1.tgz", + "integrity": "sha1-fIphX1SBxhq58WyDNzG8uPZjuZs=", + "requires": { + "depd": "~1.1.1", + "keygrip": "~1.0.2" + } + } + } + }, + "i18next-node-fs-backend": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/i18next-node-fs-backend/-/i18next-node-fs-backend-1.0.0.tgz", + "integrity": "sha1-9aYlo7KHwdCYxxcbfdN2uwcpm1k=", + "requires": { + "js-yaml": "3.5.4", + "json5": "0.5.0" + } + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "morgan": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", + "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", + "requires": { + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.1", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + }, + "dependencies": { + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, + "pug": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", + "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", + "requires": { + "pug-code-gen": "^2.0.1", + "pug-filters": "^3.1.0", + "pug-lexer": "^4.0.0", + "pug-linker": "^3.0.5", + "pug-load": "^2.0.11", + "pug-parser": "^5.0.0", + "pug-runtime": "^2.0.4", + "pug-strip-comments": "^1.0.3" + }, + "dependencies": { + "pug-code-gen": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", + "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", + "requires": { + "constantinople": "^3.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.1", + "pug-attrs": "^2.0.3", + "pug-error": "^1.3.2", + "pug-runtime": "^2.0.4", + "void-elements": "^2.0.1", + "with": "^5.0.0" + } + }, + "pug-filters": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz", + "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=", + "requires": { + "clean-css": "^4.1.11", + "constantinople": "^3.0.1", + "jstransformer": "1.0.0", + "pug-error": "^1.3.2", + "pug-walk": "^1.1.7", + "resolve": "^1.1.6", + "uglify-js": "^2.6.1" + } + }, + "pug-lexer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz", + "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=", + "requires": { + "character-parser": "^2.1.1", + "is-expression": "^3.0.0", + "pug-error": "^1.3.2" + } + }, + "pug-linker": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", + "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", + "requires": { + "pug-error": "^1.3.2", + "pug-walk": "^1.1.7" + } + }, + "pug-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz", + "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=", + "requires": { + "pug-error": "^1.3.2", + "token-stream": "0.0.1" + } + } + } + }, + "serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "requires": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@lcluber/frameratjs": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@lcluber/frameratjs/-/frameratjs-0.3.5.tgz", + "integrity": "sha512-6mC0Yw8ysBehf9TJwaKNODoQcXckQ9kdu6pashEg/YpEUnWgbM5IxqXR428YNZIgeYfj9gEoAvagJN84gO5nnQ==", + "dev": true, + "requires": { + "@lcluber/mouettejs": "0.2.7", + "@lcluber/taipanjs": "0.3.6", + "@lcluber/type6js": "1.0.1", + "body-parser": "1.16.1", + "cookie-parser": "1.4.3", + "debug": "2.6.1", + "express": "4.14.1", + "i18next": "4.0.0", + "i18next-express-middleware": "1.0.2", + "i18next-node-fs-backend": "0.1.3", + "morgan": "1.8.1", + "pug": "2.0.0-beta11", + "serve-favicon": "2.4.0" + }, + "dependencies": { + "@lcluber/mouettejs": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@lcluber/mouettejs/-/mouettejs-0.2.7.tgz", + "integrity": "sha512-wwZtIPjbLsNfl1aSTLh0u79nxAQ75J62CCoVTVgKHyDdYsVwSKqMdRQmKFaQsr7nE/nX/JahnBeY94fwBNAa1g==", + "dev": true, + "requires": { + "@lcluber/weejs": "0.1.8", + "body-parser": "1.16.1", + "cookie-parser": "1.4.3", + "express": "4.14.1", + "i18next": "4.0.0", + "i18next-express-middleware": "1.0.2", + "i18next-node-fs-backend": "0.1.3", + "morgan": "1.8.1", + "pug": "2.0.0-beta11", + "serve-favicon": "2.4.0" + } + }, + "@lcluber/type6js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@lcluber/type6js/-/type6js-1.0.1.tgz", + "integrity": "sha512-jP+nXKAhZWOZvLxA/WuesyNWjUumtoIueIqboOz5k2AlWsMchIdwJUjyIFiFtBd3rQW4z6GMIVHvjh5XCHEwRQ==", + "dev": true, + "requires": { + "body-parser": "1.16.1", + "cookie-parser": "1.4.3", + "debug": "2.6.1", + "express": "4.14.1", + "morgan": "1.8.1", + "pug": "2.0.0-beta11", + "serve-favicon": "2.4.0" + } + }, + "@lcluber/weejs": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@lcluber/weejs/-/weejs-0.1.8.tgz", + "integrity": "sha512-MMLYcipx3RDwkYt0wxkIAFqebnVJagdQuWo1cGHFK27yNsZFG7jhc/waYEkAoWMKxdKDTL1rCgyE3u7D+YYceg==", + "dev": true, + "requires": { + "body-parser": "1.18.2", + "cookie-parser": "1.4.3", + "debug": "3.1.0", + "express": "4.16.3", + "i18next": "11.2.3", + "i18next-express-middleware": "1.1.1", + "i18next-node-fs-backend": "1.0.0", + "morgan": "1.9.0", + "pug": "2.0.3", + "serve-favicon": "2.5.0" + }, + "dependencies": { + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "express": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.3", + "qs": "6.5.1", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "i18next": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-11.2.3.tgz", + "integrity": "sha512-RixAuXma0Q5vXxyiYJs2Hm3/WiWfdeX+UorTDRaLVz/r7t89dDzmFNGdIM9j0PxJLQby/s3uQ9/oCUv5J9nLWw==", + "dev": true + }, + "i18next-express-middleware": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/i18next-express-middleware/-/i18next-express-middleware-1.1.1.tgz", + "integrity": "sha512-ckezoLWx5VAihjlhcJ6tgyPsRgz1VnEIWcAqZ4e7SdFQNQU9d5s2Lxs/LiWwkcnkgV6fQqWKr0evJJ/8dzOAvQ==", + "dev": true, + "requires": { + "cookies": "0.7.1" + } + }, + "i18next-node-fs-backend": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/i18next-node-fs-backend/-/i18next-node-fs-backend-1.0.0.tgz", + "integrity": "sha1-9aYlo7KHwdCYxxcbfdN2uwcpm1k=", + "dev": true, + "requires": { + "js-yaml": "3.5.4", + "json5": "0.5.0" + } + }, + "morgan": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", + "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", + "dev": true, + "requires": { + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.1", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "pug": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", + "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", + "dev": true, + "requires": { + "pug-code-gen": "^2.0.1", + "pug-filters": "^3.1.0", + "pug-lexer": "^4.0.0", + "pug-linker": "^3.0.5", + "pug-load": "^2.0.11", + "pug-parser": "^5.0.0", + "pug-runtime": "^2.0.4", + "pug-strip-comments": "^1.0.3" + } + }, + "serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "dev": true, + "requires": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "cookies": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.1.tgz", + "integrity": "sha1-fIphX1SBxhq58WyDNzG8uPZjuZs=", + "dev": true, + "requires": { + "depd": "~1.1.1", + "keygrip": "~1.0.2" + } + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true + }, + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "dev": true + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "proxy-addr": { + "version": "2.0.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "dev": true, "requires": { "forwarded": "~0.1.2", "ipaddr.js": "1.8.0" } }, - "pug": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", - "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", - "requires": { - "pug-code-gen": "^2.0.1", - "pug-filters": "^3.1.0", - "pug-lexer": "^4.0.0", - "pug-linker": "^3.0.5", - "pug-load": "^2.0.11", - "pug-parser": "^5.0.0", - "pug-runtime": "^2.0.4", - "pug-strip-comments": "^1.0.3" - } - }, "pug-code-gen": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", + "dev": true, "requires": { "constantinople": "^3.0.1", "doctypes": "^1.1.0", @@ -363,6 +1716,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz", "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=", + "dev": true, "requires": { "clean-css": "^4.1.11", "constantinople": "^3.0.1", @@ -377,6 +1731,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz", "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=", + "dev": true, "requires": { "character-parser": "^2.1.1", "is-expression": "^3.0.0", @@ -387,6 +1742,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", + "dev": true, "requires": { "pug-error": "^1.3.2", "pug-walk": "^1.1.7" @@ -396,6 +1752,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz", "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=", + "dev": true, "requires": { "pug-error": "^1.3.2", "token-stream": "0.0.1" @@ -404,12 +1761,14 @@ "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true }, "raw-body": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, "requires": { "bytes": "3.0.0", "http-errors": "1.6.2", @@ -420,12 +1779,14 @@ "depd": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true }, "http-errors": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, "requires": { "depd": "1.1.1", "inherits": "2.0.3", @@ -436,7 +1797,8 @@ "setprototypeof": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true } } }, @@ -444,6 +1806,7 @@ "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -464,6 +1827,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -471,26 +1835,8 @@ "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - } - } - }, - "serve-favicon": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", - "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", - "requires": { - "etag": "~1.8.1", - "fresh": "0.5.2", - "ms": "2.1.1", - "parseurl": "~1.3.2", - "safe-buffer": "5.1.1" - }, - "dependencies": { - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true } } }, @@ -498,6 +1844,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -508,32 +1855,30 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true } } }, - "@lcluber/frameratjs": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@lcluber/frameratjs/-/frameratjs-0.3.5.tgz", - "integrity": "sha512-6mC0Yw8ysBehf9TJwaKNODoQcXckQ9kdu6pashEg/YpEUnWgbM5IxqXR428YNZIgeYfj9gEoAvagJN84gO5nnQ==", - "dev": true, + "@lcluber/mouettejs": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@lcluber/mouettejs/-/mouettejs-0.2.11.tgz", + "integrity": "sha512-hjJFNEXTXL64Gibsdk7Ao9zlz/GdSWipFcJJYr0SoeazN/duZeYK1izTGsJnf5l9Ad1JgTldZ9ckabxbMd1zsA==", "requires": { - "@lcluber/mouettejs": "0.2.7", - "@lcluber/taipanjs": "0.3.6", - "@lcluber/type6js": "1.0.1", "body-parser": "1.16.1", "cookie-parser": "1.4.3", - "debug": "2.6.1", "express": "4.14.1", "i18next": "4.0.0", "i18next-express-middleware": "1.0.2", @@ -541,33 +1886,20 @@ "morgan": "1.8.1", "pug": "2.0.0-beta11", "serve-favicon": "2.4.0" - }, - "dependencies": { - "@lcluber/type6js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@lcluber/type6js/-/type6js-1.0.1.tgz", - "integrity": "sha512-jP+nXKAhZWOZvLxA/WuesyNWjUumtoIueIqboOz5k2AlWsMchIdwJUjyIFiFtBd3rQW4z6GMIVHvjh5XCHEwRQ==", - "dev": true, - "requires": { - "body-parser": "1.16.1", - "cookie-parser": "1.4.3", - "debug": "2.6.1", - "express": "4.14.1", - "morgan": "1.8.1", - "pug": "2.0.0-beta11", - "serve-favicon": "2.4.0" - } - } } }, - "@lcluber/mouettejs": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@lcluber/mouettejs/-/mouettejs-0.2.7.tgz", - "integrity": "sha512-wwZtIPjbLsNfl1aSTLh0u79nxAQ75J62CCoVTVgKHyDdYsVwSKqMdRQmKFaQsr7nE/nX/JahnBeY94fwBNAa1g==", + "@lcluber/orbisjs": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@lcluber/orbisjs/-/orbisjs-0.5.3.tgz", + "integrity": "sha512-iujTD+Mj5PGA0zzo4dNpH7CGImDYqSa0V4mgwLZ1StEeXwRU6qJhsK2P1hVgt92EdvyYR0/MVBIMtMHPapBA+g==", + "dev": true, "requires": { - "@lcluber/weejs": "0.1.8", + "@lcluber/mouettejs": "0.2.7", + "@lcluber/taipanjs": "0.3.6", + "@lcluber/weejs": "0.1.10", "body-parser": "1.16.1", "cookie-parser": "1.4.3", + "debug": "2.6.1", "express": "4.14.1", "i18next": "4.0.0", "i18next-express-middleware": "1.0.2", @@ -577,10 +1909,230 @@ "serve-favicon": "2.4.0" }, "dependencies": { + "@lcluber/mouettejs": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@lcluber/mouettejs/-/mouettejs-0.2.7.tgz", + "integrity": "sha512-wwZtIPjbLsNfl1aSTLh0u79nxAQ75J62CCoVTVgKHyDdYsVwSKqMdRQmKFaQsr7nE/nX/JahnBeY94fwBNAa1g==", + "dev": true, + "requires": { + "@lcluber/weejs": "0.1.8", + "body-parser": "1.16.1", + "cookie-parser": "1.4.3", + "express": "4.14.1", + "i18next": "4.0.0", + "i18next-express-middleware": "1.0.2", + "i18next-node-fs-backend": "0.1.3", + "morgan": "1.8.1", + "pug": "2.0.0-beta11", + "serve-favicon": "2.4.0" + }, + "dependencies": { + "@lcluber/weejs": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@lcluber/weejs/-/weejs-0.1.8.tgz", + "integrity": "sha512-MMLYcipx3RDwkYt0wxkIAFqebnVJagdQuWo1cGHFK27yNsZFG7jhc/waYEkAoWMKxdKDTL1rCgyE3u7D+YYceg==", + "dev": true, + "requires": { + "body-parser": "1.18.2", + "cookie-parser": "1.4.3", + "debug": "3.1.0", + "express": "4.16.3", + "i18next": "11.2.3", + "i18next-express-middleware": "1.1.1", + "i18next-node-fs-backend": "1.0.0", + "morgan": "1.9.0", + "pug": "2.0.3", + "serve-favicon": "2.5.0" + }, + "dependencies": { + "body-parser": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", + "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, + "requires": { + "bytes": "3.0.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.1", + "http-errors": "~1.6.2", + "iconv-lite": "0.4.19", + "on-finished": "~2.3.0", + "qs": "6.5.1", + "raw-body": "2.3.2", + "type-is": "~1.6.15" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "express": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", + "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "array-flatten": "1.1.1", + "body-parser": "1.18.2", + "content-disposition": "0.5.2", + "content-type": "~1.0.4", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.3", + "qs": "6.5.1", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.1", + "send": "0.16.2", + "serve-static": "1.13.2", + "setprototypeof": "1.1.0", + "statuses": "~1.4.0", + "type-is": "~1.6.16", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "i18next": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-11.2.3.tgz", + "integrity": "sha512-RixAuXma0Q5vXxyiYJs2Hm3/WiWfdeX+UorTDRaLVz/r7t89dDzmFNGdIM9j0PxJLQby/s3uQ9/oCUv5J9nLWw==", + "dev": true + }, + "i18next-express-middleware": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/i18next-express-middleware/-/i18next-express-middleware-1.1.1.tgz", + "integrity": "sha512-ckezoLWx5VAihjlhcJ6tgyPsRgz1VnEIWcAqZ4e7SdFQNQU9d5s2Lxs/LiWwkcnkgV6fQqWKr0evJJ/8dzOAvQ==", + "dev": true, + "requires": { + "cookies": "0.7.1" + } + }, + "i18next-node-fs-backend": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/i18next-node-fs-backend/-/i18next-node-fs-backend-1.0.0.tgz", + "integrity": "sha1-9aYlo7KHwdCYxxcbfdN2uwcpm1k=", + "dev": true, + "requires": { + "js-yaml": "3.5.4", + "json5": "0.5.0" + } + }, + "morgan": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", + "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", + "dev": true, + "requires": { + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.1", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + }, + "pug": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", + "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", + "dev": true, + "requires": { + "pug-code-gen": "^2.0.1", + "pug-filters": "^3.1.0", + "pug-lexer": "^4.0.0", + "pug-linker": "^3.0.5", + "pug-load": "^2.0.11", + "pug-parser": "^5.0.0", + "pug-runtime": "^2.0.4", + "pug-strip-comments": "^1.0.3" + } + }, + "serve-favicon": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", + "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "dev": true, + "requires": { + "etag": "~1.8.1", + "fresh": "0.5.2", + "ms": "2.1.1", + "parseurl": "~1.3.2", + "safe-buffer": "5.1.1" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + } + } + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, "@lcluber/weejs": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@lcluber/weejs/-/weejs-0.1.8.tgz", - "integrity": "sha512-MMLYcipx3RDwkYt0wxkIAFqebnVJagdQuWo1cGHFK27yNsZFG7jhc/waYEkAoWMKxdKDTL1rCgyE3u7D+YYceg==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/@lcluber/weejs/-/weejs-0.1.10.tgz", + "integrity": "sha512-1cB9vqGIyc4HNQGSNnm2Gl9IRIfs84JNR04KysOWQaM3R9sCOaJo/qNMEGj7RDYsXO/TJ7CBwnm1J6oRZA4DgQ==", + "dev": true, "requires": { "body-parser": "1.18.2", "cookie-parser": "1.4.3", @@ -598,6 +2150,7 @@ "version": "1.18.2", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "dev": true, "requires": { "bytes": "3.0.0", "content-type": "~1.0.4", @@ -615,16 +2168,27 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } } } }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "express": { "version": "4.16.3", "resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz", "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", + "dev": true, "requires": { "accepts": "~1.3.5", "array-flatten": "1.1.1", @@ -662,6 +2226,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -671,12 +2236,14 @@ "i18next": { "version": "11.2.3", "resolved": "https://registry.npmjs.org/i18next/-/i18next-11.2.3.tgz", - "integrity": "sha512-RixAuXma0Q5vXxyiYJs2Hm3/WiWfdeX+UorTDRaLVz/r7t89dDzmFNGdIM9j0PxJLQby/s3uQ9/oCUv5J9nLWw==" + "integrity": "sha512-RixAuXma0Q5vXxyiYJs2Hm3/WiWfdeX+UorTDRaLVz/r7t89dDzmFNGdIM9j0PxJLQby/s3uQ9/oCUv5J9nLWw==", + "dev": true }, "i18next-express-middleware": { "version": "1.1.1", "resolved": "http://registry.npmjs.org/i18next-express-middleware/-/i18next-express-middleware-1.1.1.tgz", "integrity": "sha512-ckezoLWx5VAihjlhcJ6tgyPsRgz1VnEIWcAqZ4e7SdFQNQU9d5s2Lxs/LiWwkcnkgV6fQqWKr0evJJ/8dzOAvQ==", + "dev": true, "requires": { "cookies": "0.7.1" } @@ -685,6 +2252,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/i18next-node-fs-backend/-/i18next-node-fs-backend-1.0.0.tgz", "integrity": "sha1-9aYlo7KHwdCYxxcbfdN2uwcpm1k=", + "dev": true, "requires": { "js-yaml": "3.5.4", "json5": "0.5.0" @@ -694,6 +2262,7 @@ "version": "1.9.0", "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", + "dev": true, "requires": { "basic-auth": "~2.0.0", "debug": "2.6.9", @@ -706,6 +2275,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -716,6 +2286,7 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", + "dev": true, "requires": { "pug-code-gen": "^2.0.1", "pug-filters": "^3.1.0", @@ -731,6 +2302,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.0.tgz", "integrity": "sha1-k10kDN/g9YBTB/3+ln2IlCosvPA=", + "dev": true, "requires": { "etag": "~1.8.1", "fresh": "0.5.2", @@ -742,14 +2314,16 @@ "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true } } }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true } } }, @@ -757,6 +2331,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, "requires": { "safe-buffer": "5.1.2" }, @@ -764,19 +2339,22 @@ "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, "bytes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true }, "clean-css": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, "requires": { "source-map": "~0.6.0" } @@ -785,28 +2363,23 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.1.tgz", "integrity": "sha1-fIphX1SBxhq58WyDNzG8uPZjuZs=", + "dev": true, "requires": { "depd": "~1.1.1", "keygrip": "~1.0.2" } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true }, "finalhandler": { "version": "1.1.1", "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", + "dev": true, "requires": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -821,6 +2394,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -828,19 +2402,22 @@ "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true } } }, "fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true }, "http-errors": { "version": "1.6.3", "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, "requires": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -851,27 +2428,32 @@ "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", + "dev": true }, "ipaddr.js": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", + "dev": true }, "mime": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true }, "proxy-addr": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "dev": true, "requires": { "forwarded": "~0.1.2", "ipaddr.js": "1.8.0" @@ -881,6 +2463,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", + "dev": true, "requires": { "constantinople": "^3.0.1", "doctypes": "^1.1.0", @@ -896,6 +2479,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz", "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=", + "dev": true, "requires": { "clean-css": "^4.1.11", "constantinople": "^3.0.1", @@ -910,6 +2494,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz", "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=", + "dev": true, "requires": { "character-parser": "^2.1.1", "is-expression": "^3.0.0", @@ -920,6 +2505,7 @@ "version": "3.0.5", "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", + "dev": true, "requires": { "pug-error": "^1.3.2", "pug-walk": "^1.1.7" @@ -929,6 +2515,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz", "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=", + "dev": true, "requires": { "pug-error": "^1.3.2", "token-stream": "0.0.1" @@ -937,12 +2524,14 @@ "qs": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", + "dev": true }, "raw-body": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "dev": true, "requires": { "bytes": "3.0.0", "http-errors": "1.6.2", @@ -953,12 +2542,14 @@ "depd": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", + "dev": true }, "http-errors": { "version": "1.6.2", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "dev": true, "requires": { "depd": "1.1.1", "inherits": "2.0.3", @@ -969,7 +2560,8 @@ "setprototypeof": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", + "dev": true } } }, @@ -977,6 +2569,7 @@ "version": "0.16.2", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, "requires": { "debug": "2.6.9", "depd": "~1.1.2", @@ -997,6 +2590,7 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, "requires": { "ms": "2.0.0" } @@ -1004,7 +2598,8 @@ "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true } } }, @@ -1012,6 +2607,7 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, "requires": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -1022,32 +2618,32 @@ "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true }, "utils-merge": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true } } }, - "@lcluber/orbisjs": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@lcluber/orbisjs/-/orbisjs-0.5.3.tgz", - "integrity": "sha512-iujTD+Mj5PGA0zzo4dNpH7CGImDYqSa0V4mgwLZ1StEeXwRU6qJhsK2P1hVgt92EdvyYR0/MVBIMtMHPapBA+g==", + "@lcluber/taipanjs": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@lcluber/taipanjs/-/taipanjs-0.3.6.tgz", + "integrity": "sha512-0l7P2svUMPmEyVAYxOw8deghviDyJOEewXHqw9UOeD4a7kvFhBRq/w25Xq8UDj/7PQdQ7ueQlrSJuUifu9GKgw==", "dev": true, "requires": { "@lcluber/mouettejs": "0.2.7", - "@lcluber/taipanjs": "0.3.6", - "@lcluber/weejs": "0.1.10", "body-parser": "1.16.1", "cookie-parser": "1.4.3", - "debug": "2.6.1", "express": "4.14.1", "i18next": "4.0.0", "i18next-express-middleware": "1.0.2", @@ -1057,10 +2653,28 @@ "serve-favicon": "2.4.0" }, "dependencies": { + "@lcluber/mouettejs": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@lcluber/mouettejs/-/mouettejs-0.2.7.tgz", + "integrity": "sha512-wwZtIPjbLsNfl1aSTLh0u79nxAQ75J62CCoVTVgKHyDdYsVwSKqMdRQmKFaQsr7nE/nX/JahnBeY94fwBNAa1g==", + "dev": true, + "requires": { + "@lcluber/weejs": "0.1.8", + "body-parser": "1.16.1", + "cookie-parser": "1.4.3", + "express": "4.14.1", + "i18next": "4.0.0", + "i18next-express-middleware": "1.0.2", + "i18next-node-fs-backend": "0.1.3", + "morgan": "1.8.1", + "pug": "2.0.0-beta11", + "serve-favicon": "2.4.0" + } + }, "@lcluber/weejs": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/@lcluber/weejs/-/weejs-0.1.10.tgz", - "integrity": "sha512-1cB9vqGIyc4HNQGSNnm2Gl9IRIfs84JNR04KysOWQaM3R9sCOaJo/qNMEGj7RDYsXO/TJ7CBwnm1J6oRZA4DgQ==", + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/@lcluber/weejs/-/weejs-0.1.8.tgz", + "integrity": "sha512-MMLYcipx3RDwkYt0wxkIAFqebnVJagdQuWo1cGHFK27yNsZFG7jhc/waYEkAoWMKxdKDTL1rCgyE3u7D+YYceg==", "dev": true, "requires": { "body-parser": "1.18.2", @@ -1104,18 +2718,9 @@ } } }, - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, "express": { "version": "4.16.3", - "resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.3.tgz", "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "dev": true, "requires": { @@ -1170,7 +2775,7 @@ }, "i18next-express-middleware": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/i18next-express-middleware/-/i18next-express-middleware-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/i18next-express-middleware/-/i18next-express-middleware-1.1.1.tgz", "integrity": "sha512-ckezoLWx5VAihjlhcJ6tgyPsRgz1VnEIWcAqZ4e7SdFQNQU9d5s2Lxs/LiWwkcnkgV6fQqWKr0evJJ/8dzOAvQ==", "dev": true, "requires": { @@ -1298,6 +2903,15 @@ "keygrip": "~1.0.2" } }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, "etag": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", @@ -1306,7 +2920,7 @@ }, "finalhandler": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "dev": true, "requires": { @@ -1344,7 +2958,7 @@ }, "http-errors": { "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "dev": true, "requires": { @@ -1564,28 +3178,10 @@ } } }, - "@lcluber/taipanjs": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@lcluber/taipanjs/-/taipanjs-0.3.6.tgz", - "integrity": "sha512-0l7P2svUMPmEyVAYxOw8deghviDyJOEewXHqw9UOeD4a7kvFhBRq/w25Xq8UDj/7PQdQ7ueQlrSJuUifu9GKgw==", - "dev": true, - "requires": { - "@lcluber/mouettejs": "0.2.7", - "body-parser": "1.16.1", - "cookie-parser": "1.4.3", - "express": "4.14.1", - "i18next": "4.0.0", - "i18next-express-middleware": "1.0.2", - "i18next-node-fs-backend": "0.1.3", - "morgan": "1.8.1", - "pug": "2.0.0-beta11", - "serve-favicon": "2.4.0" - } - }, "@lcluber/type6js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@lcluber/type6js/-/type6js-1.0.3.tgz", - "integrity": "sha512-ptlyX1QEO17U1kRn/mNw0qmesCKNlsbVHieG2k5r908Hgb1vAts9O/PHasIrfREGVqVbYRLth5yxq/lTaV12Ig==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@lcluber/type6js/-/type6js-1.0.5.tgz", + "integrity": "sha512-a6eiPCaqFrRoUB6XsbHpvdCip9b3KRkYB4TGCa1MJnpErSwJeOmzpcbMYF4vXfwIVtC9RijMMtvn9NktAMZVaA==", "requires": { "body-parser": "1.16.1", "cookie-parser": "1.4.3", @@ -1597,12 +3193,13 @@ } }, "@lcluber/weejs": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/@lcluber/weejs/-/weejs-0.1.17.tgz", - "integrity": "sha512-1xORci1VtFQa01tdLPiYC5/Iuqrdh2Fd4uIJy73DgKou9seP0n8NSXnxD9E+MU1BfV/pbSdV+Q6PvO22QwDEoA==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@lcluber/weejs/-/weejs-0.2.7.tgz", + "integrity": "sha512-xPuUvS3sifwL7ah+HnsUtFcTaJhmV/F5K7qlV7eFZJzE3K9BS/7aVWJAE3/1E3f8TbCj3dSVf0rIPoawLct53w==", "requires": { - "@lcluber/aiasjs": "0.1.7", - "@lcluber/mouettejs": "0.2.7", + "@lcluber/aiasjs": "0.1.9", + "@lcluber/chjs": "0.1.1", + "@lcluber/mouettejs": "0.2.8", "body-parser": "1.18.2", "cookie-parser": "1.4.3", "debug": "3.1.0", @@ -1615,18 +3212,171 @@ "serve-favicon": "2.5.0" }, "dependencies": { - "basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "@lcluber/mouettejs": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@lcluber/mouettejs/-/mouettejs-0.2.8.tgz", + "integrity": "sha512-X47Y7QYQXqM8aA3Ju3jIzqlWYeIZzmyw9JauIiMPC6Yj7mMU/m1X7o5diLu3x3oMzTIf6FCtM7l51wokYaUINw==", "requires": { - "safe-buffer": "5.1.2" + "body-parser": "1.16.1", + "cookie-parser": "1.4.3", + "express": "4.14.1", + "i18next": "4.0.0", + "i18next-express-middleware": "1.0.2", + "i18next-node-fs-backend": "0.1.3", + "morgan": "1.8.1", + "pug": "2.0.0-beta11", + "serve-favicon": "2.4.0" }, "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "body-parser": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.16.1.tgz", + "integrity": "sha1-UVQNBFrfp6DGmVoBS7ax7ZuAIyk=", + "requires": { + "bytes": "2.4.0", + "content-type": "~1.0.2", + "debug": "2.6.1", + "depd": "~1.1.0", + "http-errors": "~1.5.1", + "iconv-lite": "0.4.15", + "on-finished": "~2.3.0", + "qs": "6.2.1", + "raw-body": "~2.2.0", + "type-is": "~1.6.14" + } + }, + "debug": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.1.tgz", + "integrity": "sha1-eYVQkLosTjEVzH2HaUkdWPBJE1E=", + "requires": { + "ms": "0.7.2" + } + }, + "express": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.14.1.tgz", + "integrity": "sha1-ZGwjf3ZvFIwhIK/wc4F7nk1+DTM=", + "requires": { + "accepts": "~1.3.3", + "array-flatten": "1.1.1", + "content-disposition": "0.5.2", + "content-type": "~1.0.2", + "cookie": "0.3.1", + "cookie-signature": "1.0.6", + "debug": "~2.2.0", + "depd": "~1.1.0", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "etag": "~1.7.0", + "finalhandler": "0.5.1", + "fresh": "0.3.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.1", + "path-to-regexp": "0.1.7", + "proxy-addr": "~1.1.3", + "qs": "6.2.0", + "range-parser": "~1.2.0", + "send": "0.14.2", + "serve-static": "~1.11.2", + "type-is": "~1.6.14", + "utils-merge": "1.0.0", + "vary": "~1.1.0" + }, + "dependencies": { + "debug": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=", + "requires": { + "ms": "0.7.1" + } + }, + "ms": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=" + }, + "qs": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.2.0.tgz", + "integrity": "sha1-O3hIwDwt7OaalSKw+ujEEm10Xzs=" + } + } + }, + "i18next": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-4.0.0.tgz", + "integrity": "sha1-1i1h5ErIWL4FjF8mZmrqnulhbtc=" + }, + "i18next-express-middleware": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/i18next-express-middleware/-/i18next-express-middleware-1.0.2.tgz", + "integrity": "sha1-C4V3kKi6QPaqVRCZ/Oy8++bvmpI=", + "requires": { + "cookies": "0.6.1" + } + }, + "i18next-node-fs-backend": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/i18next-node-fs-backend/-/i18next-node-fs-backend-0.1.3.tgz", + "integrity": "sha1-lhWWOWyt0hEuFnziDxPwIAxE7vg=", + "requires": { + "js-yaml": "3.5.4", + "json5": "0.5.0" + } + }, + "morgan": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.8.1.tgz", + "integrity": "sha1-+TAj04h70nt439YCPOp4ku4npLE=", + "requires": { + "basic-auth": "~1.1.0", + "debug": "2.6.1", + "depd": "~1.1.0", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" + } + }, + "pug": { + "version": "2.0.0-beta11", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.0-beta11.tgz", + "integrity": "sha1-Favmr1AEx+LPRhPksnRlyVRrXwE=", + "requires": { + "pug-code-gen": "^1.1.1", + "pug-filters": "^2.1.1", + "pug-lexer": "^3.0.0", + "pug-linker": "^2.0.2", + "pug-load": "^2.0.5", + "pug-parser": "^2.0.2", + "pug-runtime": "^2.0.3", + "pug-strip-comments": "^1.0.2" + } + }, + "serve-favicon": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.4.0.tgz", + "integrity": "sha1-Bk3N/bDyUK47FI6xjIu/PRhePdA=", + "requires": { + "etag": "~1.8.0", + "fresh": "0.4.0", + "ms": "0.7.2", + "parseurl": "~1.3.1" + }, + "dependencies": { + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "fresh": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.4.0.tgz", + "integrity": "sha1-R1YmqTSo00gLIQGh1uzvfa/XxVM=" + } + } } } }, @@ -1647,6 +3397,11 @@ "type-is": "~1.6.15" }, "dependencies": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -1654,14 +3409,69 @@ "requires": { "ms": "2.0.0" } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "iconv-lite": { + "version": "0.4.19", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "raw-body": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", + "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "requires": { + "bytes": "3.0.0", + "http-errors": "1.6.2", + "iconv-lite": "0.4.19", + "unpipe": "1.0.0" + }, + "dependencies": { + "depd": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", + "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + }, + "http-errors": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", + "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "requires": { + "depd": "1.1.1", + "inherits": "2.0.3", + "setprototypeof": "1.0.3", + "statuses": ">= 1.3.1 < 2" + } + }, + "setprototypeof": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", + "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + } + } } } }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" - }, "clean-css": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", @@ -1670,28 +3480,21 @@ "source-map": "~0.6.0" } }, - "cookies": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.1.tgz", - "integrity": "sha1-fIphX1SBxhq58WyDNzG8uPZjuZs=", - "requires": { - "depd": "~1.1.1", - "keygrip": "~1.0.2" - } - }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", "requires": { "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } } }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, "express": { "version": "4.16.3", "resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz", @@ -1737,274 +3540,257 @@ "ms": "2.0.0" } }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - } - } - }, - "finalhandler": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", - "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.4.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "finalhandler": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "requires": { - "ms": "2.0.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "proxy-addr": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" + } + }, + "qs": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", + "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" } }, "statuses": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" - } - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "http-errors": { - "version": "1.6.3", - "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "i18next": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-11.2.3.tgz", - "integrity": "sha512-RixAuXma0Q5vXxyiYJs2Hm3/WiWfdeX+UorTDRaLVz/r7t89dDzmFNGdIM9j0PxJLQby/s3uQ9/oCUv5J9nLWw==" - }, - "i18next-express-middleware": { - "version": "1.1.1", - "resolved": "http://registry.npmjs.org/i18next-express-middleware/-/i18next-express-middleware-1.1.1.tgz", - "integrity": "sha512-ckezoLWx5VAihjlhcJ6tgyPsRgz1VnEIWcAqZ4e7SdFQNQU9d5s2Lxs/LiWwkcnkgV6fQqWKr0evJJ/8dzOAvQ==", - "requires": { - "cookies": "0.7.1" - } - }, - "i18next-node-fs-backend": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/i18next-node-fs-backend/-/i18next-node-fs-backend-1.0.0.tgz", - "integrity": "sha1-9aYlo7KHwdCYxxcbfdN2uwcpm1k=", - "requires": { - "js-yaml": "3.5.4", - "json5": "0.5.0" - } - }, - "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" - }, - "ipaddr.js": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", - "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" - }, - "mime": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", - "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" - }, - "morgan": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", - "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", - "requires": { - "basic-auth": "~2.0.0", - "debug": "2.6.9", - "depd": "~1.1.1", - "on-finished": "~2.3.0", - "on-headers": "~1.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "proxy-addr": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", - "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.8.0" - } - }, - "pug": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", - "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", - "requires": { - "pug-code-gen": "^2.0.1", - "pug-filters": "^3.1.0", - "pug-lexer": "^4.0.0", - "pug-linker": "^3.0.5", - "pug-load": "^2.0.11", - "pug-parser": "^5.0.0", - "pug-runtime": "^2.0.4", - "pug-strip-comments": "^1.0.3" - } - }, - "pug-code-gen": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", - "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", - "requires": { - "constantinople": "^3.0.1", - "doctypes": "^1.1.0", - "js-stringify": "^1.0.1", - "pug-attrs": "^2.0.3", - "pug-error": "^1.3.2", - "pug-runtime": "^2.0.4", - "void-elements": "^2.0.1", - "with": "^5.0.0" - } - }, - "pug-filters": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz", - "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=", - "requires": { - "clean-css": "^4.1.11", - "constantinople": "^3.0.1", - "jstransformer": "1.0.0", - "pug-error": "^1.3.2", - "pug-walk": "^1.1.7", - "resolve": "^1.1.6", - "uglify-js": "^2.6.1" - } - }, - "pug-lexer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz", - "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=", - "requires": { - "character-parser": "^2.1.1", - "is-expression": "^3.0.0", - "pug-error": "^1.3.2" + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + } } }, - "pug-linker": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", - "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", + "i18next": { + "version": "11.2.3", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-11.2.3.tgz", + "integrity": "sha512-RixAuXma0Q5vXxyiYJs2Hm3/WiWfdeX+UorTDRaLVz/r7t89dDzmFNGdIM9j0PxJLQby/s3uQ9/oCUv5J9nLWw==" + }, + "i18next-express-middleware": { + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/i18next-express-middleware/-/i18next-express-middleware-1.1.1.tgz", + "integrity": "sha512-ckezoLWx5VAihjlhcJ6tgyPsRgz1VnEIWcAqZ4e7SdFQNQU9d5s2Lxs/LiWwkcnkgV6fQqWKr0evJJ/8dzOAvQ==", "requires": { - "pug-error": "^1.3.2", - "pug-walk": "^1.1.7" + "cookies": "0.7.1" + }, + "dependencies": { + "cookies": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.7.1.tgz", + "integrity": "sha1-fIphX1SBxhq58WyDNzG8uPZjuZs=", + "requires": { + "depd": "~1.1.1", + "keygrip": "~1.0.2" + } + } } }, - "pug-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz", - "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=", + "i18next-node-fs-backend": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/i18next-node-fs-backend/-/i18next-node-fs-backend-1.0.0.tgz", + "integrity": "sha1-9aYlo7KHwdCYxxcbfdN2uwcpm1k=", "requires": { - "pug-error": "^1.3.2", - "token-stream": "0.0.1" + "js-yaml": "3.5.4", + "json5": "0.5.0" } }, - "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "ipaddr.js": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" }, - "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" + }, + "morgan": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.0.tgz", + "integrity": "sha1-0B+mxlhZt2/PMbPLU6OCGjEdgFE=", "requires": { - "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "unpipe": "1.0.0" + "basic-auth": "~2.0.0", + "debug": "2.6.9", + "depd": "~1.1.1", + "on-finished": "~2.3.0", + "on-headers": "~1.0.1" }, "dependencies": { - "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "requires": { + "safe-buffer": "5.1.2" + } }, - "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "depd": "1.1.1", - "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": ">= 1.3.1 < 2" + "ms": "2.0.0" } }, - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, - "send": { - "version": "0.16.2", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", - "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "pug": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pug/-/pug-2.0.3.tgz", + "integrity": "sha1-ccuoJTfJWl6rftBGluQiH1Oqh44=", "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.6.2", - "mime": "1.4.1", - "ms": "2.0.0", - "on-finished": "~2.3.0", - "range-parser": "~1.2.0", - "statuses": "~1.4.0" + "pug-code-gen": "^2.0.1", + "pug-filters": "^3.1.0", + "pug-lexer": "^4.0.0", + "pug-linker": "^3.0.5", + "pug-load": "^2.0.11", + "pug-parser": "^5.0.0", + "pug-runtime": "^2.0.4", + "pug-strip-comments": "^1.0.3" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "pug-code-gen": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pug-code-gen/-/pug-code-gen-2.0.1.tgz", + "integrity": "sha1-CVHsgyJddNjPxHan+Zolm199BQw=", "requires": { - "ms": "2.0.0" + "constantinople": "^3.0.1", + "doctypes": "^1.1.0", + "js-stringify": "^1.0.1", + "pug-attrs": "^2.0.3", + "pug-error": "^1.3.2", + "pug-runtime": "^2.0.4", + "void-elements": "^2.0.1", + "with": "^5.0.0" } }, - "statuses": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", - "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" + "pug-filters": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pug-filters/-/pug-filters-3.1.0.tgz", + "integrity": "sha1-JxZVVbwEwjbkqisDZiRt+gIbYm4=", + "requires": { + "clean-css": "^4.1.11", + "constantinople": "^3.0.1", + "jstransformer": "1.0.0", + "pug-error": "^1.3.2", + "pug-walk": "^1.1.7", + "resolve": "^1.1.6", + "uglify-js": "^2.6.1" + } + }, + "pug-lexer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pug-lexer/-/pug-lexer-4.0.0.tgz", + "integrity": "sha1-IQwYRX7y4XYCQnQMXmR715TOwng=", + "requires": { + "character-parser": "^2.1.1", + "is-expression": "^3.0.0", + "pug-error": "^1.3.2" + } + }, + "pug-linker": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/pug-linker/-/pug-linker-3.0.5.tgz", + "integrity": "sha1-npp65ABWgtAn3uuWsAD4juuDoC8=", + "requires": { + "pug-error": "^1.3.2", + "pug-walk": "^1.1.7" + } + }, + "pug-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pug-parser/-/pug-parser-5.0.0.tgz", + "integrity": "sha1-45Stmz/KkxI5QK/4hcBuRKt+aOQ=", + "requires": { + "pug-error": "^1.3.2", + "token-stream": "0.0.1" + } } } }, @@ -2020,6 +3806,16 @@ "safe-buffer": "5.1.1" }, "dependencies": { + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", @@ -2027,17 +3823,6 @@ } } }, - "serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.2", - "send": "0.16.2" - } - }, "setprototypeof": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", @@ -2047,11 +3832,6 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" } } }, @@ -2069,24 +3849,24 @@ } }, "@types/events": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@types/events/-/events-1.2.0.tgz", - "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", "dev": true }, "@types/fs-extra": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.0.1.tgz", - "integrity": "sha512-h3wnflb+jMTipvbbZnClgA2BexrT4w0GcfoCz5qyxd0IRsbqhLSyesM6mqZTAnhbVmhyTm5tuxfRu9R+8l+lGw==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.0.5.tgz", + "integrity": "sha512-w7iqhDH9mN8eLClQOYTkhdYUOSpp25eXxfc6VbFOGtzxW34JcvctH2bKjj4jD4++z4R5iO5D+pg48W2e03I65A==", "dev": true, "requires": { "@types/node": "*" } }, "@types/glob": { - "version": "5.0.35", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-5.0.35.tgz", - "integrity": "sha512-wc+VveszMLyMWFvXLkloixT4n0harUIVZjnpzztaZ0nKLuul7Z32iMt2fUFGAaZ4y1XWjFRMtCI5ewvyh4aIeg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", "dev": true, "requires": { "@types/events": "*", @@ -2095,27 +3875,30 @@ } }, "@types/handlebars": { - "version": "4.0.36", - "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.0.36.tgz", - "integrity": "sha512-LjNiTX7TY7wtuC6y3QwC93hKMuqYhgV9A1uXBKNvZtVC8ZvyWAjZkJ5BvT0K7RKqORRYRLMrqCxpw5RgS+MdrQ==", - "dev": true + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@types/handlebars/-/handlebars-4.1.0.tgz", + "integrity": "sha512-gq9YweFKNNB1uFK71eRqsd4niVkXrxHugqWFQkeLRJvGjnxsLr16bYtcsG4tOFwmYi0Bax+wCkbf1reUfdl4kA==", + "dev": true, + "requires": { + "handlebars": "*" + } }, "@types/highlight.js": { - "version": "9.12.2", - "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.12.2.tgz", - "integrity": "sha512-y5x0XD/WXDaGSyiTaTcKS4FurULJtSiYbGTeQd0m2LYZGBcZZ/7fM6t5H/DzeUF+kv8y6UfmF6yJABQsHcp9VQ==", + "version": "9.12.3", + "resolved": "https://registry.npmjs.org/@types/highlight.js/-/highlight.js-9.12.3.tgz", + "integrity": "sha512-pGF/zvYOACZ/gLGWdQH8zSwteQS1epp68yRcVLJMgUck/MjEn/FBYmPub9pXT8C1e4a8YZfHo1CKyV8q1vKUnQ==", "dev": true }, "@types/lodash": { - "version": "4.14.104", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.104.tgz", - "integrity": "sha512-ufQcVg4daO8xQ5kopxRHanqFdL4AI7ondQkV+2f+7mz3gvp0LkBx2zBRC6hfs3T87mzQFmf5Fck7Fi145Ul6NQ==", + "version": "4.14.123", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.123.tgz", + "integrity": "sha512-pQvPkc4Nltyx7G1Ww45OjVqUsJP4UsZm+GWJpigXgkikZqJgRm4c48g027o6tdgubWHwFRF15iFd+Y4Pmqv6+Q==", "dev": true }, "@types/marked": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.3.0.tgz", - "integrity": "sha512-CSf9YWJdX1DkTNu9zcNtdCcn6hkRtB5ILjbhRId4ZOQqx30fXmdecuaXhugQL6eyrhuXtaHJ7PHI+Vm7k9ZJjg==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.4.2.tgz", + "integrity": "sha512-cDB930/7MbzaGF6U3IwSQp6XBru8xWajF5PV2YZZeV8DyiliTuld11afVztGI9+yJZ29il5E+NpGA6ooV/Cjkg==", "dev": true }, "@types/minimatch": { @@ -2125,15 +3908,15 @@ "dev": true }, "@types/node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.9.2.tgz", - "integrity": "sha512-pwZnkVyCGJ3LsQ0/3flQK5lCFao4esIzwUVzzk5NvL9vnkEyDhNf4fhHzUMHvyr56gNZywWTS2MR0euabMSz4A==", + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.13.0.tgz", + "integrity": "sha512-rx29MMkRdVmzunmiA4lzBYJNnXsW/PhG4kMBy2ATsYaDjGGR75dCFEVVROKpNwlVdcUX3xxlghKQOeDPBJobng==", "dev": true }, "@types/shelljs": { - "version": "0.7.8", - "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.7.8.tgz", - "integrity": "sha512-M2giRw93PxKS7YjU6GZjtdV9HASdB7TWqizBXe4Ju7AqbKlWvTr0gNO92XH56D/gMxqD/jNHLNfC5hA34yGqrQ==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@types/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-UNACC6scKFVljWEvO3rHBkbbKXu3QkKPBOMCisxI7au9cnFK7tjOGPsKh5OjedAPLmtsKSarmk+YeehKTQSKtg==", "dev": true, "requires": { "@types/glob": "*", @@ -3597,6 +5380,28 @@ "capture-stack-trace": "^1.0.0" } }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + }, + "dependencies": { + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + } + } + }, "crypto-random-string": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", @@ -6659,9 +8464,9 @@ } }, "js-base64": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.9.tgz", - "integrity": "sha512-xcinL3AuDJk7VSzsHgb9DvvIXayBbadtMZ4HFPx8rUszbW1MuNMlwYVC4zzCZ6e1sqZpnNS5ZFYOhXqA39T7LQ==", + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", "dev": true }, "js-stringify": { @@ -7181,6 +8986,12 @@ "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" }, + "neo-async": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", + "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", + "dev": true + }, "no-case": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", @@ -7219,9 +9030,9 @@ } }, "node-sass": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.9.3.tgz", - "integrity": "sha512-XzXyGjO+84wxyH7fV6IwBOTrEBe2f0a6SBze9QWWYR/cL74AcQUks2AsqcCZenl/Fp/JVbuEaLpgrLtocwBUww==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.11.0.tgz", + "integrity": "sha512-bHUdHTphgQJZaF1LASx0kAviPH7sGlcyNhWade4eVIpFp6tsn7SV8xNMTbsQFpEV9VXpnwTTnNYlfsZXgGgmkA==", "dev": true, "requires": { "async-foreach": "^0.1.3", @@ -7239,91 +9050,10 @@ "nan": "^2.10.0", "node-gyp": "^3.8.0", "npmlog": "^4.0.0", - "request": "2.87.0", + "request": "^2.88.0", "sass-graph": "^2.2.4", "stdout-stream": "^1.4.0", "true-case-path": "^1.0.2" - }, - "dependencies": { - "cross-spawn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", - "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "which": "^1.2.9" - } - }, - "har-validator": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.0.3.tgz", - "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=", - "dev": true, - "requires": { - "ajv": "^5.1.0", - "har-schema": "^2.0.0" - } - }, - "lru-cache": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.3.tgz", - "integrity": "sha512-fFEhvcgzuIoJVUF8fYr5KR0YqxD238zgObTps31YdADwPPAp82a4M8TrckkWyx7ekNlf9aBcVn81cFwwXngrJA==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "oauth-sign": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", - "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "request": { - "version": "2.87.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.87.0.tgz", - "integrity": "sha512-fcogkm7Az5bsS6Sl0sibkbhcKsnyon/jV1kF3ajGmF0c8HrttdKTPRT9hieOaQHA5HEq6r8OyWOo/o781C1tNw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.6.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.5", - "extend": "~3.0.1", - "forever-agent": "~0.6.1", - "form-data": "~2.3.1", - "har-validator": "~5.0.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.17", - "oauth-sign": "~0.8.2", - "performance-now": "^2.1.0", - "qs": "~6.5.1", - "safe-buffer": "^5.1.1", - "tough-cookie": "~2.3.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.1.0" - } - }, - "tough-cookie": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz", - "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==", - "dev": true, - "requires": { - "punycode": "^1.4.1" - } - } } }, "nodemon": { @@ -9513,34 +11243,41 @@ "dev": true }, "typedoc": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.11.1.tgz", - "integrity": "sha512-jdNIoHm5wkZqxQTe/g9AQ3LKnZyrzHXqu6A/c9GUOeJyBWLxNr7/Dm3rwFvLksuxRNwTvY/0HRDU9sJTa9WQSg==", + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.14.2.tgz", + "integrity": "sha512-aEbgJXV8/KqaVhcedT7xG6d2r+mOvB5ep3eIz1KuB5sc4fDYXcepEEMdU7XSqLFO5hVPu0nllHi1QxX2h/QlpQ==", "dev": true, "requires": { - "@types/fs-extra": "5.0.1", - "@types/handlebars": "4.0.36", - "@types/highlight.js": "9.12.2", - "@types/lodash": "4.14.104", - "@types/marked": "0.3.0", + "@types/fs-extra": "^5.0.3", + "@types/handlebars": "^4.0.38", + "@types/highlight.js": "^9.12.3", + "@types/lodash": "^4.14.110", + "@types/marked": "^0.4.0", "@types/minimatch": "3.0.3", - "@types/shelljs": "0.7.8", - "fs-extra": "^5.0.0", + "@types/shelljs": "^0.8.0", + "fs-extra": "^7.0.0", "handlebars": "^4.0.6", - "highlight.js": "^9.0.0", - "lodash": "^4.17.5", - "marked": "^0.3.17", + "highlight.js": "^9.13.1", + "lodash": "^4.17.10", + "marked": "^0.4.0", "minimatch": "^3.0.0", "progress": "^2.0.0", - "shelljs": "^0.8.1", + "shelljs": "^0.8.2", "typedoc-default-themes": "^0.5.0", - "typescript": "2.7.2" + "typescript": "3.2.x" }, "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true, + "optional": true + }, "fs-extra": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", - "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "requires": { "graceful-fs": "^4.1.2", @@ -9549,17 +11286,23 @@ } }, "handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.1.tgz", + "integrity": "sha512-3Zhi6C0euYZL5sM0Zcy7lInLXKQ+YLcF/olbN010mzGQ4XVm50JeyBnMqofHh696GrciGruC7kCcApPDJvVgwA==", "dev": true, "requires": { - "async": "^1.4.0", + "neo-async": "^2.6.0", "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" } }, + "highlight.js": { + "version": "9.15.6", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.15.6.tgz", + "integrity": "sha512-zozTAWM1D6sozHo8kqhfYgsac+B+q0PmsjXeyDrYIHHcBN0zTVT66+s2GW1GZv7DbyaROdLXKdabwS/WqPyIdQ==", + "dev": true + }, "jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -9569,16 +11312,22 @@ "graceful-fs": "^4.1.6" } }, + "marked": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-0.4.0.tgz", + "integrity": "sha512-tMsdNBgOsrUophCAFQl0XPe6Zqk/uy9gnue+jIIKhykO51hxyu6uNx7zBPy0+y/WKYVZZMspV9YeXLNdKk+iYw==", + "dev": true + }, "progress": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.0.tgz", - "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, "shelljs": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.2.tgz", - "integrity": "sha512-pRXeNrCA2Wd9itwhvLp5LZQvPJ0wU6bcjaTMywHHGX5XWhVN2nzSu7WV0q+oUY7mGK3mgSkDDzP3MgjqdyIgbQ==", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", "dev": true, "requires": { "glob": "^7.0.0", @@ -9586,6 +11335,12 @@ "rechoir": "^0.6.2" } }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, "typedoc-default-themes": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.5.0.tgz", @@ -9593,10 +11348,21 @@ "dev": true }, "typescript": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.7.2.tgz", - "integrity": "sha512-p5TCYZDAO0m4G344hD+wx/LATebLWZNkkh2asWUFqSsD2OrDNhbAHuSjobrmsUmdzjJjEeZVU9g1h3O6vpstnw==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.2.4.tgz", + "integrity": "sha512-0RNDbSdEokBeEAkgNbxJ+BLwSManFy9TeXz8uW+48j/xhEXv1ePME60olyzw2XzUqUBNAYFeJadIqAgNqIACwg==", "dev": true + }, + "uglify-js": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.3.tgz", + "integrity": "sha512-rIQPT2UMDnk4jRX+w4WO84/pebU2jiLsjgIyrCktYgSvx28enOE3iYQMr+BD1rHiitWnDmpu0cY/LfIEpKcjcw==", + "dev": true, + "optional": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + } } } }, @@ -9607,9 +11373,9 @@ "dev": true }, "typescript": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", - "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.4.1.tgz", + "integrity": "sha512-3NSMb2VzDQm8oBTLH6Nj55VVtUEpe/rgkIzMir0qVoLyjDZlnMBva0U6vDiV3IH+sl/Yu6oP5QwsAQtHPmDd2Q==", "dev": true }, "uglify-js": { diff --git a/package.json b/package.json index ef5e767..d806ece 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@lcluber/roostrjs", - "version": "0.5.4", + "version": "0.5.5", "description": "WebGL 3D engine written in TypeScript", "keywords": [ "WebGL 3D engine" @@ -44,9 +44,9 @@ "morgan": "1.8.1", "pug": "2.0.0-beta11", "serve-favicon": "2.4.0", - "@lcluber/type6js": "1.0.3", - "@lcluber/weejs": "0.1.17", - "@lcluber/mouettejs": "0.2.7" + "@lcluber/type6js": "1.0.5", + "@lcluber/weejs": "0.2.7", + "@lcluber/mouettejs": "0.2.11" }, "devDependencies": { "@fortawesome/fontawesome-free": "5.3.1", @@ -80,10 +80,10 @@ "jquery-easing": "0.0.1", "rollup-plugin-babel": "3.0.4", "rollup-plugin-node-resolve": "3.3.0", - "node-sass": "4.9.3", + "node-sass": "4.11.0", "time-grunt": "1.4.0", "tslint": "5.9.1", - "typedoc": "0.11.1", - "typescript": "2.9.2" + "typedoc": "0.14.2", + "typescript": "3.4.1" } } diff --git a/src/ts/cameras/camera.ts b/src/ts/cameras/camera.ts index fc082f0..562b8ed 100644 --- a/src/ts/cameras/camera.ts +++ b/src/ts/cameras/camera.ts @@ -1,4 +1,4 @@ -import {Vector3,Matrix4x3,Matrix4x4} from '@lcluber/type6js'; +import { Vector3, Matrix4x3, Matrix4x4 } from '@lcluber/type6js'; export class Camera { diff --git a/src/ts/cameras/orthographic.ts b/src/ts/cameras/orthographic.ts index b472671..4ac2a4e 100644 --- a/src/ts/cameras/orthographic.ts +++ b/src/ts/cameras/orthographic.ts @@ -1,4 +1,4 @@ -import {Vector3} from '@lcluber/type6js'; +import { Vector3 } from '@lcluber/type6js'; import { Camera } from './camera'; export class OrthographicCamera extends Camera { diff --git a/src/ts/cameras/perspective.ts b/src/ts/cameras/perspective.ts index b53936d..93a1486 100644 --- a/src/ts/cameras/perspective.ts +++ b/src/ts/cameras/perspective.ts @@ -1,4 +1,4 @@ -import {Vector3} from '@lcluber/type6js'; +import { Vector3 } from '@lcluber/type6js'; import { Camera } from './camera'; export class PerspectiveCamera extends Camera { diff --git a/src/ts/geometry/basic.ts b/src/ts/geometry/basic.ts new file mode 100644 index 0000000..398869a --- /dev/null +++ b/src/ts/geometry/basic.ts @@ -0,0 +1,24 @@ + +import { SubMesh } from './subMesh'; + +export class BasicMesh { + + vertices : number[]; + indices : number[]; + normals : number[]; + subMeshes : SubMesh[]; + itemSize : number; + // nbSubMeshes : number; + primitive : string; + + constructor() { + + this.vertices = []; + this.indices = []; + this.normals = []; + this.subMeshes = []; + this.itemSize = 3; + this.primitive = 'TRIANGLES'; + } + +} diff --git a/src/ts/geometry/cannon.ts b/src/ts/geometry/cannon.ts index e846518..ce0f604 100644 --- a/src/ts/geometry/cannon.ts +++ b/src/ts/geometry/cannon.ts @@ -1,17 +1,11 @@ import { SubMesh } from './subMesh'; +import { BasicMesh } from './basic'; -export class Cannon { - - vertices : Array; - indices : Array; - normals : Array; - subMeshes : Array; - itemSize : number; - nbSubMeshes : number; - primitive : string; +export class Cannon extends BasicMesh { constructor() { + super(); //this.position = [0,-0.56,-2.4525]; this.vertices = [ 0,-0.4,0.1885,0.7,0,-0.9849,0,-0.4,-0.9849,0,0.4,-0.9849,0.7,0,0.4525,0,0.4,0.9293,0,0,-0.8408,0,0.4,-0.9849,0,0,1.9525,0,0.4,0.9293,0.7,0,0.4525,0,0,-0.8408,0,0.3,-1.1203,0.6,0,-1.1203,0,0.11,-2.8486,0.2351,0,-3.0108,0,-0.11,-3.0108,0,-0.3,-1.1203,0,0,-0.8408,0.7,0,0.4525,0,-0.4,0.1885,-0.7,0,-0.9849,-0.7,0,0.4525,0,0.4,-0.9849,-0.7,0,0.4525,0,0.4,0.9293,0,0,-0.8408,-0.6,0,-1.1203,-0.2351,0,-3.0108,0,0,-0.8408,-0.7,0,0.4525,0,-0.4,0.1885,0.7,0,0.4525,-0.7,0,0.4525 ]; @@ -22,8 +16,6 @@ export class Cannon { this.subMeshes = [ new SubMesh( 0, 90) ]; - this.itemSize = 3; - this.primitive = 'TRIANGLES'; } } diff --git a/src/ts/geometry/cube.ts b/src/ts/geometry/cube.ts index 3f92050..65f41b2 100644 --- a/src/ts/geometry/cube.ts +++ b/src/ts/geometry/cube.ts @@ -1,18 +1,10 @@ - +import { BasicMesh } from './basic'; import { SubMesh } from './subMesh'; -export class Cube { - - vertices : Array; - indices : Array; - normals : Array; - subMeshes : Array; - itemSize : number; - nbSubMeshes : number; - primitive : string; +export class Cube extends BasicMesh { constructor(size: number) { - + super(); size = size ? size * 0.5 : 1.0; this.vertices = [ size,-size,-size, @@ -43,8 +35,6 @@ export class Cube { this.subMeshes = [ new SubMesh( 0, 36) ]; - this.itemSize = 3; - this.primitive = 'TRIANGLES'; } } diff --git a/src/ts/geometry/customMesh.ts b/src/ts/geometry/customMesh.ts index e53d417..2158483 100644 --- a/src/ts/geometry/customMesh.ts +++ b/src/ts/geometry/customMesh.ts @@ -3,15 +3,15 @@ import { SubMesh } from './subMesh'; export class CustomMesh { - vertices : Float32Array; - indices : Int32Array; - normals : Float32Array; - uvs : Float32Array; - subMeshes : Array; + vertices : Float32Array | null; + indices : Int32Array | null; + normals : Float32Array | null; + uvs : Float32Array | null; + subMeshes : SubMesh[]; itemSize : number; - nbSubMeshes : number; + // nbSubMeshes : number; primitive : string; - primitives : Array + primitives : string[]; constructor() { this.vertices = /*mesh.vertices ? this.copyArray(mesh.vertices) :*/ null; diff --git a/src/ts/geometry/fullscreenQuad.ts b/src/ts/geometry/fullscreenQuad.ts index 043e7c6..b3dbd63 100644 --- a/src/ts/geometry/fullscreenQuad.ts +++ b/src/ts/geometry/fullscreenQuad.ts @@ -1,16 +1,12 @@ - +import { BasicMesh } from './basic'; import { SubMesh } from './subMesh'; -export class FullscreenQuad { +export class FullscreenQuad extends BasicMesh { - vertices : Array; - uvs : Array; - subMeshes : Array; - itemSize : number; - nbSubMeshes : number; - primitive : string; + uvs: number[]; constructor() { + super(); this.vertices = [ 1.0,-1.0, -1.0,-1.0, 1.0, 1.0, diff --git a/src/ts/geometry/hemisphere.ts b/src/ts/geometry/hemisphere.ts index 2eaa2f3..59062c6 100644 --- a/src/ts/geometry/hemisphere.ts +++ b/src/ts/geometry/hemisphere.ts @@ -1,17 +1,10 @@ - +import { BasicMesh } from './basic'; import { SubMesh } from './subMesh'; -export class Hemisphere { - - vertices : Array; - indices : Array; - normals : Array; - subMeshes : Array; - itemSize : number; - nbSubMeshes : number; - primitive : string; +export class Hemisphere extends BasicMesh { constructor() { + super(); this.vertices = [ -0.5556,-0.8315,0,-0.3753,-0.9239,0.0747,-0.3827,-0.9239,0,-0.9239,0.3827,0,-0.9619,0.1951,0.1913,-0.9808,0.1951,0,-0.1913,-0.9808,0.0381,-0.1951,-0.9808,0,-0.9808,0,0.1951,-1,0,0,-0.1951,0.9808,0,0,1,0,-0.1913,0.9808,0.0381,0,-1,0,-0.9619,-0.1951,0.1913,-0.9808,-0.1951,0,-0.3753,0.9239,0.0747,-0.3827,0.9239,0,-0.9239,-0.3827,0,-0.9061,-0.3827,0.1802,-0.5556,0.8315,0,-0.5449,0.8315,0.1084,-0.8155,-0.5556,0.1622,-0.8315,-0.5556,0,-0.6935,0.7071,0.1379,-0.7071,0.7071,0,-0.7071,-0.7071,0,-0.6935,-0.7071,0.1379,-0.8155,0.5556,0.1622,-0.8315,0.5556,0,-0.5449,-0.8315,0.1084,-0.9061,0.3827,0.1802,-0.5133,-0.8315,0.2126,-0.8536,0.3827,0.3536,-0.3536,-0.9239,0.1464,-0.9061,0.1951,0.3753,-0.1802,-0.9808,0.0747,-0.9239,0,0.3827,-0.1802,0.9808,0.0747,-0.9061,-0.1951,0.3753,-0.3536,0.9239,0.1464,-0.8536,-0.3827,0.3536,-0.5133,0.8315,0.2126,-0.7682,-0.5556,0.3182,-0.6533,0.7071,0.2706,-0.6533,-0.7071,0.2706,-0.7682,0.5556,0.3182,-0.3182,0.9239,0.2126,-0.7682,-0.3827,0.5133,-0.4619,0.8315,0.3087,-0.6913,-0.5556,0.4619,-0.5879,0.7071,0.3928,-0.5879,-0.7071,0.3928,-0.6913,0.5556,0.4619,-0.4619,-0.8315,0.3087,-0.7682,0.3827,0.5133,-0.3182,-0.9239,0.2126,-0.8155,0.1951,0.5449,-0.1622,-0.9808,0.1084,-0.8315,0,0.5556,-0.1622,0.9808,0.1084,-0.8155,-0.1951,0.5449,-0.6533,0.3827,0.6533,-0.2706,-0.9239,0.2706,-0.6935,0.1951,0.6935,-0.1379,-0.9808,0.1379,-0.7071,0,0.7071,-0.1379,0.9808,0.1379,-0.6935,-0.1951,0.6935,-0.2706,0.9239,0.2706,-0.6533,-0.3827,0.6533,-0.3928,0.8315,0.3928,-0.5879,-0.5556,0.5879,-0.5,0.7071,0.5,-0.5,-0.7071,0.5,-0.5879,0.5556,0.5879,-0.3928,-0.8315,0.3928,-0.5133,-0.3827,0.7682,-0.3087,0.8315,0.4619,-0.4619,-0.5556,0.6913,-0.3928,0.7071,0.5879,-0.3928,-0.7071,0.5879,-0.4619,0.5556,0.6913,-0.3087,-0.8315,0.4619,-0.5133,0.3827,0.7682,-0.2126,-0.9239,0.3182,-0.5449,0.1951,0.8155,-0.1084,-0.9808,0.1622,-0.5556,0,0.8315,-0.1084,0.9808,0.1622,-0.5449,-0.1951,0.8155,-0.2126,0.9239,0.3182,-0.2126,-0.8315,0.5133,-0.1464,-0.9239,0.3536,-0.3536,0.3827,0.8536,-0.3753,0.1951,0.9061,-0.0747,-0.9808,0.1802,-0.3827,0,0.9239,-0.0747,0.9808,0.1802,-0.3753,-0.1951,0.9061,-0.1464,0.9239,0.3536,-0.3536,-0.3827,0.8536,-0.2126,0.8315,0.5133,-0.3182,-0.5556,0.7682,-0.2706,0.7071,0.6533,-0.2706,-0.7071,0.6533,-0.3182,0.5556,0.7682,-0.1802,-0.3827,0.9061,-0.1622,-0.5556,0.8155,-0.1084,0.8315,0.5449,-0.1379,0.7071,0.6935,-0.1379,-0.7071,0.6935,-0.1622,0.5556,0.8155,-0.1084,-0.8315,0.5449,-0.1802,0.3827,0.9061,-0.0747,-0.9239,0.3753,-0.1913,0.1951,0.9619,-0.0381,-0.9808,0.1913,-0.1951,0,0.9808,-0.0381,0.9808,0.1913,-0.1913,-0.1951,0.9619,-0.0747,0.9239,0.3753,0,-0.9239,0.3827,0,-0.9808,0.1951,0,0,1,0,0.9808,0.1951,0,-0.1951,0.9808,0,0.9239,0.3827,0,-0.3827,0.9239,0,0.8315,0.5556,0,-0.5556,0.8315,0,0.7071,0.7071,0,-0.7071,0.7071,0,0.5556,0.8315,0,-0.8315,0.5556,0,0.3827,0.9239,0,0.1951,0.9808,0.138,0.7071,0.6935,0.138,-0.7071,0.6935,0.1622,0.5556,0.8155,0.1084,-0.8315,0.5449,0.1802,0.3827,0.9061,0.0747,-0.9239,0.3753,0.1913,0.1951,0.9619,0.0381,-0.9808,0.1913,0.1951,0,0.9808,0.0381,0.9808,0.1913,0.1913,-0.1951,0.9619,0.0747,0.9239,0.3753,0.1802,-0.3827,0.9061,0.1084,0.8315,0.5449,0.1622,-0.5556,0.8155,0.3827,0,0.9239,0.0747,0.9808,0.1802,0.0747,-0.9808,0.1802,0.3753,-0.1951,0.9061,0.1464,0.9239,0.3536,0.3536,-0.3827,0.8536,0.2126,0.8315,0.5133,0.3182,-0.5556,0.7682,0.2706,0.7071,0.6533,0.2706,-0.7071,0.6533,0.3182,0.5556,0.7682,0.2126,-0.8315,0.5133,0.3536,0.3827,0.8536,0.1464,-0.9239,0.3536,0.3753,0.1951,0.9061,0.3928,-0.7071,0.5879,0.3928,0.7071,0.5879,0.4619,0.5556,0.6913,0.3087,-0.8315,0.4619,0.5133,0.3827,0.7682,0.2126,-0.9239,0.3182,0.5449,0.1951,0.8155,0.1084,-0.9808,0.1622,0.5556,0,0.8315,0.1084,0.9808,0.1622,0.5449,-0.1951,0.8155,0.2126,0.9239,0.3182,0.5133,-0.3827,0.7682,0.3087,0.8315,0.4619,0.4619,-0.5556,0.6913,0.138,0.9808,0.1379,0.138,-0.9808,0.1379,0.6935,-0.1951,0.6935,0.2706,0.9239,0.2706,0.6533,-0.3827,0.6533,0.3928,0.8315,0.3928,0.5879,-0.5556,0.5879,0.5,0.7071,0.5,0.5,-0.7071,0.5,0.5879,0.5556,0.5879,0.3928,-0.8315,0.3928,0.6533,0.3827,0.6533,0.2706,-0.9239,0.2706,0.6935,0.1951,0.6935,0.7071,0,0.7071,0.5879,0.7071,0.3928,0.6913,0.5556,0.4619,0.5879,-0.7071,0.3928,0.4619,-0.8315,0.3087,0.7682,0.3827,0.5133,0.3182,-0.9239,0.2126,0.8155,0.1951,0.5449,0.1622,-0.9808,0.1084,0.8315,0,0.5556,0.1622,0.9808,0.1084,0.8155,-0.1951,0.5449,0.3182,0.9239,0.2126,0.7682,-0.3827,0.5133,0.4619,0.8315,0.3087,0.6913,-0.5556,0.4619,0.9061,-0.1951,0.3753,0.3536,0.9239,0.1464,0.8536,-0.3827,0.3536,0.5133,0.8315,0.2126,0.7682,-0.5556,0.3182,0.6533,0.7071,0.2706,0.6533,-0.7071,0.2706,0.7682,0.5556,0.3182,0.5133,-0.8315,0.2126,0.8536,0.3827,0.3536,0.3536,-0.9239,0.1464,0.9061,0.1951,0.3753,0.1802,-0.9808,0.0747,0.9239,0,0.3827,0.1802,0.9808,0.0747,0.5449,-0.8315,0.1084,0.9061,0.3827,0.1802,0.3753,-0.9239,0.0747,0.9619,0.1951,0.1913,0.1913,-0.9808,0.0381,0.9808,0,0.1951,0.1913,0.9808,0.0381,0.9619,-0.1951,0.1913,0.3753,0.9239,0.0747,0.9061,-0.3827,0.1802,0.5449,0.8315,0.1084,0.8155,-0.5556,0.1622,0.6935,0.7071,0.1379,0.6935,-0.7071,0.1379,0.8155,0.5556,0.1622,0.9239,-0.3827,0,0.3827,0.9239,0,0.5556,0.8315,0,0.8315,-0.5556,0,0.7071,0.7071,0,0.7071,-0.7071,0,0.8315,0.5556,0,0.5556,-0.8315,0,0.9239,0.3827,0,0.3827,-0.9239,0,0.9808,0.1951,0,0.1951,-0.9808,0,1,0,0,0.1951,0.9808,0,0.9808,-0.1951,0 ]; this.indices = [ 0,1,2,3,4,5,2,6,7,5,8,9,10,11,12,13,7,6,9,14,15,10,16,17,18,14,19,20,16,21,18,22,23,20,24,25,26,22,27,25,28,29,26,30,0,29,31,3,27,32,30,28,33,31,30,34,1,31,35,4,1,36,6,4,37,8,12,11,38,13,6,36,14,37,39,12,40,16,19,39,41,16,42,21,19,43,22,21,44,24,27,43,45,24,46,28,38,47,40,39,48,41,40,49,42,43,48,50,42,51,44,45,50,52,44,53,46,45,54,32,46,55,33,32,56,34,35,55,57,34,58,36,35,59,37,38,11,60,13,36,58,37,61,39,53,62,55,54,63,56,55,64,57,56,65,58,59,64,66,60,11,67,13,58,65,59,68,61,60,69,47,61,70,48,47,71,49,50,70,72,49,73,51,50,74,52,51,75,53,52,76,54,68,77,70,69,78,71,72,77,79,71,80,73,72,81,74,75,80,82,76,81,83,75,84,62,63,83,85,62,86,64,63,87,65,66,86,88,67,11,89,13,65,87,66,90,68,67,91,69,85,92,93,86,94,95,85,96,87,86,97,88,89,11,98,13,87,96,88,99,90,89,100,91,90,101,77,91,102,78,79,101,103,78,104,80,81,103,105,82,104,106,81,92,83,82,94,84,103,107,108,104,109,110,105,108,111,104,112,106,105,113,92,106,114,94,92,115,93,95,114,116,96,115,117,95,118,97,98,11,119,13,96,117,97,120,99,98,121,100,99,107,101,100,109,102,117,122,123,116,124,118,119,11,125,13,117,123,120,124,126,119,127,121,120,128,107,121,129,109,108,128,130,109,131,110,108,132,111,110,133,112,113,132,134,112,135,114,115,134,122,116,135,136,129,137,131,130,138,132,133,137,139,134,138,140,133,141,135,134,142,122,136,141,143,123,142,144,136,145,124,125,11,146,13,123,144,124,147,126,127,146,148,126,149,128,127,150,129,130,149,151,143,152,145,146,11,153,13,144,154,145,155,147,146,156,148,147,157,149,150,156,158,151,157,159,150,160,137,151,161,138,137,162,139,138,163,140,139,164,141,142,163,165,143,164,166,142,154,144,159,167,161,162,168,169,163,167,170,162,171,164,163,172,165,166,171,173,165,174,154,166,175,152,153,11,176,13,154,174,155,175,177,153,178,156,155,179,157,156,180,158,159,179,181,158,168,160,176,11,182,13,174,183,175,184,177,176,185,178,177,186,179,178,187,180,179,188,181,180,189,168,181,190,167,168,191,169,170,190,192,169,193,171,170,194,172,173,193,195,174,194,183,173,196,175,191,197,198,192,199,200,191,201,193,192,202,194,195,201,203,183,202,204,195,205,196,182,11,206,13,183,204,184,205,207,182,208,185,184,209,186,185,210,187,188,209,211,189,210,197,188,199,190,205,212,207,206,213,208,207,214,209,210,213,215,211,214,216,210,217,197,211,218,199,197,219,198,200,218,220,198,221,201,200,222,202,203,221,223,202,224,204,203,225,205,206,11,226,13,204,224,218,227,220,219,228,221,220,229,222,223,228,230,224,229,231,223,232,225,226,11,233,13,224,231,225,234,212,226,235,213,212,236,214,213,237,215,216,236,238,215,239,217,216,240,218,217,241,219,234,242,236,237,243,244,238,242,245,239,244,246,238,247,240,239,248,241,227,247,249,241,250,228,227,251,229,230,250,252,231,251,253,230,254,232,233,11,255,13,231,253,232,256,234,233,243,235,0,30,1,3,31,4,2,1,6,5,4,8,9,8,14,10,12,16,18,15,14,20,17,16,18,19,22,20,21,24,26,23,22,25,24,28,26,27,30,29,28,31,27,45,32,28,46,33,30,32,34,31,33,35,1,34,36,4,35,37,14,8,37,12,38,40,19,14,39,16,40,42,19,41,43,21,42,44,27,22,43,24,44,46,38,60,47,39,61,48,40,47,49,43,41,48,42,49,51,45,43,50,44,51,53,45,52,54,46,53,55,32,54,56,35,33,55,34,56,58,35,57,59,37,59,61,53,75,62,54,76,63,55,62,64,56,63,65,59,57,64,59,66,68,60,67,69,61,68,70,47,69,71,50,48,70,49,71,73,50,72,74,51,73,75,52,74,76,68,90,77,69,91,78,72,70,77,71,78,80,72,79,81,75,73,80,76,74,81,75,82,84,63,76,83,62,84,86,63,85,87,66,64,86,66,88,90,67,89,91,85,83,92,86,84,94,85,93,96,86,95,97,88,97,99,89,98,100,90,99,101,91,100,102,79,77,101,78,102,104,81,79,103,82,80,104,81,105,92,82,106,94,103,101,107,104,102,109,105,103,108,104,110,112,105,111,113,106,112,114,92,113,115,95,94,114,96,93,115,95,116,118,97,118,120,98,119,121,99,120,107,100,121,109,117,115,122,116,136,124,120,118,124,119,125,127,120,126,128,121,127,129,108,107,128,109,129,131,108,130,132,110,131,133,113,111,132,112,133,135,115,113,134,116,114,135,129,150,137,130,151,138,133,131,137,134,132,138,133,139,141,134,140,142,136,135,141,123,122,142,136,143,145,124,145,147,127,125,146,126,147,149,127,148,150,130,128,149,143,166,152,145,152,155,146,153,156,147,155,157,150,148,156,151,149,157,150,158,160,151,159,161,137,160,162,138,161,163,139,162,164,142,140,163,143,141,164,142,165,154,159,181,167,162,160,168,163,161,167,162,169,171,163,170,172,166,164,171,165,172,174,166,173,175,155,152,175,153,176,178,155,177,179,156,178,180,159,157,179,158,180,168,175,196,184,176,182,185,177,184,186,178,185,187,179,186,188,180,187,189,181,188,190,168,189,191,170,167,190,169,191,193,170,192,194,173,171,193,174,172,194,173,195,196,191,189,197,192,190,199,191,198,201,192,200,202,195,193,201,183,194,202,195,203,205,184,196,205,182,206,208,184,207,209,185,208,210,188,186,209,189,187,210,188,211,199,205,225,212,206,226,213,207,212,214,210,208,213,211,209,214,210,215,217,211,216,218,197,217,219,200,199,218,198,219,221,200,220,222,203,201,221,202,222,224,203,223,225,218,240,227,219,241,228,220,227,229,223,221,228,224,222,229,223,230,232,225,232,234,226,233,235,212,234,236,213,235,237,216,214,236,215,237,239,216,238,240,217,239,241,234,256,242,237,235,243,238,236,242,239,237,244,238,245,247,239,246,248,227,240,247,241,248,250,227,249,251,230,228,250,231,229,251,230,252,254,232,254,256,233,255,243 @@ -21,8 +14,6 @@ export class Hemisphere { this.subMeshes = [ new SubMesh( 0, 1440) ]; - this.itemSize = 3; - this.primitive = 'TRIANGLES'; } } diff --git a/src/ts/geometry/line.ts b/src/ts/geometry/line.ts index baaec19..16c8481 100644 --- a/src/ts/geometry/line.ts +++ b/src/ts/geometry/line.ts @@ -2,14 +2,14 @@ import { SubMesh } from './subMesh'; export class Line { - vertices : Array; + vertices : number[]; thickness : number; - subMeshes : Array; + subMeshes : SubMesh[]; itemSize : number; - nbSubMeshes : number; + // nbSubMeshes : number; primitive : string; - constructor(vertices: Array, thickness:number) { + constructor(vertices: number[], thickness:number) { this.thickness = thickness ? thickness * 0.5 : 1.0; this.vertices = vertices; diff --git a/src/ts/geometry/multiQuad.ts b/src/ts/geometry/multiQuad.ts index 7a913d6..c9ccc48 100644 --- a/src/ts/geometry/multiQuad.ts +++ b/src/ts/geometry/multiQuad.ts @@ -1,4 +1,4 @@ - +import { BasicMesh } from './basic'; import { SubMesh } from './subMesh'; export interface IQuad { @@ -7,19 +7,13 @@ export interface IQuad { uvs : Float32Array; } -export class MultiQuad { - - vertices : Array; - indices : Array; - uvs : Array; - subMeshes : Array; - itemSize : number; - nbSubMeshes : number; - primitive : string; +export class MultiQuad extends BasicMesh{ - quad : IQuad; + uvs : number[]; + quad : IQuad; - constructor(width: number, height: number, quantity: number) { + constructor(width: number, height: number/*, quantity: number*/) { + super(); width = width ? width * 0.5 : 1.0; height = height ? height * 0.5 : 1.0; @@ -46,11 +40,9 @@ export class MultiQuad { this.subMeshes = [ new SubMesh( 0, 4) ]; - this.itemSize = 3; - this.primitive = 'TRIANGLE'; } - private createQuads(length: number): void { + public createQuads(length: number): void { for (var i = 0 ; i < length ; i++) { this.vertices.push.apply(this.vertices, this.quad.vertices); this.indices.push.apply(this.indices, this.createIndices(i)); @@ -59,8 +51,8 @@ export class MultiQuad { } - private createIndices(quadIndex: number): Array { - var indices = []; + private createIndices(quadIndex: number): number[] { + var indices: number[] = []; for(var i = 0 ; i < 6 ; i++) { indices.push(this.quad.indices[i] + quadIndex * 4); } diff --git a/src/ts/geometry/quad.ts b/src/ts/geometry/quad.ts index 64b14ae..c44ef96 100644 --- a/src/ts/geometry/quad.ts +++ b/src/ts/geometry/quad.ts @@ -1,16 +1,17 @@ - +import { BasicMesh } from './basic'; import { SubMesh } from './subMesh'; -export class Quad { +export class Quad extends BasicMesh { - vertices : Array; - uvs : Array; - subMeshes : Array; + vertices : number[]; + uvs : number[]; + subMeshes : SubMesh[]; itemSize : number; - nbSubMeshes : number; + // nbSubMeshes : number; primitive : string; constructor(width: number, height: number) { + super(); width = width ? width * 0.5 : 1.0; height = height ? height * 0.5 : 1.0; // this.vertices = [ 1.0,-1.0, 0.0, diff --git a/src/ts/geometry/sphere.ts b/src/ts/geometry/sphere.ts index ec211e4..c8fa932 100644 --- a/src/ts/geometry/sphere.ts +++ b/src/ts/geometry/sphere.ts @@ -1,18 +1,11 @@ - - +import { BasicMesh } from './basic'; import { SubMesh } from './subMesh'; -export class Sphere { +export class Sphere extends BasicMesh { - vertices : Array; - indices : Array; - normals : Array; - subMeshes : Array; - itemSize : number; - nbSubMeshes : number; - primitive : string; constructor() { + super(); this.vertices = [ -0.7071,-0.7071,0,-0.5449,-0.8315,0.1084,-0.5556,-0.8315,0,-0.8315,0.5556,0,-0.9061,0.3827,0.1802,-0.9239,0.3827,0,-0.3753,-0.9239,0.0747,-0.3827,-0.9239,0,-0.9619,0.1951,0.1913,-0.9808,0.1951,0,-0.1913,-0.9808,0.0381,-0.1951,-0.9808,0,-0.9808,0,0.1951,-1,0,0,-0.1951,0.9808,0,0,1,0,-0.1913,0.9808,0.0381,0,-1,0,-0.9619,-0.1951,0.1913,-0.9808,-0.1951,0,-0.3753,0.9239,0.0747,-0.3827,0.9239,0,-0.9239,-0.3827,0,-0.9061,-0.3827,0.1802,-0.5556,0.8315,0,-0.5449,0.8315,0.1084,-0.8155,-0.5556,0.1622,-0.8315,-0.5556,0,-0.6935,0.7071,0.1379,-0.7071,0.7071,0,-0.6935,-0.7071,0.1379,-0.8155,0.5556,0.1622,-0.7682,-0.5556,0.3182,-0.6533,-0.7071,0.2706,-0.7682,0.5556,0.3182,-0.5133,-0.8315,0.2126,-0.8536,0.3827,0.3536,-0.3536,-0.9239,0.1464,-0.9061,0.1951,0.3753,-0.1802,-0.9808,0.0747,-0.9239,0,0.3827,-0.1802,0.9808,0.0747,-0.9061,-0.1951,0.3753,-0.3536,0.9239,0.1464,-0.8536,-0.3827,0.3536,-0.5133,0.8315,0.2126,-0.6533,0.7071,0.2706,-0.1622,0.9808,0.1084,-0.1622,-0.9808,0.1084,-0.8155,-0.1951,0.5449,-0.3182,0.9239,0.2126,-0.7682,-0.3827,0.5133,-0.4619,0.8315,0.3087,-0.6913,-0.5556,0.4619,-0.5879,0.7071,0.3928,-0.5879,-0.7071,0.3928,-0.6913,0.5556,0.4619,-0.4619,-0.8315,0.3087,-0.7682,0.3827,0.5133,-0.3182,-0.9239,0.2126,-0.8155,0.1951,0.5449,-0.8315,0,0.5556,-0.5879,0.5556,0.5879,-0.3928,-0.8315,0.3928,-0.6533,0.3827,0.6533,-0.2706,-0.9239,0.2706,-0.6935,0.1951,0.6935,-0.1379,-0.9808,0.1379,-0.7071,0,0.7071,-0.1379,0.9808,0.1379,-0.6935,-0.1951,0.6935,-0.2706,0.9239,0.2706,-0.6533,-0.3827,0.6533,-0.3928,0.8315,0.3928,-0.5879,-0.5556,0.5879,-0.5,0.7071,0.5,-0.5,-0.7071,0.5,-0.5449,-0.1951,0.8155,-0.2126,0.9239,0.3182,-0.5133,-0.3827,0.7682,-0.3087,0.8315,0.4619,-0.4619,-0.5556,0.6913,-0.3928,0.7071,0.5879,-0.3928,-0.7071,0.5879,-0.4619,0.5556,0.6913,-0.3087,-0.8315,0.4619,-0.5133,0.3827,0.7682,-0.2126,-0.9239,0.3182,-0.5449,0.1951,0.8155,-0.1084,-0.9808,0.1622,-0.5556,0,0.8315,-0.1084,0.9808,0.1622,-0.2126,-0.8315,0.5133,-0.3536,0.3827,0.8536,-0.1464,-0.9239,0.3536,-0.3753,0.1951,0.9061,-0.0747,-0.9808,0.1802,-0.3827,0,0.9239,-0.0747,0.9808,0.1802,-0.3753,-0.1951,0.9061,-0.1464,0.9239,0.3536,-0.3536,-0.3827,0.8536,-0.2126,0.8315,0.5133,-0.3182,-0.5556,0.7682,-0.2706,0.7071,0.6533,-0.2706,-0.7071,0.6533,-0.3182,0.5556,0.7682,-0.1802,-0.3827,0.9061,-0.1084,0.8315,0.5449,-0.1622,-0.5556,0.8155,-0.1379,0.7071,0.6935,-0.1379,-0.7071,0.6935,-0.1622,0.5556,0.8155,-0.1084,-0.8315,0.5449,-0.1802,0.3827,0.9061,-0.0747,-0.9239,0.3753,-0.1913,0.1951,0.9619,-0.0381,-0.9808,0.1913,-0.1951,0,0.9808,-0.0381,0.9808,0.1913,-0.1913,-0.1951,0.9619,-0.0747,0.9239,0.3753,0,-0.8315,0.5556,0,-0.9239,0.3827,0,0.3827,0.9239,0,0.1951,0.9808,0,-0.9808,0.1951,0,0,1,0,0.9808,0.1951,0,-0.1951,0.9808,0,0.9239,0.3827,0,-0.3827,0.9239,0,0.8315,0.5556,0,-0.5556,0.8315,0,0.7071,0.7071,0,-0.7071,0.7071,0,0.5556,0.8315,0.1084,0.8315,0.5449,0.1802,-0.3827,0.9061,0.1622,-0.5556,0.8155,0.138,0.7071,0.6935,0.138,-0.7071,0.6935,0.1622,0.5556,0.8155,0.1084,-0.8315,0.5449,0.1802,0.3827,0.9061,0.0747,-0.9239,0.3753,0.1913,0.1951,0.9619,0.0381,-0.9808,0.1913,0.1951,0,0.9808,0.0381,0.9808,0.1913,0.1913,-0.1951,0.9619,0.0747,0.9239,0.3753,0.3536,0.3827,0.8536,0.3753,0.1951,0.9061,0.0747,-0.9808,0.1802,0.3827,0,0.9239,0.0747,0.9808,0.1802,0.3753,-0.1951,0.9061,0.1464,0.9239,0.3536,0.3536,-0.3827,0.8536,0.2126,0.8315,0.5133,0.3182,-0.5556,0.7682,0.2706,0.7071,0.6533,0.2706,-0.7071,0.6533,0.3182,0.5556,0.7682,0.2126,-0.8315,0.5133,0.1464,-0.9239,0.3536,0.5133,-0.3827,0.7682,0.4619,-0.5556,0.6913,0.3928,0.7071,0.5879,0.3928,-0.7071,0.5879,0.4619,0.5556,0.6913,0.3087,-0.8315,0.4619,0.5133,0.3827,0.7682,0.2126,-0.9239,0.3182,0.5449,0.1951,0.8155,0.1084,-0.9808,0.1622,0.5556,0,0.8315,0.1084,0.9808,0.1622,0.5449,-0.1951,0.8155,0.2126,0.9239,0.3182,0.3087,0.8315,0.4619,0.2706,-0.9239,0.2706,0.138,-0.9808,0.1379,0.7071,0,0.7071,0.138,0.9808,0.1379,0.6935,-0.1951,0.6935,0.2706,0.9239,0.2706,0.6533,-0.3827,0.6533,0.3928,0.8315,0.3928,0.5879,-0.5556,0.5879,0.5,0.7071,0.5,0.5,-0.7071,0.5,0.5879,0.5556,0.5879,0.3928,-0.8315,0.3928,0.6533,0.3827,0.6533,0.6935,0.1951,0.6935,0.4619,0.8315,0.3087,0.5879,0.7071,0.3928,0.5879,-0.7071,0.3928,0.6913,0.5556,0.4619,0.4619,-0.8315,0.3087,0.7682,0.3827,0.5133,0.3182,-0.9239,0.2126,0.8155,0.1951,0.5449,0.1622,-0.9808,0.1084,0.8315,0,0.5556,0.1622,0.9808,0.1084,0.8155,-0.1951,0.5449,0.3182,0.9239,0.2126,0.7682,-0.3827,0.5133,0.6913,-0.5556,0.4619,0.9239,0,0.3827,0.1802,0.9808,0.0747,0.1802,-0.9808,0.0747,0.9061,-0.1951,0.3753,0.3536,0.9239,0.1464,0.8536,-0.3827,0.3536,0.5133,0.8315,0.2126,0.7682,-0.5556,0.3182,0.6533,0.7071,0.2706,0.6533,-0.7071,0.2706,0.7682,0.5556,0.3182,0.5133,-0.8315,0.2126,0.8536,0.3827,0.3536,0.3536,-0.9239,0.1464,0.9061,0.1951,0.3753,0.6935,-0.7071,0.1379,0.8155,0.5556,0.1622,0.5449,-0.8315,0.1084,0.9061,0.3827,0.1802,0.3753,-0.9239,0.0747,0.9619,0.1951,0.1913,0.1913,-0.9808,0.0381,0.9808,0,0.1951,0.1913,0.9808,0.0381,0.9619,-0.1951,0.1913,0.3753,0.9239,0.0747,0.9061,-0.3827,0.1802,0.5449,0.8315,0.1084,0.8155,-0.5556,0.1622,0.6935,0.7071,0.1379,0.1951,-0.9808,0,0.9808,-0.1951,0,0.3827,0.9239,0,0.9239,-0.3827,0,0.5556,0.8315,0,0.8315,-0.5556,0,0.7071,0.7071,0,0.7071,-0.7071,0,0.8315,0.5556,0,0.5556,-0.8315,0,0.9239,0.3827,0,0.3827,-0.9239,0,0.9808,0.1951,0,1,0,0,0.1951,0.9808,0,0.5449,-0.8315,-0.1084,0.9061,0.3827,-0.1802,0.3753,-0.9239,-0.0747,0.9619,0.1951,-0.1913,0.1913,-0.9808,-0.0381,0.9808,0,-0.1951,0.1913,0.9808,-0.0381,0.9619,-0.1951,-0.1913,0.3753,0.9239,-0.0747,0.9061,-0.3827,-0.1802,0.5449,0.8315,-0.1084,0.8155,-0.5556,-0.1622,0.6935,0.7071,-0.1379,0.6935,-0.7071,-0.1379,0.8155,0.5556,-0.1622,0.3536,0.9239,-0.1464,0.8536,-0.3827,-0.3536,0.5133,0.8315,-0.2126,0.7682,-0.5556,-0.3182,0.6533,0.7071,-0.2706,0.6533,-0.7071,-0.2706,0.7682,0.5556,-0.3182,0.5133,-0.8315,-0.2126,0.8536,0.3827,-0.3536,0.3536,-0.9239,-0.1464,0.9061,0.1951,-0.3753,0.1802,-0.9808,-0.0747,0.9239,0,-0.3827,0.1802,0.9808,-0.0747,0.9061,-0.1951,-0.3753,0.7682,0.3827,-0.5133,0.3182,-0.9239,-0.2126,0.8155,0.1951,-0.5449,0.1622,-0.9808,-0.1084,0.8315,0,-0.5556,0.1622,0.9808,-0.1084,0.8155,-0.1951,-0.5449,0.3182,0.9239,-0.2126,0.7682,-0.3827,-0.5133,0.4619,0.8315,-0.3087,0.6913,-0.5556,-0.4619,0.5879,0.7071,-0.3928,0.5879,-0.7071,-0.3928,0.6913,0.5556,-0.4619,0.4619,-0.8315,-0.3087,0.6533,-0.3827,-0.6533,0.3928,0.8315,-0.3928,0.5879,-0.5556,-0.5879,0.5,0.7071,-0.5,0.5,-0.7071,-0.5,0.5879,0.5556,-0.5879,0.3928,-0.8315,-0.3928,0.6533,0.3827,-0.6533,0.2706,-0.9239,-0.2706,0.6935,0.1951,-0.6935,0.1379,-0.9808,-0.1379,0.7071,0,-0.7071,0.138,0.9808,-0.1379,0.6935,-0.1951,-0.6935,0.2706,0.9239,-0.2706,0.3087,-0.8315,-0.4619,0.2126,-0.9239,-0.3182,0.5133,0.3827,-0.7682,0.5449,0.1951,-0.8155,0.1084,-0.9808,-0.1622,0.5556,0,-0.8315,0.1084,0.9808,-0.1622,0.5449,-0.1951,-0.8155,0.2126,0.9239,-0.3182,0.5133,-0.3827,-0.7682,0.3087,0.8315,-0.4619,0.4619,-0.5556,-0.6913,0.3928,0.7071,-0.5879,0.3928,-0.7071,-0.5879,0.4619,0.5556,-0.6913,0.2126,0.8315,-0.5133,0.3536,-0.3827,-0.8536,0.3182,-0.5556,-0.7682,0.2706,0.7071,-0.6533,0.2706,-0.7071,-0.6533,0.3182,0.5556,-0.7682,0.2126,-0.8315,-0.5133,0.3536,0.3827,-0.8536,0.1464,-0.9239,-0.3536,0.3753,0.1951,-0.9061,0.0747,-0.9808,-0.1802,0.3827,0,-0.9239,0.0747,0.9808,-0.1802,0.3753,-0.1951,-0.9061,0.1464,0.9239,-0.3536,0.1802,0.3827,-0.9061,0.1913,0.1951,-0.9619,0.0381,-0.9808,-0.1913,0.1951,0,-0.9808,0.0381,0.9808,-0.1913,0.1913,-0.1951,-0.9619,0.0747,0.9239,-0.3753,0.1802,-0.3827,-0.9061,0.1084,0.8315,-0.5449,0.1622,-0.5556,-0.8155,0.1379,0.7071,-0.6935,0.1379,-0.7071,-0.6935,0.1622,0.5556,-0.8155,0.1084,-0.8315,-0.5449,0.0747,-0.9239,-0.3753,0,-0.3827,-0.9239,0,-0.5556,-0.8315,0,0.8315,-0.5556,0,0.7071,-0.7071,0,-0.7071,-0.7071,0,0.5556,-0.8315,0,-0.8315,-0.5556,0,0.3827,-0.9239,0,-0.9239,-0.3827,0,0.1951,-0.9808,0,-0.9808,-0.1951,0,0,-1,0,0.9808,-0.1951,0,-0.1951,-0.9808,0,0.9239,-0.3827,-0.0381,-0.9808,-0.1913,-0.1951,0,-0.9808,-0.0381,0.9808,-0.1913,-0.1913,-0.1951,-0.9619,-0.0747,0.9239,-0.3753,-0.1802,-0.3827,-0.9061,-0.1084,0.8315,-0.5449,-0.1622,-0.5556,-0.8155,-0.1379,0.7071,-0.6935,-0.1379,-0.7071,-0.6935,-0.1622,0.5556,-0.8155,-0.1084,-0.8315,-0.5449,-0.1802,0.3827,-0.9061,-0.0747,-0.9239,-0.3753,-0.1913,0.1951,-0.9619,-0.2706,-0.7071,-0.6533,-0.3182,0.5556,-0.7682,-0.2126,-0.8315,-0.5133,-0.3536,0.3827,-0.8536,-0.1464,-0.9239,-0.3536,-0.3753,0.1951,-0.9061,-0.0747,-0.9808,-0.1802,-0.3827,0,-0.9239,-0.0747,0.9808,-0.1802,-0.3753,-0.1951,-0.9061,-0.1464,0.9239,-0.3536,-0.3536,-0.3827,-0.8536,-0.2126,0.8315,-0.5133,-0.3182,-0.5556,-0.7682,-0.2706,0.7071,-0.6533,-0.1084,0.9808,-0.1622,-0.1084,-0.9808,-0.1622,-0.5556,0,-0.8315,-0.5449,-0.1951,-0.8155,-0.2126,0.9239,-0.3182,-0.5133,-0.3827,-0.7682,-0.3087,0.8315,-0.4619,-0.4619,-0.5556,-0.6913,-0.3928,0.7071,-0.5879,-0.3928,-0.7071,-0.5879,-0.4619,0.5556,-0.6913,-0.3087,-0.8315,-0.4619,-0.5133,0.3827,-0.7682,-0.2126,-0.9239,-0.3182,-0.5449,0.1951,-0.8155,-0.5,0.7071,-0.5,-0.5879,0.5556,-0.5879,-0.3928,-0.8315,-0.3928,-0.6533,0.3827,-0.6533,-0.2706,-0.9239,-0.2706,-0.6935,0.1951,-0.6935,-0.1379,-0.9808,-0.1379,-0.7071,0,-0.7071,-0.1379,0.9808,-0.1379,-0.6935,-0.1951,-0.6935,-0.2706,0.9239,-0.2706,-0.6533,-0.3827,-0.6533,-0.3928,0.8315,-0.3928,-0.5879,-0.5556,-0.5879,-0.5,-0.7071,-0.5,-0.8155,-0.1951,-0.5449,-0.3182,0.9239,-0.2126,-0.7682,-0.3827,-0.5133,-0.4619,0.8315,-0.3087,-0.6913,-0.5556,-0.4619,-0.5879,0.7071,-0.3928,-0.5879,-0.7071,-0.3928,-0.6913,0.5556,-0.4619,-0.4619,-0.8315,-0.3087,-0.7682,0.3827,-0.5133,-0.3182,-0.9239,-0.2126,-0.8155,0.1951,-0.5449,-0.1622,-0.9808,-0.1084,-0.8315,0,-0.5556,-0.1622,0.9808,-0.1084,-0.5133,-0.8315,-0.2126,-0.8536,0.3827,-0.3536,-0.3536,-0.9239,-0.1464,-0.9061,0.1951,-0.3753,-0.1802,-0.9808,-0.0747,-0.9239,0,-0.3827,-0.1802,0.9808,-0.0747,-0.9061,-0.1951,-0.3753,-0.3536,0.9239,-0.1464,-0.8536,-0.3827,-0.3536,-0.5133,0.8315,-0.2126,-0.7682,-0.5556,-0.3182,-0.6533,0.7071,-0.2706,-0.6533,-0.7071,-0.2706,-0.7682,0.5556,-0.3182,-0.3753,0.9239,-0.0747,-0.9061,-0.3827,-0.1802,-0.5449,0.8315,-0.1084,-0.8155,-0.5556,-0.1622,-0.6935,0.7071,-0.1379,-0.6935,-0.7071,-0.1379,-0.8155,0.5556,-0.1622,-0.5449,-0.8315,-0.1084,-0.9061,0.3827,-0.1802,-0.3753,-0.9239,-0.0747,-0.9619,0.1951,-0.1913,-0.1913,-0.9808,-0.0381,-0.9808,0,-0.1951,-0.1913,0.9808,-0.0381,-0.9619,-0.1951,-0.1913 ]; this.indices = [ 0,1,2,3,4,5,2,6,7,5,8,9,7,10,11,9,12,13,14,15,16,17,11,10,13,18,19,14,20,21,22,18,23,24,20,25,22,26,27,24,28,29,0,26,30,29,31,3,30,32,33,28,34,31,30,35,1,31,36,4,1,37,6,4,38,8,6,39,10,8,40,12,16,15,41,17,10,39,18,40,42,16,43,20,23,42,44,20,45,25,23,32,26,25,46,28,41,15,47,17,39,48,40,49,42,41,50,43,42,51,44,43,52,45,32,51,53,45,54,46,33,53,55,46,56,34,33,57,35,34,58,36,35,59,37,38,58,60,37,48,39,38,61,40,54,62,56,55,63,57,56,64,58,57,65,59,58,66,60,59,67,48,61,66,68,47,15,69,17,48,67,61,70,49,47,71,50,49,72,51,50,73,52,53,72,74,52,75,54,53,76,55,68,77,70,69,78,71,70,79,72,71,80,73,74,79,81,73,82,75,74,83,76,62,82,84,63,83,85,62,86,64,65,85,87,64,88,66,65,89,67,68,88,90,69,15,91,17,67,89,83,92,85,84,93,86,87,92,94,88,93,95,87,96,89,88,97,90,91,15,98,17,89,96,90,99,77,91,100,78,77,101,79,78,102,80,81,101,103,80,104,82,83,103,105,84,104,106,99,107,101,100,108,102,103,107,109,104,108,110,105,109,111,104,112,106,105,113,92,106,114,93,92,115,94,95,114,116,96,115,117,95,118,97,98,15,119,17,96,117,97,120,99,98,121,100,115,122,123,116,124,125,117,123,126,116,127,118,119,15,128,17,117,126,120,127,129,119,130,121,120,131,107,121,132,108,109,131,133,108,134,110,109,135,111,110,136,112,113,135,122,112,124,114,130,137,132,133,138,139,132,140,134,133,141,135,136,140,142,122,141,143,136,144,124,122,145,123,125,144,146,126,145,147,125,148,127,128,15,149,17,126,147,127,150,129,130,149,151,129,138,131,146,152,153,145,154,147,146,155,148,149,15,156,17,147,154,148,157,150,149,158,151,150,159,138,137,158,160,139,159,161,137,162,140,139,163,141,140,164,142,141,165,143,142,152,144,145,165,166,161,167,168,160,169,162,161,170,163,164,169,171,165,170,172,164,173,152,165,174,166,153,173,175,166,176,154,153,177,155,156,15,178,17,154,176,157,177,179,156,180,158,157,167,159,158,181,160,176,182,183,175,184,177,178,15,185,17,176,183,177,186,179,178,187,180,179,188,167,180,189,181,167,190,168,181,191,169,168,192,170,169,193,171,172,192,194,171,195,173,172,182,174,175,195,196,191,197,198,190,199,192,193,198,200,194,199,201,193,202,195,194,203,182,196,202,204,183,203,205,196,206,184,185,15,207,17,183,205,186,206,208,185,209,187,186,210,188,187,197,189,190,210,211,204,212,206,207,15,213,17,205,214,206,215,208,207,216,209,208,217,210,197,216,218,211,217,219,197,220,198,211,221,199,198,222,200,201,221,223,200,224,202,201,225,203,204,224,226,203,214,205,219,227,221,220,228,222,221,229,223,222,230,224,223,231,225,226,230,232,214,231,233,226,234,212,213,15,235,17,214,233,212,236,215,213,237,216,215,238,217,216,239,218,219,238,240,218,241,220,17,233,242,234,243,236,235,244,237,236,245,238,239,244,246,240,245,247,241,246,248,240,249,227,241,250,228,229,249,251,228,252,230,229,253,231,232,252,254,233,253,242,232,255,234,235,15,256,249,257,251,250,258,252,251,259,253,254,258,260,253,261,242,254,262,255,256,15,263,17,242,261,255,264,243,256,265,244,243,266,245,244,267,246,247,266,268,248,267,269,247,270,249,250,269,271,263,272,265,264,273,266,265,274,267,268,273,275,269,274,276,268,277,270,271,276,278,270,279,257,271,280,258,259,279,281,260,280,282,261,281,283,260,284,262,263,15,285,17,261,283,264,284,286,278,287,280,279,288,281,282,287,289,283,288,290,282,291,284,285,15,292,17,283,290,284,293,286,285,294,272,286,295,273,272,296,274,275,295,297,274,298,276,275,299,277,278,298,300,279,299,301,293,302,295,294,303,296,297,302,304,298,303,305,297,306,299,300,305,307,299,308,301,300,309,287,301,310,288,289,309,311,288,312,290,291,311,313,292,15,314,17,290,312,291,315,293,292,316,294,310,317,318,311,319,320,310,321,312,311,322,313,314,15,323,17,312,321,313,324,315,314,325,316,315,326,302,316,327,303,304,326,328,305,327,329,304,330,306,307,329,331,306,317,308,307,319,309,325,332,327,328,333,334,329,332,335,330,334,336,331,335,337,330,338,317,331,339,319,318,338,340,320,339,341,321,340,342,320,343,322,323,15,344,17,321,342,322,345,324,323,346,325,324,333,326,341,347,348,340,349,342,341,350,343,344,15,351,17,342,349,343,352,345,346,351,353,345,354,333,346,355,332,334,354,356,335,355,357,334,358,336,337,357,359,336,360,338,337,347,339,340,360,361,356,362,363,357,364,365,356,366,358,357,367,359,360,366,368,359,369,347,361,368,370,348,369,371,361,372,349,348,373,350,351,15,374,17,349,372,352,373,375,353,374,376,352,362,354,353,364,355,370,377,372,371,378,373,374,15,379,17,372,377,375,378,380,376,379,381,375,382,362,376,383,364,363,382,384,365,383,385,363,386,366,367,385,387,366,388,368,367,389,369,370,388,390,371,389,391,384,392,386,385,393,387,386,394,388,387,395,389,390,394,396,391,395,397,390,398,377,391,399,378,379,15,400,17,377,398,378,401,380,379,402,381,380,403,382,381,404,383,384,403,405,385,404,406,400,15,407,17,398,408,401,409,410,400,411,402,401,412,403,404,411,413,405,412,414,406,413,415,405,416,392,393,415,417,392,418,394,393,419,395,396,418,420,397,419,421,396,408,398,397,409,399,417,422,423,416,424,418,417,425,419,418,426,420,421,425,427,420,428,408,421,429,409,407,15,430,17,408,428,410,429,431,407,432,411,410,433,412,411,434,413,414,433,435,413,422,415,414,436,416,429,437,431,430,438,432,431,439,433,432,440,434,435,439,441,434,442,422,435,443,436,423,442,444,424,443,445,423,446,425,424,447,426,427,446,448,426,449,428,429,448,450,430,15,451,17,428,449,443,452,445,444,453,446,445,454,447,448,453,455,447,456,449,448,457,450,451,15,458,17,449,456,450,459,437,438,458,460,437,461,439,440,460,462,441,461,463,442,462,464,441,465,443,444,464,466,458,467,460,459,468,461,460,469,462,463,468,470,462,471,464,463,472,465,466,471,473,465,474,452,466,475,453,452,476,454,455,475,477,456,476,478,455,479,457,458,15,480,17,456,478,457,481,459,475,3,5,474,7,476,477,5,9,476,11,478,479,9,13,480,15,14,17,478,11,479,19,481,467,14,21,481,22,468,469,21,24,468,27,470,471,24,29,470,0,472,473,29,3,472,2,474,0,30,1,3,31,4,2,1,6,5,4,8,7,6,10,9,8,12,13,12,18,14,16,20,22,19,18,24,21,20,22,23,26,24,25,28,0,27,26,29,28,31,30,26,32,28,46,34,30,33,35,31,34,36,1,35,37,4,36,38,6,37,39,8,38,40,18,12,40,16,41,43,23,18,42,20,43,45,23,44,32,25,45,46,40,61,49,41,47,50,42,49,51,43,50,52,32,44,51,45,52,54,33,32,53,46,54,56,33,55,57,34,56,58,35,57,59,38,36,58,37,59,48,38,60,61,54,75,62,55,76,63,56,62,64,57,63,65,58,64,66,59,65,67,61,60,66,61,68,70,47,69,71,49,70,72,50,71,73,53,51,72,52,73,75,53,74,76,68,90,77,69,91,78,70,77,79,71,78,80,74,72,79,73,80,82,74,81,83,62,75,82,63,76,83,62,84,86,65,63,85,64,86,88,65,87,89,68,66,88,83,105,92,84,106,93,87,85,92,88,86,93,87,94,96,88,95,97,90,97,99,91,98,100,77,99,101,78,100,102,81,79,101,80,102,104,83,81,103,84,82,104,99,120,107,100,121,108,103,101,107,104,102,108,105,103,109,104,110,112,105,111,113,106,112,114,92,113,115,95,93,114,96,94,115,95,116,118,97,118,120,98,119,121,115,113,122,116,114,124,117,115,123,116,125,127,120,118,127,119,128,130,120,129,131,121,130,132,109,107,131,108,132,134,109,133,135,110,134,136,113,111,135,112,136,124,130,151,137,133,131,138,132,137,140,133,139,141,136,134,140,122,135,141,136,142,144,122,143,145,125,124,144,126,123,145,125,146,148,127,148,150,130,128,149,129,150,138,146,144,152,145,166,154,146,153,155,148,155,157,149,156,158,150,157,159,137,151,158,139,138,159,137,160,162,139,161,163,140,162,164,141,163,165,142,164,152,145,143,165,161,159,167,160,181,169,161,168,170,164,162,169,165,163,170,164,171,173,165,172,174,153,152,173,166,174,176,153,175,177,157,155,177,156,178,180,157,179,167,158,180,181,176,174,182,175,196,184,177,184,186,178,185,187,179,186,188,180,187,189,167,188,190,181,189,191,168,190,192,169,191,193,172,170,192,171,193,195,172,194,182,175,173,195,191,189,197,190,211,199,193,191,198,194,192,199,193,200,202,194,201,203,196,195,202,183,182,203,196,204,206,186,184,206,185,207,209,186,208,210,187,209,197,190,188,210,204,226,212,206,212,215,207,213,216,208,215,217,197,209,216,211,210,217,197,218,220,211,219,221,198,220,222,201,199,221,200,222,224,201,223,225,204,202,224,203,225,214,219,240,227,220,241,228,221,227,229,222,228,230,223,229,231,226,224,230,214,225,231,226,232,234,212,234,236,213,235,237,215,236,238,216,237,239,219,217,238,218,239,241,234,255,243,235,256,244,236,243,245,239,237,244,240,238,245,241,239,246,240,247,249,241,248,250,229,227,249,228,250,252,229,251,253,232,230,252,233,231,253,232,254,255,249,270,257,250,271,258,251,257,259,254,252,258,253,259,261,254,260,262,255,262,264,256,263,265,243,264,266,244,265,267,247,245,266,248,246,267,247,268,270,250,248,269,263,285,272,264,286,273,265,272,274,268,266,273,269,267,274,268,275,277,271,269,276,270,277,279,271,278,280,259,257,279,260,258,280,261,259,281,260,282,284,264,262,284,278,300,287,279,301,288,282,280,287,283,281,288,282,289,291,284,291,293,285,292,294,286,293,295,272,294,296,275,273,295,274,296,298,275,297,299,278,276,298,279,277,299,293,315,302,294,316,303,297,295,302,298,296,303,297,304,306,300,298,305,299,306,308,300,307,309,301,308,310,289,287,309,288,310,312,291,289,311,291,313,315,292,314,316,310,308,317,311,309,319,310,318,321,311,320,322,313,322,324,314,323,325,315,324,326,316,325,327,304,302,326,305,303,327,304,328,330,307,305,329,306,330,317,307,331,319,325,346,332,328,326,333,329,327,332,330,328,334,331,329,335,330,336,338,331,337,339,318,317,338,320,319,339,321,318,340,320,341,343,322,343,345,323,344,346,324,345,333,341,339,347,340,361,349,341,348,350,343,350,352,346,344,351,345,352,354,346,353,355,334,333,354,335,332,355,334,356,358,337,335,357,336,358,360,337,359,347,340,338,360,356,354,362,357,355,364,356,363,366,357,365,367,360,358,366,359,367,369,361,360,368,348,347,369,361,370,372,348,371,373,352,350,373,353,351,374,352,375,362,353,376,364,370,390,377,371,391,378,375,373,378,376,374,379,375,380,382,376,381,383,363,362,382,365,364,383,363,384,386,367,365,385,366,386,388,367,387,389,370,368,388,371,369,389,384,405,392,385,406,393,386,392,394,387,393,395,390,388,394,391,389,395,390,396,398,391,397,399,378,399,401,379,400,402,380,401,403,381,402,404,384,382,403,385,383,404,401,399,409,400,407,411,401,410,412,404,402,411,405,403,412,406,404,413,405,414,416,393,406,415,392,416,418,393,417,419,396,394,418,397,395,419,396,420,408,397,421,409,417,415,422,416,436,424,417,423,425,418,424,426,421,419,425,420,426,428,421,427,429,410,409,429,407,430,432,410,431,433,411,432,434,414,412,433,413,434,422,414,435,436,429,450,437,430,451,438,431,437,439,432,438,440,435,433,439,434,440,442,435,441,443,423,422,442,424,436,443,423,444,446,424,445,447,427,425,446,426,447,449,429,427,448,443,465,452,444,466,453,445,452,454,448,446,453,447,454,456,448,455,457,450,457,459,438,451,458,437,459,461,440,438,460,441,439,461,442,440,462,441,463,465,444,442,464,458,480,467,459,481,468,460,467,469,463,461,468,462,469,471,463,470,472,466,464,471,465,472,474,466,473,475,452,474,476,455,453,475,456,454,476,455,477,479,457,479,481,475,473,3,474,2,7,477,475,5,476,7,11,479,477,9,479,13,19,467,480,14,481,19,22,469,467,21,468,22,27,471,469,24,470,27,0,473,471,29,472,0,2 @@ -22,8 +15,6 @@ export class Sphere { this.subMeshes = [ new SubMesh( 0, 2880) ]; - this.itemSize = 3; - this.primitive = 'TRIANGLES'; } } diff --git a/src/ts/geometry/vwing.ts b/src/ts/geometry/vwing.ts index fd3476d..39ea28d 100644 --- a/src/ts/geometry/vwing.ts +++ b/src/ts/geometry/vwing.ts @@ -1,17 +1,10 @@ - +import { BasicMesh } from './basic'; import { SubMesh } from './subMesh'; -export class VWing { - - vertices : Array; - indices : Array; - normals : Array; - subMeshes : Array; - itemSize : number; - nbSubMeshes : number; - primitive : string; +export class VWing extends BasicMesh { constructor() { + super(); this.vertices = [ 0,0,-7.3975,0,-0.2707,0,1.4678,0,0,0,0.5653,1.8374,0,1.4694,0,0,1.553,-1.0874,0,0.7405,-5.3869,2.3189,0.251,0,1.4678,0,0,1.6633,2.6,1.6982,6.65,-0.8596,3.1485,2.3189,0.251,0,1.9333,-0.2938,-1.9828,1.4678,0,0,2.3189,0.251,0,1.4678,0,0,1.4678,0,0,1.6148,-0.4246,-2.7743,1.9333,-0.2938,-1.9828,1.4678,0,0,1.6148,-0.4246,-2.7743,1.6148,-0.4246,-2.7743,1.9333,-0.2938,-1.9828,-1.4678,0,0,-2.3189,0.251,0,-1.6633,2.6,1.6982,-1.4678,0,0,-6.65,-0.8596,3.1485,-1.9333,-0.2938,-1.9828,-2.3189,0.251,0,-1.4678,0,0,-2.3189,0.251,0,-1.4678,0,0,-1.4678,0,0,-1.6148,-0.4246,-2.7743,-1.9333,-0.2938,-1.9828,-1.6148,-0.4246,-2.7743,-1.4678,0,0,-1.6148,-0.4246,-2.7743,-1.9333,-0.2938,-1.9828,0,-0.2707,0,0,0.5653,1.8374,1.4678,0,0,0,-0.2707,0,-1.4678,0,0 ]; this.indices = [ 0,1,2,2,3,4,5,2,4,6,0,2,5,6,2,7,8,9,10,11,12,10,12,13,14,10,15,16,12,17,7,9,18,9,19,20,21,22,9,0,23,1,23,4,3,5,4,23,6,23,0,5,23,6,24,25,26,27,28,29,27,30,28,31,32,27,33,34,28,24,35,25,25,36,37,38,25,39,40,41,42,43,44,41 @@ -23,8 +16,6 @@ export class VWing { new SubMesh(78, 6) ]; - this.itemSize = 3; - this.primitive = 'TRIANGLES'; } } diff --git a/src/ts/interfaces.ts b/src/ts/interfaces.ts new file mode 100644 index 0000000..0a763df --- /dev/null +++ b/src/ts/interfaces.ts @@ -0,0 +1,43 @@ +import { Uniform } from './uniform'; + +// export interface WebGLRenderingContext { +// [key: string]: any; +// } + +export interface ICustomUniforms { + [key: string]: Uniform; +} + +export interface IMaterialUniforms{ + materialAmbient : Uniform; + materialDiffuse : Uniform; + materialSpecular : Uniform; + materialShininess : Uniform; + //[key: string]: any; +} + +export interface IProgram extends WebGLProgram { + vertexNormal : GLint; + vertexPosition : GLint; + textureCoord : GLint; + sampler : WebGLUniformLocation; + modelMatrix : WebGLUniformLocation; + projectionMatrix : WebGLUniformLocation; + viewMatrix : WebGLUniformLocation; + time : WebGLUniformLocation; + screenResolution : WebGLUniformLocation; + // [key: string]: any; +} + +export interface IFlatLights{ + position : number[]; + diffuse : number[]; + specular : number[]; + constantAttenuation : number[]; + linearAttenuation : number[]; + quadraticAttenuation : number[]; + cutoff : number[]; + exponent : number[]; + direction : number[]; + type : number[] +} diff --git a/src/ts/lights/directional.ts b/src/ts/lights/directional.ts index e250f56..e9b316d 100644 --- a/src/ts/lights/directional.ts +++ b/src/ts/lights/directional.ts @@ -1,6 +1,6 @@ import {Vector3} from '@lcluber/type6js'; +import {Light} from '../types'; -export type Light = 'directional'|'point'|'spot'; export class DirectionalLight { diff --git a/src/ts/material.ts b/src/ts/material.ts index 2060b16..831474d 100644 --- a/src/ts/material.ts +++ b/src/ts/material.ts @@ -1,13 +1,7 @@ import {Vector3} from '@lcluber/type6js'; import { Uniform } from './uniform'; - -export interface IMaterialUniforms{ - materialAmbient : Uniform; - materialDiffuse : Uniform; - materialSpecular : Uniform; - materialShininess : Uniform; -} +import { IMaterialUniforms } from './interfaces'; export class Material { diff --git a/src/ts/mesh.ts b/src/ts/mesh.ts index f871af8..024356d 100644 --- a/src/ts/mesh.ts +++ b/src/ts/mesh.ts @@ -7,46 +7,34 @@ import { Uniform } from './uniform'; import { MeshRenderer } from './renderer/mesh'; import { SubMesh } from './geometry/submesh'; import { Material } from './material'; -import { IFlatLights } from './scene/lights'; +import { IProgram, ICustomUniforms, IFlatLights } from './interfaces'; export enum eDrawMethod { drawElements = 'drawElements', drawArrays = 'drawArrays' }; -export interface IProgram extends WebGLProgram { - vertexNormal : GLint; - vertexPosition : GLint; - textureCoord : GLint; - sampler : WebGLUniformLocation; - modelMatrix : WebGLUniformLocation; - projectionMatrix : WebGLUniformLocation; - viewMatrix : WebGLUniformLocation; - time : WebGLUniformLocation; - screenResolution : WebGLUniformLocation; -} - export class Mesh { - vertices : Array; - indices : Array; - normals : Array; - uvs : Array; - itemSize : number; - subMeshes : Array; + vertices : number[] | null; + indices : number[] | null; + normals : number[] | null; + uvs : number[] | null; + itemSize : number | null; + subMeshes : SubMesh[]; nbSubMeshes : number; - primitive : string; + primitive : string | null; - customUniforms : object; + customUniforms : ICustomUniforms; context : WebGLRenderingContext; renderer : MeshRenderer; - WebGLTexture : WebGLTexture; + WebGLTexture : WebGLTexture | null; - vertexBuffer : WebGLBuffer; - indexBuffer : WebGLBuffer; - normalBuffer : WebGLBuffer; - texCoordBuffer : WebGLBuffer; + vertexBuffer : WebGLBuffer | null; + indexBuffer : WebGLBuffer | null; + normalBuffer : WebGLBuffer | null; + texCoordBuffer : WebGLBuffer | null; modelMatrix : Matrix4x3; rotationMatrix : Matrix4x3; @@ -56,12 +44,12 @@ export class Mesh { drawMethod : eDrawMethod; - programs : Array; + programs : IProgram[]; nbPrograms : number; - materials : Array; + materials : Material[]; - children : Array; + children : Mesh[]; blendMode : boolean; @@ -87,7 +75,7 @@ export class Mesh { this.WebGLTexture = null; - this.vertexBuffer = this.renderer.createBuffer('ARRAY_BUFFER', new Float32Array(this.vertices), 'STATIC_DRAW'); + this.vertexBuffer = this.vertices ? this.renderer.createBuffer('ARRAY_BUFFER', new Float32Array(this.vertices), 'STATIC_DRAW') : null; this.indexBuffer = this.indices ? this.renderer.createBuffer('ELEMENT_ARRAY_BUFFER', new Uint16Array(this.indices), 'STATIC_DRAW') : null; this.normalBuffer = this.normals ? this.renderer.createBuffer('ARRAY_BUFFER', new Float32Array(this.normals), 'STATIC_DRAW') : null; this.texCoordBuffer = this.uvs ? this.renderer.createBuffer('ARRAY_BUFFER', new Float32Array(this.uvs), 'STATIC_DRAW') : null; @@ -148,7 +136,7 @@ export class Mesh { } return false; } - + public clearPrograms(){ this.programs = []; this.nbPrograms = 0; @@ -184,7 +172,7 @@ export class Mesh { } } - public setCustomUniform(name: string, value: string): void { + public setCustomUniform(name: string, value: number|number[]): void { if (this.customUniforms.hasOwnProperty(name)){ this.customUniforms[name].value = value; } @@ -269,15 +257,11 @@ export class Mesh { ): void { if(this.isActive()) { - let program = null; + let program = this.programs[0]; // let material = null; for(let i = 0 ; i < this.nbSubMeshes ; i++) { if(this.blendMode === blendMode){ - if (this.programs[i]) { - program = this.programs[i]; - } else { - program = this.programs[this.nbPrograms - 1]; - } + program = this.programs[i] || this.programs[this.nbPrograms - 1] ; this.renderer.useProgram(program); // materials @@ -292,19 +276,19 @@ export class Mesh { } // positions if(this.indices) { - this.renderer.bindBuffer('ELEMENT_ARRAY_BUFFER', this.indexBuffer); + this.renderer.bindBuffer('ELEMENT_ARRAY_BUFFER', this.indexBuffer); } - this.renderer.bindBuffer('ARRAY_BUFFER', this.vertexBuffer); - this.renderer.vertexAttribPointer(program.vertexPosition, this.itemSize, 'FLOAT', false, 0, 0); + this.renderer.bindBuffer('ARRAY_BUFFER', this.vertexBuffer); + this.renderer.vertexAttribPointer(program.vertexPosition, this.itemSize, 'FLOAT', false, 0, 0); // normals if (this.normals) { - this.renderer.vertexAttribPointer(program.vertexNormal, this.itemSize, 'FLOAT', false, 0, 0); + this.renderer.vertexAttribPointer(program.vertexNormal, this.itemSize, 'FLOAT', false, 0, 0); } // uvs if (this.uvs && this.WebGLTexture) { - this.renderer.bindBuffer('ARRAY_BUFFER', this.texCoordBuffer ); + this.renderer.bindBuffer('ARRAY_BUFFER', this.texCoordBuffer ); this.renderer.vertexAttribPointer(program.textureCoord, 2, 'FLOAT', false, 0, 0); } @@ -331,7 +315,7 @@ export class Mesh { } } - this.renderer[this.drawMethod](this.primitive, this.subMeshes[i]); + this.renderer[this.drawMethod](this.primitive, this.subMeshes[i]); } } diff --git a/src/ts/program.ts b/src/ts/program.ts index 17dea50..5a85d98 100644 --- a/src/ts/program.ts +++ b/src/ts/program.ts @@ -3,19 +3,25 @@ import { Shader } from './shader'; export class Program { - static create( context: WebGLRenderingContext, vertexShader:string, fragmentShader:string ): WebGLProgram { + static create( context: WebGLRenderingContext, vertexShader:string, fragmentShader:string ): WebGLProgram | null { //find vert and frag shader before deleting lines and tabs. //var reg = shader.match(/"vertex":"([\s\S]*)",[\s\S]*"fragment":"([\s\S]*)"/mi); let program = context.createProgram(); - let vshader = Shader.create(context, vertexShader, 'VERTEX_SHADER'); - let fshader = Shader.create(context, fragmentShader, 'FRAGMENT_SHADER'); - context.attachShader(program, vshader); - context.attachShader(program, fshader); - context.linkProgram(program); - - if(!context.getProgramParameter(program, context.LINK_STATUS)){ - //console.log(context.getProgramInfoLog(program)); - Logger.error('program creation failed : ' + context.getProgramInfoLog(program)); + if (program) { + let vshader = Shader.create(context, vertexShader, 'VERTEX_SHADER'); + let fshader = Shader.create(context, fragmentShader, 'FRAGMENT_SHADER'); + if (vshader) { + context.attachShader(program, vshader); + } + if (fshader) { + context.attachShader(program, fshader); + } + context.linkProgram(program); + + if(!context.getProgramParameter(program, context.LINK_STATUS)){ + //console.log(context.getProgramInfoLog(program)); + Logger.error('program creation failed : ' + context.getProgramInfoLog(program)); + } } return program; diff --git a/src/ts/renderer/global.ts b/src/ts/renderer/global.ts index 5c55770..4c871d6 100644 --- a/src/ts/renderer/global.ts +++ b/src/ts/renderer/global.ts @@ -12,7 +12,7 @@ export class Renderer { // default resolution this.canvas.width = 1280; this.canvas.height = 720; - this.context = this.canvas.getContext("webgl") || this.canvas.getContext("experimental-webgl",{alpha:false}); + this.context = this.canvas.getContext("webgl") || this.canvas.getContext("experimental-webgl",{alpha:false}); this.defaultSettings(); } @@ -80,7 +80,7 @@ export class Renderer { this.context.clear(this.context.COLOR_BUFFER_BIT | this.context.DEPTH_BUFFER_BIT); } - public getContext(): WebGLRenderingContext { + public getContext(): WebGLRenderingContext | null { return this.context; } diff --git a/src/ts/renderer/mesh.ts b/src/ts/renderer/mesh.ts index 90cf076..1b513a6 100644 --- a/src/ts/renderer/mesh.ts +++ b/src/ts/renderer/mesh.ts @@ -38,7 +38,7 @@ export class MeshRenderer { // specifying the binding point (target). Possible values: // gl.ARRAY_BUFFER: Buffer containing vertex attributes, such as vertex coordinates, texture coordinate data, or vertex color data. // gl.ELEMENT_ARRAY_BUFFER: Buffer used for element indices. - public createBuffer( target: string, size: number | Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | ArrayBuffer | Uint8ClampedArray | Float32Array | Float64Array, drawMethod: string ): WebGLBuffer { + public createBuffer( target: string, size: ArrayBuffer | ArrayBufferView | null, drawMethod: string ): WebGLBuffer | null { let buffer = this.context.createBuffer(); //binds a given WebGLBuffer to a target this.context.bindBuffer(this.context[target], buffer); diff --git a/src/ts/renderer/scene.ts b/src/ts/renderer/scene.ts index 14ce0d2..8994784 100644 --- a/src/ts/renderer/scene.ts +++ b/src/ts/renderer/scene.ts @@ -1,5 +1,4 @@ - export class SceneRenderer { context: WebGLRenderingContext; diff --git a/src/ts/scene/lights.ts b/src/ts/scene/lights.ts index 8909e2f..0c73838 100644 --- a/src/ts/scene/lights.ts +++ b/src/ts/scene/lights.ts @@ -3,32 +3,19 @@ import {String} from '@lcluber/weejs'; import { DirectionalLight } from '../lights/directional'; import { PointLight } from '../lights/point'; import { SpotLight } from '../lights/spot'; +import { IFlatLights } from '../interfaces'; -export type Light = DirectionalLight | PointLight | SpotLight; - -export interface IFlatLights{ - position : Array; - diffuse : Array; - specular : Array; - constantAttenuation : Array; - linearAttenuation : Array; - quadraticAttenuation : Array; - cutoff : Array; - exponent : Array; - direction : Array; - type : Array -} export class Lights { - directionals : Array; - points : Array; - spots : Array; + directionals : DirectionalLight[]; + points : PointLight[]; + spots : SpotLight[]; nbDirectionals : number; nbPoints : number; nbSpots : number; flatArrays : IFlatLights; - types : Array; + types : string[]; nbTypes : number; constructor(){ @@ -54,7 +41,7 @@ export class Lights { this.nbTypes = 3; } - public addLight(light:Light): void { + public addLight(light:DirectionalLight | PointLight | SpotLight): void { let type = light.type; this[type + 's'].push(light); this['nb' + String.ucfirst(type) + 's']++; diff --git a/src/ts/scene/scene.ts b/src/ts/scene/scene.ts index 30d5590..72837b8 100644 --- a/src/ts/scene/scene.ts +++ b/src/ts/scene/scene.ts @@ -8,10 +8,9 @@ import { PointLight } from '../lights/point'; import { SpotLight } from '../lights/spot'; import { Camera } from '../cameras/camera'; -export type Light = DirectionalLight | PointLight | SpotLight; export class Scene { - public meshes : Array; + public meshes : Mesh[]; public nbMeshes : number; public lights : Lights; private context : WebGLRenderingContext; @@ -24,7 +23,7 @@ export class Scene { this.lights = new Lights(); this.context = context; this.renderer = new SceneRenderer(this.context); - this.graph = new SceneGraph(context); + this.graph = new SceneGraph(); } public addMesh( mesh: Mesh ): void { @@ -32,7 +31,7 @@ export class Scene { this.nbMeshes++; } - public addLight( light: Light ): void { + public addLight( light: DirectionalLight | PointLight | SpotLight ): void { this.lights.addLight(light); //this.lights.push(light); //this.nbLights++; @@ -43,7 +42,7 @@ export class Scene { this.nbMeshes = 0; } - public getLightsProperty (property: string): Array { + public getLightsProperty (property: string): number[] { return this.lights.getFlatArray(property); } @@ -55,7 +54,7 @@ export class Scene { this.renderer.disableBlendMode(); } - public getRendererBlendMode (): GLenum|Float32Array|GLint|WebGLBuffer|GLboolean|Array|GLfloat|WebGLFramebuffer|Int32Array|GLuint|WebGLTexture { + public getRendererBlendMode (): GLenum|Float32Array|GLint|WebGLBuffer|GLboolean|GLboolean[]|GLfloat|WebGLFramebuffer|Int32Array|GLuint|WebGLTexture { return this.renderer.getParameter(this.context.BLEND); } @@ -93,7 +92,7 @@ export class Scene { //if (this.meshes[i].blendMode) { mesh.render( camera.getProjectionMatrix(), camera.getViewMatrix(), - this.lights.flatten(), + this.lights.flatten(), time, true ); diff --git a/src/ts/scene/sceneGraph.ts b/src/ts/scene/sceneGraph.ts index e74ee07..acc577c 100644 --- a/src/ts/scene/sceneGraph.ts +++ b/src/ts/scene/sceneGraph.ts @@ -6,7 +6,7 @@ export class SceneGraph { nbModel : number; modelStackTop : number; - constructor(context:WebGLRenderingContext){ + constructor(/*context:WebGLRenderingContext*/){ this.model = [ new Matrix4x3() ]; //model matrices this.model[0].identity(); this.nbModel = this.model.length; diff --git a/src/ts/shader.ts b/src/ts/shader.ts index 87d448b..c6424e9 100644 --- a/src/ts/shader.ts +++ b/src/ts/shader.ts @@ -4,14 +4,16 @@ export type ShaderType = 'VERTEX_SHADER'|'FRAGMENT_SHADER'; export class Shader { - static create(context:WebGLRenderingContext, str: string, type: ShaderType): WebGLShader { + static create(context:WebGLRenderingContext, str: string, type: ShaderType): WebGLShader | null { let shader = context.createShader(context[type]); - context.shaderSource(shader, str); - context.compileShader(shader); - if(!context.getShaderParameter(shader, context.COMPILE_STATUS)){ - //console.log(str); - //console.log(context.getShaderInfoLog(shader)); - Logger.error('shader creation failed : ' + context.getShaderInfoLog(shader)); + if (shader) { + context.shaderSource(shader, str); + context.compileShader(shader); + if(!context.getShaderParameter(shader, context.COMPILE_STATUS)){ + //console.log(str); + //console.log(context.getShaderInfoLog(shader)); + Logger.error('shader creation failed : ' + context.getShaderInfoLog(shader)); + } } return shader; } diff --git a/src/ts/texture.ts b/src/ts/texture.ts index 61100c3..03eb7a3 100644 --- a/src/ts/texture.ts +++ b/src/ts/texture.ts @@ -3,10 +3,10 @@ export class Texture { - static create ( img:HTMLImageElement, context:WebGLRenderingContext ): WebGLTexture { + static create ( img:HTMLImageElement, context:WebGLRenderingContext ): WebGLTexture | null { let webGLTexture = context.createTexture(); context.bindTexture(context.TEXTURE_2D, webGLTexture); - context.pixelStorei(context.UNPACK_FLIP_Y_WEBGL, true); + context.pixelStorei(context.UNPACK_FLIP_Y_WEBGL, 1/*true*/); context.texParameteri( context.TEXTURE_2D, context.TEXTURE_MAG_FILTER, context.LINEAR diff --git a/src/ts/types.ts b/src/ts/types.ts new file mode 100644 index 0000000..01985b0 --- /dev/null +++ b/src/ts/types.ts @@ -0,0 +1,2 @@ +export type Light = 'directional'|'point'|'spot'; +//export type Light = DirectionalLight | PointLight | SpotLight; diff --git a/src/ts/uniform.ts b/src/ts/uniform.ts index 4cc1884..49729a7 100644 --- a/src/ts/uniform.ts +++ b/src/ts/uniform.ts @@ -2,9 +2,9 @@ export class Uniform { type : string; - value : number|Array; + value : number|number[]; - constructor ( type:string, value:number|Array ) { + constructor ( type:string, value:number|number[] ) { this.type = type; this.value = value; } diff --git a/tsconfig.json b/tsconfig.json index b924e95..45d1707 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -4,12 +4,18 @@ "moduleResolution": "node", "target": "ES6", "sourceMap": true, - "noImplicitAny": true, + "noImplicitAny": false, + "noImplicitReturns": true, + "noImplicitThis": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "strictNullChecks": true, + "strictPropertyInitialization": true, "allowSyntheticDefaultImports": true, + "preserveConstEnums": true, + "suppressImplicitAnyIndexErrors":false, "allowJs": false, "removeComments": true, - "preserveConstEnums": true, - "suppressImplicitAnyIndexErrors":true, "declaration":true, "declarationDir":"build/es6/", "outDir":"build/es6/", diff --git a/web/js/example.js b/web/js/sandbox.js similarity index 100% rename from web/js/example.js rename to web/js/sandbox.js diff --git a/web/public/js/main.min.js b/web/public/js/main.min.js index 640ebfd..66e4140 100644 --- a/web/public/js/main.min.js +++ b/web/public/js/main.min.js @@ -12,4 +12,4 @@ null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio" * Licensed under the MIT license */ if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
    ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);var Wee=function(e){"use strict";function r(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function i(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}function o(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a class as a function")}var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t=function(){function e(){}return e.isJSON=function(e){if(!this.isString(e))return!1;var n=e.replace(/(\r\n|\n|\r|\t)/gm,"");try{n=JSON.parse(e)}catch(e){return!1}return n},e.isFunction=function(e){return e&&"[object Function]"==={}.toString.call(e)},e.isObject=function(e){return null!==e&&"object"===(void 0===e?"undefined":n(e))},e.isASCII=function(e,n){return(n?/^[\x00-\xFF]*$/:/^[\x00-\x7F]*$/).test(e)},e.isInteger=function(e){return e===parseInt(e,10)},e.isString=function(e){return"string"==typeof e},e}(),u=function(){function e(){}return e.scrollToBottom=function(e){e.scrollTop=e.scrollHeight},e.findById=function(e){return document.getElementById(e)},e.showById=function(e){this.findById(e).style.display="block"},e.hideById=function(e){this.findById(e).style.display="none"},e.showOverflow=function(){document.body.style.overflow="visible"},e.hideOverflow=function(){document.body.style.overflow="hidden"},e.getInputValue=function(e){return this.findById(e).value},e.clearInputValue=function(e){this.findById(e).value=""},e.focusOn=function(e){this.findById(e).focus()},e.addHTMLElement=function(e,n,t){var r=document.createElement(n);return void 0!==t&&Object.keys(t).forEach(function(e){"textContent"===e||"innerHTML"===e?r[e]=t[e]:r.setAttribute(e,t[e])}),e.appendChild(r),r},e}(),a=function(){function e(e,n){this.data=n,this.element=e,this.element.value=n,this.element.addEventListener("change",this,!1)}return e.prototype.handleEvent=function(e){switch(e.type){case"change":this.change(this.element.value)}},e.prototype.change=function(e){this.data=e,this.element.value=e},e}(),c=function(){function e(){}return e.ucfirst=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},e.toASCII=function(e){return e.charCodeAt(0)},e}(),l=function(){function r(e,n){for(var t=0;t=0},t.isNegative=function(t){return t<0},t.validate=function(t){return isNaN(t)?0:t},t}(),s=function(){function t(){}return t.init=function(){t.createRoundedPis(),t.createFactorialArray()},t.createRoundedPis=function(){this.pi=i.round(Math.PI,2),this.twopi=i.round(2*Math.PI,2),this.halfpi=i.round(.5*Math.PI,2)},t.createFactorialArray=function(){for(var t=3*this.sineLoops[this.sineLoops.length-1],i=2*this.cosineLoops[this.cosineLoops.length-1],s=1,n=1;s<=Math.max(t,i);s++)n*=this.factorial(s),this.factorialArray.push(n)},t.factorial=function(t){return t>1?t-1:1},t.setSinePrecision=function(t){return tthis.pi||t<-this.pi?t-this.twopi*Math.floor((t+this.pi)/this.twopi):t},t.sine=function(i){return i=this.normalizeRadian(i),t.sineDecimals<=2&&i<.28&&i>-.28?i:this.taylorSerie(3,t.sineLoops[this.sineDecimals],i,i,!0)},t.cosine=function(i){var s=(i=this.normalizeRadian(i))*i;return this.cosineDecimals<=2&&i<=.5&&i>=-.5?1-.5*s:this.taylorSerie(2,t.cosineLoops[this.cosineDecimals],1,i,!0)},t.arctan2=function(t,i){var s=i/t;return t>0?this.arctan(s):t<0?i<0?this.arctan(s)-this.pi:this.arctan(s)+this.pi:i<0?-this.halfpi:i>0&&this.halfpi},t.arctan2Vector2=function(t){return this.arctan2(t.x,t.y)},t.arctan=function(i){var s=t.arctanLoops[this.arctanDecimals];return i<1&&i>-1?this.taylorSerie(3,s,i,i,!1):i>=1?(i=1/i,-(this.taylorSerie(3,s,i,i,!1)-this.halfpi)):(i=-1/i,this.taylorSerie(3,s,i,i,!1)-this.halfpi)},t.sineEquation=function(t,i,s,n){return t*this.sine(i+s)+n},t.cosineEquation=function(t,i,s,n){return t*this.cosine(i+s)+n},t.arctanEquation=function(t,i,s,n){return t*this.arctan(i+s)+n},t.taylorSerie=function(t,s,n,e,o){for(var r=e*e,h=n,a=-1,u=0;t<=s;t+=2,u++)h+=(n*=r)/(o?this.factorialArray[t]:t)*a,a=i.opposite(a);return h},t.sineLoops=[9,11,13,15,17,18,19,21,23],t.cosineLoops=[6,8,10,12,14,16,18,20,22],t.arctanLoops=[17,19,21,23,25,27,29,31,33],t.sineDecimals=2,t.cosineDecimals=2,t.arctanDecimals=2,t.factorialArray=[],t}();s.init();var n,e=function(){function t(){}return t.millisecondToSecond=function(t){return.001*t},t.secondToMilliecond=function(t){return 1e3*t},t.millisecondToFramePerSecond=function(t){return Math.round(1e3/t)},t.framePerSecondToMillisecond=function(t){return i.round(1e3/t,1)},t}(),o=function(){function t(){}return t.float=function(t,i){return t+Math.random()*(i-t)},t.integer=function(t,i){return Math.floor(t+Math.random()*(i-t+1))},t.distribution=function(t,i,s){for(var n=0,e=0;ethis.x?n.y:n.x},t.prototype.minAxis=function(){return this.y=this.target&&(this.percentage=this.target),this.bar.change(this.percentage),100===this.percentage&&this.text.change("Loading complete"),this.percentage},e}(),T=function(){function e(){this.default={maxPending:6,tick:100},this.validExtensions={file:["txt","text","json","glsl","babylon"],img:["png","jpg","jpeg","gif"],sound:["mp3","ogg","wav"]},this.pendingRequests=0,this.tick=this.default.tick,this.maxPendingRequests=this.default.maxPending}return e.prototype.getAsset=function(e){for(var t in this.assets)if(this.assets.hasOwnProperty(t))for(var n=0,r=this.assets[t].files;n=0}},{key:"isNegative",value:function(t){return t<0}},{key:"validate",value:function(t){return isNaN(t)?0:t}}]),t}(),o=function(){function t(){i(this,t)}return r(t,null,[{key:"init",value:function(){t.createRoundedPis(),t.createFactorialArray()}},{key:"createRoundedPis",value:function(){this.pi=a.round(Math.PI,2),this.twopi=a.round(2*Math.PI,2),this.halfpi=a.round(.5*Math.PI,2)}},{key:"createFactorialArray",value:function(){for(var t=3*this.sineLoops[this.sineLoops.length-1],i=2*this.cosineLoops[this.cosineLoops.length-1],e=1,n=1;e<=Math.max(t,i);e++)n*=this.factorial(e),this.factorialArray.push(n)}},{key:"factorial",value:function(t){return t>1?t-1:1}},{key:"setSinePrecision",value:function(t){return tthis.pi||t<-this.pi?t-this.twopi*Math.floor((t+this.pi)/this.twopi):t}},{key:"sine",value:function(i){return i=this.normalizeRadian(i),t.sineDecimals<=2&&i<.28&&i>-.28?i:this.taylorSerie(3,t.sineLoops[this.sineDecimals],i,i,!0)}},{key:"cosine",value:function(i){var e=(i=this.normalizeRadian(i))*i;return this.cosineDecimals<=2&&i<=.5&&i>=-.5?1-.5*e:this.taylorSerie(2,t.cosineLoops[this.cosineDecimals],1,i,!0)}},{key:"arctan2",value:function(t,i){var e=i/t;return t>0?this.arctan(e):t<0?i<0?this.arctan(e)-this.pi:this.arctan(e)+this.pi:i<0?-this.halfpi:i>0&&this.halfpi}},{key:"arctan2Vector2",value:function(t){return this.arctan2(t.x,t.y)}},{key:"arctan",value:function(i){var e=t.arctanLoops[this.arctanDecimals];return i<1&&i>-1?this.taylorSerie(3,e,i,i,!1):i>=1?(i=1/i,-(this.taylorSerie(3,e,i,i,!1)-this.halfpi)):(i=-1/i,this.taylorSerie(3,e,i,i,!1)-this.halfpi)}},{key:"sineEquation",value:function(t,i,e,n){return t*this.sine(i+e)+n}},{key:"cosineEquation",value:function(t,i,e,n){return t*this.cosine(i+e)+n}},{key:"arctanEquation",value:function(t,i,e,n){return t*this.arctan(i+e)+n}},{key:"taylorSerie",value:function(t,i,e,n,s){for(var r=n*n,o=e,u=-1,h=0;t<=i;t+=2,h++)o+=(e*=r)/(s?this.factorialArray[t]:t)*u,u=a.opposite(u);return o}}]),t}();o.sineLoops=[9,11,13,15,17,18,19,21,23],o.cosineLoops=[6,8,10,12,14,16,18,20,22],o.arctanLoops=[17,19,21,23,25,27,29,31,33],o.sineDecimals=2,o.cosineDecimals=2,o.arctanDecimals=2,o.factorialArray=[],o.init();var u,h=function(){function t(){i(this,t)}return r(t,null,[{key:"millisecondToSecond",value:function(t){return.001*t}},{key:"secondToMilliecond",value:function(t){return 1e3*t}},{key:"millisecondToFramePerSecond",value:function(t){return Math.round(1e3/t)}},{key:"framePerSecondToMillisecond",value:function(t){return a.round(1e3/t,1)}}]),t}(),c=(function(){function t(){i(this,t)}r(t,null,[{key:"float",value:function(t,i){return t+Math.random()*(i-t)}},{key:"integer",value:function(t,i){return Math.floor(t+Math.random()*(i-t+1))}},{key:"distribution",value:function(t,i,e){for(var n=0,s=0;sthis.x?u.y:u.x}},{key:"minAxis",value:function(){return this.y=this.minimumTick&&(this.now=t,this.total+=this.delta,this.ticks++,this.fps=h.millisecondToFramePerSecond(this.delta),this.updateSixteenLastFps(),!0)},t.prototype.computeAverageFps=function(){var t=this;return a.validate(a.round(function(){for(var i=0,e=0,n=t.sixteenLastFps;e=0}},{key:"isNegative",value:function(t){return t<0}},{key:"validate",value:function(t){return isNaN(t)?0:t}}]),t}(),l=function(){function t(){e(this,t)}return h(t,null,[{key:"init",value:function(){t.createRoundedPis(),t.createFactorialArray()}},{key:"createRoundedPis",value:function(){this.pi=c.round(Math.PI,2),this.twopi=c.round(2*Math.PI,2),this.halfpi=c.round(.5*Math.PI,2)}},{key:"createFactorialArray",value:function(){for(var t=3*this.sineLoops[this.sineLoops.length-1],e=2*this.cosineLoops[this.cosineLoops.length-1],i=1,n=1;i<=Math.max(t,e);i++)n*=this.factorial(i),this.factorialArray.push(n)}},{key:"factorial",value:function(t){return t>1?t-1:1}},{key:"setSinePrecision",value:function(t){return tthis.pi||t<-this.pi?t-this.twopi*Math.floor((t+this.pi)/this.twopi):t}},{key:"sine",value:function(e){return e=this.normalizeRadian(e),t.sineDecimals<=2&&e<.28&&e>-.28?e:this.taylorSerie(3,t.sineLoops[this.sineDecimals],e,e,!0)}},{key:"cosine",value:function(e){var i=(e=this.normalizeRadian(e))*e;return this.cosineDecimals<=2&&e<=.5&&e>=-.5?1-.5*i:this.taylorSerie(2,t.cosineLoops[this.cosineDecimals],1,e,!0)}},{key:"arctan2",value:function(t,e){var i=e/t;return t>0?this.arctan(i):t<0?e<0?this.arctan(i)-this.pi:this.arctan(i)+this.pi:e<0?-this.halfpi:e>0&&this.halfpi}},{key:"arctan2Vector2",value:function(t){return this.arctan2(t.x,t.y)}},{key:"arctan",value:function(e){var i=t.arctanLoops[this.arctanDecimals];return e<1&&e>-1?this.taylorSerie(3,i,e,e,!1):e>=1?(e=1/e,-(this.taylorSerie(3,i,e,e,!1)-this.halfpi)):(e=-1/e,this.taylorSerie(3,i,e,e,!1)-this.halfpi)}},{key:"sineEquation",value:function(t,e,i,n){return t*this.sine(e+i)+n}},{key:"cosineEquation",value:function(t,e,i,n){return t*this.cosine(e+i)+n}},{key:"arctanEquation",value:function(t,e,i,n){return t*this.arctan(e+i)+n}},{key:"taylorSerie",value:function(t,e,i,n,r){for(var s=n*n,o=i,a=-1,u=0;t<=e;t+=2,u++)o+=(i*=s)/(r?this.factorialArray[t]:t)*a,a=c.opposite(a);return o}}]),t}();l.sineLoops=[9,11,13,15,17,18,19,21,23],l.cosineLoops=[6,8,10,12,14,16,18,20,22],l.arctanLoops=[17,19,21,23,25,27,29,31,33],l.sineDecimals=2,l.cosineDecimals=2,l.arctanDecimals=2,l.factorialArray=[],l.init();(function(){function t(){e(this,t)}h(t,null,[{key:"millisecondToSecond",value:function(t){return.001*t}},{key:"secondToMilliecond",value:function(t){return 1e3*t}},{key:"millisecondToFramePerSecond",value:function(t){return Math.round(1e3/t)}},{key:"framePerSecondToMillisecond",value:function(t){return c.round(1e3/t,1)}}])})(),function(){function t(){e(this,t)}h(t,null,[{key:"float",value:function(t,e){return t+Math.random()*(e-t)}},{key:"integer",value:function(t,e){return Math.floor(t+Math.random()*(e-t+1))}},{key:"distribution",value:function(t,e,i){for(var n=0,r=0;rthis.x?f.y:f.x}},{key:"minAxis",value:function(){return this.y":"paused"===e&&(t.innerHTML="")}function stopAnimation(){animation.stop(),Wee.Dom.findById("play").innerHTML="",renderer.clearFrame()}function majTime(){Wee.Dom.findById("time").innerHTML=formatTime(Type6.Utils.round(animation.getTotal(),2))}function majFPS(){Wee.Dom.findById("fps").innerHTML=formatFPS(Math.round(animation.getFPS()))}function formatTime(e){for(var t="",n=100;n>1;n/=10)e50?$(".navbar-fixed-top").addClass("top-nav-collapse"):$(".navbar-fixed-top").removeClass("top-nav-collapse")}jQuery.easing.jswing=jQuery.easing.swing,jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(e,t,n,s,r){return jQuery.easing[jQuery.easing.def](e,t,n,s,r)},easeInQuad:function(e,t,n,s,r){return s*(t/=r)*t+n},easeOutQuad:function(e,t,n,s,r){return-s*(t/=r)*(t-2)+n},easeInOutQuad:function(e,t,n,s,r){return(t/=r/2)<1?s/2*t*t+n:-s/2*(--t*(t-2)-1)+n},easeInCubic:function(e,t,n,s,r){return s*(t/=r)*t*t+n},easeOutCubic:function(e,t,n,s,r){return s*((t=t/r-1)*t*t+1)+n},easeInOutCubic:function(e,t,n,s,r){return(t/=r/2)<1?s/2*t*t*t+n:s/2*((t-=2)*t*t+2)+n},easeInQuart:function(e,t,n,s,r){return s*(t/=r)*t*t*t+n},easeOutQuart:function(e,t,n,s,r){return-s*((t=t/r-1)*t*t*t-1)+n},easeInOutQuart:function(e,t,n,s,r){return(t/=r/2)<1?s/2*t*t*t*t+n:-s/2*((t-=2)*t*t*t-2)+n},easeInQuint:function(e,t,n,s,r){return s*(t/=r)*t*t*t*t+n},easeOutQuint:function(e,t,n,s,r){return s*((t=t/r-1)*t*t*t*t+1)+n},easeInOutQuint:function(e,t,n,s,r){return(t/=r/2)<1?s/2*t*t*t*t*t+n:s/2*((t-=2)*t*t*t*t+2)+n},easeInSine:function(e,t,n,s,r){return-s*Math.cos(t/r*(Math.PI/2))+s+n},easeOutSine:function(e,t,n,s,r){return s*Math.sin(t/r*(Math.PI/2))+n},easeInOutSine:function(e,t,n,s,r){return-s/2*(Math.cos(Math.PI*t/r)-1)+n},easeInExpo:function(e,t,n,s,r){return 0==t?n:s*Math.pow(2,10*(t/r-1))+n},easeOutExpo:function(e,t,n,s,r){return t==r?n+s:s*(1-Math.pow(2,-10*t/r))+n},easeInOutExpo:function(e,t,n,s,r){return 0==t?n:t==r?n+s:(t/=r/2)<1?s/2*Math.pow(2,10*(t-1))+n:s/2*(2-Math.pow(2,-10*--t))+n},easeInCirc:function(e,t,n,s,r){return-s*(Math.sqrt(1-(t/=r)*t)-1)+n},easeOutCirc:function(e,t,n,s,r){return s*Math.sqrt(1-(t=t/r-1)*t)+n},easeInOutCirc:function(e,t,n,s,r){return(t/=r/2)<1?-s/2*(Math.sqrt(1-t*t)-1)+n:s/2*(Math.sqrt(1-(t-=2)*t)+1)+n},easeInElastic:function(e,t,n,s,r){var a=1.70158,o=0,i=s;if(0==t)return n;if(1==(t/=r))return n+s;if(o||(o=.3*r),i .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);var Wee=function(e){"use strict";function i(e,n){for(var t=0;t=t.length)break;o=t[i++]}else{if((i=t.next()).done)break;o=i.value}if(e===o)return!0}return!1},e}(),f=function(){function e(){}return e.load=function(r){return new Promise(function(e,n){var t=new Image;t.src=r,t.name=l.getName(r),s.info("xhr processing starting ("+r+")"),t.addEventListener("load",function(){s.info("xhr done successfully ("+r+")"),e(t)}),t.addEventListener("error",function(){s.error("xhr failed ("+r+")"),n(new Error("xhr failed ("+r+")"))})})},e}(),h=function(){function e(){}return e.load=function(r){return new Promise(function(e,n){var t=new Audio;t.src=r,s.info("xhr processing starting ("+r+")"),t.addEventListener("canplaythrough",function(){s.info("xhr done successfully ("+r+")"),e(t)},!1),t.addEventListener("canplay",function(){s.info("xhr done successfully ("+r+")"),e(t)},!1),t.addEventListener("error",function(){s.error("xhr failed ("+r+")"),n(new Error("xhr failed ("+r+")"))},!1)})},e}();return e.Dom=n,e.Bind=t,e.String=r,e.File=l,e.Img=f,e.Sound=h,e}({});var Type6=function(t){"use strict";var i=function(){function t(){}return t.round=function(t,i){return i=Math.pow(10,i),Math.round(t*i)/i},t.floor=function(t,i){return i=Math.pow(10,i),Math.floor(t*i)/i},t.ceil=function(t,i){return i=Math.pow(10,i),Math.ceil(t*i)/i},t.trunc=function(t,i){var s=+t*(i=Math.pow(10,i));return isFinite(s)?(s-s%1)/i||(s<0?-0:0===s?s:0):s},t.roundToNearest=function(t,i){return Math.round(t/i)*i},t.mix=function(t,i,s){return(1-s)*t+s*i},t.sign=function(t){return t?t<0?-1:1:0},t.opposite=function(t){return-t},t.clamp=function(t,i,s){return Math.min(Math.max(t,i),s)},t.normalize=function(t,i,s){return(t-i)/(s-i)},t.lerp=function(t,i,s){return(s-i)*t+i},t.map=function(t,i,s,n,e){return this.lerp(this.normalize(t,i,s),n,e)},t.isEven=function(t){return!(1&t)},t.isOdd=function(t){return 1&t},t.isOrigin=function(t){return 0===t},t.isPositive=function(t){return t>=0},t.isNegative=function(t){return t<0},t.validate=function(t){return isNaN(t)?0:t},t}(),s=function(){function t(){}return t.init=function(){t.createRoundedPis(),t.createFactorialArray()},t.createRoundedPis=function(){this.pi=i.round(Math.PI,2),this.twopi=i.round(2*Math.PI,2),this.halfpi=i.round(.5*Math.PI,2)},t.createFactorialArray=function(){for(var t=3*this.sineLoops[this.sineLoops.length-1],i=2*this.cosineLoops[this.cosineLoops.length-1],s=1,n=1;s<=Math.max(t,i);s++)n*=this.factorial(s),this.factorialArray.push(n)},t.factorial=function(t){return t>1?t-1:1},t.setSinePrecision=function(t){return tthis.pi||t<-this.pi?t-this.twopi*Math.floor((t+this.pi)/this.twopi):t},t.sine=function(i){return i=this.normalizeRadian(i),t.sineDecimals<=2&&i<.28&&i>-.28?i:this.taylorSerie(3,t.sineLoops[this.sineDecimals],i,i,!0)},t.cosine=function(i){var s=(i=this.normalizeRadian(i))*i;return this.cosineDecimals<=2&&i<=.5&&i>=-.5?1-.5*s:this.taylorSerie(2,t.cosineLoops[this.cosineDecimals],1,i,!0)},t.arctan2=function(t,i){var s=i/t;return t>0?this.arctan(s):t<0?i<0?this.arctan(s)-this.pi:this.arctan(s)+this.pi:i<0?-this.halfpi:i>0&&this.halfpi},t.arctan2Vector2=function(t){return this.arctan2(t.x,t.y)},t.arctan=function(i){var s=t.arctanLoops[this.arctanDecimals];return i<1&&i>-1?this.taylorSerie(3,s,i,i,!1):i>=1?(i=1/i,-(this.taylorSerie(3,s,i,i,!1)-this.halfpi)):(i=-1/i,this.taylorSerie(3,s,i,i,!1)-this.halfpi)},t.sineEquation=function(t,i,s,n){return t*this.sine(i+s)+n},t.cosineEquation=function(t,i,s,n){return t*this.cosine(i+s)+n},t.arctanEquation=function(t,i,s,n){return t*this.arctan(i+s)+n},t.taylorSerie=function(t,s,n,e,o){for(var r=e*e,h=n,a=-1,u=0;t<=s;t+=2,u++)h+=(n*=r)/(o?this.factorialArray[t]:t)*a,a=i.opposite(a);return h},t.sineLoops=[9,11,13,15,17,18,19,21,23],t.cosineLoops=[6,8,10,12,14,16,18,20,22],t.arctanLoops=[17,19,21,23,25,27,29,31,33],t.sineDecimals=2,t.cosineDecimals=2,t.arctanDecimals=2,t.factorialArray=[],t}();s.init();var n=function(){function t(){}return t.millisecondToSecond=function(t){return.001*t},t.secondToMilliecond=function(t){return 1e3*t},t.millisecondToFramePerSecond=function(t){return Math.round(1e3/t)},t.framePerSecondToMillisecond=function(t){return i.round(1e3/t,1)},t}(),e=function(){function t(){}return t.float=function(t,i){return t+Math.random()*(i-t)},t.integer=function(t,i){return Math.floor(t+Math.random()*(i-t+1))},t.distribution=function(t,i,s){for(var n=0,e=0;ethis.x?"y":"x"},t.prototype.minAxis=function(){return this.y=this.target&&(this.percentage=this.target),this.bar.change(this.percentage),100===this.percentage&&this.text.change("Loading complete"),this.percentage},e}(),T=function(){function e(){this.default={maxPending:6,tick:100},this.validExtensions={file:["txt","text","json","glsl","babylon"],img:["png","jpg","jpeg","gif"],sound:["mp3","ogg","wav"]},this.pendingRequests=0,this.tick=this.default.tick,this.maxPendingRequests=this.default.maxPending}return e.prototype.getAsset=function(e){for(var t in this.assets)if(this.assets.hasOwnProperty(t))for(var n=0,r=this.assets[t].files;n=0}},{key:"isNegative",value:function(t){return t<0}},{key:"validate",value:function(t){return isNaN(t)?0:t}}]),t}(),o=function(){function t(){i(this,t)}return r(t,null,[{key:"init",value:function(){t.createRoundedPis(),t.createFactorialArray()}},{key:"createRoundedPis",value:function(){this.pi=a.round(Math.PI,2),this.twopi=a.round(2*Math.PI,2),this.halfpi=a.round(.5*Math.PI,2)}},{key:"createFactorialArray",value:function(){for(var t=3*this.sineLoops[this.sineLoops.length-1],i=2*this.cosineLoops[this.cosineLoops.length-1],e=1,n=1;e<=Math.max(t,i);e++)n*=this.factorial(e),this.factorialArray.push(n)}},{key:"factorial",value:function(t){return t>1?t-1:1}},{key:"setSinePrecision",value:function(t){return tthis.pi||t<-this.pi?t-this.twopi*Math.floor((t+this.pi)/this.twopi):t}},{key:"sine",value:function(i){return i=this.normalizeRadian(i),t.sineDecimals<=2&&i<.28&&i>-.28?i:this.taylorSerie(3,t.sineLoops[this.sineDecimals],i,i,!0)}},{key:"cosine",value:function(i){var e=(i=this.normalizeRadian(i))*i;return this.cosineDecimals<=2&&i<=.5&&i>=-.5?1-.5*e:this.taylorSerie(2,t.cosineLoops[this.cosineDecimals],1,i,!0)}},{key:"arctan2",value:function(t,i){var e=i/t;return t>0?this.arctan(e):t<0?i<0?this.arctan(e)-this.pi:this.arctan(e)+this.pi:i<0?-this.halfpi:i>0&&this.halfpi}},{key:"arctan2Vector2",value:function(t){return this.arctan2(t.x,t.y)}},{key:"arctan",value:function(i){var e=t.arctanLoops[this.arctanDecimals];return i<1&&i>-1?this.taylorSerie(3,e,i,i,!1):i>=1?(i=1/i,-(this.taylorSerie(3,e,i,i,!1)-this.halfpi)):(i=-1/i,this.taylorSerie(3,e,i,i,!1)-this.halfpi)}},{key:"sineEquation",value:function(t,i,e,n){return t*this.sine(i+e)+n}},{key:"cosineEquation",value:function(t,i,e,n){return t*this.cosine(i+e)+n}},{key:"arctanEquation",value:function(t,i,e,n){return t*this.arctan(i+e)+n}},{key:"taylorSerie",value:function(t,i,e,n,s){for(var r=n*n,o=e,u=-1,h=0;t<=i;t+=2,h++)o+=(e*=r)/(s?this.factorialArray[t]:t)*u,u=a.opposite(u);return o}}]),t}();o.sineLoops=[9,11,13,15,17,18,19,21,23],o.cosineLoops=[6,8,10,12,14,16,18,20,22],o.arctanLoops=[17,19,21,23,25,27,29,31,33],o.sineDecimals=2,o.cosineDecimals=2,o.arctanDecimals=2,o.factorialArray=[],o.init();var u,h=function(){function t(){i(this,t)}return r(t,null,[{key:"millisecondToSecond",value:function(t){return.001*t}},{key:"secondToMilliecond",value:function(t){return 1e3*t}},{key:"millisecondToFramePerSecond",value:function(t){return Math.round(1e3/t)}},{key:"framePerSecondToMillisecond",value:function(t){return a.round(1e3/t,1)}}]),t}(),c=(function(){function t(){i(this,t)}r(t,null,[{key:"float",value:function(t,i){return t+Math.random()*(i-t)}},{key:"integer",value:function(t,i){return Math.floor(t+Math.random()*(i-t+1))}},{key:"distribution",value:function(t,i,e){for(var n=0,s=0;sthis.x?u.y:u.x}},{key:"minAxis",value:function(){return this.y=this.minimumTick&&(this.now=t,this.total+=this.delta,this.ticks++,this.fps=h.millisecondToFramePerSecond(this.delta),this.updateSixteenLastFps(),!0)},t.prototype.computeAverageFps=function(){var t=this;return a.validate(a.round(function(){for(var i=0,e=0,n=t.sixteenLastFps;e=0}},{key:"isNegative",value:function(t){return t<0}},{key:"validate",value:function(t){return isNaN(t)?0:t}}]),t}(),y=function(){function t(){e(this,t)}return l(t,null,[{key:"init",value:function(){t.createRoundedPis(),t.createFactorialArray()}},{key:"createRoundedPis",value:function(){this.pi=f.round(Math.PI,2),this.twopi=f.round(2*Math.PI,2),this.halfpi=f.round(.5*Math.PI,2)}},{key:"createFactorialArray",value:function(){for(var t=3*this.sineLoops[this.sineLoops.length-1],e=2*this.cosineLoops[this.cosineLoops.length-1],i=1,n=1;i<=Math.max(t,e);i++)n*=this.factorial(i),this.factorialArray.push(n)}},{key:"factorial",value:function(t){return t>1?t-1:1}},{key:"setSinePrecision",value:function(t){return tthis.pi||t<-this.pi?t-this.twopi*Math.floor((t+this.pi)/this.twopi):t}},{key:"sine",value:function(e){return e=this.normalizeRadian(e),t.sineDecimals<=2&&e<.28&&e>-.28?e:this.taylorSerie(3,t.sineLoops[this.sineDecimals],e,e,!0)}},{key:"cosine",value:function(e){var i=(e=this.normalizeRadian(e))*e;return this.cosineDecimals<=2&&e<=.5&&e>=-.5?1-.5*i:this.taylorSerie(2,t.cosineLoops[this.cosineDecimals],1,e,!0)}},{key:"arctan2",value:function(t,e){var i=e/t;return t>0?this.arctan(i):t<0?e<0?this.arctan(i)-this.pi:this.arctan(i)+this.pi:e<0?-this.halfpi:e>0&&this.halfpi}},{key:"arctan2Vector2",value:function(t){return this.arctan2(t.x,t.y)}},{key:"arctan",value:function(e){var i=t.arctanLoops[this.arctanDecimals];return e<1&&e>-1?this.taylorSerie(3,i,e,e,!1):e>=1?(e=1/e,-(this.taylorSerie(3,i,e,e,!1)-this.halfpi)):(e=-1/e,this.taylorSerie(3,i,e,e,!1)-this.halfpi)}},{key:"sineEquation",value:function(t,e,i,n){return t*this.sine(e+i)+n}},{key:"cosineEquation",value:function(t,e,i,n){return t*this.cosine(e+i)+n}},{key:"arctanEquation",value:function(t,e,i,n){return t*this.arctan(e+i)+n}},{key:"taylorSerie",value:function(t,e,i,n,r){for(var o=n*n,s=i,a=-1,u=0;t<=e;t+=2,u++)s+=(i*=o)/(r?this.factorialArray[t]:t)*a,a=f.opposite(a);return s}}]),t}();y.sineLoops=[9,11,13,15,17,18,19,21,23],y.cosineLoops=[6,8,10,12,14,16,18,20,22],y.arctanLoops=[17,19,21,23,25,27,29,31,33],y.sineDecimals=2,y.cosineDecimals=2,y.arctanDecimals=2,y.factorialArray=[],y.init();(function(){function t(){e(this,t)}l(t,null,[{key:"millisecondToSecond",value:function(t){return.001*t}},{key:"secondToMilliecond",value:function(t){return 1e3*t}},{key:"millisecondToFramePerSecond",value:function(t){return Math.round(1e3/t)}},{key:"framePerSecondToMillisecond",value:function(t){return f.round(1e3/t,1)}}])})(),function(){function t(){e(this,t)}l(t,null,[{key:"float",value:function(t,e){return t+Math.random()*(e-t)}},{key:"integer",value:function(t,e){return Math.floor(t+Math.random()*(e-t+1))}},{key:"distribution",value:function(t,e,i){for(var n=0,r=0;rthis.x?"y":"x"}},{key:"minAxis",value:function(){return this.y50?$(".navbar-fixed-top").addClass("top-nav-collapse"):$(".navbar-fixed-top").removeClass("top-nav-collapse")}function loadAssets(){assetsLoader.launch("./assets.json","./","progressBar","progressText").then(function(){console.log("complete"),init(),closeModal()})}function closeModal(){modal.style.display="none"}function appendMeshesList(){var e=Wee.Dom.findById("meshes");for(var t in meshes)meshes.hasOwnProperty(t)&&Wee.Dom.addHTMLElement(e,"option",{textContent:t,value:t})}function init(){renderer=new Roostr.Renderer("canvas"),scene=new Roostr.Scene(renderer.getContext()),sun=new Roostr.DirectionalLight,sun.setPosition(new Type6.Vector3(.34,.66,0)),sun.setDiffuse(new Type6.Vector3(1,0,0)),scene.addLight(sun),sun2=new Roostr.DirectionalLight,sun2.setPosition(new Type6.Vector3(-.34,.66,0)),sun2.setDiffuse(new Type6.Vector3(0,0,1)),scene.addLight(sun2),meshes.vwing=new Roostr.Mesh(new Roostr.VWing,renderer.getContext()),meshes.cube=new Roostr.Mesh(new Roostr.Cube,renderer.getContext()),meshes.sphere=new Roostr.Mesh(new Roostr.Sphere,renderer.getContext()),appendMeshesList(),(childMesh=new Roostr.Mesh(new Roostr.Cannon,renderer.getContext())).addCustomUniform("lightPosition","uniform3fv",scene.getLightsProperty("position")),childMesh.addCustomUniform("lightDiffuse","uniform3fv",scene.getLightsProperty("diffuse")),childMesh.addCustomUniform("lightSpecular","uniform3fv",scene.getLightsProperty("specular"));var e=new Roostr.Material,t=assetsLoader.getAsset("flat-shading_vert.glsl").asset.response,n=assetsLoader.getAsset("flat-shading_frag.glsl").asset.response;childMesh.addProgram(t,n,e);var s=new Type6.Vector3(0,-.56,-2.4525);childMesh.modelMatrix.identity(),childMesh.modelMatrix.translate(s),meshes.vwing.addChild(childMesh),meshes.vwing.addCustomUniform("lightPosition","uniform3fv",scene.getLightsProperty("position")),meshes.vwing.addCustomUniform("lightDiffuse","uniform3fv",scene.getLightsProperty("diffuse")),meshes.vwing.addCustomUniform("lightSpecular","uniform3fv",scene.getLightsProperty("specular")),meshes.cube.addCustomUniform("lightPosition","uniform3fv",scene.getLightsProperty("position")),meshes.cube.addCustomUniform("lightDiffuse","uniform3fv",scene.getLightsProperty("diffuse")),meshes.cube.addCustomUniform("lightSpecular","uniform3fv",scene.getLightsProperty("specular")),meshes.sphere.addCustomUniform("lightPosition","uniform3fv",scene.getLightsProperty("position")),meshes.sphere.addCustomUniform("lightDiffuse","uniform3fv",scene.getLightsProperty("diffuse")),meshes.sphere.addCustomUniform("lightSpecular","uniform3fv",scene.getLightsProperty("specular")),meshes.vwing.addProgram(t,n,e),meshes.vwing.addProgram(assetsLoader.getAsset("emissive_vert.glsl").asset.response,assetsLoader.getAsset("emissive_frag.glsl").asset.response,null),meshes.cube.addProgram(t,n,e),meshes.sphere.addProgram(t,n,e),camera=new Roostr.PerspectiveCamera(45,.1,1e3,renderer.getContext()),loadMesh("vwing")}function animate(){renderer.clearFrame(),render(animation.getTotal()),majTime(),majFPS(),animation.requestNewFrame()}function render(e){var t=rotationSpeed*e,n=Wee.Dom.findById("meshes").value,s=meshes[n];s.modelMatrix.rotateX(t),s.rotationMatrix.rotateY(t),s.modelMatrix.multiply(s.rotationMatrix),s.rotationMatrix.rotateZ(t),s.modelMatrix.multiply(s.rotationMatrix),scene.render(camera,e)}function loadMesh(e){if(meshes.hasOwnProperty(e)){stopAnimation(),scene.clearMeshes();for(var t in meshes)meshes.hasOwnProperty(t)&&t===e&&(scene.addMesh(meshes[t]),camera.setPosition(cameraDefaultPosition[t]));render(0)}}function playAnimation(){var e=animation.toggle(),t=Wee.Dom.findById("play");"running"===e?t.innerHTML="":"paused"===e&&(t.innerHTML="")}function stopAnimation(){animation.stop(),Wee.Dom.findById("play").innerHTML="",renderer.clearFrame()}function majTime(){Wee.Dom.findById("time").innerHTML=formatTime(Type6.Utils.round(animation.getTotal(),2))}function majFPS(){Wee.Dom.findById("fps").innerHTML=formatFPS(Math.round(animation.getFPS()))}function formatTime(e){for(var t="",n=100;n>1;n/=10)e