UNPKG

@kre-form/ant

Version:

216 lines (214 loc) 18.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, ViewChild, HostListener } from "@angular/core"; import { CdkOverlayOrigin } from "@angular/cdk/overlay"; import { FieldType } from "@kre-form/core"; import { ActivatedRoute } from "@angular/router"; export class KreFormFieldTextI18n extends FieldType { /** * @param {?} route */ constructor(route) { super(); this.route = route; this.triggerWidth = "260px"; this.languageList = [ { languageType: "zh-cn", label: "中", resValue: null }, { languageType: "en", label: "英", resValue: null }, ]; } /** * @param {?} event * @return {?} */ resize(event) { this.visibleChange(event); } /** * @return {?} */ ngOnInit() { if (!!this.route.snapshot.queryParams["lang"] && ((/** @type {?} */ (this.route.snapshot.queryParams["lang"]))).toLocaleLowerCase() === "en") { this.languageList = [ { languageType: "zh-cn", label: "中", resValue: null }, { languageType: "en", label: "EN", resValue: null }, ]; } } /** * @return {?} */ get language() { if (this.model != undefined && this.model != null && this.key != undefined && this.key != null && this.model.hasOwnProperty(this.key)) { if (this.formControl.value != undefined && this.formControl.value != null && this.formControl.value != [] && this.formControl.value.length > 0) { if (this.formControl.value != this.languageList) { this.languageList = this.formControl.value; } } } return this.languageList; } /** * @param {?} value * @return {?} */ onChange(value) { if (this.to.required) { /** @type {?} */ let empty = this.languageList.some((/** * @param {?} item * @return {?} */ (item) => { return ((item.resValue === null || item.resValue === "" || item.resValue === " ") && item.languageType === "zh-cn"); })); if (empty) { this.formControl.setValue([]); } else { this.formControl.setValue(this.languageList); } } else { this.formControl.setValue(this.languageList); } this.formControl.markAsTouched(); } /** * @param {?} event * @return {?} */ visibleChange(event) { if (event) { if (this.cdkOverlayOrigin !== undefined) { this.triggerWidth = this.cdkOverlayOrigin.elementRef.nativeElement.getBoundingClientRect() .width - 0 + "px"; } } } /** * @return {?} */ get langText() { if (this.model != undefined && this.model != null && this.key != undefined && this.key != null && this.model[this.key] != undefined) { /** @type {?} */ let lang = this.model[this.key]; if (lang != undefined && lang != null && lang != "" && lang instanceof Array && lang.length > 0) { return lang[0]["resValue"]; } return ""; } return ""; } } KreFormFieldTextI18n.decorators = [ { type: Component, args: [{ selector: "kreform-field-inputi18n", template: ` <ng-container *ngIf="formStatus !== 0; else other"> <div class="control-design"> <input nz-input disabled /> </div> </ng-container> <ng-template #other> <ng-container *ngIf="editor === true"> <div class="inputi18n"> <div class="inputi18n-text" cdkOverlayOrigin> <input nz-input autocomplete="off" [(ngModel)]="language[0].resValue" [kreFormAttributes]="field" (ngModelChange)="onChange(language[0].resValue)" nz-popover nzPopoverTrigger="click" [nzPopoverContent]="contentTemplate" nzOverlayClassName="inputi18n-template" nzPopoverPlacement="bottom" [nzOverlayStyle]="{ width: triggerWidth }" (nzVisibleChange)="visibleChange($event)" [maxLength]="to.maxLength || 200" [minLength]="to.minLength || 0" /> <i nz-icon class="inputi18n-i" nzType="global"></i> </div> <!-- <div class="tips"> <i class="icon-bangzhu" [nzTooltipTitle]="tips" nzTooltipPlacement="top" nz-tooltip *ngIf="tips != ''" ></i> </div> --> </div> <ng-template #contentTemplate> <ul> <ng-container *ngFor="let item of language; let i = index"> <li *ngIf="i > 0"> <label>{{ item.label }}</label> <input nz-input autocomplete="off" [(ngModel)]="item.resValue" [kreFormAttributes]="field" (ngModelChange)="onChange(item.resValue)" [maxLength]="to.maxLength || 200" [minLength]="to.minLength || 0" /> </li> </ng-container> </ul> </ng-template> </ng-container> <div class="fieldtext" *ngIf="editor === false">{{ langText }}</div> </ng-template> ` }] } ]; /** @nocollapse */ KreFormFieldTextI18n.ctorParameters = () => [ { type: ActivatedRoute } ]; KreFormFieldTextI18n.propDecorators = { cdkOverlayOrigin: [{ type: ViewChild, args: [CdkOverlayOrigin, { static: false },] }], resize: [{ type: HostListener, args: ["window:resize", ["$event"],] }] }; if (false) { /** @type {?} */ KreFormFieldTextI18n.prototype.triggerWidth; /** @type {?} */ KreFormFieldTextI18n.prototype.cdkOverlayOrigin; /** @type {?} */ KreFormFieldTextI18n.prototype.languageList; /** * @type {?} * @private */ KreFormFieldTextI18n.prototype.route; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGkxOG4uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9Aa3JlLWZvcm0vYW50LyIsInNvdXJjZXMiOlsibGliL3R5cGVzL3RleHRpMThuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUF1QixnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFxRXpELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxTQUFTOzs7O0lBQ2pELFlBQW9CLEtBQXFCO1FBQ3ZDLEtBQUssRUFBRSxDQUFDO1FBRFUsVUFBSyxHQUFMLEtBQUssQ0FBZ0I7UUFJekMsaUJBQVksR0FBRyxPQUFPLENBQUM7UUFRdkIsaUJBQVksR0FBZTtZQUN6QixFQUFFLFlBQVksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO1lBQ3JELEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7U0FDbkQsQ0FBQztJQWJGLENBQUM7Ozs7O0lBT0QsTUFBTSxDQUFDLEtBQVU7UUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7Ozs7SUFNRCxRQUFRO1FBQ04sSUFDRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztZQUN6QyxDQUNFLG1CQUFBLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBVSxDQUNsRCxDQUFDLGlCQUFpQixFQUFFLEtBQUssSUFBSSxFQUM5QjtZQUNBLElBQUksQ0FBQyxZQUFZLEdBQUc7Z0JBQ2xCLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBQ3JELEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7YUFDcEQsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7OztJQUVELElBQUksUUFBUTtRQUNWLElBQ0UsSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSTtZQUNsQixJQUFJLENBQUMsR0FBRyxJQUFJLFNBQVM7WUFDckIsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJO1lBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFDbkM7WUFDQSxJQUNFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLFNBQVM7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLElBQUk7Z0JBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxJQUFJLEVBQUU7Z0JBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQ2pDO2dCQUNBLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtvQkFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztpQkFDNUM7YUFDRjtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7Ozs7O0lBRUQsUUFBUSxDQUFDLEtBQVU7UUFDakIsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRTs7Z0JBQ2hCLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUk7Ozs7WUFBQyxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUMvQyxPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUk7b0JBQ3JCLElBQUksQ0FBQyxRQUFRLEtBQUssRUFBRTtvQkFDcEIsSUFBSSxDQUFDLFFBQVEsS0FBSyxHQUFHLENBQUM7b0JBQ3hCLElBQUksQ0FBQyxZQUFZLEtBQUssT0FBTyxDQUM5QixDQUFDO1lBQ0osQ0FBQyxFQUFDO1lBQ0YsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDL0I7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQzlDO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM5QztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7Ozs7SUFFRCxhQUFhLENBQUMsS0FBVTtRQUN0QixJQUFJLEtBQUssRUFBRTtZQUNULElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLFNBQVMsRUFBRTtnQkFDdkMsSUFBSSxDQUFDLFlBQVk7b0JBQ2YsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMscUJBQXFCLEVBQUU7eUJBQ25FLEtBQUs7d0JBQ1IsQ0FBQzt3QkFDRCxJQUFJLENBQUM7YUFDUjtTQUNGO0lBQ0gsQ0FBQzs7OztJQUVELElBQUksUUFBUTtRQUNWLElBQ0UsSUFBSSxDQUFDLEtBQUssSUFBSSxTQUFTO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSTtZQUNsQixJQUFJLENBQUMsR0FBRyxJQUFJLFNBQVM7WUFDckIsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJO1lBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFNBQVMsRUFDakM7O2dCQUNJLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDL0IsSUFDRSxJQUFJLElBQUksU0FBUztnQkFDakIsSUFBSSxJQUFJLElBQUk7Z0JBQ1osSUFBSSxJQUFJLEVBQUU7Z0JBQ1YsSUFBSSxZQUFZLEtBQUs7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUNmO2dCQUNBLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzVCO1lBQ0QsT0FBTyxFQUFFLENBQUM7U0FDWDtRQUNELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQzs7O1lBN0tGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E2RFQ7YUFDRjs7OztZQXBFUSxjQUFjOzs7K0JBNEVwQixTQUFTLFNBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO3FCQUU3QyxZQUFZLFNBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDOzs7O0lBSnpDLDRDQUF1Qjs7SUFFdkIsZ0RBQytDOztJQUsvQyw0Q0FHRTs7Ozs7SUFmVSxxQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBIb3N0TGlzdGVuZXIgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQ2RrQ29ubmVjdGVkT3ZlcmxheSwgQ2RrT3ZlcmxheU9yaWdpbiB9IGZyb20gXCJAYW5ndWxhci9jZGsvb3ZlcmxheVwiO1xuaW1wb3J0IHsgRmllbGRUeXBlIH0gZnJvbSBcIkBrcmUtZm9ybS9jb3JlXCI7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuXG5pbXBvcnQgKiBhcyBfIGZyb20gXCJsb2Rhc2hcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcImtyZWZvcm0tZmllbGQtaW5wdXRpMThuXCIsXG4gIHRlbXBsYXRlOiBgXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZvcm1TdGF0dXMgIT09IDA7IGVsc2Ugb3RoZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250cm9sLWRlc2lnblwiPlxuICAgICAgICA8aW5wdXQgbnotaW5wdXQgZGlzYWJsZWQgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgPG5nLXRlbXBsYXRlICNvdGhlcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlZGl0b3IgPT09IHRydWVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0aTE4blwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dGkxOG4tdGV4dFwiIGNka092ZXJsYXlPcmlnaW4+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgbnotaW5wdXRcbiAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJsYW5ndWFnZVswXS5yZXNWYWx1ZVwiXG4gICAgICAgICAgICAgIFtrcmVGb3JtQXR0cmlidXRlc109XCJmaWVsZFwiXG4gICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKGxhbmd1YWdlWzBdLnJlc1ZhbHVlKVwiXG4gICAgICAgICAgICAgIG56LXBvcG92ZXJcbiAgICAgICAgICAgICAgbnpQb3BvdmVyVHJpZ2dlcj1cImNsaWNrXCJcbiAgICAgICAgICAgICAgW256UG9wb3ZlckNvbnRlbnRdPVwiY29udGVudFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgbnpPdmVybGF5Q2xhc3NOYW1lPVwiaW5wdXRpMThuLXRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgbnpQb3BvdmVyUGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgW256T3ZlcmxheVN0eWxlXT1cInsgd2lkdGg6IHRyaWdnZXJXaWR0aCB9XCJcbiAgICAgICAgICAgICAgKG56VmlzaWJsZUNoYW5nZSk9XCJ2aXNpYmxlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICBbbWF4TGVuZ3RoXT1cInRvLm1heExlbmd0aCB8fCAyMDBcIlxuICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cInRvLm1pbkxlbmd0aCB8fCAwXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aSBuei1pY29uIGNsYXNzPVwiaW5wdXRpMThuLWlcIiBuelR5cGU9XCJnbG9iYWxcIj48L2k+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwidGlwc1wiPlxuICAgICAgICAgICAgPGlcbiAgICAgICAgICAgICAgY2xhc3M9XCJpY29uLWJhbmd6aHVcIlxuICAgICAgICAgICAgICBbbnpUb29sdGlwVGl0bGVdPVwidGlwc1wiXG4gICAgICAgICAgICAgIG56VG9vbHRpcFBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgIG56LXRvb2x0aXBcbiAgICAgICAgICAgICAgKm5nSWY9XCJ0aXBzICE9ICcnXCJcbiAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgPC9kaXY+IC0tPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2NvbnRlbnRUZW1wbGF0ZT5cbiAgICAgICAgICA8dWw+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxhbmd1YWdlOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDxsaSAqbmdJZj1cImkgPiAwXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsPnt7IGl0ZW0ubGFiZWwgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgbnotaW5wdXRcbiAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXG4gICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cIml0ZW0ucmVzVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgW2tyZUZvcm1BdHRyaWJ1dGVzXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ2hhbmdlKGl0ZW0ucmVzVmFsdWUpXCJcbiAgICAgICAgICAgICAgICAgIFttYXhMZW5ndGhdPVwidG8ubWF4TGVuZ3RoIHx8IDIwMFwiXG4gICAgICAgICAgICAgICAgICBbbWluTGVuZ3RoXT1cInRvLm1pbkxlbmd0aCB8fCAwXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC91bD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzcz1cImZpZWxkdGV4dFwiICpuZ0lmPVwiZWRpdG9yID09PSBmYWxzZVwiPnt7IGxhbmdUZXh0IH19PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgYCxcbn0pXG5leHBvcnQgY2xhc3MgS3JlRm9ybUZpZWxkVGV4dEkxOG4gZXh0ZW5kcyBGaWVsZFR5cGUgaW1wbGVtZW50cyBPbkluaXQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICB0cmlnZ2VyV2lkdGggPSBcIjI2MHB4XCI7XG5cbiAgQFZpZXdDaGlsZChDZGtPdmVybGF5T3JpZ2luLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY2RrT3ZlcmxheU9yaWdpbjogQ2RrT3ZlcmxheU9yaWdpbiB8IHVuZGVmaW5lZDtcbiAgQEhvc3RMaXN0ZW5lcihcIndpbmRvdzpyZXNpemVcIiwgW1wiJGV2ZW50XCJdKVxuICByZXNpemUoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMudmlzaWJsZUNoYW5nZShldmVudCk7XG4gIH1cbiAgbGFuZ3VhZ2VMaXN0OiBBcnJheTxhbnk+ID0gW1xuICAgIHsgbGFuZ3VhZ2VUeXBlOiBcInpoLWNuXCIsIGxhYmVsOiBcIuS4rVwiLCByZXNWYWx1ZTogbnVsbCB9LFxuICAgIHsgbGFuZ3VhZ2VUeXBlOiBcImVuXCIsIGxhYmVsOiBcIuiLsVwiLCByZXNWYWx1ZTogbnVsbCB9LFxuICBdO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmIChcbiAgICAgICEhdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcImxhbmdcIl0gJiZcbiAgICAgIChcbiAgICAgICAgdGhpcy5yb3V0ZS5zbmFwc2hvdC5xdWVyeVBhcmFtc1tcImxhbmdcIl0gYXMgc3RyaW5nXG4gICAgICApLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IFwiZW5cIlxuICAgICkge1xuICAgICAgdGhpcy5sYW5ndWFnZUxpc3QgPSBbXG4gICAgICAgIHsgbGFuZ3VhZ2VUeXBlOiBcInpoLWNuXCIsIGxhYmVsOiBcIuS4rVwiLCByZXNWYWx1ZTogbnVsbCB9LFxuICAgICAgICB7IGxhbmd1YWdlVHlwZTogXCJlblwiLCBsYWJlbDogXCJFTlwiLCByZXNWYWx1ZTogbnVsbCB9LFxuICAgICAgXTtcbiAgICB9XG4gIH1cblxuICBnZXQgbGFuZ3VhZ2UoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5tb2RlbCAhPSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMubW9kZWwgIT0gbnVsbCAmJlxuICAgICAgdGhpcy5rZXkgIT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLmtleSAhPSBudWxsICYmXG4gICAgICB0aGlzLm1vZGVsLmhhc093blByb3BlcnR5KHRoaXMua2V5KVxuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlICE9IG51bGwgJiZcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC52YWx1ZSAhPSBbXSAmJlxuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnZhbHVlLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICBpZiAodGhpcy5mb3JtQ29udHJvbC52YWx1ZSAhPSB0aGlzLmxhbmd1YWdlTGlzdCkge1xuICAgICAgICAgIHRoaXMubGFuZ3VhZ2VMaXN0ID0gdGhpcy5mb3JtQ29udHJvbC52YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZUxpc3Q7XG4gIH1cblxuICBvbkNoYW5nZSh2YWx1ZTogYW55KSB7XG4gICAgaWYgKHRoaXMudG8ucmVxdWlyZWQpIHtcbiAgICAgIGxldCBlbXB0eSA9IHRoaXMubGFuZ3VhZ2VMaXN0LnNvbWUoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIChpdGVtLnJlc1ZhbHVlID09PSBudWxsIHx8XG4gICAgICAgICAgICBpdGVtLnJlc1ZhbHVlID09PSBcIlwiIHx8XG4gICAgICAgICAgICBpdGVtLnJlc1ZhbHVlID09PSBcIiBcIikgJiZcbiAgICAgICAgICBpdGVtLmxhbmd1YWdlVHlwZSA9PT0gXCJ6aC1jblwiXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICAgIGlmIChlbXB0eSkge1xuICAgICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbnRyb2wuc2V0VmFsdWUodGhpcy5sYW5ndWFnZUxpc3QpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMubGFuZ3VhZ2VMaXN0KTtcbiAgICB9XG4gICAgdGhpcy5mb3JtQ29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XG4gIH1cblxuICB2aXNpYmxlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGlmICh0aGlzLmNka092ZXJsYXlPcmlnaW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnRyaWdnZXJXaWR0aCA9XG4gICAgICAgICAgdGhpcy5jZGtPdmVybGF5T3JpZ2luLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICAgICAgLndpZHRoIC1cbiAgICAgICAgICAwICtcbiAgICAgICAgICBcInB4XCI7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxhbmdUZXh0KCkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubW9kZWwgIT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLm1vZGVsICE9IG51bGwgJiZcbiAgICAgIHRoaXMua2V5ICE9IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5rZXkgIT0gbnVsbCAmJlxuICAgICAgdGhpcy5tb2RlbFt0aGlzLmtleV0gIT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBsZXQgbGFuZyA9IHRoaXMubW9kZWxbdGhpcy5rZXldO1xuICAgICAgaWYgKFxuICAgICAgICBsYW5nICE9IHVuZGVmaW5lZCAmJlxuICAgICAgICBsYW5nICE9IG51bGwgJiZcbiAgICAgICAgbGFuZyAhPSBcIlwiICYmXG4gICAgICAgIGxhbmcgaW5zdGFuY2VvZiBBcnJheSAmJlxuICAgICAgICBsYW5nLmxlbmd0aCA+IDBcbiAgICAgICkge1xuICAgICAgICByZXR1cm4gbGFuZ1swXVtcInJlc1ZhbHVlXCJdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgfVxuICAgIHJldHVybiBcIlwiO1xuICB9XG59XG4iXX0=