{"version":3,"file":"payment-methods365.mjs","sources":["../../src/app/services/home.service.ts","../../src/app/components/modals/modal1/modal1.component.ts","../../src/app/components/modals/modal1/modal1.component.html","../../src/app/components/methods/pix-options.component.ts","../../src/app/components/methods/pix-options.component.html","../../src/app/services/dynamic-modal/dynamic-modal.component.ts","../../src/app/services/dynamic-modal/dynamic-modal.component.html","../../src/app/services/dynamic-modal.service.ts","../../src/app/services/load-scripts.service.ts","../../src/app/payment-methods/payment-methods.config.ts","../../src/app/components/payment-methods/payment-methods.component.ts","../../src/app/components/payment-methods/payment-methods.component.html","../../src/app/payment-methods/payment-methods.module.ts","../../payment-methods365.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { HttpHeaders } from '@angular/common/http';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Observable, throwError } from 'rxjs';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\n\r\nexport class HttpData {\r\n\r\n    token: any = undefined; // localStorage.getItem('logIn');\r\n    host_name: any = 'https://app.assist-365.com/api';\r\n    // host_name: any = 'http://preapp.assist-365.com/api';\r\n    voucher: any = '';\r\n    errorMsg: string;\r\n\r\n    constructor(private http: HttpClient) { }\r\n\r\n    public jsonToQueryString(json) {\r\n        return '?' +\r\n            Object.keys(json).map(function (key) {\r\n                return encodeURIComponent(key) + '=' +\r\n                    encodeURIComponent(json[key]);\r\n            }).join('&');\r\n    }\r\n\r\n    public handleError(error: HttpErrorResponse) {\r\n        if (error.error instanceof ErrorEvent) {\r\n            console.error('An error occurred:', error.error.message);\r\n        } else {\r\n            // console.error(\r\n            //     `Backend returned code ${error.status}, ` +\r\n            //     `body was: ${error.error}`);\r\n\r\n        }\r\n        return throwError(error);\r\n        // 'Something bad happened; please try again later.');\r\n    };\r\n\r\n    public getAll(api_path) {\r\n\r\n        const httpOptions = {\r\n            headers: new HttpHeaders({\r\n                'Content-Type': 'application/json',\r\n                'Authorization': 'Bearer ' + this.token\r\n            })\r\n        };\r\n\r\n        return this.http.get<any[]>(this.host_name + '/' + api_path, httpOptions).pipe(\r\n            catchError(this.handleError)\r\n        );\r\n\r\n    }\r\n\r\n    private getServerErrorMessage(error: HttpErrorResponse): string {\r\n        switch (error.status) {\r\n            case 404: {\r\n                return `Not Found: ${error.message}`;\r\n            }\r\n            case 403: {\r\n                return `Access Denied: ${error.message}`;\r\n            }\r\n            case 500: {\r\n                return `Internal Server Error: ${error.message}`;\r\n            }\r\n            default: {\r\n                return `Unknown Server Error: ${error.message}`;\r\n            }\r\n        }\r\n    }\r\n\r\n    public get(api_path: string, SkipInter: string = '0'): Observable<any> {\r\n        const httpOptions = {\r\n            headers: new HttpHeaders({\r\n                'Content-Type': 'application/json',\r\n                'Authorization': 'Bearer ' + this.token,\r\n                'SkipInter': SkipInter\r\n            })\r\n        };\r\n\r\n        return this.http.get<any[]>(this.host_name + '/' + api_path, httpOptions)\r\n            .pipe(catchError(this.handleError));\r\n    }\r\n\r\n    public post(params, api_path: string, SkipInter: string = '0') {\r\n\r\n        const httpOptions = {\r\n            headers: new HttpHeaders({\r\n                'Authorization': 'Bearer ' + this.token,\r\n                'SkipInter': SkipInter\r\n            })\r\n        };\r\n\r\n        return this.http.post<any>(this.host_name + '/' + api_path, params, httpOptions).pipe(\r\n            catchError(this.handleError)\r\n        );\r\n\r\n    }\r\n\r\n    public delete(id, api_path: string) {\r\n        const httpOptions = {\r\n            headers: new HttpHeaders({\r\n                'Content-Type': 'application/json',\r\n                'Authorization': 'Bearer ' + this.token\r\n            })\r\n        };\r\n\r\n        return this.http.delete<any>(this.host_name + '/' + api_path + '/' + id, httpOptions).pipe(\r\n            catchError(this.handleError)\r\n        );\r\n    }\r\n\r\n    public put(params, id, api_path) {\r\n        const httpOptions = {\r\n            headers: new HttpHeaders({\r\n                'Authorization': 'Bearer ' + this.token\r\n            })\r\n        };\r\n\r\n        return this.http.post<any>(this.host_name + '/' + api_path + '/' + id, params, httpOptions).pipe(\r\n            catchError(this.handleError)\r\n        );\r\n    }\r\n}","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { HttpData } from './../../../services/home.service';\n\n@Component({\n  selector: 'modal-content',\n  templateUrl: './modal1.component.html',\n  styleUrls: ['./modal1.component.scss'],\n})\n\nexport class Modal1Component implements OnInit {\n  @Output() action = new EventEmitter();\n  @Output() closeCC = new EventEmitter();\n\n  closeBtnName: string;\n  cardList: any[] = [];\n  debitList: any[] = [];\n  title: string;\n  img_path: any;\n\n  constructor(public bsModalRef: BsModalRef, private httpData: HttpData) { }\n\n  public selectCard(v) {\n    this.bsModalRef.hide();\n    this.action.emit(v);\n  }\n\n  public closeCCModal(v) {\n    this.bsModalRef.hide();\n    this.closeCC.emit(v);\n  }\n\n  ngOnInit() {\n\n    console.warn('starting modal');\n    this.title = 'Seleccioná tu tarjeta de crédito';\n\n    this.httpData.get('get-methods?country_id=' + window.localStorage.getItem('country_id')).subscribe((data) => {\n      this.cardList = data;\n    });\n\n    this.debitList = [\n      { name: 'Link', img: 'link.png', id: 10 },\n      { name: 'Provincia NET', img: 'provincianet.jpg', id: 11 }\n    ];\n  }\n}","<div class=\"modal-header\">\n    <h4 class=\"modal-title\">Selecciona tu tarjeta</h4>\n</div>\n<div class=\"modal-body\">\n    <ul>\n        <li *ngFor=\"let card of cardList\" (click)=\"selectCard(card)\">\n            <img src=\"{{img_path}}/assets/img/cards/{{card.img}}\"><span>{{ card.name }} </span>\n        </li>\n    </ul>\n</div>","import { Component, Input, OnInit, Output, EventEmitter } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { Clipboard } from '@angular/cdk/clipboard';\r\n\r\n@Component({\r\n  selector: 'app-pix-options',\r\n  templateUrl: './pix-options.component.html',\r\n  styleUrls: ['./pix-options.component.scss']\r\n})\r\n\r\nexport class PixOptionsComponent implements OnInit {\r\n\r\n  content_clipboard: boolean = false;\r\n\r\n  @Output() newItemEvent = new EventEmitter<boolean>();\r\n  @Input() pix_option: string;\r\n  @Input() pix_data: string;\r\n  expiration_date: string;\r\n\r\n  constructor(\r\n    private clipboard: Clipboard,\r\n    private _sanitizer: DomSanitizer\r\n  ) { }\r\n\r\n  pad = (value) => {\r\n    const val = parseInt(value);\r\n    return val <= 9 ? '0' + val : value;\r\n  }\r\n\r\n  ngOnInit(): void {\r\n\r\n    let currentDate = new Date();\r\n    let deadline = new Date(currentDate.getTime() + (30 * 60 * 1000));\r\n    let expiration_date = `${this.pad(deadline.getHours())}:${this.pad(deadline.getMinutes())}`;\r\n    this.expiration_date = `Você tem até ${expiration_date} hs para efetuar o pagamento.`;\r\n\r\n  }\r\n\r\n  addNewItem() {\r\n    this.newItemEvent.emit(true);\r\n  }\r\n\r\n  copyCode() {\r\n    console.log('copyCode()');\r\n    console.log(this.pix_data);\r\n    this.content_clipboard = true;\r\n    this.clipboard.copy(this.pix_data);\r\n  }\r\n\r\n  getQR() {\r\n    return this._sanitizer.bypassSecurityTrustResourceUrl(`data:image/png;base64, ${this.pix_data}`);\r\n  }\r\n}","<div class=\"wip\" [ngClass]=\"pix_option\">\r\n\r\n    <div class=\"btn-close\" (click)=\"addNewItem()\">\r\n        <svg width=\"15\" height=\"16\" viewBox=\"0 0 15 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n            <path\r\n                d=\"M6.53573 7.99848L0.199634 1.55146C-0.0665445 1.28062 -0.0665445 0.841409 0.199634 0.570316C0.465812 0.299478 0.89747 0.299478 1.1639 0.570316L7.5 7.01733L13.8361 0.570316C14.1023 0.299478 14.5339 0.299478 14.8004 0.570316C15.0665 0.841154 15.0665 1.28037 14.8004 1.55146L8.46427 7.99848L14.8004 14.4455C15.0665 14.7163 15.0665 15.1555 14.8004 15.4266C14.5342 15.6975 14.1025 15.6975 13.8361 15.4266L7.5 8.97962L1.1639 15.4266C0.897721 15.6975 0.466063 15.6975 0.199634 15.4266C-0.0665445 15.1558 -0.0665445 14.7166 0.199634 14.4455L6.53573 7.99848Z\"\r\n                fill=\"#040304\" />\r\n        </svg>\r\n    </div>\r\n\r\n    <!--? PIX COPY LINK  -->\r\n\r\n    <ng-container *ngIf=\"pix_option === 'pix_copy_link'\">\r\n        <h1>Pix Copia e Cola</h1>\r\n        <p>Copie o código e cole no aplicativo do seu banco. Lembre-se, não se trata de um boleto bancario.</p>\r\n        <div class=\"qr-copy-container\">\r\n            <div>{{pix_data}}</div>\r\n        </div>\r\n        <div *ngIf=\"expiration_date\" class=\"box-notification-helper\">{{expiration_date}}</div>\r\n        <button (click)=\"copyCode()\" type=\"button\" class=\"core-btn\" [ngClass]=\"{'copied' : content_clipboard}\">\r\n            <ng-container *ngIf=\"!content_clipboard\">copiar código</ng-container>\r\n            <ng-container *ngIf=\"content_clipboard\">copiado!</ng-container>\r\n        </button>\r\n        <div class=\"box-info\">\r\n            <svg width=\"42\" height=\"42\" viewBox=\"0 0 23 23\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                <path\r\n                    d=\"M11.5 0C17.8492 0 23 5.15054 23 11.5C23 17.8463 17.8462 23 11.5 23C5.15082 23 0 17.8495 0 11.5C0 5.15082 5.1474 0 11.5 0ZM11.5 8.97768C10.8733 8.97768 10.3682 8.47255 10.3682 7.8459C10.3682 7.2192 10.8733 6.71411 11.5 6.71411C12.1236 6.71411 12.6318 7.21924 12.6318 7.8459C12.6318 8.47259 12.1235 8.97768 11.5 8.97768ZM12.1969 16.2894C12.1969 17.2038 10.8031 17.2038 10.8031 16.2894V10.9502C10.8031 10.0358 12.1969 10.0358 12.1969 10.9502V16.2894ZM11.5 1.39418C5.92105 1.39418 1.39361 5.92139 1.39361 11.5006C1.39361 17.0828 5.91745 21.607 11.5 21.607C17.079 21.607 21.6064 17.0831 21.6064 11.5006C21.6064 5.92162 17.0792 1.39418 11.5 1.39418Z\"\r\n                    fill=\"#62CAD5\" />\r\n            </svg>\r\n            <span>Após o pagamento na Área Pix do seu banco, você receberá sua apólice no seu e-mail.</span>\r\n        </div>\r\n\r\n        <div class=\"footer-msg\">\r\n            <h2>¡Obrigado pela sua preferência!</h2>\r\n            <svg width=\"25\" height=\"23\" viewBox=\"0 0 25 23\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                <path\r\n                    d=\"M21.9652 2.11942C21.299 1.44845 20.5067 0.915792 19.6338 0.552067C18.761 0.188342 17.8249 0.000724524 16.8794 0C15.0908 0.000292367 13.3676 0.672163 12.0509 1.88258C10.7343 0.671959 9.01095 5.62522e-05 7.22236 0C6.27568 0.00098564 5.33854 0.189176 4.46487 0.553741C3.5912 0.918306 2.79825 1.45205 2.13165 2.12425C-0.711557 4.97954 -0.710349 9.44554 2.13407 12.2887L12.0509 22.2055L21.9677 12.2887C24.8121 9.44554 24.8133 4.97954 21.9652 2.11942Z\"\r\n                    fill=\"#62CAD5\" />\r\n            </svg>\r\n            <button (click)=\"addNewItem()\" type=\"button\">\r\n                <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                    <path\r\n                        d=\"M11.2461 5.04695H2.11521L6.05226 1.16476C6.30358 0.916945 6.30358 0.503971 6.05226 0.256175C5.80094 0.00835844 5.4658 0.00835844 5.21465 0.256175L0.188489 5.2123C-0.0628296 5.46012 -0.0628296 5.87309 0.188489 6.12089L5.21465 11.077C5.46597 11.3248 5.88478 11.3248 6.13608 11.077C6.38739 10.8292 6.38739 10.4987 6.13608 10.2511L2.19903 6.28618H11.3299C11.665 6.28618 12 6.03837 12 5.62539C11.8323 5.29471 11.581 4.9644 11.2459 5.0469L11.2461 5.04695Z\"\r\n                        fill=\"#58C6D2\" />\r\n                </svg>\r\n                voltar\r\n            </button>\r\n        </div>\r\n    </ng-container>\r\n\r\n    <!--? PIX OPEN LINK  -->\r\n\r\n\r\n    <ng-container *ngIf=\"pix_option === 'pix_open_link'\">\r\n\r\n        <h1>Ler QR code</h1>\r\n        <p class=\"mb-0\">Aproxime a câmara do seu celular para ler a imagem e finalizar sua compra. </p>\r\n        <div class=\"qr-container\">\r\n            <img [src]=\"getQR()\" class=\"w-100\">\r\n        </div>\r\n\r\n        <div *ngIf=\"expiration_date\" class=\"box-notification-helper\">{{expiration_date}}.</div>\r\n\r\n        <div class=\"box-info\">\r\n            <svg width=\"32\" height=\"32\" viewBox=\"0 0 23 23\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                <path\r\n                    d=\"M11.5 0C17.8492 0 23 5.15054 23 11.5C23 17.8463 17.8462 23 11.5 23C5.15082 23 0 17.8495 0 11.5C0 5.15082 5.1474 0 11.5 0ZM11.5 8.97768C10.8733 8.97768 10.3682 8.47255 10.3682 7.8459C10.3682 7.2192 10.8733 6.71411 11.5 6.71411C12.1236 6.71411 12.6318 7.21924 12.6318 7.8459C12.6318 8.47259 12.1235 8.97768 11.5 8.97768ZM12.1969 16.2894C12.1969 17.2038 10.8031 17.2038 10.8031 16.2894V10.9502C10.8031 10.0358 12.1969 10.0358 12.1969 10.9502V16.2894ZM11.5 1.39418C5.92105 1.39418 1.39361 5.92139 1.39361 11.5006C1.39361 17.0828 5.91745 21.607 11.5 21.607C17.079 21.607 21.6064 17.0831 21.6064 11.5006C21.6064 5.92162 17.0792 1.39418 11.5 1.39418Z\"\r\n                    fill=\"#62CAD5\" />\r\n            </svg>\r\n            <span>Após o pagamento, você receberá sua apólice no seu e-mail.</span>\r\n        </div>\r\n\r\n        <div class=\"footer-msg\">\r\n            <h2>¡Obrigado pela sua preferência!</h2>\r\n            <svg width=\"25\" height=\"23\" viewBox=\"0 0 25 23\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                <path\r\n                    d=\"M21.9652 2.11942C21.299 1.44845 20.5067 0.915792 19.6338 0.552067C18.761 0.188342 17.8249 0.000724524 16.8794 0C15.0908 0.000292367 13.3676 0.672163 12.0509 1.88258C10.7343 0.671959 9.01095 5.62522e-05 7.22236 0C6.27568 0.00098564 5.33854 0.189176 4.46487 0.553741C3.5912 0.918306 2.79825 1.45205 2.13165 2.12425C-0.711557 4.97954 -0.710349 9.44554 2.13407 12.2887L12.0509 22.2055L21.9677 12.2887C24.8121 9.44554 24.8133 4.97954 21.9652 2.11942Z\"\r\n                    fill=\"#62CAD5\" />\r\n            </svg>\r\n            <button (click)=\"addNewItem()\" type=\"button\">\r\n                <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n                    <path\r\n                        d=\"M11.2461 5.04695H2.11521L6.05226 1.16476C6.30358 0.916945 6.30358 0.503971 6.05226 0.256175C5.80094 0.00835844 5.4658 0.00835844 5.21465 0.256175L0.188489 5.2123C-0.0628296 5.46012 -0.0628296 5.87309 0.188489 6.12089L5.21465 11.077C5.46597 11.3248 5.88478 11.3248 6.13608 11.077C6.38739 10.8292 6.38739 10.4987 6.13608 10.2511L2.19903 6.28618H11.3299C11.665 6.28618 12 6.03837 12 5.62539C11.8323 5.29471 11.581 4.9644 11.2459 5.0469L11.2461 5.04695Z\"\r\n                        fill=\"#58C6D2\" />\r\n                </svg>\r\n                <div>\r\n                    voltar\r\n                </div>\r\n            </button>\r\n        </div>\r\n    </ng-container>\r\n</div>","import { Component, OnInit } from '@angular/core';\nimport { BsModalRef } from 'ngx-bootstrap/modal';\nimport { TranslatorService } from 'translator365';\n\n@Component({\n  selector: 'dynamic-modal',\n  templateUrl: 'dynamic-modal.component.html',\n  styleUrls: ['dynamic-modal.component.scss']\n})\n\nexport class DynamicModalComponent implements OnInit {\n\n  //* new patch\n  target: any;\n  pix_data: any;\n  modal_visibility:boolean = true;\n\n  title: any;\n  title_data_dt: string;\n  body: string;\n  body_data_dt: string;\n  closeBtn: boolean;\n  closeBtnName: any;\n  link: any;\n  data_content: any;\n  lang: any;\n  qr: any;\n\n  constructor(\n    private bsModalRef: BsModalRef,\n    private translator: TranslatorService,\n  ) { }\n\n  ngOnInit() {\n\n    console.log('target ---> ', this.target);\n    if (this.target) {\n      this.modal_visibility = (this.target.slice(0,3) === 'pix') ? false : true;\n    }\n\n\n    if (typeof this.title != 'string') {\n      this.title = false;\n    }\n  }\n\n  addItem(newItem: any) {\n    this.close();\n    console.error(newItem)\n  }\n\n  // this.imageSource = this.sanitizer.bypassSecurityTrustResourceUrl(`data:image/png;base64, ${image}`);\n \n\n  confirm() {\n    this.close();\n  }\n\n  close() {\n    this.bsModalRef.hide();\n    if (this.link) {\n      window.location.href = this.link;\n    }\n  }\n\n\n  ngAfterViewInit() {\n\n    const lang = this.lang ? this.lang : 'auto';\n\n    setTimeout((_: any) => this.translator.getContent(lang, 'payment_methods').subscribe(\n      data => {\n        this.data_content = data;\n      },\n      error => {\n        console.error('error!');\n      }\n    ));\n  }\n}","<div id=\"loader-payment_methods\">\n\n    <app-pix-options (newItemEvent)=\"addItem($event)\" [pix_data]=\"body\" [pix_option]=\"target\" *ngIf=\"target\"></app-pix-options>\n\n    <div *ngIf=\"modal_visibility\" class=\"modal-body\" [ngClass]=\"{'p-0': qr}\">\n        <div *ngIf=\"title\" class=\"modal-header-body\">\n            <div class=\"loader-placeholder\">\n                <div class=\"loader-animation loader-text\"></div>\n                <span [attr.data-dt]=\"title_data_dt\" class=\"title\">{{ title }}</span>\n            </div>\n        </div>\n        <div *ngIf=\"!qr; else qr_container\" class=\"loader-placeholder\">\n            <div class=\"loader-animation loader-text\"></div>\n            <span [attr.data-dt]=\"body_data_dt\" class=\"d-block text-center pt-2\">{{ body }}</span>\n        </div>\n        <ng-template #qr_container>\n            <div class=\"qr_container\">\n                <!-- <img [src]=\"getQR()\" class=\"w-100\"> -->\n            </div>\n        </ng-template>\n    </div>\n    <div *ngIf=\"closeBtn || link\" class=\"modal-footer\">\n        <div class=\"loader-placeholder w-100\">\n            <div class=\"loader-animation loader-texts\"></div>\n            <button data-dt=\"payment_methods_btn_continue\" (click)=\"close()\" type=\"button\"\n                class=\"btn-footer btn-footer-cta btn-fx\">Continuar</button>\n        </div>\n    </div>\n</div>","import { Injectable } from '@angular/core';\nimport { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';\nimport { DynamicModalComponent } from './dynamic-modal/dynamic-modal.component';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DynamicModalService {\n  data_content: any;\n\n  constructor(\n    private modalService: BsModalService,\n    private bsModalRef: BsModalRef,\n  ) { }\n\n  showModal(params) {\n\n    let title_data_dt = '';\n    let body_data_dt = '';\n\n    const bsConfig = {\n      animated: true,\n      keyboard: false,\n      background: true,\n      ignoreBackdropClick: true\n    };\n\n    if (params.dt) {\n      if (params.body.length >= 1) {\n        const body_data_dt_config = [\n          { msg: 'Ocurrió un error inesperado, vuelva a intentar en unos minutos por favor', data_dt: 'payment_methods_error_process' },\n          { msg: 'Por favor seleccione un método de pago.', data_dt: 'payment_methods_choose_method' },\n          { msg: 'Por favor completa los campos obligatorios.', data_dt: 'payment_methods_complete_all_fields' },\n          { msg: 'Nos puede llevar unos minutos, por favor solo aguarde a recibir la confirmación.', data_dt: 'payment_methods_please_wait' },\n          { msg: 'Su pago fue rechazado, comuníquese con su banco emisor', data_dt: 'payment_methods_error_contact_bank' },\n          { msg: 'Pago rechazado, comuníquese con su banco', data_dt: 'payment_methods_error_contact_bank' },\n          { msg: 'Ocurrió un error al realizar el pago, en breve nos comunicaremos con usted.', data_dt: 'payment_methods_error_contact_u' },\n          { msg: 'Su pago fue exitoso, espere un momento mientras emitimos su póliza', data_dt: 'payment_methods_success_payment' },\n          { msg: 'Ocurrió un error, intento de nuevo más tarde por favor.', data_dt: 'payment_methods_error_process' },\n          { msg: 'Se enviará a tu mail las instrucciones para cursar el pago. Tienes 24 Hs para realizar el pago', data_dt: 'payment_methods_deposit_msg' },\n          { msg: 'Debe aceptar las condiciones de compra.', data_dt: 'payment_methods_agree_ccgg' },\n          { msg: 'No se puede actualizar el beneficiario porque tiene una reserva en vigencia.', data_dt: 'voucher_validity_active' },\n        ];\n\n        const data_dt_elem = body_data_dt_config.filter((e) => {\n          return e.msg === params.body;\n        });\n\n        if (data_dt_elem.length >= 1) {\n          body_data_dt = data_dt_elem[0]['data_dt'];\n        } else {\n          body_data_dt = '';\n        }\n      }\n\n      if (params.title.length >= 1) {\n        const title_data_dt_config = [\n          { msg: 'Ocurrió un error inesperado al finalizar el pago, intente de nuevo por favor.', data_dt: 'payment_methods_error_process' },\n          { msg: 'Estamos verificando su operación.', data_dt: 'payment_methods_checking_operation' },\n          { msg: 'Método de Pago', data_dt: 'payment_methods_self' },\n          { msg: 'Estado de la operación', data_dt: 'payment_methods_error_operation_status' },\n          { msg: 'Campos requeridos', data_dt: 'payment_methods_fields_required' },\n          { msg: 'Carga de datos fallida, verifique sus datos de pago por favor.', data_dt: 'payment_methods_process_fail' }\n        ];\n\n        const data_dt_elem = title_data_dt_config.filter((e) => {\n          return e.msg === params.title;\n        });\n\n        if (data_dt_elem && data_dt_elem.length >= 1) {\n          title_data_dt = data_dt_elem[0]['data_dt'];\n        } else {\n          title_data_dt = '';\n        }\n      } else {\n        title_data_dt = '';\n      }\n    } else {\n\n      // DT Translator OFF\n\n      title_data_dt = '';\n      body_data_dt = '';\n    }\n\n    let initialState = {\n      target: params.target,\n      title: params.title,\n      body: params.body,\n      closeBtn: params.closeBtn,\n      link: params.link,\n      qr: params.qr,\n      title_data_dt: title_data_dt,\n      body_data_dt: body_data_dt\n    };\n\n    if (params.target) {\n      initialState['target'] = params.target\n    }\n\n    if (params.hasOwnProperty('lang')) {\n      initialState['lang'] = params.lang;\n    }\n\n    // this.bsModalRef.content.closeBtnName = '';\n    this.bsModalRef = this.modalService.show(DynamicModalComponent, Object.assign(bsConfig, { class: 'modal-dialog-centered' }, { initialState }));\n  }\n\n  hideModal() {\n    this.bsModalRef.hide();\n  }\n}","import { Injectable } from '@angular/core';\n\ninterface Scripts {\n  name: string;\n  src: string;\n}\n\nexport const ScriptStore: Scripts[] = [\n  { name: 'dlocal', src: 'https://js.dlocal.com' },\n  { name: 'Mercadopago', src: 'https://secure.mlstatic.com/sdk/javascript/v1/mercadopago.js' },\n  { name: 'jQuery', src: 'https://code.jquery.com/jquery-3.3.1.slim.min.js' },\n  { name: 'decidir', src: 'https://live.decidir.com/static/v2.5/decidir.js'}\n];\n\n@Injectable({\n  providedIn: 'root'\n})\n\nexport class LoadScriptsService {\n\n  private scripts: any = {};\n\n  constructor() {\n    ScriptStore.forEach((script: any) => {\n      this.scripts[script.name] = {\n        loaded: false,\n        src: script.src\n      };\n    });\n  }\n\n  async load(...scripts: string[]) {\n    const promises: any[] = [];\n    scripts.forEach((script) => promises.push(this.loadScript(script)));\n    return Promise.all(promises);\n  }\n  loadScript(name: string) {\n    return new Promise((resolve, reject) => {\n      // resolve if already loaded\n      if (this.scripts[name].loaded) {\n        resolve({ script: name, loaded: true, status: 'Already Loaded' });\n      // console.log(name, ' already loaded');\n      } else {\n        // load script\n        const script = document.createElement('script');\n        script.type = 'text/javascript';\n        script.src = this.scripts[name].src;\n        script.onload = () => {\n          this.scripts[name].loaded = true;\n          // console.log(`${name} loaded`);\n          resolve({ script: name, loaded: true, status: 'Loaded' });\n        };\n        script.onerror = (error: any) => resolve({ script: name, loaded: false, status: 'Loaded' });\n        document.getElementsByTagName('head')[0].appendChild(script);\n      }\n    });\n  }\n}\n","export class PaymentMethodsConfig {\r\n    config = {\r\n        img_path: '',\r\n        title: '¿Cómo prefieres pagar?',\r\n        discode: true,\r\n        source: 'global'\r\n    }\r\n}","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\nimport { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { PaymentMethodsConfig } from './../../payment-methods/payment-methods.config';\nimport { LoadScriptsService } from './../../services/load-scripts.service';\nimport { HttpData } from './../../services/home.service';\nimport { Subject } from 'rxjs';\nimport { DynamicModalService } from './../../services/dynamic-modal.service';\nimport { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';\nimport { Modal1Component } from './../modals/modal1/modal1.component';\n// import { PaymentLinkModalComponent } from '../payment-link-modal/payment-link-modal.component';\nimport { takeWhile } from 'rxjs/operators';\nimport { TranslatorService } from 'translator365';\nimport { A365loaderService } from 'loader365';\n\ndeclare let $: any;\ndeclare let Mercadopago: any;\ndeclare let paypal: any;\ndeclare let dlocal: any;\n\nexport function getBin() {\n  const ccNumber: any = document.querySelector('input[data-checkout=\"cardNumber\"]');\n  return ccNumber.value.replace(/[ .-]/g, '').slice(0, 6);\n}\n\nexport function setInstallmentInfo(status, installments) {\n\n  let html_options = '';\n  const payers = installments[0].payer_costs;\n\n  // noinspection JSAnnotator\n  for (let i = 0; payers && i < payers.length; i++) {\n    // noinspection JSAnnotator\n    html_options += '<option value=\"' + payers[i].installments + '\">' + payers[i].recommended_message + '</option>';\n  }\n  $('#installmentsOption').html(html_options);\n}\n\n@Component({\n  selector: 'app-payment-methods',\n  templateUrl: './payment-methods.component.html',\n  styleUrls: ['./payment-methods.component.scss']\n})\nexport class PaymentMethodsComponent implements OnInit {\n\n  pixFormSubmitted: boolean = false;\n  pixForm: FormGroup;\n  pix_options: boolean = false;\n\n  @Input() notifier: Subject<any>;\n  @Input() data: Subject<any>;\n  dates_data_content: any;\n  data_form_validation_msg: any;\n  data_support: any = {\n    whatsapp_number: '',\n    reserve_id: '',\n    whatsapp_message: () => {\n      return `Hola! Estoy teniendo inconvenientes para finalizar la compra. Mi número de rva es ${this.data_support['reserve_id']}. Me puedes ayudar?`\n    },\n  };\n\n  whatsapp_support: boolean = false;\n  geo_data: any;\n  decidir_available: boolean;\n\n  // cielo parcelas\n  cielo_parcelas: any = [];\n  emit_submitted: boolean = false;\n\n\n  @ViewChild('form_validation_msg') set form_validation_msg(e: ElementRef<HTMLElement>) {\n    if (e) {\n      this.refreshContent('form_validation_msg');\n    }\n  }\n\n  @ViewChild('dyn_data') set dyn_data_quote_destination(e: ElementRef<HTMLElement>) {\n    if (e) {\n      this.translator.refreshContent(this.data_content, 'payment_methods');\n    }\n  }\n\n  data_content: any;\n  supplier_id: number;\n  bsModalRef: BsModalRef;\n  quote: any = {};\n  dates: any;\n  benefits: any;\n  current_year: any = new Date().getFullYear();\n  currency_symbol: any;\n  users: any;\n  nacionalidades: any;\n  country_names: any;\n  payment_method: any;\n  emit_data = this;\n  user_follow_id: any;\n  pax_name: any;\n  additional_email = '';\n  extra_email = false;\n  bdayDays = new Array<number>();\n  bdayMonths = new Array<number>();\n  bdayYears = new Array<number>();\n  ccgg_OK = false;\n  ccgg_state = false;\n  showError = false;\n  discode_error = false;\n  emergency_new_contact;\n  registerForm: FormGroup;\n  paymentMethodsForm: FormGroup;\n  additional_number: FormArray;\n  emergency_contact: FormArray;\n  items: FormArray;\n  submitted = false;\n  paymentMethod = { cc: false, paypal: false, deposit: false, dlocal: false, payment_link: false, cielo: false, pix: false };\n  card = { selected: false, id: 0 };\n  card_selected = false;\n  btnCtaSubmit = true;\n  credit_card_available = false;\n  paypal_available: boolean;\n  dlocal_available = false;\n  pix_available: boolean = false;\n  cielo_available: boolean = false;\n  dlocalInstance: any;\n  payment_link = false;\n  dni = false;\n  currentYear = Number;\n  bank_deposit = false;\n  fields: any;\n  cardField: any;\n  country_reference: any;\n  dlocal_document: { placeholder: string, format_min: number, format_max: number };\n  dlocal_errors: any;\n  argentina: boolean;\n  pax_names: any[];\n  paxAges: any;\n  img_path: string;\n  affiliate_program: any;\n  id: any;\n  geo_url: any;\n  isAlive: boolean = true;\n  pm_title: string;\n  payment_processor: string;\n  payment_methods_container: boolean;\n  payment_methods_config: any;\n  reserveId: any;\n  quote_detail: any;\n  beneficiares: any;\n  pmd: any = false;\n  lang: any = 'auto';\n\n  refreshContent(target: string = 'payment_methods') {\n\n    if ((this.data_content && target === 'payment_methods') || (this.data_form_validation_msg && target === 'form_validation_msg')) {\n\n      let content;\n\n      if (target === 'payment_methods') {\n        content = this.data_content;\n      }\n      if (target === 'form_validation_msg') {\n        content = this.data_form_validation_msg;\n      }\n\n      this.translator.refreshContent(content, target);\n    }\n  }\n\n  constructor(\n    private router: Router,\n    public modalService: BsModalService,\n    public dynamicModalService: DynamicModalService,\n    private route: ActivatedRoute,\n    private httpData: HttpData,\n    private translator: TranslatorService,\n    private scriptsLoader: LoadScriptsService,\n    private pm_config: PaymentMethodsConfig,\n    private formBuilder: FormBuilder,\n    private loaderService: A365loaderService,\n    private el: ElementRef,\n  ) {\n\n    this.scriptsLoader.load('jQuery');\n\n    this.createForm();\n    this.affiliate_program = { discode: '' };\n\n    // GEO Settings\n\n    if (this.pm_config.config.source == 'global') {\n      this.geo_url = this.router.url.split('/')[1];\n    } else {\n      this.geo_url = '';\n    }\n\n    // language GLOBAL = auto \n\n    if (this.pm_config.config.source != 'global') {\n      const market_languages = [\n        { source: 'br', lang: 155 }\n      ];\n      this.lang = market_languages.filter(market => market.source == this.pm_config.config.source)[0].lang;\n    }\n  }\n\n  private scrollToFirstInvalidControl() {\n    const firstInvalidControl: HTMLElement = this.el.nativeElement.querySelector(\n      'form .ng-invalid'\n    );\n    firstInvalidControl.focus(); // without smooth behavior\n  }\n\n  initDlocal() {\n\n    this.cardField = this.fields.create('card', {\n      style: {\n        base: {\n          fontSize: '16px',\n          fontFamily: '\\'Inter UI medium\\', sans-serif',\n          lineHeight: '18px',\n          fontSmoothing: 'antialiased',\n          fontWeight: '500',\n          color: '#495057',\n          '::placeholder': {\n            color: '#555555'\n          },\n          iconColor: '#adbfd3'\n        }\n      }\n    });\n\n\n    this.cardField.mount(document.getElementById('container'));\n\n    this.cardField.addEventListener('change', function (event) {\n      const displayError = document.getElementById('card-errors');\n      let msg = '';\n      if (event.error) {\n        msg = event.error.message;\n      } else {\n        msg = '';\n      }\n      if (document.getElementsByClassName('card-errors')) {\n        document.getElementsByClassName('card-errors')[0].textContent = msg;\n      }\n    });\n\n    this.cardField.on('brand', function (event) {\n      document.getElementById('card-errors').innerHTML = '';\n      if (event.brand) {\n\n        const totalAmount = this.payment_processor ? this.quote_detail.price : this.registerForm.get('final_price').value;\n\n        const currency = this.country_reference.currency_code;\n        this.dlocalInstance.createInstallmentsPlan(this.cardField, totalAmount, currency)\n          .then((result) => {\n            const installmentsSelect = document.getElementById('installments');\n            this.buildInstallments(installmentsSelect, result.installments);\n          }).catch((result) => {\n            console.error(result);\n          });\n      }\n    }.bind(this));\n\n  }\n\n  // getReserveId() {\n  //   return this.payment_processor ? this.quote.id : this.emit_data;\n  // }\n\n  dlocalTokenHandler(token) {\n\n    const id = this.id;\n    const totalAmount = this.payment_processor ? this.quote_detail.price : this.registerForm.get('final_price').value;\n\n    this.httpData.post({\n      'method': 'Dlocal',\n      'transaction_amount': totalAmount,\n      'currency_code': this.country_reference.currency_code,\n      'country_code': this.country_reference.country_code,\n      'installment': $(\"#installments\").val(),\n      'token': token,\n      'reserve_id': this.reserveId,\n      'payer_email': $('#email').val(),\n      'payer_name': $('#payer_name').val(),\n      'payer_document': $('#payer_document').val()\n    }, 'pay', '1').subscribe((data) => {\n\n      this.dynamicModalService.hideModal();\n\n      if (data.hasOwnProperty('status')) {\n\n        // console.log('MODAL');\n        this.dynamicModalService.showModal({ title: 'Estado de la operación', body: data.status_msg, closeBtn: false, dt: true });\n\n        if (data.status === 'PAID') {\n          this.emitVoucher(this.reserveId);\n        } else if (data.status === 'REJECTED') {\n        } else if (data.status === 'PENDING') {\n          window.location.href = `${this.geo_url}/payment_pending/${id}`;\n        } else if (data.status === false) {\n          // this.router.navigateByUrl('/');\n        }\n\n        this.dynamicModalService.hideModal();\n        this.loaderService.loaderState(false);\n\n      } else if (this.country_reference.country_code == 'BR') {\n        window.location.href = data.redirect_url;\n      }\n    });\n\n  }\n\n  endFollowProcess(reserve_id: any, payment_method: any) {\n    const id = this.id;\n    const formData = new FormData();\n    formData.append('reserve_id', reserve_id);\n    formData.append('follow_id', id);\n    formData.append('payment_method', payment_method);\n    this.httpData.post(formData, 'user-follow-end').subscribe((data) => { });\n  }\n\n  billing(reserve_id: any, payment_method: any) {\n\n    const formData = new FormData();\n\n    const paxDocType = this.payment_processor ? '5' : this.registerForm.get('paxDoctype').value;\n    const seller_id = this.payment_processor ? this.quote.seller_id : this.getFromQuoteStorage('seller_id');\n    const entity_id = this.payment_processor ? this.quote.entity_id : this.getFromQuoteStorage('entity_id');\n    let email = this.payment_processor ? this.users[0].email : this.getFromQuoteStorage('paxemail');\n    let phone = this.payment_processor ? this.users[0].phone : this.getFromQuoteStorage('paxphone');\n    const country_id = this.payment_processor ? this.quote.source_country_id : this.getFromQuoteStorage('country_id');\n    const fiscal_doc_number = this.payment_processor ? this.users[0].passport : this.registerForm.get('paxDocnumber').value;\n    const name = this.payment_processor ? this.users[0].firstname : this.getFromQuoteStorage('paxname');\n\n    let city, street;\n\n    if (this.payment_processor && this.payment_processor == 'cielo') {\n      email = this.registerForm.get(\"buyer_email\").value;\n      phone = this.registerForm.get(\"buyer_phone\").value;\n      city = this.registerForm.get(\"buyer_city\").value;\n    } else {\n      city = this.payment_processor ? this.quote_detail.from : this.getFromQuoteStorage('country_name');\n      street = this.payment_processor ? this.quote_detail.from : this.getFromQuoteStorage('country_name');\n    }\n\n    formData.append('reserve_id', reserve_id);\n    formData.append('seller_id', seller_id);\n    formData.append('entity_id', entity_id);\n    formData.append('pay_method', payment_method);\n    formData.append('email', email);\n    formData.append('phone_type', 'mobile');\n    formData.append('country_code', country_id);\n    formData.append('area_code', country_id);\n    formData.append('phone', phone);\n    formData.append('fiscal_type', '3');\n    formData.append('doc_type', paxDocType);\n    formData.append('fiscal_doc_number', fiscal_doc_number);\n    formData.append('name', name);\n    formData.append('city', city);\n    formData.append('street', street);\n\n    this.httpData.post(formData, 'billing', '1').subscribe((data) => { });\n  }\n\n  sendDepositNotification(id: any) {\n    const email = this.payment_processor ? this.users[0].email : this.quote.email;\n    const formData = new FormData();\n    formData.append('reserve_id', id);\n    formData.append('email', email);\n    this.httpData.post(formData, 'send-deposit-notification').subscribe((data) => { });\n  }\n\n  sendBilling(reserve_id: any) {\n\n    this.loaderService.loaderState(true);\n    const formData = new FormData();\n\n    if (!this.payment_processor) {\n      if (this.registerForm.get('other_email_send_voucher').value) {\n        this.additional_email = '?additional_email=' + this.registerForm.get('other_email_send_voucher').value;\n      }\n    }\n\n    const success_page = this.payment_method == 'cielo' ? `payment_success/${reserve_id}` : `${this.geo_url}/payment_success/${reserve_id}${this.additional_email}`;\n\n    if (this.payment_method != 'cielo' && this.payment_method !== 'pix') {\n      this.httpData.post(formData, 'send-billing/' + reserve_id).subscribe((resp) => {\n        window.location.href = success_page;\n      });\n    } else {\n      if (this.payment_method === 'pix') {\n        this.loaderService.loaderState(false);\n      } else {\n        window.location.href = success_page;\n      }\n    }\n\n    if (this.payment_method === 'Dlocal') {\n      window.location.href = `${this.geo_url}/payment_success/${reserve_id}${this.additional_email}`;\n    }\n  }\n\n  submitPayment() {\n    // console.log('submitPayment()');\n  }\n\n  async OpenFloatingSupport(ms: number) {\n    await this.sleep(ms);\n    this.whatsapp_support = true;\n  }\n\n  sleep(ms) {\n    return new Promise(resolve => setTimeout(resolve, ms));\n  }\n\n  emitVoucher(data) {\n\n    this.loaderService.loaderState(true);\n\n    const formData = new FormData();\n\n    if (!this.payment_processor) {\n      formData.append('affiliate_code', this.registerForm.get('discode').value);\n      this.endFollowProcess(data, this.payment_method);\n    } else {\n      formData.append('affiliate_code', '');\n    }\n\n    this.httpData.post(formData, 'emit/' + data).subscribe((dataUpdate) => {\n      if (dataUpdate.status === true) {\n        this.sendBilling(data);\n      }\n    });\n  }\n\n  sdkResponseHandler(status, response) {\n\n    if (status !== 200 && status !== 201) {\n      this.loaderService.loaderState(false);\n      this.dynamicModalService.showModal({ title: 'Carga de datos fallida, verifique sus datos de pago por favor.', body: '', closeBtn: true, dt: true });\n    } else {\n\n      // this.loaderService.loaderState(true);\n      const form = document.querySelector('#emit_form2');\n      const card = document.createElement('input');\n      const id = this.id;\n\n      card.setAttribute('name', 'token');\n      card.setAttribute('type', 'hidden');\n      card.setAttribute('value', response.id);\n      form.appendChild(card);\n\n      const product_name = this.payment_processor ? this.quote_detail.product_name : this.quote.name;\n      const payer_email = this.payment_processor ? this.beneficiares[0].email : $('#email').val()\n\n      const totalAmount = this.payment_processor ? this.quote_detail.price : this.registerForm.get('final_price').value;\n\n      this.httpData.post({\n        'method': 'Mercadopago',\n        'transaction_amount': totalAmount,\n        'token': response.id,\n        'description': product_name + ' Reserva ' + this.reserveId,\n        'reserve_id': this.reserveId,\n        'installments': $('#installmentsOption').val(),\n        'payment_method_id': $('#paymentMethodId').val(),\n        'country_id': this.getFromQuoteStorage('country_id'),\n        'payer': payer_email,\n      }, 'pay', '1').subscribe((data) => {\n\n        let flag: any = 1;\n\n        this.loaderService.loaderState(false);\n        this.dynamicModalService.showModal({ title: 'Estamos verificando su operación.', body: 'Nos puede llevar unos minutos, por favor solo aguarde a recibir la confirmación.', dt: true });\n        const interv = setInterval(function () {\n\n          // this.dynamicModalService.hideModal();\n          // this.loaderService.loaderState(false);\n          // clearInterval(interv);\n          // this.emitVoucher(this.emit_data['reserve']['new_id']);\n\n          const params = '?reserve_id=' + this.reserveId;\n          this.httpData.get('mp-ipn-validate' + params).subscribe((dataIpn) => {\n\n            if (dataIpn.payment_status === true) {\n              clearInterval(interv);\n              this.dynamicModalService.hideModal();\n              this.loaderService.loaderState(false);\n              this.emitVoucher(this.reserveId);\n            } else if (flag === 100 && dataIpn.payment_status === false) {\n              clearInterval(interv);\n              this.dynamicModalService.hideModal();\n              alert('No es posible procesar su pago, comuníquese con el banco emisor de su tarjeta por favor.');\n              this.loaderService.loaderState(false);\n              this.billing(this.reserveId, 'MercadoPago');\n              window.location.href = `${this.geo_url}/`;\n            }\n\n          });\n          flag++;\n\n        }.bind(this), 1000);\n\n      });\n\n    }\n  }\n\n  openModalPayment() {\n\n    const config = {\n      animated: true,\n      keyboard: false,\n      backdrop: true,\n      ignoreBackdropClick: true,\n    };\n\n\n    const initialState = {\n      img_path: this.img_path\n    };\n\n    this.submitted = false;\n    this.bsModalRef = this.modalService.show(Modal1Component, Object.assign(config, { class: 'modal-data' }, { initialState }));\n    this.bsModalRef.content.closeCC.subscribe((v) => {\n      this.card_selected = false;\n    });\n\n    this.bsModalRef.content.action.subscribe((value) => {\n\n      this.card_selected = true;\n      this.paymentMethodsForm.controls['cardID'].setValue(value.id);\n      this.paymentMethodsForm.controls['payment_method_id'].setValue(value.id);\n\n      const cardImage: string = value.img;\n      const cards_models = ['amex', 'debcabal', 'visa', 'master', 'cencosud', 'argencard', 'cordobesa', 'naranja', 'cabal', 'maestro', 'debmaster', 'debvisa', 'cmr'];\n\n      let card_class: string;\n\n      setTimeout(() => {\n        const box = document.getElementById('pm-cc-image');\n        // box.setAttribute('src', `assets/img/checkout/cards/${cardImage}`);\n        if (cards_models.indexOf(value.id) != -1) {\n          card_class = 'pm-cc-' + value.id;\n        } else {\n          card_class = 'pm-cc-default';\n        }\n\n        document.getElementById('pm-cc-container').classList.add(card_class);\n        box.setAttribute('src', `smartcheckout/assets/img/cards/${cardImage}`);\n      }, 100);\n\n      setTimeout(() => {\n        const doctypes = Mercadopago.getIdentificationTypes();\n      }, 100);\n\n    });\n  }\n\n  setPMS(e: any) {\n    const x = e.currentTarget;\n    const input = e.currentTarget.querySelectorAll('input')[0];\n    input.checked = true;\n    this.paymentMethodsForm.controls['paymentMethod'].setValue(input.value);\n    this.paymentMethodSelected('');\n  }\n\n  pixFormSubmit() {\n\n    this.pixFormSubmitted = true;\n\n    if (this.pixForm.invalid) {\n      return;\n    }\n    // this.modalRef.hide();\n    console.log(this.pixForm.get('pix_option').value);\n\n  }\n\n  paymentMethodSelected(target: any): void {\n\n    const payment_method_selected = this.paymentMethodsForm.controls['paymentMethod'].value;\n    const country_id = this.getFromQuoteStorage('country_id');\n    const btnSubmit = $('#btn-submit');\n\n    this.card_selected = false;\n\n    if (payment_method_selected === 'payment_link') {\n      this.payment_method = 'payment_link';\n      btnSubmit.text('Continuar');\n      this.btnCtaSubmit = true;\n\n    } else {\n\n      btnSubmit.text('Comprar');\n\n      if (payment_method_selected === 'paypal' || payment_method_selected === 'dlocal') {\n\n        if (payment_method_selected === 'paypal') {\n          this.payment_method = 'Paypal';\n\n          if (!this.payment_processor) {\n            this.btnCtaSubmit = false;\n          }\n\n          setTimeout(function () {\n            this.paypal();\n          }.bind(this), 500);\n        }\n        if (payment_method_selected === 'dlocal') {\n          this.payment_method = 'Dlocal';\n          this.dlocal_errors = { payer_name: true, payer_document: true };\n        }\n\n      } else if (payment_method_selected === 'deposit') {\n        if (country_id === '164') {\n          this.payment_method = 'deposit';\n          this.btnCtaSubmit = true;\n          $('#btn-submit').show();\n        }\n      } else {\n\n        if ((country_id == '164' && this.payment_processor != 'cielo') || (this.payment_processor === 'mercadopago' && country_id == '164')) {\n\n          this.payment_method = 'Mercadopago';\n          this.card_selected = false;\n          this.openModalPayment();\n          this.setCCValidation(true);\n        }\n\n        if (payment_method_selected == 'decidir' || this.payment_processor === 'decidir') {\n          this.payment_method = 'decidir'\n          this.setCCValidation(true);\n        }\n\n        if (payment_method_selected == 'cielo' || this.payment_processor == 'cielo') {\n          this.payment_method = 'cielo';\n          this.setCCValidation(true);\n          this.paymentMethodsForm.patchValue({\n            card_owner_doc: '123'\n          });\n\n          // UPDATE CIELO PARCELAS \n\n          if (this.paymentMethodsForm.get('parcelas') == null) {\n            this.paymentMethodsForm.addControl('parcelas', new FormControl('', Validators.required));\n          }\n        }\n\n        if (payment_method_selected === 'pix' || this.payment_processor === 'pix') {\n          this.payment_method = 'pix';\n          this.pix_options = true;\n        }\n\n        console.log(payment_method_selected);\n        console.log(this.payment_processor);\n\n        if ((payment_method_selected !== 'pix' || this.payment_processor !== 'pix') && this.pix_options) {\n          this.pix_options = false;\n        }\n\n        this.btnCtaSubmit = true;\n      }\n    }\n\n    // SOME FINAL TASKS\n\n    for (const [key, value] of Object.entries(this.paymentMethod)) {\n      if (key === payment_method_selected) {\n        this.paymentMethod[key] = true;\n      } else {\n        this.paymentMethod[key] = false;\n      }\n    }\n\n    // PARCELAS CIELO\n\n    if (payment_method_selected != 'cielo' && this.payment_processor != 'cielo' && this.paymentMethodsForm.get('parcelas')) {\n      this.paymentMethodsForm.removeControl('parcelas');\n    }\n\n    if (this.btnCtaSubmit) {\n      btnSubmit.show();\n    } else {\n      btnSubmit.hide();\n    }\n\n    if (payment_method_selected === 'dlocal') {\n\n      if (!window['dlocal']) {\n        this.scriptsLoader.load('dlocal').then(r => {\n          setTimeout(() => {\n            this.initDlocal();\n          }, 400);\n        });\n      } else {\n        setTimeout(() => {\n          this.initDlocal();\n        }, 400);\n      }\n    }\n  }\n\n  getPMD(data, quote) {\n\n    // *******************\n    //  DECIDIR | PRISMA\n    // *******************\n\n    // console.log('*** init Decidir/Prisma');\n\n    // let cid = this.getCountryReference(this.quote.country_id);\n    // console.log('cid ', cid);\n    // console.log(this.decidir_available);\n    // console.log(this.payment_processor);\n\n    // if ((cid == '164' && (!this.payment_processor) && this.decidir_available) || ((this.payment_processor) && this.payment_processor === 'decidir')) {\n    //   this.scriptsLoader.load('decidir').then(r => {\n    //     console.log(r);\n    //     setTimeout(function () {\n    //       this.loaderService.loaderState(false);\n    //     }.bind(this), 100);\n    //   });\n    // }\n\n    // ****************\n    //  PAYPAL\n    // ***************\n\n    // console.log('*** init PayPal');\n\n    const s = document.createElement('script');\n    const currency = (this.quote.country_id == 199) ? 'EUR' : 'USD';\n\n    const client_id = data.methods['Paypal'];\n\n    s.src = 'https://www.paypal.com/sdk/js?currency=' + currency + '&client-id=' + client_id;\n    s.async = true;\n    const e = document.getElementsByTagName('script')[0];\n    e.parentNode.insertBefore(s, e);\n\n    // ****************\n    //  MERCADOPAGO\n    // ***************\n\n\n    if (data.methods.hasOwnProperty('MercadoPago')) {\n\n      this.scriptsLoader.load('Mercadopago').then(r => {\n        Mercadopago.setPublishableKey(data.methods['MercadoPago']);\n      });\n    }\n\n    // ****************\n    //  DLOCAL\n    // ****************\n\n    let country_id = this.getCountryReference(this.quote.country_id);\n\n    if ((country_id != '164' && (!this.payment_processor) && this.dlocal_available) || ((this.payment_processor) && this.payment_processor === 'dlocal')) {\n\n      this.loaderService.loaderState(true);\n\n      this.scriptsLoader.load('dlocal').then(r => {\n        setTimeout(function () {\n\n          const locale = this.country_reference.country_code == 'BR' ? 'pt' : 'es';\n\n          this.dlocalInstance = dlocal(data.methods['Dlocal']);\n\n          this.fields = this.dlocalInstance.fields({\n            locale: locale,\n            country: this.country_reference.country_code,\n            fonts: [{\n              cssSrc: 'https://rsms.me/inter/inter-ui.css'\n            }]\n          });\n\n          this.loaderService.loaderState(false);\n        }.bind(this), 100);\n      });\n    }\n\n    // ****************\n    //  DEPOSIT\n    // ***************\n\n    if (data.methods.hasOwnProperty('Transferencia')) {\n\n      let calculateDays = this.calculateDays(quote.date_from_long, quote.date_to_long);\n\n      if (this.quote.hasOwnProperty('qsource')) {\n        if (this.quote['qsource'] == 'nomad') {\n          calculateDays = this.calculateDays(this.registerForm.controls['nomad_date_from'].value, this.registerForm.controls['nomad_date_to'].value)\n        }\n      }\n\n      if (calculateDays['date_current_to_from'] > 4) {\n        if (this.getFromQuoteStorage('country_id') == '164') {\n          this.bank_deposit = true;\n        }\n      }\n    }\n\n    switch (this.payment_processor) {\n      case 'decidir':\n        this.decidir_available = true;\n        break;\n      case 'mercadopago':\n        this.credit_card_available = true;\n        break;\n      case 'paypal':\n        this.paypal_available = true;\n        setTimeout(() => {\n          this.paymentMethodSelected('');\n        }, 100);\n        break;\n      case 'transferencia':\n        this.paymentMethodSelected('');\n        break;\n      case 'dlocal':\n        setTimeout(() => {\n          this.paymentMethodSelected('');\n        }, 100);\n        break;\n    }\n  }\n\n  getPaymentMethodData(quote: any) {\n\n    if (quote.country_id || typeof quote.country_id !== 'undefined') {\n      if (quote.hasOwnProperty('source_country_id')) {\n        quote.country_id = quote.source_country_id;\n      }\n    }\n\n    // this.pmd = true;\n    return this.httpData.get('get-payment-methods?country_id=' + this.quote.country_id);\n\n  }\n\n  calculateDays(from: any, to: any) {\n    const options = { year: 'numeric', month: 'short', day: 'numeric' } as const;\n    const current = new Date();\n    const date1 = new Date(from);\n    const date2 = new Date(to);\n    const diffTime = Math.abs(date2.getTime() - date1.getTime());\n    const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n    const totalDiffDays = diffDays + 1;\n    const diffTimeCurrent = Math.abs(date1.getTime() - current.getTime());\n    const diffDaysCurrent = Math.ceil(diffTimeCurrent / (1000 * 60 * 60 * 24));\n\n    const data = {\n      'date_from': date1.toLocaleDateString('es-ES', options),\n      'date_to': date2.toLocaleDateString('es-ES', options),\n      'days': totalDiffDays,\n      'date_from_short': date1.getDate() + '/' + (date1.getMonth() + 1) + '/' + date1.getFullYear(),\n      'date_to_short': date2.getDate() + '/' + (date2.getMonth() + 1) + '/' + date2.getFullYear(),\n      'date_current_to_from': diffDaysCurrent + 1\n    };\n\n    return data;\n  }\n\n  buildInstallments(installmentsInput, installmentsPlan) {\n    const currency = '';\n    const installmentsOptions = installmentsPlan.installments.reduce(function (options, plan) {\n      options += '<option value=' + plan.id + '>' + plan.installments + ' of ' + currency + ' ' + plan.installment_amount + ' (Total : ' + currency + ' ' + plan.total_amount + ')</option>';\n      return options;\n    }, '');\n    installmentsInput.disabled = false;\n    installmentsInput.innerHTML = installmentsOptions;\n  }\n\n  setPaymentMethodInfo(status, response) {\n\n    if (status === 200) {\n      const form = document.querySelector('#form-credit-card');\n      if (document.querySelector('input[name=paymentMethodId]') == null) {\n        const paymentMethod = document.createElement('input');\n        paymentMethod.setAttribute('name', 'paymentMethodId');\n        paymentMethod.setAttribute('type', 'hidden');\n        paymentMethod.setAttribute('value', response[0].id);\n        form.appendChild(paymentMethod);\n      } else {\n        const querPaymentMethodId: any = document.querySelector('input[name=paymentMethodId]');\n        querPaymentMethodId.value = response[0].id;\n      }\n\n      const totalAmount = this.payment_processor ? this.quote_detail.price : this.registerForm.get('final_price').value;\n\n      Mercadopago.getInstallments({\n        'bin': getBin(),\n        'amount': totalAmount\n      }, setInstallmentInfo);\n\n    }\n  }\n  guessingPaymentMethod(event) {\n    const bin = getBin();\n    if (event.type === 'keyup') {\n      if (bin.length >= 6) {\n        Mercadopago.getPaymentMethod({\n          'bin': bin\n        }, this.setPaymentMethodInfo.bind(this));\n      }\n    } else {\n      setTimeout(function () {\n        if (bin.length >= 6) {\n          Mercadopago.getPaymentMethod({\n            'bin': bin\n          }, this.setPaymentMethodInfo.bind(this));\n        }\n      }, 100);\n    }\n  }\n\n  paypal() {\n\n    const country_id = this.getFromQuoteStorage('country_id');\n\n    paypal.Buttons({\n      createOrder: function (data, actions) {\n\n        const final_price = this.registerForm.get('final_price').value;\n        const final_price_usd = this.registerForm.get('final_price_usd').value;\n        const totalAmount = this.payment_processor ? this.quote_detail.price_usd : ((country_id == '199') ? final_price : final_price_usd);\n\n        return actions.order.create({\n          purchase_units: [{\n            amount: {\n              'currency_code': (country_id == '199' ? 'EUR' : 'USD'),\n              'value': totalAmount,\n            }\n          }]\n        });\n      }.bind(this),\n      onApprove: function (data, actions) {\n        this.onSubmit(data, actions, true);\n      }.bind(this),\n      onCancel: function (err) {\n        if (!this.payment_processor) {\n\n          const checkPax = this.checkPaxDocs();\n          if (checkPax) {\n            this.httpData.post(this.getFormData(), 'emit').subscribe((dataEmit) => {\n              this.billing(dataEmit.reserve.new_id, 'Paypal');\n            });\n          }\n        }\n        this.dynamicModalService.showModal({ title: 'Ocurrió un error inesperado al finalizar el pago, intente de nuevo por favor.', body: '', closeBtn: true, dt: true });\n      }.bind(this),\n      onError: function (err) {\n        if (!this.payment_processor) {\n          const checkPax = this.checkPaxDocs();\n          if (checkPax) {\n            this.httpData.post(this.getFormData(), 'emit').subscribe((dataEmit) => {\n              this.billing(dataEmit.reserve.new_id, 'Paypal');\n            });\n          }\n        }\n        this.dynamicModalService.showModal({ title: 'Ocurrió un error inesperado al finalizar el pago, intente de nuevo por favor.', body: '', closeBtn: true, dt: true });\n      }.bind(this)\n    }).render('#paypal-button-container');\n  }\n\n  checkPaxDocs() {\n    let status = true;\n    const serialized = $('#emit_form').serialize();\n\n    const dataSet = serialized.split('&');\n    dataSet.forEach((key, val) => {\n      const dataSplit = key.split('=');\n      if (decodeURIComponent(dataSplit[0]).substring(22, 12) == 'doc_number' &&\n        (!decodeURIComponent(dataSplit[1]) || decodeURIComponent(dataSplit[1]).length == 1)) {\n        status = false;\n      }\n    });\n    if (!status) {\n      alert('Por favor verifique el número de pasaporte/documento');\n    }\n    return status;\n  }\n\n  getFormData() {\n\n    const serialized = $('#emit_form').serialize();\n    const formData = new FormData();\n\n    formData.append('entity', this.quote.entity_id);\n    formData.append('seller', this.quote.seller_id);\n    formData.append('product_id', this.quote.product_id);\n\n    let cid = this.quote.country_id;\n    if (this.quote.from) {\n      cid = this.quote.from;\n    }\n\n    // let country_id = this.getCountryReference(this.quote.from);\n    let country_id = this.getCountryReference(cid);\n\n    formData.append('country', country_id);\n    formData.append('region', this.quote.to);\n    formData.append('date_from', this.dates.date_from_short);\n    formData.append('date_to', this.dates.date_to_short);\n\n    if (this.pm_config.config.discode) {\n      formData.append('discode', this.registerForm.get('discode').value);\n    }\n\n    formData.append('b2b_auth_code', this.getFromQuoteStorage('b2b_auth_code'));\n\n    if (this.payment_method == 'pix') {\n      formData.append('payment_method', this.capitalizeFirstLetter(this.payment_method));\n    } else {\n      formData.append('payment_method', this.payment_method);\n    }\n\n    if (this.payment_method != 'pix') {\n\n      formData.append('cardID', this.paymentMethodsForm.get('cardID').value);\n      formData.append('card_number', this.paymentMethodsForm.get('card_number').value);\n      formData.append('card_date_exp', this.paymentMethodsForm.get('card_date_exp').value);\n      formData.append('card_security_code', this.paymentMethodsForm.get('card_security_code').value);\n      formData.append('card_owner', this.paymentMethodsForm.get('card_owner').value);\n      formData.append('card_owner_doc', this.paymentMethodsForm.get('card_owner_doc').value);\n      formData.append('card_date_exp_year', this.paymentMethodsForm.get('card_date_exp_year').value);\n      formData.append('payment_method_id', this.paymentMethodsForm.get('payment_method_id').value);\n\n    }\n\n    const dataSet = serialized.split('&');\n    dataSet.forEach((key: any, val: any) => {\n      const dataSplit = key.split('=');\n      formData.append(decodeURIComponent(dataSplit[0]), decodeURIComponent(dataSplit[1]));\n    });\n\n    const pax_doc_numbers = document.querySelectorAll('.input-doc-number');\n    for (var i = 0; i < pax_doc_numbers.length; i++) {\n      let pd = (pax_doc_numbers[i] as HTMLInputElement).value;\n      formData.set(`beneficiary[doc_number][${i}]`, pd);\n    }\n\n    // const pax_doc_numbers = (this.registerForm.get('paxDocNumbers').value).split(',');\n    // console.log(pax_doc_numbers);\n    // for (let index = 0; index < pax_doc_numbers.length; index++) {\n    //   let doc_value = pax_doc_numbers[index];\n    //   formData.set(`beneficiary[doc_number][${index}]`, doc_value);\n    // }\n\n    return formData;\n  }\n\n  /*********************************\n     PAYMENT PROCESSOR\n  *********************************/\n\n  payment_process(payment_processor: any, data = null, actions = null) {\n\n    this.loaderService.loaderState(true);\n\n    if (payment_processor) {\n      payment_processor = payment_processor.toLowerCase();\n    }\n\n    if (payment_processor === 'cielo' || payment_processor === 'pix') {\n\n      let discount = 0;\n\n      // if (this.quote_detail.hasOwnProperty('discount')) {\n      //   discount = this.quote_detail['discount'] ?? 0;\n      //   console.log('-----> discount', discount)\n      // }\n\n      // let payment_data = {\n      //   reserve_id: this.reserveId,\n      //   product_id: this.quote.product_id,\n      //   country_id: 155,\n      //   total_pax: this.quote.input_total,\n      //   region: this.quote.to,\n      //   date_from: this.dates.date_from_short,\n      //   date_to: this.dates.date_to_short,\n      //   discount: discount,\n      // }\n\n      let payment_data = {\n        discount: discount,\n        reserve_id: this.quote.reserve_id,\n        product_id: this.quote.product_id,\n        country_id: 155,\n        total_pax: this.quote.input_total,\n        region: this.quote.to,\n        date_from: this.dates.date_from_short,\n        date_to: this.dates.date_to_short,\n        buyer_zipcode: this.quote_detail.buyer_zipcode,\n        buyer_city: this.quote_detail.buyer_city,\n        buyer_neighborhood: this.quote_detail.buyer_neighborhood,\n        buyer_state: this.quote_detail.buyer_state,\n        buyer_address: this.quote_detail.buyer_address,\n      }\n\n\n      if (payment_processor === 'cielo') {\n\n        payment_data['method'] = 'Cielo';\n\n        const cielo_data = {\n          numCartao: this.paymentMethodsForm.get('card_number').value,\n          anoCartao: this.paymentMethodsForm.get('card_date_exp_year').value,\n          mesCartao: this.paymentMethodsForm.get('card_date_exp').value,\n          ccMarca: this.paymentMethodsForm.get('cardID').value,\n          codCartao: String(this.paymentMethodsForm.get('card_security_code').value),\n          titular: this.paymentMethodsForm.get('card_owner').value,\n          parcelas: parseInt(this.paymentMethodsForm.get('parcelas').value)\n        }\n        Object.assign(payment_data, cielo_data);\n      }\n\n      if (payment_processor === 'pix') {\n        payment_data['method'] = 'Pix';\n      }\n\n      const buyer_data = this.registerForm.value;\n      delete buyer_data['cc_gg'];\n      Object.assign(payment_data, buyer_data);\n\n      if (this.quote_detail.hasOwnProperty('discount')) {\n        discount = this.quote_detail['discount'] ?? 0;\n        payment_data['discount'] = discount;\n      }\n\n      this.httpData.post(payment_data, 'pay', '1').subscribe((data) => {\n        if (data.status) {\n          this.loaderService.loaderState(false);\n\n          //! default success MSG (cielo)\n\n          let body_content = 'Seu pagamento foi bem-sucedido, aguarde um momento enquanto emitimos sua apólice';\n          let title_content = 'Status de operação';\n          let closeBtn = true;\n          let qr = false;\n\n          let pix_option = this.pixForm.get('pix_option').value;\n          this.pix_options = true;\n          let target = 'default';\n\n          if (payment_processor === 'pix' && pix_option) {\n\n            if (pix_option === 'copy_link') {\n              title_content = 'Pix Copia e Cola';\n              body_content = data.qrCodeString;\n              closeBtn = false;\n              qr = false;\n            }\n\n            if (pix_option === 'open_link') {\n              title_content = 'Ler QR code';\n              body_content = data.qrCode.replace(/^data:image\\/[a-z]+;base64,/, \"\");\n              closeBtn = false;\n              qr = true;\n            }\n\n            target = 'pix_' + pix_option;\n\n          }\n\n          const initialData = {\n            target: target,\n            title: title_content,\n            body: body_content,\n            dt: false,\n            lang: this.lang,\n            closeBtn: closeBtn,\n            qr: qr\n          }\n\n          this.dynamicModalService.showModal(\n            initialData\n          );\n\n\n          if (payment_processor !== 'pix') {\n            this.emitVoucher(this.reserveId);\n          } else {\n            this.loaderService.loaderState(false);\n            this.emit_submitted = false;\n\n            if (pix_option === 'open_link') {\n\n              let flag: any = 1;\n              const interv = setInterval(function () {\n\n                const formData = new FormData();\n                formData.append('reserve_id', this.reserve_id);\n                this.httpData.post(formData, 'cielo-ipn').subscribe((data) => {\n\n                  if (data.status) {\n\n                    clearInterval(interv);\n                    window.location.href = `https://assist-365.com.br/payment_success/${this.reserve_id}`;\n\n                  } else if (!data.status && flag == 1800000) {\n                    clearInterval(interv);\n                    alert('Ocorreu um erro com o meio de pagamento. Por favor, consulte o banco emissor ou utilize outro cartão.');\n                  }\n                });\n                flag++;\n              }.bind(this), 1000);\n            }\n\n          }\n\n        } else {\n\n          this.loaderService.loaderState(false);\n          this.emit_submitted = false;\n\n          // body: 'Ocorreu um erro com o meio de pagamento. Por favor, consulte o banco emissor ou utilize outro cartão.',\n\n          let error_message = '';\n\n          if (data.status_msg === 'Transao no permitida') {\n            error_message = 'Transação não permitida';\n          } else {\n            error_message = data.status_msg;\n          }\n\n          this.dynamicModalService.showModal({\n            title: 'Status de operação',\n            body: error_message,\n            dt: false,\n            lang: this.lang,\n            closeBtn: true\n          });\n          // alert('Ocorreu um erro com o meio de pagamento. Por favor, consulte o banco emissor ou utilize outro cartão.');\n        }\n      });\n    }\n\n    if (payment_processor === 'mercadopago') {\n      Mercadopago.createToken(document.querySelector('#emit_form2'), this.sdkResponseHandler.bind(this));\n      Mercadopago.clearSession();\n    }\n\n    if (payment_processor === 'paypal') {\n      const id = this.id;\n      const country_id = this.payment_processor ? this.quote.source_country_id : this.getFromQuoteStorage('country_id');\n\n      this.loaderService.loaderState(false);\n\n      this.dynamicModalService.showModal({ title: 'Estamos verificando su operación.', body: 'Nos puede llevar unos minutos, por favor solo aguarde a recibir la confirmación.', dt: true });\n\n      return actions.order.capture().then(function (details) {\n        this.httpData.post({\n          'method': 'Paypal',\n          'orderID': data.orderID,\n          'payerID': details.payer.payer_id,\n          'reserveID': this.reserveId,\n          'country_id': country_id,\n        }, 'pay', '1').subscribe((dataPaypal) => {\n\n          let flag: any = 1;\n\n          if (dataPaypal.statusCode === 200 && dataPaypal.status === 'COMPLETED') {\n            this.dynamicModalService.hideModal();\n            this.loaderService.loaderState(false);\n            this.emitVoucher(this.reserveId);\n          } else {\n            this.dynamicModalService.hideModal();\n            this.loaderService.loaderState(false);\n            this.dynamicModalService.showModal({ title: '', body: 'Ocurrió un error al realizar el pago, en breve nos comunicaremos con usted.', closeBtn: true, link: `${this.geo_url}/`, dt: true });\n          }\n        });\n      }.bind(this));\n\n    }\n\n    if (payment_processor === 'deposit') {\n\n      const id = this.id;\n      const email = this.payment_processor ? this.users[0].email : this.quote.email;\n      // const body = `Se enviará a tu mail:  ${email} las instrucciones para cursar el pago. Tienes 24 Hs para realizar el pago`;\n      const body = `Se enviará a tu mail las instrucciones para cursar el pago. Tienes 24 Hs para realizar el pago`;\n\n      this.loaderService.loaderState(false);\n      this.dynamicModalService.showModal({ title: '', body: body, closeBtn: true, link: `${this.geo_url}/payment_pending/${id}`, dt: true });\n\n      if (!this.payment_processor) {\n        this.endFollowProcess(this.reserveId, this.payment_method);\n      }\n      this.sendDepositNotification(this.reserveId);\n    }\n\n    if (payment_processor === 'dlocal') {\n      setTimeout(() => {\n        const cardHolderName = $(\"#payer_name\").val();\n\n        this.dlocalInstance.createToken(this.cardField, {\n          name: cardHolderName\n        }).then(function (result) {\n          this.dlocalTokenHandler(result.token);\n        }.bind(this)).catch((result) => {\n          if (result.error) {\n            const errorField = document.getElementById('card-errors');\n            errorField.textContent = result.error.message;\n          }\n        });\n      }, 100);\n    }\n  }\n\n  getCCGGState() {\n    const ccgg = document.getElementById('smartcheckout_ccgg') as HTMLInputElement;\n    return ccgg.checked;\n  }\n\n  onSubmit(data: any, actions: any, submitted: boolean) {\n\n    this.submitted = submitted;\n\n    if (submitted === true) {\n\n      if (!this.paymentMethodsForm.controls['paymentMethod'].errors) {\n        this.registerForm.patchValue({ paymentMethod: this.paymentMethodsForm.get(\"paymentMethod\").value });\n      }\n\n      if ((this.paymentMethodsForm.invalid && !this.paymentMethod['paypal']) ||\n        (this.paymentMethod['cc'] && this.card_selected === false) ||\n        (this.paymentMethod['dlocal']) && (this.paymentMethod['deposit'] === false)) {\n\n        if (this.paymentMethod['cc'] === true && this.card_selected === false) {\n\n          const country = this.getFromQuoteStorage('country_name');\n          if (country === 'Argentina') {\n            this.openModalPayment();\n          }\n        }\n\n        if (this.paymentMethod['dlocal'] === true) {\n          let payer_name = $('#payer_name').val();\n          let payer_document = $('#payer_document').val();\n          this.dlocal_errors = {\n            payer_name: payer_name.length >= 1 ? false : true,\n            payer_document: (payer_document.length >= this.dlocal_document.format_min &&\n              payer_document.length <= this.dlocal_document.format_max) ? false : true\n          }\n        }\n\n        if (this.paymentMethodsForm.invalid && this.submitted) {\n\n          if (this.paymentMethodsForm.controls['paymentMethod'].errors) {\n            this.dynamicModalService.showModal({ title: 'Método de Pago', body: 'Por favor seleccione un método de pago.', closeBtn: true, lang: this.lang, dt: true });\n          } else {\n\n            if (!this.paymentMethodsForm.controls['paymentMethod'].errors && this.card_selected) {\n              this.dynamicModalService.showModal({ title: 'Campos requeridos', body: 'Por favor completa los campos obligatorios.', closeBtn: true, lang: this.lang, dt: true });\n              this.paymentMethodsForm.markAllAsTouched();\n              this.scrollToFirstInvalidControl();\n            }\n          }\n        }\n\n        if (this.paymentMethod['dlocal'] && !this.dlocal_errors.payer_name && !this.dlocal_errors.payer_document) {\n          if (this.getCCGGState() === false || this.registerForm.invalid) {\n            this.showError = true;\n            return;\n          }\n        } else {\n\n          if (this.paymentMethodsForm['payment_link'] === true) {\n          } else {\n            console.log('> false <');\n            return;\n          }\n        }\n      }\n\n      if (this.getCCGGState()) {\n\n        if (this.paymentMethodsForm.valid) {\n          this.registerForm.patchValue({ paymentMethod: this.paymentMethodsForm.get('paymentMethod').value });\n        }\n\n        if (this.payment_link && this.payment_method === 'payment_link') {\n\n          if (this.getFromQuoteStorage('b2b_auth_code') === null || !this.getFromQuoteStorage('b2b_auth_code')) {\n            this.payment_link = false;\n            alert('Ha ocurrido un error.');\n          } else {\n            this.payment_link = true;\n            // this.openModalB2B();\n          }\n        } else {\n\n          console.warn(this.payment_processor);\n\n          if (this.payment_processor) {\n\n            console.log('|-> payment link or quote custom build with ' + this.payment_processor + ' payment method!');\n\n            if (this.payment_processor === 'cielo' || this.payment_processor === 'pix') {\n              const checkPax = this.checkPaxDocs();\n              if (checkPax) {\n                this.payment_process(this.payment_processor, data, actions);\n              }\n            } else {\n              this.reserveId = this.quote.id;\n              this.billing(this.quote.id, this.payment_processor);\n              this.payment_process(this.payment_processor, data, actions);\n            }\n          } else {\n\n            const checkPax = this.checkPaxDocs();\n            if (checkPax) {\n              this.httpData.post(this.getFormData(), 'emit', '1').subscribe((dataEmit) => {\n                this.data_support['reserve_id'] = dataEmit.reserve.new_id;\n                this.OpenFloatingSupport(4000);\n\n                if (dataEmit.status === true) {\n                  this.emit_data = dataEmit;\n                  this.reserveId = dataEmit.reserve.new_id;\n                  this.billing(this.reserveId, this.payment_method);\n                  this.payment_process(this.payment_method, data, actions);\n\n                } else {\n                  this.dynamicModalService.showModal({ title: '', body: dataEmit.msg, closeBtn: true, dt: true });\n                }\n              });\n            }\n          }\n\n          // if (this.payment_processor) {\n\n          //   console.log('|-> payment link or quote custom build with ' + this.payment_processor + ' payment method!');\n\n          //   if (this.payment_processor === 'cielo' || this.payment_processor === 'pix') {\n\n          //     this.loaderService.loaderState(true);\n          //     const checkPax = this.checkPaxDocs();\n\n          //     console.log(this.emit_submitted);\n\n          //     if (checkPax && this.emit_submitted === false) {\n\n          //       this.httpData.post(this.getFormData(), 'emit', '1').subscribe((dataEmit) => {\n\n          //         this.emit_submitted = true;\n\n          //         this.OpenFloatingSupport(4000);\n\n          //         console.log(this.emit_submitted);\n\n          //         if (dataEmit.status === true) {\n\n          //           this.data_support['reserve_id'] = dataEmit.reserve.new_id;\n          //           this.emit_data = dataEmit;\n          //           this.reserveId = dataEmit.reserve.new_id;\n\n          //           //! CIELO without billing\n          //           //! this.billing(this.reserveId, this.payment_method);\n\n          //           this.payment_process(this.payment_method, data, actions);\n\n          //         } else {\n\n          //           if (dataEmit.hasOwnProperty('error')) {\n          //             if (dataEmit.error) {\n          //               console.log('error!');\n          //               if (dataEmit['msg'].includes('voucher en vigencia')) {\n          //                 console.log('include voucher error text');\n          //                 dataEmit.msg = 'Erro: o passageiro já possui um voucher válido, não foi possível concluir a compra.';\n          //               }\n          //             }\n          //           }\n\n          //           if (dataEmit.msg === \"No se puede actualizar el beneficiario porque tiene una reserva en vigencia.\") {\n          //             dataEmit.msg = 'Erro: o passageiro já possui um voucher válido, não foi possível concluir a compra.';\n          //           }\n\n          //           this.dynamicModalService.showModal({ title: '', body: dataEmit.msg, closeBtn: true, dt: true });\n\n          //           setTimeout(() => {\n          //             this.emit_submitted = false;\n          //             this.loaderService.loaderState(false);\n          //           }, 1000);\n\n          //         }\n          //       }, (error) => {\n          //         console.error(error);\n          //         alert('Erro');\n          //         this.emit_submitted = false;\n          //         this.loaderService.loaderState(false);\n          //       });\n          //     }\n\n          //   } else {\n\n          //     if (this.payment_processor == 'mercadopago') {\n\n          //       $('#btn-submit').prop('disabled', true);\n\n          //       if (this.credit_card_available && this.card_selected == false) {\n          //         $('#btn-submit').prop('disabled', false);\n          //         alert('Por favor seleccione una tarjeta');\n          //         return false;\n          //       }\n          //     }\n\n          //     this.reserveId = this.quote.id;\n          //     this.billing(this.quote.id, this.payment_processor);\n          //     console.log('this billing 1');\n\n          //     if (this.payment_processor === 'mercadopago') {\n          //       // this.MercadoPago_createPayment();\n          //     } else {\n          //       console.warn('pre payment_process');\n          //       this.payment_process(this.payment_processor, data, actions);\n          //     }\n          //   }\n\n          // } else {\n\n          //   const checkPax = this.checkPaxDocs();\n          //   if (checkPax) {\n\n          //     if (this.payment_method == 'Mercadopago') {\n          //       $('#btn-submit').prop('disabled', true);\n          //     }\n\n          //     // throw new Error(\"my error message\");\n\n          //     this.httpData.post(this.getFormData(), 'emit', '1').subscribe((dataEmit) => {\n\n          //       this.OpenFloatingSupport(4000);\n\n          //       if (dataEmit.status === true) {\n          //         this.data_support['reserve_id'] = dataEmit.reserve.new_id;\n          //         this.emit_data = dataEmit;\n          //         this.reserveId = dataEmit.reserve.new_id;\n\n          //         this.billing(this.reserveId, this.payment_method);\n\n          //         if (this.payment_method === 'Mercadopago') {\n          //           // this.MercadoPago_createPayment();\n          //         } else {\n          //           this.payment_process(this.payment_method, data, actions);\n          //         }\n          //         // this.payment_process(this.payment_method, data, actions);\n\n          //       } else {\n\n          //         if (dataEmit.hasOwnProperty('error')) {\n          //           if (dataEmit.error) {\n          //             if (dataEmit['msg'].includes('voucher en vigencia')) {\n          //               dataEmit.msg = 'Erro: o passageiro já possui um voucher válido, não foi possível concluir a compra.';\n          //             }\n          //           }\n          //         }\n\n          //         this.dynamicModalService.showModal({ title: '', body: dataEmit.msg, closeBtn: true, dt: true });\n          //       }\n          //     }, (error) => {\n          //       console.error(error);\n          //       alert('Ocurrio un error');\n          //     });\n          //   }\n          // }\n\n          // if (this.payment_processor) {\n\n          //   console.log('|-> payment link or quote custom build with ' + this.payment_processor + ' payment method!');\n\n          //   if (this.payment_processor === 'cielo' || this.payment_processor === 'pix') {\n          //     const checkPax = this.checkPaxDocs();\n          //     if (checkPax) {\n          //       this.payment_process(this.payment_processor, data, actions);\n          //     }\n          //   } else {\n          //     this.reserveId = this.quote.id;\n          //     this.billing(this.quote.id, this.payment_processor);\n          //     this.payment_process(this.payment_processor, data, actions);\n          //   }\n          // } else {\n\n          //   const checkPax = this.checkPaxDocs();\n          //   if (checkPax) {\n          //     this.httpData.post(this.getFormData(), 'emit', '1').subscribe((dataEmit) => {\n          //       this.data_support['reserve_id'] = dataEmit.reserve.new_id;\n          //       this.OpenFloatingSupport(4000);\n\n          //       if (dataEmit.status === true) {\n          //         this.emit_data = dataEmit;\n          //         this.reserveId = dataEmit.reserve.new_id;\n          //         this.billing(this.reserveId, this.payment_method);\n          //         this.payment_process(this.payment_method, data, actions);\n\n          //       } else {\n          //         this.dynamicModalService.showModal({ title: '', body: dataEmit.msg, closeBtn: true, dt: true });\n          //       }\n          //     });\n          //   }\n          // }\n        }\n      } else {\n        this.showError = true;\n        this.ccgg_OK = false;\n        this.dynamicModalService.showModal({ title: '', body: 'Debe aceptar las condiciones de compra.', closeBtn: true, dt: true });\n      }\n    }\n  };\n\n  cardSelected(e) {\n\n    const card_value = e.target.value;\n\n    this.card_selected = e.target.value ? true : false;\n    this.paymentMethodsForm.controls['cardID'].setValue(card_value);\n    this.paymentMethodsForm.controls['payment_method_id'].setValue(card_value);\n\n    const cards_model = [\n      { id: 'vi', className: 'visa' },\n      { id: 'ma', className: 'master' },\n      { id: 'di', className: 'cabal' },\n      { id: 'am', className: 'amex' },\n    ]\n\n    let card_class = cards_model.filter(card => card.id == e.target.value)[0];\n    let card_className;\n\n    if (card_class) {\n      card_className = 'pm-cc-' + card_class.className;\n    } else {\n      card_className = 'pm-cc-default';\n    }\n\n    // const total_parcelas = 5;\n\n    let total_parcelas;\n\n    // if (this.quote_detail.price <= 299) {\n    //   total_parcelas = 5;\n    // }\n    // if (this.quote_detail.price >= 300) {\n    //   total_parcelas = 10;\n    // }\n\n    if (this.quote_detail.price <= 399) {\n      total_parcelas = 5;\n    }\n    if (this.quote_detail.price >= 400) {\n      total_parcelas = 10;\n    }\n\n    this.cielo_parcelas = [];\n\n    for (let i = 0; i < total_parcelas; i++) {\n      let parcela = i + 1;\n      this.cielo_parcelas.push(\n        {\n          value: parcela,\n          label: `${parcela}x de ${this.quote_detail.currency}  ${(this.quote_detail.price / parcela).toFixed(2)}`\n        });\n    }\n\n    if (card_value) {\n      setTimeout(() => {\n        const elem = document.getElementById('pm-cc-container');\n        elem.removeAttribute(\"class\");\n        elem.classList.toggle(card_className);\n      }, 100);\n    }\n  }\n\n  createForm() {\n    this.paymentMethodsForm = this.formBuilder.group({\n      paymentMethod: ['', Validators.required],\n      cardID: [''],\n      card_number: [''],\n      card_date_exp: [''],\n      card_security_code: ['', Validators.pattern(\"^[0-9]*$\")],\n      card_owner: [''],\n      card_owner_doc: [''],\n      card_date_exp_year: [''],\n      payment_method_id: [''],\n    });\n  }\n\n  setCCValidation(mode: boolean) {\n    const cc_fields = ['cardID', 'card_number', 'card_date_exp', 'card_security_code', 'card_owner', 'card_owner_doc', 'card_date_exp_year', 'payment_method_id'];\n    cc_fields.forEach(element => {\n\n      if (mode) {\n\n        this.paymentMethodsForm.controls[element].setValidators(Validators.required);\n        this.paymentMethodsForm.controls[element].updateValueAndValidity()\n\n      } else {\n        this.paymentMethodsForm.controls[element].clearValidators();\n        this.paymentMethodsForm.controls[element].updateValueAndValidity()\n      }\n    });\n  }\n\n  // openModalB2B() {\n  //   this.submitted = false;\n  //   const config = {\n  //     animated: true,\n  //     keyboard: false,\n  //     backdrop: true,\n  //     background: true,\n  //   };\n\n  //   const initialState = {};\n\n  //   this.bsModalRef = this.modalService.show(PaymentLinkModalComponent, Object.assign(config, { class: 'modal-dialog-centered' }, { initialState }));\n  //   this.bsModalRef.content.closeBtnName = 'Seleccionar';\n  //   this.bsModalRef.content.action.subscribe((p) => {\n  //     if (p) {\n  //       const checkPax = this.checkPaxDocs();\n  //       if (checkPax) {\n  //         this.httpData.post(this.getFormData(), 'emit', '1').subscribe((dataEmit) => {\n  //           const formDataLink = new FormData();\n  //           formDataLink.append('reserve_id', this.reserveId);\n  //           formDataLink.append('email', p.get('email').value);\n  //           formDataLink.append('paymentMethodId', p.get('payment_method').value);\n  //           this.loaderService.loaderState(true);\n  //           this.httpData.post(formDataLink, 'send-payment-link', '1').subscribe((dataLink) => {\n  //             if (dataLink.status === true) {\n  //               window.location.href = `${this.geo_url} / posventa`;\n  //             } else {\n  //               alert(dataLink.msg);\n  //             }\n  //           });\n  //         });\n  //       }\n  //     }\n  //   });\n  // }\n\n  getCountryReference(cid) {\n    if (cid) {\n      cid = cid.toString();\n      let country_id = this.getFromQuoteStorage('country_id');\n      if (country_id != cid) {\n        cid = this.getFromQuoteStorage('country_id');\n      }\n    }\n    return cid;\n  }\n\n  ngOnChanges() {\n    if (this.payment_processor) {\n      // console.log(this.payment_processor)\n    }\n  }\n\n  getFromQuoteStorage(target: string, source: string = '', from: string = 'n/a') {\n\n    let response: any = false;\n\n    if (this.quote.hasOwnProperty(target) || (source.length >= 1 && this.quote[source].hasOwnProperty(target))) {\n      if (source.length >= 1) {\n        response = this.quote[source][target];\n      } else {\n        response = this.quote[target];\n      }\n\n    } else {\n      if (window.localStorage.getItem(target)) {\n        response = window.localStorage.getItem(target);\n      }\n    }\n\n    if (target === 'country_id') { response = response.toString() };\n    return response;\n  }\n\n  testEmit(e) {\n    e.preventDefault();\n    this.checkPaxDocs();\n    this.httpData.post(this.getFormData(), 'emitx', '1').subscribe((dataEmit) => {\n    });\n  }\n\n  capitalizeFirstLetter(str: any) {\n    // converting first letter to uppercase\n    const capitalized = str.replace(/^./, str[0].toUpperCase());\n    return capitalized;\n  }\n\n  ngOnInit() {\n\n    this.pixForm = this.formBuilder.group({\n      pix_option: ['copy_link', Validators.required],\n    });\n\n    this.img_path = this.pm_config.config.img_path;\n    this.pm_title = this.pm_config.config.title;\n\n\n    if (this.getFromQuoteStorage('b2b_auth_code') === null || !this.getFromQuoteStorage('b2b_auth_code')) {\n      this.payment_link = false;\n    } else {\n      this.payment_link = true;\n    }\n\n    // G e o l o c a t i o n\n\n    const country_code = this.pm_config.config.source == 'global' ? this.geo_url.toUpperCase() : this.pm_config.config.source.toUpperCase();\n\n    this.httpData.get(`geolocation ? flag = true & country_code=${country_code}`).subscribe((data) => {\n      this.data_support['whatsapp_number'] = data.country_id.toString() == '155' ? '5511932878741' : data.header_whatsapp;\n    });\n\n    this.data.pipe(takeWhile(() => this.isAlive)).subscribe(data => {\n      this.registerForm = data.form;\n      this.ccgg_OK = this.registerForm.get('cc_gg').value;\n      this.onSubmit(null, null, data.submitted);\n    });\n\n    this.notifier.pipe(takeWhile(() => this.isAlive)).subscribe(data => {\n\n      this.id = data.id;\n      const id = data.id;\n      const payment_mode = data.form_data ? 'quote custom build' : 'from api/quote';\n\n      // CUSTOM QUOTE BUILD\n\n      console.log('payment mode -> ', payment_mode);\n\n      if (data.form_data) {\n\n        console.log(data);\n        data = data.form_data;\n\n        this.quote = data['quote'];\n        this.dates = this.calculateDays(this.quote.date_from, this.quote.date_to);\n\n        this.quote.date_from_long = this.quote.date_from;\n        this.quote.date_to_long = this.quote.date_to;\n        this.quote.date_from = this.dates.date_from;\n        this.quote.date_to = this.dates.date_to;\n        this.quote.days = this.dates.days;\n        this.quote.from_txt = this.getFromQuoteStorage('country_name');\n        this.quote.input_age = data['quote'].input_age;\n        this.quote.final_price = data['quote'].total_price_back;\n\n        // G e o l o c a t i o n\n\n        if (this.quote.hasOwnProperty('market')) {\n          const country_code = this.quote.market.iso2;\n          this.httpData.get(`geolocation ? flag = true & country_code=${country_code}`).subscribe((data) => {\n            this.quote.currency_symbol = data.currency_symbol;\n            this.quote.country_name = data.country_name;\n          });\n        }\n\n        if (data.hasOwnProperty('quote_detail')) {\n          if (data.hasOwnProperty('beneficiaries')) {\n            this.beneficiares = data.beneficiaries;\n            this.users = data.beneficiaries;\n          }\n\n          this.quote_detail = data['quote_detail'];\n\n          if (data['quote_detail'].hasOwnProperty('payment_processor')) {\n\n            this.payment_processor = data['quote_detail'].payment_processor;\n\n            if (data['quote_detail'].hasOwnProperty('product_name')) {\n              this.quote['name'] = data['quote_detail'].name;\n            }\n          }\n        }\n\n        if (!this.payment_processor) {\n          this.payment_methods_container = true;\n          const country_id = this.getFromQuoteStorage('country_id');\n\n          switch (country_id) {\n            case '164':\n              this.credit_card_available = true;\n              this.paypal_available = false;\n              this.dni = true;\n              this.argentina = true;\n              break;\n            case '155':\n              this.paypal_available = false;\n              break;\n            default:\n              this.paypal_available = true;\n          }\n        } else {\n\n          this.payment_methods_container = false;\n\n          if (this.payment_processor === 'transferencia') {\n            this.payment_processor = 'deposit';\n            this.payment_method = 'deposit';\n          }\n\n          this.paymentMethodsForm.controls['paymentMethod'].setValue(this.payment_processor);\n\n          switch (this.payment_processor) {\n            case 'cielo':\n              this.cielo_available = true;\n              if (!this.payment_method) {\n                this.paymentMethodSelected('');\n              }\n              break;\n            case 'pix':\n              this.pix_options = true;\n              if (!this.payment_method) {\n                this.paymentMethodSelected('');\n              }\n              break;\n          }\n        }\n\n        if (!this.quote.country_id || typeof this.quote.country_id !== 'undefined') {\n          if (this.quote.hasOwnProperty('source_country_id')) {\n            this.quote.country_id = this.quote.source_country_id;\n          }\n        }\n\n        if (!this.quote.hasOwnProperty('email')) {\n          this.quote['email'] = this.beneficiares[0].email;\n        }\n\n      } else {\n\n        // NORMAL PAYMENT FLOW \n\n        this.httpData.get('quote?id=' + id).subscribe((data) => {\n\n          if (data['quote'].active === 1 || data.hasOwnProperty('quote_detail')) {\n\n            // Get Q u o t e\n\n            this.quote = data['quote'];\n            this.benefits = data['benefits'];\n\n            if (data['quote'].hasOwnProperty('qsource')) {\n              this.dates = this.quote['qsource'] == 'nomad' ? this.calculateDays(this.registerForm.controls['nomad_date_from'].value, this.registerForm.controls['nomad_date_to'].value) : this.calculateDays(this.quote.date_from, this.quote.date_to);\n            } else {\n              this.dates = this.calculateDays(this.quote.date_from, this.quote.date_to);\n            }\n\n            this.quote.date_from_long = this.quote.date_from;\n            this.quote.date_to_long = this.quote.date_to;\n            this.quote.date_from = this.dates.date_from;\n            this.quote.date_to = this.dates.date_to;\n            this.quote.days = this.dates.days;\n            this.quote.from_txt = this.getFromQuoteStorage('country_name');\n            this.quote.input_age = data['quote'].input_age;\n            this.quote.final_price = data['quote'].total_price_back;\n\n            // G e o l o c a t i o n\n\n            if (this.quote.hasOwnProperty('market')) {\n              const country_code = this.quote.market.iso2;\n              this.httpData.get(`geolocation ? flag = true & country_code=${country_code}`).subscribe((data) => {\n                this.quote.currency_symbol = data.currency_symbol;\n                this.quote.country_name = data.country_name;\n              });\n            }\n\n            if (this.quote.hasOwnProperty('input_age') && (typeof this.quote['input_age'] !== 'undefined')) {\n              this.users = data['quote'].input_age.split(',');\n            }\n\n            if (data.hasOwnProperty('beneficiaries')) {\n              this.users = data.beneficiaries;\n            }\n\n            this.supplier_id = this.quote.supplier_id;\n\n            if (data.hasOwnProperty('quote_detail')) {\n\n              if (data.hasOwnProperty('beneficiaries')) {\n                this.beneficiares = data.beneficiaries;\n              }\n\n              this.quote_detail = data['quote_detail'];\n\n              if (data['quote_detail'].hasOwnProperty('payment_processor')) {\n                this.payment_processor = data['quote_detail'].payment_processor;\n                if (data['quote_detail'].hasOwnProperty('product_name')) {\n                  this.quote['name'] = data['quote_detail'].name;\n                }\n              }\n            }\n\n            if (!this.payment_processor) {\n\n              this.payment_methods_container = true;\n              const country_id = this.getFromQuoteStorage('country_id');\n\n              switch (country_id) {\n                case '164':\n                  this.credit_card_available = true;\n                  this.paypal_available = false;\n                  this.decidir_available = true;\n                  this.dni = true;\n                  this.argentina = true;\n                  break;\n                case '155':\n                  this.paypal_available = false;\n                  break;\n                default:\n                  this.paypal_available = true;\n              }\n\n              // if (window.localStorage.getItem('country_id') === '164') {\n              //   this.credit_card_available = true;\n              //   this.paypal_available = false;\n              //   this.dni = true;\n              //   this.argentina = true;\n              // } else {\n              //   this.paypal_available = true;\n              // }\n\n            } else {\n\n              this.payment_methods_container = false;\n\n              if (this.payment_processor === 'transferencia') {\n                this.payment_processor = 'deposit';\n                this.payment_method = 'deposit';\n              }\n\n              // payment_process \n\n              this.paymentMethodsForm.controls['paymentMethod'].setValue(this.payment_processor);\n\n              switch (this.payment_processor) {\n                case 'decidir':\n                  this.decidir_available = true;\n                  break;\n                case 'mercadopago':\n                  this.credit_card_available = true;\n                  break;\n                case 'paypal':\n                  this.paypal_available = true;\n                  break;\n                case 'transferencia':\n                  break;\n                case 'dlocal':\n              }\n            }\n\n            if (!this.quote.country_id || typeof this.quote.country_id !== 'undefined') {\n              if (this.quote.hasOwnProperty('source_country_id')) {\n                this.quote.country_id = this.quote.source_country_id;\n              }\n            }\n\n            if (!this.quote.hasOwnProperty('email')) {\n              this.quote['email'] = this.beneficiares[0].email;\n            }\n\n            const country_id = this.getCountryReference(this.quote.country_id);\n            this.httpData.get('dlocal-country-reference?country_id=' + country_id).subscribe((data) => {\n\n              if (data.status === true) {\n\n                this.country_reference = data;\n                this.dlocal_available = true;\n                this.dlocal_document = {\n                  placeholder: this.country_reference.document_name,\n                  format_min: this.country_reference.document_format_min,\n                  format_max: this.country_reference.document_format_max\n                };\n              } else {\n                this.dlocal_available = false;\n              }\n\n              if (!this.pmd) {\n                this.getPaymentMethodData(this.quote).subscribe((r) => {\n                  this.pmd = true;\n                  this.getPMD(r, this.quote)\n                });\n              }\n            });\n          }\n        });\n      }\n\n    });\n\n    this.argentina = false;\n\n  }\n\n  ngAfterViewInit() {\n    setTimeout((_: any) => this.translator.getContent(this.lang, 'payment_methods').subscribe(\n      data => {\n        this.data_content = data;\n        this.translator.getContent(this.lang, 'form_validation_msg').subscribe(\n          data => {\n            this.data_form_validation_msg = data;\n          },\n          error => {\n            console.error('error!');\n          });\n      },\n      error => { console.error('error!'); }\n    ));\n  }\n\n  ngOnDestroy() {\n    const btnSubmit = $('#btn-submit');\n    btnSubmit.text('Comprar').show();\n    this.isAlive = false;\n  }\n}\n","<app-a365loader></app-a365loader>\r\n<div id=\"loader-payment_methods\">\r\n    <div class=\"methods-wrapper\" [ngClass]=\"{ 'block' : payment_methods_container }\">\r\n        <form id=\"emit_form2\" [formGroup]=\"paymentMethodsForm\" (ngSubmit)=\"submitPayment()\" autocomplete=\"false\">\r\n            <div class=\"row\">\r\n                <div *ngIf=\"credit_card_available && payment_processor\" class=\"col-12 text-center mt-4 mb-4\">\r\n                    <button type=\"button\" (click)=\"paymentMethodSelected($event)\" class=\"btn-fx btn-core-inverse\">-\r\n                        Selecciona tu tarjeta -</button>\r\n                </div>\r\n                <div *ngIf=\"payment_methods_container\" class=\"col-12 no-pad\">\r\n                    <div class=\"loader-placeholder\">\r\n                        <div class=\"loader-animation loader-text\"></div>\r\n                        <h3 data-dt=\"payment_methods_title\" class=\"text-center\">{{pm_title}}</h3>\r\n                    </div>\r\n                    <div class=\"methods-container\">\r\n                        <!-- dlocal -->\r\n                        <div #dyn_data *ngIf=\"dlocal_available\" class=\"col-12 col-lg-4\">\r\n                            <div class=\"payment-method-block\">\r\n                                <img src=\"/smartcheckout/assets/img/payment-methods/creditcard.svg\" alt=\"\">\r\n                                <input id=\"pm_dlocal\" type=\"radio\" name=\"paymentMethod\" value=\"dlocal\"\r\n                                    formControlName=\"paymentMethod\"\r\n                                    [ngClass]=\"{ 'is-invalid': submitted &amp;&amp; paymentMethodsForm.controls.paymentMethod.errors }\"\r\n                                    (change)=\"paymentMethodSelected($event)\" />\r\n                                <label data-dt=\"payment_method_cc_cb\" for=\"pm_dlocal\">Tarjeta de crédito/débito</label>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"credit_card_available\" class=\"col-12 col-lg-4\">\r\n                            <div class=\"payment-method-block\">\r\n                                <img class=\"pm_mercadopago\"\r\n                                    src=\"/smartcheckout/assets/img/payment-methods/creditcard.svg\" alt=\"\">\r\n                                <input id=\"pm_cc_mp\" type=\"radio\" name=\"paymentMethod\" value=\"cc\"\r\n                                    formControlName=\"paymentMethod\"\r\n                                    [ngClass]=\"{ 'is-invalid': submitted &amp;&amp; paymentMethodsForm.controls.paymentMethod.errors }\"\r\n                                    (change)=\"paymentMethodSelected($event)\" />\r\n                                <label for=\"pm_cc_mp\">Tarjeta de crédito/débito argentina<br>(Mercado Pago)</label>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"paypal_available\" class=\"col-12 col-lg-4\">\r\n                            <div class=\"payment-method-block\">\r\n                                <img src=\"/smartcheckout/assets/img/payment-methods/paypal.svg\" alt=\"\">\r\n                                <input id=\"pm_paypal\" type=\"radio\" name=\"paymentMethod\" value=\"paypal\"\r\n                                    formControlName=\"paymentMethod\"\r\n                                    [ngClass]=\"{ 'is-invalid': submitted &amp;&amp; paymentMethodsForm.controls.paymentMethod.errors }\"\r\n                                    (change)=\"paymentMethodSelected($event)\" />\r\n                                <label #dyn_data *ngIf=\"dlocal_available && paypal_available\" for=\"pm_paypal\">\r\n                                    <span data-dt=\"payment_method_cc_paypal\">Paypal</span>\r\n                                </label>\r\n                                <label *ngIf=\"paypal_available && !dlocal_available\" for=\"pm_paypal\">\r\n                                    <ng-template #dyn_data [ngIf]=\"argentina === false\">\r\n                                        <span data-dt=\"payment_method_cc_cb\">Tarjeta de crédito o débito</span>\r\n                                    </ng-template>\r\n                                    <ng-template #dyn_data [ngIf]=\"argentina === true\">\r\n                                        <span data-dt=\"payment_method_cc_cb_foreing\">Tarjeta de crédito o débito\r\n                                            extranjera</span>\r\n                                    </ng-template>\r\n                                </label>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"bank_deposit\" class=\"col-12 col-lg-4\">\r\n                            <div class=\"payment-method-block\">\r\n                                <img src=\" /smartcheckout/assets/img/payment-methods/bank_transfer.svg\" alt=\"\">\r\n                                <input id=\"pm_deposit\" type=\"radio\" name=\"paymentMethod\" value=\"deposit\"\r\n                                    formControlName=\"paymentMethod\"\r\n                                    [ngClass]=\"{ 'is-invalid': submitted &amp;&amp; paymentMethodsForm.controls.paymentMethod.errors }\"\r\n                                    (change)=\"paymentMethodSelected($event)\" />\r\n                                <label for=\"pm_deposit\">Transferencia Bancaria</label>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"payment_link\" class=\"col-12 col-lg-4\">\r\n                            <div class=\"payment-method-block\">\r\n                                <input id=\"pm_pl\" type=\"radio\" name=\"paymentMethod\" value=\"payment_link\"\r\n                                    formControlName=\"paymentMethod\"\r\n                                    [ngClass]=\"{ 'is-invalid': submitted &amp;&amp; paymentMethodsForm.controls.paymentMethod.errors }\"\r\n                                    (change)=\"paymentMethodSelected($event)\" />\r\n                                <label for=\"pm_pl\">Link de pago</label>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div #form_validation_msg *ngIf=\"submitted && paymentMethodsForm.controls.paymentMethod.errors\"\r\n                        class=\"placeholder form-validator-msg\">\r\n                        <div class=\"loader-animation loader-text\">\r\n                        </div>\r\n                        <span data-dt=\"form_validation_msg_option_required\">Opción requerida.</span>\r\n                    </div>\r\n                </div>\r\n\r\n                <div *ngIf=\"pix_options\" class=\"col-12 d-none d-md-block flex items-center justify-center\">\r\n                    <form [formGroup]=\"pixForm\" (ngSubmit)=\"pixFormSubmit()\">\r\n\r\n                        <div class=\"form-group pix-options\">\r\n\r\n                            <div>\r\n                                <svg width=\"30\" height=\"48\" viewBox=\"0 0 46 48\" fill=\"none\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <path\r\n                                        d=\"M27.718 0.000382697H6.48729C4.76699 0.00150398 3.11788 0.648843 1.90156 1.79967C0.685246 2.95081 0.00121318 4.51204 0 6.13967V30.3786C0.00197455 32.0063 0.685973 33.5667 1.90186 34.7179C3.11818 35.8691 4.76699 36.5164 6.48719 36.5179H11.5117V41.8607C11.5129 43.4884 12.1969 45.0496 13.4132 46.2007C14.6296 47.3515 16.2788 47.9989 17.999 48H39.5127C41.233 47.9989 42.8821 47.3515 44.0984 46.2007C45.3148 45.0496 45.9988 43.4883 46 41.8607V17.3022C45.9988 15.6741 45.3148 14.1134 44.0984 12.9622C42.8821 11.8111 41.2329 11.1637 39.5127 11.1626H34.205V6.13929C34.2039 4.51156 33.5199 2.95043 32.3039 1.79929C31.0876 0.648527 29.4379 0.00114817 27.7182 0L27.718 0.000382697ZM3.53824 30.3792V6.14024C3.53943 5.40058 3.85062 4.69154 4.40311 4.16835C4.956 3.64547 5.70516 3.35095 6.48705 3.34983H27.7177C28.4993 3.35095 29.2485 3.64546 29.8013 4.16835C30.3538 4.69161 30.665 5.40063 30.6661 6.14024V30.3792C30.6649 31.1188 30.3538 31.8279 29.8013 32.3511C29.2484 32.8743 28.4992 33.1685 27.7177 33.1696H6.48705C5.70512 33.1685 4.95592 32.8743 4.40311 32.3511C3.85063 31.8278 3.53943 31.1188 3.53824 30.3792ZM39.5121 14.5123C40.294 14.5135 41.0432 14.808 41.596 15.3312C42.1485 15.8541 42.4597 16.5635 42.4609 17.3031V41.8616C42.4597 42.6013 42.1485 43.3103 41.596 43.8335C41.0432 44.3564 40.294 44.6509 39.5121 44.652H17.9984C17.2164 44.6517 16.4665 44.3575 15.914 43.8343C15.3611 43.311 15.0499 42.6012 15.0495 41.8616V36.5188H27.7172C29.4371 36.5173 31.0858 35.8699 32.3022 34.7188C33.5181 33.5677 34.2025 32.0072 34.2041 30.3795V14.5127L39.5121 14.5123Z\"\r\n                                        fill=\"#10CFC9\" />\r\n                                </svg>\r\n                                <input id=\"copy_link\" type=\"radio\" value=\"copy_link\" formControlName=\"pix_option\">\r\n                                <label for=\"copy_link\">Pix Copia e Cola</label>\r\n                            </div>\r\n\r\n                            <div>\r\n                                <svg width=\"30\" height=\"48\" viewBox=\"0 0 46 48\" fill=\"none\"\r\n                                    xmlns=\"http://www.w3.org/2000/svg\">\r\n                                    <path\r\n                                        d=\"M19.1667 46.1538C19.1667 46.6434 18.9647 47.1132 18.6054 47.4593C18.246 47.8055 17.7583 48 17.25 48H1.91667C1.40841 48 0.920679 47.8055 0.56131 47.4593C0.20194 47.1132 0 46.6434 0 46.1538V31.3846C0 30.7249 0.36536 30.1154 0.958333 29.7857C1.55131 29.4561 2.28204 29.4561 2.875 29.7857C3.46796 30.1154 3.83333 30.7249 3.83333 31.3846V44.3077H17.25C17.7583 44.3077 18.246 44.5022 18.6054 44.8484C18.9647 45.1945 19.1667 45.6643 19.1667 46.1538ZM1.91667 18.4615C2.42492 18.4615 2.91265 18.267 3.27202 17.9209C3.63139 17.5747 3.83333 17.1049 3.83333 16.6154V3.69231H17.25C17.935 3.69231 18.5677 3.34039 18.9099 2.76923C19.2522 2.19807 19.2522 1.49422 18.9099 0.923077C18.5677 0.35193 17.9349 0 17.25 0H1.91667C1.40841 0 0.920679 0.194511 0.56131 0.540659C0.20194 0.886808 0 1.3566 0 1.84615V16.6154C0 17.1049 0.20194 17.5747 0.56131 17.9209C0.920679 18.267 1.40841 18.4615 1.91667 18.4615ZM44.0833 0H28.75C28.0651 0 27.4323 0.351919 27.0901 0.923077C26.7478 1.49423 26.7478 2.19808 27.0901 2.76923C27.4323 3.34038 28.0651 3.69231 28.75 3.69231H42.1667V16.6154C42.1667 17.2751 42.532 17.8846 43.125 18.2143C43.718 18.5439 44.4487 18.5439 45.0417 18.2143C45.6346 17.8846 46 17.2751 46 16.6154V1.84615C46 1.3566 45.7981 0.886808 45.4387 0.540659C45.0793 0.194511 44.5916 0 44.0833 0ZM44.0833 29.5385C43.5751 29.5385 43.0873 29.733 42.728 30.0791C42.3686 30.4253 42.1667 30.8951 42.1667 31.3846V44.3077H28.75C28.0651 44.3077 27.4323 44.6596 27.0901 45.2308C26.7478 45.8019 26.7478 46.5058 27.0901 47.0769C27.4323 47.6481 28.0651 48 28.75 48H44.0833C44.5916 48 45.0793 47.8055 45.4387 47.4593C45.7981 47.1132 46 46.6434 46 46.1538V31.3846C46 30.8951 45.7981 30.4253 45.4387 30.0791C45.0793 29.733 44.5916 29.5385 44.0833 29.5385ZM26.8333 16.6154V9.23077C26.8333 8.74121 27.0353 8.27142 27.3946 7.92527C27.754 7.57913 28.2417 7.38462 28.75 7.38462H36.4167C36.9249 7.38462 37.4127 7.57913 37.772 7.92527C38.1314 8.27142 38.3333 8.74121 38.3333 9.23077V16.6154C38.3333 17.1049 38.1314 17.5747 37.772 17.9209C37.4127 18.267 36.9249 18.4615 36.4167 18.4615H28.75C28.2417 18.4615 27.754 18.267 27.3946 17.9209C27.0353 17.5747 26.8333 17.1049 26.8333 16.6154ZM30.6667 14.7692H34.5V11.0769H30.6667V14.7692ZM17.25 18.4615H9.58333C9.07508 18.4615 8.58735 18.267 8.22798 17.9209C7.86861 17.5747 7.66667 17.1049 7.66667 16.6154V9.23077C7.66667 8.74121 7.86861 8.27142 8.22798 7.92527C8.58735 7.57913 9.07508 7.38462 9.58333 7.38462H17.25C17.7583 7.38462 18.246 7.57913 18.6054 7.92527C18.9647 8.27142 19.1667 8.74121 19.1667 9.23077V16.6154C19.1667 17.1049 18.9647 17.5747 18.6054 17.9209C18.246 18.267 17.7583 18.4615 17.25 18.4615ZM15.3333 11.0769H11.5V14.7692H15.3333V11.0769ZM19.1667 31.3846V38.7692C19.1667 39.2588 18.9647 39.7286 18.6054 40.0747C18.246 40.4209 17.7583 40.6154 17.25 40.6154H9.58333C9.07508 40.6154 8.58735 40.4209 8.22798 40.0747C7.86861 39.7286 7.66667 39.2588 7.66667 38.7692V31.3846C7.66667 30.8951 7.86861 30.4253 8.22798 30.0791C8.58735 29.733 9.07508 29.5385 9.58333 29.5385H17.25C17.7583 29.5385 18.246 29.733 18.6054 30.0791C18.9647 30.4253 19.1667 30.8951 19.1667 31.3846ZM15.3333 33.2308H11.5V36.9231H15.3333V33.2308ZM30.6667 33.2308V31.3846H32.5833C33.2683 31.3846 33.901 31.0327 34.2433 30.4615C34.5855 29.8904 34.5855 29.1865 34.2433 28.6154C33.901 28.0442 33.2683 27.6923 32.5833 27.6923H28.75C28.2417 27.6923 27.754 27.8868 27.3946 28.233C27.0353 28.5791 26.8333 29.0489 26.8333 29.5385V33.2308C26.8333 33.8905 27.1987 34.5 27.7917 34.8296C28.3846 35.1593 29.1154 35.1593 29.7083 34.8296C30.3013 34.5 30.6667 33.8905 30.6667 33.2308ZM9.58333 22.1538C8.89838 22.1538 8.26565 22.5058 7.92339 23.0769C7.58113 23.6481 7.58113 24.3519 7.92339 24.9231C8.26565 25.4942 8.8984 25.8462 9.58333 25.8462H13.4167C14.1016 25.8462 14.7343 25.4942 15.0766 24.9231C15.4189 24.3519 15.4189 23.6481 15.0766 23.0769C14.7343 22.5058 14.1016 22.1538 13.4167 22.1538H9.58333ZM26.8333 25.8462C27.5183 25.8462 28.151 25.4942 28.4933 24.9231C28.8355 24.3519 28.8355 23.6481 28.4933 23.0769C28.151 22.5058 27.5183 22.1538 26.8333 22.1538H24.9167V16.6154C24.9167 15.9556 24.5513 15.3462 23.9583 15.0165C23.3654 14.6868 22.6346 14.6868 22.0417 15.0165C21.4487 15.3462 21.0833 15.9557 21.0833 16.6154V22.1538H19.1667C18.4817 22.1538 17.849 22.5058 17.5067 23.0769C17.1645 23.6481 17.1645 24.3519 17.5067 24.9231C17.849 25.4942 18.4817 25.8462 19.1667 25.8462H26.8333ZM36.4167 22.1538H34.5C33.815 22.1538 33.1823 22.5058 32.8401 23.0769C32.4978 23.6481 32.4978 24.3519 32.8401 24.9231C33.1823 25.4942 33.8151 25.8462 34.5 25.8462H36.4167C37.1016 25.8462 37.7343 25.4942 38.0766 24.9231C38.4189 24.3519 38.4189 23.6481 38.0766 23.0769C37.7343 22.5058 37.1016 22.1538 36.4167 22.1538ZM23 12.9231C23.5083 12.9231 23.996 12.7286 24.3554 12.3824C24.7147 12.0363 24.9167 11.5665 24.9167 11.0769V9.23077C24.9167 8.57102 24.5513 7.96157 23.9583 7.63189C23.3654 7.30222 22.6346 7.30222 22.0417 7.63189C21.4487 7.96157 21.0833 8.57104 21.0833 9.23077V11.0769C21.0833 11.5665 21.2853 12.0363 21.6446 12.3824C22.004 12.7286 22.4917 12.9231 23 12.9231ZM23 27.6923C22.4917 27.6923 22.004 27.8868 21.6446 28.233C21.2853 28.5791 21.0833 29.0489 21.0833 29.5385V38.7692C21.0833 39.429 21.4487 40.0384 22.0417 40.3681C22.6346 40.6978 23.3654 40.6978 23.9583 40.3681C24.5513 40.0384 24.9167 39.429 24.9167 38.7692V29.5385C24.9167 29.0489 24.7147 28.5791 24.3554 28.233C23.996 27.8868 23.5083 27.6923 23 27.6923ZM30.6667 40.6154H36.4167C36.9249 40.6154 37.4127 40.4209 37.772 40.0747C38.1314 39.7286 38.3333 39.2588 38.3333 38.7692V33.2308C38.3333 32.571 37.968 31.9616 37.375 31.6319C36.782 31.3022 36.0513 31.3022 35.4583 31.6319C34.8654 31.9616 34.5 32.571 34.5 33.2308V36.9231H30.6667C29.9817 36.9231 29.349 37.275 29.0067 37.8462C28.6645 38.4173 28.6645 39.1212 29.0067 39.6923C29.349 40.2635 29.9817 40.6154 30.6667 40.6154Z\"\r\n                                        fill=\"#10CFC9\" />\r\n                                </svg>\r\n\r\n                                <input id=\"open_link\" type=\"radio\" value=\"open_link\" formControlName=\"pix_option\">\r\n                                <label for=\"open_link\">Ler QR code</label>\r\n                            </div>\r\n                        </div>\r\n                        <!-- <div #form_validation_msg *ngIf=\"pixFormSubmitted && pixForm.controls.pix_option.errors\"\r\n                            class=\"placeholder form-validator-msg\">\r\n                            <div class=\"loader-animation loader-text\">\r\n                            </div>\r\n                            <span data-dt=\"form_validation_msg_option_required\">Opción requerida.</span>\r\n                        </div> -->\r\n                        <!-- <button class=\"btn btn-primary button-submit mx-auto d-block\"\r\n                            type=\"submit\">Seleccionar</button> -->\r\n\r\n                    </form>\r\n                </div>\r\n\r\n            </div>\r\n            <div class=\"col-12 full-width\">\r\n                <!-- CREDIT CARD MODEL -->\r\n                <div class=\"mt-4\" #dyn_data *ngIf=\"card_selected && payment_method === 'Mercadopago'\"\r\n                    id=\"form-credit-card\">\r\n                    <div class=\"col-12 text-center mb-2\">\r\n                        <div class=\"loader-placeholder\">\r\n                            <div class=\"loader-animation loader-text\"></div>\r\n                            <h4 data_dt=\"payment_method_form_title\" class=\"heading_custom\">\r\n                                Completa aquí con tus datos<br>para <strong>realizar</strong> el pago:\r\n                            </h4>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row mt-4 mb-4\">\r\n                        <div class=\"col-12 col-lg-10 mx-auto\">\r\n                            <div class=\"row\">\r\n                                <div class=\"col-12 col-md-7\">\r\n                                    <div id=\"pm-cc-container\">\r\n                                        <div class=\"row\">\r\n                                            <div class=\"col-12 col-md-12\">\r\n                                                <div class=\"form-group\">\r\n                                                    <label for=\"\">Número de tarjeta</label>\r\n                                                    <div class=\"input-group\">\r\n                                                        <input type=\"number\" (keyup)=\"guessingPaymentMethod($event)\"\r\n                                                            (change)=\"guessingPaymentMethod($event)\"\r\n                                                            formControlName=\"card_number\" class=\"form-control\"\r\n                                                            id=\"cardNumber\" data-checkout=\"cardNumber\"\r\n                                                            placeholder=\"4509 9535 6623 3704\"\r\n                                                            onselectstart=\"return false\" onpaste=\"return false\"\r\n                                                            onCopy=\"return false\" onCut=\"return false\"\r\n                                                            onDrag=\"return false\" onDrop=\"return false\"\r\n                                                            autocomplete=off>\r\n                                                        <span class=\"input-group-addon pm-br-custom\">\r\n                                                            <img id=\"pm-cc-image\"\r\n                                                                src=\"https://assist-365.com/smartcheckout/assets/img/cards/cmr.jpg\">\r\n                                                        </span>\r\n                                                    </div>\r\n                                                    <div *ngIf=\"submitted && paymentMethodsForm.controls.card_number.errors\"\r\n                                                        class=\"form-validator-msg\">\r\n                                                        <div\r\n                                                            *ngIf=\"paymentMethodsForm.controls.card_number.errors.pattern\">\r\n                                                            Caracteres invalidos</div>\r\n                                                        <div\r\n                                                            *ngIf=\"paymentMethodsForm.controls.card_number.errors.required\">\r\n                                                            Campo requerido</div>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                            <div class=\"col-12 col-md-4\">\r\n                                                <div class=\"form-group\">\r\n                                                    <label>Mes de vencimiento</label>\r\n                                                    <input type=\"number\" formControlName=\"card_date_exp\"\r\n                                                        class=\"form-control\" id=\"cardExpirationMonth\"\r\n                                                        data-checkout=\"cardExpirationMonth\" onselectstart=\"return false\"\r\n                                                        onpaste=\"return false\" onCopy=\"return false\"\r\n                                                        onCut=\"return false\" onDrag=\"return false\" onDrop=\"return false\"\r\n                                                        autocomplete=off placeholder=\"mm\">\r\n                                                    <div *ngIf=\"submitted && paymentMethodsForm.controls.card_date_exp.errors\"\r\n                                                        class=\"form-validator-msg\">\r\n                                                        <div\r\n                                                            *ngIf=\"paymentMethodsForm.controls.card_date_exp.errors.required\">\r\n                                                            Campo requerido</div>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                            <div class=\"col-12 col-md-4\">\r\n                                                <div class=\"form-group\">\r\n                                                    <label class=\"form-label\">Año de vencimiento</label>\r\n                                                    <input type=\"number\" formControlName=\"card_date_exp_year\"\r\n                                                        class=\"form-control\" id=\"cardExpirationYear\"\r\n                                                        data-checkout=\"cardExpirationYear\" onpaste=\"return false\"\r\n                                                        onCopy=\"return false\" onCut=\"return false\" onDrag=\"return false\"\r\n                                                        onDrop=\"return false\" autocomplete=off placeholder=\"aa\">\r\n                                                    <div *ngIf=\"submitted && paymentMethodsForm.controls.card_date_exp.errors\"\r\n                                                        class=\"form-validator-msg\">\r\n                                                        <div\r\n                                                            *ngIf=\"paymentMethodsForm.controls.card_date_exp.errors.required\">\r\n                                                            Campo requerido</div>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                            <div class=\"col-12 col-md-4\">\r\n                                                <div class=\"form-group\">\r\n                                                    <label>Cód. de seguridad</label>\r\n                                                    <input type=\"number\" formControlName=\"card_security_code\"\r\n                                                        class=\"form-control elem-25\" id=\"securityCode\"\r\n                                                        data-checkout=\"securityCode\" placeholder=\"123\"\r\n                                                        onselectstart=\"return false\" onpaste=\"return false\"\r\n                                                        onCopy=\"return false\" onCut=\"return false\" onDrag=\"return false\"\r\n                                                        onDrop=\"return false\" autocomplete=off>\r\n                                                    <div *ngIf=\"submitted && paymentMethodsForm.controls.card_security_code.errors\"\r\n                                                        class=\"form-validator-msg\">\r\n                                                        <div\r\n                                                            *ngIf=\"paymentMethodsForm.controls.card_security_code.errors.pattern\">\r\n                                                            Caracteres invalidos</div>\r\n                                                        <div\r\n                                                            *ngIf=\"paymentMethodsForm.controls.card_security_code.errors.required\">\r\n                                                            Campo requerido</div>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                            <div class=\"col-12 col-md-12\">\r\n                                                <div class=\"form-group mb-0\">\r\n                                                    <label class=\"form-label\">Titular de la tarjeta</label>\r\n                                                    <input type=\"text\" formControlName=\"card_owner\"\r\n                                                        placeholder=\"Como figura en la tarjeta\" class=\"form-control\"\r\n                                                        id=\"cardholderName\" data-checkout=\"cardholderName\">\r\n                                                    <div *ngIf=\"submitted && paymentMethodsForm.controls.card_owner.errors\"\r\n                                                        class=\"form-validator-msg\">\r\n                                                        <div\r\n                                                            *ngIf=\"paymentMethodsForm.controls.card_owner.errors.pattern\">\r\n                                                            Caracteres invalidos\r\n                                                        </div>\r\n                                                        <div\r\n                                                            *ngIf=\"paymentMethodsForm.controls.card_owner.errors.required\">\r\n                                                            Campo requerido</div>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                        <div class=\"wave\"></div>\r\n                                    </div>\r\n                                </div>\r\n                                <div id=\"credit-card-container\"\r\n                                    class=\"col-12 col-md-5 d-flex justify-content-center flex-column\">\r\n                                    <input type=\"hidden\" id=\"email\" name=\"email\" value=\"{{quote.email}}\"\r\n                                        class=\"form-control\" name=\"card_email\">\r\n                                    <div class=\"form-group\">\r\n                                        <label class=\"form-label\">Cuotas disponibles</label>\r\n                                        <select required=\"required\" id=\"installmentsOption\"\r\n                                            data-checkout=\"installmentsOption\" class=\"form-control\">\r\n                                        </select>\r\n                                    </div>\r\n                                    <div class=\"form-group\">\r\n                                        <label class=\"form-label\">Tipo de documento</label>\r\n                                        <select required=\"required\" id=\"docType\" data-checkout=\"docType\"\r\n                                            class=\"form-control\">\r\n                                        </select>\r\n                                    </div>\r\n                                    <div class=\"form-group mb-0\">\r\n                                        <label class=\"form-label\">Documento del titular de la tarjeta</label>\r\n                                        <input type=\"text\" formControlName=\"card_owner_doc\" class=\"form-control\"\r\n                                            id=\"docNumber\" data-checkout=\"docNumber\">\r\n                                        <div *ngIf=\"submitted && paymentMethodsForm.controls.card_owner_doc.errors\"\r\n                                            class=\"form-validator-msg\">\r\n                                            <div *ngIf=\"paymentMethodsForm.controls.card_owner_doc.errors.pattern\">\r\n                                                Caracteres invalidos</div>\r\n                                            <div *ngIf=\"paymentMethodsForm.controls.card_owner_doc.errors.required\">\r\n                                                Campo requerido</div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <input formControlName=\"payment_method_id\" id=\"paymentMethodId\" type=\"hidden\"\r\n                                        name=\"paymentMethodId\" />\r\n                                    <input type=\"hidden\" class=\"form-control\" name=\"cardID\" formControlName=\"cardID\">\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n\r\n            <div class=\"row\">\r\n                <!-- CIELO CREDIT CARD FORM  -->\r\n                <div class=\"col-12\">\r\n                    <div class=\"mt-3\" #dyn_data *ngIf=\"payment_method == 'cielo'\" id=\"form-credit-card\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-12 col-lg-10 mx-auto text-center mb-2\">\r\n                                <div class=\"loader-placeholder\">\r\n                                    <div class=\"loader-animation loader-text\"></div>\r\n                                    <h4 data_dt=\"payment_method_form_title\" class=\"heading_custom\">\r\n                                        Complete aqui com seus dados<br>para realizar o pagamento\r\n                                    </h4>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-12 col-md-5 col-lg-4 mx-auto text-center mt-4 mb-2\">\r\n                                <span>Seleciona Cartão</span>\r\n                                <select (change)=\"cardSelected($event)\" formControlName=\"cardID\" name=\"cardID\" id=\"\"\r\n                                    class=\"form-control\">\r\n                                    <option value=\"\">Selecione</option>\r\n                                    <option value=\"vi\">Visa</option>\r\n                                    <option value=\"ma\">Mastercard</option>\r\n                                    <option value=\"di\">Dinners</option>\r\n                                    <option value=\"am\">Amex</option>\r\n                                </select>\r\n                                <div *ngIf=\"submitted && paymentMethodsForm.controls.cardID.errors\"\r\n                                    class=\"form-validator-msg\">\r\n                                    <div *ngIf=\"paymentMethodsForm.controls.cardID.errors.required\">Opção necessária\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"card_selected\" class=\"row mt-4 mb-4\">\r\n                            <div class=\"col-12 col-lg-10 mx-auto\">\r\n                                <div class=\"row\">\r\n                                    <div class=\"col-12 col-md-8 mx-auto mt-3\">\r\n                                        <div id=\"pm-cc-container\">\r\n                                            <div class=\"row\">\r\n                                                <div class=\"col-12 col-md-12\">\r\n                                                    <div class=\"form-group\">\r\n                                                        <label for=\"\">Número do cartão</label>\r\n                                                        <div class=\"input-group\">\r\n                                                            <input type=\"number\" formControlName=\"card_number\"\r\n                                                                class=\"form-control\" id=\"cardNumber\"\r\n                                                                placeholder=\"4509 9535 6623 3704\"\r\n                                                                onselectstart=\"return false\" onpaste=\"return false\"\r\n                                                                onCopy=\"return false\" onCut=\"return false\"\r\n                                                                onDrag=\"return false\" onDrop=\"return false\"\r\n                                                                autocomplete=off>\r\n                                                        </div>\r\n                                                        <div *ngIf=\"submitted && paymentMethodsForm.controls.card_number.errors\"\r\n                                                            class=\"form-validator-msg\">\r\n                                                            <div\r\n                                                                *ngIf=\"paymentMethodsForm.controls.card_number.errors.pattern\">\r\n                                                                Caracteres invalidos</div>\r\n                                                            <div\r\n                                                                *ngIf=\"paymentMethodsForm.controls.card_number.errors.required\">\r\n                                                                Campo obrigatório</div>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div class=\"col-12 col-md-4\">\r\n                                                    <div class=\"form-group\">\r\n                                                        <label>Mês de vencimento</label>\r\n                                                        <input type=\"number\" formControlName=\"card_date_exp\"\r\n                                                            class=\"form-control\" id=\"cardExpirationMonth\"\r\n                                                            onselectstart=\"return false\" onpaste=\"return false\"\r\n                                                            onCopy=\"return false\" onCut=\"return false\"\r\n                                                            onDrag=\"return false\" onDrop=\"return false\" autocomplete=off\r\n                                                            placeholder=\"mm\">\r\n                                                        <div *ngIf=\"submitted && paymentMethodsForm.controls.card_date_exp.errors\"\r\n                                                            class=\"form-validator-msg\">\r\n                                                            <div\r\n                                                                *ngIf=\"paymentMethodsForm.controls.card_date_exp.errors.required\">\r\n                                                                Campo obrigatório</div>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div class=\"col-12 col-md-4\">\r\n                                                    <div class=\"form-group\">\r\n                                                        <label class=\"form-label\">Ano de vencimento</label>\r\n                                                        <input type=\"number\" formControlName=\"card_date_exp_year\"\r\n                                                            class=\"form-control\" id=\"cardExpirationYear\"\r\n                                                            onpaste=\"return false\" onCopy=\"return false\"\r\n                                                            onCut=\"return false\" onDrag=\"return false\"\r\n                                                            onDrop=\"return false\" autocomplete=off placeholder=\"aa\">\r\n                                                        <div *ngIf=\"submitted && paymentMethodsForm.controls.card_date_exp.errors\"\r\n                                                            class=\"form-validator-msg\">\r\n                                                            <div\r\n                                                                *ngIf=\"paymentMethodsForm.controls.card_date_exp.errors.required\">\r\n                                                                Campo obrigatório</div>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div class=\"col-12 col-md-4\">\r\n                                                    <div class=\"form-group\">\r\n                                                        <label>Cód. segurança</label>\r\n                                                        <input type=\"text\" formControlName=\"card_security_code\"\r\n                                                            class=\"form-control elem-25\" id=\"securityCode\"\r\n                                                            placeholder=\"123\" onselectstart=\"return false\"\r\n                                                            onpaste=\"return false\" onCopy=\"return false\"\r\n                                                            onCut=\"return false\" onDrag=\"return false\"\r\n                                                            onDrop=\"return false\" autocomplete=off>\r\n                                                        <div *ngIf=\"submitted && paymentMethodsForm.controls.card_security_code.errors\"\r\n                                                            class=\"form-validator-msg\">\r\n                                                            <div\r\n                                                                *ngIf=\"paymentMethodsForm.controls.card_security_code.errors.pattern\">\r\n                                                                Caracteres invalidos</div>\r\n                                                            <div\r\n                                                                *ngIf=\"paymentMethodsForm.controls.card_security_code.errors.required\">\r\n                                                                Campo obrigatório</div>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div class=\"col-12 col-md-12\">\r\n                                                    <div class=\"form-group\">\r\n                                                        <label class=\"form-label\">Titular do cartão</label>\r\n                                                        <input type=\"text\" formControlName=\"card_owner\"\r\n                                                            placeholder=\"Como aparece no cartão\" class=\"form-control\"\r\n                                                            id=\"cardholderName\">\r\n                                                        <div *ngIf=\"submitted && paymentMethodsForm.controls.card_owner.errors\"\r\n                                                            class=\"form-validator-msg\">\r\n                                                            <div\r\n                                                                *ngIf=\"paymentMethodsForm.controls.card_owner.errors.pattern\">\r\n                                                                Caracteres invalidos\r\n                                                            </div>\r\n                                                            <div\r\n                                                                *ngIf=\"paymentMethodsForm.controls.card_owner.errors.required\">\r\n                                                                Campo obrigatório</div>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                </div>\r\n                                                <div class=\"col-12 col-md-12 d-none\">\r\n                                                    <div class=\"form-group mb-0\">\r\n                                                        <label class=\"form-label\">Documento do titular</label>\r\n                                                        <input type=\"text\" formControlName=\"card_owner_doc\"\r\n                                                            class=\"form-control\" id=\"docNumber\">\r\n                                                        <div *ngIf=\"submitted && paymentMethodsForm.controls.card_owner_doc.errors\"\r\n                                                            class=\"form-validator-msg\">\r\n                                                            <div\r\n                                                                *ngIf=\"paymentMethodsForm.controls.card_owner_doc.errors.pattern\">\r\n                                                                Caracteres invalidos</div>\r\n                                                            <div\r\n                                                                *ngIf=\"paymentMethodsForm.controls.card_owner_doc.errors.required\">\r\n                                                                Campo obrigatório</div>\r\n                                                        </div>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </div>\r\n                                            <div class=\"wave\"></div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"row\">\r\n                                    <div id=\"credit-card-container\"\r\n                                        class=\"col-12 col-md-5 col-lg-4 mx-auto text-center mt-4\">\r\n                                        <div class=\"form-group\">\r\n                                            <label for=\"cielo-parcelas\">\r\n                                                Parcelas\r\n                                            </label>\r\n                                            <select name=\"cielo-parcelas\" id=\"cielo-parcelas\" class=\"form-control\"\r\n                                                formControlName=\"parcelas\">\r\n                                                <option value=\"\">Selecione</option>\r\n                                                <option *ngFor=\"let parcela of cielo_parcelas\" [value]=\"parcela.value\">\r\n                                                    {{parcela.label}}</option>\r\n                                            </select>\r\n                                            <div *ngIf=\"submitted && paymentMethodsForm.controls.parcelas.errors\"\r\n                                                class=\"form-validator-msg\">\r\n                                                <div *ngIf=\"paymentMethodsForm.controls.parcelas.errors.required\">\r\n                                                    Campo obrigatório</div>\r\n                                            </div>\r\n                                        </div>\r\n                                        <input type=\"hidden\" id=\"email\" name=\"email\" value=\"{{quote.email}}\"\r\n                                            class=\"form-control\" name=\"card_email\">\r\n                                        <input formControlName=\"payment_method_id\" id=\"paymentMethodId\" type=\"hidden\"\r\n                                            name=\"paymentMethodId\" />\r\n                                        <input type=\"hidden\" class=\"form-control\" name=\"cardID\"\r\n                                            formControlName=\"cardID\">\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div id=\"mp-lib-container\">\r\n                <!-- PAYPAL -->\r\n                <div *ngIf=\"paymentMethod.paypal\" class=\"col-12 col-sm-6 mx-auto mt-4\">\r\n                    <div id=\"block-6\" class=\"bg-white text-center\">\r\n                        <div id=\"paypal-button-container\"></div>\r\n                        <input id=\"amount_pp\" name=\"amount_pp\" type=\"hidden\">\r\n                    </div>\r\n                </div>\r\n                <div class=\"col-12 mx-auto\">\r\n                    <div #dyn_data *ngIf=\"paymentMethod.dlocal\">\r\n                        <div class=\"col-12 full-width text-left payment_dlocal\">\r\n                            <input type=\"hidden\" id=\"email\" name=\"email\" value=\"{{quote.email}}\">\r\n                            <div class=\"text-center\">\r\n                                <div class=\"mt-4 mb-4 col-12 col-lg-6 mx-auto full-width\">\r\n                                    <div class=\"loader-placeholder\">\r\n                                        <div class=\"loader-animation loader-text\"></div>\r\n                                        <h4 data-dt=\"payment_method_form_title_dlocal\" class=\"heading_custom\">\r\n                                            Completa aquí con tus datos<br> para <strong>realizar</strong> el pago:\r\n                                        </h4>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"text-left form-group mt-4 mb-4 col-12 col-md-6 col-lg-5 mx-auto full-width\">\r\n                                    <div id=\"container\"></div>\r\n                                    <span class=\"text-alert card-errors\"></span>\r\n                                </div>\r\n                                <div\r\n                                    class=\"text-left form-group full-width col-12 col-md-6 col-lg-5 mx-auto full-width\">\r\n                                    <input data-dt=\"payment_methods_dlocal_fullname\" type=\"text\"\r\n                                        placeholder=\"Nombre y Apellido\" id=\"payer_name\" name=\"payer_name\"\r\n                                        class=\"form-control\">\r\n                                    <div #form_validation_msg *ngIf=\"submitted && dlocal_errors.payer_name\"\r\n                                        class=\"form-validator-msg\">\r\n                                        <div data-dt=\"form_validation_msg_invalid_characters\">Nombre incorrecto\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"form-validation-msg\">\r\n                                        <div id=\"card-errors\" class=\"pl-3\" role=\"alert\"></div>\r\n                                    </div>\r\n                                </div>\r\n                                <div\r\n                                    class=\"text-left form-group full-width col-12 col-md-6 col-lg-5 mx-auto full-width\">\r\n                                    <input type=\"text\" placeholder=\"{{dlocal_document.placeholder}}\" id=\"payer_document\"\r\n                                        name=\"payer_document\" class=\"form-control\">\r\n                                    <div #form_validation_msg *ngIf=\"submitted && dlocal_errors.payer_document\"\r\n                                        class=\"form-validator-msg\">\r\n                                        <div>{{dlocal_document.placeholder}} <span\r\n                                                data-dt=\"form_validation_msg_invalid\">incorrecto</span></div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"text-left form-group mt-4 col-md-6 col-lg-5 mx-auto full-width text-left\">\r\n                                    <div class=\"select-wrapper\">\r\n                                        <label class=\"font-weight-bold form-label\"\r\n                                            data-dt=\"payment_methods_dlocal_cuotas\" for=\"installments\">Cuotas\r\n                                            disponibles: </label>\r\n                                        <select id=\"installments\" disabled>\r\n                                            <option data-dt=\"payment_methods_dlocal_enter_cc\" value=\"\">Ingrese\r\n                                                número de\r\n                                                tarjeta</option>\r\n                                        </select>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </form>\r\n    </div>\r\n    <div #dyn_data *ngIf=\"whatsapp_support\" class=\"whatsapp-support\">\r\n        <button (click)=\"whatsapp_support = false\" type=\"button\" class=\"btn-close\"><i class=\"fa fa-close\"></i></button>\r\n        <a target=\"_blank\"\r\n            href=\"https://wa.me/{{data_support['whatsapp_number'].substring(1)}}?text={{data_support.whatsapp_message()}}\">\r\n            <div class=\"wa-container\">\r\n                <div class=\"loader-placeholder\">\r\n                    <div class=\"loader-animation loader-text\"></div>\r\n                    <span data-dt=\"whatsapp_support_question_1\" class=\"font-weight-bold\">¿Tienes problemas para realizar\r\n                        el\r\n                        pago?</span>\r\n                </div>\r\n                <div class=\"loader-placeholder\">\r\n                    <div class=\"loader-animation loader-text\"></div>\r\n                    <span data-dt=\"whatsapp_support_question_2\"> Te ayudamos! </span>\r\n                    {{data_support['whatsapp_number']}}\r\n                </div>\r\n            </div>\r\n            <div class=\"loader-placeholder\">\r\n                <div class=\"loader-animation loader-circle-xs\"></div>\r\n                <img src=\"/smartcheckout/assets/img/icon/whatsapp_support.svg\" alt=\"\">\r\n            </div>\r\n        </a>\r\n    </div>\r\n</div>","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { PaymentMethodsComponent } from '../components/payment-methods/payment-methods.component';\nimport { PaymentMethodsConfig } from './payment-methods.config';\nimport { LoadScriptsService } from '../services/load-scripts.service';\nimport { HttpClientModule } from '@angular/common/http';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { RouterModule } from '@angular/router';\nimport { DynamicModalComponent } from '../services/dynamic-modal/dynamic-modal.component';\nimport { DynamicModalService } from './../services/dynamic-modal.service';\nimport { ModalModule, BsModalRef } from 'ngx-bootstrap/modal';\nimport { Modal1Component } from '../components/modals/modal1/modal1.component';\n// import { PaymentLinkModalComponent } from '../components/payment-link-modal/payment-link-modal.component';\nimport { A365loaderModule, A365loaderService } from 'loader365';\nimport { TranslatorService } from 'translator365';\nimport { PixOptionsComponent } from './../components/methods/pix-options.component';\n\n@NgModule({\n  declarations: [PaymentMethodsComponent, DynamicModalComponent, Modal1Component, PixOptionsComponent],\n  exports: [PaymentMethodsComponent,PixOptionsComponent],\n  imports: [\n    CommonModule,\n    HttpClientModule,\n    FormsModule,\n    ReactiveFormsModule,\n    RouterModule.forRoot([]),\n    A365loaderModule.forRoot(),\n    ModalModule.forRoot(),\n  ],\n  providers: [\n    LoadScriptsService,\n    DynamicModalService,\n    BsModalRef,\n    A365loaderService,\n    TranslatorService\n  ]\n})\n\nexport class PaymentMethodsModule {\n  public static forRoot(config: PaymentMethodsConfig): ModuleWithProviders<PaymentMethodsModule> {\n    return {\n      ngModule: PaymentMethodsModule,\n      providers: [\n        { provide: PaymentMethodsConfig, useValue: config },\n        LoadScriptsService,\n        DynamicModalService,\n        BsModalRef,\n        TranslatorService\n      ]\n    };\n  }\n\n  public static forChild(): ModuleWithProviders<PaymentMethodsModule> {\n    return {\n      ngModule: PaymentMethodsModule\n    };\n  }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;MAUa,QAAQ;IAQjB,YAAoB,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;QANpC,UAAK,GAAQ,SAAS,CAAC;QACvB,cAAS,GAAQ,gCAAgC,CAAC;;QAElD,YAAO,GAAQ,EAAE,CAAC;KAGuB;IAElC,iBAAiB,CAAC,IAAI;QACzB,OAAO,GAAG;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG;gBAC/B,OAAO,kBAAkB,CAAC,GAAG,CAAC,GAAG,GAAG;oBAChC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;aACrC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACpB;IAEM,WAAW,CAAC,KAAwB;QACvC,IAAI,KAAK,CAAC,KAAK,YAAY,UAAU,EAAE;YACnC,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;SAC5D;aAAM;;;;SAKN;QACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;;KAE5B;;IAEM,MAAM,CAAC,QAAQ;QAElB,MAAM,WAAW,GAAG;YAChB,OAAO,EAAE,IAAI,WAAW,CAAC;gBACrB,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK;aAC1C,CAAC;SACL,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,QAAQ,EAAE,WAAW,CAAC,CAAC,IAAI,CAC1E,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KAEL;IAEO,qBAAqB,CAAC,KAAwB;QAClD,QAAQ,KAAK,CAAC,MAAM;YAChB,KAAK,GAAG,EAAE;gBACN,OAAO,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC;aACxC;YACD,KAAK,GAAG,EAAE;gBACN,OAAO,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC;aAC5C;YACD,KAAK,GAAG,EAAE;gBACN,OAAO,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC;aACpD;YACD,SAAS;gBACL,OAAO,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC;aACnD;SACJ;KACJ;IAEM,GAAG,CAAC,QAAgB,EAAE,YAAoB,GAAG;QAChD,MAAM,WAAW,GAAG;YAChB,OAAO,EAAE,IAAI,WAAW,CAAC;gBACrB,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK;gBACvC,WAAW,EAAE,SAAS;aACzB,CAAC;SACL,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,QAAQ,EAAE,WAAW,CAAC;aACpE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;KAC3C;IAEM,IAAI,CAAC,MAAM,EAAE,QAAgB,EAAE,YAAoB,GAAG;QAEzD,MAAM,WAAW,GAAG;YAChB,OAAO,EAAE,IAAI,WAAW,CAAC;gBACrB,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK;gBACvC,WAAW,EAAE,SAAS;aACzB,CAAC;SACL,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,CACjF,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KAEL;IAEM,MAAM,CAAC,EAAE,EAAE,QAAgB;QAC9B,MAAM,WAAW,GAAG;YAChB,OAAO,EAAE,IAAI,WAAW,CAAC;gBACrB,cAAc,EAAE,kBAAkB;gBAClC,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK;aAC1C,CAAC;SACL,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,IAAI,CACtF,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;IAEM,GAAG,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ;QAC3B,MAAM,WAAW,GAAG;YAChB,OAAO,EAAE,IAAI,WAAW,CAAC;gBACrB,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK;aAC1C,CAAC;SACL,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,IAAI,CAC5F,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAC/B,CAAC;KACL;;qGAlHQ,QAAQ;yGAAR,QAAQ,cAHL,MAAM;2FAGT,QAAQ;kBAJpB,UAAU;mBAAC;oBACR,UAAU,EAAE,MAAM;iBACrB;;;MCEY,eAAe;IAU1B,YAAmB,UAAsB,EAAU,QAAkB;QAAlD,eAAU,GAAV,UAAU,CAAY;QAAU,aAAQ,GAAR,QAAQ,CAAU;QAT3D,WAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC5B,YAAO,GAAG,IAAI,YAAY,EAAE,CAAC;QAGvC,aAAQ,GAAU,EAAE,CAAC;QACrB,cAAS,GAAU,EAAE,CAAC;KAIoD;IAEnE,UAAU,CAAC,CAAC;QACjB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACrB;IAEM,YAAY,CAAC,CAAC;QACnB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACtB;IAED,QAAQ;QAEN,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,kCAAkC,CAAC;QAEhD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,yBAAyB,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI;YACtG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;SACtB,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG;YACf,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,EAAE;YACzC,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,kBAAkB,EAAE,EAAE,EAAE,EAAE,EAAE;SAC3D,CAAC;KACH;;4GAnCU,eAAe;gGAAf,eAAe,wGCV5B,sVASM;2FDCO,eAAe;kBAN3B,SAAS;+BACE,eAAe;uHAMf,MAAM;sBAAf,MAAM;gBACG,OAAO;sBAAhB,MAAM;;;MEFI,mBAAmB;IAS9B,YACU,SAAoB,EACpB,UAAwB;QADxB,cAAS,GAAT,SAAS,CAAW;QACpB,eAAU,GAAV,UAAU,CAAc;QATlC,sBAAiB,GAAY,KAAK,CAAC;QAEzB,iBAAY,GAAG,IAAI,YAAY,EAAW,CAAC;QAUrD,QAAG,GAAG,CAAC,KAAK;YACV,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;SACrC,CAAA;KALI;IAOL,QAAQ;QAEN,IAAI,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,eAAe,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;QAC5F,IAAI,CAAC,eAAe,GAAG,gBAAgB,eAAe,+BAA+B,CAAC;KAEvF;IAED,UAAU;QACR,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IAED,QAAQ;QACN,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,UAAU,CAAC,8BAA8B,CAAC,0BAA0B,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;KAClG;;gHAzCU,mBAAmB;oGAAnB,mBAAmB,8JCVhC,i/OA2FM;2FDjFO,mBAAmB;kBAN/B,SAAS;+BACE,iBAAiB;6HASjB,YAAY;sBAArB,MAAM;gBACE,UAAU;sBAAlB,KAAK;gBACG,QAAQ;sBAAhB,KAAK;;;MENK,qBAAqB;IAkBhC,YACU,UAAsB,EACtB,UAA6B;QAD7B,eAAU,GAAV,UAAU,CAAY;QACtB,eAAU,GAAV,UAAU,CAAmB;QAfvC,qBAAgB,GAAW,IAAI,CAAC;KAgB3B;IAEL,QAAQ;QAEN,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,KAAK,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC;SAC3E;QAGD,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,QAAQ,EAAE;YACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;KACF;IAED,OAAO,CAAC,OAAY;QAClB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;KACvB;;IAKD,OAAO;QACL,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;IAED,KAAK;QACH,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClC;KACF;IAGD,eAAe;QAEb,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QAE5C,UAAU,CAAC,CAAC,CAAM,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAClF,IAAI;YACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B,EACD,KAAK;YACH,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACzB,CACF,CAAC,CAAC;KACJ;;kHApEU,qBAAqB;sGAArB,qBAAqB,qDCVlC,w4CA4BM;2FDlBO,qBAAqB;kBANjC,SAAS;+BACE,eAAe;;;MEEd,mBAAmB;IAG9B,YACU,YAA4B,EAC5B,UAAsB;QADtB,iBAAY,GAAZ,YAAY,CAAgB;QAC5B,eAAU,GAAV,UAAU,CAAY;KAC3B;IAEL,SAAS,CAAC,MAAM;QAEd,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,MAAM,QAAQ,GAAG;YACf,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,IAAI;YAChB,mBAAmB,EAAE,IAAI;SAC1B,CAAC;QAEF,IAAI,MAAM,CAAC,EAAE,EAAE;YACb,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC3B,MAAM,mBAAmB,GAAG;oBAC1B,EAAE,GAAG,EAAE,0EAA0E,EAAE,OAAO,EAAE,+BAA+B,EAAE;oBAC7H,EAAE,GAAG,EAAE,yCAAyC,EAAE,OAAO,EAAE,+BAA+B,EAAE;oBAC5F,EAAE,GAAG,EAAE,6CAA6C,EAAE,OAAO,EAAE,qCAAqC,EAAE;oBACtG,EAAE,GAAG,EAAE,kFAAkF,EAAE,OAAO,EAAE,6BAA6B,EAAE;oBACnI,EAAE,GAAG,EAAE,wDAAwD,EAAE,OAAO,EAAE,oCAAoC,EAAE;oBAChH,EAAE,GAAG,EAAE,0CAA0C,EAAE,OAAO,EAAE,oCAAoC,EAAE;oBAClG,EAAE,GAAG,EAAE,6EAA6E,EAAE,OAAO,EAAE,iCAAiC,EAAE;oBAClI,EAAE,GAAG,EAAE,oEAAoE,EAAE,OAAO,EAAE,iCAAiC,EAAE;oBACzH,EAAE,GAAG,EAAE,yDAAyD,EAAE,OAAO,EAAE,+BAA+B,EAAE;oBAC5G,EAAE,GAAG,EAAE,gGAAgG,EAAE,OAAO,EAAE,6BAA6B,EAAE;oBACjJ,EAAE,GAAG,EAAE,yCAAyC,EAAE,OAAO,EAAE,4BAA4B,EAAE;oBACzF,EAAE,GAAG,EAAE,8EAA8E,EAAE,OAAO,EAAE,yBAAyB,EAAE;iBAC5H,CAAC;gBAEF,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;oBAChD,OAAO,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,IAAI,CAAC;iBAC9B,CAAC,CAAC;gBAEH,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC5B,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;iBAC3C;qBAAM;oBACL,YAAY,GAAG,EAAE,CAAC;iBACnB;aACF;YAED,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC5B,MAAM,oBAAoB,GAAG;oBAC3B,EAAE,GAAG,EAAE,+EAA+E,EAAE,OAAO,EAAE,+BAA+B,EAAE;oBAClI,EAAE,GAAG,EAAE,mCAAmC,EAAE,OAAO,EAAE,oCAAoC,EAAE;oBAC3F,EAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,sBAAsB,EAAE;oBAC1D,EAAE,GAAG,EAAE,wBAAwB,EAAE,OAAO,EAAE,wCAAwC,EAAE;oBACpF,EAAE,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,iCAAiC,EAAE;oBACxE,EAAE,GAAG,EAAE,gEAAgE,EAAE,OAAO,EAAE,8BAA8B,EAAE;iBACnH,CAAC;gBAEF,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;oBACjD,OAAO,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,KAAK,CAAC;iBAC/B,CAAC,CAAC;gBAEH,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC5C,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;iBAC5C;qBAAM;oBACL,aAAa,GAAG,EAAE,CAAC;iBACpB;aACF;iBAAM;gBACL,aAAa,GAAG,EAAE,CAAC;aACpB;SACF;aAAM;;YAIL,aAAa,GAAG,EAAE,CAAC;YACnB,YAAY,GAAG,EAAE,CAAC;SACnB;QAED,IAAI,YAAY,GAAG;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,aAAa,EAAE,aAAa;YAC5B,YAAY,EAAE,YAAY;SAC3B,CAAC;QAEF,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,YAAY,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,CAAA;SACvC;QAED,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;YACjC,YAAY,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;SACpC;;QAGD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;KAChJ;IAED,SAAS;QACP,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;;gHAvGU,mBAAmB;oHAAnB,mBAAmB,cAFlB,MAAM;2FAEP,mBAAmB;kBAH/B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MCCY,WAAW,GAAc;IACpC,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,uBAAuB,EAAE;IAChD,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,8DAA8D,EAAE;IAC5F,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,kDAAkD,EAAE;IAC3E,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,iDAAiD,EAAC;EAC1E;MAMW,kBAAkB;IAI7B;QAFQ,YAAO,GAAQ,EAAE,CAAC;QAGxB,WAAW,CAAC,OAAO,CAAC,CAAC,MAAW;YAC9B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG;gBAC1B,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,MAAM,CAAC,GAAG;aAChB,CAAC;SACH,CAAC,CAAC;KACJ;IAED,MAAM,IAAI,CAAC,GAAG,OAAiB;QAC7B,MAAM,QAAQ,GAAU,EAAE,CAAC;QAC3B,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpE,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAC9B;IACD,UAAU,CAAC,IAAY;QACrB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM;;YAEjC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE;gBAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;;aAEnE;iBAAM;;gBAEL,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBAChD,MAAM,CAAC,IAAI,GAAG,iBAAiB,CAAC;gBAChC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;gBACpC,MAAM,CAAC,MAAM,GAAG;oBACd,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;;oBAEjC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;iBAC3D,CAAC;gBACF,MAAM,CAAC,OAAO,GAAG,CAAC,KAAU,KAAK,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC5F,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aAC9D;SACF,CAAC,CAAC;KACJ;;+GAtCU,kBAAkB;mHAAlB,kBAAkB,cAHjB,MAAM;2FAGP,kBAAkB;kBAJ9B,UAAU;mBAAC;oBACV,UAAU,EAAE,MAAM;iBACnB;;;MChBY,oBAAoB;IAAjC;QACI,WAAM,GAAG;YACL,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,wBAAwB;YAC/B,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,QAAQ;SACnB,CAAA;KACJ;;;SCae,MAAM;IACpB,MAAM,QAAQ,GAAQ,QAAQ,CAAC,aAAa,CAAC,mCAAmC,CAAC,CAAC;IAClF,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1D,CAAC;SAEe,kBAAkB,CAAC,MAAM,EAAE,YAAY;IAErD,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;;IAG3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;QAEhD,YAAY,IAAI,iBAAiB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,mBAAmB,GAAG,WAAW,CAAC;KACjH;IACD,CAAC,CAAC,qBAAqB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9C,CAAC;MAOY,uBAAuB;IA4HlC,YACU,MAAc,EACf,YAA4B,EAC5B,mBAAwC,EACvC,KAAqB,EACrB,QAAkB,EAClB,UAA6B,EAC7B,aAAiC,EACjC,SAA+B,EAC/B,WAAwB,EACxB,aAAgC,EAChC,EAAc;QAVd,WAAM,GAAN,MAAM,CAAQ;QACf,iBAAY,GAAZ,YAAY,CAAgB;QAC5B,wBAAmB,GAAnB,mBAAmB,CAAqB;QACvC,UAAK,GAAL,KAAK,CAAgB;QACrB,aAAQ,GAAR,QAAQ,CAAU;QAClB,eAAU,GAAV,UAAU,CAAmB;QAC7B,kBAAa,GAAb,aAAa,CAAoB;QACjC,cAAS,GAAT,SAAS,CAAsB;QAC/B,gBAAW,GAAX,WAAW,CAAa;QACxB,kBAAa,GAAb,aAAa,CAAmB;QAChC,OAAE,GAAF,EAAE,CAAY;QArIxB,qBAAgB,GAAY,KAAK,CAAC;QAElC,gBAAW,GAAY,KAAK,CAAC;QAM7B,iBAAY,GAAQ;YAClB,eAAe,EAAE,EAAE;YACnB,UAAU,EAAE,EAAE;YACd,gBAAgB,EAAE;gBAChB,OAAO,qFAAqF,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,qBAAqB,CAAA;aACjJ;SACF,CAAC;QAEF,qBAAgB,GAAY,KAAK,CAAC;;QAKlC,mBAAc,GAAQ,EAAE,CAAC;QACzB,mBAAc,GAAY,KAAK,CAAC;QAkBhC,UAAK,GAAQ,EAAE,CAAC;QAGhB,iBAAY,GAAQ,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAM7C,cAAS,GAAG,IAAI,CAAC;QAGjB,qBAAgB,GAAG,EAAE,CAAC;QACtB,gBAAW,GAAG,KAAK,CAAC;QACpB,aAAQ,GAAG,IAAI,KAAK,EAAU,CAAC;QAC/B,eAAU,GAAG,IAAI,KAAK,EAAU,CAAC;QACjC,cAAS,GAAG,IAAI,KAAK,EAAU,CAAC;QAChC,YAAO,GAAG,KAAK,CAAC;QAChB,eAAU,GAAG,KAAK,CAAC;QACnB,cAAS,GAAG,KAAK,CAAC;QAClB,kBAAa,GAAG,KAAK,CAAC;QAOtB,cAAS,GAAG,KAAK,CAAC;QAClB,kBAAa,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;QAC3H,SAAI,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAClC,kBAAa,GAAG,KAAK,CAAC;QACtB,iBAAY,GAAG,IAAI,CAAC;QACpB,0BAAqB,GAAG,KAAK,CAAC;QAE9B,qBAAgB,GAAG,KAAK,CAAC;QACzB,kBAAa,GAAY,KAAK,CAAC;QAC/B,oBAAe,GAAY,KAAK,CAAC;QAEjC,iBAAY,GAAG,KAAK,CAAC;QACrB,QAAG,GAAG,KAAK,CAAC;QACZ,gBAAW,GAAG,MAAM,CAAC;QACrB,iBAAY,GAAG,KAAK,CAAC;QAarB,YAAO,GAAY,IAAI,CAAC;QAQxB,QAAG,GAAQ,KAAK,CAAC;QACjB,SAAI,GAAQ,MAAM,CAAC;QAiCjB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAElC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,iBAAiB,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;QAIzC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,EAAE;YAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9C;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;SACnB;;QAID,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,EAAE;YAC5C,MAAM,gBAAgB,GAAG;gBACvB,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;aAC5B,CAAC;YACF,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;SACtG;KACF;IApID,IAAsC,mBAAmB,CAAC,CAA0B;QAClF,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,CAAC;SAC5C;KACF;IAED,IAA2B,0BAA0B,CAAC,CAA0B;QAC9E,IAAI,CAAC,EAAE;YACL,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;SACtE;KACF;IAsED,cAAc,CAAC,SAAiB,iBAAiB;QAE/C,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,MAAM,KAAK,iBAAiB,MAAM,IAAI,CAAC,wBAAwB,IAAI,MAAM,KAAK,qBAAqB,CAAC,EAAE;YAE9H,IAAI,OAAO,CAAC;YAEZ,IAAI,MAAM,KAAK,iBAAiB,EAAE;gBAChC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;aAC7B;YACD,IAAI,MAAM,KAAK,qBAAqB,EAAE;gBACpC,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC;aACzC;YAED,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACjD;KACF;IAuCO,2BAA2B;QACjC,MAAM,mBAAmB,GAAgB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,CAC1E,kBAAkB,CACnB,CAAC;QACF,mBAAmB,CAAC,KAAK,EAAE,CAAC;KAC7B;IAED,UAAU;QAER,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;YAC1C,KAAK,EAAE;gBACL,IAAI,EAAE;oBACJ,QAAQ,EAAE,MAAM;oBAChB,UAAU,EAAE,iCAAiC;oBAC7C,UAAU,EAAE,MAAM;oBAClB,aAAa,EAAE,aAAa;oBAC5B,UAAU,EAAE,KAAK;oBACjB,KAAK,EAAE,SAAS;oBAChB,eAAe,EAAE;wBACf,KAAK,EAAE,SAAS;qBACjB;oBACD,SAAS,EAAE,SAAS;iBACrB;aACF;SACF,CAAC,CAAC;QAGH,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3D,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,KAAK;YACvD,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YAC5D,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IAAI,KAAK,CAAC,KAAK,EAAE;gBACf,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;aAC3B;iBAAM;gBACL,GAAG,GAAG,EAAE,CAAC;aACV;YACD,IAAI,QAAQ,CAAC,sBAAsB,CAAC,aAAa,CAAC,EAAE;gBAClD,QAAQ,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,GAAG,CAAC;aACrE;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK;YACxC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC;YACtD,IAAI,KAAK,CAAC,KAAK,EAAE;gBAEf,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;gBAElH,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC;gBACtD,IAAI,CAAC,cAAc,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,CAAC;qBAC9E,IAAI,CAAC,CAAC,MAAM;oBACX,MAAM,kBAAkB,GAAG,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;oBACnE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;iBACjE,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;oBACd,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;iBACvB,CAAC,CAAC;aACN;SACF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAEf;;;;IAMD,kBAAkB,CAAC,KAAK;QAEtB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;QAElH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,QAAQ,EAAE,QAAQ;YAClB,oBAAoB,EAAE,WAAW;YACjC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa;YACrD,cAAc,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY;YACnD,aAAa,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,GAAG,EAAE;YACvC,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,IAAI,CAAC,SAAS;YAC5B,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE;YAChC,YAAY,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE;YACpC,gBAAgB,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,EAAE;SAC7C,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI;YAE5B,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;YAErC,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;;gBAGjC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBAE1H,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAClC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;iBACtC;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;oBACpC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,oBAAoB,EAAE,EAAE,CAAC;iBAChE;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE;;iBAEjC;gBAED,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;gBACrC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAEvC;iBAAM,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY,IAAI,IAAI,EAAE;gBACtD,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;aAC1C;SACF,CAAC,CAAC;KAEJ;IAED,gBAAgB,CAAC,UAAe,EAAE,cAAmB;QACnD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC1C,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACjC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;KAC1E;IAED,OAAO,CAAC,UAAe,EAAE,cAAmB;QAE1C,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAEhC,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;QAC5F,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACxG,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;QACxG,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAChG,IAAI,KAAK,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAChG,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAClH,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;QACxH,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAEpG,IAAI,IAAI,EAAE,MAAM,CAAC;QAEjB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,IAAI,OAAO,EAAE;YAC/D,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;YACnD,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;YACnD,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;SAClD;aAAM;YACL,IAAI,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;YAClG,MAAM,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;SACrG;QAED,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC1C,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACxC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACxC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAC9C,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACxC,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAC5C,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACzC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QACpC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACxC,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;QACxD,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9B,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAElC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;KACvE;IAED,uBAAuB,CAAC,EAAO;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9E,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAChC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QAClC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC;KACpF;IAED,WAAW,CAAC,UAAe;QAEzB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAEhC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,EAAE;gBAC3D,IAAI,CAAC,gBAAgB,GAAG,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,KAAK,CAAC;aACxG;SACF;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,IAAI,OAAO,GAAG,mBAAmB,UAAU,EAAE,GAAG,GAAG,IAAI,CAAC,OAAO,oBAAoB,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAEhK,IAAI,IAAI,CAAC,cAAc,IAAI,OAAO,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;YACnE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI;gBACxE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC;aACrC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;gBACjC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aACvC;iBAAM;gBACL,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,YAAY,CAAC;aACrC;SACF;QAED,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;YACpC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,oBAAoB,UAAU,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAChG;KACF;IAED,aAAa;;KAEZ;IAED,MAAM,mBAAmB,CAAC,EAAU;QAClC,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;KAC9B;IAED,KAAK,CAAC,EAAE;QACN,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;KACxD;IAED,WAAW,CAAC,IAAI;QAEd,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAErC,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAEhC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1E,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;SAClD;aAAM;YACL,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;SACvC;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU;YAChE,IAAI,UAAU,CAAC,MAAM,KAAK,IAAI,EAAE;gBAC9B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACxB;SACF,CAAC,CAAC;KACJ;IAED,kBAAkB,CAAC,MAAM,EAAE,QAAQ;QAEjC,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE;YACpC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gEAAgE,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;SACrJ;aAAM;;YAGL,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YAEnB,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAEvB,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC/F,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAA;YAE3F,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;YAElH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACjB,QAAQ,EAAE,aAAa;gBACvB,oBAAoB,EAAE,WAAW;gBACjC,OAAO,EAAE,QAAQ,CAAC,EAAE;gBACpB,aAAa,EAAE,YAAY,GAAG,WAAW,GAAG,IAAI,CAAC,SAAS;gBAC1D,YAAY,EAAE,IAAI,CAAC,SAAS;gBAC5B,cAAc,EAAE,CAAC,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAAE;gBAC9C,mBAAmB,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE;gBAChD,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC;gBACpD,OAAO,EAAE,WAAW;aACrB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI;gBAE5B,IAAI,IAAI,GAAQ,CAAC,CAAC;gBAElB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,IAAI,EAAE,kFAAkF,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;gBACvL,MAAM,MAAM,GAAG,WAAW,CAAC;;;;;oBAOzB,MAAM,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;oBAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,GAAG,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO;wBAE9D,IAAI,OAAO,CAAC,cAAc,KAAK,IAAI,EAAE;4BACnC,aAAa,CAAC,MAAM,CAAC,CAAC;4BACtB,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;4BACrC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;4BACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;yBAClC;6BAAM,IAAI,IAAI,KAAK,GAAG,IAAI,OAAO,CAAC,cAAc,KAAK,KAAK,EAAE;4BAC3D,aAAa,CAAC,MAAM,CAAC,CAAC;4BACtB,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;4BACrC,KAAK,CAAC,0FAA0F,CAAC,CAAC;4BAClG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;4BACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;4BAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC;yBAC3C;qBAEF,CAAC,CAAC;oBACH,IAAI,EAAE,CAAC;iBAER,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;aAErB,CAAC,CAAC;SAEJ;KACF;IAED,gBAAgB;QAEd,MAAM,MAAM,GAAG;YACb,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,IAAI;YACd,mBAAmB,EAAE,IAAI;SAC1B,CAAC;QAGF,MAAM,YAAY,GAAG;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QAC5H,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YAC1C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC5B,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK;YAE7C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAEzE,MAAM,SAAS,GAAW,KAAK,CAAC,GAAG,CAAC;YACpC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;YAEhK,IAAI,UAAkB,CAAC;YAEvB,UAAU,CAAC;gBACT,MAAM,GAAG,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;;gBAEnD,IAAI,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE;oBACxC,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC,EAAE,CAAC;iBAClC;qBAAM;oBACL,UAAU,GAAG,eAAe,CAAC;iBAC9B;gBAED,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACrE,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,kCAAkC,SAAS,EAAE,CAAC,CAAC;aACxE,EAAE,GAAG,CAAC,CAAC;YAER,UAAU,CAAC;gBACT,MAAM,QAAQ,GAAG,WAAW,CAAC,sBAAsB,EAAE,CAAC;aACvD,EAAE,GAAG,CAAC,CAAC;SAET,CAAC,CAAC;KACJ;IAED,MAAM,CAAC,CAAM;QACX,MAAM,CAAC,GAAG,CAAC,CAAC,aAAa,CAAC;QAC1B,MAAM,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3D,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;KAChC;IAED,aAAa;QAEX,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACxB,OAAO;SACR;;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC;KAEnD;IAED,qBAAqB,CAAC,MAAW;QAE/B,MAAM,uBAAuB,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;QACxF,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;QAEnC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAE3B,IAAI,uBAAuB,KAAK,cAAc,EAAE;YAC9C,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;YACrC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC5B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAE1B;aAAM;YAEL,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE1B,IAAI,uBAAuB,KAAK,QAAQ,IAAI,uBAAuB,KAAK,QAAQ,EAAE;gBAEhF,IAAI,uBAAuB,KAAK,QAAQ,EAAE;oBACxC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;oBAE/B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;wBAC3B,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;qBAC3B;oBAED,UAAU,CAAC;wBACT,IAAI,CAAC,MAAM,EAAE,CAAC;qBACf,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;iBACpB;gBACD,IAAI,uBAAuB,KAAK,QAAQ,EAAE;oBACxC,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;oBAC/B,IAAI,CAAC,aAAa,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;iBACjE;aAEF;iBAAM,IAAI,uBAAuB,KAAK,SAAS,EAAE;gBAChD,IAAI,UAAU,KAAK,KAAK,EAAE;oBACxB,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;oBAChC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oBACzB,CAAC,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;iBACzB;aACF;iBAAM;gBAEL,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,IAAI,CAAC,iBAAiB,IAAI,OAAO,MAAM,IAAI,CAAC,iBAAiB,KAAK,aAAa,IAAI,UAAU,IAAI,KAAK,CAAC,EAAE;oBAEnI,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;oBACpC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;oBAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;iBAC5B;gBAED,IAAI,uBAAuB,IAAI,SAAS,IAAI,IAAI,CAAC,iBAAiB,KAAK,SAAS,EAAE;oBAChF,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;oBAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;iBAC5B;gBAED,IAAI,uBAAuB,IAAI,OAAO,IAAI,IAAI,CAAC,iBAAiB,IAAI,OAAO,EAAE;oBAC3E,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;oBAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;oBAC3B,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;wBACjC,cAAc,EAAE,KAAK;qBACtB,CAAC,CAAC;;oBAIH,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE;wBACnD,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;qBAC1F;iBACF;gBAED,IAAI,uBAAuB,KAAK,KAAK,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,EAAE;oBACzE,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;oBAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;iBACzB;gBAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAEpC,IAAI,CAAC,uBAAuB,KAAK,KAAK,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;oBAC/F,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;iBAC1B;gBAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;aAC1B;SACF;;QAID,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;YAC7D,IAAI,GAAG,KAAK,uBAAuB,EAAE;gBACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;aAChC;iBAAM;gBACL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;aACjC;SACF;;QAID,IAAI,uBAAuB,IAAI,OAAO,IAAI,IAAI,CAAC,iBAAiB,IAAI,OAAO,IAAI,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YACtH,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SACnD;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,SAAS,CAAC,IAAI,EAAE,CAAC;SAClB;aAAM;YACL,SAAS,CAAC,IAAI,EAAE,CAAC;SAClB;QAED,IAAI,uBAAuB,KAAK,QAAQ,EAAE;YAExC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;gBACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;oBACtC,UAAU,CAAC;wBACT,IAAI,CAAC,UAAU,EAAE,CAAC;qBACnB,EAAE,GAAG,CAAC,CAAC;iBACT,CAAC,CAAC;aACJ;iBAAM;gBACL,UAAU,CAAC;oBACT,IAAI,CAAC,UAAU,EAAE,CAAC;iBACnB,EAAE,GAAG,CAAC,CAAC;aACT;SACF;KACF;IAED,MAAM,CAAC,IAAI,EAAE,KAAK;;;;;;;;;;;;;;;;;;;;;QA4BhB,MAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,IAAI,KAAK,GAAG,KAAK,CAAC;QAEhE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEzC,CAAC,CAAC,GAAG,GAAG,yCAAyC,GAAG,QAAQ,GAAG,aAAa,GAAG,SAAS,CAAC;QACzF,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;QACf,MAAM,CAAC,GAAG,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;;;;QAOhC,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE;YAE9C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC3C,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;aAC5D,CAAC,CAAC;SACJ;;;;QAMD,IAAI,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAEjE,IAAI,CAAC,UAAU,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,gBAAgB,MAAM,CAAC,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB,KAAK,QAAQ,CAAC,EAAE;YAEpJ,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAErC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC;gBACtC,UAAU,CAAC;oBAET,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;oBAEzE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAErD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;wBACvC,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY;wBAC5C,KAAK,EAAE,CAAC;gCACN,MAAM,EAAE,oCAAoC;6BAC7C,CAAC;qBACH,CAAC,CAAC;oBAEH,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;iBACvC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;aACpB,CAAC,CAAC;SACJ;;;;QAMD,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;YAEhD,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;YAEjF,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;gBACxC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,OAAO,EAAE;oBACpC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAA;iBAC3I;aACF;YAED,IAAI,aAAa,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAE;gBAC7C,IAAI,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,KAAK,EAAE;oBACnD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;iBAC1B;aACF;SACF;QAED,QAAQ,IAAI,CAAC,iBAAiB;YAC5B,KAAK,SAAS;gBACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAC9B,MAAM;YACR,KAAK,aAAa;gBAChB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBAClC,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gBAC7B,UAAU,CAAC;oBACT,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;iBAChC,EAAE,GAAG,CAAC,CAAC;gBACR,MAAM;YACR,KAAK,eAAe;gBAClB,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;gBAC/B,MAAM;YACR,KAAK,QAAQ;gBACX,UAAU,CAAC;oBACT,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;iBAChC,EAAE,GAAG,CAAC,CAAC;gBACR,MAAM;SACT;KACF;IAED,oBAAoB,CAAC,KAAU;QAE7B,IAAI,KAAK,CAAC,UAAU,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,WAAW,EAAE;YAC/D,IAAI,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE;gBAC7C,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,iBAAiB,CAAC;aAC5C;SACF;;QAGD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iCAAiC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;KAErF;IAED,aAAa,CAAC,IAAS,EAAE,EAAO;QAC9B,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAW,CAAC;QAC7E,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,QAAQ,GAAG,CAAC,CAAC;QACnC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACtE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;QAE3E,MAAM,IAAI,GAAG;YACX,WAAW,EAAE,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;YACvD,SAAS,EAAE,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC;YACrD,MAAM,EAAE,aAAa;YACrB,iBAAiB,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE;YAC7F,eAAe,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE;YAC3F,sBAAsB,EAAE,eAAe,GAAG,CAAC;SAC5C,CAAC;QAEF,OAAO,IAAI,CAAC;KACb;IAED,iBAAiB,CAAC,iBAAiB,EAAE,gBAAgB;QACnD,MAAM,QAAQ,GAAG,EAAE,CAAC;QACpB,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,OAAO,EAAE,IAAI;YACtF,OAAO,IAAI,gBAAgB,GAAG,IAAI,CAAC,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,kBAAkB,GAAG,YAAY,GAAG,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;YACvL,OAAO,OAAO,CAAC;SAChB,EAAE,EAAE,CAAC,CAAC;QACP,iBAAiB,CAAC,QAAQ,GAAG,KAAK,CAAC;QACnC,iBAAiB,CAAC,SAAS,GAAG,mBAAmB,CAAC;KACnD;IAED,oBAAoB,CAAC,MAAM,EAAE,QAAQ;QAEnC,IAAI,MAAM,KAAK,GAAG,EAAE;YAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;YACzD,IAAI,QAAQ,CAAC,aAAa,CAAC,6BAA6B,CAAC,IAAI,IAAI,EAAE;gBACjE,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACtD,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;gBACtD,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;gBAC7C,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACpD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;aACjC;iBAAM;gBACL,MAAM,mBAAmB,GAAQ,QAAQ,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC;gBACvF,mBAAmB,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5C;YAED,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;YAElH,WAAW,CAAC,eAAe,CAAC;gBAC1B,KAAK,EAAE,MAAM,EAAE;gBACf,QAAQ,EAAE,WAAW;aACtB,EAAE,kBAAkB,CAAC,CAAC;SAExB;KACF;IACD,qBAAqB,CAAC,KAAK;QACzB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC1B,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;gBACnB,WAAW,CAAC,gBAAgB,CAAC;oBAC3B,KAAK,EAAE,GAAG;iBACX,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aAC1C;SACF;aAAM;YACL,UAAU,CAAC;gBACT,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE;oBACnB,WAAW,CAAC,gBAAgB,CAAC;wBAC3B,KAAK,EAAE,GAAG;qBACX,EAAE,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC1C;aACF,EAAE,GAAG,CAAC,CAAC;SACT;KACF;IAED,MAAM;QAEJ,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;QAE1D,MAAM,CAAC,OAAO,CAAC;YACb,WAAW,EAAE,UAAU,IAAI,EAAE,OAAO;gBAElC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;gBAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,KAAK,CAAC;gBACvE,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,WAAW,GAAG,eAAe,CAAC,CAAC;gBAEnI,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC1B,cAAc,EAAE,CAAC;4BACf,MAAM,EAAE;gCACN,eAAe,GAAG,UAAU,IAAI,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;gCACtD,OAAO,EAAE,WAAW;6BACrB;yBACF,CAAC;iBACH,CAAC,CAAC;aACJ,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,SAAS,EAAE,UAAU,IAAI,EAAE,OAAO;gBAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;aACpC,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,QAAQ,EAAE,UAAU,GAAG;gBACrB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;oBAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;oBACrC,IAAI,QAAQ,EAAE;wBACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ;4BAChE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;yBACjD,CAAC,CAAC;qBACJ;iBACF;gBACD,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,+EAA+E,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aACpK,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,UAAU,GAAG;gBACpB,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;oBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;oBACrC,IAAI,QAAQ,EAAE;wBACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ;4BAChE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;yBACjD,CAAC,CAAC;qBACJ;iBACF;gBACD,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,+EAA+E,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aACpK,CAAC,IAAI,CAAC,IAAI,CAAC;SACb,CAAC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;KACvC;IAED,YAAY;QACV,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;QAE/C,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG;YACvB,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,YAAY;iBACnE,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE;gBACrF,MAAM,GAAG,KAAK,CAAC;aAChB;SACF,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,EAAE;YACX,KAAK,CAAC,sDAAsD,CAAC,CAAC;SAC/D;QACD,OAAO,MAAM,CAAC;KACf;IAED,WAAW;QAET,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,SAAS,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;QAEhC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChD,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChD,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAErD,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;QAChC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;YACnB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;SACvB;;QAGD,IAAI,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAE/C,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACvC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACzD,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;YACjC,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;SACpE;QAED,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC;QAE5E,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,EAAE;YAChC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;SACpF;aAAM;YACL,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;SACxD;QAED,IAAI,IAAI,CAAC,cAAc,IAAI,KAAK,EAAE;YAEhC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC;YACvE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC;YACjF,QAAQ,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC;YACrF,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC;YAC/F,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC;YAC/E,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC;YACvF,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC;YAC/F,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,KAAK,CAAC,CAAC;SAE9F;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,GAAQ;YACjC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjC,QAAQ,CAAC,MAAM,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACrF,CAAC,CAAC;QAEH,MAAM,eAAe,GAAG,QAAQ,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;QACvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,IAAI,EAAE,GAAI,eAAe,CAAC,CAAC,CAAsB,CAAC,KAAK,CAAC;YACxD,QAAQ,CAAC,GAAG,CAAC,2BAA2B,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SACnD;;;;;;;QASD,OAAO,QAAQ,CAAC;KACjB;;;;IAMD,eAAe,CAAC,iBAAsB,EAAE,IAAI,GAAG,IAAI,EAAE,OAAO,GAAG,IAAI;QAEjE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,iBAAiB,EAAE;YACrB,iBAAiB,GAAG,iBAAiB,CAAC,WAAW,EAAE,CAAC;SACrD;QAED,IAAI,iBAAiB,KAAK,OAAO,IAAI,iBAAiB,KAAK,KAAK,EAAE;YAEhE,IAAI,QAAQ,GAAG,CAAC,CAAC;;;;;;;;;;;;;;;YAkBjB,IAAI,YAAY,GAAG;gBACjB,QAAQ,EAAE,QAAQ;gBAClB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;gBACjC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;gBACjC,UAAU,EAAE,GAAG;gBACf,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW;gBACjC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;gBACrB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe;gBACrC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa;gBACjC,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa;gBAC9C,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU;gBACxC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC,kBAAkB;gBACxD,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW;gBAC1C,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa;aAC/C,CAAA;YAGD,IAAI,iBAAiB,KAAK,OAAO,EAAE;gBAEjC,YAAY,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC;gBAEjC,MAAM,UAAU,GAAG;oBACjB,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK;oBAC3D,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK;oBAClE,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK;oBAC7D,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,KAAK;oBACpD,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC;oBAC1E,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK;oBACxD,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;iBAClE,CAAA;gBACD,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;aACzC;YAED,IAAI,iBAAiB,KAAK,KAAK,EAAE;gBAC/B,YAAY,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;aAChC;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YAC3C,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAExC,IAAI,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;gBAChD,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC9C,YAAY,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;aACrC;YAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI;gBAC1D,IAAI,IAAI,CAAC,MAAM,EAAE;oBACf,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;oBAItC,IAAI,YAAY,GAAG,kFAAkF,CAAC;oBACtG,IAAI,aAAa,GAAG,oBAAoB,CAAC;oBACzC,IAAI,QAAQ,GAAG,IAAI,CAAC;oBACpB,IAAI,EAAE,GAAG,KAAK,CAAC;oBAEf,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;oBACtD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACxB,IAAI,MAAM,GAAG,SAAS,CAAC;oBAEvB,IAAI,iBAAiB,KAAK,KAAK,IAAI,UAAU,EAAE;wBAE7C,IAAI,UAAU,KAAK,WAAW,EAAE;4BAC9B,aAAa,GAAG,kBAAkB,CAAC;4BACnC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;4BACjC,QAAQ,GAAG,KAAK,CAAC;4BACjB,EAAE,GAAG,KAAK,CAAC;yBACZ;wBAED,IAAI,UAAU,KAAK,WAAW,EAAE;4BAC9B,aAAa,GAAG,aAAa,CAAC;4BAC9B,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;4BACtE,QAAQ,GAAG,KAAK,CAAC;4BACjB,EAAE,GAAG,IAAI,CAAC;yBACX;wBAED,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;qBAE9B;oBAED,MAAM,WAAW,GAAG;wBAClB,MAAM,EAAE,MAAM;wBACd,KAAK,EAAE,aAAa;wBACpB,IAAI,EAAE,YAAY;wBAClB,EAAE,EAAE,KAAK;wBACT,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,QAAQ;wBAClB,EAAE,EAAE,EAAE;qBACP,CAAA;oBAED,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAChC,WAAW,CACZ,CAAC;oBAGF,IAAI,iBAAiB,KAAK,KAAK,EAAE;wBAC/B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBAClC;yBAAM;wBACL,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBACtC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;wBAE5B,IAAI,UAAU,KAAK,WAAW,EAAE;4BAE9B,IAAI,IAAI,GAAQ,CAAC,CAAC;4BAClB,MAAM,MAAM,GAAG,WAAW,CAAC;gCAEzB,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;gCAChC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gCAC/C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI;oCAEvD,IAAI,IAAI,CAAC,MAAM,EAAE;wCAEf,aAAa,CAAC,MAAM,CAAC,CAAC;wCACtB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,6CAA6C,IAAI,CAAC,UAAU,EAAE,CAAC;qCAEvF;yCAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,OAAO,EAAE;wCAC1C,aAAa,CAAC,MAAM,CAAC,CAAC;wCACtB,KAAK,CAAC,uGAAuG,CAAC,CAAC;qCAChH;iCACF,CAAC,CAAC;gCACH,IAAI,EAAE,CAAC;6BACR,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;yBACrB;qBAEF;iBAEF;qBAAM;oBAEL,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBACtC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;;oBAI5B,IAAI,aAAa,GAAG,EAAE,CAAC;oBAEvB,IAAI,IAAI,CAAC,UAAU,KAAK,sBAAsB,EAAE;wBAC9C,aAAa,GAAG,yBAAyB,CAAC;qBAC3C;yBAAM;wBACL,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;qBACjC;oBAED,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC;wBACjC,KAAK,EAAE,oBAAoB;wBAC3B,IAAI,EAAE,aAAa;wBACnB,EAAE,EAAE,KAAK;wBACT,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,QAAQ,EAAE,IAAI;qBACf,CAAC,CAAC;;iBAEJ;aACF,CAAC,CAAC;SACJ;QAED,IAAI,iBAAiB,KAAK,aAAa,EAAE;YACvC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACnG,WAAW,CAAC,YAAY,EAAE,CAAC;SAC5B;QAED,IAAI,iBAAiB,KAAK,QAAQ,EAAE;YAClC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAElH,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAEtC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mCAAmC,EAAE,IAAI,EAAE,kFAAkF,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvL,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAU,OAAO;gBACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACjB,QAAQ,EAAE,QAAQ;oBAClB,SAAS,EAAE,IAAI,CAAC,OAAO;oBACvB,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ;oBACjC,WAAW,EAAE,IAAI,CAAC,SAAS;oBAC3B,YAAY,EAAE,UAAU;iBACzB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU;oBAElC,IAAI,IAAI,GAAQ,CAAC,CAAC;oBAElB,IAAI,UAAU,CAAC,UAAU,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW,EAAE;wBACtE,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;wBACrC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBAClC;yBAAM;wBACL,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,CAAC;wBACrC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBACtC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,6EAA6E,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC5L;iBACF,CAAC,CAAC;aACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;SAEf;QAED,IAAI,iBAAiB,KAAK,SAAS,EAAE;YAEnC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;YAE9E,MAAM,IAAI,GAAG,gGAAgG,CAAC;YAE9G,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACtC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,oBAAoB,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvI,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;gBAC3B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;aAC5D;YACD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC9C;QAED,IAAI,iBAAiB,KAAK,QAAQ,EAAE;YAClC,UAAU,CAAC;gBACT,MAAM,cAAc,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,CAAC;gBAE9C,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE;oBAC9C,IAAI,EAAE,cAAc;iBACrB,CAAC,CAAC,IAAI,CAAC,UAAU,MAAM;oBACtB,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;iBACvC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM;oBACzB,IAAI,MAAM,CAAC,KAAK,EAAE;wBAChB,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;wBAC1D,UAAU,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;qBAC/C;iBACF,CAAC,CAAC;aACJ,EAAE,GAAG,CAAC,CAAC;SACT;KACF;IAED,YAAY;QACV,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,oBAAoB,CAAqB,CAAC;QAC/E,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAED,QAAQ,CAAC,IAAS,EAAE,OAAY,EAAE,SAAkB;QAElD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,SAAS,KAAK,IAAI,EAAE;YAEtB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE;gBAC7D,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;aACrG;YAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;iBAClE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC;gBAC1D,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,EAAE;gBAE7E,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;oBAErE,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;oBACzD,IAAI,OAAO,KAAK,WAAW,EAAE;wBAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;qBACzB;iBACF;gBAED,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;oBACzC,IAAI,UAAU,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,CAAC;oBACxC,IAAI,cAAc,GAAG,CAAC,CAAC,iBAAiB,CAAC,CAAC,GAAG,EAAE,CAAC;oBAChD,IAAI,CAAC,aAAa,GAAG;wBACnB,UAAU,EAAE,UAAU,CAAC,MAAM,IAAI,CAAC,GAAG,KAAK,GAAG,IAAI;wBACjD,cAAc,EAAE,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU;4BACvE,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,KAAK,GAAG,IAAI;qBAC3E,CAAA;iBACF;gBAED,IAAI,IAAI,CAAC,kBAAkB,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;oBAErD,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,EAAE;wBAC5D,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,yCAAyC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC7J;yBAAM;wBAEL,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;4BACnF,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,6CAA6C,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;4BACnK,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;4BAC3C,IAAI,CAAC,2BAA2B,EAAE,CAAC;yBACpC;qBACF;iBACF;gBAED,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;oBACxG,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;wBAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;wBACtB,OAAO;qBACR;iBACF;qBAAM;oBAEL,IAAI,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE;qBACrD;yBAAM;wBACL,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;wBACzB,OAAO;qBACR;iBACF;aACF;YAED,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;gBAEvB,IAAI,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE;oBACjC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;iBACrG;gBAED,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,KAAK,cAAc,EAAE;oBAE/D,IAAI,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE;wBACpG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;wBAC1B,KAAK,CAAC,uBAAuB,CAAC,CAAC;qBAChC;yBAAM;wBACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;;qBAE1B;iBACF;qBAAM;oBAEL,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAErC,IAAI,IAAI,CAAC,iBAAiB,EAAE;wBAE1B,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,IAAI,CAAC,iBAAiB,GAAG,kBAAkB,CAAC,CAAC;wBAE1G,IAAI,IAAI,CAAC,iBAAiB,KAAK,OAAO,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,EAAE;4BAC1E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;4BACrC,IAAI,QAAQ,EAAE;gCACZ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;6BAC7D;yBACF;6BAAM;4BACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC/B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;4BACpD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;yBAC7D;qBACF;yBAAM;wBAEL,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;wBACrC,IAAI,QAAQ,EAAE;4BACZ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ;gCACrE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;gCAC1D,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;gCAE/B,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE;oCAC5B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;oCAC1B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;oCACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;oCAClD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;iCAE1D;qCAAM;oCACL,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;iCACjG;6BACF,CAAC,CAAC;yBACJ;qBACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA6KF;aACF;iBAAM;gBACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,yCAAyC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;aAC9H;SACF;KACF;;IAED,YAAY,CAAC,CAAC;QAEZ,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAElC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;QACnD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAE3E,MAAM,WAAW,GAAG;YAClB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE;YAC/B,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE;YACjC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE;YAChC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE;SAChC,CAAA;QAED,IAAI,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,cAAc,CAAC;QAEnB,IAAI,UAAU,EAAE;YACd,cAAc,GAAG,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC;SAClD;aAAM;YACL,cAAc,GAAG,eAAe,CAAC;SAClC;;QAID,IAAI,cAAc,CAAC;;;;;;;QASnB,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,GAAG,EAAE;YAClC,cAAc,GAAG,CAAC,CAAC;SACpB;QACD,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,GAAG,EAAE;YAClC,cAAc,GAAG,EAAE,CAAC;SACrB;QAED,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;YACvC,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB;gBACE,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,GAAG,OAAO,QAAQ,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE;aACzG,CAAC,CAAC;SACN;QAED,IAAI,UAAU,EAAE;YACd,UAAU,CAAC;gBACT,MAAM,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;gBACxD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC9B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;aACvC,EAAE,GAAG,CAAC,CAAC;SACT;KACF;IAED,UAAU;QACR,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC/C,aAAa,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YACxC,MAAM,EAAE,CAAC,EAAE,CAAC;YACZ,WAAW,EAAE,CAAC,EAAE,CAAC;YACjB,aAAa,EAAE,CAAC,EAAE,CAAC;YACnB,kBAAkB,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACxD,UAAU,EAAE,CAAC,EAAE,CAAC;YAChB,cAAc,EAAE,CAAC,EAAE,CAAC;YACpB,kBAAkB,EAAE,CAAC,EAAE,CAAC;YACxB,iBAAiB,EAAE,CAAC,EAAE,CAAC;SACxB,CAAC,CAAC;KACJ;IAED,eAAe,CAAC,IAAa;QAC3B,MAAM,SAAS,GAAG,CAAC,QAAQ,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,YAAY,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,CAAC,CAAC;QAC9J,SAAS,CAAC,OAAO,CAAC,OAAO;YAEvB,IAAI,IAAI,EAAE;gBAER,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC7E,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,sBAAsB,EAAE,CAAA;aAEnE;iBAAM;gBACL,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,CAAC;gBAC5D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,sBAAsB,EAAE,CAAA;aACnE;SACF,CAAC,CAAC;KACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAsCD,mBAAmB,CAAC,GAAG;QACrB,IAAI,GAAG,EAAE;YACP,GAAG,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YACxD,IAAI,UAAU,IAAI,GAAG,EAAE;gBACrB,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;aAC9C;SACF;QACD,OAAO,GAAG,CAAC;KACZ;IAED,WAAW;QACT,IAAI,IAAI,CAAC,iBAAiB,EAAE;;SAE3B;KACF;IAED,mBAAmB,CAAC,MAAc,EAAE,SAAiB,EAAE,EAAE,OAAe,KAAK;QAE3E,IAAI,QAAQ,GAAQ,KAAK,CAAC;QAE1B,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE;YAC1G,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;gBACtB,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;aACvC;iBAAM;gBACL,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aAC/B;SAEF;aAAM;YACL,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACvC,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAChD;SACF;QAED,IAAI,MAAM,KAAK,YAAY,EAAE;YAAE,QAAQ,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAA;SAAE;QAAA,CAAC;QAChE,OAAO,QAAQ,CAAC;KACjB;IAED,QAAQ,CAAC,CAAC;QACR,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ;SACvE,CAAC,CAAC;KACJ;IAED,qBAAqB,CAAC,GAAQ;;QAE5B,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5D,OAAO,WAAW,CAAC;KACpB;IAED,QAAQ;QAEN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACpC,UAAU,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,QAAQ,CAAC;SAC/C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QAG5C,IAAI,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,EAAE;YACpG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B;;QAID,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAExI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,4CAA4C,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI;YAC3F,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,KAAK,GAAG,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;SACrH,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI;YAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;SAC3C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI;YAE9D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YAClB,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;;YAI9E,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;YAE9C,IAAI,IAAI,CAAC,SAAS,EAAE;gBAElB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAClB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;gBAEtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAE1E,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBACjD,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC7C,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBACxC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;gBAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;gBAC/D,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;gBAC/C,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC;;gBAIxD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;oBACvC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,4CAA4C,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI;wBAC3F,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;wBAClD,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;qBAC7C,CAAC,CAAC;iBACJ;gBAED,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;oBACvC,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;wBACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;wBACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;qBACjC;oBAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;oBAEzC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE;wBAE5D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC;wBAEhE,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;4BACvD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC;yBAChD;qBACF;iBACF;gBAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;oBAC3B,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;oBACtC,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;oBAE1D,QAAQ,UAAU;wBAChB,KAAK,KAAK;4BACR,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;4BAClC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;4BAC9B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;4BAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;4BACtB,MAAM;wBACR,KAAK,KAAK;4BACR,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;4BAC9B,MAAM;wBACR;4BACE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;qBAChC;iBACF;qBAAM;oBAEL,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;oBAEvC,IAAI,IAAI,CAAC,iBAAiB,KAAK,eAAe,EAAE;wBAC9C,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;wBACnC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;qBACjC;oBAED,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBAEnF,QAAQ,IAAI,CAAC,iBAAiB;wBAC5B,KAAK,OAAO;4BACV,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;4BAC5B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gCACxB,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;6BAChC;4BACD,MAAM;wBACR,KAAK,KAAK;4BACR,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;4BACxB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gCACxB,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC;6BAChC;4BACD,MAAM;qBACT;iBACF;gBAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,WAAW,EAAE;oBAC1E,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE;wBAClD,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;qBACtD;iBACF;gBAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;oBACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;iBAClD;aAEF;iBAAM;;gBAIL,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI;oBAEjD,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;;wBAIrE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;wBAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;wBAEjC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;4BAC3C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;yBAC3O;6BAAM;4BACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;yBAC3E;wBAED,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;wBACjD,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;wBAC7C,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;wBAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;wBACxC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;wBAClC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;wBAC/D,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC;wBAC/C,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC;;wBAIxD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;4BACvC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;4BAC5C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,4CAA4C,YAAY,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI;gCAC3F,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;gCAClD,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;6BAC7C,CAAC,CAAC;yBACJ;wBAED,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,WAAW,CAAC,EAAE;4BAC9F,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;yBACjD;wBAED,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;4BACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;yBACjC;wBAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;wBAE1C,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;4BAEvC,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;gCACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;6BACxC;4BAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;4BAEzC,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE;gCAC5D,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,iBAAiB,CAAC;gCAChE,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;oCACvD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC;iCAChD;6BACF;yBACF;wBAED,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;4BAE3B,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;4BACtC,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;4BAE1D,QAAQ,UAAU;gCAChB,KAAK,KAAK;oCACR,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;oCAClC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;oCAC9B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oCAC9B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;oCAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oCACtB,MAAM;gCACR,KAAK,KAAK;oCACR,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;oCAC9B,MAAM;gCACR;oCACE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;6BAChC;;;;;;;;;yBAWF;6BAAM;4BAEL,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;4BAEvC,IAAI,IAAI,CAAC,iBAAiB,KAAK,eAAe,EAAE;gCAC9C,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;gCACnC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;6BACjC;;4BAID,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;4BAEnF,QAAQ,IAAI,CAAC,iBAAiB;gCAC5B,KAAK,SAAS;oCACZ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oCAC9B,MAAM;gCACR,KAAK,aAAa;oCAChB,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;oCAClC,MAAM;gCACR,KAAK,QAAQ;oCACX,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;oCAC7B,MAAM;gCACR,KAAK,eAAe;oCAClB,MAAM;gCACR,KAAK,QAAQ,CAAC;6BACf;yBACF;wBAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,WAAW,EAAE;4BAC1E,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,mBAAmB,CAAC,EAAE;gCAClD,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;6BACtD;yBACF;wBAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;4BACvC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;yBAClD;wBAED,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;wBACnE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,sCAAsC,GAAG,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI;4BAEpF,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;gCAExB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gCAC9B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;gCAC7B,IAAI,CAAC,eAAe,GAAG;oCACrB,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,aAAa;oCACjD,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB;oCACtD,UAAU,EAAE,IAAI,CAAC,iBAAiB,CAAC,mBAAmB;iCACvD,CAAC;6BACH;iCAAM;gCACL,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;6BAC/B;4BAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;gCACb,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oCAChD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;oCAChB,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAA;iCAC3B,CAAC,CAAC;6BACJ;yBACF,CAAC,CAAC;qBACJ;iBACF,CAAC,CAAC;aACJ;SAEF,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KAExB;IAED,eAAe;QACb,UAAU,CAAC,CAAC,CAAM,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,SAAS,CACvF,IAAI;YACF,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,SAAS,CACpE,IAAI;gBACF,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;aACtC,EACD,KAAK;gBACH,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;aACzB,CAAC,CAAC;SACN,EACD,KAAK,MAAM,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CACtC,CAAC,CAAC;KACJ;IAED,WAAW;QACT,MAAM,SAAS,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC;QACnC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;;oHAvhEU,uBAAuB;wGAAvB,uBAAuB,qWC3CpC,gkmDAijBM;2FDtgBO,uBAAuB;kBALnC,SAAS;+BACE,qBAAqB;mYAUtB,QAAQ;sBAAhB,KAAK;gBACG,IAAI;sBAAZ,KAAK;gBAoBgC,mBAAmB;sBAAxD,SAAS;uBAAC,qBAAqB;gBAML,0BAA0B;sBAApD,SAAS;uBAAC,UAAU;;;MEtCV,oBAAoB;IACxB,OAAO,OAAO,CAAC,MAA4B;QAChD,OAAO;YACL,QAAQ,EAAE,oBAAoB;YAC9B,SAAS,EAAE;gBACT,EAAE,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,EAAE;gBACnD,kBAAkB;gBAClB,mBAAmB;gBACnB,UAAU;gBACV,iBAAiB;aAClB;SACF,CAAC;KACH;IAEM,OAAO,QAAQ;QACpB,OAAO;YACL,QAAQ,EAAE,oBAAoB;SAC/B,CAAC;KACH;;iHAlBU,oBAAoB;kHAApB,oBAAoB,iBApBhB,uBAAuB,EAAE,qBAAqB,EAAE,eAAe,EAAE,mBAAmB,aAGjG,YAAY;QACZ,gBAAgB;QAChB,WAAW;QACX,mBAAmB,uEALX,uBAAuB,EAAC,mBAAmB;kHAmB1C,oBAAoB,aATpB;QACT,kBAAkB;QAClB,mBAAmB;QACnB,UAAU;QACV,iBAAiB;QACjB,iBAAiB;KAClB,YAfQ;YACP,YAAY;YACZ,gBAAgB;YAChB,WAAW;YACX,mBAAmB;YACnB,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;YACxB,gBAAgB,CAAC,OAAO,EAAE;YAC1B,WAAW,CAAC,OAAO,EAAE;SACtB;2FAUU,oBAAoB;kBArBhC,QAAQ;mBAAC;oBACR,YAAY,EAAE,CAAC,uBAAuB,EAAE,qBAAqB,EAAE,eAAe,EAAE,mBAAmB,CAAC;oBACpG,OAAO,EAAE,CAAC,uBAAuB,EAAC,mBAAmB,CAAC;oBACtD,OAAO,EAAE;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,WAAW;wBACX,mBAAmB;wBACnB,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;wBACxB,gBAAgB,CAAC,OAAO,EAAE;wBAC1B,WAAW,CAAC,OAAO,EAAE;qBACtB;oBACD,SAAS,EAAE;wBACT,kBAAkB;wBAClB,mBAAmB;wBACnB,UAAU;wBACV,iBAAiB;wBACjB,iBAAiB;qBAClB;iBACF;;;ACpCD;;;;;;"}