@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
236 lines • 26.6 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Component, EventEmitter, Injector, Input, Output, ViewChild } from '@angular/core';
import { Yield } from '@microsoft/windows-admin-center-sdk/core/base/decorators/yield.decorator';
import { CoreBaseComponent } from '../../../../common/base.component';
import { WizardNavigationButtonComponent } from '../../../../wizard-lite/wizard-navigation-button/wizard-navigation-button.component';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common";
import * as i2 from "../../../../wizard-lite/wizard-navigation-button/wizard-navigation-button.component";
function SmeWizardLiteFooterTemplateComponent_div_0_button_1_Template(rf, ctx) { if (rf & 1) {
const _r5 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "button", 5);
i0.ɵɵlistener("click", function SmeWizardLiteFooterTemplateComponent_div_0_button_1_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r4 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r4.onReviewButtonClicked($event)); });
i0.ɵɵelementStart(1, "span", 6);
i0.ɵɵtext(2);
i0.ɵɵelementEnd()();
} if (rf & 2) {
const ctx_r1 = i0.ɵɵnextContext(2);
i0.ɵɵproperty("disabled", ctx_r1.isReviewButtonDisabled);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate1(" ", ctx_r1.reviewButtonTextForRendering, "");
} }
function SmeWizardLiteFooterTemplateComponent_div_0_sme_wizard_navigation_button_2_Template(rf, ctx) { if (rf & 1) {
const _r8 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "sme-wizard-navigation-button", 7, 8);
i0.ɵɵlistener("startButtonClicked", function SmeWizardLiteFooterTemplateComponent_div_0_sme_wizard_navigation_button_2_Template_sme_wizard_navigation_button_startButtonClicked_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r7 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r7.onPrevButtonClicked($event)); })("endButtonClicked", function SmeWizardLiteFooterTemplateComponent_div_0_sme_wizard_navigation_button_2_Template_sme_wizard_navigation_button_endButtonClicked_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r9 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r9.onNextButtonClicked($event)); });
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r2 = i0.ɵɵnextContext(2);
i0.ɵɵproperty("buttons", ctx_r2.buttons);
} }
function SmeWizardLiteFooterTemplateComponent_div_0_button_3_Template(rf, ctx) { if (rf & 1) {
const _r11 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "button", 9);
i0.ɵɵlistener("click", function SmeWizardLiteFooterTemplateComponent_div_0_button_3_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r10 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r10.onExitButtonClicked($event)); });
i0.ɵɵelementStart(1, "span", 6);
i0.ɵɵtext(2);
i0.ɵɵelementEnd()();
} if (rf & 2) {
const ctx_r3 = i0.ɵɵnextContext(2);
i0.ɵɵadvance(2);
i0.ɵɵtextInterpolate1(" ", ctx_r3.exitButtonTextForRendering, "");
} }
function SmeWizardLiteFooterTemplateComponent_div_0_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 1);
i0.ɵɵtemplate(1, SmeWizardLiteFooterTemplateComponent_div_0_button_1_Template, 3, 2, "button", 2);
i0.ɵɵtemplate(2, SmeWizardLiteFooterTemplateComponent_div_0_sme_wizard_navigation_button_2_Template, 2, 1, "sme-wizard-navigation-button", 3);
i0.ɵɵtemplate(3, SmeWizardLiteFooterTemplateComponent_div_0_button_3_Template, 3, 1, "button", 4);
i0.ɵɵelementEnd();
} if (rf & 2) {
const ctx_r0 = i0.ɵɵnextContext();
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx_r0.displayReviewButton);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx_r0.displayWizardButton);
i0.ɵɵadvance(1);
i0.ɵɵproperty("ngIf", ctx_r0.displayExitButton);
} }
export class SmeWizardLiteFooterTemplateComponent extends CoreBaseComponent {
constructor(injector) {
super(injector);
/**
* Whether to display the exit button.
*/
this.displayExitButton = true;
/**
* Whether to display the wizard button.
*/
this.displayWizardButton = true;
/**
* Whether to display the review button.
*/
this.displayReviewButton = true;
/**
* Whether the review button is disabled.
*/
this.isReviewButtonDisabled = false;
/**
* The output event emitter for the review button clicked event.
*/
this.reviewButtonClickedEventEmitter = new EventEmitter();
/**
* The output event emitter for the exit button clicked event.
*/
this.exitButtonClickedEventEmitter = new EventEmitter();
/**
* The output event emitter for the prev button clicked event.
*/
this.prevButtonClickedEventEmitter = new EventEmitter();
/**
* The output event emitter for the next button clicked event.
*/
this.nextButtonClickedEventEmitter = new EventEmitter();
/**
* Internal buttons.
*/
this.buttonsInternal = [];
}
get logSourceName() {
return 'SmeWizardLiteFooterTemplateComponent';
}
/**
* Setter buttons object.
*/
set buttons(buttons) {
this.buttonsInternal = buttons;
}
/**
* Getter button object.
*/
get buttons() {
return this.buttonsInternal;
}
/**
* Getter for the review button text.
*/
get reviewButtonTextForRendering() {
return this.reviewButtonText ?? this.strings.MsftSmeShell.Angular.Wizard.Lite.FooterTemplate.review;
}
/**
* Getter for the exit button text.
*/
get exitButtonTextForRendering() {
return this.exitButtonText ?? this.strings.MsftSmeShell.Angular.Wizard.Lite.FooterTemplate.exit;
}
/**
* It handles the on selection changed event from the external pivot tab component.
* @param tab the current selected pivot tab.
* @returns void.
*/
onSelectionChanged(tab) {
if (!tab || !tab.label) {
return;
}
if (tab.label === this.wizardButton.getCurrentActivatedButtonLabel()) {
return;
}
this.wizardButton.updateStartIndexByLabel(tab.label);
}
/**
* The on prev button clicked event handler.
* @param $event the click event
*/
onPrevButtonClicked($event) {
if (!this.wizardButton) {
return;
}
this.prevButtonClickedEventEmitter.emit($event);
}
/**
* The on next button clicked event handler.
* @param $event the click event
*/
onNextButtonClicked($event) {
if (!this.wizardButton) {
return;
}
this.nextButtonClickedEventEmitter.emit($event);
}
/**
* The on review button clicked event handler.
* @param $event the click event
*/
onReviewButtonClicked($event) {
this.reviewButtonClickedEventEmitter.emit($event);
}
/**
* The on exit button clicked event handler.
* @param $event the click event
*/
onExitButtonClicked($event) {
this.exitButtonClickedEventEmitter.emit($event);
}
}
/** @nocollapse */ SmeWizardLiteFooterTemplateComponent.ɵfac = function SmeWizardLiteFooterTemplateComponent_Factory(t) { return new (t || SmeWizardLiteFooterTemplateComponent)(i0.ɵɵdirectiveInject(i0.Injector)); };
/** @nocollapse */ SmeWizardLiteFooterTemplateComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: SmeWizardLiteFooterTemplateComponent, selectors: [["sme-wizard-lite-footer-template"]], viewQuery: function SmeWizardLiteFooterTemplateComponent_Query(rf, ctx) { if (rf & 1) {
i0.ɵɵviewQuery(WizardNavigationButtonComponent, 5);
} if (rf & 2) {
let _t;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.wizardButton = _t.first);
} }, inputs: { displayExitButton: "displayExitButton", displayWizardButton: "displayWizardButton", displayReviewButton: "displayReviewButton", reviewButtonText: "reviewButtonText", isReviewButtonDisabled: "isReviewButtonDisabled", exitButtonText: "exitButtonText" }, outputs: { reviewButtonClickedEventEmitter: "reviewButtonClickedEventEmitter", exitButtonClickedEventEmitter: "exitButtonClickedEventEmitter", prevButtonClickedEventEmitter: "prevButtonClickedEventEmitter", nextButtonClickedEventEmitter: "nextButtonClickedEventEmitter" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [["class", "sme-arrange-wrapstack-h sme-position-stretch-h sme-focus-zone", 4, "ngIf"], [1, "sme-arrange-wrapstack-h", "sme-position-stretch-h", "sme-focus-zone"], ["class", "sme-button-primary", "tabindex", "0", 3, "disabled", "click", 4, "ngIf"], ["class", "sme-padding-left-lg sme-focus-zone", 3, "buttons", "startButtonClicked", "endButtonClicked", 4, "ngIf"], ["class", "sme-layout-button-flex-end", "tabindex", "0", 3, "click", 4, "ngIf"], ["tabindex", "0", 1, "sme-button-primary", 3, "disabled", "click"], [1, "sme-position-flex-auto", "sme-position-flex-grow-start", "sme-arrange-ellipsis", "sme-action-button-text-span"], [1, "sme-padding-left-lg", "sme-focus-zone", 3, "buttons", "startButtonClicked", "endButtonClicked"], ["wizardButton", ""], ["tabindex", "0", 1, "sme-layout-button-flex-end", 3, "click"]], template: function SmeWizardLiteFooterTemplateComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵtemplate(0, SmeWizardLiteFooterTemplateComponent_div_0_Template, 4, 3, "div", 0);
} if (rf & 2) {
i0.ɵɵproperty("ngIf", ctx.displayReviewButton || ctx.displayWizardButton || ctx.displayExitButton);
} }, dependencies: [i1.NgIf, i2.WizardNavigationButtonComponent], encapsulation: 2 });
__decorate([
Yield(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], SmeWizardLiteFooterTemplateComponent.prototype, "onPrevButtonClicked", null);
__decorate([
Yield(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], SmeWizardLiteFooterTemplateComponent.prototype, "onNextButtonClicked", null);
__decorate([
Yield(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], SmeWizardLiteFooterTemplateComponent.prototype, "onReviewButtonClicked", null);
__decorate([
Yield(),
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object]),
__metadata("design:returntype", void 0)
], SmeWizardLiteFooterTemplateComponent.prototype, "onExitButtonClicked", null);
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SmeWizardLiteFooterTemplateComponent, [{
type: Component,
args: [{ selector: 'sme-wizard-lite-footer-template', template: "<div class=\"sme-arrange-wrapstack-h sme-position-stretch-h sme-focus-zone\" *ngIf=\"displayReviewButton || displayWizardButton || displayExitButton\">\r\n <button [disabled]=\"isReviewButtonDisabled\" class=\"sme-button-primary\" (click)=\"onReviewButtonClicked($event)\" tabindex=\"0\" *ngIf=\"displayReviewButton\">\r\n <span class=\"sme-position-flex-auto sme-position-flex-grow-start sme-arrange-ellipsis sme-action-button-text-span\">\r\n {{ reviewButtonTextForRendering }}</span>\r\n </button>\r\n <sme-wizard-navigation-button #wizardButton class=\"sme-padding-left-lg sme-focus-zone\" *ngIf=\"displayWizardButton\"\r\n [buttons]=\"buttons\"\r\n (startButtonClicked)=\"onPrevButtonClicked($event)\"\r\n (endButtonClicked)=\"onNextButtonClicked($event)\"></sme-wizard-navigation-button>\r\n <button class=\"sme-layout-button-flex-end\" (click)=\"onExitButtonClicked($event)\" tabindex=\"0\" *ngIf=\"displayExitButton\">\r\n <span class=\"sme-position-flex-auto sme-position-flex-grow-start sme-arrange-ellipsis sme-action-button-text-span\">\r\n {{ exitButtonTextForRendering }}</span>\r\n </button>\r\n</div>\r\n" }]
}], function () { return [{ type: i0.Injector }]; }, { displayExitButton: [{
type: Input
}], displayWizardButton: [{
type: Input
}], displayReviewButton: [{
type: Input
}], reviewButtonText: [{
type: Input
}], isReviewButtonDisabled: [{
type: Input
}], exitButtonText: [{
type: Input
}], reviewButtonClickedEventEmitter: [{
type: Output
}], exitButtonClickedEventEmitter: [{
type: Output
}], prevButtonClickedEventEmitter: [{
type: Output
}], nextButtonClickedEventEmitter: [{
type: Output
}], wizardButton: [{
type: ViewChild,
args: [WizardNavigationButtonComponent]
}], onPrevButtonClicked: [], onNextButtonClicked: [], onReviewButtonClicked: [], onExitButtonClicked: [] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21lLXdpemFyZC1saXRlLWZvb3Rlci10ZW1wbGF0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9hbmd1bGFyL3NyYy9jb250cm9scy91eC9zbWUtdXgtZm9vdGVyL3NtZS11eC1mb290ZXItdGVtcGxhdGUvc21lLXdpemFyZC1saXRlLWZvb3Rlci10ZW1wbGF0ZS9zbWUtd2l6YXJkLWxpdGUtZm9vdGVyLXRlbXBsYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2FuZ3VsYXIvc3JjL2NvbnRyb2xzL3V4L3NtZS11eC1mb290ZXIvc21lLXV4LWZvb3Rlci10ZW1wbGF0ZS9zbWUtd2l6YXJkLWxpdGUtZm9vdGVyLXRlbXBsYXRlL3NtZS13aXphcmQtbGl0ZS1mb290ZXItdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBb0IsU0FBUyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUcsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLDBFQUEwRSxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRXRFLE9BQU8sRUFBRSwrQkFBK0IsRUFBOEIsTUFBTSxxRkFBcUYsQ0FBQzs7Ozs7O0lDSGhLLGlDQUF3SjtJQUFqRixpTUFBUyxlQUFBLG9DQUE2QixDQUFBLElBQUM7SUFDNUcsK0JBQW1IO0lBQ2pILFlBQWtDO0lBQUEsaUJBQU8sRUFBQTs7O0lBRnJDLHdEQUFtQztJQUV2QyxlQUFrQztJQUFsQyxtRUFBa0M7Ozs7SUFFdEMsMERBR21EO0lBRGpELHVRQUFzQixlQUFBLGtDQUEyQixDQUFBLElBQUMsc1BBQzlCLGVBQUEsa0NBQTJCLENBQUEs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QUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7O09BR0c7SUFFSSxxQkFBcUIsQ0FBQyxNQUFNO1FBQy9CLElBQUksQ0FBQywrQkFBK0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7T0FHRztJQUVJLG1CQUFtQixDQUFDLE1BQU07UUFDN0IsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRCxDQUFDOzsySUFwS1Esb0NBQW9DO3NIQUFwQyxvQ0FBb0M7dUJBZ0VsQywrQkFBK0I7Ozs7O1FDMUU5QyxxRkFhTTs7UUFic0Usa0dBQXFFOztBRHdJN0k7SUFBQyxLQUFLLEVBQUU7Ozs7K0VBT1A7QUFNRDtJQUFDLEtBQUssRUFBRTs7OzsrRUFPUDtBQU1EO0lBQUMsS0FBSyxFQUFFOzs7O2lGQUdQO0FBTUQ7SUFBQyxLQUFLLEVBQUU7Ozs7K0VBR1A7dUZBcEtRLG9DQUFvQztjQUpoRCxTQUFTOzJCQUNJLGlDQUFpQzsyREFZcEMsaUJBQWlCO2tCQUR2QixLQUFLO1lBT0MsbUJBQW1CO2tCQUR6QixLQUFLO1lBT0MsbUJBQW1CO2tCQUR6QixLQUFLO1lBT0MsZ0JBQWdCO2tCQUR0QixLQUFLO1lBT0Msc0JBQXNCO2tCQUQ1QixLQUFLO1lBT0MsY0FBYztrQkFEcEIsS0FBSztZQU1JLCtCQUErQjtrQkFBeEMsTUFBTTtZQUtHLDZCQUE2QjtrQkFBdEMsTUFBTTtZQUtHLDZCQUE2QjtrQkFBdEMsTUFBTTtZQUtHLDZCQUE2QjtrQkFBdEMsTUFBTTtZQU1BLFlBQVk7a0JBRGxCLFNBQVM7bUJBQUMsK0JBQStCO1lBK0RuQyxtQkFBbUIsTUFhbkIsbUJBQW1CLE1BYW5CLHFCQUFxQixNQVNyQixtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlckNvbnRlbnRJbml0LCBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5qZWN0b3IsIElucHV0LCBPdXRwdXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBZaWVsZCB9IGZyb20gJ0BtaWNyb3NvZnQvd2luZG93cy1hZG1pbi1jZW50ZXItc2RrL2NvcmUvYmFzZS9kZWNvcmF0b3JzL3lpZWxkLmRlY29yYXRvcic7XHJcbmltcG9ydCB7IENvcmVCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2Jhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUGl2b3RUYWJDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9waXZvdCc7XHJcbmltcG9ydCB7IFdpemFyZE5hdmlnYXRpb25CdXR0b25Db21wb25lbnQsIFdpemFyZE5hdmlnYXRpb25CdXR0b25EYXRhIH0gZnJvbSAnLi4vLi4vLi4vLi4vd2l6YXJkLWxpdGUvd2l6YXJkLW5hdmlnYXRpb24tYnV0dG9uL3dpemFyZC1uYXZpZ2F0aW9uLWJ1dHRvbi5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3NtZS13aXphcmQtbGl0ZS1mb290ZXItdGVtcGxhdGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NtZS13aXphcmQtbGl0ZS1mb290ZXItdGVtcGxhdGUuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTbWVXaXphcmRMaXRlRm9vdGVyVGVtcGxhdGVDb21wb25lbnQgZXh0ZW5kcyBDb3JlQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQge1xyXG4gICAgcHJvdGVjdGVkIGdldCBsb2dTb3VyY2VOYW1lKCkge1xyXG4gICAgICAgIHJldHVybiAnU21lV2l6YXJkTGl0ZUZvb3RlclRlbXBsYXRlQ29tcG9uZW50JztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdG8gZGlzcGxheSB0aGUgZXhpdCBidXR0b24uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGlzcGxheUV4aXRCdXR0b24gPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0byBkaXNwbGF5IHRoZSB3aXphcmQgYnV0dG9uLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRpc3BsYXlXaXphcmRCdXR0b24gPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogV2hldGhlciB0byBkaXNwbGF5IHRoZSByZXZpZXcgYnV0dG9uLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRpc3BsYXlSZXZpZXdCdXR0b24gPSB0cnVlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRleHQgZm9yIHRoZSByZXZpZXcgYnV0dG9uLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHJldmlld0J1dHRvblRleHQ6IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFdoZXRoZXIgdGhlIHJldmlldyBidXR0b24gaXMgZGlzYWJsZWQuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgaXNSZXZpZXdCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHRleHQgZm9yIHRoZSBleGl0IGJ1dHRvbi5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBleGl0QnV0dG9uVGV4dDogc3RyaW5nO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG91dHB1dCBldmVudCBlbWl0dGVyIGZvciB0aGUgcmV2aWV3IGJ1dHRvbiBjbGlja2VkIGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgcmV2aWV3QnV0dG9uQ2xpY2tlZEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG91dHB1dCBldmVudCBlbWl0dGVyIGZvciB0aGUgZXhpdCBidXR0b24gY2xpY2tlZCBldmVudC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpIGV4aXRCdXR0b25DbGlja2VkRXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgb3V0cHV0IGV2ZW50IGVtaXR0ZXIgZm9yIHRoZSBwcmV2IGJ1dHRvbiBjbGlja2VkIGV2ZW50LlxyXG4gICAgICovXHJcbiAgICBAT3V0cHV0KCkgcHJldkJ1dHRvbkNsaWNrZWRFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBvdXRwdXQgZXZlbnQgZW1pdHRlciBmb3IgdGhlIG5leHQgYnV0dG9uIGNsaWNrZWQgZXZlbnQuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKSBuZXh0QnV0dG9uQ2xpY2tlZEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHZpZXcgY2hpbGQgZm9yIHdpemFyZCBidXR0b24gZWxlbWVudC5cclxuICAgICAqL1xyXG4gICAgQFZpZXdDaGlsZChXaXphcmROYXZpZ2F0aW9uQnV0dG9uQ29tcG9uZW50KVxyXG4gICAgcHVibGljIHdpemFyZEJ1dHRvbjogV2l6YXJkTmF2aWdhdGlvbkJ1dHRvbkNvbXBvbmVudDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHRlciBidXR0b25zIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHNldCBidXR0b25zKGJ1dHRvbnM6IFdpemFyZE5hdmlnYXRpb25CdXR0b25EYXRhW10pIHtcclxuICAgICAgICB0aGlzLmJ1dHRvbnNJbnRlcm5hbCA9IGJ1dHRvbnM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXR0ZXIgYnV0dG9uIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCBidXR0b25zKCk6IFdpemFyZE5hdmlnYXRpb25CdXR0b25EYXRhW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmJ1dHRvbnNJbnRlcm5hbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHRlciBmb3IgdGhlIHJldmlldyBidXR0b24gdGV4dC5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGdldCByZXZpZXdCdXR0b25UZXh0Rm9yUmVuZGVyaW5nKCkge1xyXG4gICAgICAgIHJldHVybiAgdGhpcy5yZXZpZXdCdXR0b25UZXh0ID8/IHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5XaXphcmQuTGl0ZS5Gb290ZXJUZW1wbGF0ZS5yZXZpZXc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXR0ZXIgZm9yIHRoZSBleGl0IGJ1dHRvbiB0ZXh0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGV4aXRCdXR0b25UZXh0Rm9yUmVuZGVyaW5nKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmV4aXRCdXR0b25UZXh0ID8/IHRoaXMuc3RyaW5ncy5Nc2Z0U21lU2hlbGwuQW5ndWxhci5XaXphcmQuTGl0ZS5Gb290ZXJUZW1wbGF0ZS5leGl0O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW50ZXJuYWwgYnV0dG9ucy5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBidXR0b25zSW50ZXJuYWw6IFdpemFyZE5hdmlnYXRpb25CdXR0b25EYXRhW10gPSBbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IpIHtcclxuICAgICAgICBzdXBlcihpbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJdCBoYW5kbGVzIHRoZSBvbiBzZWxlY3Rpb24gY2hhbmdlZCBldmVudCBmcm9tIHRoZSBleHRlcm5hbCBwaXZvdCB0YWIgY29tcG9uZW50LlxyXG4gICAgICogQHBhcmFtIHRhYiB0aGUgY3VycmVudCBzZWxlY3RlZCBwaXZvdCB0YWIuXHJcbiAgICAgKiBAcmV0dXJucyB2b2lkLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2VkKHRhYjogUGl2b3RUYWJDb21wb25lbnQpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRhYiB8fCAhdGFiLmxhYmVsKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0YWIubGFiZWwgPT09IHRoaXMud2l6YXJkQnV0dG9uLmdldEN1cnJlbnRBY3RpdmF0ZWRCdXR0b25MYWJlbCgpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMud2l6YXJkQnV0dG9uLnVwZGF0ZVN0YXJ0SW5kZXhCeUxhYmVsKHRhYi5sYWJlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgb24gcHJldiBidXR0b24gY2xpY2tlZCBldmVudCBoYW5kbGVyLlxyXG4gICAgICogQHBhcmFtICRldmVudCB0aGUgY2xpY2sgZXZlbnRcclxuICAgICAqL1xyXG4gICAgQFlpZWxkKClcclxuICAgIHB1YmxpYyBvblByZXZCdXR0b25DbGlja2VkKCRldmVudCkge1xyXG4gICAgICAgIGlmICghdGhpcy53aXphcmRCdXR0b24pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5wcmV2QnV0dG9uQ2xpY2tlZEV2ZW50RW1pdHRlci5lbWl0KCRldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgb24gbmV4dCBidXR0b24gY2xpY2tlZCBldmVudCBoYW5kbGVyLlxyXG4gICAgICogQHBhcmFtICRldmVudCB0aGUgY2xpY2sgZXZlbnRcclxuICAgICAqL1xyXG4gICAgQFlpZWxkKClcclxuICAgIHB1YmxpYyBvbk5leHRCdXR0b25DbGlja2VkKCRldmVudCkge1xyXG4gICAgICAgIGlmICghdGhpcy53aXphcmRCdXR0b24pIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5uZXh0QnV0dG9uQ2xpY2tlZEV2ZW50RW1pdHRlci5lbWl0KCRldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgb24gcmV2aWV3IGJ1dHRvbiBjbGlja2VkIGV2ZW50IGhhbmRsZXIuXHJcbiAgICAgKiBAcGFyYW0gJGV2ZW50IHRoZSBjbGljayBldmVudFxyXG4gICAgICovXHJcbiAgICBAWWllbGQoKVxyXG4gICAgcHVibGljIG9uUmV2aWV3QnV0dG9uQ2xpY2tlZCgkZXZlbnQpIHtcclxuICAgICAgICB0aGlzLnJldmlld0J1dHRvbkNsaWNrZWRFdmVudEVtaXR0ZXIuZW1pdCgkZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIG9uIGV4aXQgYnV0dG9uIGNsaWNrZWQgZXZlbnQgaGFuZGxlci5cclxuICAgICAqIEBwYXJhbSAkZXZlbnQgdGhlIGNsaWNrIGV2ZW50XHJcbiAgICAgKi9cclxuICAgIEBZaWVsZCgpXHJcbiAgICBwdWJsaWMgb25FeGl0QnV0dG9uQ2xpY2tlZCgkZXZlbnQpIHtcclxuICAgICAgICB0aGlzLmV4aXRCdXR0b25DbGlja2VkRXZlbnRFbWl0dGVyLmVtaXQoJGV2ZW50KTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwic21lLWFycmFuZ2Utd3JhcHN0YWNrLWggc21lLXBvc2l0aW9uLXN0cmV0Y2gtaCBzbWUtZm9jdXMtem9uZVwiICpuZ0lmPVwiZGlzcGxheVJldmlld0J1dHRvbiB8fCBkaXNwbGF5V2l6YXJkQnV0dG9uIHx8IGRpc3BsYXlFeGl0QnV0dG9uXCI+XHJcbiAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwiaXNSZXZpZXdCdXR0b25EaXNhYmxlZFwiIGNsYXNzPVwic21lLWJ1dHRvbi1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uUmV2aWV3QnV0dG9uQ2xpY2tlZCgkZXZlbnQpXCIgdGFiaW5kZXg9XCIwXCIgKm5nSWY9XCJkaXNwbGF5UmV2aWV3QnV0dG9uXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cInNtZS1wb3NpdGlvbi1mbGV4LWF1dG8gc21lLXBvc2l0aW9uLWZsZXgtZ3Jvdy1zdGFydCBzbWUtYXJyYW5nZS1lbGxpcHNpcyBzbWUtYWN0aW9uLWJ1dHRvbi10ZXh0LXNwYW5cIj5cclxuICAgICAge3sgcmV2aWV3QnV0dG9uVGV4dEZvclJlbmRlcmluZyB9fTwvc3Bhbj5cclxuICA8L2J1dHRvbj5cclxuICA8c21lLXdpemFyZC1uYXZpZ2F0aW9uLWJ1dHRvbiAjd2l6YXJkQnV0dG9uIGNsYXNzPVwic21lLXBhZGRpbmctbGVmdC1sZyBzbWUtZm9jdXMtem9uZVwiICpuZ0lmPVwiZGlzcGxheVdpemFyZEJ1dHRvblwiXHJcbiAgICBbYnV0dG9uc109XCJidXR0b25zXCJcclxuICAgIChzdGFydEJ1dHRvbkNsaWNrZWQpPVwib25QcmV2QnV0dG9uQ2xpY2tlZCgkZXZlbnQpXCJcclxuICAgIChlbmRCdXR0b25DbGlja2VkKT1cIm9uTmV4dEJ1dHRvbkNsaWNrZWQoJGV2ZW50KVwiPjwvc21lLXdpemFyZC1uYXZpZ2F0aW9uLWJ1dHRvbj5cclxuICA8YnV0dG9uIGNsYXNzPVwic21lLWxheW91dC1idXR0b24tZmxleC1lbmRcIiAoY2xpY2spPVwib25FeGl0QnV0dG9uQ2xpY2tlZCgkZXZlbnQpXCIgdGFiaW5kZXg9XCIwXCIgKm5nSWY9XCJkaXNwbGF5RXhpdEJ1dHRvblwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJzbWUtcG9zaXRpb24tZmxleC1hdXRvIHNtZS1wb3NpdGlvbi1mbGV4LWdyb3ctc3RhcnQgc21lLWFycmFuZ2UtZWxsaXBzaXMgc21lLWFjdGlvbi1idXR0b24tdGV4dC1zcGFuXCI+XHJcbiAgICAgIHt7IGV4aXRCdXR0b25UZXh0Rm9yUmVuZGVyaW5nIH19PC9zcGFuPlxyXG4gIDwvYnV0dG9uPlxyXG48L2Rpdj5cclxuIl19