theme-lib
Version:
This is a simple example Angular Library published to npm.
678 lines • 43.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
/*
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
import { Component, Input, HostBinding, Output, EventEmitter } from '@angular/core';
import { convertToBoolProperty } from '../helpers';
/*
* Alert component.
*
* Basic alert example:
* @stacked-example(Showcase, alert/alert-showcase.component)
*
* Alert configuration:
*
* ```html
* <nb-alert status="success">
* You have been successfully authenticated!
* </nb-alert>
* ```
* ### Installation
*
* Import `NbButtonModule` to your feature module.
* ```ts
* @NgModule({
* imports: [
* // ...
* NbAlertModule,
* ],
* })
* export class PageModule { }
* ```
* ### Usage
*
* Alert could additionally have a `close` button when `closable` property is set:
* ```html
* <nb-alert status="success" closable (close)="onClose()">
* You have been successfully authenticated!
* </nb-alert>
* ```
*
* Colored alerts could be simply configured by providing a `status` property:
* @stacked-example(Colored Alert, alert/alert-colors.component)
*
* It is also possible to assign an `accent` property for a slight alert highlight
* as well as combine it with `status`:
* @stacked-example(Accent Alert, alert/alert-accents.component)
*
* And `outline` property:
* @stacked-example(Outline Alert, alert/alert-outline.component)
*
* @additional-example(Multiple Sizes, alert/alert-sizes.component)
*
* @styles
*
* alert-font-size:
* alert-line-height:
* alert-font-weight:
* alert-fg:
* alert-outline-fg:
* alert-bg:
* alert-active-bg:
* alert-disabled-bg:
* alert-disabled-fg:
* alert-primary-bg:
* alert-info-bg:
* alert-success-bg:
* alert-warning-bg:
* alert-danger-bg:
* alert-height-xxsmall:
* alert-height-xsmall:
* alert-height-small:
* alert-height-medium:
* alert-height-large:
* alert-height-xlarge:
* alert-height-xxlarge:
* alert-shadow:
* alert-border-radius:
* alert-padding:
* alert-closable-padding:
* alert-button-padding:
* alert-margin:
*/
var NbAlertComponent = /** @class */ (function () {
function NbAlertComponent() {
this.closableValue = false;
/*
* Emits when chip is removed
* @type EventEmitter<any>
*/
this.close = new EventEmitter();
}
Object.defineProperty(NbAlertComponent.prototype, "closable", {
/*
* Shows `close` icon
*/
set: /*
* Shows `close` icon
*/
/**
* @param {?} val
* @return {?}
*/
function (val) {
this.closableValue = convertToBoolProperty(val);
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "xxsmall", {
get: /**
* @return {?}
*/
function () {
return this.size === NbAlertComponent.SIZE_XXSMALL;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "xsmall", {
get: /**
* @return {?}
*/
function () {
return this.size === NbAlertComponent.SIZE_XSMALL;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "small", {
get: /**
* @return {?}
*/
function () {
return this.size === NbAlertComponent.SIZE_SMALL;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "medium", {
get: /**
* @return {?}
*/
function () {
return this.size === NbAlertComponent.SIZE_MEDIUM;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "large", {
get: /**
* @return {?}
*/
function () {
return this.size === NbAlertComponent.SIZE_LARGE;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "xlarge", {
get: /**
* @return {?}
*/
function () {
return this.size === NbAlertComponent.SIZE_XLARGE;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "xxlarge", {
get: /**
* @return {?}
*/
function () {
return this.size === NbAlertComponent.SIZE_XXLARGE;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "active", {
get: /**
* @return {?}
*/
function () {
return this.status === NbAlertComponent.STATUS_ACTIVE;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "disabled", {
get: /**
* @return {?}
*/
function () {
return this.status === NbAlertComponent.STATUS_DISABLED;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "primary", {
get: /**
* @return {?}
*/
function () {
return this.status === NbAlertComponent.STATUS_PRIMARY;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "info", {
get: /**
* @return {?}
*/
function () {
return this.status === NbAlertComponent.STATUS_INFO;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "success", {
get: /**
* @return {?}
*/
function () {
return this.status === NbAlertComponent.STATUS_SUCCESS;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "warning", {
get: /**
* @return {?}
*/
function () {
return this.status === NbAlertComponent.STATUS_WARNING;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "danger", {
get: /**
* @return {?}
*/
function () {
return this.status === NbAlertComponent.STATUS_DANGER;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "hasAccent", {
get: /**
* @return {?}
*/
function () {
return this.accent;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "hasStatus", {
get: /**
* @return {?}
*/
function () {
return this.status;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "primaryAccent", {
get: /**
* @return {?}
*/
function () {
return this.accent === NbAlertComponent.ACCENT_PRIMARY;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "infoAccent", {
get: /**
* @return {?}
*/
function () {
return this.accent === NbAlertComponent.ACCENT_INFO;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "successAccent", {
get: /**
* @return {?}
*/
function () {
return this.accent === NbAlertComponent.ACCENT_SUCCESS;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "warningAccent", {
get: /**
* @return {?}
*/
function () {
return this.accent === NbAlertComponent.ACCENT_WARNING;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "dangerAccent", {
get: /**
* @return {?}
*/
function () {
return this.accent === NbAlertComponent.ACCENT_DANGER;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "activeAccent", {
get: /**
* @return {?}
*/
function () {
return this.accent === NbAlertComponent.ACCENT_ACTIVE;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "disabledAccent", {
get: /**
* @return {?}
*/
function () {
return this.accent === NbAlertComponent.ACCENT_DISABLED;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "hasOutline", {
get: /**
* @return {?}
*/
function () {
return this.outline;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "primaryOutline", {
get: /**
* @return {?}
*/
function () {
return this.outline === NbAlertComponent.OUTLINE_PRIMARY;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "infoOutline", {
get: /**
* @return {?}
*/
function () {
return this.outline === NbAlertComponent.OUTLINE_INFO;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "successOutline", {
get: /**
* @return {?}
*/
function () {
return this.outline === NbAlertComponent.OUTLINE_SUCCESS;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "warningOutline", {
get: /**
* @return {?}
*/
function () {
return this.outline === NbAlertComponent.OUTLINE_WARNING;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "dangerOutline", {
get: /**
* @return {?}
*/
function () {
return this.outline === NbAlertComponent.OUTLINE_DANGER;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "activeOutline", {
get: /**
* @return {?}
*/
function () {
return this.outline === NbAlertComponent.OUTLINE_ACTIVE;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "disabledOutline", {
get: /**
* @return {?}
*/
function () {
return this.outline === NbAlertComponent.OUTLINE_DISABLED;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "setSize", {
/*
* Alert size, available sizes:
* xxsmall, xsmall, small, medium, large, xlarge, xxlarge
* @param {string} val
*/
set: /*
* Alert size, available sizes:
* xxsmall, xsmall, small, medium, large, xlarge, xxlarge
* @param {string} val
*/
/**
* @private
* @param {?} val
* @return {?}
*/
function (val) {
this.size = val;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "setStatus", {
/*
* Alert status (adds specific styles):
* active, disabled, primary, info, success, warning, danger
* @param {string} val
*/
set: /*
* Alert status (adds specific styles):
* active, disabled, primary, info, success, warning, danger
* @param {string} val
*/
/**
* @private
* @param {?} val
* @return {?}
*/
function (val) {
this.status = val;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "setAccent", {
/*
* Alert accent (color of the top border):
* active, disabled, primary, info, success, warning, danger
* @param {string} val
*/
set: /*
* Alert accent (color of the top border):
* active, disabled, primary, info, success, warning, danger
* @param {string} val
*/
/**
* @private
* @param {?} val
* @return {?}
*/
function (val) {
this.accent = val;
},
enumerable: true,
configurable: true
});
Object.defineProperty(NbAlertComponent.prototype, "setOutline", {
/*
* Alert outline (color of the border):
* active, disabled, primary, info, success, warning, danger
* @param {string} val
*/
set: /*
* Alert outline (color of the border):
* active, disabled, primary, info, success, warning, danger
* @param {string} val
*/
/**
* @private
* @param {?} val
* @return {?}
*/
function (val) {
this.outline = val;
},
enumerable: true,
configurable: true
});
/*
* Emits the removed chip event
*/
/*
* Emits the removed chip event
*/
/**
* @return {?}
*/
NbAlertComponent.prototype.onClose = /*
* Emits the removed chip event
*/
/**
* @return {?}
*/
function () {
this.close.emit();
};
NbAlertComponent.SIZE_XXSMALL = 'xxsmall';
NbAlertComponent.SIZE_XSMALL = 'xsmall';
NbAlertComponent.SIZE_SMALL = 'small';
NbAlertComponent.SIZE_MEDIUM = 'medium';
NbAlertComponent.SIZE_LARGE = 'large';
NbAlertComponent.SIZE_XLARGE = 'xlarge';
NbAlertComponent.SIZE_XXLARGE = 'xxlarge';
NbAlertComponent.STATUS_ACTIVE = 'active';
NbAlertComponent.STATUS_DISABLED = 'disabled';
NbAlertComponent.STATUS_PRIMARY = 'primary';
NbAlertComponent.STATUS_INFO = 'info';
NbAlertComponent.STATUS_SUCCESS = 'success';
NbAlertComponent.STATUS_WARNING = 'warning';
NbAlertComponent.STATUS_DANGER = 'danger';
NbAlertComponent.ACCENT_ACTIVE = 'active';
NbAlertComponent.ACCENT_DISABLED = 'disabled';
NbAlertComponent.ACCENT_PRIMARY = 'primary';
NbAlertComponent.ACCENT_INFO = 'info';
NbAlertComponent.ACCENT_SUCCESS = 'success';
NbAlertComponent.ACCENT_WARNING = 'warning';
NbAlertComponent.ACCENT_DANGER = 'danger';
NbAlertComponent.OUTLINE_ACTIVE = 'active';
NbAlertComponent.OUTLINE_DISABLED = 'disabled';
NbAlertComponent.OUTLINE_PRIMARY = 'primary';
NbAlertComponent.OUTLINE_INFO = 'info';
NbAlertComponent.OUTLINE_SUCCESS = 'success';
NbAlertComponent.OUTLINE_WARNING = 'warning';
NbAlertComponent.OUTLINE_DANGER = 'danger';
NbAlertComponent.decorators = [
{ type: Component, args: [{
selector: 'nb-alert',
template: "\n <button *ngIf=\"closableValue\" type=\"button\" class=\"close\" aria-label=\"Close\" (click)=\"onClose()\">\n <span aria-hidden=\"true\">×</span>\n </button>\n <ng-content></ng-content>\n ",
styles: [":host{display:flex;flex-direction:column;position:relative}.close{position:absolute;top:0;right:0;color:inherit;background-color:transparent;border:0;-webkit-appearance:none}"]
}] }
];
NbAlertComponent.propDecorators = {
closableValue: [{ type: HostBinding, args: ['class.closable',] }],
closable: [{ type: Input }],
xxsmall: [{ type: HostBinding, args: ['class.xxsmall-alert',] }],
xsmall: [{ type: HostBinding, args: ['class.xsmall-alert',] }],
small: [{ type: HostBinding, args: ['class.small-alert',] }],
medium: [{ type: HostBinding, args: ['class.medium-alert',] }],
large: [{ type: HostBinding, args: ['class.large-alert',] }],
xlarge: [{ type: HostBinding, args: ['class.xlarge-alert',] }],
xxlarge: [{ type: HostBinding, args: ['class.xxlarge-alert',] }],
active: [{ type: HostBinding, args: ['class.active-alert',] }],
disabled: [{ type: HostBinding, args: ['class.disabled-alert',] }],
primary: [{ type: HostBinding, args: ['class.primary-alert',] }],
info: [{ type: HostBinding, args: ['class.info-alert',] }],
success: [{ type: HostBinding, args: ['class.success-alert',] }],
warning: [{ type: HostBinding, args: ['class.warning-alert',] }],
danger: [{ type: HostBinding, args: ['class.danger-alert',] }],
hasAccent: [{ type: HostBinding, args: ['class.accent',] }],
hasStatus: [{ type: HostBinding, args: ['class.status',] }],
primaryAccent: [{ type: HostBinding, args: ['class.accent-primary',] }],
infoAccent: [{ type: HostBinding, args: ['class.accent-info',] }],
successAccent: [{ type: HostBinding, args: ['class.accent-success',] }],
warningAccent: [{ type: HostBinding, args: ['class.accent-warning',] }],
dangerAccent: [{ type: HostBinding, args: ['class.accent-danger',] }],
activeAccent: [{ type: HostBinding, args: ['class.accent-active',] }],
disabledAccent: [{ type: HostBinding, args: ['class.accent-disabled',] }],
hasOutline: [{ type: HostBinding, args: ['class.outline',] }],
primaryOutline: [{ type: HostBinding, args: ['class.outline-primary',] }],
infoOutline: [{ type: HostBinding, args: ['class.outline-info',] }],
successOutline: [{ type: HostBinding, args: ['class.outline-success',] }],
warningOutline: [{ type: HostBinding, args: ['class.outline-warning',] }],
dangerOutline: [{ type: HostBinding, args: ['class.outline-danger',] }],
activeOutline: [{ type: HostBinding, args: ['class.outline-active',] }],
disabledOutline: [{ type: HostBinding, args: ['class.outline-disabled',] }],
setSize: [{ type: Input, args: ['size',] }],
setStatus: [{ type: Input, args: ['status',] }],
setAccent: [{ type: Input, args: ['accent',] }],
setOutline: [{ type: Input, args: ['outline',] }],
close: [{ type: Output }]
};
return NbAlertComponent;
}());
export { NbAlertComponent };
if (false) {
/** @type {?} */
NbAlertComponent.SIZE_XXSMALL;
/** @type {?} */
NbAlertComponent.SIZE_XSMALL;
/** @type {?} */
NbAlertComponent.SIZE_SMALL;
/** @type {?} */
NbAlertComponent.SIZE_MEDIUM;
/** @type {?} */
NbAlertComponent.SIZE_LARGE;
/** @type {?} */
NbAlertComponent.SIZE_XLARGE;
/** @type {?} */
NbAlertComponent.SIZE_XXLARGE;
/** @type {?} */
NbAlertComponent.STATUS_ACTIVE;
/** @type {?} */
NbAlertComponent.STATUS_DISABLED;
/** @type {?} */
NbAlertComponent.STATUS_PRIMARY;
/** @type {?} */
NbAlertComponent.STATUS_INFO;
/** @type {?} */
NbAlertComponent.STATUS_SUCCESS;
/** @type {?} */
NbAlertComponent.STATUS_WARNING;
/** @type {?} */
NbAlertComponent.STATUS_DANGER;
/** @type {?} */
NbAlertComponent.ACCENT_ACTIVE;
/** @type {?} */
NbAlertComponent.ACCENT_DISABLED;
/** @type {?} */
NbAlertComponent.ACCENT_PRIMARY;
/** @type {?} */
NbAlertComponent.ACCENT_INFO;
/** @type {?} */
NbAlertComponent.ACCENT_SUCCESS;
/** @type {?} */
NbAlertComponent.ACCENT_WARNING;
/** @type {?} */
NbAlertComponent.ACCENT_DANGER;
/** @type {?} */
NbAlertComponent.OUTLINE_ACTIVE;
/** @type {?} */
NbAlertComponent.OUTLINE_DISABLED;
/** @type {?} */
NbAlertComponent.OUTLINE_PRIMARY;
/** @type {?} */
NbAlertComponent.OUTLINE_INFO;
/** @type {?} */
NbAlertComponent.OUTLINE_SUCCESS;
/** @type {?} */
NbAlertComponent.OUTLINE_WARNING;
/** @type {?} */
NbAlertComponent.OUTLINE_DANGER;
/** @type {?} */
NbAlertComponent.prototype.size;
/** @type {?} */
NbAlertComponent.prototype.status;
/** @type {?} */
NbAlertComponent.prototype.accent;
/** @type {?} */
NbAlertComponent.prototype.outline;
/** @type {?} */
NbAlertComponent.prototype.closableValue;
/** @type {?} */
NbAlertComponent.prototype.close;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vdGhlbWUtbGliLyIsInNvdXJjZXMiOlsibGliL2NvbXBvbmVudHMvYWxlcnQvYWxlcnQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQU1BLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLFlBQVksQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUErRW5EO0lBQUE7UUFrREUsa0JBQWEsR0FBWSxLQUFLLENBQUM7Ozs7O1FBaU5yQixVQUFLLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQVF2QyxDQUFDO0lBcE5DLHNCQUNJLHNDQUFRO1FBSlo7O1dBRUc7Ozs7Ozs7O1FBQ0gsVUFDYSxHQUFZO1lBQ3ZCLElBQUksQ0FBQyxhQUFhLEdBQUcscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEQsQ0FBQzs7O09BQUE7SUFFRCxzQkFDSSxxQ0FBTzs7OztRQURYO1lBRUUsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLGdCQUFnQixDQUFDLFlBQVksQ0FBQztRQUNyRCxDQUFDOzs7T0FBQTtJQUVELHNCQUNJLG9DQUFNOzs7O1FBRFY7WUFFRSxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1FBQ3BELENBQUM7OztPQUFBO0lBRUQsc0JBQ0ksbUNBQUs7Ozs7UUFEVDtZQUVFLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7UUFDbkQsQ0FBQzs7O09BQUE7SUFFRCxzQkFDSSxvQ0FBTTs7OztRQURWO1lBRUUsT0FBTyxJQUFJLENBQUMs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LHVCQUF1Qjs2QkFLbkMsV0FBVyxTQUFDLGVBQWU7aUNBSzNCLFdBQVcsU0FBQyx1QkFBdUI7OEJBS25DLFdBQVcsU0FBQyxvQkFBb0I7aUNBS2hDLFdBQVcsU0FBQyx1QkFBdUI7aUNBS25DLFdBQVcsU0FBQyx1QkFBdUI7Z0NBS25DLFdBQVcsU0FBQyxzQkFBc0I7Z0NBS2xDLFdBQVcsU0FBQyxzQkFBc0I7a0NBS2xDLFdBQVcsU0FBQyx3QkFBd0I7MEJBVXBDLEtBQUssU0FBQyxNQUFNOzRCQVVaLEtBQUssU0FBQyxRQUFROzRCQVVkLEtBQUssU0FBQyxRQUFROzZCQVVkLEtBQUssU0FBQyxTQUFTO3dCQVNmLE1BQU07O0lBUVQsdUJBQUM7Q0FBQSxBQTNRRCxJQTJRQztTQWpRWSxnQkFBZ0I7OztJQUUzQiw4QkFBeUM7O0lBQ3pDLDZCQUF1Qzs7SUFDdkMsNEJBQXFDOztJQUNyQyw2QkFBdUM7O0lBQ3ZDLDRCQUFxQzs7SUFDckMsNkJBQXVDOztJQUN2Qyw4QkFBeUM7O0lBRXpDLCtCQUF5Qzs7SUFDekMsaUNBQTZDOztJQUM3QyxnQ0FBMkM7O0lBQzNDLDZCQUFxQzs7SUFDckMsZ0NBQTJDOztJQUMzQyxnQ0FBMkM7O0lBQzNDLCtCQUF5Qzs7SUFFekMsK0JBQXlDOztJQUN6QyxpQ0FBNkM7O0lBQzdDLGdDQUEyQzs7SUFDM0MsNkJBQXFDOztJQUNyQyxnQ0FBMkM7O0lBQzNDLGdDQUEyQzs7SUFDM0MsK0JBQXlDOztJQUV6QyxnQ0FBMEM7O0lBQzFDLGtDQUE4Qzs7SUFDOUMsaUNBQTRDOztJQUM1Qyw4QkFBc0M7O0lBQ3RDLGlDQUE0Qzs7SUFDNUMsaUNBQTRDOztJQUM1QyxnQ0FBMEM7O0lBRTFDLGdDQUFhOztJQUNiLGtDQUFlOztJQUNmLGtDQUFlOztJQUNmLG1DQUFnQjs7SUFFaEIseUNBQytCOztJQWlOL0IsaUNBQXFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IEFrdmVvLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuIFNlZSBMaWNlbnNlLnR4dCBpbiB0aGUgcHJvamVjdCByb290IGZvciBsaWNlbnNlIGluZm9ybWF0aW9uLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIEhvc3RCaW5kaW5nLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sUHJvcGVydHkgfSBmcm9tICcuLi9oZWxwZXJzJztcclxuXHJcblxyXG4vKlxyXG4gKiBBbGVydCBjb21wb25lbnQuXHJcbiAqXHJcbiAqIEJhc2ljIGFsZXJ0IGV4YW1wbGU6XHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoU2hvd2Nhc2UsIGFsZXJ0L2FsZXJ0LXNob3djYXNlLmNvbXBvbmVudClcclxuICpcclxuICogQWxlcnQgY29uZmlndXJhdGlvbjpcclxuICpcclxuICogYGBgaHRtbFxyXG4gKiA8bmItYWxlcnQgc3RhdHVzPVwic3VjY2Vzc1wiPlxyXG4gKiAgIFlvdSBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGF1dGhlbnRpY2F0ZWQhXHJcbiAqIDwvbmItYWxlcnQ+XHJcbiAqIGBgYFxyXG4gKiAjIyMgSW5zdGFsbGF0aW9uXHJcbiAqXHJcbiAqIEltcG9ydCBgTmJCdXR0b25Nb2R1bGVgIHRvIHlvdXIgZmVhdHVyZSBtb2R1bGUuXHJcbiAqIGBgYHRzXHJcbiAqIEBOZ01vZHVsZSh7XHJcbiAqICAgaW1wb3J0czogW1xyXG4gKiAgIFx0Ly8gLi4uXHJcbiAqICAgICBOYkFsZXJ0TW9kdWxlLFxyXG4gKiAgIF0sXHJcbiAqIH0pXHJcbiAqIGV4cG9ydCBjbGFzcyBQYWdlTW9kdWxlIHsgfVxyXG4gKiBgYGBcclxuICogIyMjIFVzYWdlXHJcbiAqXHJcbiAqIEFsZXJ0IGNvdWxkIGFkZGl0aW9uYWxseSBoYXZlIGEgYGNsb3NlYCBidXR0b24gd2hlbiBgY2xvc2FibGVgIHByb3BlcnR5IGlzIHNldDpcclxuICogYGBgaHRtbFxyXG4gKiA8bmItYWxlcnQgc3RhdHVzPVwic3VjY2Vzc1wiIGNsb3NhYmxlIChjbG9zZSk9XCJvbkNsb3NlKClcIj5cclxuICogICBZb3UgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBhdXRoZW50aWNhdGVkIVxyXG4gKiA8L25iLWFsZXJ0PlxyXG4gKiBgYGBcclxuICpcclxuICogQ29sb3JlZCBhbGVydHMgY291bGQgYmUgc2ltcGx5IGNvbmZpZ3VyZWQgYnkgcHJvdmlkaW5nIGEgYHN0YXR1c2AgcHJvcGVydHk6XHJcbiAqIEBzdGFja2VkLWV4YW1wbGUoQ29sb3JlZCBBbGVydCwgYWxlcnQvYWxlcnQtY29sb3JzLmNvbXBvbmVudClcclxuICpcclxuICogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBhc3NpZ24gYW4gYGFjY2VudGAgcHJvcGVydHkgZm9yIGEgc2xpZ2h0IGFsZXJ0IGhpZ2hsaWdodFxyXG4gKiBhcyB3ZWxsIGFzIGNvbWJpbmUgaXQgd2l0aCBgc3RhdHVzYDpcclxuICogQHN0YWNrZWQtZXhhbXBsZShBY2NlbnQgQWxlcnQsIGFsZXJ0L2FsZXJ0LWFjY2VudHMuY29tcG9uZW50KVxyXG4gKlxyXG4gKiBBbmQgYG91dGxpbmVgIHByb3BlcnR5OlxyXG4gKiBAc3RhY2tlZC1leGFtcGxlKE91dGxpbmUgQWxlcnQsIGFsZXJ0L2FsZXJ0LW91dGxpbmUuY29tcG9uZW50KVxyXG4gKlxyXG4gKiBAYWRkaXRpb25hbC1leGFtcGxlKE11bHRpcGxlIFNpemVzLCBhbGVydC9hbGVydC1zaXplcy5jb21wb25lbnQpXHJcbiAqXHJcbiAqIEBzdHlsZXNcclxuICpcclxuICogYWxlcnQtZm9udC1zaXplOlxyXG4gKiBhbGVydC1saW5lLWhlaWdodDpcclxuICogYWxlcnQtZm9udC13ZWlnaHQ6XHJcbiAqIGFsZXJ0LWZnOlxyXG4gKiBhbGVydC1vdXRsaW5lLWZnOlxyXG4gKiBhbGVydC1iZzpcclxuICogYWxlcnQtYWN0aXZlLWJnOlxyXG4gKiBhbGVydC1kaXNhYmxlZC1iZzpcclxuICogYWxlcnQtZGlzYWJsZWQtZmc6XHJcbiAqIGFsZXJ0LXByaW1hcnktYmc6XHJcbiAqIGFsZXJ0LWluZm8tYmc6XHJcbiAqIGFsZXJ0LXN1Y2Nlc3MtYmc6XHJcbiAqIGFsZXJ0LXdhcm5pbmctYmc6XHJcbiAqIGFsZXJ0LWRhbmdlci1iZzpcclxuICogYWxlcnQtaGVpZ2h0LXh4c21hbGw6XHJcbiAqIGFsZXJ0LWhlaWdodC14c21hbGw6XHJcbiAqIGFsZXJ0LWhlaWdodC1zbWFsbDpcclxuICogYWxlcnQtaGVpZ2h0LW1lZGl1bTpcclxuICogYWxlcnQtaGVpZ2h0LWxhcmdlOlxyXG4gKiBhbGVydC1oZWlnaHQteGxhcmdlOlxyXG4gKiBhbGVydC1oZWlnaHQteHhsYXJnZTpcclxuICogYWxlcnQtc2hhZG93OlxyXG4gKiBhbGVydC1ib3JkZXItcmFkaXVzOlxyXG4gKiBhbGVydC1wYWRkaW5nOlxyXG4gKiBhbGVydC1jbG9zYWJsZS1wYWRkaW5nOlxyXG4gKiBhbGVydC1idXR0b24tcGFkZGluZzpcclxuICogYWxlcnQtbWFyZ2luOlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICduYi1hbGVydCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYWxlcnQuY29tcG9uZW50LnNjc3MnXSxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGJ1dHRvbiAqbmdJZj1cImNsb3NhYmxlVmFsdWVcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJvbkNsb3NlKClcIj5cclxuICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxyXG4gIGAsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOYkFsZXJ0Q29tcG9uZW50IHtcclxuXHJcbiAgc3RhdGljIHJlYWRvbmx5IFNJWkVfWFhTTUFMTCA9ICd4eHNtYWxsJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU0laRV9YU01BTEwgPSAneHNtYWxsJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU0laRV9TTUFMTCA9ICdzbWFsbCc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNJWkVfTUVESVVNID0gJ21lZGl1bSc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNJWkVfTEFSR0UgPSAnbGFyZ2UnO1xyXG4gIHN0YXRpYyByZWFkb25seSBTSVpFX1hMQVJHRSA9ICd4bGFyZ2UnO1xyXG4gIHN0YXRpYyByZWFkb25seSBTSVpFX1hYTEFSR0UgPSAneHhsYXJnZSc7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBTVEFUVVNfQUNUSVZFID0gJ2FjdGl2ZSc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNUQVRVU19ESVNBQkxFRCA9ICdkaXNhYmxlZCc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNUQVRVU19QUklNQVJZID0gJ3ByaW1hcnknO1xyXG4gIHN0YXRpYyByZWFkb25seSBTVEFUVVNfSU5GTyA9ICdpbmZvJztcclxuICBzdGF0aWMgcmVhZG9ubHkgU1RBVFVTX1NVQ0NFU1MgPSAnc3VjY2Vzcyc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IFNUQVRVU19XQVJOSU5HID0gJ3dhcm5pbmcnO1xyXG4gIHN0YXRpYyByZWFkb25seSBTVEFUVVNfREFOR0VSID0gJ2Rhbmdlcic7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBBQ0NFTlRfQUNUSVZFID0gJ2FjdGl2ZSc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IEFDQ0VOVF9ESVNBQkxFRCA9ICdkaXNhYmxlZCc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IEFDQ0VOVF9QUklNQVJZID0gJ3ByaW1hcnknO1xyXG4gIHN0YXRpYyByZWFkb25seSBBQ0NFTlRfSU5GTyA9ICdpbmZvJztcclxuICBzdGF0aWMgcmVhZG9ubHkgQUNDRU5UX1NVQ0NFU1MgPSAnc3VjY2Vzcyc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IEFDQ0VOVF9XQVJOSU5HID0gJ3dhcm5pbmcnO1xyXG4gIHN0YXRpYyByZWFkb25seSBBQ0NFTlRfREFOR0VSID0gJ2Rhbmdlcic7XHJcblxyXG4gIHN0YXRpYyByZWFkb25seSBPVVRMSU5FX0FDVElWRSA9ICdhY3RpdmUnO1xyXG4gIHN0YXRpYyByZWFkb25seSBPVVRMSU5FX0RJU0FCTEVEID0gJ2Rpc2FibGVkJztcclxuICBzdGF0aWMgcmVhZG9ubHkgT1VUTElORV9QUklNQVJZID0gJ3ByaW1hcnknO1xyXG4gIHN0YXRpYyByZWFkb25seSBPVVRMSU5FX0lORk8gPSAnaW5mbyc7XHJcbiAgc3RhdGljIHJlYWRvbmx5IE9VVExJTkVfU1VDQ0VTUyA9ICdzdWNjZXNzJztcclxuICBzdGF0aWMgcmVhZG9ubHkgT1VUTElORV9XQVJOSU5HID0gJ3dhcm5pbmcnO1xyXG4gIHN0YXRpYyByZWFkb25seSBPVVRMSU5FX0RBTkdFUiA9ICdkYW5nZXInO1xyXG5cclxuICBzaXplOiBzdHJpbmc7XHJcbiAgc3RhdHVzOiBzdHJpbmc7XHJcbiAgYWNjZW50OiBzdHJpbmc7XHJcbiAgb3V0bGluZTogc3RyaW5nO1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNsb3NhYmxlJylcclxuICBjbG9zYWJsZVZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qXHJcbiAgICogU2hvd3MgYGNsb3NlYCBpY29uXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBzZXQgY2xvc2FibGUodmFsOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmNsb3NhYmxlVmFsdWUgPSBjb252ZXJ0VG9Cb29sUHJvcGVydHkodmFsKTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MueHhzbWFsbC1hbGVydCcpXHJcbiAgZ2V0IHh4c21hbGwoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXplID09PSBOYkFsZXJ0Q29tcG9uZW50LlNJWkVfWFhTTUFMTDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MueHNtYWxsLWFsZXJ0JylcclxuICBnZXQgeHNtYWxsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gTmJBbGVydENvbXBvbmVudC5TSVpFX1hTTUFMTDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc21hbGwtYWxlcnQnKVxyXG4gIGdldCBzbWFsbCgpIHtcclxuICAgIHJldHVybiB0aGlzLnNpemUgPT09IE5iQWxlcnRDb21wb25lbnQuU0laRV9TTUFMTDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MubWVkaXVtLWFsZXJ0JylcclxuICBnZXQgbWVkaXVtKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gTmJBbGVydENvbXBvbmVudC5TSVpFX01FRElVTTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MubGFyZ2UtYWxlcnQnKVxyXG4gIGdldCBsYXJnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnNpemUgPT09IE5iQWxlcnRDb21wb25lbnQuU0laRV9MQVJHRTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MueGxhcmdlLWFsZXJ0JylcclxuICBnZXQgeGxhcmdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gTmJBbGVydENvbXBvbmVudC5TSVpFX1hMQVJHRTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MueHhsYXJnZS1hbGVydCcpXHJcbiAgZ2V0IHh4bGFyZ2UoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaXplID09PSBOYkFsZXJ0Q29tcG9uZW50LlNJWkVfWFhMQVJHRTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWN0aXZlLWFsZXJ0JylcclxuICBnZXQgYWN0aXZlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBOYkFsZXJ0Q29tcG9uZW50LlNUQVRVU19BQ1RJVkU7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmRpc2FibGVkLWFsZXJ0JylcclxuICBnZXQgZGlzYWJsZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IE5iQWxlcnRDb21wb25lbnQuU1RBVFVTX0RJU0FCTEVEO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5wcmltYXJ5LWFsZXJ0JylcclxuICBnZXQgcHJpbWFyeSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gTmJBbGVydENvbXBvbmVudC5TVEFUVVNfUFJJTUFSWTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuaW5mby1hbGVydCcpXHJcbiAgZ2V0IGluZm8oKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdGF0dXMgPT09IE5iQWxlcnRDb21wb25lbnQuU1RBVFVTX0lORk87XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnN1Y2Nlc3MtYWxlcnQnKVxyXG4gIGdldCBzdWNjZXNzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBOYkFsZXJ0Q29tcG9uZW50LlNUQVRVU19TVUNDRVNTO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy53YXJuaW5nLWFsZXJ0JylcclxuICBnZXQgd2FybmluZygpIHtcclxuICAgIHJldHVybiB0aGlzLnN0YXR1cyA9PT0gTmJBbGVydENvbXBvbmVudC5TVEFUVVNfV0FSTklORztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuZGFuZ2VyLWFsZXJ0JylcclxuICBnZXQgZGFuZ2VyKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzID09PSBOYkFsZXJ0Q29tcG9uZW50LlNUQVRVU19EQU5HRVI7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjY2VudCcpXHJcbiAgZ2V0IGhhc0FjY2VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjY2VudDtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Muc3RhdHVzJylcclxuICBnZXQgaGFzU3RhdHVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RhdHVzO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY2NlbnQtcHJpbWFyeScpXHJcbiAgZ2V0IHByaW1hcnlBY2NlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY2NlbnQgPT09IE5iQWxlcnRDb21wb25lbnQuQUNDRU5UX1BSSU1BUlk7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjY2VudC1pbmZvJylcclxuICBnZXQgaW5mb0FjY2VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjY2VudCA9PT0gTmJBbGVydENvbXBvbmVudC5BQ0NFTlRfSU5GTztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWNjZW50LXN1Y2Nlc3MnKVxyXG4gIGdldCBzdWNjZXNzQWNjZW50KCkge1xyXG4gICAgcmV0dXJuIHRoaXMuYWNjZW50ID09PSBOYkFsZXJ0Q29tcG9uZW50LkFDQ0VOVF9TVUNDRVNTO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY2NlbnQtd2FybmluZycpXHJcbiAgZ2V0IHdhcm5pbmdBY2NlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY2NlbnQgPT09IE5iQWxlcnRDb21wb25lbnQuQUNDRU5UX1dBUk5JTkc7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFjY2VudC1kYW5nZXInKVxyXG4gIGdldCBkYW5nZXJBY2NlbnQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5hY2NlbnQgPT09IE5iQWxlcnRDb21wb25lbnQuQUNDRU5UX0RBTkdFUjtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYWNjZW50LWFjdGl2ZScpXHJcbiAgZ2V0IGFjdGl2ZUFjY2VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjY2VudCA9PT0gTmJBbGVydENvbXBvbmVudC5BQ0NFTlRfQUNUSVZFO1xyXG4gIH1cclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5hY2NlbnQtZGlzYWJsZWQnKVxyXG4gIGdldCBkaXNhYmxlZEFjY2VudCgpIHtcclxuICAgIHJldHVybiB0aGlzLmFjY2VudCA9PT0gTmJBbGVydENvbXBvbmVudC5BQ0NFTlRfRElTQUJMRUQ7XHJcbiAgfVxyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm91dGxpbmUnKVxyXG4gIGdldCBoYXNPdXRsaW5lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3V0bGluZTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS1wcmltYXJ5JylcclxuICBnZXQgcHJpbWFyeU91dGxpbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vdXRsaW5lID09PSBOYkFsZXJ0Q29tcG9uZW50Lk9VVExJTkVfUFJJTUFSWTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS1pbmZvJylcclxuICBnZXQgaW5mb091dGxpbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vdXRsaW5lID09PSBOYkFsZXJ0Q29tcG9uZW50Lk9VVExJTkVfSU5GTztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS1zdWNjZXNzJylcclxuICBnZXQgc3VjY2Vzc091dGxpbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vdXRsaW5lID09PSBOYkFsZXJ0Q29tcG9uZW50Lk9VVExJTkVfU1VDQ0VTUztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS13YXJuaW5nJylcclxuICBnZXQgd2FybmluZ091dGxpbmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5vdXRsaW5lID09PSBOYkFsZXJ0Q29tcG9uZW50Lk9VVExJTkVfV0FSTklORztcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS1kYW5nZXInKVxyXG4gIGdldCBkYW5nZXJPdXRsaW5lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3V0bGluZSA9PT0gTmJBbGVydENvbXBvbmVudC5PVVRMSU5FX0RBTkdFUjtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS1hY3RpdmUnKVxyXG4gIGdldCBhY3RpdmVPdXRsaW5lKCkge1xyXG4gICAgcmV0dXJuIHRoaXMub3V0bGluZSA9PT0gTmJBbGVydENvbXBvbmVudC5PVVRMSU5FX0FDVElWRTtcclxuICB9XHJcblxyXG4gIEBIb3N0QmluZGluZygnY2xhc3Mub3V0bGluZS1kaXNhYmxlZCcpXHJcbiAgZ2V0IGRpc2FibGVkT3V0bGluZSgpIHtcclxuICAgIHJldHVybiB0aGlzLm91dGxpbmUgPT09IE5iQWxlcnRDb21wb25lbnQuT1VUTElORV9ESVNBQkxFRDtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogQWxlcnQgc2l6ZSwgYXZhaWxhYmxlIHNpemVzOlxyXG4gICAqIHh4c21hbGwsIHhzbWFsbCwgc21hbGwsIG1lZGl1bSwgbGFyZ2UsIHhsYXJnZSwgeHhsYXJnZVxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBASW5wdXQoJ3NpemUnKVxyXG4gIHByaXZhdGUgc2V0IHNldFNpemUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc2l6ZSA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogQWxlcnQgc3RhdHVzIChhZGRzIHNwZWNpZmljIHN0eWxlcyk6XHJcbiAgICogYWN0aXZlLCBkaXNhYmxlZCwgcHJpbWFyeSwgaW5mbywgc3VjY2Vzcywgd2FybmluZywgZGFuZ2VyXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgnc3RhdHVzJylcclxuICBwcml2YXRlIHNldCBzZXRTdGF0dXModmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3RhdHVzID0gdmFsO1xyXG4gIH1cclxuXHJcbiAgLypcclxuICAgKiBBbGVydCBhY2NlbnQgKGNvbG9yIG9mIHRoZSB0b3AgYm9yZGVyKTpcclxuICAgKiBhY3RpdmUsIGRpc2FibGVkLCBwcmltYXJ5LCBpbmZvLCBzdWNjZXNzLCB3YXJuaW5nLCBkYW5nZXJcclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsXHJcbiAgICovXHJcbiAgQElucHV0KCdhY2NlbnQnKVxyXG4gIHByaXZhdGUgc2V0IHNldEFjY2VudCh2YWw6IHN0cmluZykge1xyXG4gICAgdGhpcy5hY2NlbnQgPSB2YWw7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAqIEFsZXJ0IG91dGxpbmUgKGNvbG9yIG9mIHRoZSBib3JkZXIpOlxyXG4gICAqIGFjdGl2ZSwgZGlzYWJsZWQsIHByaW1hcnksIGluZm8sIHN1Y2Nlc3MsIHdhcm5pbmcsIGRhbmdlclxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBASW5wdXQoJ291dGxpbmUnKVxyXG4gIHByaXZhdGUgc2V0IHNldE91dGxpbmUodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMub3V0bGluZSA9IHZhbDtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICogRW1pdHMgd2hlbiBjaGlwIGlzIHJlbW92ZWRcclxuICAgKiBAdHlwZSBFdmVudEVtaXR0ZXI8YW55PlxyXG4gICAqL1xyXG4gIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgLypcclxuICAgKiBFbWl0cyB0aGUgcmVtb3ZlZCBjaGlwIGV2ZW50XHJcbiAgICovXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xyXG4gIH1cclxufVxyXG4iXX0=