@xxmachina/components 19.12.3 → 19.12.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/xxmachina-components-molecules-weekly-header.mjs +2 -2
- package/fesm2022/xxmachina-components-molecules-weekly-header.mjs.map +1 -1
- package/fesm2022/xxmachina-components-organisms-calendar-section.mjs +2 -2
- package/fesm2022/xxmachina-components-organisms-calendar-section.mjs.map +1 -1
- package/fesm2022/xxmachina-components-pages-command.mjs +2 -2
- package/fesm2022/xxmachina-components-pages-command.mjs.map +1 -1
- package/fesm2022/xxmachina-components-pages-query.mjs +2 -2
- package/fesm2022/xxmachina-components-pages-query.mjs.map +1 -1
- package/fesm2022/xxmachina-components-pages-thread.mjs +2 -2
- package/fesm2022/xxmachina-components-pages-thread.mjs.map +1 -1
- package/fesm2022/xxmachina-components-templates-agent.mjs +2 -2
- package/fesm2022/xxmachina-components-templates-agent.mjs.map +1 -1
- package/fesm2022/xxmachina-components.mjs +2 -2
- package/fesm2022/xxmachina-components.mjs.map +1 -1
- package/package.json +24 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxmachina-components-templates-agent.mjs","sources":["../tmp-esm2022/templates/agent/agent.template.js","../tmp-esm2022/templates/agent/xxmachina-components-templates-agent.js"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject, ChangeDetectorRef, viewChild } from '@angular/core';\nimport { NgAtomicComponent, provideComponent } from '@ng-atomic/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { AutoLayoutFrame } from '@ng-atomic/components/frames/auto-layout';\nimport { CardFrame } from '@ng-atomic/components/frames/card';\nimport { ActionButtonsSectionOrganism } from '@ng-atomic/components/organisms/action-buttons-section';\nimport { HeadingOrganism } from '@ng-atomic/components/organisms/heading';\nimport { NgAtomicFormSectionBuilder } from '@ng-atomic/components/templates/form';\nimport { EntranceTemplateStore } from '@ng-atomic/components/templates/entrance';\nimport { AppService } from '@ng-atomic/common/services/app';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { XtermOrganism } from '@xxmachina/components/organisms/xterm';\nimport chalk from 'chalk';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ng-atomic/components/templates/entrance\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@angular/material/button\";\nimport * as i4 from \"@angular/material/icon\";\nimport * as i5 from \"@angular/material/tooltip\";\nvar ActionId;\n(function (ActionId) {\n ActionId[\"SIGN_IN\"] = \"[@ng-atomic/components] Sign In\";\n ActionId[\"SIGN_IN_WITH_GOOGLE\"] = \"[@ng-atomic/components] Sign In With Google\";\n ActionId[\"SIGN_IN_WITH_TWITTER\"] = \"[@ng-atomic/components] Sign In With Twitter\";\n ActionId[\"SIGN_OUT\"] = \"[@ng-atomic/components] Sign Out\";\n})(ActionId || (ActionId = {}));\nexport class AgentTemplate extends NgAtomicComponent {\n static ActionId = ActionId;\n ActionId = ActionId;\n store = inject(EntranceTemplateStore);\n cdr = inject(ChangeDetectorRef);\n app = inject(AppService);\n xtermComponent = viewChild('xtermComponent');\n inputField = viewChild('inputField');\n statusText = 'Ready';\n isProcessing = false;\n showCursor = false;\n cursorLeft = 60;\n cursorTop = 12;\n // xterm関連\n terminal;\n commandHistory = [];\n historyIndex = -1;\n // 入力管理\n currentInput = 'x_x ';\n ngAfterViewInit() {\n // 入力フィールドにフォーカス\n setTimeout(() => {\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n textarea.focus();\n // 初期高さを適切に設定\n this.adjustTextareaHeight();\n }\n }, 100);\n }\n onTerminalReady(terminal) {\n this.terminal = terminal;\n // 初期メッセージの表示\n this.showWelcomeMessage();\n // 初回ロード時は最上部にスクロール(アスキーアートから見えるように)\n setTimeout(() => {\n this.terminal.scrollToTop();\n }, 50);\n // 入力フィールドにフォーカスと高さ調整\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n textarea.focus();\n this.adjustTextareaHeight();\n }\n }\n onGitHubLinkClick(issueNumber) {\n const url = `https://github.com/nontangent/x_x_machina/issues/${issueNumber}`;\n window.open(url, '_blank');\n }\n showWelcomeMessage() {\n // アスキーアート(lain風の色で)\n this.terminal.writeln('');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('███╗ ███╗ █████╗ ██████╗██╗ ██╗██╗███╗ ██╗ █████╗ ')}`);\n this.terminal.writeln(`${chalk.cyan('████╗ ████║██╔══██╗██╔════╝██║ ██║██║████╗ ██║██╔══██╗')}`);\n this.terminal.writeln(`${chalk.cyan('██╔████╔██║███████║██║ ███████║██║██╔██╗ ██║███████║')}`);\n this.terminal.writeln(`${chalk.cyan('██║╚██╔╝██║██╔══██║██║ ██╔══██║██║██║╚██╗██║██╔══██║')}`);\n this.terminal.writeln(`${chalk.cyan('██║ ╚═╝ ██║██║ ██║╚██████╗██║ ██║██║██║ ╚████║██║ ██║')}`);\n this.terminal.writeln(`${chalk.cyan('╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝')}`);\n this.terminal.writeln(`${chalk.cyan(' █████╗ ██████╗ ███████╗███╗ ██╗████████╗')}`);\n this.terminal.writeln(`${chalk.cyan(' ██╔══██╗██╔════╝ ██╔════╝████╗ ██║╚══██╔══╝')}`);\n this.terminal.writeln(`${chalk.cyan(' ███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║ ')}`);\n this.terminal.writeln(`${chalk.cyan(' ██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║ ')}`);\n this.terminal.writeln(`${chalk.cyan(' ██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║ ')}`);\n this.terminal.writeln(`${chalk.cyan(' ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ')}`);\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● Welcome to \\x1b[1;93m合同会社マキナエージェント\\x1b[0m')}`);\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● 会社概要\\x1b[0m')}`);\n this.terminal.writeln(' 合同会社マキナエージェントは、AI技術を活用した');\n this.terminal.writeln(' 革新的なソリューションを提供する企業です。');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● 事業内容\\x1b[0m')}`);\n this.terminal.writeln(' - システム開発のコンサルティング事業');\n this.terminal.writeln(' - AIアジャイル開発の導入支援事業');\n this.terminal.writeln(' - 自己改変型AIエージェント(オートポイエーシス)の開発事業');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● ビジョン\\x1b[0m')}`);\n this.terminal.writeln(' 人とAIが協働する未来を創造し、');\n this.terminal.writeln(' あらゆるビジネスの可能性を拡げます。');\n this.terminal.writeln('');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● Type \\x1b[1;36mlogin\\x1b[1;33m to sign in with Google\\x1b[0m')}`);\n this.terminal.writeln(`${chalk.cyan('● Type \\x1b[1;36mhelp\\x1b[1;33m for more commands\\x1b[0m')}`);\n this.terminal.writeln('');\n // プロンプト表示\n this.showPrompt();\n }\n showPrompt() {\n // プロンプトはHTML側の入力フィールドで表示するため不要\n }\n processCommand(command) {\n this.isProcessing = true;\n this.statusText = 'Processing...';\n this.cdr.markForCheck();\n // ログインコマンド\n if (command === 'login') {\n this.terminal.writeln('\\x1b[1;32m● Initiating Google authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN_WITH_GOOGLE });\n this.completeProcessing();\n }, 300);\n }\n else if (command.startsWith('auth')) {\n if (command.includes('google')) {\n this.terminal.writeln('\\x1b[1;32m● Initiating Google authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN_WITH_GOOGLE });\n this.completeProcessing();\n }, 300);\n }\n else if (command.includes('twitter')) {\n this.terminal.writeln('\\x1b[1;32m● Initiating Twitter authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN_WITH_TWITTER });\n this.completeProcessing();\n }, 300);\n }\n else if (command.includes('local')) {\n this.terminal.writeln('\\x1b[1;32m● Initiating local authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN });\n this.completeProcessing();\n }, 300);\n }\n else {\n this.terminal.writeln('\\x1b[1;32m● Available authentication methods:\\x1b[0m');\n this.terminal.writeln(' - auth --provider=google');\n this.terminal.writeln(' - auth --provider=twitter');\n this.terminal.writeln(' - auth --provider=local');\n this.completeProcessing();\n }\n }\n // ログアウトコマンド\n else if (command === 'logout' || command === 'signout') {\n this.terminal.writeln('\\x1b[1;32m● Signing out...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_OUT });\n setTimeout(() => {\n this.terminal.writeln('\\x1b[1;32m● You have been signed out.\\x1b[0m');\n this.terminal.writeln('\\x1b[1;33m● Type \"login\" to sign in again.\\x1b[0m');\n this.completeProcessing();\n }, 500);\n }, 300);\n }\n // ヘルプコマンド\n else if (command === 'help' || command === '?') {\n this.terminal.writeln('\\x1b[1;32m● Available commands:\\x1b[0m');\n this.terminal.writeln(' \\x1b[36mlogin\\x1b[0m - Sign in with Google (default)');\n this.terminal.writeln(' \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mgoogle\\x1b[0m - Sign in with Google');\n this.terminal.writeln(' \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mtwitter\\x1b[0m - Sign in with Twitter');\n this.terminal.writeln(' \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mlocal\\x1b[0m - Sign in with email/password');\n this.terminal.writeln(' \\x1b[36mlogout\\x1b[0m / \\x1b[36msignout\\x1b[0m - Sign out from the application');\n this.terminal.writeln(' \\x1b[36mabout\\x1b[0m - Show company information');\n this.terminal.writeln(' \\x1b[36mclear\\x1b[0m - Clear terminal');\n this.terminal.writeln(' \\x1b[36mhelp\\x1b[0m / \\x1b[36m?\\x1b[0m - Show this help');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;33m● Keyboard shortcuts:\\x1b[0m');\n this.terminal.writeln(' \\x1b[36m⌘K\\x1b[0m / \\x1b[36mCtrl+K\\x1b[0m - Generate command suggestions');\n this.terminal.writeln(' \\x1b[36m↑\\x1b[0m / \\x1b[36m↓\\x1b[0m - Navigate command history');\n this.completeProcessing();\n }\n // 会社情報コマンド\n else if (command === 'about') {\n this.terminal.writeln('\\x1b[1;36m● 合同会社マキナエージェント\\x1b[0m');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● 会社概要\\x1b[0m');\n this.terminal.writeln(' 合同会社マキナエージェントは、AI技術を活用した');\n this.terminal.writeln(' 革新的なソリューションを提供する企業です。');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● 事業内容\\x1b[0m');\n this.terminal.writeln(' - システム開発のコンサルティング事業');\n this.terminal.writeln(' - AIアジャイル開発の導入支援事業');\n this.terminal.writeln(' - 自己改変型AIエージェント(オートポイエーシス)の開発事業');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● ビジョン\\x1b[0m');\n this.terminal.writeln(' 人とAIが協働する未来を創造し、');\n this.terminal.writeln(' あらゆるビジネスの可能性を拡げます。');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● お問い合わせ\\x1b[0m');\n this.terminal.writeln(' 詳細については、ログイン後にお問い合わせください。');\n this.completeProcessing();\n }\n // クリアコマンド\n else if (command === 'clear' || command === 'cls') {\n this.terminal.clear();\n this.terminal.scrollToBottom();\n this.completeProcessing();\n }\n // 不明なコマンド\n else {\n this.terminal.writeln(`\\x1b[1;31m● Command not found: ${command}\\x1b[0m`);\n this.terminal.writeln(' Type \"help\" for available commands.');\n this.completeProcessing();\n }\n }\n completeProcessing() {\n this.isProcessing = false;\n this.statusText = 'Ready';\n this.cdr.markForCheck();\n this.terminal.writeln('');\n // 最新の出力が見えるようにスクロール\n this.terminal.scrollToBottom();\n // 入力フィールドにフォーカスを戻す\n setTimeout(() => {\n this.inputField()?.nativeElement?.focus();\n }, 100);\n }\n handleEnter(event) {\n // Shift+EnterまたはCtrl+Enterの場合は改行を許可\n if (event.shiftKey || event.ctrlKey) {\n return; // デフォルト動作(改行)を許可\n }\n event.preventDefault();\n const prefix = 'x_x ';\n const actualCommand = this.currentInput.startsWith(prefix)\n ? this.currentInput.slice(prefix.length).trim()\n : this.currentInput.trim();\n if (actualCommand) {\n // コマンドをターミナルに表示(改行を含む場合は適切に処理)\n const displayCommand = actualCommand.split('\\n').map(line => '\\x1b[32m> x_x \\x1b[0m' + line).join('\\r\\n');\n this.terminal.write(displayCommand + '\\r\\n');\n // 履歴に追加\n this.commandHistory.push(actualCommand);\n this.historyIndex = this.commandHistory.length;\n // コマンドを処理\n this.processCommand(actualCommand);\n // 入力を初期状態にリセット\n this.currentInput = prefix;\n // textareaの高さをリセット\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n textarea.style.height = 'auto';\n }\n }\n }\n navigateHistory(event, direction) {\n event.preventDefault();\n const prefix = 'x_x ';\n if (direction === -1 && this.historyIndex > 0) {\n // 上矢印\n this.historyIndex--;\n this.currentInput = prefix + this.commandHistory[this.historyIndex];\n }\n else if (direction === 1) {\n // 下矢印\n if (this.historyIndex < this.commandHistory.length - 1) {\n this.historyIndex++;\n this.currentInput = prefix + this.commandHistory[this.historyIndex];\n }\n else {\n this.historyIndex = this.commandHistory.length;\n this.currentInput = prefix;\n }\n }\n }\n generateCommand(event) {\n if (event) {\n event.preventDefault();\n }\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● Generating command suggestions...\\x1b[0m');\n setTimeout(() => {\n this.terminal.writeln('\\x1b[1;33m● Suggested commands:\\x1b[0m');\n this.terminal.writeln(' 1. \\x1b[36mauth --provider=google\\x1b[0m');\n this.terminal.writeln(' 2. \\x1b[36mlogin\\x1b[0m');\n this.terminal.writeln(' 3. \\x1b[36mhelp\\x1b[0m');\n this.terminal.writeln('');\n this.cdr.markForCheck();\n }, 500);\n }\n // sideAppを閉じる\n closeSideApp(event) {\n event.stopPropagation();\n this.app.sideApp.collapse();\n }\n // 入力フィールドにフォーカスを設定\n focusInput() {\n this.inputField()?.nativeElement?.focus();\n }\n // textareaの高さを内容に合わせて調整\n adjustTextareaHeight() {\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n // 一旦高さをリセット\n textarea.style.height = '20px';\n // scrollHeightを確認し、実際に必要な高さを設定\n const scrollHeight = textarea.scrollHeight;\n // パディングを考慮した最小高さ\n const minHeight = 44; // padding: 12px * 2 + line-height: 20px\n textarea.style.height = Math.max(minHeight, scrollHeight) + 'px';\n }\n }\n // プレフィックスの削除を防止\n preventPrefixDeletion(event) {\n const textarea = event.target;\n const prefix = 'x_x ';\n const selectionStart = textarea.selectionStart;\n // バックスペースまたはDeleteキーの処理\n if (event.key === 'Backspace' || event.key === 'Delete') {\n if (selectionStart <= prefix.length) {\n event.preventDefault();\n }\n }\n // 左矢印キーでカーソルがプレフィックスより前に行かないように\n if (event.key === 'ArrowLeft' && selectionStart <= prefix.length) {\n event.preventDefault();\n }\n // Home キーでカーソルをプレフィックスの直後に移動\n if (event.key === 'Home') {\n event.preventDefault();\n textarea.setSelectionRange(prefix.length, prefix.length);\n }\n }\n // 入力時の処理\n handleInput(event) {\n const textarea = event.target;\n const prefix = 'x_x ';\n // プレフィックスが削除されていたら復元\n if (!this.currentInput.startsWith(prefix)) {\n this.currentInput = prefix + this.currentInput.replace(/^x_x\\s*/, '');\n // カーソル位置を調整\n setTimeout(() => {\n const newPosition = Math.max(prefix.length, textarea.selectionStart);\n textarea.setSelectionRange(newPosition, newPosition);\n });\n }\n // 高さ調整(改行が含まれている場合のみ)\n if (this.currentInput.includes('\\n')) {\n this.adjustTextareaHeight();\n }\n else {\n // 1行の場合は固定高さ\n textarea.style.height = '44px';\n }\n // カーソル位置を更新\n this.updateCursorPosition();\n }\n // フォーカス時の処理\n handleFocus() {\n this.showCursor = true;\n this.updateCursorPosition();\n }\n // ブラー時の処理\n handleBlur() {\n this.showCursor = false;\n }\n // カーソル位置の更新\n updateCursorPosition() {\n const textarea = this.inputField()?.nativeElement;\n if (!textarea)\n return;\n const cursorPos = textarea.selectionStart;\n const textBeforeCursor = this.currentInput.substring(0, cursorPos);\n // 改行で分割\n const lines = textBeforeCursor.split('\\n');\n const currentLineIndex = lines.length - 1;\n const currentLineText = lines[currentLineIndex];\n // 仮のcanvasを使って現在の行のテキスト幅を計算\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n if (context) {\n context.font = '14px \"SF Mono\", Monaco, monospace';\n const textWidth = context.measureText(currentLineText).width;\n // カーソル位置を設定(パディング分を考慮)\n this.cursorLeft = 8 + textWidth; // 8px は textarea の左パディング\n // 垂直位置を調整(行数に基づいて、スクロール位置も考慮)\n const scrollTop = textarea.scrollTop;\n this.cursorTop = 12 + (currentLineIndex * 20) - scrollTop; // スクロール分を引く\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AgentTemplate, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.0.5\", type: AgentTemplate, isStandalone: true, selector: \"templates-agent\", host: { classAttribute: \"template\" }, viewQueries: [{ propertyName: \"xtermComponent\", first: true, predicate: [\"xtermComponent\"], descendants: true, isSignal: true }, { propertyName: \"inputField\", first: true, predicate: [\"inputField\"], descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.EntranceTemplateStore, inputs: [\"form\", \"form\", \"actions\", \"actions\", \"title\", \"title\", \"fieldMap\", \"fieldMap\"] }], ngImport: i0, template: `\n <div class=\"terminal-window\">\n <div class=\"terminal-header\">\n <button mat-icon-button class=\"close-button\" (click)=\"closeSideApp($event)\" matTooltip=\"閉じる\">\n <mat-icon>close</mat-icon>\n </button>\n <div class=\"terminal-title\">Machina Agent</div>\n <div class=\"terminal-status\">{{ statusText }}</div>\n </div>\n \n <div class=\"terminal-body\">\n <organisms-xterm\n class=\"terminal-display\"\n (terminalReady)=\"onTerminalReady($event)\"\n (githubLinkClick)=\"onGitHubLinkClick($event)\"\n (click)=\"focusInput()\"\n #xtermComponent\n ></organisms-xterm>\n <div class=\"input-area\">\n <div class=\"input-line\">\n <span class=\"input-prefix\">> x_x</span>\n <div class=\"textarea-wrapper\">\n <span class=\"arrow-prefix\">></span>\n <div class=\"input-container\">\n <textarea \n #inputField\n class=\"terminal-input\" \n [(ngModel)]=\"currentInput\"\n (keydown.enter)=\"handleEnter($event)\"\n (keydown.arrowUp)=\"navigateHistory($event, -1)\"\n (keydown.arrowDown)=\"navigateHistory($event, 1)\"\n (keydown.control.k)=\"generateCommand($event)\"\n (keydown.meta.k)=\"generateCommand($event)\"\n (keydown)=\"preventPrefixDeletion($event)\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n (keyup)=\"updateCursorPosition()\"\n (click)=\"updateCursorPosition()\"\n (scroll)=\"updateCursorPosition()\"\n [disabled]=\"isProcessing\"\n placeholder=\"x_x about\"\n rows=\"1\"\n ></textarea>\n <div class=\"block-cursor\" \n [class.visible]=\"showCursor\"\n [style.left.px]=\"cursorLeft\"\n [style.top.px]=\"cursorTop\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n `, isInline: true, styles: [\":host{--h-pad: 20px;--h-pad-SCOPED-IN-entrance-UAKO: var(--h-pad);--text: #e0e0e0;--text-SCOPED-IN-entrance-UAKO: var(--text);--user: #00ff00;--user-SCOPED-IN-entrance-UAKO: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-UAKO: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-UAKO: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-UAKO: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-UAKO);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;padding:0 20px;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-UAKO);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-UAKO);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-UAKO);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-UAKO);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-UAKO);opacity:.7}.terminal-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;transition:all .3s ease}.terminal-body .terminal-display{flex:1;position:relative;background:#0a0a0a;overflow:hidden}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-UAKO);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word;caret-shape:block}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0}.terminal-window{height:100%;max-height:100vh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0 16px}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0 12px}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-UAKO);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-UAKO)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-UAKO),0 0 20px var(--accent-SCOPED-IN-entrance-UAKO);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-entrance-UAKO: var(--text);--user: #0066cc;--user-SCOPED-IN-entrance-UAKO: var(--user);--sys: #666;--sys-SCOPED-IN-entrance-UAKO: var(--sys);--border: #ddd;--border-SCOPED-IN-entrance-UAKO: var(--border)}.terminal-window{background:#ffffffd9;box-shadow:0 10px 30px #00000014}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: i3.MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i4.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"ngmodule\", type: MatTooltipModule }, { kind: \"directive\", type: i5.MatTooltip, selector: \"[matTooltip]\", inputs: [\"matTooltipPosition\", \"matTooltipPositionAtOrigin\", \"matTooltipDisabled\", \"matTooltipShowDelay\", \"matTooltipHideDelay\", \"matTooltipTouchGestures\", \"matTooltip\", \"matTooltipClass\"], exportAs: [\"matTooltip\"] }, { kind: \"component\", type: XtermOrganism, selector: \"organisms-xterm\", outputs: [\"terminalReady\", \"githubLinkClick\"] }], changeDetection: i0.ChangeDetectionStrategy.Default });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AgentTemplate, decorators: [{\n type: Component,\n args: [{ selector: 'templates-agent', imports: [\n CommonModule,\n FormsModule,\n AutoLayoutFrame,\n CardFrame,\n ActionButtonsSectionOrganism,\n HeadingOrganism,\n NgAtomicFormSectionBuilder,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n XtermOrganism,\n ], template: `\n <div class=\"terminal-window\">\n <div class=\"terminal-header\">\n <button mat-icon-button class=\"close-button\" (click)=\"closeSideApp($event)\" matTooltip=\"閉じる\">\n <mat-icon>close</mat-icon>\n </button>\n <div class=\"terminal-title\">Machina Agent</div>\n <div class=\"terminal-status\">{{ statusText }}</div>\n </div>\n \n <div class=\"terminal-body\">\n <organisms-xterm\n class=\"terminal-display\"\n (terminalReady)=\"onTerminalReady($event)\"\n (githubLinkClick)=\"onGitHubLinkClick($event)\"\n (click)=\"focusInput()\"\n #xtermComponent\n ></organisms-xterm>\n <div class=\"input-area\">\n <div class=\"input-line\">\n <span class=\"input-prefix\">> x_x</span>\n <div class=\"textarea-wrapper\">\n <span class=\"arrow-prefix\">></span>\n <div class=\"input-container\">\n <textarea \n #inputField\n class=\"terminal-input\" \n [(ngModel)]=\"currentInput\"\n (keydown.enter)=\"handleEnter($event)\"\n (keydown.arrowUp)=\"navigateHistory($event, -1)\"\n (keydown.arrowDown)=\"navigateHistory($event, 1)\"\n (keydown.control.k)=\"generateCommand($event)\"\n (keydown.meta.k)=\"generateCommand($event)\"\n (keydown)=\"preventPrefixDeletion($event)\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n (keyup)=\"updateCursorPosition()\"\n (click)=\"updateCursorPosition()\"\n (scroll)=\"updateCursorPosition()\"\n [disabled]=\"isProcessing\"\n placeholder=\"x_x about\"\n rows=\"1\"\n ></textarea>\n <div class=\"block-cursor\" \n [class.visible]=\"showCursor\"\n [style.left.px]=\"cursorLeft\"\n [style.top.px]=\"cursorTop\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n `, host: {\n class: 'template'\n }, changeDetection: ChangeDetectionStrategy.Default, hostDirectives: [\n {\n directive: EntranceTemplateStore,\n inputs: [\n 'form',\n 'actions',\n 'title',\n 'fieldMap',\n ],\n },\n ], styles: [\":host{--h-pad: 20px;--h-pad-SCOPED-IN-entrance-UAKO: var(--h-pad);--text: #e0e0e0;--text-SCOPED-IN-entrance-UAKO: var(--text);--user: #00ff00;--user-SCOPED-IN-entrance-UAKO: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-UAKO: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-UAKO: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-UAKO: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-UAKO);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;padding:0 20px;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-UAKO);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-UAKO);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-UAKO);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-UAKO);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-UAKO);opacity:.7}.terminal-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;transition:all .3s ease}.terminal-body .terminal-display{flex:1;position:relative;background:#0a0a0a;overflow:hidden}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-UAKO);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word;caret-shape:block}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0}.terminal-window{height:100%;max-height:100vh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0 16px}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0 12px}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-UAKO);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-UAKO)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-UAKO),0 0 20px var(--accent-SCOPED-IN-entrance-UAKO);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-entrance-UAKO: var(--text);--user: #0066cc;--user-SCOPED-IN-entrance-UAKO: var(--user);--sys: #666;--sys-SCOPED-IN-entrance-UAKO: var(--sys);--border: #ddd;--border-SCOPED-IN-entrance-UAKO: var(--border)}.terminal-window{background:#ffffffd9;box-shadow:0 10px 30px #00000014}}\\n\"] }]\n }] });\nexport function provideAgentTemplate() {\n return [\n provideComponent(EntranceTemplateStore, () => AgentTemplate),\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQudGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AeHhtYWNoaW5hL2NvbXBvbmVudHMvc3JjL2xpYi90ZW1wbGF0ZXMvYWdlbnQvYWdlbnQudGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQXVDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0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VUFBVTs2QkFDWDt5QkFDRjtxQkFDRjs7QUFvYUgsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPO1FBQ0wsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO0tBQzdELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgUHJvdmlkZXIsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdBdG9taWNDb21wb25lbnQsIHByb3ZpZGVDb21wb25lbnQgfSBmcm9tICdAbmctYXRvbWljL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQXV0b0xheW91dEZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9hdXRvLWxheW91dCc7XG5pbXBvcnQgeyBDYXJkRnJhbWUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvZnJhbWVzL2NhcmQnO1xuaW1wb3J0IHsgQWN0aW9uQnV0dG9uc1NlY3Rpb25PcmdhbmlzbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvYWN0aW9uLWJ1dHRvbnMtc2VjdGlvbic7XG5pbXBvcnQgeyBIZWFkaW5nT3JnYW5pc20gfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL2hlYWRpbmcnO1xuaW1wb3J0IHsgTmdBdG9taWNGb3JtU2VjdGlvbkJ1aWxkZXIgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvdGVtcGxhdGVzL2Zvcm0nO1xuaW1wb3J0IHsgRW50cmFuY2VUZW1wbGF0ZVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9lbnRyYW5jZSc7XG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvYXBwJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBUZXJtaW5hbCB9IGZyb20gJ0B4dGVybS94dGVybSc7XG5pbXBvcnQgeyBYdGVybU9yZ2FuaXNtIH0gZnJvbSAnQHh4bWFjaGluYS9jb21wb25lbnRzL29yZ2FuaXNtcy94dGVybSc7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5cbmVudW0gQWN0aW9uSWQge1xuICBTSUdOX0lOID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHNdIFNpZ24gSW4nLFxuICBTSUdOX0lOX1dJVEhfR09PR0xFID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHNdIFNpZ24gSW4gV2l0aCBHb29nbGUnLFxuICBTSUdOX0lOX1dJVEhfVFdJVFRFUiA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzXSBTaWduIEluIFdpdGggVHdpdHRlcicsXG4gIFNJR05fT1VUID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHNdIFNpZ24gT3V0Jyxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGVtcGxhdGVzLWFnZW50JyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBdXRvTGF5b3V0RnJhbWUsXG4gICAgQ2FyZEZyYW1lLFxuICAgIEFjdGlvbkJ1dHRvbnNTZWN0aW9uT3JnYW5pc20sXG4gICAgSGVhZGluZ09yZ2FuaXNtLFxuICAgIE5nQXRvbWljRm9ybVNlY3Rpb25CdWlsZGVyLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgWHRlcm1PcmdhbmlzbSxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgPGRpdiBjbGFzcz1cInRlcm1pbmFsLXdpbmRvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXJtaW5hbC1oZWFkZXJcIj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiY2xvc2UtYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlU2lkZUFwcCgkZXZlbnQpXCIgbWF0VG9vbHRpcD1cIumWieOBmOOCi1wiPlxuICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwidGVybWluYWwtdGl0bGVcIj5NYWNoaW5hIEFnZW50PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGVybWluYWwtc3RhdHVzXCI+e3sgc3RhdHVzVGV4dCB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXYgY2xhc3M9XCJ0ZXJtaW5hbC1ib2R5XCI+XG4gICAgICA8b3JnYW5pc21zLXh0ZXJtXG4gICAgICAgIGNsYXNzPVwidGVybWluYWwtZGlzcGxheVwiXG4gICAgICAgICh0ZXJtaW5hbFJlYWR5KT1cIm9uVGVybWluYWxSZWFkeSgkZXZlbnQpXCJcbiAgICAgICAgKGdpdGh1YkxpbmtDbGljayk9XCJvbkdpdEh1YkxpbmtDbGljaygkZXZlbnQpXCJcbiAgICAgICAgKGNsaWNrKT1cImZvY3VzSW5wdXQoKVwiXG4gICAgICAgICN4dGVybUNvbXBvbmVudFxuICAgICAgPjwvb3JnYW5pc21zLXh0ZXJtPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWFyZWFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWxpbmVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LXByZWZpeFwiPj4geF94PC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0YXJlYS13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93LXByZWZpeFwiPj48L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDx0ZXh0YXJlYSBcbiAgICAgICAgICAgICAgICAjaW5wdXRGaWVsZFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGVybWluYWwtaW5wdXRcIiBcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImN1cnJlbnRJbnB1dFwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiaGFuZGxlRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3dVcCk9XCJuYXZpZ2F0ZUhpc3RvcnkoJGV2ZW50LCAtMSlcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93RG93bik9XCJuYXZpZ2F0ZUhpc3RvcnkoJGV2ZW50LCAxKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uY29udHJvbC5rKT1cImdlbmVyYXRlQ29tbWFuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5tZXRhLmspPVwiZ2VuZXJhdGVDb21tYW5kKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cInByZXZlbnRQcmVmaXhEZWxldGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoaW5wdXQpPVwiaGFuZGxlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cImhhbmRsZUZvY3VzKClcIlxuICAgICAgICAgICAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwKT1cInVwZGF0ZUN1cnNvclBvc2l0aW9uKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVDdXJzb3JQb3NpdGlvbigpXCJcbiAgICAgICAgICAgICAgICAoc2Nyb2xsKT1cInVwZGF0ZUN1cnNvclBvc2l0aW9uKClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmdcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwieF94IGFib3V0XCJcbiAgICAgICAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmxvY2stY3Vyc29yXCIgXG4gICAgICAgICAgICAgICAgW2NsYXNzLnZpc2libGVdPVwic2hvd0N1cnNvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiY3Vyc29yTGVmdFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJjdXJzb3JUb3BcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2FnZW50LnRlbXBsYXRlLnNjc3MnXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAndGVtcGxhdGUnXG4gIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IEVudHJhbmNlVGVtcGxhdGVTdG9yZSxcbiAgICAgIGlucHV0czogW1xuICAgICAgICAnZm9ybScsXG4gICAgICAgICdhY3Rpb25zJyxcbiAgICAgICAgJ3RpdGxlJyxcbiAgICAgICAgJ2ZpZWxkTWFwJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBZ2VudFRlbXBsYXRlIGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgc3RhdGljIEFjdGlvbklkID0gQWN0aW9uSWQ7XG4gIHByb3RlY3RlZCBBY3Rpb25JZCA9IEFjdGlvbklkO1xuICBwcm90ZWN0ZWQgc3RvcmUgPSBpbmplY3QoRW50cmFuY2VUZW1wbGF0ZVN0b3JlKTtcbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcblxuICByZWFkb25seSB4dGVybUNvbXBvbmVudCA9IHZpZXdDaGlsZDxYdGVybU9yZ2FuaXNtPigneHRlcm1Db21wb25lbnQnKTtcbiAgcmVhZG9ubHkgaW5wdXRGaWVsZCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+PignaW5wdXRGaWVsZCcpO1xuXG4gIHByb3RlY3RlZCBzdGF0dXNUZXh0ID0gJ1JlYWR5JztcbiAgcHJvdGVjdGVkIGlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc2hvd0N1cnNvciA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgY3Vyc29yTGVmdCA9IDYwO1xuICBwcm90ZWN0ZWQgY3Vyc29yVG9wID0gMTI7XG5cbiAgLy8geHRlcm3plqLpgKNcbiAgcHJpdmF0ZSB0ZXJtaW5hbCE6IFRlcm1pbmFsO1xuICBwcml2YXRlIGNvbW1hbmRIaXN0b3J5OiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGhpc3RvcnlJbmRleCA9IC0xO1xuICBcbiAgLy8g5YWl5Yqb566h55CGXG4gIHByb3RlY3RlZCBjdXJyZW50SW5wdXQgPSAneF94ICc7XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vIOWFpeWKm+ODleOCo+ODvOODq+ODieOBq+ODleOCqeODvOOCq+OCuVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmICh0ZXh0YXJlYSkge1xuICAgICAgICB0ZXh0YXJlYS5mb2N1cygpO1xuICAgICAgICAvLyDliJ3mnJ/pq5jjgZXjgpLpganliIfjgavoqK3lrppcbiAgICAgICAgdGhpcy5hZGp1c3RUZXh0YXJlYUhlaWdodCgpO1xuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH1cblxuICBvblRlcm1pbmFsUmVhZHkodGVybWluYWw6IFRlcm1pbmFsKSB7XG4gICAgdGhpcy50ZXJtaW5hbCA9IHRlcm1pbmFsO1xuXG4gICAgLy8g5Yid5pyf44Oh44OD44K744O844K444Gu6KGo56S6XG4gICAgdGhpcy5zaG93V2VsY29tZU1lc3NhZ2UoKTtcblxuICAgIC8vIOWIneWbnuODreODvOODieaZguOBr+acgOS4iumDqOOBq+OCueOCr+ODreODvOODq++8iOOCouOCueOCreODvOOCouODvOODiOOBi+OCieimi+OBiOOCi+OCiOOBhuOBq++8iVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy50ZXJtaW5hbC5zY3JvbGxUb1RvcCgpO1xuICAgIH0sIDUwKTtcblxuICAgIC8vIOWFpeWKm+ODleOCo+ODvOODq+ODieOBq+ODleOCqeODvOOCq+OCueOBqOmrmOOBleiqv+aVtFxuICAgIGNvbnN0IHRleHRhcmVhID0gdGhpcy5pbnB1dEZpZWxkKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKHRleHRhcmVhKSB7XG4gICAgICB0ZXh0YXJlYS5mb2N1cygpO1xuICAgICAgdGhpcy5hZGp1c3RUZXh0YXJlYUhlaWdodCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uR2l0SHViTGlua0NsaWNrKGlzc3VlTnVtYmVyOiBudW1iZXIpIHtcbiAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9naXRodWIuY29tL25vbnRhbmdlbnQveF94X21hY2hpbmEvaXNzdWVzLyR7aXNzdWVOdW1iZXJ9YDtcbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1dlbGNvbWVNZXNzYWdlKCkge1xuICAgIC8vIOOCouOCueOCreODvOOCouODvOODiO+8iGxhaW7poqjjga7oibLjgafvvIlcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KWiOKWiOKWiOKVlyAgIOKWiOKWiOKWiOKVlyDilojilojilojilojilojilZcgIOKWiOKWiOKWiOKWiOKWiOKWiOKVl+KWiOKWiOKVlyAg4paI4paI4pWX4paI4paI4pWX4paI4paI4paI4pWXICAg4paI4paI4pWXIOKWiOKWiOKWiOKWiOKWiOKVlyAnKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4paI4paI4paI4paI4pWXIOKWiOKWiOKWiOKWiOKVkeKWiOKWiOKVlOKVkOKVkOKWiOKWiOKVl+KWiOKWiOKVlOKVkOKVkOKVkOKVkOKVneKWiOKWiOKVkSAg4paI4paI4pWR4paI4paI4pWR4paI4paI4paI4paI4pWXICDilojilojilZHilojilojilZTilZDilZDilojilojilZcnKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4paI4paI4pWU4paI4paI4paI4paI4pWU4paI4paI4pWR4paI4paI4paI4paI4paI4paI4paI4pWR4paI4paI4pWRICAgICDilojilojilojilojilojilojilojilZHilojilojilZHilojilojilZTilojilojilZcg4paI4paI4pWR4paI4paI4paI4paI4paI4paI4paI4pWRJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KWiOKWiOKVkeKVmuKWiOKWiOKVlOKVneKWiOKWiOKVkeKWiOKWiOKVlOKVkOKVkOKWiOKWiOKVkeKWiOKWiOKVkSAgICAg4paI4paI4pWU4pWQ4pWQ4paI4paI4pWR4paI4paI4pWR4paI4paI4pWR4pWa4paI4paI4pWX4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4paI4paI4pWRJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KWiOKWiOKVkSDilZrilZDilZ0g4paI4paI4pWR4paI4paI4pWRICDilojilojilZHilZrilojilojilojilojilojilojilZfilojilojilZEgIOKWiOKWiOKVkeKWiOKWiOKVkeKWiOKWiOKVkSDilZrilojilojilojilojilZHilojilojilZEgIOKWiOKWiOKVkScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfilZrilZDilZ0gICAgIOKVmuKVkOKVneKVmuKVkOKVnSAg4pWa4pWQ4pWdIOKVmuKVkOKVkOKVkOKVkOKVkOKVneKVmuKVkOKVnSAg4pWa4pWQ4pWd4pWa4pWQ4pWd4pWa4pWQ4pWdICDilZrilZDilZDilZDilZ3ilZrilZDilZ0gIOKVmuKVkOKVnScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCcgICAgIOKWiOKWiOKWiOKWiOKWiOKVlyAg4paI4paI4paI4paI4paI4paI4pWXIOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKVl+KWiOKWiOKWiOKVlyAgIOKWiOKWiOKVl+KWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKVlycpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCcgICAg4paI4paI4pWU4pWQ4pWQ4paI4paI4pWX4paI4paI4pWU4pWQ4pWQ4pWQ4pWQ4pWdIOKWiOKWiOKVlOKVkOKVkOKVkOKVkOKVneKWiOKWiOKWiOKWiOKVlyAg4paI4paI4pWR4pWa4pWQ4pWQ4paI4paI4pWU4pWQ4pWQ4pWdJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJyAgICDilojilojilojilojilojilojilojilZHilojilojilZEgIOKWiOKWiOKWiOKVl+KWiOKWiOKWiOKWiOKWiOKVlyAg4paI4paI4pWU4paI4paI4pWXIOKWiOKWiOKVkSAgIOKWiOKWiOKVkSAgICcpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCcgICAg4paI4paI4pWU4pWQ4pWQ4paI4paI4pWR4paI4paI4pWRICAg4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4pWdICDilojilojilZHilZrilojilojilZfilojilojilZEgICDilojilojilZEgICAnKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbignICAgIOKWiOKWiOKVkSAg4paI4paI4pWR4pWa4paI4paI4paI4paI4paI4paI4pWU4pWd4paI4paI4paI4paI4paI4paI4paI4pWX4paI4paI4pWRIOKVmuKWiOKWiOKWiOKWiOKVkSAgIOKWiOKWiOKVkSAgICcpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCcgICAg4pWa4pWQ4pWdICDilZrilZDilZ0g4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWdIOKVmuKVkOKVkOKVkOKVkOKVkOKVkOKVneKVmuKVkOKVnSAg4pWa4pWQ4pWQ4pWQ4pWdICAg4pWa4pWQ4pWdICAgJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4pePIFdlbGNvbWUgdG8gXFx4MWJbMTs5M23lkIjlkIzkvJrnpL7jg57jgq3jg4rjgqjjg7zjgrjjgqfjg7Pjg4hcXHgxYlswbScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KXjyDkvJrnpL7mpoLopoFcXHgxYlswbScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDlkIjlkIzkvJrnpL7jg57jgq3jg4rjgqjjg7zjgrjjgqfjg7Pjg4jjga/jgIFBSeaKgOihk+OCkua0u+eUqOOBl+OBnycpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDpnanmlrDnmoTjgarjgr3jg6rjg6Xjg7zjgrfjg6fjg7PjgpLmj5DkvpvjgZnjgovkvIHmpa3jgafjgZnjgIInKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfil48g5LqL5qWt5YaF5a65XFx4MWJbMG0nKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgLSDjgrfjgrnjg4bjg6Dplovnmbrjga7jgrPjg7PjgrXjg6vjg4bjgqPjg7PjgrDkuovmpa0nKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgLSBBSeOCouOCuOODo+OCpOODq+mWi+eZuuOBruWwjuWFpeaUr+aPtOS6i+alrScpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIOiHquW3seaUueWkieWei0FJ44Ko44O844K444Kn44Oz44OIKOOCquODvOODiOODneOCpOOCqOODvOOCt+OCuSnjga7plovnmbrkuovmpa0nKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfil48g44OT44K444On44OzXFx4MWJbMG0nKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAg5Lq644GoQUnjgYzljZTlg43jgZnjgovmnKrmnaXjgpLlibXpgKDjgZfjgIEnKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAg44GC44KJ44KG44KL44OT44K444ON44K544Gu5Y+v6IO95oCn44KS5ouh44GS44G+44GZ44CCJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcblxuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KXjyBUeXBlIFxceDFiWzE7MzZtbG9naW5cXHgxYlsxOzMzbSB0byBzaWduIGluIHdpdGggR29vZ2xlXFx4MWJbMG0nKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4pePIFR5cGUgXFx4MWJbMTszNm1oZWxwXFx4MWJbMTszM20gZm9yIG1vcmUgY29tbWFuZHNcXHgxYlswbScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgXG4gICAgLy8g44OX44Ot44Oz44OX44OI6KGo56S6XG4gICAgdGhpcy5zaG93UHJvbXB0KCk7XG4gIH1cblxuXG4gIHByaXZhdGUgc2hvd1Byb21wdCgpIHtcbiAgICAvLyDjg5fjg63jg7Pjg5fjg4jjga9IVE1M5YG044Gu5YWl5Yqb44OV44Kj44O844Or44OJ44Gn6KGo56S644GZ44KL44Gf44KB5LiN6KaBXG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NDb21tYW5kKGNvbW1hbmQ6IHN0cmluZykge1xuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXR1c1RleHQgPSAnUHJvY2Vzc2luZy4uLic7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAvLyDjg63jgrDjgqTjg7PjgrPjg57jg7Pjg4lcbiAgICBpZiAoY29tbWFuZCA9PT0gJ2xvZ2luJykge1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzMybeKXjyBJbml0aWF0aW5nIEdvb2dsZSBhdXRoZW50aWNhdGlvbi4uLlxceDFiWzBtJyk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBBY3Rpb25JZC5TSUdOX0lOX1dJVEhfR09PR0xFIH0pO1xuICAgICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29tbWFuZC5zdGFydHNXaXRoKCdhdXRoJykpIHtcbiAgICAgIGlmIChjb21tYW5kLmluY2x1ZGVzKCdnb29nbGUnKSkge1xuICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIEluaXRpYXRpbmcgR29vZ2xlIGF1dGhlbnRpY2F0aW9uLi4uXFx4MWJbMG0nKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBBY3Rpb25JZC5TSUdOX0lOX1dJVEhfR09PR0xFIH0pO1xuICAgICAgICAgIHRoaXMuY29tcGxldGVQcm9jZXNzaW5nKCk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9IGVsc2UgaWYgKGNvbW1hbmQuaW5jbHVkZXMoJ3R3aXR0ZXInKSkge1xuICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIEluaXRpYXRpbmcgVHdpdHRlciBhdXRoZW50aWNhdGlvbi4uLlxceDFiWzBtJyk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2goeyBpZDogQWN0aW9uSWQuU0lHTl9JTl9XSVRIX1RXSVRURVIgfSk7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH0gZWxzZSBpZiAoY29tbWFuZC5pbmNsdWRlcygnbG9jYWwnKSkge1xuICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIEluaXRpYXRpbmcgbG9jYWwgYXV0aGVudGljYXRpb24uLi5cXHgxYlswbScpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoKHsgaWQ6IEFjdGlvbklkLlNJR05fSU4gfSk7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gQXZhaWxhYmxlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHM6XFx4MWJbMG0nKTtcbiAgICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIC0gYXV0aCAtLXByb3ZpZGVyPWdvb2dsZScpO1xuICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgLSBhdXRoIC0tcHJvdmlkZXI9dHdpdHRlcicpO1xuICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgLSBhdXRoIC0tcHJvdmlkZXI9bG9jYWwnKTtcbiAgICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8g44Ot44Kw44Ki44Km44OI44Kz44Oe44Oz44OJXG4gICAgZWxzZSBpZiAoY29tbWFuZCA9PT0gJ2xvZ291dCcgfHwgY29tbWFuZCA9PT0gJ3NpZ25vdXQnKSB7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIFNpZ25pbmcgb3V0Li4uXFx4MWJbMG0nKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKHsgaWQ6IEFjdGlvbklkLlNJR05fT1VUIH0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIFlvdSBoYXZlIGJlZW4gc2lnbmVkIG91dC5cXHgxYlswbScpO1xuICAgICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszM23il48gVHlwZSBcImxvZ2luXCIgdG8gc2lnbiBpbiBhZ2Fpbi5cXHgxYlswbScpO1xuICAgICAgICAgIHRoaXMuY29tcGxldGVQcm9jZXNzaW5nKCk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9LCAzMDApO1xuICAgIH1cbiAgICAvLyDjg5jjg6vjg5fjgrPjg57jg7Pjg4lcbiAgICBlbHNlIGlmIChjb21tYW5kID09PSAnaGVscCcgfHwgY29tbWFuZCA9PT0gJz8nKSB7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIEF2YWlsYWJsZSBjb21tYW5kczpcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2bWxvZ2luXFx4MWJbMG0gICAgICAgICAgICAtIFNpZ24gaW4gd2l0aCBHb29nbGUgKGRlZmF1bHQpJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgXFx4MWJbMzZtYXV0aFxceDFiWzBtIC0tcHJvdmlkZXI9XFx4MWJbMzNtZ29vZ2xlXFx4MWJbMG0gICAtIFNpZ24gaW4gd2l0aCBHb29nbGUnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm1hdXRoXFx4MWJbMG0gLS1wcm92aWRlcj1cXHgxYlszM210d2l0dGVyXFx4MWJbMG0gIC0gU2lnbiBpbiB3aXRoIFR3aXR0ZXInKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm1hdXRoXFx4MWJbMG0gLS1wcm92aWRlcj1cXHgxYlszM21sb2NhbFxceDFiWzBtICAgIC0gU2lnbiBpbiB3aXRoIGVtYWlsL3Bhc3N3b3JkJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgXFx4MWJbMzZtbG9nb3V0XFx4MWJbMG0gLyBcXHgxYlszNm1zaWdub3V0XFx4MWJbMG0gLSBTaWduIG91dCBmcm9tIHRoZSBhcHBsaWNhdGlvbicpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2bWFib3V0XFx4MWJbMG0gICAgICAgICAgICAtIFNob3cgY29tcGFueSBpbmZvcm1hdGlvbicpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2bWNsZWFyXFx4MWJbMG0gICAgICAgICAgICAtIENsZWFyIHRlcm1pbmFsJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgXFx4MWJbMzZtaGVscFxceDFiWzBtIC8gXFx4MWJbMzZtP1xceDFiWzBtICAgICAgICAtIFNob3cgdGhpcyBoZWxwJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzMzbeKXjyBLZXlib2FyZCBzaG9ydGN1dHM6XFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm3ijJhLXFx4MWJbMG0gLyBcXHgxYlszNm1DdHJsK0tcXHgxYlswbSAgICAtIEdlbmVyYXRlIGNvbW1hbmQgc3VnZ2VzdGlvbnMnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm3ihpFcXHgxYlswbSAvIFxceDFiWzM2beKGk1xceDFiWzBtICAgICAgICAgICAtIE5hdmlnYXRlIGNvbW1hbmQgaGlzdG9yeScpO1xuICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICB9XG4gICAgLy8g5Lya56S+5oOF5aCx44Kz44Oe44Oz44OJXG4gICAgZWxzZSBpZiAoY29tbWFuZCA9PT0gJ2Fib3V0Jykge1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzM2beKXjyDlkIjlkIzkvJrnpL7jg57jgq3jg4rjgqjjg7zjgrjjgqfjg7Pjg4hcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48g5Lya56S+5qaC6KaBXFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDlkIjlkIzkvJrnpL7jg57jgq3jg4rjgqjjg7zjgrjjgqfjg7Pjg4jjga/jgIFBSeaKgOihk+OCkua0u+eUqOOBl+OBnycpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIOmdqeaWsOeahOOBquOCveODquODpeODvOOCt+ODp+ODs+OCkuaPkOS+m+OBmeOCi+S8gealreOBp+OBmeOAgicpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48g5LqL5qWt5YaF5a65XFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIOOCt+OCueODhuODoOmWi+eZuuOBruOCs+ODs+OCteODq+ODhuOCo+ODs+OCsOS6i+alrScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIC0gQUnjgqLjgrjjg6PjgqTjg6vplovnmbrjga7lsI7lhaXmlK/mj7Tkuovmpa0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIOiHquW3seaUueWkieWei0FJ44Ko44O844K444Kn44Oz44OIKOOCquODvOODiOODneOCpOOCqOODvOOCt+OCuSnjga7plovnmbrkuovmpa0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIOODk+OCuOODp+ODs1xceDFiWzBtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAg5Lq644GoQUnjgYzljZTlg43jgZnjgovmnKrmnaXjgpLlibXpgKDjgZfjgIEnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDjgYLjgonjgobjgovjg5Pjgrjjg43jgrnjga7lj6/og73mgKfjgpLmi6HjgZLjgb7jgZnjgIInKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIOOBiuWVj+OBhOWQiOOCj+OBm1xceDFiWzBtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAg6Kmz57Sw44Gr44Gk44GE44Gm44Gv44CB44Ot44Kw44Kk44Oz5b6M44Gr44GK5ZWP44GE5ZCI44KP44Gb44GP44Gg44GV44GE44CCJyk7XG4gICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgIH1cbiAgICAvLyDjgq/jg6rjgqLjgrPjg57jg7Pjg4lcbiAgICBlbHNlIGlmIChjb21tYW5kID09PSAnY2xlYXInIHx8IGNvbW1hbmQgPT09ICdjbHMnKSB7XG4gICAgICB0aGlzLnRlcm1pbmFsLmNsZWFyKCk7XG4gICAgICB0aGlzLnRlcm1pbmFsLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgIH1cbiAgICAvLyDkuI3mmI7jgarjgrPjg57jg7Pjg4lcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgXFx4MWJbMTszMW3il48gQ29tbWFuZCBub3QgZm91bmQ6ICR7Y29tbWFuZH1cXHgxYlswbWApO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFR5cGUgXCJoZWxwXCIgZm9yIGF2YWlsYWJsZSBjb21tYW5kcy4nKTtcbiAgICAgIHRoaXMuY29tcGxldGVQcm9jZXNzaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb21wbGV0ZVByb2Nlc3NpbmcoKSB7XG4gICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXR1c1RleHQgPSAnUmVhZHknO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgXG4gICAgLy8g5pyA5paw44Gu5Ye65Yqb44GM6KaL44GI44KL44KI44GG44Gr44K544Kv44Ot44O844OrXG4gICAgdGhpcy50ZXJtaW5hbC5zY3JvbGxUb0JvdHRvbSgpO1xuICAgIFxuICAgIC8vIOWFpeWKm+ODleOCo+ODvOODq+ODieOBq+ODleOCqeODvOOCq+OCueOCkuaIu+OBmVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pbnB1dEZpZWxkKCk/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIGhhbmRsZUVudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy8gU2hpZnQrRW50ZXLjgb7jgZ/jga9DdHJsK0VudGVy44Gu5aC05ZCI44Gv5pS56KGM44KS6Kix5Y+vXG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgIHJldHVybjsgLy8g44OH44OV44Kp44Or44OI5YuV5L2c77yI5pS56KGM77yJ44KS6Kix5Y+vXG4gICAgfVxuICAgIFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgcHJlZml4ID0gJ3hfeCAnO1xuICAgIGNvbnN0IGFjdHVhbENvbW1hbmQgPSB0aGlzLmN1cnJlbnRJbnB1dC5zdGFydHNXaXRoKHByZWZpeCkgXG4gICAgICA/IHRoaXMuY3VycmVudElucHV0LnNsaWNlKHByZWZpeC5sZW5ndGgpLnRyaW0oKVxuICAgICAgOiB0aGlzLmN1cnJlbnRJbnB1dC50cmltKCk7XG4gICAgXG4gICAgaWYgKGFjdHVhbENvbW1hbmQpIHtcbiAgICAgIC8vIOOCs+ODnuODs+ODieOCkuOCv+ODvOODn+ODiuODq+OBq+ihqOekuu+8iOaUueihjOOCkuWQq+OCgOWgtOWQiOOBr+mBqeWIh+OBq+WHpueQhu+8iVxuICAgICAgY29uc3QgZGlzcGxheUNvbW1hbmQgPSBhY3R1YWxDb21tYW5kLnNwbGl0KCdcXG4nKS5tYXAobGluZSA9PiAnXFx4MWJbMzJtPiB4X3ggXFx4MWJbMG0nICsgbGluZSkuam9pbignXFxyXFxuJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlKGRpc3BsYXlDb21tYW5kICsgJ1xcclxcbicpO1xuICAgICAgXG4gICAgICAvLyDlsaXmrbTjgavov73liqBcbiAgICAgIHRoaXMuY29tbWFuZEhpc3RvcnkucHVzaChhY3R1YWxDb21tYW5kKTtcbiAgICAgIHRoaXMuaGlzdG9yeUluZGV4ID0gdGhpcy5jb21tYW5kSGlzdG9yeS5sZW5ndGg7XG4gICAgICBcbiAgICAgIC8vIOOCs+ODnuODs+ODieOCkuWHpueQhlxuICAgICAgdGhpcy5wcm9jZXNzQ29tbWFuZChhY3R1YWxDb21tYW5kKTtcbiAgICAgIFxuICAgICAgLy8g5YWl5Yqb44KS5Yid5pyf54q25oWL44Gr44Oq44K744OD44OIXG4gICAgICB0aGlzLmN1cnJlbnRJbnB1dCA9IHByZWZpeDtcbiAgICAgIFxuICAgICAgLy8gdGV4dGFyZWHjga7pq5jjgZXjgpLjg6rjgrvjg4Pjg4hcbiAgICAgIGNvbnN0IHRleHRhcmVhID0gdGhpcy5pbnB1dEZpZWxkKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBpZiAodGV4dGFyZWEpIHtcbiAgICAgICAgdGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgbmF2aWdhdGVIaXN0b3J5KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBkaXJlY3Rpb246IG51bWJlcikge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgcHJlZml4ID0gJ3hfeCAnO1xuICAgIFxuICAgIGlmIChkaXJlY3Rpb24gPT09IC0xICYmIHRoaXMuaGlzdG9yeUluZGV4ID4gMCkge1xuICAgICAgLy8g5LiK55+i5Y2wXG4gICAgICB0aGlzLmhpc3RvcnlJbmRleC0tO1xuICAgICAgdGhpcy5jdXJyZW50SW5wdXQgPSBwcmVmaXggKyB0aGlzLmNvbW1hbmRIaXN0b3J5W3RoaXMuaGlzdG9yeUluZGV4XTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gMSkge1xuICAgICAgLy8g5LiL55+i5Y2wXG4gICAgICBpZiAodGhpcy5oaXN0b3J5SW5kZXggPCB0aGlzLmNvbW1hbmRIaXN0b3J5Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5SW5kZXgrKztcbiAgICAgICAgdGhpcy5jdXJyZW50SW5wdXQgPSBwcmVmaXggKyB0aGlzLmNvbW1hbmRIaXN0b3J5W3RoaXMuaGlzdG9yeUluZGV4XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGlzdG9yeUluZGV4ID0gdGhpcy5jb21tYW5kSGlzdG9yeS5sZW5ndGg7XG4gICAgICAgIHRoaXMuY3VycmVudElucHV0ID0gcHJlZml4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgZ2VuZXJhdGVDb21tYW5kKGV2ZW50PzogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIEdlbmVyYXRpbmcgY29tbWFuZCBzdWdnZXN0aW9ucy4uLlxceDFiWzBtJyk7XG4gICAgXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzNt4pePIFN1Z2dlc3RlZCBjb21tYW5kczpcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIDEuIFxceDFiWzM2bWF1dGggLS1wcm92aWRlcj1nb29nbGVcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIDIuIFxceDFiWzM2bWxvZ2luXFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAzLiBcXHgxYlszNm1oZWxwXFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9LCA1MDApO1xuICB9XG5cbiAgLy8gc2lkZUFwcOOCkumWieOBmOOCi1xuICBjbG9zZVNpZGVBcHAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmFwcC5zaWRlQXBwLmNvbGxhcHNlKCk7XG4gIH1cblxuICAvLyDlhaXlipvjg5XjgqPjg7zjg6vjg4njgavjg5Xjgqnjg7zjgqvjgrnjgpLoqK3lrppcbiAgZm9jdXNJbnB1dCgpIHtcbiAgICB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIC8vIHRleHRhcmVh44Gu6auY44GV44KS5YaF5a6544Gr5ZCI44KP44Gb44Gm6Kq/5pW0XG4gIGFkanVzdFRleHRhcmVhSGVpZ2h0KCkge1xuICAgIGNvbnN0IHRleHRhcmVhID0gdGhpcy5pbnB1dEZpZWxkKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKHRleHRhcmVhKSB7XG4gICAgICAvLyDkuIDml6bpq5jjgZXjgpLjg6rjgrvjg4Pjg4hcbiAgICAgIHRleHRhcmVhLnN0eWxlLmhlaWdodCA9ICcyMHB4JztcbiAgICAgIC8vIHNjcm9sbEhlaWdodOOCkueiuuiqjeOBl+OAgeWun+mam+OBq+W/heimgeOBqumrmOOBleOCkuioreWumlxuICAgICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gdGV4dGFyZWEuc2Nyb2xsSGVpZ2h0O1xuICAgICAgLy8g44OR44OH44Kj44Oz44Kw44KS6ICD5oWu44GX44Gf5pyA5bCP6auY44GVXG4gICAgICBjb25zdCBtaW5IZWlnaHQgPSA0NDsgLy8gcGFkZGluZzogMTJweCAqIDIgKyBsaW5lLWhlaWdodDogMjBweFxuICAgICAgdGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gTWF0aC5tYXgobWluSGVpZ2h0LCBzY3JvbGxIZWlnaHQpICsgJ3B4JztcbiAgICB9XG4gIH1cblxuICAvLyDjg5fjg6zjg5XjgqPjg4Pjgq/jgrnjga7liYrpmaTjgpLpmLLmraJcbiAgcHJldmVudFByZWZpeERlbGV0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgdGV4dGFyZWEgPSBldmVudC50YXJnZXQgYXMgSFRNTFRleHRBcmVhRWxlbWVudDtcbiAgICBjb25zdCBwcmVmaXggPSAneF94ICc7XG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSB0ZXh0YXJlYS5zZWxlY3Rpb25TdGFydDtcbiAgICBcbiAgICAvLyDjg5Djg4Pjgq/jgrnjg5rjg7zjgrnjgb7jgZ/jga9EZWxldGXjgq3jg7zjga7lh6bnkIZcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJyB8fCBldmVudC5rZXkgPT09ICdEZWxldGUnKSB7XG4gICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPD0gcHJlZml4Lmxlbmd0aCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyDlt6bnn6LljbDjgq3jg7zjgafjgqvjg7zjgr3jg6vjgYzjg5fjg6zjg5XjgqPjg4Pjgq/jgrnjgojjgorliY3jgavooYzjgYvjgarjgYTjgojjgYbjgatcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0JyAmJiBzZWxlY3Rpb25TdGFydCA8PSBwcmVmaXgubGVuZ3RoKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBcbiAgICAvLyBIb21lIOOCreODvOOBp+OCq+ODvOOCveODq+OCkuODl+ODrOODleOCo+ODg+OCr+OCueOBruebtOW+jOOBq+enu+WLlVxuICAgIGlmIChldmVudC5rZXkgPT09ICdIb21lJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdlKHByZWZpeC5sZW5ndGgsIHByZWZpeC5sZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIOWFpeWKm+aZguOBruWHpueQhlxuICBoYW5kbGVJbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0ZXh0YXJlYSA9IGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xuICAgIGNvbnN0IHByZWZpeCA9ICd4X3ggJztcbiAgICBcbiAgICAvLyDjg5fjg6zjg5XjgqPjg4Pjgq/jgrnjgYzliYrpmaTjgZXjgozjgabjgYTjgZ/jgonlvqnlhYNcbiAgICBpZiAoIXRoaXMuY3VycmVudElucHV0LnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgdGhpcy5jdXJyZW50SW5wdXQgPSBwcmVmaXggKyB0aGlzLmN1cnJlbnRJbnB1dC5yZXBsYWNlKC9eeF94XFxzKi8sICcnKTtcbiAgICAgIFxuICAgICAgLy8g44Kr44O844K944Or5L2N572u44KS6Kq/5pW0XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgbmV3UG9zaXRpb24gPSBNYXRoLm1heChwcmVmaXgubGVuZ3RoLCB0ZXh0YXJlYS5zZWxlY3Rpb25TdGFydCk7XG4gICAgICAgIHRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdlKG5ld1Bvc2l0aW9uLCBuZXdQb3NpdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgLy8g6auY44GV6Kq/5pW077yI5pS56KGM44GM5ZCr44G+44KM44Gm44GE44KL5aC05ZCI44Gu44G/77yJXG4gICAgaWYgKHRoaXMuY3VycmVudElucHV0LmluY2x1ZGVzKCdcXG4nKSkge1xuICAgICAgdGhpcy5hZGp1c3RUZXh0YXJlYUhlaWdodCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyAx6KGM44Gu5aC05ZCI44Gv5Zu65a6a6auY44GVXG4gICAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSAnNDRweCc7XG4gICAgfVxuICAgIFxuICAgIC8vIOOCq+ODvOOCveODq+S9jee9ruOCkuabtOaWsFxuICAgIHRoaXMudXBkYXRlQ3Vyc29yUG9zaXRpb24oKTtcbiAgfVxuXG4gIC8vIOODleOCqeODvOOCq+OCueaZguOBruWHpueQhlxuICBoYW5kbGVGb2N1cygpIHtcbiAgICB0aGlzLnNob3dDdXJzb3IgPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlQ3Vyc29yUG9zaXRpb24oKTtcbiAgfVxuXG4gIC8vIOODluODqeODvOaZguOBruWHpueQhlxuICBoYW5kbGVCbHVyKCkge1xuICAgIHRoaXMuc2hvd0N1cnNvciA9IGZhbHNlO1xuICB9XG5cbiAgLy8g44Kr44O844K944Or5L2N572u44Gu5pu05pawXG4gIHVwZGF0ZUN1cnNvclBvc2l0aW9uKCkge1xuICAgIGNvbnN0IHRleHRhcmVhID0gdGhpcy5pbnB1dEZpZWxkKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCF0ZXh0YXJlYSkgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IGN1cnNvclBvcyA9IHRleHRhcmVhLnNlbGVjdGlvblN0YXJ0O1xuICAgIGNvbnN0IHRleHRCZWZvcmVDdXJzb3IgPSB0aGlzLmN1cnJlbnRJbnB1dC5zdWJzdHJpbmcoMCwgY3Vyc29yUG9zKTtcbiAgICBcbiAgICAvLyDmlLnooYzjgafliIblibJcbiAgICBjb25zdCBsaW5lcyA9IHRleHRCZWZvcmVDdXJzb3Iuc3BsaXQoJ1xcbicpO1xuICAgIGNvbnN0IGN1cnJlbnRMaW5lSW5kZXggPSBsaW5lcy5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGN1cnJlbnRMaW5lVGV4dCA9IGxpbmVzW2N1cnJlbnRMaW5lSW5kZXhdO1xuICAgIFxuICAgIC8vIOS7ruOBrmNhbnZhc+OCkuS9v+OBo+OBpuePvuWcqOOBruihjOOBruODhuOCreOCueODiOW5heOCkuioiOeul1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29udGV4dC5mb250ID0gJzE0cHggXCJTRiBNb25vXCIsIE1vbmFjbywgbW9ub3NwYWNlJztcbiAgICAgIGNvbnN0IHRleHRXaWR0aCA9IGNvbnRleHQubWVhc3VyZVRleHQoY3VycmVudExpbmVUZXh0KS53aWR0aDtcbiAgICAgIFxuICAgICAgLy8g44Kr44O844K944Or5L2N572u44KS6Kit5a6a77yI44OR44OH44Kj44Oz44Kw5YiG44KS6ICD5oWu77yJXG4gICAgICB0aGlzLmN1cnNvckxlZnQgPSA4ICsgdGV4dFdpZHRoOyAvLyA4cHgg44GvIHRleHRhcmVhIOOBruW3puODkeODh+OCo+ODs+OCsFxuICAgICAgXG4gICAgICAvLyDlnoLnm7TkvY3nva7jgpLoqr/mlbTvvIjooYzmlbDjgavln7rjgaXjgYTjgabjgIHjgrnjgq/jg63jg7zjg6vkvY3nva7jgoLogIPmha7vvIlcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRleHRhcmVhLnNjcm9sbFRvcDtcbiAgICAgIHRoaXMuY3Vyc29yVG9wID0gMTIgKyAoY3VycmVudExpbmVJbmRleCAqIDIwKSAtIHNjcm9sbFRvcDsgLy8g44K544Kv44Ot44O844Or5YiG44KS5byV44GPXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQWdlbnRUZW1wbGF0ZSgpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICBwcm92aWRlQ29tcG9uZW50KEVudHJhbmNlVGVtcGxhdGVTdG9yZSwgKCkgPT4gQWdlbnRUZW1wbGF0ZSksXG4gIF07XG59Il19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHhtYWNoaW5hLWNvbXBvbmVudHMtdGVtcGxhdGVzLWFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21wb25lbnRzL3NyYy9saWIvdGVtcGxhdGVzL2FnZW50L3h4bWFjaGluYS1jb21wb25lbnRzLXRlbXBsYXRlcy1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"xxmachina-components-templates-agent.mjs","sources":["../tmp-esm2022/templates/agent/agent.template.js","../tmp-esm2022/templates/agent/xxmachina-components-templates-agent.js"],"sourcesContent":["import { ChangeDetectionStrategy, Component, inject, ChangeDetectorRef, viewChild } from '@angular/core';\nimport { NgAtomicComponent, provideComponent } from '@ng-atomic/core';\nimport { FormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { AutoLayoutFrame } from '@ng-atomic/components/frames/auto-layout';\nimport { CardFrame } from '@ng-atomic/components/frames/card';\nimport { ActionButtonsSectionOrganism } from '@ng-atomic/components/organisms/action-buttons-section';\nimport { HeadingOrganism } from '@ng-atomic/components/organisms/heading';\nimport { NgAtomicFormSectionBuilder } from '@ng-atomic/components/templates/form';\nimport { EntranceTemplateStore } from '@ng-atomic/components/templates/entrance';\nimport { AppService } from '@ng-atomic/common/services/app';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { XtermOrganism } from '@xxmachina/components/organisms/xterm';\nimport chalk from 'chalk';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@ng-atomic/components/templates/entrance\";\nimport * as i2 from \"@angular/forms\";\nimport * as i3 from \"@angular/material/button\";\nimport * as i4 from \"@angular/material/icon\";\nimport * as i5 from \"@angular/material/tooltip\";\nvar ActionId;\n(function (ActionId) {\n ActionId[\"SIGN_IN\"] = \"[@ng-atomic/components] Sign In\";\n ActionId[\"SIGN_IN_WITH_GOOGLE\"] = \"[@ng-atomic/components] Sign In With Google\";\n ActionId[\"SIGN_IN_WITH_TWITTER\"] = \"[@ng-atomic/components] Sign In With Twitter\";\n ActionId[\"SIGN_OUT\"] = \"[@ng-atomic/components] Sign Out\";\n})(ActionId || (ActionId = {}));\nexport class AgentTemplate extends NgAtomicComponent {\n static ActionId = ActionId;\n ActionId = ActionId;\n store = inject(EntranceTemplateStore);\n cdr = inject(ChangeDetectorRef);\n app = inject(AppService);\n xtermComponent = viewChild('xtermComponent');\n inputField = viewChild('inputField');\n statusText = 'Ready';\n isProcessing = false;\n showCursor = false;\n cursorLeft = 60;\n cursorTop = 12;\n // xterm関連\n terminal;\n commandHistory = [];\n historyIndex = -1;\n // 入力管理\n currentInput = 'x_x ';\n ngAfterViewInit() {\n // 入力フィールドにフォーカス\n setTimeout(() => {\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n textarea.focus();\n // 初期高さを適切に設定\n this.adjustTextareaHeight();\n }\n }, 100);\n }\n onTerminalReady(terminal) {\n this.terminal = terminal;\n // 初期メッセージの表示\n this.showWelcomeMessage();\n // 初回ロード時は最上部にスクロール(アスキーアートから見えるように)\n setTimeout(() => {\n this.terminal.scrollToTop();\n }, 50);\n // 入力フィールドにフォーカスと高さ調整\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n textarea.focus();\n this.adjustTextareaHeight();\n }\n }\n onGitHubLinkClick(issueNumber) {\n const url = `https://github.com/nontangent/x_x_machina/issues/${issueNumber}`;\n window.open(url, '_blank');\n }\n showWelcomeMessage() {\n // アスキーアート(lain風の色で)\n this.terminal.writeln('');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('███╗ ███╗ █████╗ ██████╗██╗ ██╗██╗███╗ ██╗ █████╗ ')}`);\n this.terminal.writeln(`${chalk.cyan('████╗ ████║██╔══██╗██╔════╝██║ ██║██║████╗ ██║██╔══██╗')}`);\n this.terminal.writeln(`${chalk.cyan('██╔████╔██║███████║██║ ███████║██║██╔██╗ ██║███████║')}`);\n this.terminal.writeln(`${chalk.cyan('██║╚██╔╝██║██╔══██║██║ ██╔══██║██║██║╚██╗██║██╔══██║')}`);\n this.terminal.writeln(`${chalk.cyan('██║ ╚═╝ ██║██║ ██║╚██████╗██║ ██║██║██║ ╚████║██║ ██║')}`);\n this.terminal.writeln(`${chalk.cyan('╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝')}`);\n this.terminal.writeln(`${chalk.cyan(' █████╗ ██████╗ ███████╗███╗ ██╗████████╗')}`);\n this.terminal.writeln(`${chalk.cyan(' ██╔══██╗██╔════╝ ██╔════╝████╗ ██║╚══██╔══╝')}`);\n this.terminal.writeln(`${chalk.cyan(' ███████║██║ ███╗█████╗ ██╔██╗ ██║ ██║ ')}`);\n this.terminal.writeln(`${chalk.cyan(' ██╔══██║██║ ██║██╔══╝ ██║╚██╗██║ ██║ ')}`);\n this.terminal.writeln(`${chalk.cyan(' ██║ ██║╚██████╔╝███████╗██║ ╚████║ ██║ ')}`);\n this.terminal.writeln(`${chalk.cyan(' ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═══╝ ╚═╝ ')}`);\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● Welcome to \\x1b[1;93m合同会社マキナエージェント\\x1b[0m')}`);\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● 会社概要\\x1b[0m')}`);\n this.terminal.writeln(' 合同会社マキナエージェントは、AI技術を活用した');\n this.terminal.writeln(' 革新的なソリューションを提供する企業です。');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● 事業内容\\x1b[0m')}`);\n this.terminal.writeln(' - システム開発のコンサルティング事業');\n this.terminal.writeln(' - AIアジャイル開発の導入支援事業');\n this.terminal.writeln(' - 自己改変型AIエージェント(オートポイエーシス)の開発事業');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● ビジョン\\x1b[0m')}`);\n this.terminal.writeln(' 人とAIが協働する未来を創造し、');\n this.terminal.writeln(' あらゆるビジネスの可能性を拡げます。');\n this.terminal.writeln('');\n this.terminal.writeln('');\n this.terminal.writeln(`${chalk.cyan('● Type \\x1b[1;36mlogin\\x1b[1;33m to sign in with Google\\x1b[0m')}`);\n this.terminal.writeln(`${chalk.cyan('● Type \\x1b[1;36mhelp\\x1b[1;33m for more commands\\x1b[0m')}`);\n this.terminal.writeln('');\n // プロンプト表示\n this.showPrompt();\n }\n showPrompt() {\n // プロンプトはHTML側の入力フィールドで表示するため不要\n }\n processCommand(command) {\n this.isProcessing = true;\n this.statusText = 'Processing...';\n this.cdr.markForCheck();\n // ログインコマンド\n if (command === 'login') {\n this.terminal.writeln('\\x1b[1;32m● Initiating Google authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN_WITH_GOOGLE });\n this.completeProcessing();\n }, 300);\n }\n else if (command.startsWith('auth')) {\n if (command.includes('google')) {\n this.terminal.writeln('\\x1b[1;32m● Initiating Google authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN_WITH_GOOGLE });\n this.completeProcessing();\n }, 300);\n }\n else if (command.includes('twitter')) {\n this.terminal.writeln('\\x1b[1;32m● Initiating Twitter authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN_WITH_TWITTER });\n this.completeProcessing();\n }, 300);\n }\n else if (command.includes('local')) {\n this.terminal.writeln('\\x1b[1;32m● Initiating local authentication...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_IN });\n this.completeProcessing();\n }, 300);\n }\n else {\n this.terminal.writeln('\\x1b[1;32m● Available authentication methods:\\x1b[0m');\n this.terminal.writeln(' - auth --provider=google');\n this.terminal.writeln(' - auth --provider=twitter');\n this.terminal.writeln(' - auth --provider=local');\n this.completeProcessing();\n }\n }\n // ログアウトコマンド\n else if (command === 'logout' || command === 'signout') {\n this.terminal.writeln('\\x1b[1;32m● Signing out...\\x1b[0m');\n setTimeout(() => {\n this.dispatch({ id: ActionId.SIGN_OUT });\n setTimeout(() => {\n this.terminal.writeln('\\x1b[1;32m● You have been signed out.\\x1b[0m');\n this.terminal.writeln('\\x1b[1;33m● Type \"login\" to sign in again.\\x1b[0m');\n this.completeProcessing();\n }, 500);\n }, 300);\n }\n // ヘルプコマンド\n else if (command === 'help' || command === '?') {\n this.terminal.writeln('\\x1b[1;32m● Available commands:\\x1b[0m');\n this.terminal.writeln(' \\x1b[36mlogin\\x1b[0m - Sign in with Google (default)');\n this.terminal.writeln(' \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mgoogle\\x1b[0m - Sign in with Google');\n this.terminal.writeln(' \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mtwitter\\x1b[0m - Sign in with Twitter');\n this.terminal.writeln(' \\x1b[36mauth\\x1b[0m --provider=\\x1b[33mlocal\\x1b[0m - Sign in with email/password');\n this.terminal.writeln(' \\x1b[36mlogout\\x1b[0m / \\x1b[36msignout\\x1b[0m - Sign out from the application');\n this.terminal.writeln(' \\x1b[36mabout\\x1b[0m - Show company information');\n this.terminal.writeln(' \\x1b[36mclear\\x1b[0m - Clear terminal');\n this.terminal.writeln(' \\x1b[36mhelp\\x1b[0m / \\x1b[36m?\\x1b[0m - Show this help');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;33m● Keyboard shortcuts:\\x1b[0m');\n this.terminal.writeln(' \\x1b[36m⌘K\\x1b[0m / \\x1b[36mCtrl+K\\x1b[0m - Generate command suggestions');\n this.terminal.writeln(' \\x1b[36m↑\\x1b[0m / \\x1b[36m↓\\x1b[0m - Navigate command history');\n this.completeProcessing();\n }\n // 会社情報コマンド\n else if (command === 'about') {\n this.terminal.writeln('\\x1b[1;36m● 合同会社マキナエージェント\\x1b[0m');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● 会社概要\\x1b[0m');\n this.terminal.writeln(' 合同会社マキナエージェントは、AI技術を活用した');\n this.terminal.writeln(' 革新的なソリューションを提供する企業です。');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● 事業内容\\x1b[0m');\n this.terminal.writeln(' - システム開発のコンサルティング事業');\n this.terminal.writeln(' - AIアジャイル開発の導入支援事業');\n this.terminal.writeln(' - 自己改変型AIエージェント(オートポイエーシス)の開発事業');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● ビジョン\\x1b[0m');\n this.terminal.writeln(' 人とAIが協働する未来を創造し、');\n this.terminal.writeln(' あらゆるビジネスの可能性を拡げます。');\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● お問い合わせ\\x1b[0m');\n this.terminal.writeln(' 詳細については、ログイン後にお問い合わせください。');\n this.completeProcessing();\n }\n // クリアコマンド\n else if (command === 'clear' || command === 'cls') {\n this.terminal.clear();\n this.terminal.scrollToBottom();\n this.completeProcessing();\n }\n // 不明なコマンド\n else {\n this.terminal.writeln(`\\x1b[1;31m● Command not found: ${command}\\x1b[0m`);\n this.terminal.writeln(' Type \"help\" for available commands.');\n this.completeProcessing();\n }\n }\n completeProcessing() {\n this.isProcessing = false;\n this.statusText = 'Ready';\n this.cdr.markForCheck();\n this.terminal.writeln('');\n // 最新の出力が見えるようにスクロール\n this.terminal.scrollToBottom();\n // 入力フィールドにフォーカスを戻す\n setTimeout(() => {\n this.inputField()?.nativeElement?.focus();\n }, 100);\n }\n handleEnter(event) {\n // Shift+EnterまたはCtrl+Enterの場合は改行を許可\n if (event.shiftKey || event.ctrlKey) {\n return; // デフォルト動作(改行)を許可\n }\n event.preventDefault();\n const prefix = 'x_x ';\n const actualCommand = this.currentInput.startsWith(prefix)\n ? this.currentInput.slice(prefix.length).trim()\n : this.currentInput.trim();\n if (actualCommand) {\n // コマンドをターミナルに表示(改行を含む場合は適切に処理)\n const displayCommand = actualCommand.split('\\n').map(line => '\\x1b[32m> x_x \\x1b[0m' + line).join('\\r\\n');\n this.terminal.write(displayCommand + '\\r\\n');\n // 履歴に追加\n this.commandHistory.push(actualCommand);\n this.historyIndex = this.commandHistory.length;\n // コマンドを処理\n this.processCommand(actualCommand);\n // 入力を初期状態にリセット\n this.currentInput = prefix;\n // textareaの高さをリセット\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n textarea.style.height = 'auto';\n }\n }\n }\n navigateHistory(event, direction) {\n event.preventDefault();\n const prefix = 'x_x ';\n if (direction === -1 && this.historyIndex > 0) {\n // 上矢印\n this.historyIndex--;\n this.currentInput = prefix + this.commandHistory[this.historyIndex];\n }\n else if (direction === 1) {\n // 下矢印\n if (this.historyIndex < this.commandHistory.length - 1) {\n this.historyIndex++;\n this.currentInput = prefix + this.commandHistory[this.historyIndex];\n }\n else {\n this.historyIndex = this.commandHistory.length;\n this.currentInput = prefix;\n }\n }\n }\n generateCommand(event) {\n if (event) {\n event.preventDefault();\n }\n this.terminal.writeln('');\n this.terminal.writeln('\\x1b[1;32m● Generating command suggestions...\\x1b[0m');\n setTimeout(() => {\n this.terminal.writeln('\\x1b[1;33m● Suggested commands:\\x1b[0m');\n this.terminal.writeln(' 1. \\x1b[36mauth --provider=google\\x1b[0m');\n this.terminal.writeln(' 2. \\x1b[36mlogin\\x1b[0m');\n this.terminal.writeln(' 3. \\x1b[36mhelp\\x1b[0m');\n this.terminal.writeln('');\n this.cdr.markForCheck();\n }, 500);\n }\n // sideAppを閉じる\n closeSideApp(event) {\n event.stopPropagation();\n this.app.sideApp.collapse();\n }\n // 入力フィールドにフォーカスを設定\n focusInput() {\n this.inputField()?.nativeElement?.focus();\n }\n // textareaの高さを内容に合わせて調整\n adjustTextareaHeight() {\n const textarea = this.inputField()?.nativeElement;\n if (textarea) {\n // 一旦高さをリセット\n textarea.style.height = '20px';\n // scrollHeightを確認し、実際に必要な高さを設定\n const scrollHeight = textarea.scrollHeight;\n // パディングを考慮した最小高さ\n const minHeight = 44; // padding: 12px * 2 + line-height: 20px\n textarea.style.height = Math.max(minHeight, scrollHeight) + 'px';\n }\n }\n // プレフィックスの削除を防止\n preventPrefixDeletion(event) {\n const textarea = event.target;\n const prefix = 'x_x ';\n const selectionStart = textarea.selectionStart;\n // バックスペースまたはDeleteキーの処理\n if (event.key === 'Backspace' || event.key === 'Delete') {\n if (selectionStart <= prefix.length) {\n event.preventDefault();\n }\n }\n // 左矢印キーでカーソルがプレフィックスより前に行かないように\n if (event.key === 'ArrowLeft' && selectionStart <= prefix.length) {\n event.preventDefault();\n }\n // Home キーでカーソルをプレフィックスの直後に移動\n if (event.key === 'Home') {\n event.preventDefault();\n textarea.setSelectionRange(prefix.length, prefix.length);\n }\n }\n // 入力時の処理\n handleInput(event) {\n const textarea = event.target;\n const prefix = 'x_x ';\n // プレフィックスが削除されていたら復元\n if (!this.currentInput.startsWith(prefix)) {\n this.currentInput = prefix + this.currentInput.replace(/^x_x\\s*/, '');\n // カーソル位置を調整\n setTimeout(() => {\n const newPosition = Math.max(prefix.length, textarea.selectionStart);\n textarea.setSelectionRange(newPosition, newPosition);\n });\n }\n // 高さ調整(改行が含まれている場合のみ)\n if (this.currentInput.includes('\\n')) {\n this.adjustTextareaHeight();\n }\n else {\n // 1行の場合は固定高さ\n textarea.style.height = '44px';\n }\n // カーソル位置を更新\n this.updateCursorPosition();\n }\n // フォーカス時の処理\n handleFocus() {\n this.showCursor = true;\n this.updateCursorPosition();\n }\n // ブラー時の処理\n handleBlur() {\n this.showCursor = false;\n }\n // カーソル位置の更新\n updateCursorPosition() {\n const textarea = this.inputField()?.nativeElement;\n if (!textarea)\n return;\n const cursorPos = textarea.selectionStart;\n const textBeforeCursor = this.currentInput.substring(0, cursorPos);\n // 改行で分割\n const lines = textBeforeCursor.split('\\n');\n const currentLineIndex = lines.length - 1;\n const currentLineText = lines[currentLineIndex];\n // 仮のcanvasを使って現在の行のテキスト幅を計算\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n if (context) {\n context.font = '14px \"SF Mono\", Monaco, monospace';\n const textWidth = context.measureText(currentLineText).width;\n // カーソル位置を設定(パディング分を考慮)\n this.cursorLeft = 8 + textWidth; // 8px は textarea の左パディング\n // 垂直位置を調整(行数に基づいて、スクロール位置も考慮)\n const scrollTop = textarea.scrollTop;\n this.cursorTop = 12 + (currentLineIndex * 20) - scrollTop; // スクロール分を引く\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AgentTemplate, deps: null, target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.2.0\", version: \"20.0.5\", type: AgentTemplate, isStandalone: true, selector: \"templates-agent\", host: { classAttribute: \"template\" }, viewQueries: [{ propertyName: \"xtermComponent\", first: true, predicate: [\"xtermComponent\"], descendants: true, isSignal: true }, { propertyName: \"inputField\", first: true, predicate: [\"inputField\"], descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: i1.EntranceTemplateStore, inputs: [\"form\", \"form\", \"actions\", \"actions\", \"title\", \"title\", \"fieldMap\", \"fieldMap\"] }], ngImport: i0, template: `\n <div class=\"terminal-window\">\n <div class=\"terminal-header\">\n <button mat-icon-button class=\"close-button\" (click)=\"closeSideApp($event)\" matTooltip=\"閉じる\">\n <mat-icon>close</mat-icon>\n </button>\n <div class=\"terminal-title\">Machina Agent</div>\n <div class=\"terminal-status\">{{ statusText }}</div>\n </div>\n \n <div class=\"terminal-body\">\n <organisms-xterm\n class=\"terminal-display\"\n (terminalReady)=\"onTerminalReady($event)\"\n (githubLinkClick)=\"onGitHubLinkClick($event)\"\n (click)=\"focusInput()\"\n #xtermComponent\n ></organisms-xterm>\n <div class=\"input-area\">\n <div class=\"input-line\">\n <span class=\"input-prefix\">> x_x</span>\n <div class=\"textarea-wrapper\">\n <span class=\"arrow-prefix\">></span>\n <div class=\"input-container\">\n <textarea \n #inputField\n class=\"terminal-input\" \n [(ngModel)]=\"currentInput\"\n (keydown.enter)=\"handleEnter($event)\"\n (keydown.arrowUp)=\"navigateHistory($event, -1)\"\n (keydown.arrowDown)=\"navigateHistory($event, 1)\"\n (keydown.control.k)=\"generateCommand($event)\"\n (keydown.meta.k)=\"generateCommand($event)\"\n (keydown)=\"preventPrefixDeletion($event)\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n (keyup)=\"updateCursorPosition()\"\n (click)=\"updateCursorPosition()\"\n (scroll)=\"updateCursorPosition()\"\n [disabled]=\"isProcessing\"\n placeholder=\"x_x about\"\n rows=\"1\"\n ></textarea>\n <div class=\"block-cursor\" \n [class.visible]=\"showCursor\"\n [style.left.px]=\"cursorLeft\"\n [style.top.px]=\"cursorTop\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n `, isInline: true, styles: [\":host{--h-pad: 20px;--h-pad-SCOPED-IN-entrance-kS7H: var(--h-pad);--text: #e0e0e0;--text-SCOPED-IN-entrance-kS7H: var(--text);--user: #00ff00;--user-SCOPED-IN-entrance-kS7H: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-kS7H: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-kS7H: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-kS7H: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-kS7H);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;padding:0 20px;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-kS7H);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-kS7H);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-kS7H);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-kS7H);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-kS7H);opacity:.7}.terminal-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;transition:all .3s ease}.terminal-body .terminal-display{flex:1;position:relative;background:#0a0a0a;overflow:hidden}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-kS7H);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word;caret-shape:block}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0}.terminal-window{height:100%;max-height:100vh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0 16px}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0 12px}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-kS7H);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-kS7H)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-kS7H),0 0 20px var(--accent-SCOPED-IN-entrance-kS7H);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-entrance-kS7H: var(--text);--user: #0066cc;--user-SCOPED-IN-entrance-kS7H: var(--user);--sys: #666;--sys-SCOPED-IN-entrance-kS7H: var(--sys);--border: #ddd;--border-SCOPED-IN-entrance-kS7H: var(--border)}.terminal-window{background:#ffffffd9;box-shadow:0 10px 30px #00000014}}\\n\"], dependencies: [{ kind: \"ngmodule\", type: CommonModule }, { kind: \"ngmodule\", type: FormsModule }, { kind: \"directive\", type: i2.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i2.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i2.NgModel, selector: \"[ngModel]:not([formControlName]):not([formControl])\", inputs: [\"name\", \"disabled\", \"ngModel\", \"ngModelOptions\"], outputs: [\"ngModelChange\"], exportAs: [\"ngModel\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: i3.MatIconButton, selector: \"button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]\", exportAs: [\"matButton\", \"matAnchor\"] }, { kind: \"ngmodule\", type: MatIconModule }, { kind: \"component\", type: i4.MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"ngmodule\", type: MatTooltipModule }, { kind: \"directive\", type: i5.MatTooltip, selector: \"[matTooltip]\", inputs: [\"matTooltipPosition\", \"matTooltipPositionAtOrigin\", \"matTooltipDisabled\", \"matTooltipShowDelay\", \"matTooltipHideDelay\", \"matTooltipTouchGestures\", \"matTooltip\", \"matTooltipClass\"], exportAs: [\"matTooltip\"] }, { kind: \"component\", type: XtermOrganism, selector: \"organisms-xterm\", outputs: [\"terminalReady\", \"githubLinkClick\"] }], changeDetection: i0.ChangeDetectionStrategy.Default });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.0.5\", ngImport: i0, type: AgentTemplate, decorators: [{\n type: Component,\n args: [{ selector: 'templates-agent', imports: [\n CommonModule,\n FormsModule,\n AutoLayoutFrame,\n CardFrame,\n ActionButtonsSectionOrganism,\n HeadingOrganism,\n NgAtomicFormSectionBuilder,\n MatButtonModule,\n MatIconModule,\n MatTooltipModule,\n XtermOrganism,\n ], template: `\n <div class=\"terminal-window\">\n <div class=\"terminal-header\">\n <button mat-icon-button class=\"close-button\" (click)=\"closeSideApp($event)\" matTooltip=\"閉じる\">\n <mat-icon>close</mat-icon>\n </button>\n <div class=\"terminal-title\">Machina Agent</div>\n <div class=\"terminal-status\">{{ statusText }}</div>\n </div>\n \n <div class=\"terminal-body\">\n <organisms-xterm\n class=\"terminal-display\"\n (terminalReady)=\"onTerminalReady($event)\"\n (githubLinkClick)=\"onGitHubLinkClick($event)\"\n (click)=\"focusInput()\"\n #xtermComponent\n ></organisms-xterm>\n <div class=\"input-area\">\n <div class=\"input-line\">\n <span class=\"input-prefix\">> x_x</span>\n <div class=\"textarea-wrapper\">\n <span class=\"arrow-prefix\">></span>\n <div class=\"input-container\">\n <textarea \n #inputField\n class=\"terminal-input\" \n [(ngModel)]=\"currentInput\"\n (keydown.enter)=\"handleEnter($event)\"\n (keydown.arrowUp)=\"navigateHistory($event, -1)\"\n (keydown.arrowDown)=\"navigateHistory($event, 1)\"\n (keydown.control.k)=\"generateCommand($event)\"\n (keydown.meta.k)=\"generateCommand($event)\"\n (keydown)=\"preventPrefixDeletion($event)\"\n (input)=\"handleInput($event)\"\n (focus)=\"handleFocus()\"\n (blur)=\"handleBlur()\"\n (keyup)=\"updateCursorPosition()\"\n (click)=\"updateCursorPosition()\"\n (scroll)=\"updateCursorPosition()\"\n [disabled]=\"isProcessing\"\n placeholder=\"x_x about\"\n rows=\"1\"\n ></textarea>\n <div class=\"block-cursor\" \n [class.visible]=\"showCursor\"\n [style.left.px]=\"cursorLeft\"\n [style.top.px]=\"cursorTop\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n `, host: {\n class: 'template'\n }, changeDetection: ChangeDetectionStrategy.Default, hostDirectives: [\n {\n directive: EntranceTemplateStore,\n inputs: [\n 'form',\n 'actions',\n 'title',\n 'fieldMap',\n ],\n },\n ], styles: [\":host{--h-pad: 20px;--h-pad-SCOPED-IN-entrance-kS7H: var(--h-pad);--text: #e0e0e0;--text-SCOPED-IN-entrance-kS7H: var(--text);--user: #00ff00;--user-SCOPED-IN-entrance-kS7H: var(--user);--sys: #888;--sys-SCOPED-IN-entrance-kS7H: var(--sys);--accent: #ff79c6;--accent-SCOPED-IN-entrance-kS7H: var(--accent);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-entrance-kS7H: var(--border)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}:host{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background:transparent;font-family:SF Mono,Monaco,monospace;container-type:inline-size;container-name:agent-container;transition:all .3s ease}.terminal-window{width:100%;max-width:900px;height:600px;background:#0a0a0a;border:1px solid var(--border-SCOPED-IN-entrance-kS7H);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 20px 40px #0000004d;animation:fadeIn .3s;transition:all .3s ease}.terminal-header{display:flex;justify-content:space-between;align-items:center;height:56px;padding:0 20px;background:#1a1a1a99;border-bottom:1px solid var(--border-SCOPED-IN-entrance-kS7H);transition:all .3s ease;position:relative}.terminal-header .close-button{color:var(--sys-SCOPED-IN-entrance-kS7H);margin-right:.5rem;opacity:.7}.terminal-header .close-button:hover{color:var(--text-SCOPED-IN-entrance-kS7H);opacity:1}.terminal-header .terminal-title{font-size:13px;color:var(--text-SCOPED-IN-entrance-kS7H);font-weight:500;flex:1}.terminal-header .terminal-status{font-size:12px;color:var(--sys-SCOPED-IN-entrance-kS7H);opacity:.7}.terminal-body{flex:1;display:flex;flex-direction:column;overflow:hidden;position:relative;transition:all .3s ease}.terminal-body .terminal-display{flex:1;position:relative;background:#0a0a0a;overflow:hidden}.input-area{background:#000000e6;border-top:1px solid var(--border-SCOPED-IN-entrance-kS7H);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:all .3s ease;padding:16px 20px}.input-line{display:block;position:relative}.input-line .input-prefix{display:none}.input-line .textarea-wrapper{display:flex;align-items:flex-start;position:relative;border:1px solid rgba(255,255,255,.2);border-radius:4px;transition:border-color .2s ease}.input-line .textarea-wrapper:focus-within{border-color:#fff6}.input-line .textarea-wrapper .arrow-prefix{color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;padding:12px 0 12px 16px;flex-shrink:0;pointer-events:none}.input-line .textarea-wrapper .input-container{flex:1;position:relative;overflow:hidden}.input-line .textarea-wrapper .terminal-input{width:100%;background:transparent;border:none;outline:none;color:#e0e0e0;font-family:SF Mono,Monaco,monospace;font-size:14px;font-weight:400;caret-color:transparent;padding:12px 16px 12px 8px;transition:none;resize:none;height:44px;min-height:44px;max-height:200px;overflow-y:auto;overflow-x:hidden;line-height:20px;box-sizing:border-box;white-space:pre-wrap;word-wrap:break-word;caret-shape:block}.input-line .textarea-wrapper .terminal-input::selection{background:#ffffff4d}.input-line .textarea-wrapper .terminal-input:disabled{opacity:.5;cursor:not-allowed}.input-line .textarea-wrapper .terminal-input:-webkit-autofill{-webkit-text-fill-color:#e0e0e0;-webkit-box-shadow:0 0 0 1000px rgba(0,0,0,.9) inset}.input-line .textarea-wrapper .terminal-input::placeholder{color:#ffffff4d;opacity:1}.input-line .textarea-wrapper .block-cursor{position:absolute;width:10px;height:20px;background:#e0e0e0;opacity:0;pointer-events:none}.input-line .textarea-wrapper .block-cursor.visible{animation:blink 1s infinite}@keyframes blink{0%,50%{opacity:.8}51%,to{opacity:0}}:host:has(.terminal-window){height:100vh;overflow-y:auto}@container agent-container (max-width: 600px){:host{padding:0}.terminal-window{height:100%;max-height:100vh;max-width:100%;border-radius:0;border:none;box-shadow:none}.terminal-header{height:56px;padding:0 16px}.terminal-header .terminal-title{font-size:12px}.terminal-header .terminal-status{font-size:11px}.terminal-header .close-button{margin-right:.25rem}}@container agent-container (min-width: 601px) and (max-width: 900px){.terminal-window{max-width:100%;height:100%;border-radius:0}}@container agent-container (max-width: 400px){.terminal-header{height:56px;padding:0 12px}.terminal-header .close-button{margin-right:.2rem}.input-area{padding:12px 16px}.textarea-wrapper .arrow-prefix{font-size:13px;padding:10px 0 10px 12px}.textarea-wrapper .terminal-input{font-size:12px;padding:10px 12px 10px 6px;height:40px;min-height:40px;line-height:20px}}.ascii-art{font-family:Consolas,Monaco,Liberation Mono,Menlo,Courier New,monospace!important;font-size:10px!important;line-height:1.1!important;letter-spacing:0!important;font-weight:400!important;margin:1em 0!important;padding:1em!important;white-space:pre!important;overflow-x:auto!important;overflow-y:hidden!important;display:block!important;width:fit-content!important;background:#ffffff08;border:1px solid var(--border-SCOPED-IN-entrance-kS7H);border-radius:4px;color:var(--accent-SCOPED-IN-entrance-kS7H)!important;opacity:.9;text-shadow:0 0 10px var(--accent-SCOPED-IN-entrance-kS7H),0 0 20px var(--accent-SCOPED-IN-entrance-kS7H);-webkit-font-smoothing:none!important;-moz-osx-font-smoothing:unset!important;font-variant-ligatures:none!important;text-rendering:optimizeLegibility!important}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-entrance-kS7H: var(--text);--user: #0066cc;--user-SCOPED-IN-entrance-kS7H: var(--user);--sys: #666;--sys-SCOPED-IN-entrance-kS7H: var(--sys);--border: #ddd;--border-SCOPED-IN-entrance-kS7H: var(--border)}.terminal-window{background:#ffffffd9;box-shadow:0 10px 30px #00000014}}\\n\"] }]\n }] });\nexport function provideAgentTemplate() {\n return [\n provideComponent(EntranceTemplateStore, () => AgentTemplate),\n ];\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQudGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9AeHhtYWNoaW5hL2NvbXBvbmVudHMvc3JjL2xpYi90ZW1wbGF0ZXMvYWdlbnQvYWdlbnQudGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQXVDLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDOUQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFDdEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN0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VUFBVTs2QkFDWDt5QkFDRjtxQkFDRjs7QUFvYUgsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPO1FBQ0wsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUUsR0FBRyxFQUFFLENBQUMsYUFBYSxDQUFDO0tBQzdELENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBDaGFuZ2VEZXRlY3RvclJlZiwgRWxlbWVudFJlZiwgQWZ0ZXJWaWV3SW5pdCwgUHJvdmlkZXIsIHZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmdBdG9taWNDb21wb25lbnQsIHByb3ZpZGVDb21wb25lbnQgfSBmcm9tICdAbmctYXRvbWljL2NvcmUnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQXV0b0xheW91dEZyYW1lIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL2ZyYW1lcy9hdXRvLWxheW91dCc7XG5pbXBvcnQgeyBDYXJkRnJhbWUgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvZnJhbWVzL2NhcmQnO1xuaW1wb3J0IHsgQWN0aW9uQnV0dG9uc1NlY3Rpb25PcmdhbmlzbSB9IGZyb20gJ0BuZy1hdG9taWMvY29tcG9uZW50cy9vcmdhbmlzbXMvYWN0aW9uLWJ1dHRvbnMtc2VjdGlvbic7XG5pbXBvcnQgeyBIZWFkaW5nT3JnYW5pc20gfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvb3JnYW5pc21zL2hlYWRpbmcnO1xuaW1wb3J0IHsgTmdBdG9taWNGb3JtU2VjdGlvbkJ1aWxkZXIgfSBmcm9tICdAbmctYXRvbWljL2NvbXBvbmVudHMvdGVtcGxhdGVzL2Zvcm0nO1xuaW1wb3J0IHsgRW50cmFuY2VUZW1wbGF0ZVN0b3JlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21wb25lbnRzL3RlbXBsYXRlcy9lbnRyYW5jZSc7XG5pbXBvcnQgeyBBcHBTZXJ2aWNlIH0gZnJvbSAnQG5nLWF0b21pYy9jb21tb24vc2VydmljZXMvYXBwJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBUZXJtaW5hbCB9IGZyb20gJ0B4dGVybS94dGVybSc7XG5pbXBvcnQgeyBYdGVybU9yZ2FuaXNtIH0gZnJvbSAnQHh4bWFjaGluYS9jb21wb25lbnRzL29yZ2FuaXNtcy94dGVybSc7XG5pbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnO1xuXG5cbmVudW0gQWN0aW9uSWQge1xuICBTSUdOX0lOID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHNdIFNpZ24gSW4nLFxuICBTSUdOX0lOX1dJVEhfR09PR0xFID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHNdIFNpZ24gSW4gV2l0aCBHb29nbGUnLFxuICBTSUdOX0lOX1dJVEhfVFdJVFRFUiA9ICdbQG5nLWF0b21pYy9jb21wb25lbnRzXSBTaWduIEluIFdpdGggVHdpdHRlcicsXG4gIFNJR05fT1VUID0gJ1tAbmctYXRvbWljL2NvbXBvbmVudHNdIFNpZ24gT3V0Jyxcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGVtcGxhdGVzLWFnZW50JyxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBBdXRvTGF5b3V0RnJhbWUsXG4gICAgQ2FyZEZyYW1lLFxuICAgIEFjdGlvbkJ1dHRvbnNTZWN0aW9uT3JnYW5pc20sXG4gICAgSGVhZGluZ09yZ2FuaXNtLFxuICAgIE5nQXRvbWljRm9ybVNlY3Rpb25CdWlsZGVyLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXG4gICAgWHRlcm1PcmdhbmlzbSxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgPGRpdiBjbGFzcz1cInRlcm1pbmFsLXdpbmRvd1wiPlxuICAgIDxkaXYgY2xhc3M9XCJ0ZXJtaW5hbC1oZWFkZXJcIj5cbiAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIGNsYXNzPVwiY2xvc2UtYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlU2lkZUFwcCgkZXZlbnQpXCIgbWF0VG9vbHRpcD1cIumWieOBmOOCi1wiPlxuICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2IGNsYXNzPVwidGVybWluYWwtdGl0bGVcIj5NYWNoaW5hIEFnZW50PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidGVybWluYWwtc3RhdHVzXCI+e3sgc3RhdHVzVGV4dCB9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXYgY2xhc3M9XCJ0ZXJtaW5hbC1ib2R5XCI+XG4gICAgICA8b3JnYW5pc21zLXh0ZXJtXG4gICAgICAgIGNsYXNzPVwidGVybWluYWwtZGlzcGxheVwiXG4gICAgICAgICh0ZXJtaW5hbFJlYWR5KT1cIm9uVGVybWluYWxSZWFkeSgkZXZlbnQpXCJcbiAgICAgICAgKGdpdGh1YkxpbmtDbGljayk9XCJvbkdpdEh1YkxpbmtDbGljaygkZXZlbnQpXCJcbiAgICAgICAgKGNsaWNrKT1cImZvY3VzSW5wdXQoKVwiXG4gICAgICAgICN4dGVybUNvbXBvbmVudFxuICAgICAgPjwvb3JnYW5pc21zLXh0ZXJtPlxuICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWFyZWFcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWxpbmVcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LXByZWZpeFwiPj4geF94PC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0YXJlYS13cmFwcGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFycm93LXByZWZpeFwiPj48L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgIDx0ZXh0YXJlYSBcbiAgICAgICAgICAgICAgICAjaW5wdXRGaWVsZFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGVybWluYWwtaW5wdXRcIiBcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImN1cnJlbnRJbnB1dFwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiaGFuZGxlRW50ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3dVcCk9XCJuYXZpZ2F0ZUhpc3RvcnkoJGV2ZW50LCAtMSlcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93RG93bik9XCJuYXZpZ2F0ZUhpc3RvcnkoJGV2ZW50LCAxKVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uY29udHJvbC5rKT1cImdlbmVyYXRlQ29tbWFuZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5tZXRhLmspPVwiZ2VuZXJhdGVDb21tYW5kKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duKT1cInByZXZlbnRQcmVmaXhEZWxldGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoaW5wdXQpPVwiaGFuZGxlSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGZvY3VzKT1cImhhbmRsZUZvY3VzKClcIlxuICAgICAgICAgICAgICAgIChibHVyKT1cImhhbmRsZUJsdXIoKVwiXG4gICAgICAgICAgICAgICAgKGtleXVwKT1cInVwZGF0ZUN1cnNvclBvc2l0aW9uKClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ1cGRhdGVDdXJzb3JQb3NpdGlvbigpXCJcbiAgICAgICAgICAgICAgICAoc2Nyb2xsKT1cInVwZGF0ZUN1cnNvclBvc2l0aW9uKClcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc1Byb2Nlc3NpbmdcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwieF94IGFib3V0XCJcbiAgICAgICAgICAgICAgICByb3dzPVwiMVwiXG4gICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmxvY2stY3Vyc29yXCIgXG4gICAgICAgICAgICAgICAgW2NsYXNzLnZpc2libGVdPVwic2hvd0N1cnNvclwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmxlZnQucHhdPVwiY3Vyc29yTGVmdFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLnRvcC5weF09XCJjdXJzb3JUb3BcIlxuICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2FnZW50LnRlbXBsYXRlLnNjc3MnXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAndGVtcGxhdGUnXG4gIH0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuRGVmYXVsdCxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IEVudHJhbmNlVGVtcGxhdGVTdG9yZSxcbiAgICAgIGlucHV0czogW1xuICAgICAgICAnZm9ybScsXG4gICAgICAgICdhY3Rpb25zJyxcbiAgICAgICAgJ3RpdGxlJyxcbiAgICAgICAgJ2ZpZWxkTWFwJyxcbiAgICAgIF0sXG4gICAgfSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBBZ2VudFRlbXBsYXRlIGV4dGVuZHMgTmdBdG9taWNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgc3RhdGljIEFjdGlvbklkID0gQWN0aW9uSWQ7XG4gIHByb3RlY3RlZCBBY3Rpb25JZCA9IEFjdGlvbklkO1xuICBwcm90ZWN0ZWQgc3RvcmUgPSBpbmplY3QoRW50cmFuY2VUZW1wbGF0ZVN0b3JlKTtcbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIGFwcCA9IGluamVjdChBcHBTZXJ2aWNlKTtcblxuICByZWFkb25seSB4dGVybUNvbXBvbmVudCA9IHZpZXdDaGlsZDxYdGVybU9yZ2FuaXNtPigneHRlcm1Db21wb25lbnQnKTtcbiAgcmVhZG9ubHkgaW5wdXRGaWVsZCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+PignaW5wdXRGaWVsZCcpO1xuXG4gIHByb3RlY3RlZCBzdGF0dXNUZXh0ID0gJ1JlYWR5JztcbiAgcHJvdGVjdGVkIGlzUHJvY2Vzc2luZyA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc2hvd0N1cnNvciA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgY3Vyc29yTGVmdCA9IDYwO1xuICBwcm90ZWN0ZWQgY3Vyc29yVG9wID0gMTI7XG5cbiAgLy8geHRlcm3plqLpgKNcbiAgcHJpdmF0ZSB0ZXJtaW5hbCE6IFRlcm1pbmFsO1xuICBwcml2YXRlIGNvbW1hbmRIaXN0b3J5OiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIGhpc3RvcnlJbmRleCA9IC0xO1xuICBcbiAgLy8g5YWl5Yqb566h55CGXG4gIHByb3RlY3RlZCBjdXJyZW50SW5wdXQgPSAneF94ICc7XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIC8vIOWFpeWKm+ODleOCo+ODvOODq+ODieOBq+ODleOCqeODvOOCq+OCuVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgdGV4dGFyZWEgPSB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudDtcbiAgICAgIGlmICh0ZXh0YXJlYSkge1xuICAgICAgICB0ZXh0YXJlYS5mb2N1cygpO1xuICAgICAgICAvLyDliJ3mnJ/pq5jjgZXjgpLpganliIfjgavoqK3lrppcbiAgICAgICAgdGhpcy5hZGp1c3RUZXh0YXJlYUhlaWdodCgpO1xuICAgICAgfVxuICAgIH0sIDEwMCk7XG4gIH1cblxuICBvblRlcm1pbmFsUmVhZHkodGVybWluYWw6IFRlcm1pbmFsKSB7XG4gICAgdGhpcy50ZXJtaW5hbCA9IHRlcm1pbmFsO1xuXG4gICAgLy8g5Yid5pyf44Oh44OD44K744O844K444Gu6KGo56S6XG4gICAgdGhpcy5zaG93V2VsY29tZU1lc3NhZ2UoKTtcblxuICAgIC8vIOWIneWbnuODreODvOODieaZguOBr+acgOS4iumDqOOBq+OCueOCr+ODreODvOODq++8iOOCouOCueOCreODvOOCouODvOODiOOBi+OCieimi+OBiOOCi+OCiOOBhuOBq++8iVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy50ZXJtaW5hbC5zY3JvbGxUb1RvcCgpO1xuICAgIH0sIDUwKTtcblxuICAgIC8vIOWFpeWKm+ODleOCo+ODvOODq+ODieOBq+ODleOCqeODvOOCq+OCueOBqOmrmOOBleiqv+aVtFxuICAgIGNvbnN0IHRleHRhcmVhID0gdGhpcy5pbnB1dEZpZWxkKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKHRleHRhcmVhKSB7XG4gICAgICB0ZXh0YXJlYS5mb2N1cygpO1xuICAgICAgdGhpcy5hZGp1c3RUZXh0YXJlYUhlaWdodCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uR2l0SHViTGlua0NsaWNrKGlzc3VlTnVtYmVyOiBudW1iZXIpIHtcbiAgICBjb25zdCB1cmwgPSBgaHR0cHM6Ly9naXRodWIuY29tL25vbnRhbmdlbnQveF94X21hY2hpbmEvaXNzdWVzLyR7aXNzdWVOdW1iZXJ9YDtcbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd1dlbGNvbWVNZXNzYWdlKCkge1xuICAgIC8vIOOCouOCueOCreODvOOCouODvOODiO+8iGxhaW7poqjjga7oibLjgafvvIlcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KWiOKWiOKWiOKVlyAgIOKWiOKWiOKWiOKVlyDilojilojilojilojilojilZcgIOKWiOKWiOKWiOKWiOKWiOKWiOKVl+KWiOKWiOKVlyAg4paI4paI4pWX4paI4paI4pWX4paI4paI4paI4pWXICAg4paI4paI4pWXIOKWiOKWiOKWiOKWiOKWiOKVlyAnKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4paI4paI4paI4paI4pWXIOKWiOKWiOKWiOKWiOKVkeKWiOKWiOKVlOKVkOKVkOKWiOKWiOKVl+KWiOKWiOKVlOKVkOKVkOKVkOKVkOKVneKWiOKWiOKVkSAg4paI4paI4pWR4paI4paI4pWR4paI4paI4paI4paI4pWXICDilojilojilZHilojilojilZTilZDilZDilojilojilZcnKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4paI4paI4pWU4paI4paI4paI4paI4pWU4paI4paI4pWR4paI4paI4paI4paI4paI4paI4paI4pWR4paI4paI4pWRICAgICDilojilojilojilojilojilojilojilZHilojilojilZHilojilojilZTilojilojilZcg4paI4paI4pWR4paI4paI4paI4paI4paI4paI4paI4pWRJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KWiOKWiOKVkeKVmuKWiOKWiOKVlOKVneKWiOKWiOKVkeKWiOKWiOKVlOKVkOKVkOKWiOKWiOKVkeKWiOKWiOKVkSAgICAg4paI4paI4pWU4pWQ4pWQ4paI4paI4pWR4paI4paI4pWR4paI4paI4pWR4pWa4paI4paI4pWX4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4paI4paI4pWRJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KWiOKWiOKVkSDilZrilZDilZ0g4paI4paI4pWR4paI4paI4pWRICDilojilojilZHilZrilojilojilojilojilojilojilZfilojilojilZEgIOKWiOKWiOKVkeKWiOKWiOKVkeKWiOKWiOKVkSDilZrilojilojilojilojilZHilojilojilZEgIOKWiOKWiOKVkScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfilZrilZDilZ0gICAgIOKVmuKVkOKVneKVmuKVkOKVnSAg4pWa4pWQ4pWdIOKVmuKVkOKVkOKVkOKVkOKVkOKVneKVmuKVkOKVnSAg4pWa4pWQ4pWd4pWa4pWQ4pWd4pWa4pWQ4pWdICDilZrilZDilZDilZDilZ3ilZrilZDilZ0gIOKVmuKVkOKVnScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCcgICAgIOKWiOKWiOKWiOKWiOKWiOKVlyAg4paI4paI4paI4paI4paI4paI4pWXIOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKVl+KWiOKWiOKWiOKVlyAgIOKWiOKWiOKVl+KWiOKWiOKWiOKWiOKWiOKWiOKWiOKWiOKVlycpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCcgICAg4paI4paI4pWU4pWQ4pWQ4paI4paI4pWX4paI4paI4pWU4pWQ4pWQ4pWQ4pWQ4pWdIOKWiOKWiOKVlOKVkOKVkOKVkOKVkOKVneKWiOKWiOKWiOKWiOKVlyAg4paI4paI4pWR4pWa4pWQ4pWQ4paI4paI4pWU4pWQ4pWQ4pWdJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJyAgICDilojilojilojilojilojilojilojilZHilojilojilZEgIOKWiOKWiOKWiOKVl+KWiOKWiOKWiOKWiOKWiOKVlyAg4paI4paI4pWU4paI4paI4pWXIOKWiOKWiOKVkSAgIOKWiOKWiOKVkSAgICcpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCcgICAg4paI4paI4pWU4pWQ4pWQ4paI4paI4pWR4paI4paI4pWRICAg4paI4paI4pWR4paI4paI4pWU4pWQ4pWQ4pWdICDilojilojilZHilZrilojilojilZfilojilojilZEgICDilojilojilZEgICAnKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbignICAgIOKWiOKWiOKVkSAg4paI4paI4pWR4pWa4paI4paI4paI4paI4paI4paI4pWU4pWd4paI4paI4paI4paI4paI4paI4paI4pWX4paI4paI4pWRIOKVmuKWiOKWiOKWiOKWiOKVkSAgIOKWiOKWiOKVkSAgICcpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCcgICAg4pWa4pWQ4pWdICDilZrilZDilZ0g4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWdIOKVmuKVkOKVkOKVkOKVkOKVkOKVkOKVneKVmuKVkOKVnSAg4pWa4pWQ4pWQ4pWQ4pWdICAg4pWa4pWQ4pWdICAgJyl9YCk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4pePIFdlbGNvbWUgdG8gXFx4MWJbMTs5M23lkIjlkIzkvJrnpL7jg57jgq3jg4rjgqjjg7zjgrjjgqfjg7Pjg4hcXHgxYlswbScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KXjyDkvJrnpL7mpoLopoFcXHgxYlswbScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDlkIjlkIzkvJrnpL7jg57jgq3jg4rjgqjjg7zjgrjjgqfjg7Pjg4jjga/jgIFBSeaKgOihk+OCkua0u+eUqOOBl+OBnycpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDpnanmlrDnmoTjgarjgr3jg6rjg6Xjg7zjgrfjg6fjg7PjgpLmj5DkvpvjgZnjgovkvIHmpa3jgafjgZnjgIInKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfil48g5LqL5qWt5YaF5a65XFx4MWJbMG0nKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgLSDjgrfjgrnjg4bjg6Dplovnmbrjga7jgrPjg7PjgrXjg6vjg4bjgqPjg7PjgrDkuovmpa0nKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgLSBBSeOCouOCuOODo+OCpOODq+mWi+eZuuOBruWwjuWFpeaUr+aPtOS6i+alrScpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIOiHquW3seaUueWkieWei0FJ44Ko44O844K444Kn44Oz44OIKOOCquODvOODiOODneOCpOOCqOODvOOCt+OCuSnjga7plovnmbrkuovmpa0nKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgJHtjaGFsay5jeWFuKCfil48g44OT44K444On44OzXFx4MWJbMG0nKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAg5Lq644GoQUnjgYzljZTlg43jgZnjgovmnKrmnaXjgpLlibXpgKDjgZfjgIEnKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAg44GC44KJ44KG44KL44OT44K444ON44K544Gu5Y+v6IO95oCn44KS5ouh44GS44G+44GZ44CCJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcblxuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKGAke2NoYWxrLmN5YW4oJ+KXjyBUeXBlIFxceDFiWzE7MzZtbG9naW5cXHgxYlsxOzMzbSB0byBzaWduIGluIHdpdGggR29vZ2xlXFx4MWJbMG0nKX1gKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oYCR7Y2hhbGsuY3lhbign4pePIFR5cGUgXFx4MWJbMTszNm1oZWxwXFx4MWJbMTszM20gZm9yIG1vcmUgY29tbWFuZHNcXHgxYlswbScpfWApO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgXG4gICAgLy8g44OX44Ot44Oz44OX44OI6KGo56S6XG4gICAgdGhpcy5zaG93UHJvbXB0KCk7XG4gIH1cblxuXG4gIHByaXZhdGUgc2hvd1Byb21wdCgpIHtcbiAgICAvLyDjg5fjg63jg7Pjg5fjg4jjga9IVE1M5YG044Gu5YWl5Yqb44OV44Kj44O844Or44OJ44Gn6KGo56S644GZ44KL44Gf44KB5LiN6KaBXG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NDb21tYW5kKGNvbW1hbmQ6IHN0cmluZykge1xuICAgIHRoaXMuaXNQcm9jZXNzaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnN0YXR1c1RleHQgPSAnUHJvY2Vzc2luZy4uLic7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG5cbiAgICAvLyDjg63jgrDjgqTjg7PjgrPjg57jg7Pjg4lcbiAgICBpZiAoY29tbWFuZCA9PT0gJ2xvZ2luJykge1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzMybeKXjyBJbml0aWF0aW5nIEdvb2dsZSBhdXRoZW50aWNhdGlvbi4uLlxceDFiWzBtJyk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBBY3Rpb25JZC5TSUdOX0lOX1dJVEhfR09PR0xFIH0pO1xuICAgICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgICAgfSwgMzAwKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY29tbWFuZC5zdGFydHNXaXRoKCdhdXRoJykpIHtcbiAgICAgIGlmIChjb21tYW5kLmluY2x1ZGVzKCdnb29nbGUnKSkge1xuICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIEluaXRpYXRpbmcgR29vZ2xlIGF1dGhlbnRpY2F0aW9uLi4uXFx4MWJbMG0nKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaCh7IGlkOiBBY3Rpb25JZC5TSUdOX0lOX1dJVEhfR09PR0xFIH0pO1xuICAgICAgICAgIHRoaXMuY29tcGxldGVQcm9jZXNzaW5nKCk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9IGVsc2UgaWYgKGNvbW1hbmQuaW5jbHVkZXMoJ3R3aXR0ZXInKSkge1xuICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIEluaXRpYXRpbmcgVHdpdHRlciBhdXRoZW50aWNhdGlvbi4uLlxceDFiWzBtJyk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2goeyBpZDogQWN0aW9uSWQuU0lHTl9JTl9XSVRIX1RXSVRURVIgfSk7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH0gZWxzZSBpZiAoY29tbWFuZC5pbmNsdWRlcygnbG9jYWwnKSkge1xuICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIEluaXRpYXRpbmcgbG9jYWwgYXV0aGVudGljYXRpb24uLi5cXHgxYlswbScpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoKHsgaWQ6IEFjdGlvbklkLlNJR05fSU4gfSk7XG4gICAgICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48gQXZhaWxhYmxlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZHM6XFx4MWJbMG0nKTtcbiAgICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIC0gYXV0aCAtLXByb3ZpZGVyPWdvb2dsZScpO1xuICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgLSBhdXRoIC0tcHJvdmlkZXI9dHdpdHRlcicpO1xuICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgLSBhdXRoIC0tcHJvdmlkZXI9bG9jYWwnKTtcbiAgICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8g44Ot44Kw44Ki44Km44OI44Kz44Oe44Oz44OJXG4gICAgZWxzZSBpZiAoY29tbWFuZCA9PT0gJ2xvZ291dCcgfHwgY29tbWFuZCA9PT0gJ3NpZ25vdXQnKSB7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIFNpZ25pbmcgb3V0Li4uXFx4MWJbMG0nKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKHsgaWQ6IEFjdGlvbklkLlNJR05fT1VUIH0pO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIFlvdSBoYXZlIGJlZW4gc2lnbmVkIG91dC5cXHgxYlswbScpO1xuICAgICAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszM23il48gVHlwZSBcImxvZ2luXCIgdG8gc2lnbiBpbiBhZ2Fpbi5cXHgxYlswbScpO1xuICAgICAgICAgIHRoaXMuY29tcGxldGVQcm9jZXNzaW5nKCk7XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICB9LCAzMDApO1xuICAgIH1cbiAgICAvLyDjg5jjg6vjg5fjgrPjg57jg7Pjg4lcbiAgICBlbHNlIGlmIChjb21tYW5kID09PSAnaGVscCcgfHwgY29tbWFuZCA9PT0gJz8nKSB7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIEF2YWlsYWJsZSBjb21tYW5kczpcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2bWxvZ2luXFx4MWJbMG0gICAgICAgICAgICAtIFNpZ24gaW4gd2l0aCBHb29nbGUgKGRlZmF1bHQpJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgXFx4MWJbMzZtYXV0aFxceDFiWzBtIC0tcHJvdmlkZXI9XFx4MWJbMzNtZ29vZ2xlXFx4MWJbMG0gICAtIFNpZ24gaW4gd2l0aCBHb29nbGUnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm1hdXRoXFx4MWJbMG0gLS1wcm92aWRlcj1cXHgxYlszM210d2l0dGVyXFx4MWJbMG0gIC0gU2lnbiBpbiB3aXRoIFR3aXR0ZXInKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm1hdXRoXFx4MWJbMG0gLS1wcm92aWRlcj1cXHgxYlszM21sb2NhbFxceDFiWzBtICAgIC0gU2lnbiBpbiB3aXRoIGVtYWlsL3Bhc3N3b3JkJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgXFx4MWJbMzZtbG9nb3V0XFx4MWJbMG0gLyBcXHgxYlszNm1zaWdub3V0XFx4MWJbMG0gLSBTaWduIG91dCBmcm9tIHRoZSBhcHBsaWNhdGlvbicpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2bWFib3V0XFx4MWJbMG0gICAgICAgICAgICAtIFNob3cgY29tcGFueSBpbmZvcm1hdGlvbicpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFxceDFiWzM2bWNsZWFyXFx4MWJbMG0gICAgICAgICAgICAtIENsZWFyIHRlcm1pbmFsJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAgXFx4MWJbMzZtaGVscFxceDFiWzBtIC8gXFx4MWJbMzZtP1xceDFiWzBtICAgICAgICAtIFNob3cgdGhpcyBoZWxwJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJycpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzMzbeKXjyBLZXlib2FyZCBzaG9ydGN1dHM6XFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm3ijJhLXFx4MWJbMG0gLyBcXHgxYlszNm1DdHJsK0tcXHgxYlswbSAgICAtIEdlbmVyYXRlIGNvbW1hbmQgc3VnZ2VzdGlvbnMnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICBcXHgxYlszNm3ihpFcXHgxYlswbSAvIFxceDFiWzM2beKGk1xceDFiWzBtICAgICAgICAgICAtIE5hdmlnYXRlIGNvbW1hbmQgaGlzdG9yeScpO1xuICAgICAgdGhpcy5jb21wbGV0ZVByb2Nlc3NpbmcoKTtcbiAgICB9XG4gICAgLy8g5Lya56S+5oOF5aCx44Kz44Oe44Oz44OJXG4gICAgZWxzZSBpZiAoY29tbWFuZCA9PT0gJ2Fib3V0Jykge1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCdcXHgxYlsxOzM2beKXjyDlkIjlkIzkvJrnpL7jg57jgq3jg4rjgqjjg7zjgrjjgqfjg7Pjg4hcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48g5Lya56S+5qaC6KaBXFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDlkIjlkIzkvJrnpL7jg57jgq3jg4rjgqjjg7zjgrjjgqfjg7Pjg4jjga/jgIFBSeaKgOihk+OCkua0u+eUqOOBl+OBnycpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIOmdqeaWsOeahOOBquOCveODquODpeODvOOCt+ODp+ODs+OCkuaPkOS+m+OBmeOCi+S8gealreOBp+OBmeOAgicpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignXFx4MWJbMTszMm3il48g5LqL5qWt5YaF5a65XFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIOOCt+OCueODhuODoOmWi+eZuuOBruOCs+ODs+OCteODq+ODhuOCo+ODs+OCsOS6i+alrScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIC0gQUnjgqLjgrjjg6PjgqTjg6vplovnmbrjga7lsI7lhaXmlK/mj7Tkuovmpa0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAtIOiHquW3seaUueWkieWei0FJ44Ko44O844K444Kn44Oz44OIKOOCquODvOODiOODneOCpOOCqOODvOOCt+OCuSnjga7plovnmbrkuovmpa0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIOODk+OCuOODp+ODs1xceDFiWzBtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAg5Lq644GoQUnjgYzljZTlg43jgZnjgovmnKrmnaXjgpLlibXpgKDjgZfjgIEnKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICDjgYLjgonjgobjgovjg5Pjgrjjg43jgrnjga7lj6/og73mgKfjgpLmi6HjgZLjgb7jgZnjgIInKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIOOBiuWVj+OBhOWQiOOCj+OBm1xceDFiWzBtJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJyAg6Kmz57Sw44Gr44Gk44GE44Gm44Gv44CB44Ot44Kw44Kk44Oz5b6M44Gr44GK5ZWP44GE5ZCI44KP44Gb44GP44Gg44GV44GE44CCJyk7XG4gICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgIH1cbiAgICAvLyDjgq/jg6rjgqLjgrPjg57jg7Pjg4lcbiAgICBlbHNlIGlmIChjb21tYW5kID09PSAnY2xlYXInIHx8IGNvbW1hbmQgPT09ICdjbHMnKSB7XG4gICAgICB0aGlzLnRlcm1pbmFsLmNsZWFyKCk7XG4gICAgICB0aGlzLnRlcm1pbmFsLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICB0aGlzLmNvbXBsZXRlUHJvY2Vzc2luZygpO1xuICAgIH1cbiAgICAvLyDkuI3mmI7jgarjgrPjg57jg7Pjg4lcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbihgXFx4MWJbMTszMW3il48gQ29tbWFuZCBub3QgZm91bmQ6ICR7Y29tbWFuZH1cXHgxYlswbWApO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIFR5cGUgXCJoZWxwXCIgZm9yIGF2YWlsYWJsZSBjb21tYW5kcy4nKTtcbiAgICAgIHRoaXMuY29tcGxldGVQcm9jZXNzaW5nKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjb21wbGV0ZVByb2Nlc3NpbmcoKSB7XG4gICAgdGhpcy5pc1Byb2Nlc3NpbmcgPSBmYWxzZTtcbiAgICB0aGlzLnN0YXR1c1RleHQgPSAnUmVhZHknO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgXG4gICAgLy8g5pyA5paw44Gu5Ye65Yqb44GM6KaL44GI44KL44KI44GG44Gr44K544Kv44Ot44O844OrXG4gICAgdGhpcy50ZXJtaW5hbC5zY3JvbGxUb0JvdHRvbSgpO1xuICAgIFxuICAgIC8vIOWFpeWKm+ODleOCo+ODvOODq+ODieOBq+ODleOCqeODvOOCq+OCueOCkuaIu+OBmVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5pbnB1dEZpZWxkKCk/Lm5hdGl2ZUVsZW1lbnQ/LmZvY3VzKCk7XG4gICAgfSwgMTAwKTtcbiAgfVxuXG4gIGhhbmRsZUVudGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy8gU2hpZnQrRW50ZXLjgb7jgZ/jga9DdHJsK0VudGVy44Gu5aC05ZCI44Gv5pS56KGM44KS6Kix5Y+vXG4gICAgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8IGV2ZW50LmN0cmxLZXkpIHtcbiAgICAgIHJldHVybjsgLy8g44OH44OV44Kp44Or44OI5YuV5L2c77yI5pS56KGM77yJ44KS6Kix5Y+vXG4gICAgfVxuICAgIFxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgcHJlZml4ID0gJ3hfeCAnO1xuICAgIGNvbnN0IGFjdHVhbENvbW1hbmQgPSB0aGlzLmN1cnJlbnRJbnB1dC5zdGFydHNXaXRoKHByZWZpeCkgXG4gICAgICA/IHRoaXMuY3VycmVudElucHV0LnNsaWNlKHByZWZpeC5sZW5ndGgpLnRyaW0oKVxuICAgICAgOiB0aGlzLmN1cnJlbnRJbnB1dC50cmltKCk7XG4gICAgXG4gICAgaWYgKGFjdHVhbENvbW1hbmQpIHtcbiAgICAgIC8vIOOCs+ODnuODs+ODieOCkuOCv+ODvOODn+ODiuODq+OBq+ihqOekuu+8iOaUueihjOOCkuWQq+OCgOWgtOWQiOOBr+mBqeWIh+OBq+WHpueQhu+8iVxuICAgICAgY29uc3QgZGlzcGxheUNvbW1hbmQgPSBhY3R1YWxDb21tYW5kLnNwbGl0KCdcXG4nKS5tYXAobGluZSA9PiAnXFx4MWJbMzJtPiB4X3ggXFx4MWJbMG0nICsgbGluZSkuam9pbignXFxyXFxuJyk7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlKGRpc3BsYXlDb21tYW5kICsgJ1xcclxcbicpO1xuICAgICAgXG4gICAgICAvLyDlsaXmrbTjgavov73liqBcbiAgICAgIHRoaXMuY29tbWFuZEhpc3RvcnkucHVzaChhY3R1YWxDb21tYW5kKTtcbiAgICAgIHRoaXMuaGlzdG9yeUluZGV4ID0gdGhpcy5jb21tYW5kSGlzdG9yeS5sZW5ndGg7XG4gICAgICBcbiAgICAgIC8vIOOCs+ODnuODs+ODieOCkuWHpueQhlxuICAgICAgdGhpcy5wcm9jZXNzQ29tbWFuZChhY3R1YWxDb21tYW5kKTtcbiAgICAgIFxuICAgICAgLy8g5YWl5Yqb44KS5Yid5pyf54q25oWL44Gr44Oq44K744OD44OIXG4gICAgICB0aGlzLmN1cnJlbnRJbnB1dCA9IHByZWZpeDtcbiAgICAgIFxuICAgICAgLy8gdGV4dGFyZWHjga7pq5jjgZXjgpLjg6rjgrvjg4Pjg4hcbiAgICAgIGNvbnN0IHRleHRhcmVhID0gdGhpcy5pbnB1dEZpZWxkKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICBpZiAodGV4dGFyZWEpIHtcbiAgICAgICAgdGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgbmF2aWdhdGVIaXN0b3J5KGV2ZW50OiBLZXlib2FyZEV2ZW50LCBkaXJlY3Rpb246IG51bWJlcikge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgY29uc3QgcHJlZml4ID0gJ3hfeCAnO1xuICAgIFxuICAgIGlmIChkaXJlY3Rpb24gPT09IC0xICYmIHRoaXMuaGlzdG9yeUluZGV4ID4gMCkge1xuICAgICAgLy8g5LiK55+i5Y2wXG4gICAgICB0aGlzLmhpc3RvcnlJbmRleC0tO1xuICAgICAgdGhpcy5jdXJyZW50SW5wdXQgPSBwcmVmaXggKyB0aGlzLmNvbW1hbmRIaXN0b3J5W3RoaXMuaGlzdG9yeUluZGV4XTtcbiAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gMSkge1xuICAgICAgLy8g5LiL55+i5Y2wXG4gICAgICBpZiAodGhpcy5oaXN0b3J5SW5kZXggPCB0aGlzLmNvbW1hbmRIaXN0b3J5Lmxlbmd0aCAtIDEpIHtcbiAgICAgICAgdGhpcy5oaXN0b3J5SW5kZXgrKztcbiAgICAgICAgdGhpcy5jdXJyZW50SW5wdXQgPSBwcmVmaXggKyB0aGlzLmNvbW1hbmRIaXN0b3J5W3RoaXMuaGlzdG9yeUluZGV4XTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaGlzdG9yeUluZGV4ID0gdGhpcy5jb21tYW5kSGlzdG9yeS5sZW5ndGg7XG4gICAgICAgIHRoaXMuY3VycmVudElucHV0ID0gcHJlZml4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgZ2VuZXJhdGVDb21tYW5kKGV2ZW50PzogS2V5Ym9hcmRFdmVudCkge1xuICAgIGlmIChldmVudCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgXG4gICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcnKTtcbiAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzJt4pePIEdlbmVyYXRpbmcgY29tbWFuZCBzdWdnZXN0aW9ucy4uLlxceDFiWzBtJyk7XG4gICAgXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnRlcm1pbmFsLndyaXRlbG4oJ1xceDFiWzE7MzNt4pePIFN1Z2dlc3RlZCBjb21tYW5kczpcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIDEuIFxceDFiWzM2bWF1dGggLS1wcm92aWRlcj1nb29nbGVcXHgxYlswbScpO1xuICAgICAgdGhpcy50ZXJtaW5hbC53cml0ZWxuKCcgIDIuIFxceDFiWzM2bWxvZ2luXFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignICAzLiBcXHgxYlszNm1oZWxwXFx4MWJbMG0nKTtcbiAgICAgIHRoaXMudGVybWluYWwud3JpdGVsbignJyk7XG4gICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9LCA1MDApO1xuICB9XG5cbiAgLy8gc2lkZUFwcOOCkumWieOBmOOCi1xuICBjbG9zZVNpZGVBcHAoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmFwcC5zaWRlQXBwLmNvbGxhcHNlKCk7XG4gIH1cblxuICAvLyDlhaXlipvjg5XjgqPjg7zjg6vjg4njgavjg5Xjgqnjg7zjgqvjgrnjgpLoqK3lrppcbiAgZm9jdXNJbnB1dCgpIHtcbiAgICB0aGlzLmlucHV0RmllbGQoKT8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgfVxuXG4gIC8vIHRleHRhcmVh44Gu6auY44GV44KS5YaF5a6544Gr5ZCI44KP44Gb44Gm6Kq/5pW0XG4gIGFkanVzdFRleHRhcmVhSGVpZ2h0KCkge1xuICAgIGNvbnN0IHRleHRhcmVhID0gdGhpcy5pbnB1dEZpZWxkKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKHRleHRhcmVhKSB7XG4gICAgICAvLyDkuIDml6bpq5jjgZXjgpLjg6rjgrvjg4Pjg4hcbiAgICAgIHRleHRhcmVhLnN0eWxlLmhlaWdodCA9ICcyMHB4JztcbiAgICAgIC8vIHNjcm9sbEhlaWdodOOCkueiuuiqjeOBl+OAgeWun+mam+OBq+W/heimgeOBqumrmOOBleOCkuioreWumlxuICAgICAgY29uc3Qgc2Nyb2xsSGVpZ2h0ID0gdGV4dGFyZWEuc2Nyb2xsSGVpZ2h0O1xuICAgICAgLy8g44OR44OH44Kj44Oz44Kw44KS6ICD5oWu44GX44Gf5pyA5bCP6auY44GVXG4gICAgICBjb25zdCBtaW5IZWlnaHQgPSA0NDsgLy8gcGFkZGluZzogMTJweCAqIDIgKyBsaW5lLWhlaWdodDogMjBweFxuICAgICAgdGV4dGFyZWEuc3R5bGUuaGVpZ2h0ID0gTWF0aC5tYXgobWluSGVpZ2h0LCBzY3JvbGxIZWlnaHQpICsgJ3B4JztcbiAgICB9XG4gIH1cblxuICAvLyDjg5fjg6zjg5XjgqPjg4Pjgq/jgrnjga7liYrpmaTjgpLpmLLmraJcbiAgcHJldmVudFByZWZpeERlbGV0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3QgdGV4dGFyZWEgPSBldmVudC50YXJnZXQgYXMgSFRNTFRleHRBcmVhRWxlbWVudDtcbiAgICBjb25zdCBwcmVmaXggPSAneF94ICc7XG4gICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSB0ZXh0YXJlYS5zZWxlY3Rpb25TdGFydDtcbiAgICBcbiAgICAvLyDjg5Djg4Pjgq/jgrnjg5rjg7zjgrnjgb7jgZ/jga9EZWxldGXjgq3jg7zjga7lh6bnkIZcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQmFja3NwYWNlJyB8fCBldmVudC5rZXkgPT09ICdEZWxldGUnKSB7XG4gICAgICBpZiAoc2VsZWN0aW9uU3RhcnQgPD0gcHJlZml4Lmxlbmd0aCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICAvLyDlt6bnn6LljbDjgq3jg7zjgafjgqvjg7zjgr3jg6vjgYzjg5fjg6zjg5XjgqPjg4Pjgq/jgrnjgojjgorliY3jgavooYzjgYvjgarjgYTjgojjgYbjgatcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dMZWZ0JyAmJiBzZWxlY3Rpb25TdGFydCA8PSBwcmVmaXgubGVuZ3RoKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBcbiAgICAvLyBIb21lIOOCreODvOOBp+OCq+ODvOOCveODq+OCkuODl+ODrOODleOCo+ODg+OCr+OCueOBruebtOW+jOOBq+enu+WLlVxuICAgIGlmIChldmVudC5rZXkgPT09ICdIb21lJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdlKHByZWZpeC5sZW5ndGgsIHByZWZpeC5sZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIOWFpeWKm+aZguOBruWHpueQhlxuICBoYW5kbGVJbnB1dChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB0ZXh0YXJlYSA9IGV2ZW50LnRhcmdldCBhcyBIVE1MVGV4dEFyZWFFbGVtZW50O1xuICAgIGNvbnN0IHByZWZpeCA9ICd4X3ggJztcbiAgICBcbiAgICAvLyDjg5fjg6zjg5XjgqPjg4Pjgq/jgrnjgYzliYrpmaTjgZXjgozjgabjgYTjgZ/jgonlvqnlhYNcbiAgICBpZiAoIXRoaXMuY3VycmVudElucHV0LnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgdGhpcy5jdXJyZW50SW5wdXQgPSBwcmVmaXggKyB0aGlzLmN1cnJlbnRJbnB1dC5yZXBsYWNlKC9eeF94XFxzKi8sICcnKTtcbiAgICAgIFxuICAgICAgLy8g44Kr44O844K944Or5L2N572u44KS6Kq/5pW0XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgbmV3UG9zaXRpb24gPSBNYXRoLm1heChwcmVmaXgubGVuZ3RoLCB0ZXh0YXJlYS5zZWxlY3Rpb25TdGFydCk7XG4gICAgICAgIHRleHRhcmVhLnNldFNlbGVjdGlvblJhbmdlKG5ld1Bvc2l0aW9uLCBuZXdQb3NpdGlvbik7XG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgLy8g6auY44GV6Kq/5pW077yI5pS56KGM44GM5ZCr44G+44KM44Gm44GE44KL5aC05ZCI44Gu44G/77yJXG4gICAgaWYgKHRoaXMuY3VycmVudElucHV0LmluY2x1ZGVzKCdcXG4nKSkge1xuICAgICAgdGhpcy5hZGp1c3RUZXh0YXJlYUhlaWdodCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyAx6KGM44Gu5aC05ZCI44Gv5Zu65a6a6auY44GVXG4gICAgICB0ZXh0YXJlYS5zdHlsZS5oZWlnaHQgPSAnNDRweCc7XG4gICAgfVxuICAgIFxuICAgIC8vIOOCq+ODvOOCveODq+S9jee9ruOCkuabtOaWsFxuICAgIHRoaXMudXBkYXRlQ3Vyc29yUG9zaXRpb24oKTtcbiAgfVxuXG4gIC8vIOODleOCqeODvOOCq+OCueaZguOBruWHpueQhlxuICBoYW5kbGVGb2N1cygpIHtcbiAgICB0aGlzLnNob3dDdXJzb3IgPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlQ3Vyc29yUG9zaXRpb24oKTtcbiAgfVxuXG4gIC8vIOODluODqeODvOaZguOBruWHpueQhlxuICBoYW5kbGVCbHVyKCkge1xuICAgIHRoaXMuc2hvd0N1cnNvciA9IGZhbHNlO1xuICB9XG5cbiAgLy8g44Kr44O844K944Or5L2N572u44Gu5pu05pawXG4gIHVwZGF0ZUN1cnNvclBvc2l0aW9uKCkge1xuICAgIGNvbnN0IHRleHRhcmVhID0gdGhpcy5pbnB1dEZpZWxkKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKCF0ZXh0YXJlYSkgcmV0dXJuO1xuICAgIFxuICAgIGNvbnN0IGN1cnNvclBvcyA9IHRleHRhcmVhLnNlbGVjdGlvblN0YXJ0O1xuICAgIGNvbnN0IHRleHRCZWZvcmVDdXJzb3IgPSB0aGlzLmN1cnJlbnRJbnB1dC5zdWJzdHJpbmcoMCwgY3Vyc29yUG9zKTtcbiAgICBcbiAgICAvLyDmlLnooYzjgafliIblibJcbiAgICBjb25zdCBsaW5lcyA9IHRleHRCZWZvcmVDdXJzb3Iuc3BsaXQoJ1xcbicpO1xuICAgIGNvbnN0IGN1cnJlbnRMaW5lSW5kZXggPSBsaW5lcy5sZW5ndGggLSAxO1xuICAgIGNvbnN0IGN1cnJlbnRMaW5lVGV4dCA9IGxpbmVzW2N1cnJlbnRMaW5lSW5kZXhdO1xuICAgIFxuICAgIC8vIOS7ruOBrmNhbnZhc+OCkuS9v+OBo+OBpuePvuWcqOOBruihjOOBruODhuOCreOCueODiOW5heOCkuioiOeul1xuICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgIGNvbnN0IGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcbiAgICBpZiAoY29udGV4dCkge1xuICAgICAgY29udGV4dC5mb250ID0gJzE0cHggXCJTRiBNb25vXCIsIE1vbmFjbywgbW9ub3NwYWNlJztcbiAgICAgIGNvbnN0IHRleHRXaWR0aCA9IGNvbnRleHQubWVhc3VyZVRleHQoY3VycmVudExpbmVUZXh0KS53aWR0aDtcbiAgICAgIFxuICAgICAgLy8g44Kr44O844K944Or5L2N572u44KS6Kit5a6a77yI44OR44OH44Kj44Oz44Kw5YiG44KS6ICD5oWu77yJXG4gICAgICB0aGlzLmN1cnNvckxlZnQgPSA4ICsgdGV4dFdpZHRoOyAvLyA4cHgg44GvIHRleHRhcmVhIOOBruW3puODkeODh+OCo+ODs+OCsFxuICAgICAgXG4gICAgICAvLyDlnoLnm7TkvY3nva7jgpLoqr/mlbTvvIjooYzmlbDjgavln7rjgaXjgYTjgabjgIHjgrnjgq/jg63jg7zjg6vkvY3nva7jgoLogIPmha7vvIlcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRleHRhcmVhLnNjcm9sbFRvcDtcbiAgICAgIHRoaXMuY3Vyc29yVG9wID0gMTIgKyAoY3VycmVudExpbmVJbmRleCAqIDIwKSAtIHNjcm9sbFRvcDsgLy8g44K544Kv44Ot44O844Or5YiG44KS5byV44GPXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQWdlbnRUZW1wbGF0ZSgpOiBQcm92aWRlcltdIHtcbiAgcmV0dXJuIFtcbiAgICBwcm92aWRlQ29tcG9uZW50KEVudHJhbmNlVGVtcGxhdGVTdG9yZSwgKCkgPT4gQWdlbnRUZW1wbGF0ZSksXG4gIF07XG59Il19","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieHhtYWNoaW5hLWNvbXBvbmVudHMtdGVtcGxhdGVzLWFnZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvQHh4bWFjaGluYS9jb21wb25lbnRzL3NyYy9saWIvdGVtcGxhdGVzL2FnZW50L3h4bWFjaGluYS1jb21wb25lbnRzLXRlbXBsYXRlcy1hZ2VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":[],"mappings":"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"}
|
|
@@ -216,7 +216,7 @@ class SessionNavigatorOrganism extends NgAtomicComponent {
|
|
|
216
216
|
}
|
|
217
217
|
</div>
|
|
218
218
|
</mat-toolbar>
|
|
219
|
-
`, isInline: true, styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-
|
|
219
|
+
`, isInline: true, styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-AHuY: var(--text);--sys: #888;--sys-SCOPED-IN-session-navigator-AHuY: var(--sys);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-session-navigator-AHuY: var(--border);--primary-color: rgba(26, 26, 26, .6);--primary-color-SCOPED-IN-session-navigator-AHuY: var(--primary-color);--on-primary-color: #e0e0e0;--on-primary-color-SCOPED-IN-session-navigator-AHuY: var(--on-primary-color);--secondary-color: #888;--secondary-color-SCOPED-IN-session-navigator-AHuY: var(--secondary-color);--on-secondary-color: #f0f0f0;--on-secondary-color-SCOPED-IN-session-navigator-AHuY: var(--on-secondary-color);--background-color: rgba(26, 26, 26, .6);--background-color-SCOPED-IN-session-navigator-AHuY: var(--background-color);--on-background-color: #e0e0e0;--on-background-color-SCOPED-IN-session-navigator-AHuY: var(--on-background-color)}:host{display:block;width:100%;height:56px}:host mat-toolbar{display:flex;width:100%;height:100%;justify-content:space-between;align-items:center;overflow:hidden;transition:background .5s ease-in-out;background-color:var(--background-color-SCOPED-IN-session-navigator-AHuY);color:var(--on-background-color-SCOPED-IN-session-navigator-AHuY);background:#1a1a1a99!important;border-bottom:1px solid var(--border-SCOPED-IN-session-navigator-AHuY)!important;font-family:SF Mono,Monaco,monospace!important;font-size:12px!important;--mat-toolbar-title-text-size: 12px !important;--mat-sys-title-large-size: 12px !important}:host mat-toolbar>div:first-child,:host mat-toolbar>div:last-child{flex:0 0 auto}:host mat-toolbar>div:nth-child(2){flex:1 1 auto;display:flex;justify-content:flex-start;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host mat-toolbar *:not(.mat-icon){font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar span,:host mat-toolbar div,:host mat-toolbar h1,:host mat-toolbar h2,:host mat-toolbar h3,:host mat-toolbar h4,:host mat-toolbar h5,:host mat-toolbar h6{font-size:12px!important;font-family:SF Mono,Monaco,monospace!important;color:var(--text-SCOPED-IN-session-navigator-AHuY)!important}:host mat-toolbar .mat-button{color:var(--sys-SCOPED-IN-session-navigator-AHuY)!important;font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar .mat-button:hover{color:var(--text-SCOPED-IN-session-navigator-AHuY)!important}:host mat-toolbar .mat-icon-button{color:var(--sys-SCOPED-IN-session-navigator-AHuY)!important;opacity:.7}:host mat-toolbar .mat-icon-button:hover{color:var(--text-SCOPED-IN-session-navigator-AHuY)!important;opacity:1}:host mat-toolbar .mat-icon-button .mat-icon{font-family:Material Icons!important;font-size:24px!important}:host div{display:flex;justify-content:center;align-items:center}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-session-navigator-AHuY: var(--text);--sys: #666;--sys-SCOPED-IN-session-navigator-AHuY: var(--sys);--border: #ddd;--border-SCOPED-IN-session-navigator-AHuY: var(--border)}}@media (max-width: 600px){:host mat-toolbar span{font-size:11px!important}}\n"], dependencies: [{ kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatToolbarModule }, { kind: "component", type: i1$1.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: MenuButtonAtomStore, selector: "atoms-menu-button, atoms-smart-menu-button", inputs: ["actions", "type", "action"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
220
220
|
}
|
|
221
221
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImport: i0, type: SessionNavigatorOrganism, decorators: [{
|
|
222
222
|
type: Component,
|
|
@@ -250,7 +250,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.5", ngImpor
|
|
|
250
250
|
directive: SessionNavigatorOrganismStore,
|
|
251
251
|
inputs: ['startActions', 'endActions', 'title'],
|
|
252
252
|
}
|
|
253
|
-
], styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-
|
|
253
|
+
], styles: [":host{display:block;--text: #e0e0e0;--text-SCOPED-IN-session-navigator-AHuY: var(--text);--sys: #888;--sys-SCOPED-IN-session-navigator-AHuY: var(--sys);--border: rgba(51, 51, 51, .5);--border-SCOPED-IN-session-navigator-AHuY: var(--border);--primary-color: rgba(26, 26, 26, .6);--primary-color-SCOPED-IN-session-navigator-AHuY: var(--primary-color);--on-primary-color: #e0e0e0;--on-primary-color-SCOPED-IN-session-navigator-AHuY: var(--on-primary-color);--secondary-color: #888;--secondary-color-SCOPED-IN-session-navigator-AHuY: var(--secondary-color);--on-secondary-color: #f0f0f0;--on-secondary-color-SCOPED-IN-session-navigator-AHuY: var(--on-secondary-color);--background-color: rgba(26, 26, 26, .6);--background-color-SCOPED-IN-session-navigator-AHuY: var(--background-color);--on-background-color: #e0e0e0;--on-background-color-SCOPED-IN-session-navigator-AHuY: var(--on-background-color)}:host{display:block;width:100%;height:56px}:host mat-toolbar{display:flex;width:100%;height:100%;justify-content:space-between;align-items:center;overflow:hidden;transition:background .5s ease-in-out;background-color:var(--background-color-SCOPED-IN-session-navigator-AHuY);color:var(--on-background-color-SCOPED-IN-session-navigator-AHuY);background:#1a1a1a99!important;border-bottom:1px solid var(--border-SCOPED-IN-session-navigator-AHuY)!important;font-family:SF Mono,Monaco,monospace!important;font-size:12px!important;--mat-toolbar-title-text-size: 12px !important;--mat-sys-title-large-size: 12px !important}:host mat-toolbar>div:first-child,:host mat-toolbar>div:last-child{flex:0 0 auto}:host mat-toolbar>div:nth-child(2){flex:1 1 auto;display:flex;justify-content:flex-start;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}:host mat-toolbar *:not(.mat-icon){font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar span,:host mat-toolbar div,:host mat-toolbar h1,:host mat-toolbar h2,:host mat-toolbar h3,:host mat-toolbar h4,:host mat-toolbar h5,:host mat-toolbar h6{font-size:12px!important;font-family:SF Mono,Monaco,monospace!important;color:var(--text-SCOPED-IN-session-navigator-AHuY)!important}:host mat-toolbar .mat-button{color:var(--sys-SCOPED-IN-session-navigator-AHuY)!important;font-family:SF Mono,Monaco,monospace!important}:host mat-toolbar .mat-button:hover{color:var(--text-SCOPED-IN-session-navigator-AHuY)!important}:host mat-toolbar .mat-icon-button{color:var(--sys-SCOPED-IN-session-navigator-AHuY)!important;opacity:.7}:host mat-toolbar .mat-icon-button:hover{color:var(--text-SCOPED-IN-session-navigator-AHuY)!important;opacity:1}:host mat-toolbar .mat-icon-button .mat-icon{font-family:Material Icons!important;font-size:24px!important}:host div{display:flex;justify-content:center;align-items:center}@media (prefers-color-scheme: light){:host{--text: #333;--text-SCOPED-IN-session-navigator-AHuY: var(--text);--sys: #666;--sys-SCOPED-IN-session-navigator-AHuY: var(--sys);--border: #ddd;--border-SCOPED-IN-session-navigator-AHuY: var(--border)}}@media (max-width: 600px){:host mat-toolbar span{font-size:11px!important}}\n"] }]
|
|
254
254
|
}] });
|
|
255
255
|
|
|
256
256
|
var InvoiceAppActionId;
|