1 |
- {"ast":null,"code":"import { Vector3 } from \"../Maths/math.vector.js\";\nimport { VertexBuffer } from \"../Buffers/buffer.js\";\nimport { Mesh } from \"../Meshes/mesh.js\";\nimport { Color4 } from \"../Maths/math.color.js\";\nimport { Logger } from \"../Misc/logger.js\";\nMesh._GoldbergMeshParser = (parsedMesh, scene) => {\n return GoldbergMesh.Parse(parsedMesh, scene);\n};\n/**\n * Mesh for a Goldberg Polyhedron which is made from 12 pentagonal and the rest hexagonal faces\n * @see https://en.wikipedia.org/wiki/Goldberg_polyhedron\n */\nexport class GoldbergMesh extends Mesh {\n constructor() {\n super(...arguments);\n /**\n * Defines the specific Goldberg data used in this mesh construction.\n */\n this.goldbergData = {\n faceColors: [],\n faceCenters: [],\n faceZaxis: [],\n faceXaxis: [],\n faceYaxis: [],\n nbSharedFaces: 0,\n nbUnsharedFaces: 0,\n nbFaces: 0,\n nbFacesAtPole: 0,\n adjacentFaces: []\n };\n }\n /**\n * Gets the related Goldberg face from pole infos\n * @param poleOrShared Defines the pole index or the shared face index if the fromPole parameter is passed in\n * @param fromPole Defines an optional pole index to find the related info from\n * @returns the goldberg face number\n */\n relatedGoldbergFace(poleOrShared, fromPole) {\n if (fromPole === void 0) {\n if (poleOrShared > this.goldbergData.nbUnsharedFaces - 1) {\n Logger.Warn(\"Maximum number of unshared faces used\");\n poleOrShared = this.goldbergData.nbUnsharedFaces - 1;\n }\n return this.goldbergData.nbUnsharedFaces + poleOrShared;\n }\n if (poleOrShared > 11) {\n Logger.Warn(\"Last pole used\");\n poleOrShared = 11;\n }\n if (fromPole > this.goldbergData.nbFacesAtPole - 1) {\n Logger.Warn(\"Maximum number of faces at a pole used\");\n fromPole = this.goldbergData.nbFacesAtPole - 1;\n }\n return 12 + poleOrShared * this.goldbergData.nbFacesAtPole + fromPole;\n }\n _changeGoldbergFaceColors(colorRange) {\n for (let i = 0; i < colorRange.length; i++) {\n const min = colorRange[i][0];\n const max = colorRange[i][1];\n const col = colorRange[i][2];\n for (let f = min; f < max + 1; f++) {\n this.goldbergData.faceColors[f] = col;\n }\n }\n const newCols = [];\n for (let f = 0; f < 12; f++) {\n for (let i = 0; i < 5; i++) {\n newCols.push(this.goldbergData.faceColors[f].r, this.goldbergData.faceColors[f].g, this.goldbergData.faceColors[f].b, this.goldbergData.faceColors[f].a);\n }\n }\n for (let f = 12; f < this.goldbergData.faceColors.length; f++) {\n for (let i = 0; i < 6; i++) {\n newCols.push(this.goldbergData.faceColors[f].r, this.goldbergData.faceColors[f].g, this.goldbergData.faceColors[f].b, this.goldbergData.faceColors[f].a);\n }\n }\n return newCols;\n }\n /**\n * Set new goldberg face colors\n * @param colorRange the new color to apply to the mesh\n */\n setGoldbergFaceColors(colorRange) {\n const newCols = this._changeGoldbergFaceColors(colorRange);\n this.setVerticesData(VertexBuffer.ColorKind, newCols);\n }\n /**\n * Updates new goldberg face colors\n * @param colorRange the new color to apply to the mesh\n */\n updateGoldbergFaceColors(colorRange) {\n const newCols = this._changeGoldbergFaceColors(colorRange);\n this.updateVerticesData(VertexBuffer.ColorKind, newCols);\n }\n _changeGoldbergFaceUVs(uvRange) {\n const uvs = this.getVerticesData(VertexBuffer.UVKind);\n for (let i = 0; i < uvRange.length; i++) {\n const min = uvRange[i][0];\n const max = uvRange[i][1];\n const center = uvRange[i][2];\n const radius = uvRange[i][3];\n const angle = uvRange[i][4];\n const points5 = [];\n const points6 = [];\n let u;\n let v;\n for (let p = 0; p < 5; p++) {\n u = center.x + radius * Math.cos(angle + p * Math.PI / 2.5);\n v = center.y + radius * Math.sin(angle + p * Math.PI / 2.5);\n if (u < 0) {\n u = 0;\n }\n if (u > 1) {\n u = 1;\n }\n points5.push(u, v);\n }\n for (let p = 0; p < 6; p++) {\n u = center.x + radius * Math.cos(angle + p * Math.PI / 3);\n v = center.y + radius * Math.sin(angle + p * Math.PI / 3);\n if (u < 0) {\n u = 0;\n }\n if (u > 1) {\n u = 1;\n }\n points6.push(u, v);\n }\n for (let f = min; f < Math.min(12, max + 1); f++) {\n for (let p = 0; p < 5; p++) {\n uvs[10 * f + 2 * p] = points5[2 * p];\n uvs[10 * f + 2 * p + 1] = points5[2 * p + 1];\n }\n }\n for (let f = Math.max(12, min); f < max + 1; f++) {\n for (let p = 0; p < 6; p++) {\n //120 + 12 * (f - 12) = 12 * f - 24\n uvs[12 * f - 24 + 2 * p] = points6[2 * p];\n uvs[12 * f - 23 + 2 * p] = points6[2 * p + 1];\n }\n }\n }\n return uvs;\n }\n /**\n * set new goldberg face UVs\n * @param uvRange the new UVs to apply to the mesh\n */\n setGoldbergFaceUVs(uvRange) {\n const newUVs = this._changeGoldbergFaceUVs(uvRange);\n this.setVerticesData(VertexBuffer.UVKind, newUVs);\n }\n /**\n * Updates new goldberg face UVs\n * @param uvRange the new UVs to apply to the mesh\n */\n updateGoldbergFaceUVs(uvRange) {\n const newUVs = this._changeGoldbergFaceUVs(uvRange);\n this.updateVerticesData(VertexBuffer.UVKind, newUVs);\n }\n /**\n * Places a mesh on a particular face of the goldberg polygon\n * @param mesh Defines the mesh to position\n * @param face Defines the face to position onto\n * @param position Defines the position relative to the face we are positioning the mesh onto\n */\n placeOnGoldbergFaceAt(mesh, face, position) {\n const orientation = Vector3.RotationFromAxis(this.goldbergData.faceXaxis[face], this.goldbergData.faceYaxis[face], this.goldbergData.faceZaxis[face]);\n mesh.rotation = orientation;\n mesh.position = this.goldbergData.faceCenters[face].add(this.goldbergData.faceXaxis[face].scale(position.x)).add(this.goldbergData.faceYaxis[face].scale(position.y)).add(this.goldbergData.faceZaxis[face].scale(position.z));\n }\n /**\n * Serialize current mesh\n * @param serializationObject defines the object which will receive the serialization data\n */\n serialize(serializationObject) {\n super.serialize(serializationObject);\n serializationObject.type = \"GoldbergMesh\";\n const goldbergData = {};\n goldbergData.adjacentFaces = this.goldbergData.adjacentFaces;\n goldbergData.nbSharedFaces = this.goldbergData.nbSharedFaces;\n goldbergData.nbUnsharedFaces = this.goldbergData.nbUnsharedFaces;\n goldbergData.nbFaces = this.goldbergData.nbFaces;\n goldbergData.nbFacesAtPole = this.goldbergData.nbFacesAtPole;\n if (this.goldbergData.faceColors) {\n goldbergData.faceColors = [];\n for (const color of this.goldbergData.faceColors) {\n goldbergData.faceColors.push(color.asArray());\n }\n }\n if (this.goldbergData.faceCenters) {\n goldbergData.faceCenters = [];\n for (const vector of this.goldbergData.faceCenters) {\n goldbergData.faceCenters.push(vector.asArray());\n }\n }\n if (this.goldbergData.faceZaxis) {\n goldbergData.faceZaxis = [];\n for (const vector of this.goldbergData.faceZaxis) {\n goldbergData.faceZaxis.push(vector.asArray());\n }\n }\n if (this.goldbergData.faceYaxis) {\n goldbergData.faceYaxis = [];\n for (const vector of this.goldbergData.faceYaxis) {\n goldbergData.faceYaxis.push(vector.asArray());\n }\n }\n if (this.goldbergData.faceXaxis) {\n goldbergData.faceXaxis = [];\n for (const vector of this.goldbergData.faceXaxis) {\n goldbergData.faceXaxis.push(vector.asArray());\n }\n }\n serializationObject.goldbergData = goldbergData;\n }\n /**\n * Parses a serialized goldberg mesh\n * @param parsedMesh the serialized mesh\n * @param scene the scene to create the goldberg mesh in\n * @returns the created goldberg mesh\n */\n static Parse(parsedMesh, scene) {\n const goldbergData = parsedMesh.goldbergData;\n goldbergData.faceColors = goldbergData.faceColors.map(el => Color4.FromArray(el));\n goldbergData.faceCenters = goldbergData.faceCenters.map(el => Vector3.FromArray(el));\n goldbergData.faceZaxis = goldbergData.faceZaxis.map(el => Vector3.FromArray(el));\n goldbergData.faceXaxis = goldbergData.faceXaxis.map(el => Vector3.FromArray(el));\n goldbergData.faceYaxis = goldbergData.faceYaxis.map(el => Vector3.FromArray(el));\n const goldberg = new GoldbergMesh(parsedMesh.name, scene);\n goldberg.goldbergData = goldbergData;\n return goldberg;\n }\n}","map":{"version":3,"names":["Vector3","VertexBuffer","Mesh","Color4","Logger","_GoldbergMeshParser","parsedMesh","scene","GoldbergMesh","Parse","constructor","arguments","goldbergData","faceColors","faceCenters","faceZaxis","faceXaxis","faceYaxis","nbSharedFaces","nbUnsharedFaces","nbFaces","nbFacesAtPole","adjacentFaces","relatedGoldbergFace","poleOrShared","fromPole","Warn","_changeGoldbergFaceColors","colorRange","i","length","min","max","col","f","newCols","push","r","g","b","a","setGoldbergFaceColors","setVerticesData","ColorKind","updateGoldbergFaceColors","updateVerticesData","_changeGoldbergFaceUVs","uvRange","uvs","getVerticesData","UVKind","center","radius","angle","points5","points6","u","v","p","x","Math","cos","PI","y","sin","setGoldbergFaceUVs","newUVs","updateGoldbergFaceUVs","placeOnGoldbergFaceAt","mesh","face","position","orientation","RotationFromAxis","rotation","add","scale","z","serialize","serializationObject","type","color","asArray","vector","map","el","FromArray","goldberg","name"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/core/Meshes/goldbergMesh.js"],"sourcesContent":["import { Vector3 } from \"../Maths/math.vector.js\";\nimport { VertexBuffer } from \"../Buffers/buffer.js\";\nimport { Mesh } from \"../Meshes/mesh.js\";\nimport { Color4 } from \"../Maths/math.color.js\";\nimport { Logger } from \"../Misc/logger.js\";\nMesh._GoldbergMeshParser = (parsedMesh, scene) => {\n return GoldbergMesh.Parse(parsedMesh, scene);\n};\n/**\n * Mesh for a Goldberg Polyhedron which is made from 12 pentagonal and the rest hexagonal faces\n * @see https://en.wikipedia.org/wiki/Goldberg_polyhedron\n */\nexport class GoldbergMesh extends Mesh {\n constructor() {\n super(...arguments);\n /**\n * Defines the specific Goldberg data used in this mesh construction.\n */\n this.goldbergData = {\n faceColors: [],\n faceCenters: [],\n faceZaxis: [],\n faceXaxis: [],\n faceYaxis: [],\n nbSharedFaces: 0,\n nbUnsharedFaces: 0,\n nbFaces: 0,\n nbFacesAtPole: 0,\n adjacentFaces: [],\n };\n }\n /**\n * Gets the related Goldberg face from pole infos\n * @param poleOrShared Defines the pole index or the shared face index if the fromPole parameter is passed in\n * @param fromPole Defines an optional pole index to find the related info from\n * @returns the goldberg face number\n */\n relatedGoldbergFace(poleOrShared, fromPole) {\n if (fromPole === void 0) {\n if (poleOrShared > this.goldbergData.nbUnsharedFaces - 1) {\n Logger.Warn(\"Maximum number of unshared faces used\");\n poleOrShared = this.goldbergData.nbUnsharedFaces - 1;\n }\n return this.goldbergData.nbUnsharedFaces + poleOrShared;\n }\n if (poleOrShared > 11) {\n Logger.Warn(\"Last pole used\");\n poleOrShared = 11;\n }\n if (fromPole > this.goldbergData.nbFacesAtPole - 1) {\n Logger.Warn(\"Maximum number of faces at a pole used\");\n fromPole = this.goldbergData.nbFacesAtPole - 1;\n }\n return 12 + poleOrShared * this.goldbergData.nbFacesAtPole + fromPole;\n }\n _changeGoldbergFaceColors(colorRange) {\n for (let i = 0; i < colorRange.length; i++) {\n const min = colorRange[i][0];\n const max = colorRange[i][1];\n const col = colorRange[i][2];\n for (let f = min; f < max + 1; f++) {\n this.goldbergData.faceColors[f] = col;\n }\n }\n const newCols = [];\n for (let f = 0; f < 12; f++) {\n for (let i = 0; i < 5; i++) {\n newCols.push(this.goldbergData.faceColors[f].r, this.goldbergData.faceColors[f].g, this.goldbergData.faceColors[f].b, this.goldbergData.faceColors[f].a);\n }\n }\n for (let f = 12; f < this.goldbergData.faceColors.length; f++) {\n for (let i = 0; i < 6; i++) {\n newCols.push(this.goldbergData.faceColors[f].r, this.goldbergData.faceColors[f].g, this.goldbergData.faceColors[f].b, this.goldbergData.faceColors[f].a);\n }\n }\n return newCols;\n }\n /**\n * Set new goldberg face colors\n * @param colorRange the new color to apply to the mesh\n */\n setGoldbergFaceColors(colorRange) {\n const newCols = this._changeGoldbergFaceColors(colorRange);\n this.setVerticesData(VertexBuffer.ColorKind, newCols);\n }\n /**\n * Updates new goldberg face colors\n * @param colorRange the new color to apply to the mesh\n */\n updateGoldbergFaceColors(colorRange) {\n const newCols = this._changeGoldbergFaceColors(colorRange);\n this.updateVerticesData(VertexBuffer.ColorKind, newCols);\n }\n _changeGoldbergFaceUVs(uvRange) {\n const uvs = this.getVerticesData(VertexBuffer.UVKind);\n for (let i = 0; i < uvRange.length; i++) {\n const min = uvRange[i][0];\n const max = uvRange[i][1];\n const center = uvRange[i][2];\n const radius = uvRange[i][3];\n const angle = uvRange[i][4];\n const points5 = [];\n const points6 = [];\n let u;\n let v;\n for (let p = 0; p < 5; p++) {\n u = center.x + radius * Math.cos(angle + (p * Math.PI) / 2.5);\n v = center.y + radius * Math.sin(angle + (p * Math.PI) / 2.5);\n if (u < 0) {\n u = 0;\n }\n if (u > 1) {\n u = 1;\n }\n points5.push(u, v);\n }\n for (let p = 0; p < 6; p++) {\n u = center.x + radius * Math.cos(angle + (p * Math.PI) / 3);\n v = center.y + radius * Math.sin(angle + (p * Math.PI) / 3);\n if (u < 0) {\n u = 0;\n }\n if (u > 1) {\n u = 1;\n }\n points6.push(u, v);\n }\n for (let f = min; f < Math.min(12, max + 1); f++) {\n for (let p = 0; p < 5; p++) {\n uvs[10 * f + 2 * p] = points5[2 * p];\n uvs[10 * f + 2 * p + 1] = points5[2 * p + 1];\n }\n }\n for (let f = Math.max(12, min); f < max + 1; f++) {\n for (let p = 0; p < 6; p++) {\n //120 + 12 * (f - 12) = 12 * f - 24\n uvs[12 * f - 24 + 2 * p] = points6[2 * p];\n uvs[12 * f - 23 + 2 * p] = points6[2 * p + 1];\n }\n }\n }\n return uvs;\n }\n /**\n * set new goldberg face UVs\n * @param uvRange the new UVs to apply to the mesh\n */\n setGoldbergFaceUVs(uvRange) {\n const newUVs = this._changeGoldbergFaceUVs(uvRange);\n this.setVerticesData(VertexBuffer.UVKind, newUVs);\n }\n /**\n * Updates new goldberg face UVs\n * @param uvRange the new UVs to apply to the mesh\n */\n updateGoldbergFaceUVs(uvRange) {\n const newUVs = this._changeGoldbergFaceUVs(uvRange);\n this.updateVerticesData(VertexBuffer.UVKind, newUVs);\n }\n /**\n * Places a mesh on a particular face of the goldberg polygon\n * @param mesh Defines the mesh to position\n * @param face Defines the face to position onto\n * @param position Defines the position relative to the face we are positioning the mesh onto\n */\n placeOnGoldbergFaceAt(mesh, face, position) {\n const orientation = Vector3.RotationFromAxis(this.goldbergData.faceXaxis[face], this.goldbergData.faceYaxis[face], this.goldbergData.faceZaxis[face]);\n mesh.rotation = orientation;\n mesh.position = this.goldbergData.faceCenters[face]\n .add(this.goldbergData.faceXaxis[face].scale(position.x))\n .add(this.goldbergData.faceYaxis[face].scale(position.y))\n .add(this.goldbergData.faceZaxis[face].scale(position.z));\n }\n /**\n * Serialize current mesh\n * @param serializationObject defines the object which will receive the serialization data\n */\n serialize(serializationObject) {\n super.serialize(serializationObject);\n serializationObject.type = \"GoldbergMesh\";\n const goldbergData = {};\n goldbergData.adjacentFaces = this.goldbergData.adjacentFaces;\n goldbergData.nbSharedFaces = this.goldbergData.nbSharedFaces;\n goldbergData.nbUnsharedFaces = this.goldbergData.nbUnsharedFaces;\n goldbergData.nbFaces = this.goldbergData.nbFaces;\n goldbergData.nbFacesAtPole = this.goldbergData.nbFacesAtPole;\n if (this.goldbergData.faceColors) {\n goldbergData.faceColors = [];\n for (const color of this.goldbergData.faceColors) {\n goldbergData.faceColors.push(color.asArray());\n }\n }\n if (this.goldbergData.faceCenters) {\n goldbergData.faceCenters = [];\n for (const vector of this.goldbergData.faceCenters) {\n goldbergData.faceCenters.push(vector.asArray());\n }\n }\n if (this.goldbergData.faceZaxis) {\n goldbergData.faceZaxis = [];\n for (const vector of this.goldbergData.faceZaxis) {\n goldbergData.faceZaxis.push(vector.asArray());\n }\n }\n if (this.goldbergData.faceYaxis) {\n goldbergData.faceYaxis = [];\n for (const vector of this.goldbergData.faceYaxis) {\n goldbergData.faceYaxis.push(vector.asArray());\n }\n }\n if (this.goldbergData.faceXaxis) {\n goldbergData.faceXaxis = [];\n for (const vector of this.goldbergData.faceXaxis) {\n goldbergData.faceXaxis.push(vector.asArray());\n }\n }\n serializationObject.goldbergData = goldbergData;\n }\n /**\n * Parses a serialized goldberg mesh\n * @param parsedMesh the serialized mesh\n * @param scene the scene to create the goldberg mesh in\n * @returns the created goldberg mesh\n */\n static Parse(parsedMesh, scene) {\n const goldbergData = parsedMesh.goldbergData;\n goldbergData.faceColors = goldbergData.faceColors.map((el) => Color4.FromArray(el));\n goldbergData.faceCenters = goldbergData.faceCenters.map((el) => Vector3.FromArray(el));\n goldbergData.faceZaxis = goldbergData.faceZaxis.map((el) => Vector3.FromArray(el));\n goldbergData.faceXaxis = goldbergData.faceXaxis.map((el) => Vector3.FromArray(el));\n goldbergData.faceYaxis = goldbergData.faceYaxis.map((el) => Vector3.FromArray(el));\n const goldberg = new GoldbergMesh(parsedMesh.name, scene);\n goldberg.goldbergData = goldbergData;\n return goldberg;\n }\n}\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,yBAAyB;AACjD,SAASC,YAAY,QAAQ,sBAAsB;AACnD,SAASC,IAAI,QAAQ,mBAAmB;AACxC,SAASC,MAAM,QAAQ,wBAAwB;AAC/C,SAASC,MAAM,QAAQ,mBAAmB;AAC1CF,IAAI,CAACG,mBAAmB,GAAG,CAACC,UAAU,EAAEC,KAAK,KAAK;EAC9C,OAAOC,YAAY,CAACC,KAAK,CAACH,UAAU,EAAEC,KAAK,CAAC;AAChD,CAAC;AACD;AACA;AACA;AACA;AACA,OAAO,MAAMC,YAAY,SAASN,IAAI,CAAC;EACnCQ,WAAWA,CAAA,EAAG;IACV,KAAK,CAAC,GAAGC,SAAS,CAAC;IACnB;AACR;AACA;IACQ,IAAI,CAACC,YAAY,GAAG;MAChBC,UAAU,EAAE,EAAE;MACdC,WAAW,EAAE,EAAE;MACfC,SAAS,EAAE,EAAE;MACbC,SAAS,EAAE,EAAE;MACbC,SAAS,EAAE,EAAE;MACbC,aAAa,EAAE,CAAC;MAChBC,eAAe,EAAE,CAAC;MAClBC,OAAO,EAAE,CAAC;MACVC,aAAa,EAAE,CAAC;MAChBC,aAAa,EAAE;IACnB,CAAC;EACL;EACA;AACJ;AACA;AACA;AACA;AACA;EACIC,mBAAmBA,CAACC,YAAY,EAAEC,QAAQ,EAAE;IACxC,IAAIA,QAAQ,KAAK,KAAK,CAAC,EAAE;MACrB,IAAID,YAAY,GAAG,IAAI,CAACZ,YAAY,CAACO,eAAe,GAAG,CAAC,EAAE;QACtDf,MAAM,CAACsB,IAAI,CAAC,uCAAuC,CAAC;QACpDF,YAAY,GAAG,IAAI,CAACZ,YAAY,CAACO,eAAe,GAAG,CAAC;MACxD;MACA,OAAO,IAAI,CAACP,YAAY,CAACO,eAAe,GAAGK,YAAY;IAC3D;IACA,IAAIA,YAAY,GAAG,EAAE,EAAE;MACnBpB,MAAM,CAACsB,IAAI,CAAC,gBAAgB,CAAC;MAC7BF,YAAY,GAAG,EAAE;IACrB;IACA,IAAIC,QAAQ,GAAG,IAAI,CAACb,YAAY,CAACS,aAAa,GAAG,CAAC,EAAE;MAChDjB,MAAM,CAACsB,IAAI,CAAC,wCAAwC,CAAC;MACrDD,QAAQ,GAAG,IAAI,CAACb,YAAY,CAACS,aAAa,GAAG,CAAC;IAClD;IACA,OAAO,EAAE,GAAGG,YAAY,GAAG,IAAI,CAACZ,YAAY,CAACS,aAAa,GAAGI,QAAQ;EACzE;EACAE,yBAAyBA,CAACC,UAAU,EAAE;IAClC,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,UAAU,CAACE,MAAM,EAAED,CAAC,EAAE,EAAE;MACxC,MAAME,GAAG,GAAGH,UAAU,CAACC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5B,MAAMG,GAAG,GAAGJ,UAAU,CAACC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5B,MAAMI,GAAG,GAAGL,UAAU,CAACC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5B,KAAK,IAAIK,CAAC,GAAGH,GAAG,EAAEG,CAAC,GAAGF,GAAG,GAAG,CAAC,EAAEE,CAAC,EAAE,EAAE;QAChC,IAAI,CAACtB,YAAY,CAACC,UAAU,CAACqB,CAAC,CAAC,GAAGD,GAAG;MACzC;IACJ;IACA,MAAME,OAAO,GAAG,EAAE;IAClB,KAAK,IAAID,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,EAAE,EAAEA,CAAC,EAAE,EAAE;MACzB,KAAK,IAAIL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;QACxBM,OAAO,CAACC,IAAI,CAAC,IAAI,CAACxB,YAAY,CAACC,UAAU,CAACqB,CAAC,CAAC,CAACG,CAAC,EAAE,IAAI,CAACzB,YAAY,CAACC,UAAU,CAACqB,CAAC,CAAC,CAACI,CAAC,EAAE,IAAI,CAAC1B,YAAY,CAACC,UAAU,CAACqB,CAAC,CAAC,CAACK,CAAC,EAAE,IAAI,CAAC3B,YAAY,CAACC,UAAU,CAACqB,CAAC,CAAC,CAACM,CAAC,CAAC;MAC5J;IACJ;IACA,KAAK,IAAIN,CAAC,GAAG,EAAE,EAAEA,CAAC,GAAG,IAAI,CAACtB,YAAY,CAACC,UAAU,CAACiB,MAAM,EAAEI,CAAC,EAAE,EAAE;MAC3D,KAAK,IAAIL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;QACxBM,OAAO,CAACC,IAAI,CAAC,IAAI,CAACxB,YAAY,CAACC,UAAU,CAACqB,CAAC,CAAC,CAACG,CAAC,EAAE,IAAI,CAACzB,YAAY,CAACC,UAAU,CAACqB,CAAC,CAAC,CAACI,CAAC,EAAE,IAAI,CAAC1B,YAAY,CAACC,UAAU,CAACqB,CAAC,CAAC,CAACK,CAAC,EAAE,IAAI,CAAC3B,YAAY,CAACC,UAAU,CAACqB,CAAC,CAAC,CAACM,CAAC,CAAC;MAC5J;IACJ;IACA,OAAOL,OAAO;EAClB;EACA;AACJ;AACA;AACA;EACIM,qBAAqBA,CAACb,UAAU,EAAE;IAC9B,MAAMO,OAAO,GAAG,IAAI,CAACR,yBAAyB,CAACC,UAAU,CAAC;IAC1D,IAAI,CAACc,eAAe,CAACzC,YAAY,CAAC0C,SAAS,EAAER,OAAO,CAAC;EACzD;EACA;AACJ;AACA;AACA;EACIS,wBAAwBA,CAAChB,UAAU,EAAE;IACjC,MAAMO,OAAO,GAAG,IAAI,CAACR,yBAAyB,CAACC,UAAU,CAAC;IAC1D,IAAI,CAACiB,kBAAkB,CAAC5C,YAAY,CAAC0C,SAAS,EAAER,OAAO,CAAC;EAC5D;EACAW,sBAAsBA,CAACC,OAAO,EAAE;IAC5B,MAAMC,GAAG,GAAG,IAAI,CAACC,eAAe,CAAChD,YAAY,CAACiD,MAAM,CAAC;IACrD,KAAK,IAAIrB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGkB,OAAO,CAACjB,MAAM,EAAED,CAAC,EAAE,EAAE;MACrC,MAAME,GAAG,GAAGgB,OAAO,CAAClB,CAAC,CAAC,CAAC,CAAC,CAAC;MACzB,MAAMG,GAAG,GAAGe,OAAO,CAAClB,CAAC,CAAC,CAAC,CAAC,CAAC;MACzB,MAAMsB,MAAM,GAAGJ,OAAO,CAAClB,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5B,MAAMuB,MAAM,GAAGL,OAAO,CAAClB,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5B,MAAMwB,KAAK,GAAGN,OAAO,CAAClB,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3B,MAAMyB,OAAO,GAAG,EAAE;MAClB,MAAMC,OAAO,GAAG,EAAE;MAClB,IAAIC,CAAC;MACL,IAAIC,CAAC;MACL,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;QACxBF,CAAC,GAAGL,MAAM,CAACQ,CAAC,GAAGP,MAAM,GAAGQ,IAAI,CAACC,GAAG,CAACR,KAAK,GAAIK,CAAC,GAAGE,IAAI,CAACE,EAAE,GAAI,GAAG,CAAC;QAC7DL,CAAC,GAAGN,MAAM,CAACY,CAAC,GAAGX,MAAM,GAAGQ,IAAI,CAACI,GAAG,CAACX,KAAK,GAAIK,CAAC,GAAGE,IAAI,CAACE,EAAE,GAAI,GAAG,CAAC;QAC7D,IAAIN,CAAC,GAAG,CAAC,EAAE;UACPA,CAAC,GAAG,CAAC;QACT;QACA,IAAIA,CAAC,GAAG,CAAC,EAAE;UACPA,CAAC,GAAG,CAAC;QACT;QACAF,OAAO,CAAClB,IAAI,CAACoB,CAAC,EAAEC,CAAC,CAAC;MACtB;MACA,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;QACxBF,CAAC,GAAGL,MAAM,CAACQ,CAAC,GAAGP,MAAM,GAAGQ,IAAI,CAACC,GAAG,CAACR,KAAK,GAAIK,CAAC,GAAGE,IAAI,CAACE,EAAE,GAAI,CAAC,CAAC;QAC3DL,CAAC,GAAGN,MAAM,CAACY,CAAC,GAAGX,MAAM,GAAGQ,IAAI,CAACI,GAAG,CAACX,KAAK,GAAIK,CAAC,GAAGE,IAAI,CAACE,EAAE,GAAI,CAAC,CAAC;QAC3D,IAAIN,CAAC,GAAG,CAAC,EAAE;UACPA,CAAC,GAAG,CAAC;QACT;QACA,IAAIA,CAAC,GAAG,CAAC,EAAE;UACPA,CAAC,GAAG,CAAC;QACT;QACAD,OAAO,CAACnB,IAAI,CAACoB,CAAC,EAAEC,CAAC,CAAC;MACtB;MACA,KAAK,IAAIvB,CAAC,GAAGH,GAAG,EAAEG,CAAC,GAAG0B,IAAI,CAAC7B,GAAG,CAAC,EAAE,EAAEC,GAAG,GAAG,CAAC,CAAC,EAAEE,CAAC,EAAE,EAAE;QAC9C,KAAK,IAAIwB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;UACxBV,GAAG,CAAC,EAAE,GAAGd,CAAC,GAAG,CAAC,GAAGwB,CAAC,CAAC,GAAGJ,OAAO,CAAC,CAAC,GAAGI,CAAC,CAAC;UACpCV,GAAG,CAAC,EAAE,GAAGd,CAAC,GAAG,CAAC,GAAGwB,CAAC,GAAG,CAAC,CAAC,GAAGJ,OAAO,CAAC,CAAC,GAAGI,CAAC,GAAG,CAAC,CAAC;QAChD;MACJ;MACA,KAAK,IAAIxB,CAAC,GAAG0B,IAAI,CAAC5B,GAAG,CAAC,EAAE,EAAED,GAAG,CAAC,EAAEG,CAAC,GAAGF,GAAG,GAAG,CAAC,EAAEE,CAAC,EAAE,EAAE;QAC9C,KAAK,IAAIwB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG,CAAC,EAAEA,CAAC,EAAE,EAAE;UACxB;UACAV,GAAG,CAAC,EAAE,GAAGd,CAAC,GAAG,EAAE,GAAG,CAAC,GAAGwB,CAAC,CAAC,GAAGH,OAAO,CAAC,CAAC,GAAGG,CAAC,CAAC;UACzCV,GAAG,CAAC,EAAE,GAAGd,CAAC,GAAG,EAAE,GAAG,CAAC,GAAGwB,CAAC,CAAC,GAAGH,OAAO,CAAC,CAAC,GAAGG,CAAC,GAAG,CAAC,CAAC;QACjD;MACJ;IACJ;IACA,OAAOV,GAAG;EACd;EACA;AACJ;AACA;AACA;EACIiB,kBAAkBA,CAAClB,OAAO,EAAE;IACxB,MAAMmB,MAAM,GAAG,IAAI,CAACpB,sBAAsB,CAACC,OAAO,CAAC;IACnD,IAAI,CAACL,eAAe,CAACzC,YAAY,CAACiD,MAAM,EAAEgB,MAAM,CAAC;EACrD;EACA;AACJ;AACA;AACA;EACIC,qBAAqBA,CAACpB,OAAO,EAAE;IAC3B,MAAMmB,MAAM,GAAG,IAAI,CAACpB,sBAAsB,CAACC,OAAO,CAAC;IACnD,IAAI,CAACF,kBAAkB,CAAC5C,YAAY,CAACiD,MAAM,EAAEgB,MAAM,CAAC;EACxD;EACA;AACJ;AACA;AACA;AACA;AACA;EACIE,qBAAqBA,CAACC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAE;IACxC,MAAMC,WAAW,GAAGxE,OAAO,CAACyE,gBAAgB,CAAC,IAAI,CAAC7D,YAAY,CAACI,SAAS,CAACsD,IAAI,CAAC,EAAE,IAAI,CAAC1D,YAAY,CAACK,SAAS,CAACqD,IAAI,CAAC,EAAE,IAAI,CAAC1D,YAAY,CAACG,SAAS,CAACuD,IAAI,CAAC,CAAC;IACrJD,IAAI,CAACK,QAAQ,GAAGF,WAAW;IAC3BH,IAAI,CAACE,QAAQ,GAAG,IAAI,CAAC3D,YAAY,CAACE,WAAW,CAACwD,IAAI,CAAC,CAC9CK,GAAG,CAAC,IAAI,CAAC/D,YAAY,CAACI,SAAS,CAACsD,IAAI,CAAC,CAACM,KAAK,CAACL,QAAQ,CAACZ,CAAC,CAAC,CAAC,CACxDgB,GAAG,CAAC,IAAI,CAAC/D,YAAY,CAACK,SAAS,CAACqD,IAAI,CAAC,CAACM,KAAK,CAACL,QAAQ,CAACR,CAAC,CAAC,CAAC,CACxDY,GAAG,CAAC,IAAI,CAAC/D,YAAY,CAACG,SAAS,CAACuD,IAAI,CAAC,CAACM,KAAK,CAACL,QAAQ,CAACM,CAAC,CAAC,CAAC;EACjE;EACA;AACJ;AACA;AACA;EACIC,SAASA,CAACC,mBAAmB,EAAE;IAC3B,KAAK,CAACD,SAAS,CAACC,mBAAmB,CAAC;IACpCA,mBAAmB,CAACC,IAAI,GAAG,cAAc;IACzC,MAAMpE,YAAY,GAAG,CAAC,CAAC;IACvBA,YAAY,CAACU,aAAa,GAAG,IAAI,CAACV,YAAY,CAACU,aAAa;IAC5DV,YAAY,CAACM,aAAa,GAAG,IAAI,CAACN,YAAY,CAACM,aAAa;IAC5DN,YAAY,CAACO,eAAe,GAAG,IAAI,CAACP,YAAY,CAACO,eAAe;IAChEP,YAAY,CAACQ,OAAO,GAAG,IAAI,CAACR,YAAY,CAACQ,OAAO;IAChDR,YAAY,CAACS,aAAa,GAAG,IAAI,CAACT,YAAY,CAACS,aAAa;IAC5D,IAAI,IAAI,CAACT,YAAY,CAACC,UAAU,EAAE;MAC9BD,YAAY,CAACC,UAAU,GAAG,EAAE;MAC5B,KAAK,MAAMoE,KAAK,IAAI,IAAI,CAACrE,YAAY,CAACC,UAAU,EAAE;QAC9CD,YAAY,CAACC,UAAU,CAACuB,IAAI,CAAC6C,KAAK,CAACC,OAAO,CAAC,CAAC,CAAC;MACjD;IACJ;IACA,IAAI,IAAI,CAACtE,YAAY,CAACE,WAAW,EAAE;MAC/BF,YAAY,CAACE,WAAW,GAAG,EAAE;MAC7B,KAAK,MAAMqE,MAAM,IAAI,IAAI,CAACvE,YAAY,CAACE,WAAW,EAAE;QAChDF,YAAY,CAACE,WAAW,CAACsB,IAAI,CAAC+C,MAAM,CAACD,OAAO,CAAC,CAAC,CAAC;MACnD;IACJ;IACA,IAAI,IAAI,CAACtE,YAAY,CAACG,SAAS,EAAE;MAC7BH,YAAY,CAACG,SAAS,GAAG,EAAE;MAC3B,KAAK,MAAMoE,MAAM,IAAI,IAAI,CAACvE,YAAY,CAACG,SAAS,EAAE;QAC9CH,YAAY,CAACG,SAAS,CAACqB,IAAI,CAAC+C,MAAM,CAACD,OAAO,CAAC,CAAC,CAAC;MACjD;IACJ;IACA,IAAI,IAAI,CAACtE,YAAY,CAACK,SAAS,EAAE;MAC7BL,YAAY,CAACK,SAAS,GAAG,EAAE;MAC3B,KAAK,MAAMkE,MAAM,IAAI,IAAI,CAACvE,YAAY,CAACK,SAAS,EAAE;QAC9CL,YAAY,CAACK,SAAS,CAACmB,IAAI,CAAC+C,MAAM,CAACD,OAAO,CAAC,CAAC,CAAC;MACjD;IACJ;IACA,IAAI,IAAI,CAACtE,YAAY,CAACI,SAAS,EAAE;MAC7BJ,YAAY,CAACI,SAAS,GAAG,EAAE;MAC3B,KAAK,MAAMmE,MAAM,IAAI,IAAI,CAACvE,YAAY,CAACI,SAAS,EAAE;QAC9CJ,YAAY,CAACI,SAAS,CAACoB,IAAI,CAAC+C,MAAM,CAACD,OAAO,CAAC,CAAC,CAAC;MACjD;IACJ;IACAH,mBAAmB,CAACnE,YAAY,GAAGA,YAAY;EACnD;EACA;AACJ;AACA;AACA;AACA;AACA;EACI,OAAOH,KAAKA,CAACH,UAAU,EAAEC,KAAK,EAAE;IAC5B,MAAMK,YAAY,GAAGN,UAAU,CAACM,YAAY;IAC5CA,YAAY,CAACC,UAAU,GAAGD,YAAY,CAACC,UAAU,CAACuE,GAAG,CAAEC,EAAE,IAAKlF,MAAM,CAACmF,SAAS,CAACD,EAAE,CAAC,CAAC;IACnFzE,YAAY,CAACE,WAAW,GAAGF,YAAY,CAACE,WAAW,CAACsE,GAAG,CAAEC,EAAE,IAAKrF,OAAO,CAACsF,SAAS,CAACD,EAAE,CAAC,CAAC;IACtFzE,YAAY,CAACG,SAAS,GAAGH,YAAY,CAACG,SAAS,CAACqE,GAAG,CAAEC,EAAE,IAAKrF,OAAO,CAACsF,SAAS,CAACD,EAAE,CAAC,CAAC;IAClFzE,YAAY,CAACI,SAAS,GAAGJ,YAAY,CAACI,SAAS,CAACoE,GAAG,CAAEC,EAAE,IAAKrF,OAAO,CAACsF,SAAS,CAACD,EAAE,CAAC,CAAC;IAClFzE,YAAY,CAACK,SAAS,GAAGL,YAAY,CAACK,SAAS,CAACmE,GAAG,CAAEC,EAAE,IAAKrF,OAAO,CAACsF,SAAS,CAACD,EAAE,CAAC,CAAC;IAClF,MAAME,QAAQ,GAAG,IAAI/E,YAAY,CAACF,UAAU,CAACkF,IAAI,EAAEjF,KAAK,CAAC;IACzDgF,QAAQ,CAAC3E,YAAY,GAAGA,YAAY;IACpC,OAAO2E,QAAQ;EACnB;AACJ","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|