{"version":3,"file":"c8y-ngx-components-ecosystem-license-confirm.mjs","sources":["../../ecosystem/license-confirm/license-view.component.ts","../../ecosystem/license-confirm/license-view.component.html","../../ecosystem/license-confirm/license-confirm-modal.component.ts","../../ecosystem/license-confirm/license-confirm-modal.component.html","../../ecosystem/license-confirm/license-confirm.module.ts","../../ecosystem/license-confirm/c8y-ngx-components-ecosystem-license-confirm.ts"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\nimport { FetchClient } from '@c8y/client';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport { IconDirective, C8yTranslateDirective, C8yTranslatePipe } from '@c8y/ngx-components';\nimport { NgIf } from '@angular/common';\n\n@Component({\n  selector: 'c8y-license-view',\n  templateUrl: './license-view.component.html',\n  imports: [NgIf, IconDirective, C8yTranslateDirective, C8yTranslatePipe]\n})\nexport class LicenseViewComponent implements OnInit {\n  @Input()\n  url: string;\n  @Input()\n  name: string;\n  content: string = gettext('Loading license content…');\n\n  FALL_BACK_URL = 'https://spdx.org/licenses/';\n\n  constructor(private fetchClient: FetchClient) {}\n\n  async ngOnInit() {\n    const response = await this.fetchClient.fetch(this.url);\n    if (response.status === 200) {\n      this.content = await response.text();\n      return;\n    }\n    this.content = '';\n  }\n}\n","<ng-container *ngIf=\"content\">\n  <a [href]=\"url\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"small pull-right\">\n    <i c8yIcon=\"external-link\" class=\"m-r-4\"></i>\n    <span translate>Open in new window</span>\n  </a>\n  <textarea\n    [attr.aria-label]=\"'License' | translate\"\n    class=\"form-control bg-level-1 text-monospace small m-b-16\"\n    readonly\n    style=\"height: 170px\"\n    [textContent]=\"content\"\n  ></textarea>\n</ng-container>\n\n<div class=\"alert alert-warning\" role=\"alert\" *ngIf=\"!content && name\">\n  <strong translate>No license attached</strong>\n  <p translate>\n    The author of the package hasn't included a license file in a format that can be displayed.\n    Verify the license online, for example, with a website like:\n  </p>\n  <a [href]=\"FALL_BACK_URL + name\" target=\"_blank\" rel=\"noopener noreferrer\">\n    {{ FALL_BACK_URL }}{{ name }}\n  </a>\n</div>\n\n<div class=\"alert alert-danger\" role=\"alert\" *ngIf=\"!content && !name\">\n  <strong translate>No license found</strong>\n  <p translate>\n    There is no license attached to this package. You can continue installing it at your own risk.\n  </p>\n</div>\n","import { Component, OnInit, ViewChild } from '@angular/core';\nimport {\n  FormBuilder,\n  FormGroup,\n  Validators,\n  FormsModule,\n  ReactiveFormsModule\n} from '@angular/forms';\nimport { gettext } from '@c8y/ngx-components/gettext';\nimport {\n  C8yStepper,\n  OptionsService,\n  WizardComponent,\n  WizardHeaderComponent,\n  IconDirective,\n  C8yTranslateDirective,\n  WizardBodyComponent,\n  FormGroupComponent,\n  RequiredInputPlaceholderDirective,\n  MessagesComponent,\n  MessageDirective,\n  WizardFooterComponent,\n  C8yStepperButtons,\n  C8yTranslatePipe\n} from '@c8y/ngx-components';\nimport { uniqBy } from 'lodash-es';\nimport { LicensedApplicationPlugin } from '@c8y/ngx-components/ecosystem/shared';\nimport { TranslateService } from '@ngx-translate/core';\n\nimport { CdkStep } from '@angular/cdk/stepper';\nimport { NgIf, NgFor } from '@angular/common';\nimport { LicenseViewComponent } from './license-view.component';\n\ninterface ConfirmInstallModal {\n  pluginsToInstall: LicensedApplicationPlugin[];\n}\n\ninterface License {\n  licenseName: string;\n  url: string;\n  appName: string;\n}\n\n@Component({\n  selector: 'c8y-license-confirm-modal',\n  templateUrl: './license-confirm-modal.component.html',\n  imports: [\n    WizardHeaderComponent,\n    IconDirective,\n    C8yTranslateDirective,\n    WizardBodyComponent,\n    C8yStepper,\n    CdkStep,\n    FormGroupComponent,\n    FormsModule,\n    ReactiveFormsModule,\n    RequiredInputPlaceholderDirective,\n    MessagesComponent,\n    MessageDirective,\n    NgIf,\n    WizardFooterComponent,\n    C8yStepperButtons,\n    NgFor,\n    LicenseViewComponent,\n    C8yTranslatePipe\n  ]\n})\nexport class LicenseConfirmModalComponent implements OnInit {\n  formGroupAccept: FormGroup;\n  formGroupLicenses: FormGroup;\n  @ViewChild(C8yStepper, { static: true })\n  stepper: C8yStepper;\n  licenses: License[] = [];\n  disclaimerHtml: string;\n\n  constructor(\n    private wizardComponent: WizardComponent<ConfirmInstallModal>,\n    private fb: FormBuilder,\n    private optionsService: OptionsService,\n    private translateService: TranslateService\n  ) {}\n\n  ngOnInit(): void {\n    const { pluginsToInstall } = this.wizardComponent.componentInitialState;\n\n    this.formGroupAccept = this.fb.group({\n      confirmed: [false, Validators.required]\n    });\n\n    this.formGroupLicenses = this.fb.group({\n      acceptAll: [false, Validators.required]\n    });\n\n    const allLicenses: License[] = pluginsToInstall.map(app => ({\n      appName: app.name,\n      url: `/apps/${app.contextPath}@${app.version}/LICENSE.txt`,\n      licenseName: app.license\n    }));\n\n    const uniqByUrl = (uniqBy(allLicenses, 'url') as License[]).map(license => ({\n      ...license,\n      pluginName: allLicenses\n        .filter(({ url }) => url === license.url)\n        .map(({ appName: pluginName }) => pluginName)\n        .join(', ')\n    }));\n\n    const companyName = this.optionsService.get('companyName', 'Cumulocity');\n    const disclaimerHtmlWithCompany = gettext(\n      'These plugins and/or blueprints are provided <strong>as-is and without warranty or support</strong>, and they do not constitute part of the {{ companyName }} product suite. Users are free to use subject to the license agreement.'\n    );\n    const disclaimerHtmlWithoutCompany = gettext(\n      'These plugins and/or blueprints are provided <strong>as-is and without warranty or support</strong>, and they do not constitute part of the product suite. Users are free to use subject to the license agreement.'\n    );\n\n    this.disclaimerHtml = this.translateService.instant(\n      companyName ? disclaimerHtmlWithCompany : disclaimerHtmlWithoutCompany,\n      {\n        companyName\n      }\n    );\n\n    this.licenses = uniqByUrl;\n  }\n\n  cancel() {\n    this.wizardComponent.close(false);\n  }\n\n  done() {\n    this.wizardComponent.close(true);\n  }\n}\n","<c8y-wizard-header>\n  <i c8yIcon=\"privacy-policy\"></i>\n  <div\n    class=\"modal-title h4\"\n    id=\"modal-title\"\n    translate\n  >\n    Accept license(s)`dialog title`\n  </div>\n</c8y-wizard-header>\n<c8y-wizard-body>\n  <div class=\"m-t-16 m-l-32 m-r-32\">\n    <c8y-stepper>\n      <cdk-step\n        [stepControl]=\"formGroupAccept\"\n        [label]=\"'Disclaimer' | translate\"\n      >\n        <div class=\"m-t-8\">\n          <div class=\"text-center m-b-16 h4\">\n            <i\n              class=\"text-info d-block icon-40 m-b-8\"\n              c8yIcon=\"info-circle\"\n            ></i>\n            {{ 'About community packages' | translate }}\n          </div>\n          <p\n            class=\"m-b-16\"\n            [innerHTML]=\"disclaimerHtml\"\n          ></p>\n          <hr style=\"margin: 16px -24px 16px\" />\n          <div class=\"text-center\">\n            <c8y-form-group class=\"d-inline-block\">\n              <div\n                class=\"d-flex d-col a-i-center\"\n                [formGroup]=\"formGroupAccept\"\n              >\n                <label class=\"c8y-checkbox\">\n                  <input\n                    class=\"form-control\"\n                    type=\"checkbox\"\n                    required\n                    formControlName=\"confirmed\"\n                  />\n                  <span></span>\n                  <span translate>Understood and agreed.</span>\n                </label>\n                <c8y-messages class=\"d-inline-block\">\n                  <c8y-message\n                    [name]=\"'required'\"\n                    [text]=\"'Accept the maintenance disclaimer.' | translate\"\n                  ></c8y-message>\n                </c8y-messages>\n              </div>\n            </c8y-form-group>\n          </div>\n        </div>\n\n        <c8y-wizard-footer *ngIf=\"stepper.selectedIndex === 0\">\n          <c8y-stepper-buttons\n            [title]=\"'Confirm agreement' | translate\"\n            [showButtons]=\"{ next: true, cancel: true, back: false, custom: false }\"\n            (onCancel)=\"cancel()\"\n          ></c8y-stepper-buttons>\n        </c8y-wizard-footer>\n      </cdk-step>\n      <cdk-step\n        state=\"final\"\n        [stepControl]=\"formGroupLicenses\"\n        [label]=\"'Licenses' | translate\"\n      >\n        <div\n          class=\"p-t-24\"\n          *ngFor=\"let license of licenses\"\n        >\n          <label\n            class=\"text-normal\"\n            *ngIf=\"license.licenseName\"\n            translate\n            [translateParams]=\"{ appName: license.appName, licenseName: license.licenseName }\"\n            ngNonBindable\n          >\n            <b>{{ appName }}</b>\n            uses\n            <b>{{ licenseName }}</b>\n            license\n          </label>\n          <label\n            class=\"text-normal\"\n            *ngIf=\"!license.licenseName\"\n            translate\n            [translateParams]=\"{ appName: license.appName, licenseName: license.licenseName }\"\n            ngNonBindable\n          >\n            <b>{{ appName }}</b>\n            uses\n            <b>no license</b>\n          </label>\n          <c8y-license-view\n            [url]=\"license.url\"\n            [name]=\"license.licenseName\"\n          ></c8y-license-view>\n        </div>\n        <c8y-wizard-footer *ngIf=\"stepper.selectedIndex === 1\">\n          <c8y-form-group class=\"text-center d-inline-block\">\n            <div\n              class=\"d-flex d-col a-i-center\"\n              [formGroup]=\"formGroupLicenses\"\n            >\n              <label class=\"c8y-checkbox\">\n                <input\n                  class=\"form-control\"\n                  type=\"checkbox\"\n                  required\n                  formControlName=\"acceptAll\"\n                />\n                <span></span>\n                <span\n                  *ngIf=\"licenses.length === 1\"\n                  translate\n                >\n                  Accept license.`formal agreement`\n                </span>\n                <span\n                  *ngIf=\"licenses.length > 1\"\n                  translate\n                >\n                  Accept all licenses.`formal agreement`\n                </span>\n              </label>\n              <c8y-messages class=\"d-inline-block\">\n                <c8y-message\n                  [name]=\"'required'\"\n                  [text]=\"'You need to accept the license agreement(s)' | translate\"\n                ></c8y-message>\n              </c8y-messages>\n            </div>\n          </c8y-form-group>\n          <hr style=\"margin: 0 -24px 16px\" />\n          <c8y-stepper-buttons\n            [showButtons]=\"{ next: true, cancel: true, back: false, custom: false }\"\n            (onCancel)=\"cancel()\"\n            (onNext)=\"done()\"\n          ></c8y-stepper-buttons>\n        </c8y-wizard-footer>\n      </cdk-step>\n    </c8y-stepper>\n  </div>\n</c8y-wizard-body>\n","import { NgModule } from '@angular/core';\nimport { LicenseConfirmModalComponent } from './license-confirm-modal.component';\nimport { LicenseViewComponent } from './license-view.component';\nimport { CoreModule, FormsModule, hookWizard } from '@c8y/ngx-components';\nimport { EcosystemWizards, SharedEcosystemModule } from '@c8y/ngx-components/ecosystem/shared';\n\n@NgModule({\n  imports: [\n    CoreModule,\n    FormsModule,\n    SharedEcosystemModule,\n    LicenseConfirmModalComponent,\n    LicenseViewComponent\n  ],\n  exports: [LicenseConfirmModalComponent, LicenseViewComponent],\n  providers: [\n    hookWizard({\n      wizardId: EcosystemWizards.LICENSE_CONFIRM,\n      component: LicenseConfirmModalComponent,\n      name: undefined\n    })\n  ]\n})\nexport class LicenseConfirmModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","FormsModule"],"mappings":";;;;;;;;;;;;;;MAWa,oBAAoB,CAAA;AAS/B,IAAA,WAAA,CAAoB,WAAwB,EAAA;QAAxB,IAAA,CAAA,WAAW,GAAX,WAAW;AAJ/B,QAAA,IAAA,CAAA,OAAO,GAAW,OAAO,CAAC,0BAA0B,CAAC;QAErD,IAAA,CAAA,aAAa,GAAG,4BAA4B;IAEG;AAE/C,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACvD,QAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;YAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE;YACpC;QACF;AACA,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;IACnB;+GAlBW,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECXjC,yqCA+BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtBY,IAAI,6FAAE,aAAa,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,qBAAqB,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE3D,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACE,kBAAkB,EAAA,OAAA,EAEnB,CAAC,IAAI,EAAE,aAAa,EAAE,qBAAqB,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,yqCAAA,EAAA;;sBAGtE;;sBAEA;;;MEqDU,4BAA4B,CAAA;AAQvC,IAAA,WAAA,CACU,eAAqD,EACrD,EAAe,EACf,cAA8B,EAC9B,gBAAkC,EAAA;QAHlC,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,cAAc,GAAd,cAAc;QACd,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAP1B,IAAA,CAAA,QAAQ,GAAc,EAAE;IAQrB;IAEH,QAAQ,GAAA;QACN,MAAM,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB;QAEvE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACnC,YAAA,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ;AACvC,SAAA,CAAC;QAEF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC;AACrC,YAAA,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,QAAQ;AACvC,SAAA,CAAC;QAEF,MAAM,WAAW,GAAc,gBAAgB,CAAC,GAAG,CAAC,GAAG,KAAK;YAC1D,OAAO,EAAE,GAAG,CAAC,IAAI;YACjB,GAAG,EAAE,SAAS,GAAG,CAAC,WAAW,CAAA,CAAA,EAAI,GAAG,CAAC,OAAO,CAAA,YAAA,CAAc;YAC1D,WAAW,EAAE,GAAG,CAAC;AAClB,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,SAAS,GAAI,MAAM,CAAC,WAAW,EAAE,KAAK,CAAe,CAAC,GAAG,CAAC,OAAO,KAAK;AAC1E,YAAA,GAAG,OAAO;AACV,YAAA,UAAU,EAAE;AACT,iBAAA,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,GAAG,KAAK,OAAO,CAAC,GAAG;iBACvC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU;iBAC3C,IAAI,CAAC,IAAI;AACb,SAAA,CAAC,CAAC;AAEH,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC;AACxE,QAAA,MAAM,yBAAyB,GAAG,OAAO,CACvC,sOAAsO,CACvO;AACD,QAAA,MAAM,4BAA4B,GAAG,OAAO,CAC1C,oNAAoN,CACrN;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACjD,WAAW,GAAG,yBAAyB,GAAG,4BAA4B,EACtE;YACE;AACD,SAAA,CACF;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS;IAC3B;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC;IACnC;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC;IAClC;+GAhEW,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA5B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,4BAA4B,8HAG5B,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtEvB,k5JAoJA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDrGI,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACrB,aAAa,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,qBAAqB,wEACrB,mBAAmB,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,UAAU,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,OAAO,kPACP,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,qIAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACX,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,iCAAiC,oFACjC,iBAAiB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACJ,qBAAqB,8DACrB,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,KAAK,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACL,oBAAoB,iFACpB,gBAAgB,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGP,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBAxBxC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,OAAA,EAE5B;wBACP,qBAAqB;wBACrB,aAAa;wBACb,qBAAqB;wBACrB,mBAAmB;wBACnB,UAAU;wBACV,OAAO;wBACP,kBAAkB;wBAClB,WAAW;wBACX,mBAAmB;wBACnB,iCAAiC;wBACjC,iBAAiB;wBACjB,gBAAgB;wBAChB,IAAI;wBACJ,qBAAqB;wBACrB,iBAAiB;wBACjB,KAAK;wBACL,oBAAoB;wBACpB;AACD,qBAAA,EAAA,QAAA,EAAA,k5JAAA,EAAA;;sBAKA,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;ME/C5B,oBAAoB,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAf7B,UAAU;YACVC,aAAW;YACX,qBAAqB;YACrB,4BAA4B;YAC5B,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAEZ,4BAA4B,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;AASjD,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,SAAA,EARpB;AACT,YAAA,UAAU,CAAC;gBACT,QAAQ,EAAE,gBAAgB,CAAC,eAAe;AAC1C,gBAAA,SAAS,EAAE,4BAA4B;AACvC,gBAAA,IAAI,EAAE;aACP;AACF,SAAA,EAAA,OAAA,EAAA,CAbC,UAAU;YACVA,aAAW;YACX,qBAAqB;YACrB,4BAA4B,CAAA,EAAA,CAAA,CAAA;;4FAYnB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAjBhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,UAAU;wBACVA,aAAW;wBACX,qBAAqB;wBACrB,4BAA4B;wBAC5B;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE,CAAC,4BAA4B,EAAE,oBAAoB,CAAC;AAC7D,oBAAA,SAAS,EAAE;AACT,wBAAA,UAAU,CAAC;4BACT,QAAQ,EAAE,gBAAgB,CAAC,eAAe;AAC1C,4BAAA,SAAS,EAAE,4BAA4B;AACvC,4BAAA,IAAI,EAAE;yBACP;AACF;AACF,iBAAA;;;ACtBD;;AAEG;;;;"}