HEX
Server: Apache
System: Linux vps.mmtprep.com 4.18.0-477.21.1.el8_8.x86_64 #1 SMP Thu Aug 10 13:51:50 EDT 2023 x86_64
User: mmtprep (1001)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/5G12-pAKHMViJ.js.map
{"version":3,"file":"5G12-pAKHMViJ.js","sources":["../../src/exercices/5e/5G12.js"],"sourcesContent":["import { codageMilieu } from '../../lib/2d/codages.js'\nimport { tracePoint } from '../../lib/2d/points.js'\nimport { segment, vecteur } from '../../lib/2d/segmentsVecteurs.js'\nimport { labelPoint, texteParPosition } from '../../lib/2d/textes.js'\nimport { rotation, translation } from '../../lib/2d/transformations.js'\nimport { choice, shuffle } from '../../lib/outils/arrayOutils'\nimport { texcolors } from '../../lib/format/style'\nimport { nombreAvecEspace } from '../../lib/outils/texNombre.js'\nimport Exercice from '../Exercice.js'\nimport { colorToLatexOrHTML, mathalea2d } from '../../modules/2dGeneralites.js'\nimport { context } from '../../modules/context.js'\nimport { egal, listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport { rotationAnimee } from '../../modules/2dAnimation.js'\nimport { pavage } from '../../modules/Pavage.js'\nimport { ajouteChampTexteMathLive } from '../../lib/interactif/questionMathLive.js'\nimport { setReponse } from '../../lib/interactif/gestionInteractif.js'\nimport { miseEnEvidence } from '../../lib/outils/embellissements'\n\nexport const titre = 'Finding the image of a figure by central symmetry in a tiling'\nexport const interactifReady = true\nexport const interactifType = 'mathLive'\nexport const dateDeModifImportante = '23/07/2023'\n\n/**\n * Publié le 14/12/2020\n * Trouver l'image par symétrie centrale d'une figure dans un pavage\n * Version Latex & Html grâce à Mathalea2d\n * @author Jean-Claude Lhote\n * Ref 5G12\n */\nexport const uuid = '76ea9'\nexport const ref = '5G12'\nexport default function PavageEtDemiTour2D () {\n  Exercice.call(this) // Héritage de la classe Exercice()\n  this.titre = titre\n  this.consigne = ''\n  this.nbQuestions = 3\n  this.nbQuestionsModifiable = true\n  this.correctionDetailleeDisponible = true\n  this.correctionDetaillee = true\n  this.nbCols = 1\n  this.nbColsCorr = 1\n  this.sup = 1 // 1 pour des pavages modestes, 2 pour des plus grand.\n  this.sup2 = false // On cache les barycentres par défaut.\n  this.sup3 = 7\n  context.isHtml ? (this.spacingCorr = 2.5) : (this.spacingCorr = 1.5)\n  this.nouvelleVersion = function () {\n    this.sup = Number(this.sup)\n    this.sup3 = Number(this.sup3)\n    const videcouples = function (tableau) {\n      for (let k = 0; k < tableau.length; k++) {\n        for (let j = k + 1; j < tableau.length; j++) {\n          if (tableau[k][1] === tableau[j][0]) {\n            tableau.splice(j, 1)\n          }\n        }\n      }\n      return tableau\n    }\n    const videIdentite = function (tableau) {\n      for (let k = 0; k < tableau.length; k++) {\n        if (tableau[k][1] === tableau[k][0]) {\n          tableau.splice(k, 1)\n        }\n      }\n      return tableau\n    }\n    const compare2polys = function (poly1, poly2) {\n      if (comparenbsommets(poly1, poly2)) {\n        if (comparesommets(poly1, poly2)) {\n          return true\n        } else {\n          return false\n        }\n      } else {\n        return false\n      }\n    }\n    const comparenbsommets = function (poly1, poly2) {\n      if (poly1.listePoints.length === poly2.listePoints.length) {\n        return true\n      } else return false\n    }\n\n    const compare2sommets = function (sommet1, sommet2) {\n      if (egal(sommet1.x, sommet2.x, 0.1) && egal(sommet1.y, sommet2.y, 0.1)) {\n        return true\n      } else return false\n    }\n    const comparesommets = function (poly1, poly2) {\n      let trouve = false\n      let trouves = 0\n      if (comparenbsommets(poly1, poly2)) {\n        for (const P of poly1.listePoints) {\n          for (const M of poly2.listePoints) {\n            if (compare2sommets(M, P)) {\n              trouve = true\n            }\n            if (trouve) break\n          }\n          if (trouve) {\n            trouves++\n            trouve = false\n          } else {\n            trouves -= 100\n          }\n          if (trouves < 0) {\n            break\n          }\n        }\n      }\n      if (trouves === poly1.listePoints.length) {\n        return true\n      } else return false\n    }\n\n    const demitour = function (pavage, A, numero) { // retourne le numero du polygone symétrique ou -1 si il n'existe pas\n      const poly = pavage.polygones[numero - 1]\n      let pol\n      const result = -1\n      const sympoly = rotation(poly, A, 180)\n      for (let k = 0; k < pavage.polygones.length; k++) {\n        pol = pavage.polygones[k]\n        if (compare2polys(sympoly, pol)) {\n          return k + 1\n        }\n      }\n      return result\n    }\n\n    const objets = []\n    const objetsCorrection = []\n    let P1\n    let P2\n    let P3\n    let G1\n    let G2\n    let t\n    const codes = ['/', '//', '///', 'o', 'w', 'X', 'U', '*']\n    let taillePavage = this.sup\n    if (taillePavage < 1 || taillePavage > 2) {\n      taillePavage = 1\n    }\n    if (this.nbQuestions > 5) {\n      taillePavage = 2\n    }\n    this.listeCorrections = []\n    this.listeQuestions = []\n    this.autoCorrection = []\n    let Nx\n    let Ny\n    let index1\n    let A\n    let B\n    let d\n    let image\n    let couples = []\n    let tailles = []\n    let monpavage\n    let fenetre\n    let texte = ''\n    let texteCorr = ''\n    let typeDePavage = this.sup\n    let nombreTentatives\n    let nombrePavageTestes = 1\n    if (this.sup3 === 8) {\n      typeDePavage = randint(1, 7)\n    } else {\n      typeDePavage = this.sup3\n    }\n    while (couples.length < this.nbQuestions && nombrePavageTestes < 6) {\n      nombreTentatives = 0\n      monpavage = pavage() // On crée l'Tile object that goes s'appeler monpavage\n      tailles = [[[3, 2], [3, 2], [2, 2], [2, 2], [2, 2], [2, 2], [3, 2]], [[4, 3], [4, 3], [3, 3], [3, 3], [3, 3], [3, 2], [5, 3]]]\n      Nx = tailles[taillePavage - 1][typeDePavage - 1][0]\n      Ny = tailles[taillePavage - 1][typeDePavage - 1][1]\n      monpavage.construit(typeDePavage, Nx, Ny, 3) // On initialise toutes les propriétés de l'objet.\n      fenetre = monpavage.fenetre\n      context.fenetreMathalea2d = [fenetre.xmin, fenetre.ymin, fenetre.xmax, fenetre.ymax]\n      while (couples.length < this.nbQuestions + 2 && nombreTentatives < 3) { // On cherche d pour avoir suffisamment de couples\n        couples = [] // On vide la liste des couples pour une nouvelle recherche\n\n        index1 = randint(Math.floor(monpavage.nb_polygones / 3), Math.ceil(monpavage.nb_polygones * 2 / 3)) // On choisit 1 point dans un des polygones\n        if (choice([true, false])) {\n          A = monpavage.polygones[index1].listePoints[randint(0, monpavage.polygones[index1].listePoints.length - 1)] // On choisit un sommet\n        } else {\n          A = monpavage.barycentres[index1] // Ou on choisit un barycentre\n        }\n        while (A.x - 5 < fenetre.xmin || A.x + 5 > fenetre.xmax || A.y - 5 < fenetre.ymin || A.y + 5 > fenetre.ymax) {\n          index1 = randint(Math.floor(monpavage.nb_polygones / 3), Math.ceil(monpavage.nb_polygones * 2 / 3)) // On choisit 1 point dans un des polygones\n          if (choice([true, false])) {\n            A = monpavage.polygones[index1].listePoints[randint(0, monpavage.polygones[index1].listePoints.length - 1)] // On choisit un sommet\n          } else {\n            A = monpavage.barycentres[index1] // Ou on choisit un barycentre\n          }\n        }\n        A.nom = 'A'\n        A.positionLabel = 'above left'\n        d = tracePoint(A, 'red') // la trace du centre de symétrie sera rouge et grosse\n        B = labelPoint(A)\n        d.epaisseur = 3\n        d.taille = 4\n        for (let i = 1; i <= monpavage.nb_polygones; i++) { // on crée une liste des couples (antécédents, images)\n          image = demitour(monpavage, A, i)\n          if (image !== -1) { // si l'image du polygone i existe, on ajoute le couple à la liste\n            couples.push([i, image])\n          }\n        }\n        couples = videcouples(couples) // supprime tous les couples en double (x,y)=(y,x)\n        couples = videIdentite(couples) // supprime tous les couples (x,x)\n        nombreTentatives++\n      }\n      if (couples.length < this.nbQuestions) {\n        if (this.sup3 === 7) {\n          typeDePavage = (typeDePavage + 1) % 5 + 1\n        }\n        nombrePavageTestes++\n      }\n    }\n    if (couples.length < this.nbQuestions) {\n      console.log('too many questions, increase the tiling size')\n      return\n    }\n\n    objets.push(d) // le centre est OK on pousse sa trace\n    objets.push(B) // et son label\n    couples = shuffle(couples) // on mélange les couples\n    for (let i = 0; i < monpavage.nb_polygones; i++) {\n      objets.push(texteParPosition(nombreAvecEspace(i + 1), monpavage.barycentres[i].x + 0.5, monpavage.barycentres[i].y, 'medium', 'gray', 1, 0, true))\n    }\n    if (this.sup2) { // Doit-on montrer les centres des figures ?\n      for (let i = 0; i < monpavage.nb_polygones; i++) {\n        objets.push(monpavage.tracesCentres[i])\n      }\n    }\n    for (let i = 0; i < monpavage.nb_polygones; i++) { // il faut afficher tous les polygones du pavage\n      objets.push(monpavage.polygones[i])\n    }\n    texte = mathalea2d(fenetre, objets) // monpavage.fenetre est calibrée pour faire entrer le pavage dans une feuille A4\n    texte += '<br>'\n    for (let i = 0; i < this.nbQuestions; i++) {\n      texte += `Give the number of the image of the figure $${couples[i][0]}$ in the symmetry of center $A$.`\n      setReponse(this, i, couples[i][1])\n      texte += ajouteChampTexteMathLive(this, i, 'inline width72') + '<br>'\n      texteCorr += `The image of the figure $${couples[i][0]}$ in the symmetry with center $A$ is the figure $${miseEnEvidence(couples[i][1])}$.<br>`\n      if (this.correctionDetaillee) {\n        t = this.nbQuestions * 3\n        G1 = monpavage.barycentres[couples[i][0] - 1]\n        G2 = monpavage.barycentres[couples[i][1] - 1]\n        P1 = translation(monpavage.polygones[couples[i][0] - 1], vecteur(0, 0)) // il faut créer un nouvel objet sinon on pointe vers le polygone du pavage qui est transparent !\n        P1.color = colorToLatexOrHTML(texcolors(i))\n        P1.couleurDeRemplissage = colorToLatexOrHTML(texcolors(i))\n        P1.opaciteDeRemplissage = 0.5\n        P1.epaisseur = 2\n        P2 = translation(monpavage.polygones[couples[i][1] - 1], vecteur(0, 0))\n        P2.color = colorToLatexOrHTML(texcolors(i))\n        P2.couleurDeRemplissage = colorToLatexOrHTML(texcolors(i))\n        P2.opaciteDeRemplissage = 0.5\n        P2.epaisseur = 2\n        P3 = rotationAnimee(P1, A, 180, `begin=\"${i * 3}s;${i * 3 + t}s;${i * 3 + t * 2}s\" end=\"${i * 3 + 2}s;${i * 3 + t + 2}s;${i * 3 + t * 2 + 2}s\" dur=\"2s\" repeatCount=\"indefinite\" repeatDur=\"${9 * this.nbQuestions}s\" id=\"poly-${i}-anim\"`)\n        P3.color = colorToLatexOrHTML(texcolors(i))\n        P3.epaisseur = 2\n        objetsCorrection.push(tracePoint(G1, G2), segment(G1, G2, texcolors(i)), codageMilieu(G1, G2, texcolors(i), codes[i], false), P1, P2)\n        if (context.isHtml) objetsCorrection.push(P3)\n      }\n    }\n    if (this.correctionDetaillee) {\n      texteCorr += mathalea2d(fenetre, objets, objetsCorrection)\n    }\n    this.listeQuestions.push(texte)\n    this.listeCorrections.push(texteCorr)\n    listeQuestionsToContenu(this)\n  }\n  this.besoinFormulaireNumerique = ['Size of the tiling (the large one is automatic beyond 5 questions)', 2, ' 1: Modest size\\n2: Large size']\n  this.besoinFormulaire2CaseACocher = ['Show centers']\n  this.besoinFormulaire3Numerique = ['Choice of paving', 8, '1: Equilateral triangles\\n2: Squares\\n3: Regular hexagons\\n4: Squares and equilateral triangles\\n5: Octagons and squares\\n 6: Rhombuses (school hexagonal tiling)\\n7: Hexagons and equilateral triangles\\n8: One of seven random tilings']\n}\n"],"names":["titre","interactifReady","interactifType","dateDeModifImportante","uuid","ref","PavageEtDemiTour2D","Exercice","context","videcouples","tableau","k","j","videIdentite","compare2polys","poly1","poly2","comparenbsommets","comparesommets","compare2sommets","sommet1","sommet2","egal","trouve","trouves","P","M","demitour","pavage","A","numero","poly","pol","result","sympoly","rotation","objets","objetsCorrection","P1","P2","P3","G1","G2","t","codes","taillePavage","Nx","Ny","index1","B","d","image","couples","tailles","monpavage","fenetre","texte","texteCorr","typeDePavage","nombreTentatives","nombrePavageTestes","randint","choice","tracePoint","labelPoint","i","shuffle","texteParPosition","nombreAvecEspace","mathalea2d","setReponse","ajouteChampTexteMathLive","miseEnEvidence","translation","vecteur","colorToLatexOrHTML","texcolors","rotationAnimee","segment","codageMilieu","listeQuestionsToContenu"],"mappings":"+TAkBY,MAACA,GAAQ,gEACRC,GAAkB,GAClBC,GAAiB,WACjBC,GAAwB,aASxBC,GAAO,QACPC,GAAM,OACJ,SAASC,IAAsB,CAC5CC,EAAS,KAAK,IAAI,EAClB,KAAK,MAAQP,GACb,KAAK,SAAW,GAChB,KAAK,YAAc,EACnB,KAAK,sBAAwB,GAC7B,KAAK,8BAAgC,GACrC,KAAK,oBAAsB,GAC3B,KAAK,OAAS,EACd,KAAK,WAAa,EAClB,KAAK,IAAM,EACX,KAAK,KAAO,GACZ,KAAK,KAAO,EACZQ,EAAQ,OAAU,KAAK,YAAc,IAAQ,KAAK,YAAc,IAChE,KAAK,gBAAkB,UAAY,CACjC,KAAK,IAAM,OAAO,KAAK,GAAG,EAC1B,KAAK,KAAO,OAAO,KAAK,IAAI,EAC5B,MAAMC,EAAc,SAAUC,EAAS,CACrC,QAASC,EAAI,EAAGA,EAAID,EAAQ,OAAQC,IAClC,QAASC,EAAID,EAAI,EAAGC,EAAIF,EAAQ,OAAQE,IAClCF,EAAQC,CAAC,EAAE,CAAC,IAAMD,EAAQE,CAAC,EAAE,CAAC,GAChCF,EAAQ,OAAOE,EAAG,CAAC,EAIzB,OAAOF,CACR,EACKG,EAAe,SAAUH,EAAS,CACtC,QAASC,EAAI,EAAGA,EAAID,EAAQ,OAAQC,IAC9BD,EAAQC,CAAC,EAAE,CAAC,IAAMD,EAAQC,CAAC,EAAE,CAAC,GAChCD,EAAQ,OAAOC,EAAG,CAAC,EAGvB,OAAOD,CACR,EACKI,EAAgB,SAAUC,EAAOC,EAAO,CAC5C,OAAIC,EAAiBF,EAAOC,CAAK,EAC3B,EAAAE,EAAeH,EAAOC,CAAK,EAMxB,EAEV,EACKC,EAAmB,SAAUF,EAAOC,EAAO,CAC/C,OAAID,EAAM,YAAY,SAAWC,EAAM,YAAY,MAGpD,EAEKG,EAAkB,SAAUC,EAASC,EAAS,CAClD,MAAI,GAAAC,EAAKF,EAAQ,EAAGC,EAAQ,EAAG,EAAG,GAAKC,EAAKF,EAAQ,EAAGC,EAAQ,EAAG,EAAG,EAGtE,EACKH,EAAiB,SAAUH,EAAOC,EAAO,CAC7C,IAAIO,EAAS,GACTC,EAAU,EACd,GAAIP,EAAiBF,EAAOC,CAAK,EAC/B,UAAWS,KAAKV,EAAM,YAAa,CACjC,UAAWW,KAAKV,EAAM,YAIpB,GAHIG,EAAgBO,EAAGD,CAAC,IACtBF,EAAS,IAEPA,EAAQ,MAQd,GANIA,GACFC,IACAD,EAAS,IAETC,GAAW,IAETA,EAAU,EACZ,KAEH,CAEH,OAAIA,IAAYT,EAAM,YAAY,MAGnC,EAEKY,EAAW,SAAUC,EAAQC,EAAGC,EAAQ,CAC5C,MAAMC,EAAOH,EAAO,UAAUE,EAAS,CAAC,EACxC,IAAIE,EACJ,MAAMC,EAAS,GACTC,EAAUC,GAASJ,EAAMF,EAAG,GAAG,EACrC,QAASlB,EAAI,EAAGA,EAAIiB,EAAO,UAAU,OAAQjB,IAE3C,GADAqB,EAAMJ,EAAO,UAAUjB,CAAC,EACpBG,EAAcoB,EAASF,CAAG,EAC5B,OAAOrB,EAAI,EAGf,OAAOsB,CACR,EAEKG,EAAS,CAAE,EACXC,EAAmB,CAAE,EAC3B,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACJ,MAAMC,EAAQ,CAAC,IAAK,KAAM,MAAO,IAAK,IAAK,IAAK,IAAK,GAAG,EACxD,IAAIC,EAAe,KAAK,KACpBA,EAAe,GAAKA,EAAe,KACrCA,EAAe,GAEb,KAAK,YAAc,IACrBA,EAAe,GAEjB,KAAK,iBAAmB,CAAE,EAC1B,KAAK,eAAiB,CAAE,EACxB,KAAK,eAAiB,CAAE,EACxB,IAAIC,EACAC,EACAC,EACAnB,EACAoB,EACAC,EACAC,EACAC,EAAU,CAAE,EACZC,EAAU,CAAE,EACZC,EACAC,EACAC,EAAQ,GACRC,EAAY,GACZC,EAAe,KAAK,IACpBC,EACAC,EAAqB,EAMzB,IALI,KAAK,OAAS,EAChBF,EAAeG,EAAQ,EAAG,CAAC,EAE3BH,EAAe,KAAK,KAEfN,EAAQ,OAAS,KAAK,aAAeQ,EAAqB,GAAG,CASlE,IARAD,EAAmB,EACnBL,EAAY1B,GAAQ,EACpByB,EAAU,CAAC,CAAC,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,EAAG,CAAC,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,EAAG,CAAC,CAAC,CAAC,EAC7HP,EAAKO,EAAQR,EAAe,CAAC,EAAEa,EAAe,CAAC,EAAE,CAAC,EAClDX,EAAKM,EAAQR,EAAe,CAAC,EAAEa,EAAe,CAAC,EAAE,CAAC,EAClDJ,EAAU,UAAUI,EAAcZ,EAAIC,EAAI,CAAC,EAC3CQ,EAAUD,EAAU,QACpB9C,EAAQ,kBAAoB,CAAC+C,EAAQ,KAAMA,EAAQ,KAAMA,EAAQ,KAAMA,EAAQ,IAAI,EAC5EH,EAAQ,OAAS,KAAK,YAAc,GAAKO,EAAmB,GAAG,CASpE,IARAP,EAAU,CAAE,EAEZJ,EAASa,EAAQ,KAAK,MAAMP,EAAU,aAAe,CAAC,EAAG,KAAK,KAAKA,EAAU,aAAe,EAAI,CAAC,CAAC,EAC9FQ,EAAO,CAAC,GAAM,EAAK,CAAC,EACtBjC,EAAIyB,EAAU,UAAUN,CAAM,EAAE,YAAYa,EAAQ,EAAGP,EAAU,UAAUN,CAAM,EAAE,YAAY,OAAS,CAAC,CAAC,EAE1GnB,EAAIyB,EAAU,YAAYN,CAAM,EAE3BnB,EAAE,EAAI,EAAI0B,EAAQ,MAAQ1B,EAAE,EAAI,EAAI0B,EAAQ,MAAQ1B,EAAE,EAAI,EAAI0B,EAAQ,MAAQ1B,EAAE,EAAI,EAAI0B,EAAQ,MACrGP,EAASa,EAAQ,KAAK,MAAMP,EAAU,aAAe,CAAC,EAAG,KAAK,KAAKA,EAAU,aAAe,EAAI,CAAC,CAAC,EAC9FQ,EAAO,CAAC,GAAM,EAAK,CAAC,EACtBjC,EAAIyB,EAAU,UAAUN,CAAM,EAAE,YAAYa,EAAQ,EAAGP,EAAU,UAAUN,CAAM,EAAE,YAAY,OAAS,CAAC,CAAC,EAE1GnB,EAAIyB,EAAU,YAAYN,CAAM,EAGpCnB,EAAE,IAAM,IACRA,EAAE,cAAgB,aAClBqB,EAAIa,EAAWlC,EAAG,KAAK,EACvBoB,EAAIe,EAAWnC,CAAC,EAChBqB,EAAE,UAAY,EACdA,EAAE,OAAS,EACX,QAASe,EAAI,EAAGA,GAAKX,EAAU,aAAcW,IAC3Cd,EAAQxB,EAAS2B,EAAWzB,EAAGoC,CAAC,EAC5Bd,IAAU,IACZC,EAAQ,KAAK,CAACa,EAAGd,CAAK,CAAC,EAG3BC,EAAU3C,EAAY2C,CAAO,EAC7BA,EAAUvC,EAAauC,CAAO,EAC9BO,GACD,CACGP,EAAQ,OAAS,KAAK,cACpB,KAAK,OAAS,IAChBM,GAAgBA,EAAe,GAAK,EAAI,GAE1CE,IAEH,CACD,GAAIR,EAAQ,OAAS,KAAK,YAAa,CACrC,QAAQ,IAAI,8CAA8C,EAC1D,MACD,CAEDhB,EAAO,KAAKc,CAAC,EACbd,EAAO,KAAKa,CAAC,EACbG,EAAUc,EAAQd,CAAO,EACzB,QAASa,EAAI,EAAGA,EAAIX,EAAU,aAAcW,IAC1C7B,EAAO,KAAK+B,GAAiBC,GAAiBH,EAAI,CAAC,EAAGX,EAAU,YAAYW,CAAC,EAAE,EAAI,GAAKX,EAAU,YAAYW,CAAC,EAAE,EAAG,SAAU,OAAQ,EAAG,EAAG,EAAI,CAAC,EAEnJ,GAAI,KAAK,KACP,QAASA,EAAI,EAAGA,EAAIX,EAAU,aAAcW,IAC1C7B,EAAO,KAAKkB,EAAU,cAAcW,CAAC,CAAC,EAG1C,QAASA,EAAI,EAAGA,EAAIX,EAAU,aAAcW,IAC1C7B,EAAO,KAAKkB,EAAU,UAAUW,CAAC,CAAC,EAEpCT,EAAQa,EAAWd,EAASnB,CAAM,EAClCoB,GAAS,OACT,QAASS,EAAI,EAAGA,EAAI,KAAK,YAAaA,IACpCT,GAAS,+CAA+CJ,EAAQa,CAAC,EAAE,CAAC,CAAC,mCACrEK,GAAW,KAAML,EAAGb,EAAQa,CAAC,EAAE,CAAC,CAAC,EACjCT,GAASe,GAAyB,KAAMN,EAAG,gBAAgB,EAAI,OAC/DR,GAAa,4BAA4BL,EAAQa,CAAC,EAAE,CAAC,CAAC,oDAAoDO,GAAepB,EAAQa,CAAC,EAAE,CAAC,CAAC,CAAC,SACnI,KAAK,sBACPtB,EAAI,KAAK,YAAc,EACvBF,EAAKa,EAAU,YAAYF,EAAQa,CAAC,EAAE,CAAC,EAAI,CAAC,EAC5CvB,EAAKY,EAAU,YAAYF,EAAQa,CAAC,EAAE,CAAC,EAAI,CAAC,EAC5C3B,EAAKmC,EAAYnB,EAAU,UAAUF,EAAQa,CAAC,EAAE,CAAC,EAAI,CAAC,EAAGS,EAAQ,EAAG,CAAC,CAAC,EACtEpC,EAAG,MAAQqC,EAAmBC,EAAUX,CAAC,CAAC,EAC1C3B,EAAG,qBAAuBqC,EAAmBC,EAAUX,CAAC,CAAC,EACzD3B,EAAG,qBAAuB,GAC1BA,EAAG,UAAY,EACfC,EAAKkC,EAAYnB,EAAU,UAAUF,EAAQa,CAAC,EAAE,CAAC,EAAI,CAAC,EAAGS,EAAQ,EAAG,CAAC,CAAC,EACtEnC,EAAG,MAAQoC,EAAmBC,EAAUX,CAAC,CAAC,EAC1C1B,EAAG,qBAAuBoC,EAAmBC,EAAUX,CAAC,CAAC,EACzD1B,EAAG,qBAAuB,GAC1BA,EAAG,UAAY,EACfC,EAAKqC,GAAevC,EAAIT,EAAG,IAAK,UAAUoC,EAAI,CAAC,KAAKA,EAAI,EAAItB,CAAC,KAAKsB,EAAI,EAAItB,EAAI,CAAC,WAAWsB,EAAI,EAAI,CAAC,KAAKA,EAAI,EAAItB,EAAI,CAAC,KAAKsB,EAAI,EAAItB,EAAI,EAAI,CAAC,mDAAmD,EAAI,KAAK,WAAW,eAAesB,CAAC,QAAQ,EAC1OzB,EAAG,MAAQmC,EAAmBC,EAAUX,CAAC,CAAC,EAC1CzB,EAAG,UAAY,EACfH,EAAiB,KAAK0B,EAAWtB,EAAIC,CAAE,EAAGoC,GAAQrC,EAAIC,EAAIkC,EAAUX,CAAC,CAAC,EAAGc,GAAatC,EAAIC,EAAIkC,EAAUX,CAAC,EAAGrB,EAAMqB,CAAC,EAAG,EAAK,EAAG3B,EAAIC,CAAE,EAChI/B,EAAQ,QAAQ6B,EAAiB,KAAKG,CAAE,GAG5C,KAAK,sBACPiB,GAAaY,EAAWd,EAASnB,EAAQC,CAAgB,GAE3D,KAAK,eAAe,KAAKmB,CAAK,EAC9B,KAAK,iBAAiB,KAAKC,CAAS,EACpCuB,GAAwB,IAAI,CAC7B,EACD,KAAK,0BAA4B,CAAC,qEAAsE,EAAG;AAAA,cAAgC,EAC3I,KAAK,6BAA+B,CAAC,cAAc,EACnD,KAAK,2BAA6B,CAAC,mBAAoB,EAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,+BAA0O,CACtS"}