@hxui/angular
Version:
* * *
322 lines • 19.6 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
import { InjectionToken } from '@angular/core';
import { Subject } from 'rxjs';
/** @enum {number} */
const ToastrPosition = {
CENTER_CENTER: 0,
TOP_CENTER: 1,
BOTTOM_CENTER: 2,
TOP_FULL_WIDTH: 3,
BOTTOM_FULL_WIDTH: 4,
TOP_LEFT: 5,
TOP_RIGHT: 6,
BOTTOM_LEFT: 7,
BOTTOM_RIGHT: 8,
};
export { ToastrPosition };
ToastrPosition[ToastrPosition.CENTER_CENTER] = 'CENTER_CENTER';
ToastrPosition[ToastrPosition.TOP_CENTER] = 'TOP_CENTER';
ToastrPosition[ToastrPosition.BOTTOM_CENTER] = 'BOTTOM_CENTER';
ToastrPosition[ToastrPosition.TOP_FULL_WIDTH] = 'TOP_FULL_WIDTH';
ToastrPosition[ToastrPosition.BOTTOM_FULL_WIDTH] = 'BOTTOM_FULL_WIDTH';
ToastrPosition[ToastrPosition.TOP_LEFT] = 'TOP_LEFT';
ToastrPosition[ToastrPosition.TOP_RIGHT] = 'TOP_RIGHT';
ToastrPosition[ToastrPosition.BOTTOM_LEFT] = 'BOTTOM_LEFT';
ToastrPosition[ToastrPosition.BOTTOM_RIGHT] = 'BOTTOM_RIGHT';
/**
* Configuration for an individual toast.
* @record
*/
export function IndividualConfig() { }
if (false) {
/**
* disable both timeOut and extendedTimeOut
* default: false
* @type {?}
*/
IndividualConfig.prototype.disableTimeOut;
/**
* toast time to live in milliseconds
* default: 5000
* @type {?}
*/
IndividualConfig.prototype.timeOut;
/**
* toast show close button
* default: false
* @type {?}
*/
IndividualConfig.prototype.closeButton;
/**
* time to close after a user hovers over toast
* default: 1000
* @type {?}
*/
IndividualConfig.prototype.extendedTimeOut;
/**
* show toast progress bar
* default: false
* @type {?}
*/
IndividualConfig.prototype.progressBar;
/**
* changes toast progress bar animation
* default: decreasing
* @type {?}
*/
IndividualConfig.prototype.progressAnimation;
/**
* render html in toast message (possibly unsafe)
* default: false
* @type {?}
*/
IndividualConfig.prototype.enableHtml;
/**
* css class on toast component
* default: toast
* @type {?}
*/
IndividualConfig.prototype.toastClass;
/**
* Position of toastr container
* default: ToastrPosition.TOP_RIGHT
* @type {?}
*/
IndividualConfig.prototype.position;
/**
* css class on toast title
* default: toast-title
* @type {?}
*/
IndividualConfig.prototype.titleClass;
/**
* css class on toast message
* default: toast-message
* @type {?}
*/
IndividualConfig.prototype.messageClass;
/**
* animation easing on toast
* default: ease-in
* @type {?}
*/
IndividualConfig.prototype.easing;
/**
* animation ease time on toast
* default: 300
* @type {?}
*/
IndividualConfig.prototype.easeTime;
/**
* clicking on toast dismisses it
* default: true
* @type {?}
*/
IndividualConfig.prototype.tapToDismiss;
/**
* Angular toast component to be shown
* default: Toast
* @type {?|undefined}
*/
IndividualConfig.prototype.toastComponent;
/**
* Helps show toast from a websocket or from event outside Angular
* default: false
* @type {?}
*/
IndividualConfig.prototype.onActivateTick;
}
/**
* @record
*/
export function ToastrIconClasses() { }
if (false) {
/** @type {?} */
ToastrIconClasses.prototype.none;
/** @type {?} */
ToastrIconClasses.prototype.error;
/** @type {?} */
ToastrIconClasses.prototype.info;
/** @type {?} */
ToastrIconClasses.prototype.success;
/** @type {?} */
ToastrIconClasses.prototype.warning;
}
/**
* Global Toast configuration
* Includes all IndividualConfig
* @record
*/
export function GlobalConfig() { }
if (false) {
/**
* max toasts opened. Toasts will be queued
* Zero is unlimited
* default: 0
* @type {?}
*/
GlobalConfig.prototype.maxOpened;
/**
* dismiss current toast when max is reached
* default: false
* @type {?}
*/
GlobalConfig.prototype.autoDismiss;
/** @type {?} */
GlobalConfig.prototype.iconClasses;
/**
* New toast placement
* default: true
* @type {?}
*/
GlobalConfig.prototype.newestOnTop;
/**
* block duplicate messages
* default: false
* @type {?}
*/
GlobalConfig.prototype.preventDuplicates;
/**
* Reset toast timeout when there's a duplicate (preventDuplicates needs to be set to true)
* default: false
* @type {?}
*/
GlobalConfig.prototype.resetTimeoutOnDuplicate;
}
/**
* Everything a toast needs to launch
*/
export class ToastPackage {
/**
* @param {?} toastId
* @param {?} config
* @param {?} message
* @param {?} title
* @param {?} toastType
* @param {?} toastRef
*/
constructor(toastId, config, message, title, toastType, toastRef) {
this.toastId = toastId;
this.config = config;
this.message = message;
this.title = title;
this.toastType = toastType;
this.toastRef = toastRef;
this._onTap = new Subject();
this._onAction = new Subject();
this.toastRef.afterClosed().subscribe(() => {
this._onAction.complete();
this._onTap.complete();
});
}
/**
* Fired on click
* @return {?}
*/
triggerTap() {
this._onTap.next();
if (this.config.tapToDismiss) {
this._onTap.complete();
}
}
/**
* @return {?}
*/
onTap() {
return this._onTap.asObservable();
}
/**
* available for use in custom toast
* @param {?=} action
* @return {?}
*/
triggerAction(action) {
this._onAction.next(action);
}
/**
* @return {?}
*/
onAction() {
return this._onAction.asObservable();
}
}
if (false) {
/** @type {?} */
ToastPackage.prototype._onTap;
/** @type {?} */
ToastPackage.prototype._onAction;
/** @type {?} */
ToastPackage.prototype.toastId;
/** @type {?} */
ToastPackage.prototype.config;
/** @type {?} */
ToastPackage.prototype.message;
/** @type {?} */
ToastPackage.prototype.title;
/** @type {?} */
ToastPackage.prototype.toastType;
/** @type {?} */
ToastPackage.prototype.toastRef;
}
/**
* @deprecated use GlobalConfig
* @record
*/
export function GlobalToastrConfig() { }
/**
* @deprecated use IndividualConfig
* @record
*/
export function IndividualToastrConfig() { }
/**
* @deprecated use IndividualConfig
* @record
*/
export function ToastrConfig() { }
/** @type {?} */
export const DefaultNoComponentGlobalConfig = {
maxOpened: 0,
autoDismiss: false,
newestOnTop: true,
preventDuplicates: false,
resetTimeoutOnDuplicate: false,
iconClasses: {
none: '',
error: 'is-error',
info: 'is-info',
success: 'is-success',
warning: 'is-warning',
},
// Individual
closeButton: false,
disableTimeOut: false,
timeOut: 5000,
extendedTimeOut: 1000,
enableHtml: false,
progressBar: false,
toastClass: 'hx-alert',
position: ToastrPosition.TOP_RIGHT,
titleClass: 'toast-title',
messageClass: 'toast-message',
easing: 'ease-in',
easeTime: 300,
tapToDismiss: true,
onActivateTick: false,
progressAnimation: 'decreasing',
};
/**
* @record
*/
export function ToastrToken() { }
if (false) {
/** @type {?} */
ToastrToken.prototype.default;
/** @type {?} */
ToastrToken.prototype.config;
}
/** @type {?} */
export const TOAST_CONFIG = new InjectionToken('ToastrConfig');
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3RyLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BoeHVpL2FuZ3VsYXIvIiwic291cmNlcyI6WyJsaWIvdG9hc3RyL3RvYXN0ci1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHL0MsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7O0lBUXpDLGdCQUFhO0lBQ2IsYUFBVTtJQUNWLGdCQUFhO0lBQ2IsaUJBQWM7SUFDZCxvQkFBaUI7SUFDakIsV0FBUTtJQUNSLFlBQVM7SUFDVCxjQUFXO0lBQ1gsZUFBWTs7Ozs7Ozs7Ozs7Ozs7OztBQU1kLHNDQW1GQzs7Ozs7OztJQTlFQywwQ0FBd0I7Ozs7OztJQUt4QixtQ0FBZ0I7Ozs7OztJQUtoQix1Q0FBcUI7Ozs7OztJQUtyQiwyQ0FBd0I7Ozs7OztJQUt4Qix1Q0FBcUI7Ozs7OztJQU1yQiw2Q0FBeUM7Ozs7OztJQU16QyxzQ0FBb0I7Ozs7OztJQUtwQixzQ0FBbUI7Ozs7OztJQUtuQixvQ0FBeUI7Ozs7OztJQUt6QixzQ0FBbUI7Ozs7OztJQUtuQix3Q0FBcUI7Ozs7OztJQUtyQixrQ0FBZTs7Ozs7O0lBS2Ysb0NBQTBCOzs7Ozs7SUFLMUIsd0NBQXNCOzs7Ozs7SUFLdEIsMENBQW9DOzs7Ozs7SUFLcEMsMENBQXdCOzs7OztBQUcxQix1Q0FNQzs7O0lBTEMsaUNBQWE7O0lBQ2Isa0NBQWM7O0lBQ2QsaUNBQWE7O0lBQ2Isb0NBQWdCOztJQUNoQixvQ0FBZ0I7Ozs7Ozs7QUFPbEIsa0NBNkJDOzs7Ozs7OztJQXZCQyxpQ0FBa0I7Ozs7OztJQUtsQixtQ0FBcUI7O0lBQ3JCLG1DQUF3Qzs7Ozs7O0lBS3hDLG1DQUFxQjs7Ozs7O0lBS3JCLHlDQUEyQjs7Ozs7O0lBTTNCLCtDQUFpQzs7Ozs7QUFNbkMsTUFBTSxPQUFPLFlBQVk7Ozs7Ozs7OztJQUl2QixZQUNTLE9BQWUsRUFDZixNQUF3QixFQUN4QixPQUE2QyxFQUM3QyxLQUF5QixFQUN6QixTQUFpQixFQUNqQixRQUF3QjtRQUx4QixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBa0I7UUFDeEIsWUFBTyxHQUFQLE9BQU8sQ0FBc0M7UUFDN0MsVUFBSyxHQUFMLEtBQUssQ0FBb0I7UUFDekIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixhQUFRLEdBQVIsUUFBUSxDQUFnQjtRQVR6QixXQUFNLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUM1QixjQUFTLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQVVyQyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7Ozs7SUFHRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxFQUFFO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDeEI7SUFDSCxDQUFDOzs7O0lBRUQsS0FBSztRQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNwQyxDQUFDOzs7Ozs7SUFHRCxhQUFhLENBQUMsTUFBWTtRQUN4QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5QixDQUFDOzs7O0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7OztJQXJDQyw4QkFBb0M7O0lBQ3BDLGlDQUF1Qzs7SUFHckMsK0JBQXNCOztJQUN0Qiw4QkFBK0I7O0lBQy9CLCtCQUFvRDs7SUFDcEQsNkJBQWdDOztJQUNoQyxpQ0FBd0I7O0lBQ3hCLGdDQUErQjs7Ozs7O0FBZ0NuQyx3Q0FBMkQ7Ozs7O0FBRTNELDRDQUFtRTs7Ozs7QUFFbkUsa0NBQXlEOztBQUV6RCxNQUFNLE9BQU8sOEJBQThCLEdBQWlCO0lBQzFELFNBQVMsRUFBRSxDQUFDO0lBQ1osV0FBVyxFQUFFLEtBQUs7SUFDbEIsV0FBVyxFQUFFLElBQUk7SUFDakIsaUJBQWlCLEVBQUUsS0FBSztJQUN4Qix1QkFBdUIsRUFBRSxLQUFLO0lBQzlCLFdBQVcsRUFBRTtRQUNYLElBQUksRUFBRSxFQUFFO1FBQ1IsS0FBSyxFQUFFLFVBQVU7UUFDakIsSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPLEVBQUUsWUFBWTtRQUNyQixPQUFPLEVBQUUsWUFBWTtLQUN0Qjs7SUFHRCxXQUFXLEVBQUUsS0FBSztJQUNsQixjQUFjLEVBQUUsS0FBSztJQUNyQixPQUFPLEVBQUUsSUFBSTtJQUNiLGVBQWUsRUFBRSxJQUFJO0lBQ3JCLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLFdBQVcsRUFBRSxLQUFLO0lBQ2xCLFVBQVUsRUFBRSxVQUFVO0lBQ3RCLFFBQVEsRUFBRSxjQUFjLENBQUMsU0FBUztJQUNsQyxVQUFVLEVBQUUsYUFBYTtJQUN6QixZQUFZLEVBQUUsZUFBZTtJQUM3QixNQUFNLEVBQUUsU0FBUztJQUNqQixRQUFRLEVBQUUsR0FBRztJQUNiLFlBQVksRUFBRSxJQUFJO0lBQ2xCLGNBQWMsRUFBRSxLQUFLO0lBQ3JCLGlCQUFpQixFQUFFLFlBQVk7Q0FDaEM7Ozs7QUFFRCxpQ0FHQzs7O0lBRkMsOEJBQXNCOztJQUN0Qiw2QkFBOEI7OztBQUdoQyxNQUFNLE9BQU8sWUFBWSxHQUFHLElBQUksY0FBYyxDQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcblxyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAnLi9wb3J0YWwvcG9ydGFsJztcclxuaW1wb3J0IHsgVG9hc3RyUmVmIH0gZnJvbSAnLi90b2FzdHItaW5qZWN0b3InO1xyXG5cclxuZXhwb3J0IHR5cGUgUHJvZ3Jlc3NBbmltYXRpb25UeXBlID0gJ2luY3JlYXNpbmcnIHwgJ2RlY3JlYXNpbmcnO1xyXG5cclxuZXhwb3J0IGVudW0gVG9hc3RyUG9zaXRpb24ge1xyXG4gIENFTlRFUl9DRU5URVIsXHJcbiAgVE9QX0NFTlRFUixcclxuICBCT1RUT01fQ0VOVEVSLFxyXG4gIFRPUF9GVUxMX1dJRFRILFxyXG4gIEJPVFRPTV9GVUxMX1dJRFRILFxyXG4gIFRPUF9MRUZULFxyXG4gIFRPUF9SSUdIVCxcclxuICBCT1RUT01fTEVGVCxcclxuICBCT1RUT01fUklHSFRcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbmZpZ3VyYXRpb24gZm9yIGFuIGluZGl2aWR1YWwgdG9hc3QuXHJcbiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEluZGl2aWR1YWxDb25maWcge1xyXG4gIC8qKlxyXG4gICAqIGRpc2FibGUgYm90aCB0aW1lT3V0IGFuZCBleHRlbmRlZFRpbWVPdXRcclxuICAgKiBkZWZhdWx0OiBmYWxzZVxyXG4gICAqL1xyXG4gIGRpc2FibGVUaW1lT3V0OiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIHRvYXN0IHRpbWUgdG8gbGl2ZSBpbiBtaWxsaXNlY29uZHNcclxuICAgKiBkZWZhdWx0OiA1MDAwXHJcbiAgICovXHJcbiAgdGltZU91dDogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIHRvYXN0IHNob3cgY2xvc2UgYnV0dG9uXHJcbiAgICogZGVmYXVsdDogZmFsc2VcclxuICAgKi9cclxuICBjbG9zZUJ1dHRvbjogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiB0aW1lIHRvIGNsb3NlIGFmdGVyIGEgdXNlciBob3ZlcnMgb3ZlciB0b2FzdFxyXG4gICAqIGRlZmF1bHQ6IDEwMDBcclxuICAgKi9cclxuICBleHRlbmRlZFRpbWVPdXQ6IG51bWJlcjtcclxuICAvKipcclxuICAgKiBzaG93IHRvYXN0IHByb2dyZXNzIGJhclxyXG4gICAqIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICovXHJcbiAgcHJvZ3Jlc3NCYXI6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIGNoYW5nZXMgdG9hc3QgcHJvZ3Jlc3MgYmFyIGFuaW1hdGlvblxyXG4gICAqIGRlZmF1bHQ6IGRlY3JlYXNpbmdcclxuICAgKi9cclxuICBwcm9ncmVzc0FuaW1hdGlvbjogUHJvZ3Jlc3NBbmltYXRpb25UeXBlO1xyXG5cclxuICAvKipcclxuICAgKiByZW5kZXIgaHRtbCBpbiB0b2FzdCBtZXNzYWdlIChwb3NzaWJseSB1bnNhZmUpXHJcbiAgICogZGVmYXVsdDogZmFsc2VcclxuICAgKi9cclxuICBlbmFibGVIdG1sOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIGNzcyBjbGFzcyBvbiB0b2FzdCBjb21wb25lbnRcclxuICAgKiBkZWZhdWx0OiB0b2FzdFxyXG4gICAqL1xyXG4gIHRvYXN0Q2xhc3M6IHN0cmluZztcclxuICAvKipcclxuICAgKiBQb3NpdGlvbiBvZiB0b2FzdHIgY29udGFpbmVyXHJcbiAgICogZGVmYXVsdDogVG9hc3RyUG9zaXRpb24uVE9QX1JJR0hUXHJcbiAgICovXHJcbiAgcG9zaXRpb246IFRvYXN0clBvc2l0aW9uO1xyXG4gIC8qKlxyXG4gICAqIGNzcyBjbGFzcyBvbiB0b2FzdCB0aXRsZVxyXG4gICAqIGRlZmF1bHQ6IHRvYXN0LXRpdGxlXHJcbiAgICovXHJcbiAgdGl0bGVDbGFzczogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIGNzcyBjbGFzcyBvbiB0b2FzdCBtZXNzYWdlXHJcbiAgICogZGVmYXVsdDogdG9hc3QtbWVzc2FnZVxyXG4gICAqL1xyXG4gIG1lc3NhZ2VDbGFzczogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIGFuaW1hdGlvbiBlYXNpbmcgb24gdG9hc3RcclxuICAgKiBkZWZhdWx0OiBlYXNlLWluXHJcbiAgICovXHJcbiAgZWFzaW5nOiBzdHJpbmc7XHJcbiAgLyoqXHJcbiAgICogYW5pbWF0aW9uIGVhc2UgdGltZSBvbiB0b2FzdFxyXG4gICAqIGRlZmF1bHQ6IDMwMFxyXG4gICAqL1xyXG4gIGVhc2VUaW1lOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgLyoqXHJcbiAgICogY2xpY2tpbmcgb24gdG9hc3QgZGlzbWlzc2VzIGl0XHJcbiAgICogZGVmYXVsdDogdHJ1ZVxyXG4gICAqL1xyXG4gIHRhcFRvRGlzbWlzczogYm9vbGVhbjtcclxuICAvKipcclxuICAgKiBBbmd1bGFyIHRvYXN0IGNvbXBvbmVudCB0byBiZSBzaG93blxyXG4gICAqIGRlZmF1bHQ6IFRvYXN0XHJcbiAgICovXHJcbiAgdG9hc3RDb21wb25lbnQ/OiBDb21wb25lbnRUeXBlPGFueT47XHJcbiAgLyoqXHJcbiAgICogSGVscHMgc2hvdyB0b2FzdCBmcm9tIGEgd2Vic29ja2V0IG9yIGZyb20gZXZlbnQgb3V0c2lkZSBBbmd1bGFyXHJcbiAgICogZGVmYXVsdDogZmFsc2VcclxuICAgKi9cclxuICBvbkFjdGl2YXRlVGljazogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUb2FzdHJJY29uQ2xhc3NlcyB7XHJcbiAgbm9uZTogc3RyaW5nO1xyXG4gIGVycm9yOiBzdHJpbmc7XHJcbiAgaW5mbzogc3RyaW5nO1xyXG4gIHN1Y2Nlc3M6IHN0cmluZztcclxuICB3YXJuaW5nOiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBHbG9iYWwgVG9hc3QgY29uZmlndXJhdGlvblxyXG4gKiBJbmNsdWRlcyBhbGwgSW5kaXZpZHVhbENvbmZpZ1xyXG4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBHbG9iYWxDb25maWcgZXh0ZW5kcyBJbmRpdmlkdWFsQ29uZmlnIHtcclxuICAvKipcclxuICAgKiBtYXggdG9hc3RzIG9wZW5lZC4gVG9hc3RzIHdpbGwgYmUgcXVldWVkXHJcbiAgICogWmVybyBpcyB1bmxpbWl0ZWRcclxuICAgKiBkZWZhdWx0OiAwXHJcbiAgICovXHJcbiAgbWF4T3BlbmVkOiBudW1iZXI7XHJcbiAgLyoqXHJcbiAgICogZGlzbWlzcyBjdXJyZW50IHRvYXN0IHdoZW4gbWF4IGlzIHJlYWNoZWRcclxuICAgKiBkZWZhdWx0OiBmYWxzZVxyXG4gICAqL1xyXG4gIGF1dG9EaXNtaXNzOiBib29sZWFuO1xyXG4gIGljb25DbGFzc2VzOiBQYXJ0aWFsPFRvYXN0ckljb25DbGFzc2VzPjtcclxuICAvKipcclxuICAgKiBOZXcgdG9hc3QgcGxhY2VtZW50XHJcbiAgICogZGVmYXVsdDogdHJ1ZVxyXG4gICAqL1xyXG4gIG5ld2VzdE9uVG9wOiBib29sZWFuO1xyXG4gIC8qKlxyXG4gICAqIGJsb2NrIGR1cGxpY2F0ZSBtZXNzYWdlc1xyXG4gICAqIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICovXHJcbiAgcHJldmVudER1cGxpY2F0ZXM6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlc2V0IHRvYXN0IHRpbWVvdXQgd2hlbiB0aGVyZSdzIGEgZHVwbGljYXRlIChwcmV2ZW50RHVwbGljYXRlcyBuZWVkcyB0byBiZSBzZXQgdG8gdHJ1ZSlcclxuICAgKiBkZWZhdWx0OiBmYWxzZVxyXG4gICAqL1xyXG4gIHJlc2V0VGltZW91dE9uRHVwbGljYXRlOiBib29sZWFuO1xyXG59XHJcblxyXG4vKipcclxuICogRXZlcnl0aGluZyBhIHRvYXN0IG5lZWRzIHRvIGxhdW5jaFxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFRvYXN0UGFja2FnZSB7XHJcbiAgcHJpdmF0ZSBfb25UYXAgPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcbiAgcHJpdmF0ZSBfb25BY3Rpb24gPSBuZXcgU3ViamVjdDxhbnk+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIHRvYXN0SWQ6IG51bWJlcixcclxuICAgIHB1YmxpYyBjb25maWc6IEluZGl2aWR1YWxDb25maWcsXHJcbiAgICBwdWJsaWMgbWVzc2FnZTogc3RyaW5nIHwgU2FmZUh0bWwgfCBudWxsIHwgdW5kZWZpbmVkLFxyXG4gICAgcHVibGljIHRpdGxlOiBzdHJpbmcgfCB1bmRlZmluZWQsXHJcbiAgICBwdWJsaWMgdG9hc3RUeXBlOiBzdHJpbmcsXHJcbiAgICBwdWJsaWMgdG9hc3RSZWY6IFRvYXN0clJlZjxhbnk+LFxyXG4gICkge1xyXG4gICAgdGhpcy50b2FzdFJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgIHRoaXMuX29uQWN0aW9uLmNvbXBsZXRlKCk7XHJcbiAgICAgIHRoaXMuX29uVGFwLmNvbXBsZXRlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBGaXJlZCBvbiBjbGljayAqL1xyXG4gIHRyaWdnZXJUYXAoKSB7XHJcbiAgICB0aGlzLl9vblRhcC5uZXh0KCk7XHJcbiAgICBpZiAodGhpcy5jb25maWcudGFwVG9EaXNtaXNzKSB7XHJcbiAgICAgIHRoaXMuX29uVGFwLmNvbXBsZXRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvblRhcCgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29uVGFwLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIGF2YWlsYWJsZSBmb3IgdXNlIGluIGN1c3RvbSB0b2FzdCAqL1xyXG4gIHRyaWdnZXJBY3Rpb24oYWN0aW9uPzogYW55KSB7XHJcbiAgICB0aGlzLl9vbkFjdGlvbi5uZXh0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBvbkFjdGlvbigpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX29uQWN0aW9uLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxufVxyXG5cclxuLyogdHNsaW50OmRpc2FibGU6bm8tZW1wdHktaW50ZXJmYWNlICovXHJcbi8qKiBAZGVwcmVjYXRlZCB1c2UgR2xvYmFsQ29uZmlnICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgR2xvYmFsVG9hc3RyQ29uZmlnIGV4dGVuZHMgR2xvYmFsQ29uZmlnIHt9XHJcbi8qKiBAZGVwcmVjYXRlZCB1c2UgSW5kaXZpZHVhbENvbmZpZyAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIEluZGl2aWR1YWxUb2FzdHJDb25maWcgZXh0ZW5kcyBJbmRpdmlkdWFsQ29uZmlnIHt9XHJcbi8qKiBAZGVwcmVjYXRlZCB1c2UgSW5kaXZpZHVhbENvbmZpZyAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFRvYXN0ckNvbmZpZyBleHRlbmRzIEluZGl2aWR1YWxDb25maWcge31cclxuXHJcbmV4cG9ydCBjb25zdCBEZWZhdWx0Tm9Db21wb25lbnRHbG9iYWxDb25maWc6IEdsb2JhbENvbmZpZyA9IHtcclxuICBtYXhPcGVuZWQ6IDAsXHJcbiAgYXV0b0Rpc21pc3M6IGZhbHNlLFxyXG4gIG5ld2VzdE9uVG9wOiB0cnVlLFxyXG4gIHByZXZlbnREdXBsaWNhdGVzOiBmYWxzZSxcclxuICByZXNldFRpbWVvdXRPbkR1cGxpY2F0ZTogZmFsc2UsXHJcbiAgaWNvbkNsYXNzZXM6IHtcclxuICAgIG5vbmU6ICcnLFxyXG4gICAgZXJyb3I6ICdpcy1lcnJvcicsXHJcbiAgICBpbmZvOiAnaXMtaW5mbycsXHJcbiAgICBzdWNjZXNzOiAnaXMtc3VjY2VzcycsXHJcbiAgICB3YXJuaW5nOiAnaXMtd2FybmluZycsXHJcbiAgfSxcclxuXHJcbiAgLy8gSW5kaXZpZHVhbFxyXG4gIGNsb3NlQnV0dG9uOiBmYWxzZSxcclxuICBkaXNhYmxlVGltZU91dDogZmFsc2UsXHJcbiAgdGltZU91dDogNTAwMCxcclxuICBleHRlbmRlZFRpbWVPdXQ6IDEwMDAsXHJcbiAgZW5hYmxlSHRtbDogZmFsc2UsXHJcbiAgcHJvZ3Jlc3NCYXI6IGZhbHNlLFxyXG4gIHRvYXN0Q2xhc3M6ICdoeC1hbGVydCcsXHJcbiAgcG9zaXRpb246IFRvYXN0clBvc2l0aW9uLlRPUF9SSUdIVCxcclxuICB0aXRsZUNsYXNzOiAndG9hc3QtdGl0bGUnLFxyXG4gIG1lc3NhZ2VDbGFzczogJ3RvYXN0LW1lc3NhZ2UnLFxyXG4gIGVhc2luZzogJ2Vhc2UtaW4nLFxyXG4gIGVhc2VUaW1lOiAzMDAsXHJcbiAgdGFwVG9EaXNtaXNzOiB0cnVlLFxyXG4gIG9uQWN0aXZhdGVUaWNrOiBmYWxzZSxcclxuICBwcm9ncmVzc0FuaW1hdGlvbjogJ2RlY3JlYXNpbmcnLFxyXG59O1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUb2FzdHJUb2tlbiB7XHJcbiAgZGVmYXVsdDogR2xvYmFsQ29uZmlnO1xyXG4gIGNvbmZpZzogUGFydGlhbDxHbG9iYWxDb25maWc+O1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgVE9BU1RfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPFRvYXN0clRva2VuPignVG9hc3RyQ29uZmlnJyk7XHJcbiJdfQ==