{"version":3,"file":"validacao-brasil.mjs","sources":["../../../projects/validacao-brasil/src/lib/utils/utils.ts","../../../projects/validacao-brasil/src/lib/diretivas/celular/celular.directive.ts","../../../projects/validacao-brasil/src/lib/diretivas/cep/cep.directive.ts","../../../projects/validacao-brasil/src/lib/diretivas/cnpj/cnpj.directive.ts","../../../projects/validacao-brasil/src/lib/diretivas/cpf/cpf.directive.ts","../../../projects/validacao-brasil/src/lib/diretivas/telefone/telefone.directive.ts","../../../projects/validacao-brasil/src/lib/diretivas/so-letras-com-espaco/so-letras-com-espaco.directive.ts","../../../projects/validacao-brasil/src/lib/diretivas/so-letras-sem-espaco/so-letras-sem-espaco.directive.ts","../../../projects/validacao-brasil/src/lib/diretivas/so-numero-com-espaco/so-numero-com-espaco.directive.ts","../../../projects/validacao-brasil/src/lib/diretivas/so-numero-sem-espaco/so-numero-sem-espaco.directive.ts","../../../projects/validacao-brasil/src/lib/diretivas/data/data.directive.ts","../../../projects/validacao-brasil/src/lib/diretivas/titulo-eleitor/titulo-eleitor.directive.ts","../../../projects/validacao-brasil/src/lib/pipes/celular/celular.pipe.ts","../../../projects/validacao-brasil/src/lib/pipes/cep/cep.pipe.ts","../../../projects/validacao-brasil/src/lib/pipes/cnpj/cnpj.pipe.ts","../../../projects/validacao-brasil/src/lib/pipes/cpf/cpf.pipe.ts","../../../projects/validacao-brasil/src/lib/pipes/telefone/telefone.pipe.ts","../../../projects/validacao-brasil/src/lib/validacao-brasil.module.ts","../../../projects/validacao-brasil/src/lib/validators/validacao.brasil.ts","../../../projects/validacao-brasil/src/public-api.ts","../../../projects/validacao-brasil/src/validacao-brasil.ts"],"sourcesContent":["import { ElementRef } from \"@angular/core\";\r\n\r\nexport class Utils {\r\n    static soLetras(event: KeyboardEvent) {\r\n        return /([A-Za-z])/g.test(event.key) ? true : false;\r\n    }\r\n\r\n    static soNumeros(event: KeyboardEvent) {\r\n        return /([0-9])/g.test(event.key) ? true : false;\r\n    }\r\n\r\n    static soNumerosComPonto(event: KeyboardEvent) {\r\n        return /([0-9]|\\.)/g.test(event.key) ? true : false;\r\n    }\r\n\r\n    static soNumerosComVirgula(event: KeyboardEvent) {\r\n        return /([0-9]|\\,)/g.test(event.key) ? true : false;\r\n    }\r\n\r\n    static backSpace(event: KeyboardEvent) {\r\n        switch (event.key) {\r\n            case 'Backspace':\r\n                return true\r\n            default:\r\n                return false;\r\n        }\r\n    }\r\n\r\n    static setasEBackSpace(event: KeyboardEvent) {\r\n        switch (event.key) {\r\n            case 'Backspace':\r\n                return true\r\n            case 'ArrowLeft':\r\n                return true\r\n            case 'ArrowRight':\r\n                return true\r\n            default:\r\n                return false;\r\n        }\r\n    }\r\n\r\n    static setasEBackSpaceESpace(event: KeyboardEvent) {\r\n        \r\n        switch (event.key) {\r\n            case 'Backspace':\r\n                return true\r\n            case 'ArrowLeft':\r\n                return true\r\n            case 'ArrowRight':\r\n                return true\r\n            case ' ':\r\n                return true\r\n            default:\r\n                return false;\r\n        }\r\n    }\r\n\r\n    static retornaSoNumero(frase: string) {\r\n        return frase.replace(/([^0-9])/g, '');\r\n    }\r\n\r\n    static retornaSoLetras(frase: string) {\r\n        return frase.replace(/([^A-Za-z])/g, '');\r\n    }\r\n\r\n    static addMascaraCpf(numeros: string, tamMax: number): string {\r\n\r\n        if (numeros.length < tamMax) {\r\n            numeros =\r\n                numeros\r\n                    .replace(/\\D/g, '')\r\n                    .replace(/(\\d{3})(\\d)/, '$1.$2')\r\n                    .replace(/(\\d{3})(\\d)/, '$1.$2')\r\n                    .replace(/(\\d{3})(\\d{1,2})/, '$1-$2');\r\n        }\r\n\r\n        return numeros;\r\n    }\r\n\r\n    static addMascaraCnpj(numeros: string, tamMax: number) {\r\n\r\n        if (numeros.length < tamMax) {\r\n            numeros =\r\n                numeros\r\n                    .replace(/\\D/g, '')\r\n                    .replace(/(\\d{2})(\\d)/, '$1.$2')\r\n                    .replace(/(\\d{3})(\\d)/, '$1.$2')\r\n                    .replace(/(\\d{3})(\\d{2})/, '$1/$2')\r\n                    .replace(/(\\d{4})(\\d{1,2})/, '$1-$2');\r\n        }\r\n\r\n        return numeros;\r\n    }\r\n\r\n    static addMascaraCep(numeros: string, tamMax: number) {\r\n\r\n        if (numeros.length < tamMax) {\r\n            numeros =\r\n                numeros\r\n                    .replace(/\\D/g, '')\r\n                    .replace(/(\\d{5})(\\d)/, '$1-$2')\r\n                    .replace(/^(\\d{5})(\\d{1,2,3})/, '$1-$2');\r\n        }\r\n\r\n        return numeros;\r\n    }\r\n\r\n    static addMascaraTelefone(numeros: string, tamMax: number, ddd: boolean = true, ddd3Digitos: boolean = false) {\r\n\r\n        if (numeros.length < tamMax) {\r\n\r\n            if (ddd && !ddd3Digitos) {\r\n                numeros =\r\n                    numeros\r\n                        .replace(/\\D/g, '')\r\n                        .replace(/(\\d{2})(\\d)/, '($1) $2')\r\n                        .replace(/(\\d{4})(\\d)/, '$1-$2');\r\n\r\n            } else if (ddd && ddd3Digitos) {\r\n                numeros =\r\n                    numeros\r\n                        .replace(/\\D/g, '')\r\n                        .replace(/(\\d{3})(\\d)/, '($1) $2')\r\n                        .replace(/(\\d{4})(\\d)/, '$1-$2');\r\n\r\n            } else {\r\n                numeros =\r\n                    numeros\r\n                        .replace(/\\D/g, '')\r\n                        .replace(/(\\d{4})(\\d)/, '$1-$2');\r\n\r\n            }\r\n\r\n        }\r\n\r\n        return numeros;\r\n    }\r\n\r\n    static addMascaraCelular(numeros: string, tamMax: number, ddd: boolean = true, ddd3Digitos: boolean = false) {\r\n\r\n        if (numeros.length < tamMax) {\r\n\r\n            if (ddd && !ddd3Digitos) {\r\n                numeros =\r\n                    numeros\r\n                        .replace(/\\D/g, '')\r\n                        .replace(/(\\d{2})(\\d)/, '($1) $2')\r\n                        .replace(/(\\d{5})(\\d)/, '$1-$2');\r\n\r\n            } else if (ddd && ddd3Digitos) {\r\n                numeros =\r\n                    numeros\r\n                        .replace(/\\D/g, '')\r\n                        .replace(/(\\d{3})(\\d)/, '($1) $2')\r\n                        .replace(/(\\d{4})(\\d)/, '$1-$2');\r\n\r\n            } else {\r\n                numeros =\r\n                    numeros\r\n                        .replace(/\\D/g, '')\r\n                        .replace(/(\\d{5})(\\d)/, '$1-$2');\r\n            }\r\n        }\r\n\r\n        return numeros;\r\n    }\r\n\r\n    static addMascaraData(data: string, tamMax: number) {\r\n\r\n        if (data.length < tamMax) {\r\n            data =\r\n                data\r\n                    .replace(/\\D/g, '')\r\n                    .replace(/(\\d{2})(\\d)/, '$1/$2')\r\n                    .replace(/(\\d{2})(\\d)/, '$1/$2');\r\n        }\r\n\r\n        return data;\r\n    }\r\n\r\n    static addMascaraTituloEleitor(titulo: string, tamMax: number) {\r\n\r\n        if (titulo.length < tamMax) {\r\n            titulo =\r\n                titulo\r\n                    .replace(/\\D/g, '')\r\n                    .replace(/(\\d{4})(\\d)/, '$1 $2')\r\n                    .replace(/(\\d{4})(\\d)/, '$1 $2');\r\n        }\r\n\r\n        return titulo;\r\n    }\r\n}","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Directive({\n  selector: '[bCelular]'\n})\nexport class CelularDirective {\n\n  @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n    this.keyDown(event)\n  }\n\n  @Input() ddd: boolean = true;\n  @Input() ddd3Digitos: boolean = false;\n\n  tamMax: number = 10;\n\n  constructor(\n    private el: ElementRef,\n  ) { }\n\n  ngOnInit() {\n    if (this.ddd && this.ddd3Digitos) {\n      this.tamMax = 12;\n    } else if (this.ddd && !this.ddd3Digitos) {\n      this.tamMax = 11;\n    } else {\n      this.tamMax = 9;\n    }\n  }\n\n  keyDown(event: KeyboardEvent) {\n\n    const numeros = Utils.retornaSoNumero(this.el.nativeElement.value);\n\n    if ((Utils.soNumeros(event)) && ((numeros.length) < this.tamMax) || Utils.backSpace(event)) {\n\n      if (numeros) {\n        this.el.nativeElement.value = Utils.addMascaraCelular(numeros, this.tamMax, this.ddd, this.ddd3Digitos);\n      }\n    } else {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Directive({\n  selector: '[bCep]'\n})\nexport class CepDirective {\n\n  @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n    this.keyDown(event)\n  }\n\n  tamMax: number = 8;\n\n  constructor(\n    private el: ElementRef,\n  ) {}\n\n  keyDown(event: KeyboardEvent) {\n\n    const numeros = Utils.retornaSoNumero(this.el.nativeElement.value);\n\n    if ((Utils.soNumeros(event)) && ((numeros.length) < this.tamMax) || Utils.backSpace(event)) {\n\n      if (numeros) {\n        this.el.nativeElement.value = Utils.addMascaraCep(numeros, this.tamMax);\n      }\n    } else {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Directive({\n  selector: '[bCnpj]'\n})\nexport class CnpjDirective {\n\n  @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n    this.keyDown(event)\n  }\n\n  tamMax: number = 14;\n\n  constructor(\n    private el: ElementRef,\n  ) {}\n\n  keyDown(event: KeyboardEvent) {\n\n    const numeros = Utils.retornaSoNumero(this.el.nativeElement.value);\n\n    if ((Utils.soNumeros(event)) && ((numeros.length) < this.tamMax) || Utils.backSpace(event)) {\n\n      if (numeros) {\n        this.el.nativeElement.value = Utils.addMascaraCnpj(numeros, this.tamMax);\n      }\n    } else {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Directive({\n  selector: '[bCpf]'\n})\nexport class CpfDirective {\n\n  @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n    this.keyDown(event)\n  }\n\n  tamMax: number = 11;\n\n  constructor(\n    private el: ElementRef,\n  ) { }\n\n  keyDown(event: KeyboardEvent) {\n\n    const numeros = Utils.retornaSoNumero(this.el.nativeElement.value);\n\n    if ((Utils.soNumeros(event)) && ((numeros.length) < this.tamMax) || Utils.backSpace(event)) {\n\n      if (numeros) {\n        this.el.nativeElement.value = Utils.addMascaraCpf(numeros, this.tamMax);\n      }\n    } else {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Directive({\n  selector: '[bTelefone]'\n})\nexport class TelefoneDirective {\n\n  @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n    this.keyDown(event)\n  }\n\n  @Input() ddd: boolean = true;\n  @Input() ddd3Digitos: boolean = false;\n\n  tamMax: number = 10;\n\n  constructor(\n    private el: ElementRef,\n  ) { }\n\n  ngOnInit() {\n    if (this.ddd && this.ddd3Digitos) {\n      this.tamMax = 11;\n    } else if (this.ddd && !this.ddd3Digitos) {\n      this.tamMax = 10;\n    } else {\n      this.tamMax = 8;\n    }\n  }\n\n  keyDown(event: KeyboardEvent) {\n\n    const numeros = Utils.retornaSoNumero(this.el.nativeElement.value);\n\n    if ((Utils.soNumeros(event)) && ((numeros.length) < this.tamMax) || Utils.backSpace(event)) {\n\n      if (numeros) {\n        this.el.nativeElement.value = Utils.addMascaraTelefone(numeros, this.tamMax, this.ddd, this.ddd3Digitos);\n      }\n    } else {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Directive({\n  selector: '[bSoLetrasComEspaco]'\n})\nexport class SoLetrasComEspacoDirective {\n\n  @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n    this.keyDown(event)\n  }\n\n  @Input() tamMax: number = 99999;\n\n  constructor(\n    private el: ElementRef,\n  ) { }\n\n  keyDown(event: KeyboardEvent) {\n\n    const frase = Utils.retornaSoLetras(this.el.nativeElement.value);\n\n    if ((Utils.soLetras(event)) && ((frase.length) < this.tamMax) || Utils.setasEBackSpaceESpace(event)) {\n      return;\n    } else {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Directive({\n  selector: '[bSoLetrasSemEspaco]'\n})\nexport class SoLetrasSemEspacoDirective {\n\n  @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n    this.keyDown(event)\n  }\n\n  @Input() tamMax: number = 99999;\n\n  constructor(\n    private el: ElementRef,\n  ) { }\n\n  keyDown(event: KeyboardEvent) {\n\n    const frase = Utils.retornaSoLetras(this.el.nativeElement.value);\n\n    if ((Utils.soLetras(event)) && ((frase.length) < this.tamMax) || Utils.setasEBackSpace(event)) {\n      return;\n    } else {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Directive({\n  selector: '[bSoNumeroComEspaco]'\n})\nexport class SoNumeroComEspacoDirective {\n\n  @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n    this.keyDown(event)\n  }\n\n  @Input() tamMax: number = 99999;\n\n  constructor(\n    private el: ElementRef,\n  ) { }\n\n  keyDown(event: KeyboardEvent) {\n\n    const numeros = Utils.retornaSoNumero(this.el.nativeElement.value);\n\n    if ((Utils.soNumeros(event)) && ((numeros.length) < this.tamMax) || Utils.setasEBackSpaceESpace(event)) {\n      return;\n    } else {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Directive({\n  selector: '[bSoNumeroSemEspaco]'\n})\nexport class SoNumeroSemEspacoDirective {\n\n  @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n    this.keyDown(event)\n  }\n\n  @Input() tamMax: number = 99999;\n\n  constructor(\n    private el: ElementRef,\n  ) { }\n\n  keyDown(event: KeyboardEvent) {\n\n    const numeros = Utils.retornaSoNumero(this.el.nativeElement.value);\n\n    if ((Utils.soNumeros(event)) && ((numeros.length) < this.tamMax) || Utils.setasEBackSpace(event)) {\n      return;\n    } else {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n}\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Directive({\n  selector: '[bData]'\n})\nexport class DataDirective {\n\n  @Input() ano4Digitos: boolean = true;\n\n  @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n    this.keyDown(event)\n  }\n\n  tamMax: number = 6;\n\n  constructor(\n    private el: ElementRef,\n  ) { }\n\n  ngOnInit() {\n    if (this.ano4Digitos) {\n      this.tamMax = 8;\n    } else {\n      this.tamMax = 6;\n    }\n  }\n\n  keyDown(event: KeyboardEvent) {\n\n    const numeros = Utils.retornaSoNumero(this.el.nativeElement.value);\n\n    if ((Utils.soNumeros(event)) && ((numeros.length) < this.tamMax) || Utils.backSpace(event)) {\n\n      if (numeros) {\n        this.el.nativeElement.value = Utils.addMascaraData(numeros, this.tamMax);\n      }\n    } else {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n}\n","import { Directive, ElementRef, HostListener } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Directive({\n  selector: '[bTituloEleitor]'\n})\nexport class TituloEleitorDirective {\n\n  @HostListener('keydown', ['$event']) onKeyDown(event: KeyboardEvent) {\n    this.keyDown(event)\n  }\n\n  tamMax: number = 12;\n\n  constructor(\n    private el: ElementRef,\n  ) { }\n\n  keyDown(event: KeyboardEvent) {\n\n    const numeros = Utils.retornaSoNumero(this.el.nativeElement.value);\n\n    if ((Utils.soNumeros(event)) && ((numeros.length) < this.tamMax) || Utils.backSpace(event)) {\n\n      if (numeros) {\n        this.el.nativeElement.value = Utils.addMascaraTituloEleitor(numeros, this.tamMax);\n      }\n    } else {\n      event.preventDefault();\n      event.stopPropagation();\n    }\n  }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Pipe({\n  name: 'celular'\n})\nexport class CelularPipe implements PipeTransform {\n\n  transform(value: string | number, ddd: boolean = true, ddd3Digitos: boolean = false): string {\n    \n    let celularFormatado = value.toString();\n\n    if (celularFormatado && celularFormatado.length >= 9) {\n      celularFormatado = Utils.addMascaraCelular(celularFormatado, celularFormatado.length + 1, ddd, ddd3Digitos);\n    }\n    return celularFormatado;\n  }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Pipe({\n  name: 'cep'\n})\nexport class CepPipe implements PipeTransform {\n\n  transform(value: string | number): string {\n    \n    let cepFormatado = value.toString();\n\n    if (cepFormatado && cepFormatado.length == 8) {\n      cepFormatado = Utils.addMascaraCep(cepFormatado, 9);\n    }\n    return cepFormatado;\n  }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Pipe({\n  name: 'cnpj'\n})\nexport class CnpjPipe implements PipeTransform {\n\n  transform(value: string | number): string {\n    \n    let cnpjFormatado = value.toString();\n\n    if (cnpjFormatado && cnpjFormatado.length == 14) {\n      cnpjFormatado = Utils.addMascaraCnpj(cnpjFormatado, 15);\n    }\n    return cnpjFormatado;\n  }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Pipe({\n  name: 'cpf'\n})\nexport class CpfPipe implements PipeTransform {\n\n  transform(value: string | number): string {\n    \n    let cpfFormatado = value.toString();\n\n    if (cpfFormatado && cpfFormatado.length == 11) {\n      cpfFormatado = Utils.addMascaraCpf(cpfFormatado, 12);\n    }\n    return cpfFormatado;\n  }\n\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Utils } from '../../utils/utils';\n\n@Pipe({\n  name: 'telefone'\n})\nexport class TelefonePipe implements PipeTransform {\n\n  transform(value: string | number, ddd: boolean = true, ddd3Digitos: boolean = false): string {\n\n    let telefoneFormatado = value.toString();\n\n    if (telefoneFormatado && telefoneFormatado.length >= 8) {\n      telefoneFormatado = Utils.addMascaraTelefone(telefoneFormatado, telefoneFormatado.length + 1, ddd, ddd3Digitos);\n    }\n    return telefoneFormatado;\n  }\n\n}\n","import { NgModule } from '@angular/core';\n\nimport { CelularDirective } from './diretivas/celular/celular.directive';\nimport { CepDirective } from './diretivas/cep/cep.directive';\nimport { CnpjDirective } from './diretivas/cnpj/cnpj.directive';\nimport { CpfDirective } from './diretivas/cpf/cpf.directive';\nimport { TelefoneDirective } from './diretivas/telefone/telefone.directive';\nimport { SoLetrasComEspacoDirective } from './diretivas/so-letras-com-espaco/so-letras-com-espaco.directive';\nimport { SoLetrasSemEspacoDirective } from './diretivas/so-letras-sem-espaco/so-letras-sem-espaco.directive';\nimport { SoNumeroComEspacoDirective } from './diretivas/so-numero-com-espaco/so-numero-com-espaco.directive';\nimport { SoNumeroSemEspacoDirective } from './diretivas/so-numero-sem-espaco/so-numero-sem-espaco.directive';\nimport { DataDirective } from './diretivas/data/data.directive';\nimport { TituloEleitorDirective } from './diretivas/titulo-eleitor/titulo-eleitor.directive';\n\nimport { CelularPipe } from './pipes/celular/celular.pipe';\nimport { CepPipe } from './pipes/cep/cep.pipe';\nimport { CnpjPipe } from './pipes/cnpj/cnpj.pipe';\nimport { CpfPipe } from './pipes/cpf/cpf.pipe';\nimport { TelefonePipe } from './pipes/telefone/telefone.pipe';\n\n\n@NgModule({\n  declarations: [\n    CpfDirective,\n    CnpjDirective,\n    CepDirective,\n    TelefoneDirective,\n    CelularDirective,\n    CpfPipe,\n    CnpjPipe,\n    CepPipe,\n    TelefonePipe,\n    CelularPipe,\n    SoLetrasComEspacoDirective,\n    SoLetrasSemEspacoDirective,\n    SoNumeroComEspacoDirective,\n    SoNumeroSemEspacoDirective,\n    DataDirective,\n    TituloEleitorDirective,\n  ],\n  imports: [],\n  exports:[\n    CpfDirective,\n    CnpjDirective,\n    CepDirective,\n    TelefoneDirective,\n    CelularDirective,\n    CpfPipe,\n    CnpjPipe,\n    CepPipe,\n    TelefonePipe,\n    CelularPipe,\n    SoLetrasComEspacoDirective,\n    SoLetrasSemEspacoDirective,\n    SoNumeroComEspacoDirective,\n    SoNumeroSemEspacoDirective,\n    DataDirective,\n    TituloEleitorDirective,\n  ]\n})\nexport class ValidacaoBrasilModule { }\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nexport class ValidacaoBrasil {\r\n\r\n    static cpf(required: boolean = true): ValidatorFn {\r\n\r\n        return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n            const valorCpf = control.value.toString();\r\n            const numeroCpf = valorCpf.replace(/([^0-9])/g, '');\r\n\r\n            if (!required && (numeroCpf.length == 0 || !numeroCpf)) {\r\n                return null;\r\n            }\r\n\r\n            if (required && (numeroCpf.length == 0 || !numeroCpf)) {\r\n                return { required: true };\r\n            }\r\n\r\n            if (\r\n                numeroCpf.length != 11\r\n                || [\r\n                    '00000000000',\r\n                    '11111111111',\r\n                    '22222222222',\r\n                    '33333333333',\r\n                    '44444444444',\r\n                    '55555555555',\r\n                    '66666666666',\r\n                    '77777777777',\r\n                    '88888888888',\r\n                    '99999999999',\r\n                ].filter(numerosTeste => numerosTeste == numeroCpf).length > 0\r\n                || cpfInvalido(numeroCpf)\r\n            ) {\r\n                return { cpf: true };\r\n            }\r\n\r\n            return null;\r\n        }\r\n    }\r\n\r\n    static cnpj(required: boolean = true): ValidatorFn {\r\n\r\n        return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n            const valorCnpj = control.value.toString();\r\n            const numeroCnpj = valorCnpj.replace(/([^0-9])/g, '');\r\n\r\n            if (!required && (numeroCnpj.length == 0 || !numeroCnpj)) {\r\n                return null;\r\n            }\r\n\r\n            if (required && (numeroCnpj.length == 0 || !numeroCnpj)) {\r\n                return { required: true };\r\n            }\r\n\r\n            if (\r\n                numeroCnpj.length != 14\r\n                || [\r\n                    '00000000000000',\r\n                    '11111111111111',\r\n                    '22222222222222',\r\n                    '33333333333333',\r\n                    '44444444444444',\r\n                    '55555555555555',\r\n                    '66666666666666',\r\n                    '77777777777777',\r\n                    '88888888888888',\r\n                    '99999999999999',\r\n                ].filter(numerosTeste => numerosTeste == numeroCnpj).length > 0\r\n                || cnpjInvalido(numeroCnpj)\r\n            ) {\r\n                return { cnpj: true };\r\n            }\r\n\r\n            return null;\r\n        }\r\n    }\r\n\r\n    static cep(required: boolean = true): ValidatorFn {\r\n\r\n        return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n            const valorCep = control.value.toString();\r\n            const numeroCep = valorCep.replace(/([^0-9])/g, '');\r\n\r\n            if (!required && (numeroCep.length == 0 || !numeroCep)) {\r\n                return null;\r\n            }\r\n\r\n            if (required && (numeroCep.length == 0 || !numeroCep)) {\r\n                return { required: true };\r\n            }\r\n\r\n            if (\r\n                numeroCep.length != 8\r\n                || [\r\n                    '00000000',\r\n                    '11111111',\r\n                    '22222222',\r\n                    '33333333',\r\n                    '44444444',\r\n                    '55555555',\r\n                    '66666666',\r\n                    '77777777',\r\n                    '88888888',\r\n                    '99999999',\r\n                ].filter(numerosTeste => numerosTeste == numeroCep).length > 0\r\n            ) {\r\n                return { cep: true };\r\n            }\r\n\r\n            return null;\r\n        }\r\n    }\r\n\r\n    static telefone(required: boolean = false, comDDD: boolean = true, digitosDDD3: boolean = false): ValidatorFn {\r\n\r\n        return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n            let tamMax = 0;\r\n\r\n            if (comDDD && !digitosDDD3) {\r\n                tamMax = 10;\r\n            } else if (comDDD && digitosDDD3) {\r\n                tamMax = 11;\r\n            } else {\r\n                tamMax = 8;\r\n            }\r\n\r\n            const valorTelefone = control.value.toString();\r\n            const numeroTelefone = valorTelefone.replace(/([^0-9])/g, '');\r\n\r\n            if (!required && (numeroTelefone.length == 0 || !numeroTelefone)) {\r\n                return null;\r\n            }\r\n\r\n            if (required && (numeroTelefone.length == 0 || !numeroTelefone)) {\r\n                return { required: true };\r\n            }\r\n\r\n            if (comDDD && !digitosDDD3 && numeroTelefone.length != 10) {\r\n                return { telefone: true };\r\n            }\r\n            if (comDDD && digitosDDD3 && numeroTelefone.length != 11) {\r\n                return { telefone: true };\r\n            }\r\n            if (!comDDD && numeroTelefone.length != 8) {\r\n                return { telefone: true };\r\n            }\r\n\r\n            return null;\r\n        }\r\n    }\r\n\r\n    static celular(required: boolean = true, comDDD: boolean = true, digitosDDD3: boolean = false): ValidatorFn {\r\n\r\n        return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n            let tamMax = 0;\r\n\r\n            if (comDDD && !digitosDDD3) {\r\n                tamMax = 10;\r\n            } else if (comDDD && digitosDDD3) {\r\n                tamMax = 11;\r\n            } else {\r\n                tamMax = 8;\r\n            }\r\n\r\n            const valorCelular = control.value.toString();\r\n            const numeroCelular = valorCelular.replace(/([^0-9])/g, '');\r\n\r\n            if (!required && (numeroCelular.length == 0 || !numeroCelular)) {\r\n                return null;\r\n            }\r\n            if (required && (numeroCelular.length == 0 || !numeroCelular)) {\r\n                return { required: true };\r\n            }\r\n\r\n            if (comDDD && digitosDDD3 && numeroCelular.length >= 4 && numeroCelular[3] != 9) {\r\n                return { nove: true };\r\n            }\r\n\r\n            if (comDDD && !digitosDDD3 && numeroCelular.length >= 3 && numeroCelular[2] != 9) {\r\n                return { nove: true };\r\n            }\r\n\r\n            if (!comDDD && numeroCelular.length >= 1 && numeroCelular[0] != 9) {\r\n                return { nove: true };\r\n            }\r\n\r\n            if (comDDD && !digitosDDD3 && numeroCelular.length != 11) {\r\n                return { celular: true };\r\n            }\r\n            if (comDDD && digitosDDD3 && numeroCelular.length != 12) {\r\n                return { celular: true };\r\n            }\r\n            if (!comDDD && numeroCelular.length != 9) {\r\n                return { celular: true };\r\n            }\r\n\r\n            return null;\r\n        }\r\n    }\r\n\r\n    static tituloEleitor(required: boolean = true): ValidatorFn {\r\n\r\n        return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n            const valorTitulo = control.value.toString();\r\n            const numeroTitulo = valorTitulo.replace(/([^0-9])/g, '');\r\n\r\n            if (!required && (numeroTitulo.length == 0 || !numeroTitulo)) {\r\n                return null;\r\n            }\r\n\r\n            if (required && (numeroTitulo.length == 0 || !numeroTitulo)) {\r\n                return { required: true };\r\n            }\r\n\r\n            if (\r\n                numeroTitulo.length != 12\r\n                || [\r\n                    '000000000000',\r\n                    '111111111111',\r\n                    '222222222222',\r\n                    '333333333333',\r\n                    '444444444444',\r\n                    '555555555555',\r\n                    '666666666666',\r\n                    '777777777777',\r\n                    '888888888888',\r\n                    '999999999999',\r\n                ].filter(numerosTeste => numerosTeste == numeroTitulo).length > 0\r\n                || tituloEleitorInvalido(numeroTitulo)\r\n            ) {\r\n                return { titulo: true };\r\n            }\r\n\r\n            return null;\r\n        }\r\n    }\r\n\r\n    static data(required: boolean = true, ano4Digitos: boolean = true, min?: string | null, max?: string | null): ValidatorFn {\r\n\r\n        return (control: AbstractControl): ValidationErrors | null => {\r\n\r\n            const valorData = control.value.toString();\r\n            const numeroData = valorData.replace(/([^0-9])/g, '');\r\n\r\n            const numeroDataMin = min?.replace(/([^0-9])/g, '');\r\n            const numeroDataMax = max?.replace(/([^0-9])/g, '');\r\n\r\n            if (!required && (numeroData.length == 0 || !numeroData)) {\r\n                return null;\r\n            }\r\n\r\n            if (required && (numeroData.length == 0 || !numeroData)) {\r\n                return { required: true };\r\n            }\r\n\r\n            if (\r\n                (numeroData.length != 6 && numeroData.length != 8)\r\n                || (dataInvalida(numeroData) && !min && !max)\r\n                || (numeroData.length != 8 && ano4Digitos)\r\n            ) {\r\n                return { data: true };\r\n            }\r\n\r\n            if (min && !max) {\r\n\r\n                return validaDataMin(numeroData, numeroDataMin) ? { min: true } : null;\r\n\r\n            } else if (!min && max) {\r\n\r\n                return validaDataMax(numeroData, numeroDataMax) ? { max: true } : null;\r\n\r\n            } else if (min && max) {\r\n\r\n                return validaDataRange(numeroData, numeroDataMin, numeroDataMax) ? { range: true } : null;\r\n\r\n            }\r\n\r\n            return null;\r\n        }\r\n    }\r\n}\r\n\r\nfunction cpfInvalido(numeroCpf: any): boolean {\r\n    let soma = 0;\r\n    let resto;\r\n\r\n    for (let i = 1; i <= 9; i++) {\r\n        soma += parseInt(numeroCpf.substring(i - 1, i)) * (11 - i);\r\n    }\r\n\r\n    resto = (soma * 10) % 11;\r\n\r\n    if (resto === 10 || resto === 11) {\r\n        resto = 0;\r\n    }\r\n\r\n    if (resto !== parseInt(numeroCpf.substring(9, 10))) {\r\n        return true; // Primeiro dígito verificador inválido\r\n    }\r\n\r\n    soma = 0;\r\n\r\n    for (let i = 1; i <= 10; i++) {\r\n        soma += parseInt(numeroCpf.substring(i - 1, i)) * (12 - i);\r\n    }\r\n\r\n    resto = (soma * 10) % 11;\r\n\r\n    if (resto === 10 || resto === 11) {\r\n        resto = 0;\r\n    }\r\n\r\n    if (resto !== parseInt(numeroCpf.substring(10, 11))) {\r\n        return true; // Segundo dígito verificador inválido\r\n    }\r\n\r\n    return false; // CPF válido\r\n}\r\n\r\nfunction cnpjInvalido(numeroCnpj: any): boolean {\r\n\r\n    let tamanho = numeroCnpj.length - 2;\r\n    let numeros = numeroCnpj.substring(0, tamanho);\r\n    const digitos = numeroCnpj.substring(tamanho);\r\n    let soma = 0;\r\n    let posicao = tamanho - 7;\r\n\r\n    for (let i = tamanho; i >= 1; i--) {\r\n        soma += parseInt(numeros.charAt(tamanho - i)) * posicao--;\r\n        if (posicao < 2) {\r\n            posicao = 9;\r\n        }\r\n    }\r\n\r\n    let result = soma % 11 < 2 ? 0 : 11 - (soma % 11);\r\n    if (result !== parseInt(digitos.charAt(0))) {\r\n        return true; // Primeiro dígito verificador inválido\r\n    }\r\n\r\n    tamanho += 1;\r\n    numeros = numeroCnpj.substring(0, tamanho);\r\n    soma = 0;\r\n    posicao = tamanho - 7;\r\n\r\n    for (let i = tamanho; i >= 1; i--) {\r\n        soma += parseInt(numeros.charAt(tamanho - i)) * posicao--;\r\n        if (posicao < 2) {\r\n            posicao = 9;\r\n        }\r\n    }\r\n\r\n    result = soma % 11 < 2 ? 0 : 11 - (soma % 11);\r\n    if (result !== parseInt(digitos.charAt(1))) {\r\n        return true; // Segundo dígito verificador inválido\r\n    }\r\n\r\n    return false; // CNPJ válido\r\n}\r\n\r\nfunction tituloEleitorInvalido(titulo: any): boolean {\r\n\r\n    // Obter o dígito verificador\r\n    const digitoVerificador = parseInt(titulo.slice(-2), 10);\r\n\r\n    // Obter a sequência de dígitos utilizados para calcular o dígito verificador\r\n    const base = titulo.slice(0, 10).split('').map(Number);\r\n\r\n    // Calcular o dígito verificador utilizando o algoritmo de Módulo 11\r\n    let soma = 0;\r\n    for (let i = 0; i < 9; i++) {\r\n        soma += base[i] * (9 - i);\r\n    }\r\n    const resto = soma % 11;\r\n    const digitoCalculado = (resto === 0 || resto === 1) ? 0 : 11 - resto;\r\n\r\n    // Verificar se o dígito verificador está correto\r\n    if (digitoCalculado !== digitoVerificador) {\r\n        return true;\r\n    }\r\n\r\n    return false;\r\n}\r\n\r\nfunction dataInvalida(data: string): boolean {\r\n    let dataLength: number = data.length;\r\n\r\n    let dia, mes, ano;\r\n\r\n    if (dataLength >= 6 && dataLength <= 8) {\r\n        dia = data.substring(0, 2);\r\n        mes = data.substring(2, 4);\r\n        ano = data.substring(4);\r\n\r\n        let testeData = new Date(`${mes}/${dia}/${ano}`);\r\n\r\n        return Number.isNaN(testeData.getTime());\r\n    } else {\r\n        return true;\r\n    }\r\n}\r\n\r\nfunction validaDataMin(data: string, min: string | undefined): boolean {\r\n    let dataLength: number = data.length;\r\n\r\n    let dia, mes, ano;\r\n    let diaMin, mesMin, anoMin;\r\n\r\n    if (min && min.length && min.length >= 6 && min.length <= 8) {\r\n\r\n        diaMin = min.substring(0, 2);\r\n        mesMin = min.substring(2, 4);\r\n        anoMin = min.substring(4);\r\n    }\r\n\r\n    if (dataLength >= 6 && dataLength <= 8) {\r\n        dia = data.substring(0, 2);\r\n        mes = data.substring(2, 4);\r\n        ano = data.substring(4);\r\n\r\n        let testeData = new Date(`${mes}/${dia}/${ano}`);\r\n        let testeDataMin = new Date(`${mesMin}/${diaMin}/${anoMin}`);\r\n\r\n        if (!Number.isNaN(testeData.getTime())) {\r\n            if (Number.isNaN(testeDataMin.getTime())) {\r\n                throw new Error('Data Mínima no Validator é inválida');\r\n            } else {\r\n                return testeData < testeDataMin;\r\n            }\r\n        }\r\n\r\n        return true;\r\n    } else {\r\n        return true;\r\n    }\r\n}\r\n\r\nfunction validaDataMax(data: string, max: string | undefined): boolean {\r\n    let dataLength: number = data.length;\r\n\r\n    let dia, mes, ano;\r\n    let diaMax, mesMax, anoMax;\r\n\r\n    if (max && max.toString() && max.toString().length >= 6 && max.toString().length <= 8) {\r\n        diaMax = max.toString().substring(0, 2);\r\n        mesMax = max.toString().substring(2, 4);\r\n        anoMax = max.toString().substring(4);\r\n    }\r\n\r\n    if (dataLength >= 6 && dataLength <= 8) {\r\n        dia = data.substring(0, 2);\r\n        mes = data.substring(2, 4);\r\n        ano = data.substring(4);\r\n\r\n        let testeData = new Date(`${mes}/${dia}/${ano}`);\r\n        let testeDataMax = new Date(`${mesMax}/${diaMax}/${anoMax}`);\r\n\r\n        if (!Number.isNaN(testeData.getTime())) {\r\n            if (Number.isNaN(testeDataMax.getTime())) {\r\n                throw new Error('Data Máxima no Validator é inválida');\r\n            } else {\r\n                return testeData > testeDataMax;\r\n            }\r\n        }\r\n\r\n        return true;\r\n    } else {\r\n        return true;\r\n    }\r\n}\r\n\r\nfunction validaDataRange(data: string, min: string | undefined, max: string | undefined): boolean {\r\n    let dataLength: number = data.length;\r\n\r\n    let dia, mes, ano;\r\n    let diaMin, mesMin, anoMin;\r\n    let diaMax, mesMax, anoMax;\r\n\r\n    if (min && min.toString() && min.toString().length >= 6 && min.toString().length <= 8) {\r\n        diaMin = min.toString().substring(0, 2);\r\n        mesMin = min.toString().substring(2, 4);\r\n        anoMin = min.toString().substring(4);\r\n    }\r\n\r\n    if (max && max.toString() && max.toString().length >= 6 && max.toString().length <= 8) {\r\n        diaMax = max.toString().substring(0, 2);\r\n        mesMax = max.toString().substring(2, 4);\r\n        anoMax = max.toString().substring(4);\r\n    }\r\n\r\n    if (dataLength >= 6 && dataLength <= 8) {\r\n        dia = data.substring(0, 2);\r\n        mes = data.substring(2, 4);\r\n        ano = data.substring(4);\r\n\r\n        let testeData = new Date(`${mes}/${dia}/${ano}`);\r\n        let testeDataMin = new Date(`${mesMin}/${diaMin}/${anoMin}`);\r\n        let testeDataMax = new Date(`${mesMax}/${diaMax}/${anoMax}`);\r\n\r\n        if (!Number.isNaN(testeData.getTime())) {\r\n            if (Number.isNaN(testeDataMin.getTime())) {\r\n                throw new Error('Data Mínima no Validator é inválida');\r\n            }\r\n            if (Number.isNaN(testeDataMax.getTime())) {\r\n                throw new Error('Data Máxima no Validator é inválida');\r\n            } else {\r\n                return testeData > testeDataMax || testeData < testeDataMin;\r\n            }\r\n        }\r\n\r\n        return true;\r\n    } else {\r\n        return true;\r\n    }\r\n}","/*\r\n * Public API Surface of validacao-brasil\r\n */\r\n\r\nexport * from './lib/validacao-brasil.module';\r\n\r\nexport * from './lib/validators/validacao.brasil';\r\n\r\nexport * from './lib/diretivas/cpf/cpf.directive';\r\nexport * from './lib/diretivas/cnpj/cnpj.directive';\r\nexport * from './lib/diretivas/cep/cep.directive';\r\nexport * from './lib/diretivas/telefone/telefone.directive';\r\nexport * from './lib/diretivas/celular/celular.directive';\r\nexport * from './lib/diretivas/data/data.directive';\r\nexport * from './lib/diretivas/titulo-eleitor/titulo-eleitor.directive';\r\n\r\nexport * from './lib/diretivas/so-letras-com-espaco/so-letras-com-espaco.directive';\r\nexport * from './lib/diretivas/so-letras-sem-espaco/so-letras-sem-espaco.directive';\r\nexport * from './lib/diretivas/so-numero-com-espaco/so-numero-com-espaco.directive';\r\nexport * from './lib/diretivas/so-numero-sem-espaco/so-numero-sem-espaco.directive';\r\n\r\n\r\nexport * from './lib/pipes/cpf/cpf.pipe';\r\nexport * from './lib/pipes/cnpj/cnpj.pipe';\r\nexport * from './lib/pipes/cep/cep.pipe';\r\nexport * from './lib/pipes/telefone/telefone.pipe';\r\nexport * from './lib/pipes/celular/celular.pipe';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;MAEa,KAAK,CAAA;IACd,OAAO,QAAQ,CAAC,KAAoB,EAAA;AAChC,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;KACvD;IAED,OAAO,SAAS,CAAC,KAAoB,EAAA;AACjC,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;KACpD;IAED,OAAO,iBAAiB,CAAC,KAAoB,EAAA;AACzC,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;KACvD;IAED,OAAO,mBAAmB,CAAC,KAAoB,EAAA;AAC3C,QAAA,OAAO,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;KACvD;IAED,OAAO,SAAS,CAAC,KAAoB,EAAA;AACjC,QAAA,QAAQ,KAAK,CAAC,GAAG;AACb,YAAA,KAAK,WAAW;AACZ,gBAAA,OAAO,IAAI,CAAA;AACf,YAAA;AACI,gBAAA,OAAO,KAAK,CAAC;SACpB;KACJ;IAED,OAAO,eAAe,CAAC,KAAoB,EAAA;AACvC,QAAA,QAAQ,KAAK,CAAC,GAAG;AACb,YAAA,KAAK,WAAW;AACZ,gBAAA,OAAO,IAAI,CAAA;AACf,YAAA,KAAK,WAAW;AACZ,gBAAA,OAAO,IAAI,CAAA;AACf,YAAA,KAAK,YAAY;AACb,gBAAA,OAAO,IAAI,CAAA;AACf,YAAA;AACI,gBAAA,OAAO,KAAK,CAAC;SACpB;KACJ;IAED,OAAO,qBAAqB,CAAC,KAAoB,EAAA;AAE7C,QAAA,QAAQ,KAAK,CAAC,GAAG;AACb,YAAA,KAAK,WAAW;AACZ,gBAAA,OAAO,IAAI,CAAA;AACf,YAAA,KAAK,WAAW;AACZ,gBAAA,OAAO,IAAI,CAAA;AACf,YAAA,KAAK,YAAY;AACb,gBAAA,OAAO,IAAI,CAAA;AACf,YAAA,KAAK,GAAG;AACJ,gBAAA,OAAO,IAAI,CAAA;AACf,YAAA;AACI,gBAAA,OAAO,KAAK,CAAC;SACpB;KACJ;IAED,OAAO,eAAe,CAAC,KAAa,EAAA;QAChC,OAAO,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;KACzC;IAED,OAAO,eAAe,CAAC,KAAa,EAAA;QAChC,OAAO,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;KAC5C;AAED,IAAA,OAAO,aAAa,CAAC,OAAe,EAAE,MAAc,EAAA;AAEhD,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE;YACzB,OAAO;gBACH,OAAO;AACF,qBAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,qBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;AAC/B,qBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;AAC/B,qBAAA,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;SACjD;AAED,QAAA,OAAO,OAAO,CAAC;KAClB;AAED,IAAA,OAAO,cAAc,CAAC,OAAe,EAAE,MAAc,EAAA;AAEjD,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE;YACzB,OAAO;gBACH,OAAO;AACF,qBAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,qBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;AAC/B,qBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;AAC/B,qBAAA,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC;AAClC,qBAAA,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;SACjD;AAED,QAAA,OAAO,OAAO,CAAC;KAClB;AAED,IAAA,OAAO,aAAa,CAAC,OAAe,EAAE,MAAc,EAAA;AAEhD,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE;YACzB,OAAO;gBACH,OAAO;AACF,qBAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,qBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;AAC/B,qBAAA,OAAO,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;SACpD;AAED,QAAA,OAAO,OAAO,CAAC;KAClB;IAED,OAAO,kBAAkB,CAAC,OAAe,EAAE,MAAc,EAAE,GAAe,GAAA,IAAI,EAAE,WAAA,GAAuB,KAAK,EAAA;AAExG,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE;AAEzB,YAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;gBACrB,OAAO;oBACH,OAAO;AACF,yBAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,yBAAA,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC;AACjC,yBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;aAE5C;AAAM,iBAAA,IAAI,GAAG,IAAI,WAAW,EAAE;gBAC3B,OAAO;oBACH,OAAO;AACF,yBAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,yBAAA,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC;AACjC,yBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;aAE5C;iBAAM;gBACH,OAAO;oBACH,OAAO;AACF,yBAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,yBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;aAE5C;SAEJ;AAED,QAAA,OAAO,OAAO,CAAC;KAClB;IAED,OAAO,iBAAiB,CAAC,OAAe,EAAE,MAAc,EAAE,GAAe,GAAA,IAAI,EAAE,WAAA,GAAuB,KAAK,EAAA;AAEvG,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE;AAEzB,YAAA,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;gBACrB,OAAO;oBACH,OAAO;AACF,yBAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,yBAAA,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC;AACjC,yBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;aAE5C;AAAM,iBAAA,IAAI,GAAG,IAAI,WAAW,EAAE;gBAC3B,OAAO;oBACH,OAAO;AACF,yBAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,yBAAA,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC;AACjC,yBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;aAE5C;iBAAM;gBACH,OAAO;oBACH,OAAO;AACF,yBAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,yBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;aAC5C;SACJ;AAED,QAAA,OAAO,OAAO,CAAC;KAClB;AAED,IAAA,OAAO,cAAc,CAAC,IAAY,EAAE,MAAc,EAAA;AAE9C,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE;YACtB,IAAI;gBACA,IAAI;AACC,qBAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,qBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;AAC/B,qBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;SAC5C;AAED,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,OAAO,uBAAuB,CAAC,MAAc,EAAE,MAAc,EAAA;AAEzD,QAAA,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE;YACxB,MAAM;gBACF,MAAM;AACD,qBAAA,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;AAClB,qBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;AAC/B,qBAAA,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;SAC5C;AAED,QAAA,OAAO,MAAM,CAAC;KACjB;AACJ;;MC1LY,gBAAgB,CAAA;AAEU,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpB;AAOD,IAAA,WAAA,CACU,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QANf,IAAG,CAAA,GAAA,GAAY,IAAI,CAAC;QACpB,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAEtC,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;KAIf;IAEL,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;AAChC,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAClB;aAAM,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACxC,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAClB;aAAM;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;KACF;AAED,IAAA,OAAO,CAAC,KAAoB,EAAA;AAE1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAE1F,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;aACzG;SACF;aAAM;YACL,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;8GAtCU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAhB,gBAAgB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACvB,iBAAA,CAAA;+EAGsC,SAAS,EAAA,CAAA;sBAA7C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAI1B,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;;;MCPK,YAAY,CAAA;AAEc,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpB;AAID,IAAA,WAAA,CACU,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAHxB,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC;KAIf;AAEJ,IAAA,OAAO,CAAC,KAAoB,EAAA;AAE1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAE1F,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACzE;SACF;aAAM;YACL,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;8GAzBU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAZ,YAAY,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,QAAQ;AACnB,iBAAA,CAAA;+EAGsC,SAAS,EAAA,CAAA;sBAA7C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCFxB,aAAa,CAAA;AAEa,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpB;AAID,IAAA,WAAA,CACU,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAHxB,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;KAIhB;AAEJ,IAAA,OAAO,CAAC,KAAoB,EAAA;AAE1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAE1F,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aAC1E;SACF;aAAM;YACL,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;8GAzBU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAb,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACpB,iBAAA,CAAA;+EAGsC,SAAS,EAAA,CAAA;sBAA7C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCFxB,YAAY,CAAA;AAEc,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpB;AAID,IAAA,WAAA,CACU,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAHxB,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;KAIf;AAEL,IAAA,OAAO,CAAC,KAAoB,EAAA;AAE1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAE1F,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACzE;SACF;aAAM;YACL,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;8GAzBU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAZ,YAAY,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,QAAQ;AACnB,iBAAA,CAAA;+EAGsC,SAAS,EAAA,CAAA;sBAA7C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCFxB,iBAAiB,CAAA;AAES,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpB;AAOD,IAAA,WAAA,CACU,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QANf,IAAG,CAAA,GAAA,GAAY,IAAI,CAAC;QACpB,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;QAEtC,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;KAIf;IAEL,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;AAChC,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAClB;aAAM,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACxC,YAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;SAClB;aAAM;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;KACF;AAED,IAAA,OAAO,CAAC,KAAoB,EAAA;AAE1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAE1F,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;aAC1G;SACF;aAAM;YACL,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;8GAtCU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACxB,iBAAA,CAAA;+EAGsC,SAAS,EAAA,CAAA;sBAA7C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAI1B,GAAG,EAAA,CAAA;sBAAX,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;;;MCPK,0BAA0B,CAAA;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpB;AAID,IAAA,WAAA,CACU,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAHf,IAAM,CAAA,MAAA,GAAW,KAAK,CAAC;KAI3B;AAEL,IAAA,OAAO,CAAC,KAAoB,EAAA;AAE1B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEjE,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE;YACnG,OAAO;SACR;aAAM;YACL,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;8GAtBU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA,CAAA;+EAGsC,SAAS,EAAA,CAAA;sBAA7C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAI1B,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MCNK,0BAA0B,CAAA;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpB;AAID,IAAA,WAAA,CACU,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAHf,IAAM,CAAA,MAAA,GAAW,KAAK,CAAC;KAI3B;AAEL,IAAA,OAAO,CAAC,KAAoB,EAAA;AAE1B,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEjE,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;YAC7F,OAAO;SACR;aAAM;YACL,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;8GAtBU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA,CAAA;+EAGsC,SAAS,EAAA,CAAA;sBAA7C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAI1B,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MCNK,0BAA0B,CAAA;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpB;AAID,IAAA,WAAA,CACU,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAHf,IAAM,CAAA,MAAA,GAAW,KAAK,CAAC;KAI3B;AAEL,IAAA,OAAO,CAAC,KAAoB,EAAA;AAE1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE;YACtG,OAAO;SACR;aAAM;YACL,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;8GAtBU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA,CAAA;+EAGsC,SAAS,EAAA,CAAA;sBAA7C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAI1B,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MCNK,0BAA0B,CAAA;AAEA,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpB;AAID,IAAA,WAAA,CACU,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAHf,IAAM,CAAA,MAAA,GAAW,KAAK,CAAC;KAI3B;AAEL,IAAA,OAAO,CAAC,KAAoB,EAAA;AAE1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE;YAChG,OAAO;SACR;aAAM;YACL,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;8GAtBU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAA1B,0BAA0B,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA,CAAA;+EAGsC,SAAS,EAAA,CAAA;sBAA7C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAI1B,MAAM,EAAA,CAAA;sBAAd,KAAK;;;MCNK,aAAa,CAAA;AAIa,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpB;AAID,IAAA,WAAA,CACU,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QATf,IAAW,CAAA,WAAA,GAAY,IAAI,CAAC;QAMrC,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC;KAId;IAEL,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;aAAM;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;KACF;AAED,IAAA,OAAO,CAAC,KAAoB,EAAA;AAE1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAE1F,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aAC1E;SACF;aAAM;YACL,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;8GAnCU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAb,aAAa,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACpB,iBAAA,CAAA;+EAGU,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAE+B,SAAS,EAAA,CAAA;sBAA7C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCJxB,sBAAsB,CAAA;AAEI,IAAA,SAAS,CAAC,KAAoB,EAAA;AACjE,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;KACpB;AAID,IAAA,WAAA,CACU,EAAc,EAAA;QAAd,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAHxB,IAAM,CAAA,MAAA,GAAW,EAAE,CAAC;KAIf;AAEL,IAAA,OAAO,CAAC,KAAoB,EAAA;AAE1B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAEnE,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAE1F,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aACnF;SACF;aAAM;YACL,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;SACzB;KACF;8GAzBU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAtB,sBAAsB,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA,CAAA;+EAGsC,SAAS,EAAA,CAAA;sBAA7C,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCFxB,WAAW,CAAA;AAEtB,IAAA,SAAS,CAAC,KAAsB,EAAE,MAAe,IAAI,EAAE,cAAuB,KAAK,EAAA;AAEjF,QAAA,IAAI,gBAAgB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAExC,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,MAAM,IAAI,CAAC,EAAE;AACpD,YAAA,gBAAgB,GAAG,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;SAC7G;AACD,QAAA,OAAO,gBAAgB,CAAC;KACzB;8GAVU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAX,WAAW,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,CAAA,EAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,SAAS;AAChB,iBAAA,CAAA;;;MCCY,OAAO,CAAA;AAElB,IAAA,SAAS,CAAC,KAAsB,EAAA;AAE9B,QAAA,IAAI,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEpC,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;YAC5C,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;SACrD;AACD,QAAA,OAAO,YAAY,CAAC;KACrB;8GAVU,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAP,OAAO,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA,EAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAHnB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA,CAAA;;;MCCY,QAAQ,CAAA;AAEnB,IAAA,SAAS,CAAC,KAAsB,EAAA;AAE9B,QAAA,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAErC,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,EAAE,EAAE;YAC/C,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;SACzD;AACD,QAAA,OAAO,aAAa,CAAC;KACtB;8GAVU,QAAQ,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAR,QAAQ,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAHpB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,MAAM;AACb,iBAAA,CAAA;;;MCCY,OAAO,CAAA;AAElB,IAAA,SAAS,CAAC,KAAsB,EAAA;AAE9B,QAAA,IAAI,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEpC,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,IAAI,EAAE,EAAE;YAC7C,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;SACtD;AACD,QAAA,OAAO,YAAY,CAAC;KACrB;8GAVU,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAP,OAAO,EAAA,IAAA,EAAA,KAAA,EAAA,CAAA,CAAA,EAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAHnB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,KAAK;AACZ,iBAAA,CAAA;;;MCCY,YAAY,CAAA;AAEvB,IAAA,SAAS,CAAC,KAAsB,EAAE,MAAe,IAAI,EAAE,cAAuB,KAAK,EAAA;AAEjF,QAAA,IAAI,iBAAiB,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEzC,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,IAAI,CAAC,EAAE;AACtD,YAAA,iBAAiB,GAAG,KAAK,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;SACjH;AACD,QAAA,OAAO,iBAAiB,CAAC;KAC1B;8GAVU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAZ,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA,EAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,UAAU;AACjB,iBAAA,CAAA;;;MCuDY,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAArB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,iBArC9B,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,iBAAiB;YACjB,gBAAgB;YAChB,OAAO;YACP,QAAQ;YACR,OAAO;YACP,YAAY;YACZ,WAAW;YACX,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,aAAa;AACb,YAAA,sBAAsB,aAItB,YAAY;YACZ,aAAa;YACb,YAAY;YACZ,iBAAiB;YACjB,gBAAgB;YAChB,OAAO;YACP,QAAQ;YACR,OAAO;YACP,YAAY;YACZ,WAAW;YACX,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,0BAA0B;YAC1B,aAAa;YACb,sBAAsB,CAAA,EAAA,CAAA,CAAA,EAAA;+GAGb,qBAAqB,EAAA,CAAA,CAAA,EAAA;;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAvCjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,YAAY;wBACZ,aAAa;wBACb,YAAY;wBACZ,iBAAiB;wBACjB,gBAAgB;wBAChB,OAAO;wBACP,QAAQ;wBACR,OAAO;wBACP,YAAY;wBACZ,WAAW;wBACX,0BAA0B;wBAC1B,0BAA0B;wBAC1B,0BAA0B;wBAC1B,0BAA0B;wBAC1B,aAAa;wBACb,sBAAsB;AACvB,qBAAA;AACD,oBAAA,OAAO,EAAE,EAAE;AACX,oBAAA,OAAO,EAAC;wBACN,YAAY;wBACZ,aAAa;wBACb,YAAY;wBACZ,iBAAiB;wBACjB,gBAAgB;wBAChB,OAAO;wBACP,QAAQ;wBACR,OAAO;wBACP,YAAY;wBACZ,WAAW;wBACX,0BAA0B;wBAC1B,0BAA0B;wBAC1B,0BAA0B;wBAC1B,0BAA0B;wBAC1B,aAAa;wBACb,sBAAsB;AACvB,qBAAA;AACF,iBAAA,CAAA;;;MCzDY,eAAe,CAAA;AAExB,IAAA,OAAO,GAAG,CAAC,QAAA,GAAoB,IAAI,EAAA;QAE/B,OAAO,CAAC,OAAwB,KAA6B;YAEzD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAEpD,YAAA,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACpD,gBAAA,OAAO,IAAI,CAAC;aACf;AAED,YAAA,IAAI,QAAQ,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACnD,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC7B;AAED,YAAA,IACI,SAAS,CAAC,MAAM,IAAI,EAAE;AACnB,mBAAA;oBACC,aAAa;oBACb,aAAa;oBACb,aAAa;oBACb,aAAa;oBACb,aAAa;oBACb,aAAa;oBACb,aAAa;oBACb,aAAa;oBACb,aAAa;oBACb,aAAa;AAChB,iBAAA,CAAC,MAAM,CAAC,YAAY,IAAI,YAAY,IAAI,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;AAC3D,mBAAA,WAAW,CAAC,SAAS,CAAC,EAC3B;AACE,gBAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;aACxB;AAED,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAA;KACJ;AAED,IAAA,OAAO,IAAI,CAAC,QAAA,GAAoB,IAAI,EAAA;QAEhC,OAAO,CAAC,OAAwB,KAA6B;YAEzD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAEtD,YAAA,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtD,gBAAA,OAAO,IAAI,CAAC;aACf;AAED,YAAA,IAAI,QAAQ,KAAK,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACrD,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC7B;AAED,YAAA,IACI,UAAU,CAAC,MAAM,IAAI,EAAE;AACpB,mBAAA;oBACC,gBAAgB;oBAChB,gBAAgB;oBAChB,gBAAgB;oBAChB,gBAAgB;oBAChB,gBAAgB;oBAChB,gBAAgB;oBAChB,gBAAgB;oBAChB,gBAAgB;oBAChB,gBAAgB;oBAChB,gBAAgB;AACnB,iBAAA,CAAC,MAAM,CAAC,YAAY,IAAI,YAAY,IAAI,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC;AAC5D,mBAAA,YAAY,CAAC,UAAU,CAAC,EAC7B;AACE,gBAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aACzB;AAED,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAA;KACJ;AAED,IAAA,OAAO,GAAG,CAAC,QAAA,GAAoB,IAAI,EAAA;QAE/B,OAAO,CAAC,OAAwB,KAA6B;YAEzD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAEpD,YAAA,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACpD,gBAAA,OAAO,IAAI,CAAC;aACf;AAED,YAAA,IAAI,QAAQ,KAAK,SAAS,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACnD,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC7B;AAED,YAAA,IACI,SAAS,CAAC,MAAM,IAAI,CAAC;AAClB,mBAAA;oBACC,UAAU;oBACV,UAAU;oBACV,UAAU;oBACV,UAAU;oBACV,UAAU;oBACV,UAAU;oBACV,UAAU;oBACV,UAAU;oBACV,UAAU;oBACV,UAAU;AACb,iBAAA,CAAC,MAAM,CAAC,YAAY,IAAI,YAAY,IAAI,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAChE;AACE,gBAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;aACxB;AAED,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAA;KACJ;IAED,OAAO,QAAQ,CAAC,QAAoB,GAAA,KAAK,EAAE,MAAkB,GAAA,IAAI,EAAE,WAAA,GAAuB,KAAK,EAAA;QAE3F,OAAO,CAAC,OAAwB,KAA6B;YAEzD,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf,YAAA,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE;gBACxB,MAAM,GAAG,EAAE,CAAC;aACf;AAAM,iBAAA,IAAI,MAAM,IAAI,WAAW,EAAE;gBAC9B,MAAM,GAAG,EAAE,CAAC;aACf;iBAAM;gBACH,MAAM,GAAG,CAAC,CAAC;aACd;YAED,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/C,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAE9D,YAAA,IAAI,CAAC,QAAQ,KAAK,cAAc,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AAC9D,gBAAA,OAAO,IAAI,CAAC;aACf;AAED,YAAA,IAAI,QAAQ,KAAK,cAAc,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;AAC7D,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC7B;YAED,IAAI,MAAM,IAAI,CAAC,WAAW,IAAI,cAAc,CAAC,MAAM,IAAI,EAAE,EAAE;AACvD,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC7B;YACD,IAAI,MAAM,IAAI,WAAW,IAAI,cAAc,CAAC,MAAM,IAAI,EAAE,EAAE;AACtD,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC7B;YACD,IAAI,CAAC,MAAM,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE;AACvC,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC7B;AAED,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAA;KACJ;IAED,OAAO,OAAO,CAAC,QAAoB,GAAA,IAAI,EAAE,MAAkB,GAAA,IAAI,EAAE,WAAA,GAAuB,KAAK,EAAA;QAEzF,OAAO,CAAC,OAAwB,KAA6B;YAEzD,IAAI,MAAM,GAAG,CAAC,CAAC;AAEf,YAAA,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE;gBACxB,MAAM,GAAG,EAAE,CAAC;aACf;AAAM,iBAAA,IAAI,MAAM,IAAI,WAAW,EAAE;gBAC9B,MAAM,GAAG,EAAE,CAAC;aACf;iBAAM;gBACH,MAAM,GAAG,CAAC,CAAC;aACd;YAED,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC9C,MAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAE5D,YAAA,IAAI,CAAC,QAAQ,KAAK,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AAC5D,gBAAA,OAAO,IAAI,CAAC;aACf;AACD,YAAA,IAAI,QAAQ,KAAK,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AAC3D,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC7B;AAED,YAAA,IAAI,MAAM,IAAI,WAAW,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AAC7E,gBAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aACzB;AAED,YAAA,IAAI,MAAM,IAAI,CAAC,WAAW,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AAC9E,gBAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aACzB;AAED,YAAA,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;AAC/D,gBAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aACzB;YAED,IAAI,MAAM,IAAI,CAAC,WAAW,IAAI,aAAa,CAAC,MAAM,IAAI,EAAE,EAAE;AACtD,gBAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;aAC5B;YACD,IAAI,MAAM,IAAI,WAAW,IAAI,aAAa,CAAC,MAAM,IAAI,EAAE,EAAE;AACrD,gBAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;aAC5B;YACD,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;AACtC,gBAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;aAC5B;AAED,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAA;KACJ;AAED,IAAA,OAAO,aAAa,CAAC,QAAA,GAAoB,IAAI,EAAA;QAEzC,OAAO,CAAC,OAAwB,KAA6B;YAEzD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC7C,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAE1D,YAAA,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAC1D,gBAAA,OAAO,IAAI,CAAC;aACf;AAED,YAAA,IAAI,QAAQ,KAAK,YAAY,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AACzD,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC7B;AAED,YAAA,IACI,YAAY,CAAC,MAAM,IAAI,EAAE;AACtB,mBAAA;oBACC,cAAc;oBACd,cAAc;oBACd,cAAc;oBACd,cAAc;oBACd,cAAc;oBACd,cAAc;oBACd,cAAc;oBACd,cAAc;oBACd,cAAc;oBACd,cAAc;AACjB,iBAAA,CAAC,MAAM,CAAC,YAAY,IAAI,YAAY,IAAI,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC;AAC9D,mBAAA,qBAAqB,CAAC,YAAY,CAAC,EACxC;AACE,gBAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;aAC3B;AAED,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAA;KACJ;IAED,OAAO,IAAI,CAAC,QAAoB,GAAA,IAAI,EAAE,WAAA,GAAuB,IAAI,EAAE,GAAmB,EAAE,GAAmB,EAAA;QAEvG,OAAO,CAAC,OAAwB,KAA6B;YAEzD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAEtD,MAAM,aAAa,GAAG,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACpD,MAAM,aAAa,GAAG,GAAG,EAAE,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AAEpD,YAAA,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtD,gBAAA,OAAO,IAAI,CAAC;aACf;AAED,YAAA,IAAI,QAAQ,KAAK,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACrD,gBAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC7B;AAED,YAAA,IACI,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;oBAC7C,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;oBACzC,UAAU,CAAC,MAAM,IAAI,CAAC,IAAI,WAAW,CAAC,EAC5C;AACE,gBAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aACzB;AAED,YAAA,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;AAEb,gBAAA,OAAO,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;aAE1E;AAAM,iBAAA,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE;AAEpB,gBAAA,OAAO,aAAa,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;aAE1E;AAAM,iBAAA,IAAI,GAAG,IAAI,GAAG,EAAE;gBAEnB,OAAO,eAAe,CAAC,UAAU,EAAE,aAAa,EAAE,aAAa,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;aAE7F;AAED,YAAA,OAAO,IAAI,CAAC;AAChB,SAAC,CAAA;KACJ;AACJ,CAAA;AAED,SAAS,WAAW,CAAC,SAAc,EAAA;IAC/B,IAAI,IAAI,GAAG,CAAC,CAAC;AACb,IAAA,IAAI,KAAK,CAAC;AAEV,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;KAC9D;IAED,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC;IAEzB,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,EAAE;QAC9B,KAAK,GAAG,CAAC,CAAC;KACb;AAED,IAAA,IAAI,KAAK,KAAK,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE;QAChD,OAAO,IAAI,CAAC;KACf;IAED,IAAI,GAAG,CAAC,CAAC;AAET,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;QAC1B,IAAI,IAAI,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;KAC9D;IAED,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,CAAC;IAEzB,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,EAAE,EAAE;QAC9B,KAAK,GAAG,CAAC,CAAC;KACb;AAED,IAAA,IAAI,KAAK,KAAK,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE;QACjD,OAAO,IAAI,CAAC;KACf;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,UAAe,EAAA;AAEjC,IAAA,IAAI,OAAO,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IACpC,IAAI,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,IAAI,GAAG,CAAC,CAAC;AACb,IAAA,IAAI,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;AAE1B,IAAA,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/B,QAAA,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;AAC1D,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE;YACb,OAAO,GAAG,CAAC,CAAC;SACf;KACJ;IAED,IAAI,MAAM,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;AAClD,IAAA,IAAI,MAAM,KAAK,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QACxC,OAAO,IAAI,CAAC;KACf;IAED,OAAO,IAAI,CAAC,CAAC;IACb,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3C,IAAI,GAAG,CAAC,CAAC;AACT,IAAA,OAAO,GAAG,OAAO,GAAG,CAAC,CAAC;AAEtB,IAAA,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;AAC/B,QAAA,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC;AAC1D,QAAA,IAAI,OAAO,GAAG,CAAC,EAAE;YACb,OAAO,GAAG,CAAC,CAAC;SACf;KACJ;IAED,MAAM,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;AAC9C,IAAA,IAAI,MAAM,KAAK,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QACxC,OAAO,IAAI,CAAC;KACf;IAED,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAW,EAAA;;AAGtC,IAAA,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;;IAGzD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;;IAGvD,IAAI,IAAI,GAAG,CAAC,CAAC;AACb,IAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACxB,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KAC7B;AACD,IAAA,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACxB,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;;AAGtE,IAAA,IAAI,eAAe,KAAK,iBAAiB,EAAE;AACvC,QAAA,OAAO,IAAI,CAAC;KACf;AAED,IAAA,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAA;AAC9B,IAAA,IAAI,UAAU,GAAW,IAAI,CAAC,MAAM,CAAC;AAErC,IAAA,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IAElB,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE;QACpC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,QAAA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAExB,QAAA,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC,CAAC;QAEjD,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;KAC5C;SAAM;AACH,QAAA,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,GAAuB,EAAA;AACxD,IAAA,IAAI,UAAU,GAAW,IAAI,CAAC,MAAM,CAAC;AAErC,IAAA,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAClB,IAAA,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAE3B,IAAA,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;QAEzD,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC7B,QAAA,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KAC7B;IAED,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE;QACpC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,QAAA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAExB,QAAA,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC,CAAC;AACjD,QAAA,IAAI,YAAY,GAAG,IAAI,IAAI,CAAC,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC,CAAC;QAE7D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE;YACpC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE;AACtC,gBAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;aAC1D;iBAAM;gBACH,OAAO,SAAS,GAAG,YAAY,CAAC;aACnC;SACJ;AAED,QAAA,OAAO,IAAI,CAAC;KACf;SAAM;AACH,QAAA,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,GAAuB,EAAA;AACxD,IAAA,IAAI,UAAU,GAAW,IAAI,CAAC,MAAM,CAAC;AAErC,IAAA,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAClB,IAAA,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAE3B,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;AACnF,QAAA,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,QAAA,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KACxC;IAED,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE;QACpC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,QAAA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAExB,QAAA,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC,CAAC;AACjD,QAAA,IAAI,YAAY,GAAG,IAAI,IAAI,CAAC,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC,CAAC;QAE7D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE;YACpC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE;AACtC,gBAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;aAC1D;iBAAM;gBACH,OAAO,SAAS,GAAG,YAAY,CAAC;aACnC;SACJ;AAED,QAAA,OAAO,IAAI,CAAC;KACf;SAAM;AACH,QAAA,OAAO,IAAI,CAAC;KACf;AACL,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,GAAuB,EAAE,GAAuB,EAAA;AACnF,IAAA,IAAI,UAAU,GAAW,IAAI,CAAC,MAAM,CAAC;AAErC,IAAA,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;AAClB,IAAA,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;AAC3B,IAAA,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;IAE3B,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;AACnF,QAAA,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,QAAA,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KACxC;IAED,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;AACnF,QAAA,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxC,QAAA,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;KACxC;IAED,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE;QACpC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3B,QAAA,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAExB,QAAA,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAC,CAAC;AACjD,QAAA,IAAI,YAAY,GAAG,IAAI,IAAI,CAAC,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC,CAAC;AAC7D,QAAA,IAAI,YAAY,GAAG,IAAI,IAAI,CAAC,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAC,CAAC;QAE7D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE;YACpC,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE;AACtC,gBAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;aAC1D;YACD,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,EAAE;AACtC,gBAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;aAC1D;iBAAM;AACH,gBAAA,OAAO,SAAS,GAAG,YAAY,IAAI,SAAS,GAAG,YAAY,CAAC;aAC/D;SACJ;AAED,QAAA,OAAO,IAAI,CAAC;KACf;SAAM;AACH,QAAA,OAAO,IAAI,CAAC;KACf;AACL;;ACxgBA;;AAEG;;ACFH;;AAEG;;;;"}