UNPKG

com.phloxui

Version:

PhloxUI Ng2+ Framework

499 lines (498 loc) 37.3 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input, Output, EventEmitter } from '@angular/core'; import { I18N, Option } from '../../decorator/decorators'; import { AbstractTableComponent } from './AbstractTableComponent'; const /** @type {?} */ TYPE_NAME = "phx-table-body"; export class DefaultTableBody extends AbstractTableComponent { /** * @param {?} elementRef */ constructor(elementRef) { super(elementRef); this.rowDragEvent = new EventEmitter(); this.rowDragStartEvent = new EventEmitter(); this.rowDragEndEvent = new EventEmitter(); this.rowDragEnterEvent = new EventEmitter(); this.rowDragOverEvent = new EventEmitter(); this.rowDragLeaveEvent = new EventEmitter(); this.rowDropEvent = new EventEmitter(); this.rowDropAcceptedEvent = new EventEmitter(); this.rowDropRejectedEvent = new EventEmitter(); } /** * @param {?} table * @return {?} */ doInitialize(table) { } /** * @return {?} */ isSelfDataDirty() { return false; } /** * @return {?} */ selfResetData() { } /** * @param {?} data * @return {?} */ selfSaveData(data) { } /** * @param {?} rows * @return {?} */ render(rows) { return new Promise((resolve, reject) => { try { this.rows = rows; resolve(); } catch (/** @type {?} */ e) { reject(e); } }); } /** * @return {?} */ getRowControllers() { return this.rows; } /** * @return {?} */ getRowDragEvent() { return this.rowDragEvent; } /** * @param {?} event * @return {?} */ setRowDragEvent(event) { this.rowDragEvent = event; } /** * @return {?} */ getRowDragStartEvent() { return this.rowDragStartEvent; } /** * @param {?} event * @return {?} */ setRowDragStartEvent(event) { this.rowDragStartEvent = event; } /** * @return {?} */ getRowDragEndEvent() { return this.rowDragEndEvent; } /** * @param {?} event * @return {?} */ setRowDragEndEvent(event) { this.rowDragEndEvent = event; } /** * @return {?} */ getRowDragEnterEvent() { return this.rowDragEnterEvent; } /** * @param {?} event * @return {?} */ setRowDragEnterEvent(event) { this.rowDragEnterEvent = event; } /** * @return {?} */ getRowDragOverEvent() { return this.rowDragOverEvent; } /** * @param {?} event * @return {?} */ setRowDragOverEvent(event) { this.rowDragOverEvent = event; } /** * @return {?} */ getRowDragLeaveEvent() { return this.rowDragLeaveEvent; } /** * @param {?} event * @return {?} */ setRowDragLeaveEvent(event) { this.rowDragLeaveEvent = event; } /** * @return {?} */ getRowDropEvent() { return this.rowDropEvent; } /** * @param {?} event * @return {?} */ setRowDropEvent(event) { this.rowDropEvent = event; } /** * @return {?} */ getRowDropAcceptedEvent() { return this.rowDropAcceptedEvent; } /** * @param {?} event * @return {?} */ setRowDropAcceptedEvent(event) { this.rowDropAcceptedEvent = event; } /** * @return {?} */ getRowDropRejectedEvent() { return this.rowDropRejectedEvent; } /** * @param {?} event * @return {?} */ setRowDropRejectedEvent(event) { this.rowDropRejectedEvent = event; } /** * @param {?} event * @return {?} */ onDrag(event) { if (this.rowDragEvent !== null && this.rowDragEvent !== undefined) { this.rowDragEvent.emit(event); } let /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDrag === 'function') { parent.onDrag(event); } } /** * @param {?} event * @return {?} */ onDragStart(event) { if (this.rowDragStartEvent !== null && this.rowDragStartEvent !== undefined) { this.rowDragStartEvent.emit(event); } let /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDragStart === 'function') { parent.onDragStart(event); } } /** * @param {?} event * @return {?} */ onDragEnd(event) { if (this.rowDragEndEvent !== null && this.rowDragEndEvent !== undefined) { this.rowDragEndEvent.emit(event); } let /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDragEnd === 'function') { parent.onDragEnd(event); } } /** * @param {?} event * @return {?} */ onDragEnter(event) { if (this.rowDragEnterEvent !== null && this.rowDragEnterEvent !== undefined) { this.rowDragEnterEvent.emit(event); } let /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDragEnter === 'function') { parent.onDragEnter(event); } } /** * @param {?} event * @return {?} */ onDragOver(event) { if (this.rowDragOverEvent !== null && this.rowDragOverEvent !== undefined) { this.rowDragOverEvent.emit(event); } let /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDragOver === 'function') { parent.onDragOver(event); } } /** * @param {?} event * @return {?} */ onDragLeave(event) { if (this.rowDragLeaveEvent !== null && this.rowDragLeaveEvent !== undefined) { this.rowDragLeaveEvent.emit(event); } let /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDragLeave === 'function') { parent.onDragLeave(event); } } /** * @param {?} event * @return {?} */ onDrop(event) { if (this.rowDropEvent !== null && this.rowDropEvent !== undefined) { this.rowDropEvent.emit(event); } let /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDrop === 'function') { parent.onDrop(event); } } /** * @param {?} event * @return {?} */ onDropAccepted(event) { if (this.rowDropAcceptedEvent !== null && this.rowDropAcceptedEvent !== undefined) { this.rowDropAcceptedEvent.emit(event); } let /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDropAccepted === 'function') { parent.onDropAccepted(event); } } /** * @param {?} event * @return {?} */ onDropRejected(event) { if (this.rowDropRejectedEvent !== null && this.rowDropRejectedEvent !== undefined) { this.rowDropRejectedEvent.emit(event); } let /** @type {?} */ parent = /** @type {?} */ (this.getDataParent()); if (parent !== null && typeof parent.onDropRejected === 'function') { parent.onDropRejected(event); } } } DefaultTableBody.TYPE_NAME = TYPE_NAME; DefaultTableBody.decorators = [ { type: Component, args: [{ moduleId: module.id, selector: TYPE_NAME, template: `<phx-component-wrapper [type]="getTable().getModel().getRowModel().getComponentType()" [options]="getTable().getModel().getRowModel().getComponentOptions()" [dataParent]="this" [ignoreParentData]="true" [handler]="row.wrapperHandler" [data]="row.data" [class]="'phx-table-row' + (getTable().getModel().getRowModel().getCSSClass() ? ' ' + getTable().getModel().getRowModel().getCSSClass() : '')" *ngFor="let row of getRowControllers(); let idx = index"> </phx-component-wrapper> ` },] }, ]; /** @nocollapse */ DefaultTableBody.ctorParameters = () => [ { type: ElementRef, }, ]; DefaultTableBody.propDecorators = { "dataParent": [{ type: Input },], "ignoreParentData": [{ type: Input },], "data": [{ type: Input },], "ignoreParentDisabled": [{ type: Input },], "delegateHistory": [{ type: Input },], "onDisabled": [{ type: Input },], "onEnabled": [{ type: Input },], "loadingEnabled": [{ type: Input },], "i18nKey": [{ type: Input },], "bypass": [{ type: Input, args: ['i18nBypass',] },], "options": [{ type: Input },], "disabled": [{ type: Input },], "help": [{ type: Input },], "rowDragEvent": [{ type: Output, args: ['phxRowDrag',] },], "rowDragStartEvent": [{ type: Output, args: ['phxRowDragStart',] },], "rowDragEndEvent": [{ type: Output, args: ['phxRowDragEnd',] },], "rowDragEnterEvent": [{ type: Output, args: ['phxRowDragEnter',] },], "rowDragOverEvent": [{ type: Output, args: ['phxRowDragOver',] },], "rowDragLeaveEvent": [{ type: Output, args: ['phxRowDragLeave',] },], "rowDropEvent": [{ type: Output, args: ['phxRowDrop',] },], "rowDropAcceptedEvent": [{ type: Output, args: ['phxRowDropAccepted',] },], "rowDropRejectedEvent": [{ type: Output, args: ['phxRowDropRejected',] },], }; tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], DefaultTableBody.prototype, "dataParent", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultTableBody.prototype, "ignoreParentData", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Object) ], DefaultTableBody.prototype, "data", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultTableBody.prototype, "ignoreParentDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultTableBody.prototype, "delegateHistory", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], DefaultTableBody.prototype, "onDisabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Function) ], DefaultTableBody.prototype, "onEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultTableBody.prototype, "loadingEnabled", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", String) ], DefaultTableBody.prototype, "i18nKey", void 0); tslib_1.__decorate([ Option('i18nBypass'), tslib_1.__metadata("design:type", Boolean) ], DefaultTableBody.prototype, "bypass", void 0); tslib_1.__decorate([ Option(), tslib_1.__metadata("design:type", Boolean) ], DefaultTableBody.prototype, "disabled", void 0); tslib_1.__decorate([ Option(), I18N(), tslib_1.__metadata("design:type", Object) ], DefaultTableBody.prototype, "help", void 0); tslib_1.__decorate([ I18N(), tslib_1.__metadata("design:type", Array) ], DefaultTableBody.prototype, "rows", void 0); tslib_1.__decorate([ Option('rowDrag'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDragEvent", void 0); tslib_1.__decorate([ Option('rowDragStart'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDragStartEvent", void 0); tslib_1.__decorate([ Option('rowDragEnd'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDragEndEvent", void 0); tslib_1.__decorate([ Option('rowDragEnter'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDragEnterEvent", void 0); tslib_1.__decorate([ Option('rowDragOver'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDragOverEvent", void 0); tslib_1.__decorate([ Option('rowDragLeave'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDragLeaveEvent", void 0); tslib_1.__decorate([ Option('rowDrop'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDropEvent", void 0); tslib_1.__decorate([ Option('rowDropAccepted'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDropAcceptedEvent", void 0); tslib_1.__decorate([ Option('rowDropRejected'), tslib_1.__metadata("design:type", EventEmitter) ], DefaultTableBody.prototype, "rowDropRejectedEvent", void 0); function DefaultTableBody_tsickle_Closure_declarations() { /** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */ DefaultTableBody.decorators; /** * @nocollapse * @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>} */ DefaultTableBody.ctorParameters; /** @type {!Object<string,!Array<{type: !Function, args: (undefined|!Array<?>)}>>} */ DefaultTableBody.propDecorators; /** @type {?} */ DefaultTableBody.TYPE_NAME; /** @type {?} */ DefaultTableBody.prototype.dataParent; /** @type {?} */ DefaultTableBody.prototype.ignoreParentData; /** @type {?} */ DefaultTableBody.prototype.data; /** @type {?} */ DefaultTableBody.prototype.ignoreParentDisabled; /** @type {?} */ DefaultTableBody.prototype.delegateHistory; /** @type {?} */ DefaultTableBody.prototype.onDisabled; /** @type {?} */ DefaultTableBody.prototype.onEnabled; /** @type {?} */ DefaultTableBody.prototype.loadingEnabled; /** @type {?} */ DefaultTableBody.prototype.i18nKey; /** @type {?} */ DefaultTableBody.prototype.bypass; /** @type {?} */ DefaultTableBody.prototype.options; /** @type {?} */ DefaultTableBody.prototype.disabled; /** @type {?} */ DefaultTableBody.prototype.help; /** @type {?} */ DefaultTableBody.prototype.rows; /** @type {?} */ DefaultTableBody.prototype.rowDragEvent; /** @type {?} */ DefaultTableBody.prototype.rowDragStartEvent; /** @type {?} */ DefaultTableBody.prototype.rowDragEndEvent; /** @type {?} */ DefaultTableBody.prototype.rowDragEnterEvent; /** @type {?} */ DefaultTableBody.prototype.rowDragOverEvent; /** @type {?} */ DefaultTableBody.prototype.rowDragLeaveEvent; /** @type {?} */ DefaultTableBody.prototype.rowDropEvent; /** @type {?} */ DefaultTableBody.prototype.rowDropAcceptedEvent; /** @type {?} */ DefaultTableBody.prototype.rowDropRejectedEvent; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdFRhYmxlQm9keS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvdGFibGUvRGVmYXVsdFRhYmxlQm9keS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzFELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBS2xFLHVCQUFNLFNBQVMsR0FBVyxnQkFBZ0IsQ0FBQztBQWdCM0MsTUFBTSx1QkFBd0IsU0FBUSxzQkFBc0I7Ozs7Z0JBZ0Z2QyxVQUFzQjtRQUN2QyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFFbEIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzVDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUUxQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0MsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7Ozs7OztJ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QUFROzs7SUFFNUIsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxFQUFFOzs7O0lBR1IsTUFBTSxDQUFDLFlBQVksQ0FBQzs7OztJQUtwQixNQUFNLEVBQUU7Ozs7SUFJUixNQUFNLEVBQUU7SUFDUixJQUFJLEVBQUU7Ozs7SUFHTixJQUFJLEVBQUU7Ozs7SUFLTixNQUFNLENBQUMsU0FBUyxDQUFDO3NDQUVNLFlBQVk7OztJQUNuQyxNQUFNLENBQUMsY0FBYyxDQUFDO3NDQUVNLFlBQVk7OztJQUN4QyxNQUFNLENBQUMsWUFBWSxDQUFDO3NDQUVNLFlBQVk7OztJQUN0QyxNQUFNLENBQUMsY0FBYyxDQUFDO3NDQUVNLFlBQVk7OztJQUN4QyxNQUFNLENBQUMsYUFBYSxDQUFDO3NDQUVNLFlBQVk7OztJQUN2QyxNQUFNLENBQUMsY0FBYyxDQUFDO3NDQUVNLFlBQVk7OztJQUN4QyxNQUFNLENBQUMsU0FBUyxDQUFDO3NDQUVNLFlBQVk7OztJQUNuQyxNQUFNLENBQUMsaUJBQWlCLENBQUM7c0NBRU0sWUFBWTs7O0lBQzNDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztzQ0FFTSxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgSTE4TiwgT3B0aW9uIH0gZnJvbSAnLi4vLi4vZGVjb3JhdG9yL2RlY29yYXRvcnMnO1xuXG5pbXBvcnQgeyBJVGFibGVCb2R5IH0gZnJvbSAnLi9JVGFibGVCb2R5JztcbmltcG9ydCB7IEFic3RyYWN0VGFibGVDb21wb25lbnQgfSBmcm9tICcuL0Fic3RyYWN0VGFibGVDb21wb25lbnQnO1xuaW1wb3J0IHsgSVRhYmxlUm93Q29udHJvbGxlciB9IGZyb20gJy4vSVRhYmxlUm93Q29udHJvbGxlcic7XG5pbXBvcnQgeyBQaGxveFRhYmxlIH0gZnJvbSAnLi9QaGxveFRhYmxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJSGFzRGF0YSB9IGZyb20gJy4uL0lIYXNEYXRhJztcblxuY29uc3QgVFlQRV9OQU1FOiBzdHJpbmcgPSBcInBoeC10YWJsZS1ib2R5XCI7XG5cbkBDb21wb25lbnQoe1xuICBtb2R1bGVJZDogbW9kdWxlLmlkLFxuICBzZWxlY3RvcjogVFlQRV9OQU1FLFxuICB0ZW1wbGF0ZTogYDxwaHgtY29tcG9uZW50LXdyYXBwZXIgW3R5cGVdPVwiZ2V0VGFibGUoKS5nZXRNb2RlbCgpLmdldFJvd01vZGVsKCkuZ2V0Q29tcG9uZW50VHlwZSgpXCJcbiAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJnZXRUYWJsZSgpLmdldE1vZGVsKCkuZ2V0Um93TW9kZWwoKS5nZXRDb21wb25lbnRPcHRpb25zKClcIlxuICAgICAgICAgICAgICAgICAgIFtkYXRhUGFyZW50XT1cInRoaXNcIlxuICAgICAgICAgICAgICAgICAgIFtpZ25vcmVQYXJlbnREYXRhXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgIFtoYW5kbGVyXT1cInJvdy53cmFwcGVySGFuZGxlclwiXG4gICAgICAgICAgICAgICAgICAgW2RhdGFdPVwicm93LmRhdGFcIlxuICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCIncGh4LXRhYmxlLXJvdycgKyAoZ2V0VGFibGUoKS5nZXRNb2RlbCgpLmdldFJvd01vZGVsKCkuZ2V0Q1NTQ2xhc3MoKSA/ICcgJyArIGdldFRhYmxlKCkuZ2V0TW9kZWwoKS5nZXRSb3dNb2RlbCgpLmdldENTU0NsYXNzKCkgOiAnJylcIlxuICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCByb3cgb2YgZ2V0Um93Q29udHJvbGxlcnMoKTsgbGV0IGlkeCA9IGluZGV4XCI+XG48L3BoeC1jb21wb25lbnQtd3JhcHBlcj5cbmBcbn0pXG5leHBvcnQgY2xhc3MgRGVmYXVsdFRhYmxlQm9keSBleHRlbmRzIEFic3RyYWN0VGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBJVGFibGVCb2R5IHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRZUEVfTkFNRTogc3RyaW5nID0gVFlQRV9OQU1FO1xuXG4gIC8vIFJlLWRlY2xhcmUgZmllbGQgdG8gZGVjbGFyZSBuZyBASW5wdXQuXG4gIC8vIC0tLSBmcm9tIEFic3RyYWN0SGFzRGF0YVxuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRhdGFQYXJlbnQ6IElIYXNEYXRhO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERhdGE6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGF0YTogYW55O1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGlnbm9yZVBhcmVudERpc2FibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGRlbGVnYXRlSGlzdG9yeTogYm9vbGVhbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBvbkRpc2FibGVkOiBGdW5jdGlvbjtcbiAgQElucHV0KClcbiAgQE9wdGlvbigpXG4gIHByb3RlY3RlZCBvbkVuYWJsZWQ6IEZ1bmN0aW9uO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGxvYWRpbmdFbmFibGVkOiBib29sZWFuO1xuICBASW5wdXQoKVxuICBAT3B0aW9uKClcbiAgcHJvdGVjdGVkIGkxOG5LZXk6IHN0cmluZztcbiAgQElucHV0KCdpMThuQnlwYXNzJylcbiAgQE9wdGlvbignaTE4bkJ5cGFzcycpXG4gIHByb3RlY3RlZCBieXBhc3M6IGJvb2xlYW47XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBvcHRpb25zOiBhbnk7XG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBwcm90ZWN0ZWQgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIC8vIC0tLSBBYnN0cmFjdEhhc0RhdGFIZWxwXG4gIEBJbnB1dCgpXG4gIEBPcHRpb24oKVxuICBASTE4TigpXG4gIHByb3RlY3RlZCBoZWxwOiBhbnk7XG4gIC8vIC0tLSBzZWxmXG4gIEBJMThOKClcbiAgcHJvdGVjdGVkIHJvd3M6IElUYWJsZVJvd0NvbnRyb2xsZXJbXTtcblxuICAvLyBSZS1kZWNsYXJlIGZpZWxkIHRvIGRlY2xhcmUgbmcgQE91dHB1dC5cbiAgLy8gLS0tIHNlbGZcbiAgQE9wdGlvbigncm93RHJhZycpXG4gIEBPdXRwdXQoJ3BoeFJvd0RyYWcnKVxuICBwcm90ZWN0ZWQgcm93RHJhZ0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE9wdGlvbigncm93RHJhZ1N0YXJ0JylcbiAgQE91dHB1dCgncGh4Um93RHJhZ1N0YXJ0JylcbiAgcHJvdGVjdGVkIHJvd0RyYWdTdGFydEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE9wdGlvbigncm93RHJhZ0VuZCcpXG4gIEBPdXRwdXQoJ3BoeFJvd0RyYWdFbmQnKVxuICBwcm90ZWN0ZWQgcm93RHJhZ0VuZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE9wdGlvbigncm93RHJhZ0VudGVyJylcbiAgQE91dHB1dCgncGh4Um93RHJhZ0VudGVyJylcbiAgcHJvdGVjdGVkIHJvd0RyYWdFbnRlckV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE9wdGlvbigncm93RHJhZ092ZXInKVxuICBAT3V0cHV0KCdwaHhSb3dEcmFnT3ZlcicpXG4gIHByb3RlY3RlZCByb3dEcmFnT3ZlckV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE9wdGlvbigncm93RHJhZ0xlYXZlJylcbiAgQE91dHB1dCgncGh4Um93RHJhZ0xlYXZlJylcbiAgcHJvdGVjdGVkIHJvd0RyYWdMZWF2ZUV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE9wdGlvbigncm93RHJvcCcpXG4gIEBPdXRwdXQoJ3BoeFJvd0Ryb3AnKVxuICBwcm90ZWN0ZWQgcm93RHJvcEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE9wdGlvbigncm93RHJvcEFjY2VwdGVkJylcbiAgQE91dHB1dCgncGh4Um93RHJvcEFjY2VwdGVkJylcbiAgcHJvdGVjdGVkIHJvd0Ryb3BBY2NlcHRlZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcbiAgQE9wdGlvbigncm93RHJvcFJlamVjdGVkJylcbiAgQE91dHB1dCgncGh4Um93RHJvcFJlamVjdGVkJylcbiAgcHJvdGVjdGVkIHJvd0Ryb3BSZWplY3RlZEV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgIHN1cGVyKGVsZW1lbnRSZWYpO1xuXG4gICAgdGhpcy5yb3dEcmFnRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5yb3dEcmFnU3RhcnRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLnJvd0RyYWdFbmRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgIHRoaXMucm93RHJhZ0VudGVyRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5yb3dEcmFnT3ZlckV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIHRoaXMucm93RHJhZ0xlYXZlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5yb3dEcm9wRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgdGhpcy5yb3dEcm9wQWNjZXB0ZWRFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICB0aGlzLnJvd0Ryb3BSZWplY3RlZEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICB9XG5cbiAgLy8gSW1wbGVtZW50XG4gIHByb3RlY3RlZCBkb0luaXRpYWxpemUodGFibGU6IFBobG94VGFibGUpOiB2b2lkIHtcbiAgfVxuXG4gIC8vIEltcGxlbWVudFxuICBwdWJsaWMgaXNTZWxmRGF0YURpcnR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEltcGxlbWVudFxuICBwdWJsaWMgc2VsZlJlc2V0RGF0YSgpOiB2b2lkIHtcbiAgfVxuXG4gIC8vIEltcGxlbWVudFxuICBwdWJsaWMgc2VsZlNhdmVEYXRhKGRhdGE6IGFueSk6IHZvaWQge1xuICB9XG5cbiAgcHVibGljIHJlbmRlcihyb3dzOiBJVGFibGVSb3dDb250cm9sbGVyW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGhpcy5yb3dzID0gcm93cztcblxuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJlamVjdChlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dDb250cm9sbGVycygpOiBJVGFibGVSb3dDb250cm9sbGVyW10ge1xuICAgIHJldHVybiB0aGlzLnJvd3M7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um93RHJhZ0V2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3dEcmFnRXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0Um93RHJhZ0V2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xuICAgIHRoaXMucm93RHJhZ0V2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um93RHJhZ1N0YXJ0RXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJvd0RyYWdTdGFydEV2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldFJvd0RyYWdTdGFydEV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xuICAgIHRoaXMucm93RHJhZ1N0YXJ0RXZlbnQgPSBldmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEcmFnRW5kRXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJvd0RyYWdFbmRFdmVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSb3dEcmFnRW5kRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5yb3dEcmFnRW5kRXZlbnQgPSBldmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEcmFnRW50ZXJFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucm93RHJhZ0VudGVyRXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0Um93RHJhZ0VudGVyRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5yb3dEcmFnRW50ZXJFdmVudCA9IGV2ZW50O1xuICB9XG5cbiAgcHVibGljIGdldFJvd0RyYWdPdmVyRXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJvd0RyYWdPdmVyRXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0Um93RHJhZ092ZXJFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLnJvd0RyYWdPdmVyRXZlbnQgPSBldmVudDtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb3dEcmFnTGVhdmVFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucm93RHJhZ0xlYXZlRXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgc2V0Um93RHJhZ0xlYXZlRXZlbnQoZXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+KTogdm9pZCB7XG4gICAgdGhpcy5yb3dEcmFnTGVhdmVFdmVudCA9IGV2ZW50O1xuICB9XG5cbiAgcHVibGljIGdldFJvd0Ryb3BFdmVudCgpOiBFdmVudEVtaXR0ZXI8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMucm93RHJvcEV2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldFJvd0Ryb3BFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLnJvd0Ryb3BFdmVudCA9IGV2ZW50O1xuICB9XG5cbiAgcHVibGljIGdldFJvd0Ryb3BBY2NlcHRlZEV2ZW50KCk6IEV2ZW50RW1pdHRlcjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5yb3dEcm9wQWNjZXB0ZWRFdmVudDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRSb3dEcm9wQWNjZXB0ZWRFdmVudChldmVudDogRXZlbnRFbWl0dGVyPGFueT4pOiB2b2lkIHtcbiAgICB0aGlzLnJvd0Ryb3BBY2NlcHRlZEV2ZW50ID0gZXZlbnQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0Um93RHJvcFJlamVjdGVkRXZlbnQoKTogRXZlbnRFbWl0dGVyPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJvd0Ryb3BSZWplY3RlZEV2ZW50O1xuICB9XG5cbiAgcHVibGljIHNldFJvd0Ryb3BSZWplY3RlZEV2ZW50KGV2ZW50OiBFdmVudEVtaXR0ZXI8YW55Pik6IHZvaWQge1xuICAgIHRoaXMucm93RHJvcFJlamVjdGVkRXZlbnQgPSBldmVudDtcbiAgfVxuXG4gIC8vIEltcGxlbWVudDogSURyYWdnYWJsZVxuICBwdWJsaWMgb25EcmFnKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dEcmFnRXZlbnQgIT09IG51bGwgJiYgdGhpcy5yb3dEcmFnRXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3dEcmFnRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudDogYW55ID0gdGhpcy5nZXREYXRhUGFyZW50KCkgYXMgYW55O1xuICAgIGlmIChwYXJlbnQgIT09IG51bGwgJiYgdHlwZW9mIHBhcmVudC5vbkRyYWcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBhcmVudC5vbkRyYWcoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEltcGxlbWVudDogSURyYWdnYWJsZVxuICBwdWJsaWMgb25EcmFnU3RhcnQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvd0RyYWdTdGFydEV2ZW50ICE9PSBudWxsICYmIHRoaXMucm93RHJhZ1N0YXJ0RXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3dEcmFnU3RhcnRFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBsZXQgcGFyZW50OiBhbnkgPSB0aGlzLmdldERhdGFQYXJlbnQoKSBhcyBhbnk7XG4gICAgaWYgKHBhcmVudCAhPT0gbnVsbCAmJiB0eXBlb2YgcGFyZW50Lm9uRHJhZ1N0YXJ0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwYXJlbnQub25EcmFnU3RhcnQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEltcGxlbWVudDogSURyYWdnYWJsZVxuICBwdWJsaWMgb25EcmFnRW5kKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dEcmFnRW5kRXZlbnQgIT09IG51bGwgJiYgdGhpcy5yb3dEcmFnRW5kRXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3dEcmFnRW5kRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudDogYW55ID0gdGhpcy5nZXREYXRhUGFyZW50KCkgYXMgYW55O1xuICAgIGlmIChwYXJlbnQgIT09IG51bGwgJiYgdHlwZW9mIHBhcmVudC5vbkRyYWdFbmQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBhcmVudC5vbkRyYWdFbmQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEltcGxlbWVudDogSURyb3BwYWJsZVxuICBwdWJsaWMgb25EcmFnRW50ZXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvd0RyYWdFbnRlckV2ZW50ICE9PSBudWxsICYmIHRoaXMucm93RHJhZ0VudGVyRXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3dEcmFnRW50ZXJFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBsZXQgcGFyZW50OiBhbnkgPSB0aGlzLmdldERhdGFQYXJlbnQoKSBhcyBhbnk7XG4gICAgaWYgKHBhcmVudCAhPT0gbnVsbCAmJiB0eXBlb2YgcGFyZW50Lm9uRHJhZ0VudGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwYXJlbnQub25EcmFnRW50ZXIoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEltcGxlbWVudDogSURyb3BwYWJsZVxuICBwdWJsaWMgb25EcmFnT3ZlcihldmVudDogYW55KTogdm9pZCB7XG4gICAgaWYgKHRoaXMucm93RHJhZ092ZXJFdmVudCAhPT0gbnVsbCAmJiB0aGlzLnJvd0RyYWdPdmVyRXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3dEcmFnT3ZlckV2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIGxldCBwYXJlbnQ6IGFueSA9IHRoaXMuZ2V0RGF0YVBhcmVudCgpIGFzIGFueTtcbiAgICBpZiAocGFyZW50ICE9PSBudWxsICYmIHR5cGVvZiBwYXJlbnQub25EcmFnT3ZlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcGFyZW50Lm9uRHJhZ092ZXIoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEltcGxlbWVudDogSURyb3BwYWJsZVxuICBwdWJsaWMgb25EcmFnTGVhdmUoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvd0RyYWdMZWF2ZUV2ZW50ICE9PSBudWxsICYmIHRoaXMucm93RHJhZ0xlYXZlRXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3dEcmFnTGVhdmVFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBsZXQgcGFyZW50OiBhbnkgPSB0aGlzLmdldERhdGFQYXJlbnQoKSBhcyBhbnk7XG4gICAgaWYgKHBhcmVudCAhPT0gbnVsbCAmJiB0eXBlb2YgcGFyZW50Lm9uRHJhZ0xlYXZlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwYXJlbnQub25EcmFnTGVhdmUoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEltcGxlbWVudDogSURyb3BwYWJsZVxuICBwdWJsaWMgb25Ecm9wKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yb3dEcm9wRXZlbnQgIT09IG51bGwgJiYgdGhpcy5yb3dEcm9wRXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3dEcm9wRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgbGV0IHBhcmVudDogYW55ID0gdGhpcy5nZXREYXRhUGFyZW50KCkgYXMgYW55O1xuICAgIGlmIChwYXJlbnQgIT09IG51bGwgJiYgdHlwZW9mIHBhcmVudC5vbkRyb3AgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHBhcmVudC5vbkRyb3AoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEltcGxlbWVudDogSURyb3BwYWJsZVxuICBwdWJsaWMgb25Ecm9wQWNjZXB0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvd0Ryb3BBY2NlcHRlZEV2ZW50ICE9PSBudWxsICYmIHRoaXMucm93RHJvcEFjY2VwdGVkRXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3dEcm9wQWNjZXB0ZWRFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBsZXQgcGFyZW50OiBhbnkgPSB0aGlzLmdldERhdGFQYXJlbnQoKSBhcyBhbnk7XG4gICAgaWYgKHBhcmVudCAhPT0gbnVsbCAmJiB0eXBlb2YgcGFyZW50Lm9uRHJvcEFjY2VwdGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwYXJlbnQub25Ecm9wQWNjZXB0ZWQoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEltcGxlbWVudDogSURyb3BwYWJsZVxuICBwdWJsaWMgb25Ecm9wUmVqZWN0ZWQoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnJvd0Ryb3BSZWplY3RlZEV2ZW50ICE9PSBudWxsICYmIHRoaXMucm93RHJvcFJlamVjdGVkRXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5yb3dEcm9wUmVqZWN0ZWRFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBsZXQgcGFyZW50OiBhbnkgPSB0aGlzLmdldERhdGFQYXJlbnQoKSBhcyBhbnk7XG4gICAgaWYgKHBhcmVudCAhPT0gbnVsbCAmJiB0eXBlb2YgcGFyZW50Lm9uRHJvcFJlamVjdGVkID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBwYXJlbnQub25Ecm9wUmVqZWN0ZWQoZXZlbnQpO1xuICAgIH1cbiAgfVxufVxuIl19