{"version":3,"file":"kronscht-ngx-monaco-editor.mjs","sources":["../../../src/ngx-monaco-editor/src/lib/interfaces/index.ts","../../../src/ngx-monaco-editor/src/lib/services/monaco-editor-loader.service.ts","../../../src/ngx-monaco-editor/src/lib/directives/monaco-editor-loader.directive.ts","../../../src/ngx-monaco-editor/src/lib/components/monaco-editor/monaco-editor.component.ts","../../../src/ngx-monaco-editor/src/lib/components/monaco-diff-editor/monaco-diff-editor.component.ts","../../../src/ngx-monaco-editor/src/lib/monaco-editor.module.ts","../../../src/ngx-monaco-editor/src/public_api.ts","../../../src/ngx-monaco-editor/src/kronscht-ngx-monaco-editor.ts"],"sourcesContent":["/// <reference path=\"monaco.ts\" />\r\nexport const MONACO_PATH = 'MONACO_PATH';\r\nexport type MonacoEditorConstructionOptions = monaco.editor.IStandaloneEditorConstructionOptions;\r\nexport type MonacoDiffEditorConstructionOptions = monaco.editor.IStandaloneDiffEditorConstructionOptions;\r\nexport type MonacoEditorUri = monaco.Uri;\r\nexport type MonacoStandaloneCodeEditor = monaco.editor.IStandaloneCodeEditor;\r\nexport type MonacoStandaloneDiffEditor = monaco.editor.IStandaloneDiffEditor;\r\n","import { Injectable, NgZone, Optional, Inject } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { MONACO_PATH } from '../interfaces';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MonacoEditorLoaderService {\r\n    nodeRequire: any;\r\n    isMonacoLoaded$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n    private _monacoPath = 'assets/monaco-editor/min/vs';\r\n\r\n    set monacoPath(value: string) {\r\n        if (value) {\r\n            this._monacoPath = value;\r\n        }\r\n    }\r\n\r\n    constructor(private ngZone: NgZone, @Optional() @Inject(MONACO_PATH) public monacoPathConfig: string) {\r\n      if ((<any>window).monacoEditorAlreadyInitialized) {\r\n        ngZone.run(() => this.isMonacoLoaded$.next(true));\r\n        return;\r\n      }\r\n\r\n      (<any>window).monacoEditorAlreadyInitialized = true;\r\n\r\n      if (this.monacoPathConfig) {\r\n        this.monacoPath = this.monacoPathConfig;\r\n      }\r\n\r\n      this.loadMonaco();\r\n    }\r\n\r\n    loadMonaco() {\r\n      const onGotAmdLoader = () => {\r\n\r\n        let vsPath = this._monacoPath;\r\n        (<any>window).amdRequire = (<any>window).require;\r\n\r\n        const isElectron = !!this.nodeRequire;\r\n        const isPathUrl = vsPath.includes('http');\r\n\r\n        if (isElectron) {\r\n          // Restore node require in window\r\n          (<any>window).require = this.nodeRequire;\r\n\r\n          if (!isPathUrl) {\r\n            const path = (<any>window).require('path');\r\n            vsPath = path.resolve((<any>window).__dirname, this._monacoPath);\r\n          }\r\n        }\r\n\r\n        (<any>window).amdRequire.config({ paths: { vs: vsPath } });\r\n\r\n        // Load monaco\r\n        (<any>window).amdRequire(['vs/editor/editor.main'], () => {\r\n            this.ngZone.run(() => this.isMonacoLoaded$.next(true));\r\n        }, (error) => console.error('Error loading monaco-editor: ', error));\r\n      };\r\n\r\n      // Check if AMD loader already available\r\n      const isAmdLoaderAvailable = !!(<any>window).amdRequire;\r\n      if (isAmdLoaderAvailable) {\r\n        return onGotAmdLoader();\r\n      }\r\n\r\n      const isElectron = !!(<any>window).require;\r\n\r\n      if (isElectron) {\r\n        this.addElectronFixScripts();\r\n        this.nodeRequire = (<any>window).require;\r\n      }\r\n\r\n      const loaderScript: HTMLScriptElement = document.createElement('script');\r\n      loaderScript.type = 'text/javascript';\r\n      loaderScript.src = `${this._monacoPath}/loader.js`;\r\n      loaderScript.addEventListener('load', onGotAmdLoader);\r\n      document.body.appendChild(loaderScript);\r\n    }\r\n\r\n    addElectronFixScripts() {\r\n        const electronFixScript = document.createElement('script');\r\n        // workaround monaco-css not understanding the environment\r\n        const inlineScript = document.createTextNode('self.module = undefined;');\r\n        // workaround monaco-typescript not understanding the environment\r\n        const inlineScript2 = document.createTextNode('self.process.browser = true;');\r\n        electronFixScript.appendChild(inlineScript);\r\n        electronFixScript.appendChild(inlineScript2);\r\n        document.body.appendChild(electronFixScript);\r\n    }\r\n}\r\n","import { Directive, TemplateRef, ViewContainerRef, OnDestroy, OnInit } from '@angular/core';\r\nimport { MonacoEditorLoaderService } from '../services/monaco-editor-loader.service';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { Subject } from 'rxjs';\r\n\r\n@Directive({ selector: '[ngxLoadMonacoEditor]' })\r\nexport class MonacoEditorLoaderDirective implements OnInit, OnDestroy {\r\n  isMonacoLoaded$ = this.monacoEditorLoaderService.isMonacoLoaded$.asObservable();\r\n  destroyed$ = new Subject<void>();\r\n\r\n  constructor(\r\n    private templateRef: TemplateRef<any>,\r\n    private viewContainer: ViewContainerRef,\r\n    private monacoEditorLoaderService: MonacoEditorLoaderService\r\n  ) {}\r\n\r\n  ngOnInit() {\r\n    this.isMonacoLoaded$.pipe(takeUntil(this.destroyed$)).subscribe((loaded) => {\r\n      if (!loaded) {\r\n        return this.viewContainer.clear();\r\n      }\r\n      this.viewContainer.createEmbeddedView(this.templateRef);\r\n    });\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.destroyed$.next();\r\n    this.destroyed$.complete();\r\n  }\r\n}\r\n","import {\r\n    Component,\r\n    ViewChild,\r\n    ElementRef,\r\n    EventEmitter,\r\n    OnInit,\r\n    OnChanges,\r\n    OnDestroy,\r\n    Input,\r\n    ChangeDetectionStrategy,\r\n    forwardRef,\r\n    SimpleChanges,\r\n    Output\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, Validator, NG_VALIDATORS, ValidationErrors } from '@angular/forms';\r\nimport { filter, take } from 'rxjs/operators';\r\n\r\nimport { MonacoEditorLoaderService } from '../../services/monaco-editor-loader.service';\r\nimport { MonacoEditorConstructionOptions, MonacoEditorUri, MonacoStandaloneCodeEditor } from '../../interfaces';\r\n\r\n@Component({\r\n    selector: 'ngx-monaco-editor',\r\n    template: `<div #container class=\"editor-container\" fxFlex>\r\n\t\t<div\r\n\t\t\t#editor\r\n\t\t\tclass=\"monaco-editor\"\r\n\t\t></div>\r\n</div>`,\r\n    styles: [\r\n        `\r\n.monaco-editor {\r\n  position: absolute;\r\n  top: 0;\r\n  bottom: 0;\r\n  left: 0;\r\n  right: 0;\r\n\r\n}\r\n.editor-container {\r\n\toverflow: hidden;\r\n\tposition: relative;\r\n\tdisplay: table;\r\n\twidth: 100%;\r\n  height: 100%;\r\n  min-width: 0;\r\n}`\r\n    ],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => MonacoEditorComponent),\r\n            multi: true\r\n        },\r\n        {\r\n            provide: NG_VALIDATORS,\r\n            useExisting: forwardRef(() => MonacoEditorComponent),\r\n            multi: true,\r\n        }\r\n    ]\r\n})\r\nexport class MonacoEditorComponent implements OnInit, OnChanges, OnDestroy, ControlValueAccessor, Validator {\r\n    @Input() options: MonacoEditorConstructionOptions;\r\n    @Input() uri?: MonacoEditorUri;\r\n    @Output() init: EventEmitter<MonacoStandaloneCodeEditor> = new EventEmitter();\r\n    @ViewChild('editor', { static: true }) editorContent: ElementRef;\r\n\r\n    editor: MonacoStandaloneCodeEditor;\r\n    modelUriInstance: monaco.editor.ITextModel;\r\n    value: string;\r\n    parsedError: string;\r\n\r\n    private onTouched: () => void = () => {};\r\n    private onErrorStatusChange: () => void = () => {};\r\n    private propagateChange: (_: any) => any = () => {};\r\n\r\n    get model() {\r\n      return this.editor && this.editor.getModel();\r\n    }\r\n\r\n    get modelMarkers() {\r\n      return this.model && monaco.editor.getModelMarkers({\r\n        resource: this.model.uri\r\n      });\r\n    }\r\n\r\n    constructor(private monacoLoader: MonacoEditorLoaderService) { }\r\n\r\n    ngOnInit() {\r\n        this.monacoLoader.isMonacoLoaded$.pipe(\r\n            filter(isLoaded => isLoaded),\r\n            take(1)\r\n        ).subscribe(() => {\r\n            this.initEditor();\r\n        });\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (this.editor && changes.options && !changes.options.firstChange) {\r\n          const { language: toLanguage, theme: toTheme, ...options } = changes.options.currentValue;\r\n          const { language: fromLanguage, theme: fromTheme } = changes.options.previousValue;\r\n\r\n          if (fromLanguage !== toLanguage) {\r\n              monaco.editor.setModelLanguage(\r\n                  this.editor.getModel(),\r\n                  this.options && this.options.language ? this.options.language : 'text'\r\n              );\r\n          }\r\n\r\n          if (fromTheme !== toTheme) {\r\n              monaco.editor.setTheme(toTheme);\r\n          }\r\n\r\n          this.editor.updateOptions(options);\r\n        }\r\n\r\n        if (this.editor && changes.uri) {\r\n          const toUri = changes.uri.currentValue;\r\n          const fromUri = changes.uri.previousValue;\r\n\r\n          if (fromUri && !toUri || !fromUri && toUri || toUri && fromUri && toUri.path !== fromUri.path) {\r\n            const value = this.editor.getValue();\r\n\r\n            if (this.modelUriInstance) {\r\n              this.modelUriInstance.dispose();\r\n            }\r\n\r\n            let existingModel;\r\n\r\n            if (toUri) {\r\n              existingModel = monaco.editor.getModels().find((model) => model.uri.path === toUri.path);\r\n            }\r\n\r\n            this.modelUriInstance = existingModel ? existingModel : monaco.editor.createModel(value, this.options.language || 'text', this.uri);\r\n            this.editor.setModel(this.modelUriInstance);\r\n          }\r\n        }\r\n    }\r\n\r\n    writeValue(value: string): void {\r\n        this.value = value;\r\n        if (this.editor && value) {\r\n            this.editor.setValue(value);\r\n        } else if (this.editor) {\r\n            this.editor.setValue('');\r\n        }\r\n    }\r\n\r\n    registerOnChange(fn: any): void {\r\n        this.propagateChange = fn;\r\n    }\r\n\r\n    registerOnTouched(fn: any): void {\r\n        this.onTouched = fn;\r\n    }\r\n\r\n    validate(): ValidationErrors {\r\n        return !this.parsedError ? null : {\r\n            monaco: {\r\n                value: this.parsedError.split('|'),\r\n            }\r\n        };\r\n    }\r\n\r\n    registerOnValidatorChange?(fn: () => void): void {\r\n        this.onErrorStatusChange = fn;\r\n    }\r\n\r\n    private initEditor() {\r\n        const options: MonacoEditorConstructionOptions = {\r\n            value: [this.value].join('\\n'),\r\n            language: 'text',\r\n            automaticLayout: true,\r\n            scrollBeyondLastLine: false,\r\n            theme: 'vc'\r\n        };\r\n\r\n        this.editor = monaco.editor.create(\r\n          this.editorContent.nativeElement,\r\n          this.options ? { ...options, ...this.options } : options\r\n        );\r\n\r\n        this.registerEditorListeners();\r\n        this.init.emit(this.editor);\r\n    }\r\n\r\n    registerEditorListeners() {\r\n      this.editor.onDidChangeModelContent(() => {\r\n        this.propagateChange(this.editor.getValue());\r\n      });\r\n\r\n      this.editor.onDidChangeModelDecorations(() => {\r\n          const currentParsedError = this.modelMarkers.map(({ message }) => message).join('|');\r\n          const hasValidationStatusChanged = this.parsedError !== currentParsedError;\r\n\r\n          if (hasValidationStatusChanged) {\r\n              this.parsedError = currentParsedError;\r\n              this.onErrorStatusChange();\r\n          }\r\n      });\r\n\r\n      this.editor.onDidBlurEditorText(() => {\r\n          this.onTouched();\r\n      });\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        if (this.editor) {\r\n            this.editor.dispose();\r\n        }\r\n    }\r\n}\r\n","import {\r\n    Component,\r\n    ViewChild,\r\n    ElementRef,\r\n    EventEmitter,\r\n    OnInit,\r\n    OnChanges,\r\n    OnDestroy,\r\n    Output,\r\n    Input,\r\n    ChangeDetectionStrategy,\r\n    SimpleChanges\r\n} from '@angular/core';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport {EditorModel} from '../../model/model';\r\n\r\nimport { MonacoEditorLoaderService } from '../../services/monaco-editor-loader.service';\r\nimport { MonacoDiffEditorConstructionOptions, MonacoStandaloneDiffEditor } from '../../interfaces';\r\n\r\n@Component({\r\n    selector: 'ngx-monaco-diff-editor',\r\n    template: `<div #container class=\"editor-container\" fxFlex>\r\n\t\t<div\r\n\t\t\t#diffEditor\r\n\t\t\tclass=\"monaco-editor\"\r\n\t\t></div>\r\n</div>`,\r\n    styles: [\r\n        `\r\n.monaco-editor {\r\n  position: absolute;\r\n  top: 0;\r\n  bottom: 0;\r\n  left: 0;\r\n  right: 0;\r\n\r\n}\r\n.editor-container {\r\n\toverflow: hidden;\r\n\tposition: relative;\r\n\tdisplay: table;\r\n\twidth: 100%;\r\n  height: 100%;\r\n  min-width: 0;\r\n}`\r\n    ],\r\n    changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MonacoDiffEditorComponent implements OnInit, OnChanges, OnDestroy {\r\n    container: HTMLDivElement;\r\n    editor: MonacoStandaloneDiffEditor;\r\n\r\n    @Input() original: EditorModel;\r\n    @Input() modified: EditorModel;\r\n    @Input() options: MonacoDiffEditorConstructionOptions;\r\n    @Output() init: EventEmitter< MonacoStandaloneDiffEditor> = new EventEmitter();\r\n\r\n    @ViewChild('diffEditor', {static: true}) editorContent: ElementRef;\r\n\r\n    constructor(private monacoLoader: MonacoEditorLoaderService) { }\r\n\r\n    ngOnInit() {\r\n        this.container = this.editorContent.nativeElement;\r\n        this.monacoLoader.isMonacoLoaded$.pipe(\r\n            filter(isLoaded => isLoaded),\r\n            take(1),\r\n        ).subscribe(() => {\r\n            this.initMonaco();\r\n        });\r\n    }\r\n\r\n    ngOnChanges(changes: SimpleChanges) {\r\n        if (this.editor && ((changes.code && !changes.code.firstChange) || (changes.modified && !changes.modified.firstChange))) {\r\n            this.updateEditorModel();\r\n        }\r\n        if (\r\n            this.editor &&\r\n            changes.options &&\r\n            !changes.options.firstChange\r\n        ) {\r\n            if (changes.options.previousValue.theme !== changes.options.currentValue.theme) {\r\n                monaco.editor.setTheme(changes.options.currentValue.theme);\r\n            }\r\n\r\n            this.editor.updateOptions(changes.options.currentValue);\r\n        }\r\n    }\r\n\r\n    private initMonaco() {\r\n        let opts: MonacoDiffEditorConstructionOptions = {\r\n            readOnly: true,\r\n            automaticLayout: true,\r\n            theme: 'vc'\r\n        };\r\n        if (this.options) {\r\n            opts = Object.assign({}, opts, this.options);\r\n        }\r\n        this.editor = monaco.editor.createDiffEditor(this.container, opts);\r\n\r\n        this.updateEditorModel();\r\n\r\n        this.editor.layout();\r\n        this.init.emit(this.editor);\r\n    }\r\n\r\n    ngOnDestroy() {\r\n        if (this.editor) {\r\n            this.editor.dispose();\r\n        }\r\n    }\r\n\r\n    updateEditorModel() {\r\n        const original = monaco.editor.createModel(this.original.value, this.original?.language, this.original?.uri);\r\n        const modified = monaco.editor.createModel(this.modified.value, this.modified?.language, this.modified?.uri);\r\n\r\n        this.editor.setModel({\r\n            original,\r\n            modified\r\n        });\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { MonacoEditorLoaderDirective } from './directives/monaco-editor-loader.directive';\r\nimport { MonacoEditorComponent } from './components/monaco-editor/monaco-editor.component';\r\nimport { MonacoDiffEditorComponent } from './components/monaco-diff-editor/monaco-diff-editor.component';\r\n\r\n@NgModule({\r\n    imports: [],\r\n    declarations: [\r\n        MonacoEditorLoaderDirective,\r\n        MonacoEditorComponent,\r\n        MonacoDiffEditorComponent\r\n    ],\r\n    exports: [\r\n        MonacoEditorLoaderDirective,\r\n        MonacoEditorComponent,\r\n        MonacoDiffEditorComponent\r\n    ]\r\n})\r\nexport class MonacoEditorModule { }\r\n","/*\r\n * Public API Surface of materia-monaco-editor-lib\r\n */\r\nexport * from './lib/directives/monaco-editor-loader.directive';\r\nexport * from './lib/services/monaco-editor-loader.service';\r\nexport * from './lib/interfaces';\r\nexport * from './lib/components/monaco-editor/monaco-editor.component';\r\nexport * from './lib/components/monaco-diff-editor/monaco-diff-editor.component';\r\nexport * from './lib/monaco-editor.module';\r\nexport * from './lib/model/model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":";;;;;;;AAAA;MACa,WAAW,GAAG;;MCId,yBAAyB;IAWlC,YAAoB,MAAc,EAA0C,gBAAwB;QAAhF,WAAM,GAAN,MAAM,CAAQ;QAA0C,qBAAgB,GAAhB,gBAAgB,CAAQ;QATpG,oBAAe,GAA6B,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;QACxE,gBAAW,GAAG,6BAA6B,CAAC;QASlD,IAAU,MAAO,CAAC,8BAA8B,EAAE;YAChD,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAClD,OAAO;SACR;QAEK,MAAO,CAAC,8BAA8B,GAAG,IAAI,CAAC;QAEpD,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC;SACzC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAnBD,IAAI,UAAU,CAAC,KAAa;QACxB,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC5B;KACJ;IAiBD,UAAU;QACR,MAAM,cAAc,GAAG;YAErB,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;YACxB,MAAO,CAAC,UAAU,GAAS,MAAO,CAAC,OAAO,CAAC;YAEjD,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;YACtC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE1C,IAAI,UAAU,EAAE;;gBAER,MAAO,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;gBAEzC,IAAI,CAAC,SAAS,EAAE;oBACd,MAAM,IAAI,GAAS,MAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC3C,MAAM,GAAG,IAAI,CAAC,OAAO,CAAO,MAAO,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;iBAClE;aACF;YAEK,MAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;;YAGrD,MAAO,CAAC,UAAU,CAAC,CAAC,uBAAuB,CAAC,EAAE;gBAChD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aAC1D,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC,CAAC;SACtE,CAAC;;QAGF,MAAM,oBAAoB,GAAG,CAAC,CAAO,MAAO,CAAC,UAAU,CAAC;QACxD,IAAI,oBAAoB,EAAE;YACxB,OAAO,cAAc,EAAE,CAAC;SACzB;QAED,MAAM,UAAU,GAAG,CAAC,CAAO,MAAO,CAAC,OAAO,CAAC;QAE3C,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,WAAW,GAAS,MAAO,CAAC,OAAO,CAAC;SAC1C;QAED,MAAM,YAAY,GAAsB,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACzE,YAAY,CAAC,IAAI,GAAG,iBAAiB,CAAC;QACtC,YAAY,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,WAAW,YAAY,CAAC;QACnD,YAAY,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;KACzC;IAED,qBAAqB;QACjB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;;QAE3D,MAAM,YAAY,GAAG,QAAQ,CAAC,cAAc,CAAC,0BAA0B,CAAC,CAAC;;QAEzE,MAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,8BAA8B,CAAC,CAAC;QAC9E,iBAAiB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAC5C,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;KAChD;;sHAlFQ,yBAAyB,wCAWsB,WAAW;0HAX1D,yBAAyB,cADZ,MAAM;2FACnB,yBAAyB;kBADrC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;8BAYO,QAAQ;;8BAAI,MAAM;+BAAC,WAAW;;;;MCV1D,2BAA2B;IAItC,YACU,WAA6B,EAC7B,aAA+B,EAC/B,yBAAoD;QAFpD,gBAAW,GAAX,WAAW,CAAkB;QAC7B,kBAAa,GAAb,aAAa,CAAkB;QAC/B,8BAAyB,GAAzB,yBAAyB,CAA2B;QAN9D,oBAAe,GAAG,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QAChF,eAAU,GAAG,IAAI,OAAO,EAAQ,CAAC;KAM7B;IAEJ,QAAQ;QACN,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM;YACrE,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aACnC;YACD,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACzD,CAAC,CAAC;KACJ;IAED,WAAW;QACT,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;;wHAtBU,2BAA2B;4GAA3B,2BAA2B;2FAA3B,2BAA2B;kBADvC,SAAS;mBAAC,EAAE,QAAQ,EAAE,uBAAuB,EAAE;;;MCwDnC,qBAAqB;IAyB9B,YAAoB,YAAuC;QAAvC,iBAAY,GAAZ,YAAY,CAA2B;QAtBjD,SAAI,GAA6C,IAAI,YAAY,EAAE,CAAC;QAQtE,cAAS,GAAe,SAAQ,CAAC;QACjC,wBAAmB,GAAe,SAAQ,CAAC;QAC3C,oBAAe,GAAoB,SAAQ,CAAC;KAYY;IAVhE,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAC9C;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC;YACjD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG;SACzB,CAAC,CAAC;KACJ;IAID,QAAQ;QACJ,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAClC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAC5B,IAAI,CAAC,CAAC,CAAC,CACV,CAAC,SAAS,CAAC;YACR,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB,CAAC,CAAC;KACN;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;YAClE,MAAM,KAAuD,OAAO,CAAC,OAAO,CAAC,YAAY,EAAnF,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,OAA6C,EAAxC,OAAO,cAAlD,qBAAoD,CAA+B,CAAC;YAC1F,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;YAEnF,IAAI,YAAY,KAAK,UAAU,EAAE;gBAC7B,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,EACtB,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CACzE,CAAC;aACL;YAED,IAAI,SAAS,KAAK,OAAO,EAAE;gBACvB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aACnC;YAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SACpC;QAED,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;YACvC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;YAE1C,IAAI,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,EAAE;gBAC7F,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAErC,IAAI,IAAI,CAAC,gBAAgB,EAAE;oBACzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;iBACjC;gBAED,IAAI,aAAa,CAAC;gBAElB,IAAI,KAAK,EAAE;oBACT,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;iBAC1F;gBAED,IAAI,CAAC,gBAAgB,GAAG,aAAa,GAAG,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAC7C;SACF;KACJ;IAED,UAAU,CAAC,KAAa;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SAC/B;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE;YACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SAC5B;KACJ;IAED,gBAAgB,CAAC,EAAO;QACpB,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;KAC7B;IAED,iBAAiB,CAAC,EAAO;QACrB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACvB;IAED,QAAQ;QACJ,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG;YAC9B,MAAM,EAAE;gBACJ,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;aACrC;SACJ,CAAC;KACL;IAED,yBAAyB,CAAE,EAAc;QACrC,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;KACjC;IAEO,UAAU;QACd,MAAM,OAAO,GAAoC;YAC7C,KAAK,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YAC9B,QAAQ,EAAE,MAAM;YAChB,eAAe,EAAE,IAAI;YACrB,oBAAoB,EAAE,KAAK;YAC3B,KAAK,EAAE,IAAI;SACd,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAChC,IAAI,CAAC,aAAa,CAAC,aAAa,EAChC,IAAI,CAAC,OAAO,mCAAQ,OAAO,GAAK,IAAI,CAAC,OAAO,IAAK,OAAO,CACzD,CAAC;QAEF,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;IAED,uBAAuB;QACrB,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC;YAClC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC9C,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC;YACpC,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrF,MAAM,0BAA0B,GAAG,IAAI,CAAC,WAAW,KAAK,kBAAkB,CAAC;YAE3E,IAAI,0BAA0B,EAAE;gBAC5B,IAAI,CAAC,WAAW,GAAG,kBAAkB,CAAC;gBACtC,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC9B;SACJ,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;YAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;SACpB,CAAC,CAAC;KACJ;IAED,WAAW;QACP,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SACzB;KACJ;;kHArJQ,qBAAqB;sGAArB,qBAAqB,mHAbnB;QACP;YACI,OAAO,EAAE,iBAAiB;YAC1B,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;YACpD,KAAK,EAAE,IAAI;SACd;QACD;YACI,OAAO,EAAE,aAAa;YACtB,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB,CAAC;YACpD,KAAK,EAAE,IAAI;SACd;KACJ,sKArCS;;;;;OAKP;2FAkCM,qBAAqB;kBAzCjC,SAAS;mBAAC;oBACP,QAAQ,EAAE,mBAAmB;oBAC7B,QAAQ,EAAE;;;;;OAKP;oBACH,MAAM,EAAE;wBACJ;;;;;;;;;;;;;;;;EAgBN;qBACG;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,SAAS,EAAE;wBACP;4BACI,OAAO,EAAE,iBAAiB;4BAC1B,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;4BACpD,KAAK,EAAE,IAAI;yBACd;wBACD;4BACI,OAAO,EAAE,aAAa;4BACtB,WAAW,EAAE,UAAU,CAAC,2BAA2B,CAAC;4BACpD,KAAK,EAAE,IAAI;yBACd;qBACJ;iBACJ;6GAEY,OAAO;sBAAf,KAAK;gBACG,GAAG;sBAAX,KAAK;gBACI,IAAI;sBAAb,MAAM;gBACgC,aAAa;sBAAnD,SAAS;uBAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;;MCjB5B,yBAAyB;IAWlC,YAAoB,YAAuC;QAAvC,iBAAY,GAAZ,YAAY,CAA2B;QAJjD,SAAI,GAA8C,IAAI,YAAY,EAAE,CAAC;KAIf;IAEhE,QAAQ;QACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAClC,MAAM,CAAC,QAAQ,IAAI,QAAQ,CAAC,EAC5B,IAAI,CAAC,CAAC,CAAC,CACV,CAAC,SAAS,CAAC;YACR,IAAI,CAAC,UAAU,EAAE,CAAC;SACrB,CAAC,CAAC;KACN;IAED,WAAW,CAAC,OAAsB;QAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,MAAM,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE;YACrH,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;QACD,IACI,IAAI,CAAC,MAAM;YACX,OAAO,CAAC,OAAO;YACf,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAC9B;YACE,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE;gBAC5E,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;aAC9D;YAED,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SAC3D;KACJ;IAEO,UAAU;QACd,IAAI,IAAI,GAAwC;YAC5C,QAAQ,EAAE,IAAI;YACd,eAAe,EAAE,IAAI;YACrB,KAAK,EAAE,IAAI;SACd,CAAC;QACF,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SAChD;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAEnE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAEzB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/B;IAED,WAAW;QACP,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;SACzB;KACJ;IAED,iBAAiB;;QACb,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAA,IAAI,CAAC,QAAQ,0CAAE,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC;QAC7G,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAA,IAAI,CAAC,QAAQ,0CAAE,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,0CAAE,GAAG,CAAC,CAAC;QAE7G,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACjB,QAAQ;YACR,QAAQ;SACX,CAAC,CAAC;KACR;;sHAvEU,yBAAyB;0GAAzB,yBAAyB,qTA3BxB;;;;;OAKP;2FAsBM,yBAAyB;kBA7BrC,SAAS;mBAAC;oBACP,QAAQ,EAAE,wBAAwB;oBAClC,QAAQ,EAAE;;;;;OAKP;oBACH,MAAM,EAAE;wBACJ;;;;;;;;;;;;;;;;EAgBN;qBACG;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;iBAClD;6GAKY,QAAQ;sBAAhB,KAAK;gBACG,QAAQ;sBAAhB,KAAK;gBACG,OAAO;sBAAf,KAAK;gBACI,IAAI;sBAAb,MAAM;gBAEkC,aAAa;sBAArD,SAAS;uBAAC,YAAY,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;;;MCvC9B,kBAAkB;;+GAAlB,kBAAkB;gHAAlB,kBAAkB,iBAVvB,2BAA2B;QAC3B,qBAAqB;QACrB,yBAAyB,aAGzB,2BAA2B;QAC3B,qBAAqB;QACrB,yBAAyB;gHAGpB,kBAAkB,YAZlB,EAAE;2FAYF,kBAAkB;kBAb9B,QAAQ;mBAAC;oBACN,OAAO,EAAE,EAAE;oBACX,YAAY,EAAE;wBACV,2BAA2B;wBAC3B,qBAAqB;wBACrB,yBAAyB;qBAC5B;oBACD,OAAO,EAAE;wBACL,2BAA2B;wBAC3B,qBAAqB;wBACrB,yBAAyB;qBAC5B;iBACJ;;;ACjBD;;;;ACAA;;;;;;"}