UNPKG

@mescius/inputman.angular

Version:

このパッケージには、Angular用の[InputManJS](https://developer.mescius.jp/inputmanjs)コンポーネントが含まれます。

167 lines 18.9 kB
import { __decorate, __metadata } from "tslib"; import { Component, ElementRef, Input, Output, EventEmitter, forwardRef, } from "@angular/core"; import { NG_VALUE_ACCESSOR } from "@angular/forms"; import { GC } from "../inputman"; import { Property } from "../common"; import { provideParent } from "./GcComponents"; import { GcInputManBaseComponent } from "./GcInputManBase"; import * as i0 from "@angular/core"; export class GcMultilineTextBoxComponent extends GcInputManBaseComponent { constructor(ref) { super(ref); this.onChange = () => { }; this.onTouched = () => { }; this.onEditStatusChanged = new EventEmitter(); this.onInvalidInput = new EventEmitter(); this.onKeyExit = new EventEmitter(); this.onTextChanged = new EventEmitter(); this.onIMEReadingStringOutput = new EventEmitter(); this.textChange = new EventEmitter(); // For V2.1 Compatibility, we have to keep this property or event this.imeReadingStringChange = new EventEmitter(); } writeValue(value) { this.text = value; if (this._imCtrl) { this._imCtrl.text = this.text; } } registerOnChange(onChange) { this.onChange = onChange; } registerOnTouched(onTouched) { this.onTouched = onTouched; } setDisabledState(isDisabled) { this.enabled = !isDisabled; if (this._imCtrl) { this._imCtrl.enabled = this.enabled; } } initGcComponent() { var element = document.createElement("textarea"); this.createTemplate(element); this["IMEReadingStringAppend"] = this.imeReadingStringAppend; this["IMEReadingStringKanaMode"] = this.imeReadingStringKanaMode; this["IMEReadingStringEnableAlphabetReadingMapping"] = this.imeReadingStringEnableAlphabetReadingMapping; this._imCtrl = new GC.InputMan.GcMultiLineTextBox(element, this); } bindEvent() { if (!this._imCtrl) { return; } super.bindEvent(); this._imCtrl.onTextChanged((s) => { this.onChange(s.getText()); this.onTouched(); }); this._imCtrl.onIMEReadingStringOutput((eventArgs) => { this.onIMEReadingStringOutput.emit(eventArgs); this.imeReadingStringChange.emit(this._imCtrl.getIMEReadingString()); }); } } GcMultilineTextBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcMultilineTextBoxComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); GcMultilineTextBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: GcMultilineTextBoxComponent, selector: "gc-multiline-textbox", inputs: { countWrappedLine: "countWrappedLine", lengthAsByte: "lengthAsByte", maxLength: "maxLength", maxLineCount: "maxLineCount", imeReadingStringKanaMode: "imeReadingStringKanaMode", scrollBarMode: "scrollBarMode", scrollBars: "scrollBars", wordWrap: "wordWrap", acceptsReturn: "acceptsReturn", acceptsTab: "acceptsTab", imeReadingStringAppend: "imeReadingStringAppend", imeReadingStringEnableAlphabetReadingMapping: "imeReadingStringEnableAlphabetReadingMapping", exitOnLastChar: "exitOnLastChar", highlightText: "highlightText", format: "format", autoConvert: "autoConvert", text: "text", lines: "lines", imeReadingString: "imeReadingString", cursorPosition: "cursorPosition", resize: "resize", hiddenResizeIcon: "hiddenResizeIcon", AITextAssistantConfig: "AITextAssistantConfig", showAITextAssistantButton: "showAITextAssistantButton", useAISmartTip: "useAISmartTip", AISmartTipConfig: "AISmartTipConfig" }, outputs: { onEditStatusChanged: "onEditStatusChanged", onInvalidInput: "onInvalidInput", onKeyExit: "onKeyExit", onTextChanged: "onTextChanged", onIMEReadingStringOutput: "onIMEReadingStringOutput", textChange: "textChange", imeReadingStringChange: "imeReadingStringChange" }, providers: [ provideParent(GcMultilineTextBoxComponent), { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => GcMultilineTextBoxComponent), }, ], usesInheritance: true, ngImport: i0, template: ``, isInline: true }); __decorate([ Property("setIMEReadingStringKanaMode"), __metadata("design:type", String) ], GcMultilineTextBoxComponent.prototype, "imeReadingStringKanaMode", void 0); __decorate([ Property("setIMEReadingStringAppend"), __metadata("design:type", Boolean) ], GcMultilineTextBoxComponent.prototype, "imeReadingStringAppend", void 0); __decorate([ Property("setIMEReadingStringEnableAlphabetReadingMapping"), __metadata("design:type", Boolean) ], GcMultilineTextBoxComponent.prototype, "imeReadingStringEnableAlphabetReadingMapping", void 0); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: GcMultilineTextBoxComponent, decorators: [{ type: Component, args: [{ selector: "gc-multiline-textbox", template: ``, providers: [ provideParent(GcMultilineTextBoxComponent), { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => GcMultilineTextBoxComponent), }, ], }] }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { countWrappedLine: [{ type: Input }], lengthAsByte: [{ type: Input }], maxLength: [{ type: Input }], maxLineCount: [{ type: Input }], imeReadingStringKanaMode: [{ type: Input }], scrollBarMode: [{ type: Input }], scrollBars: [{ type: Input }], wordWrap: [{ type: Input }], acceptsReturn: [{ type: Input }], acceptsTab: [{ type: Input }], imeReadingStringAppend: [{ type: Input }], imeReadingStringEnableAlphabetReadingMapping: [{ type: Input }], exitOnLastChar: [{ type: Input }], highlightText: [{ type: Input }], format: [{ type: Input }], autoConvert: [{ type: Input }], text: [{ type: Input }], lines: [{ type: Input }], imeReadingString: [{ type: Input }], cursorPosition: [{ type: Input }], resize: [{ type: Input }], hiddenResizeIcon: [{ type: Input }], AITextAssistantConfig: [{ type: Input }], showAITextAssistantButton: [{ type: Input }], useAISmartTip: [{ type: Input }], AISmartTipConfig: [{ type: Input }], onEditStatusChanged: [{ type: Output }], onInvalidInput: [{ type: Output }], onKeyExit: [{ type: Output }], onTextChanged: [{ type: Output }], onIMEReadingStringOutput: [{ type: Output }], textChange: [{ type: Output }], imeReadingStringChange: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2NNdXRpTGluZVRleHRCb3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb21wb25lbnRzL0djTXV0aUxpbmVUZXh0Qm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBZTNELE1BQU0sT0FBTywyQkFDWCxTQUFRLHVCQUF1RDtJQUcvRCxZQUFZLEdBQWU7UUFDekIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBR0wsYUFBUSxHQUFhLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUM5QixjQUFTLEdBQWEsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBK0VoQyx3QkFBbUIsR0FDeEIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVkLG1CQUFjLEdBQ25CLElBQUksWUFBWSxFQUFFLENBQUM7UUFFZCxjQUFTLEdBQ2QsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVkLGtCQUFhLEdBQ2xCLElBQUksWUFBWSxFQUFFLENBQUM7UUFFZCw2QkFBd0IsR0FDN0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUVkLGVBQVUsR0FBeUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM3RCxpRUFBaUU7UUFFMUQsMkJBQXNCLEdBQXlCLElBQUksWUFBWSxFQUFFLENBQUM7SUFwR3pFLENBQUM7SUFLRCxV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Q0FBQyxHQUFHLEVBQUUsNEJBQTRCLENBQUM7eUJBQzNEO3FCQUNGO2lCQUNGO2lHQWdDUSxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBR0MsWUFBWTtzQkFEbEIsS0FBSztnQkFHQyxTQUFTO3NCQURmLEtBQUs7Z0JBR0MsWUFBWTtzQkFEbEIsS0FBSztnQkFJQyx3QkFBd0I7c0JBRjlCLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFHQyxVQUFVO3NCQURoQixLQUFLO2dCQUdDLFFBQVE7c0JBRGQsS0FBSztnQkFHQyxhQUFhO3NCQURuQixLQUFLO2dCQUdDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSUMsc0JBQXNCO3NCQUY1QixLQUFLO2dCQUtDLDRDQUE0QztzQkFGbEQsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUdDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBR0MsTUFBTTtzQkFEWixLQUFLO2dCQUdDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBR0MsSUFBSTtzQkFEVixLQUFLO2dCQUdDLEtBQUs7c0JBRFgsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBR0MsY0FBYztzQkFEcEIsS0FBSztnQkFHQyxNQUFNO3NCQURaLEtBQUs7Z0JBR0MsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQUdDLHFCQUFxQjtzQkFEM0IsS0FBSztnQkFHQyx5QkFBeUI7c0JBRC9CLEtBQUs7Z0JBR0MsYUFBYTtzQkFEbkIsS0FBSztnQkFHQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBSUMsbUJBQW1CO3NCQUR6QixNQUFNO2dCQUlBLGNBQWM7c0JBRHBCLE1BQU07Z0JBSUEsU0FBUztzQkFEZixNQUFNO2dCQUlBLGFBQWE7c0JBRG5CLE1BQU07Z0JBSUEsd0JBQXdCO3NCQUQ5QixNQUFNO2dCQUlBLFVBQVU7c0JBRGhCLE1BQU07Z0JBSUEsc0JBQXNCO3NCQUQ1QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIGZvcndhcmRSZWYsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcbmltcG9ydCB7IEdDIH0gZnJvbSBcIi4uL2lucHV0bWFuXCI7XG5pbXBvcnQgeyBQcm9wZXJ0eSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IHByb3ZpZGVQYXJlbnQgfSBmcm9tIFwiLi9HY0NvbXBvbmVudHNcIjtcbmltcG9ydCB7IEdjSW5wdXRNYW5CYXNlQ29tcG9uZW50IH0gZnJvbSBcIi4vR2NJbnB1dE1hbkJhc2VcIjtcbmltcG9ydCB7IEdjTnVtYmVyQ29tcG9uZW50IH0gZnJvbSBcIi4vR2NOdW1iZXJcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImdjLW11bHRpbGluZS10ZXh0Ym94XCIsXG4gIHRlbXBsYXRlOiBgYCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZVBhcmVudChHY011bHRpbGluZVRleHRCb3hDb21wb25lbnQpLFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBHY011bHRpbGluZVRleHRCb3hDb21wb25lbnQpLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEdjTXVsdGlsaW5lVGV4dEJveENvbXBvbmVudFxuICBleHRlbmRzIEdjSW5wdXRNYW5CYXNlQ29tcG9uZW50PEdDLklucHV0TWFuLkdjTXVsdGlMaW5lVGV4dEJveD5cbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3Nvclxue1xuICBjb25zdHJ1Y3RvcihyZWY6IEVsZW1lbnRSZWYpIHtcbiAgICBzdXBlcihyZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkNoYW5nZTogRnVuY3Rpb24gPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQ6IEZ1bmN0aW9uID0gKCkgPT4ge307XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy50ZXh0ID0gdmFsdWU7XG4gICAgaWYgKHRoaXMuX2ltQ3RybCkge1xuICAgICAgdGhpcy5faW1DdHJsLnRleHQgPSB0aGlzLnRleHQ7XG4gICAgfVxuICB9XG4gIHJlZ2lzdGVyT25DaGFuZ2Uob25DaGFuZ2U6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBvbkNoYW5nZTtcbiAgfVxuICByZWdpc3Rlck9uVG91Y2hlZChvblRvdWNoZWQ6IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gb25Ub3VjaGVkO1xuICB9XG4gIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuZW5hYmxlZCA9ICFpc0Rpc2FibGVkO1xuICAgIGlmICh0aGlzLl9pbUN0cmwpIHtcbiAgICAgIHRoaXMuX2ltQ3RybC5lbmFibGVkID0gdGhpcy5lbmFibGVkO1xuICAgIH1cbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjb3VudFdyYXBwZWRMaW5lOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGVuZ3RoQXNCeXRlOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwdWJsaWMgbWF4TGVuZ3RoOiBudW1iZXI7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBtYXhMaW5lQ291bnQ6IG51bWJlcjtcbiAgQElucHV0KClcbiAgQFByb3BlcnR5KFwic2V0SU1FUmVhZGluZ1N0cmluZ0thbmFNb2RlXCIpXG4gIHB1YmxpYyBpbWVSZWFkaW5nU3RyaW5nS2FuYU1vZGU6IEdDLklucHV0TWFuLkthbmFNb2RlO1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2Nyb2xsQmFyTW9kZTogR0MuSW5wdXRNYW4uU2Nyb2xsQmFyTW9kZTtcbiAgQElucHV0KClcbiAgcHVibGljIHNjcm9sbEJhcnM6IEdDLklucHV0TWFuLlNjcm9sbEJhcnM7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB3b3JkV3JhcDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHVibGljIGFjY2VwdHNSZXR1cm46IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhY2NlcHRzVGFiOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAUHJvcGVydHkoXCJzZXRJTUVSZWFkaW5nU3RyaW5nQXBwZW5kXCIpXG4gIHB1YmxpYyBpbWVSZWFkaW5nU3RyaW5nQXBwZW5kOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAUHJvcGVydHkoXCJzZXRJTUVSZWFkaW5nU3RyaW5nRW5hYmxlQWxwaGFiZXRSZWFkaW5nTWFwcGluZ1wiKVxuICBwdWJsaWMgaW1lUmVhZGluZ1N0cmluZ0VuYWJsZUFscGhhYmV0UmVhZGluZ01hcHBpbmc6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBleGl0T25MYXN0Q2hhcjogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHVibGljIGhpZ2hsaWdodFRleHQ6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmb3JtYXQ6IHN0cmluZztcbiAgQElucHV0KClcbiAgcHVibGljIGF1dG9Db252ZXJ0OiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwdWJsaWMgdGV4dDogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwdWJsaWMgbGluZXM6IEFycmF5PHN0cmluZz47XG4gIC8vIEZvciBWMi4xIENvbXBhdGliaWxpdHksIHdlIGhhdmUgdG8ga2VlcCB0aGlzIHByb3BlcnR5IG9yIGV2ZW50XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBpbWVSZWFkaW5nU3RyaW5nOiBzdHJpbmc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBjdXJzb3JQb3NpdGlvbjogR0MuSW5wdXRNYW4uTXVsdGlMaW5lQ3Vyc29yUG9zaXRpb247XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyByZXNpemU6IEdDLklucHV0TWFuLlJlc2l6ZU1vZGU7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBoaWRkZW5SZXNpemVJY29uOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwdWJsaWMgQUlUZXh0QXNzaXN0YW50Q29uZmlnOiBHQy5JbnB1dE1hbi5BSS5HY1RleHRBc3Npc3RhbnRDb25maWc7XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93QUlUZXh0QXNzaXN0YW50QnV0dG9uOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBwdWJsaWMgdXNlQUlTbWFydFRpcDogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgcHVibGljIEFJU21hcnRUaXBDb25maWc6IEdDLklucHV0TWFuLkFJLkdjU21hcnRUaXBDb25maWc7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvbkVkaXRTdGF0dXNDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NNdWx0aUxpbmVUZXh0Qm94PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9uSW52YWxpZElucHV0OiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NNdWx0aUxpbmVUZXh0Qm94PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9uS2V5RXhpdDogRXZlbnRFbWl0dGVyPEdDLklucHV0TWFuLkdjTXVsdGlMaW5lVGV4dEJveD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvblRleHRDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8R0MuSW5wdXRNYW4uR2NNdWx0aUxpbmVUZXh0Qm94PiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KClcbiAgcHVibGljIG9uSU1FUmVhZGluZ1N0cmluZ091dHB1dDogRXZlbnRFbWl0dGVyPEdDLklucHV0TWFuLkdjTXVsdGlMaW5lVGV4dEJveD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyB0ZXh0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gRm9yIFYyLjEgQ29tcGF0aWJpbGl0eSwgd2UgaGF2ZSB0byBrZWVwIHRoaXMgcHJvcGVydHkgb3IgZXZlbnRcbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBpbWVSZWFkaW5nU3RyaW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwcm90ZWN0ZWQgaW5pdEdjQ29tcG9uZW50KCk6IHZvaWQge1xuICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInRleHRhcmVhXCIpO1xuICAgIHRoaXMuY3JlYXRlVGVtcGxhdGUoZWxlbWVudCk7XG4gICAgdGhpc1tcIklNRVJlYWRpbmdTdHJpbmdBcHBlbmRcIl0gPSB0aGlzLmltZVJlYWRpbmdTdHJpbmdBcHBlbmQ7XG4gICAgdGhpc1tcIklNRVJlYWRpbmdTdHJpbmdLYW5hTW9kZVwiXSA9IHRoaXMuaW1lUmVhZGluZ1N0cmluZ0thbmFNb2RlO1xuICAgIHRoaXNbXCJJTUVSZWFkaW5nU3RyaW5nRW5hYmxlQWxwaGFiZXRSZWFkaW5nTWFwcGluZ1wiXSA9XG4gICAgICB0aGlzLmltZVJlYWRpbmdTdHJpbmdFbmFibGVBbHBoYWJldFJlYWRpbmdNYXBwaW5nO1xuXG4gICAgdGhpcy5faW1DdHJsID0gbmV3IEdDLklucHV0TWFuLkdjTXVsdGlMaW5lVGV4dEJveChlbGVtZW50LCB0aGlzIGFzIGFueSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYmluZEV2ZW50KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5faW1DdHJsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc3VwZXIuYmluZEV2ZW50KCk7XG5cbiAgICB0aGlzLl9pbUN0cmwub25UZXh0Q2hhbmdlZCgocykgPT4ge1xuICAgICAgdGhpcy5vbkNoYW5nZShzLmdldFRleHQoKSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5faW1DdHJsLm9uSU1FUmVhZGluZ1N0cmluZ091dHB1dCgoZXZlbnRBcmdzKSA9PiB7XG4gICAgICB0aGlzLm9uSU1FUmVhZGluZ1N0cmluZ091dHB1dC5lbWl0KGV2ZW50QXJncyk7XG4gICAgICB0aGlzLmltZVJlYWRpbmdTdHJpbmdDaGFuZ2UuZW1pdCh0aGlzLl9pbUN0cmwuZ2V0SU1FUmVhZGluZ1N0cmluZygpKTtcbiAgICB9KTtcbiAgfVxufVxuIl19