UNPKG

ngx-moveable

Version:

An Angular Component that create Moveable, Draggable, Resizable, Scalable, Rotatable, Warpable, Pinchable, Groupable, Snappable.

370 lines 27.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Component, Input, EventEmitter, Output } from '@angular/core'; import Moveable, { PROPERTIES, EVENTS, } from 'moveable'; import { NgxMoveableInterface } from './ngx-moveable.interface'; // @dynamic export class NgxMoveableComponent extends NgxMoveableInterface { constructor() { super(); EVENTS.forEach((/** * @param {?} name * @return {?} */ name => { this[name] = new EventEmitter(); })); } /** * @return {?} */ ngOnInit() { /** @type {?} */ const options = {}; /** @type {?} */ const events = {}; PROPERTIES.forEach((/** * @param {?} name * @return {?} */ name => { ((/** @type {?} */ (options)))[name] = this[name]; })); EVENTS.forEach((/** * @param {?} name * @return {?} */ name => { events[name] = (/** * @param {?} e * @return {?} */ e => { this[name].emit(e); }); })); this.moveable = new Moveable(this.container || document.body, options); this.moveable.on(events); } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { /** @type {?} */ const moveable = this.moveable; if (!moveable) { return; } for (const name in changes) { const { previousValue, currentValue } = changes[name]; if (previousValue === currentValue) { continue; } moveable[name] = currentValue; } } /** * @return {?} */ ngOnDestroy() { this.moveable.destroy(); } } NgxMoveableComponent.decorators = [ { type: Component, args: [{ selector: 'ngx-moveable', template: '' }] } ]; /** @nocollapse */ NgxMoveableComponent.ctorParameters = () => []; NgxMoveableComponent.propDecorators = { draggable: [{ type: Input }], resizable: [{ type: Input }], scalable: [{ type: Input }], rotatable: [{ type: Input }], warpable: [{ type: Input }], pinchable: [{ type: Input }], snappable: [{ type: Input }], origin: [{ type: Input }], target: [{ type: Input }], container: [{ type: Input }], throttleDrag: [{ type: Input }], throttleDragRotate: [{ type: Input }], throttleResize: [{ type: Input }], throttleScale: [{ type: Input }], throttleRotate: [{ type: Input }], keepRatio: [{ type: Input }], edge: [{ type: Input }], pinchThreshold: [{ type: Input }], snapCenter: [{ type: Input }], snapVertical: [{ type: Input }], snapElement: [{ type: Input }], snapHorizontal: [{ type: Input }], snapThreshold: [{ type: Input }], horizontalGuidelines: [{ type: Input }], verticalGuidelines: [{ type: Input }], elementGuidelines: [{ type: Input }], bounds: [{ type: Input }], dragArea: [{ type: Input }], rotationPosition: [{ type: Input }], baseDirection: [{ type: Input }], defaultGroupRotate: [{ type: Input }], ables: [{ type: Input }], className: [{ type: Input }], renderDirections: [{ type: Input }], scrollable: [{ type: Input }], scrollContainer: [{ type: Input }], scrollThreshold: [{ type: Input }], getScrollPosition: [{ type: Input }], rootContainer: [{ type: Input }], zoom: [{ type: Input }], transformOrigin: [{ type: Input }], snapDigit: [{ type: Input }], isDisplaySnapDigit: [{ type: Input }], innerBounds: [{ type: Input }], triggerAblesSimultaneously: [{ type: Input }], snapGap: [{ type: Input }], pinchOutside: [{ type: Input }], padding: [{ type: Input }], snapDistFormat: [{ type: Input }], dragTarget: [{ type: Input }], dragStart: [{ type: Output }], drag: [{ type: Output }], dragEnd: [{ type: Output }], dragGroupStart: [{ type: Output }], dragGroup: [{ type: Output }], dragGroupEnd: [{ type: Output }], resizeStart: [{ type: Output }], resize: [{ type: Output }], resizeEnd: [{ type: Output }], resizeGroupStart: [{ type: Output }], resizeGroup: [{ type: Output }], resizeGroupEnd: [{ type: Output }], scaleStart: [{ type: Output }], scale: [{ type: Output }], scaleEnd: [{ type: Output }], scaleGroupStart: [{ type: Output }], scaleGroup: [{ type: Output }], scaleGroupEnd: [{ type: Output }], rotateStart: [{ type: Output }], rotate: [{ type: Output }], rotateEnd: [{ type: Output }], rotateGroupStart: [{ type: Output }], rotateGroup: [{ type: Output }], rotateGroupEnd: [{ type: Output }], warpStart: [{ type: Output }], warp: [{ type: Output }], warpEnd: [{ type: Output }], pinchStart: [{ type: Output }], pinch: [{ type: Output }], pinchEnd: [{ type: Output }], pinchGroupStart: [{ type: Output }], pinchGroup: [{ type: Output }], pinchGroupEnd: [{ type: Output }], click: [{ type: Output }], clickGroup: [{ type: Output }], renderStart: [{ type: Output }], render: [{ type: Output }], renderEnd: [{ type: Output }], renderGroupStart: [{ type: Output }], renderGroup: [{ type: Output }], renderGroupEnd: [{ type: Output }], scroll: [{ type: Output }], scrollGroup: [{ type: Output }], snap: [{ type: Output }] }; if (false) { /** @type {?} */ NgxMoveableComponent.prototype.draggable; /** @type {?} */ NgxMoveableComponent.prototype.resizable; /** @type {?} */ NgxMoveableComponent.prototype.scalable; /** @type {?} */ NgxMoveableComponent.prototype.rotatable; /** @type {?} */ NgxMoveableComponent.prototype.warpable; /** @type {?} */ NgxMoveableComponent.prototype.pinchable; /** @type {?} */ NgxMoveableComponent.prototype.snappable; /** @type {?} */ NgxMoveableComponent.prototype.origin; /** @type {?} */ NgxMoveableComponent.prototype.target; /** @type {?} */ NgxMoveableComponent.prototype.container; /** @type {?} */ NgxMoveableComponent.prototype.throttleDrag; /** @type {?} */ NgxMoveableComponent.prototype.throttleDragRotate; /** @type {?} */ NgxMoveableComponent.prototype.throttleResize; /** @type {?} */ NgxMoveableComponent.prototype.throttleScale; /** @type {?} */ NgxMoveableComponent.prototype.throttleRotate; /** @type {?} */ NgxMoveableComponent.prototype.keepRatio; /** @type {?} */ NgxMoveableComponent.prototype.edge; /** @type {?} */ NgxMoveableComponent.prototype.pinchThreshold; /** @type {?} */ NgxMoveableComponent.prototype.snapCenter; /** @type {?} */ NgxMoveableComponent.prototype.snapVertical; /** @type {?} */ NgxMoveableComponent.prototype.snapElement; /** @type {?} */ NgxMoveableComponent.prototype.snapHorizontal; /** @type {?} */ NgxMoveableComponent.prototype.snapThreshold; /** @type {?} */ NgxMoveableComponent.prototype.horizontalGuidelines; /** @type {?} */ NgxMoveableComponent.prototype.verticalGuidelines; /** @type {?} */ NgxMoveableComponent.prototype.elementGuidelines; /** @type {?} */ NgxMoveableComponent.prototype.bounds; /** @type {?} */ NgxMoveableComponent.prototype.dragArea; /** @type {?} */ NgxMoveableComponent.prototype.rotationPosition; /** @type {?} */ NgxMoveableComponent.prototype.baseDirection; /** @type {?} */ NgxMoveableComponent.prototype.defaultGroupRotate; /** @type {?} */ NgxMoveableComponent.prototype.ables; /** @type {?} */ NgxMoveableComponent.prototype.className; /** @type {?} */ NgxMoveableComponent.prototype.renderDirections; /** @type {?} */ NgxMoveableComponent.prototype.scrollable; /** @type {?} */ NgxMoveableComponent.prototype.scrollContainer; /** @type {?} */ NgxMoveableComponent.prototype.scrollThreshold; /** @type {?} */ NgxMoveableComponent.prototype.getScrollPosition; /** @type {?} */ NgxMoveableComponent.prototype.rootContainer; /** @type {?} */ NgxMoveableComponent.prototype.zoom; /** @type {?} */ NgxMoveableComponent.prototype.transformOrigin; /** @type {?} */ NgxMoveableComponent.prototype.snapDigit; /** @type {?} */ NgxMoveableComponent.prototype.isDisplaySnapDigit; /** @type {?} */ NgxMoveableComponent.prototype.innerBounds; /** @type {?} */ NgxMoveableComponent.prototype.triggerAblesSimultaneously; /** @type {?} */ NgxMoveableComponent.prototype.snapGap; /** @type {?} */ NgxMoveableComponent.prototype.pinchOutside; /** @type {?} */ NgxMoveableComponent.prototype.padding; /** @type {?} */ NgxMoveableComponent.prototype.snapDistFormat; /** @type {?} */ NgxMoveableComponent.prototype.dragTarget; /** @type {?} */ NgxMoveableComponent.prototype.dragStart; /** @type {?} */ NgxMoveableComponent.prototype.drag; /** @type {?} */ NgxMoveableComponent.prototype.dragEnd; /** @type {?} */ NgxMoveableComponent.prototype.dragGroupStart; /** @type {?} */ NgxMoveableComponent.prototype.dragGroup; /** @type {?} */ NgxMoveableComponent.prototype.dragGroupEnd; /** @type {?} */ NgxMoveableComponent.prototype.resizeStart; /** @type {?} */ NgxMoveableComponent.prototype.resize; /** @type {?} */ NgxMoveableComponent.prototype.resizeEnd; /** @type {?} */ NgxMoveableComponent.prototype.resizeGroupStart; /** @type {?} */ NgxMoveableComponent.prototype.resizeGroup; /** @type {?} */ NgxMoveableComponent.prototype.resizeGroupEnd; /** @type {?} */ NgxMoveableComponent.prototype.scaleStart; /** @type {?} */ NgxMoveableComponent.prototype.scale; /** @type {?} */ NgxMoveableComponent.prototype.scaleEnd; /** @type {?} */ NgxMoveableComponent.prototype.scaleGroupStart; /** @type {?} */ NgxMoveableComponent.prototype.scaleGroup; /** @type {?} */ NgxMoveableComponent.prototype.scaleGroupEnd; /** @type {?} */ NgxMoveableComponent.prototype.rotateStart; /** @type {?} */ NgxMoveableComponent.prototype.rotate; /** @type {?} */ NgxMoveableComponent.prototype.rotateEnd; /** @type {?} */ NgxMoveableComponent.prototype.rotateGroupStart; /** @type {?} */ NgxMoveableComponent.prototype.rotateGroup; /** @type {?} */ NgxMoveableComponent.prototype.rotateGroupEnd; /** @type {?} */ NgxMoveableComponent.prototype.warpStart; /** @type {?} */ NgxMoveableComponent.prototype.warp; /** @type {?} */ NgxMoveableComponent.prototype.warpEnd; /** @type {?} */ NgxMoveableComponent.prototype.pinchStart; /** @type {?} */ NgxMoveableComponent.prototype.pinch; /** @type {?} */ NgxMoveableComponent.prototype.pinchEnd; /** @type {?} */ NgxMoveableComponent.prototype.pinchGroupStart; /** @type {?} */ NgxMoveableComponent.prototype.pinchGroup; /** @type {?} */ NgxMoveableComponent.prototype.pinchGroupEnd; /** @type {?} */ NgxMoveableComponent.prototype.click; /** @type {?} */ NgxMoveableComponent.prototype.clickGroup; /** @type {?} */ NgxMoveableComponent.prototype.renderStart; /** @type {?} */ NgxMoveableComponent.prototype.render; /** @type {?} */ NgxMoveableComponent.prototype.renderEnd; /** @type {?} */ NgxMoveableComponent.prototype.renderGroupStart; /** @type {?} */ NgxMoveableComponent.prototype.renderGroup; /** @type {?} */ NgxMoveableComponent.prototype.renderGroupEnd; /** @type {?} */ NgxMoveableComponent.prototype.scroll; /** @type {?} */ NgxMoveableComponent.prototype.scrollGroup; /** @type {?} */ NgxMoveableComponent.prototype.snap; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LW1vdmVhYmxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1tb3ZlYWJsZS8iLCJzb3VyY2VzIjpbIm5neC1tb3ZlYWJsZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsS0FBSyxFQUNrQixZQUFZLEVBQUUsTUFBTSxFQUN2RCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLFFBQVEsRUFBRSxFQUNmLFVBQVUsRUFBRSxNQUFNLEdBRW5CLE1BQU0sVUFBVSxDQUFDO0FBSWxCLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOztBQVFoRSxNQUFNLE9BQU8sb0JBQ1gsU0FBUSxvQkFBb0I7SUErRzVCO1FBQ0UsS0FBSyxFQUFFLENBQUM7UUFDUixNQUFNLENBQUMsT0FBTzs7OztRQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ3ZDLENBQUMsRUFBQyxDQUFDO0lBQ0wsQ0FBQzs7OztJQUNELFFBQVE7O2NBQ0EsT0FBTyxHQUFvQixFQUFFOztjQUM3QixNQUFNLEdBQWlCLEVBQUU7UUFFL0IsVUFBVSxDQUFDLE9BQU87Ozs7UUFBQyxJQUFJLENBQUMsRUFBRTtZQUN4QixDQUFDLG1CQUFBLE9BQU8sRUFBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RDLENBQUMsRUFBQyxDQUFDO1FBQ0gsTUFBTSxDQUFDLE9BQU87Ozs7UUFBQyxJQUFJLENBQUMsRUFBRTtZQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDOzs7O1lBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckIsQ0FBQyxDQUFBLENBQUM7UUFDSixDQUFDLEVBQUMs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QW1FOztJQUVuRSwwQ0FBeUU7O0lBQ3pFLHFDQUErRDs7SUFDL0Qsd0NBQXFFOztJQUNyRSwrQ0FBbUY7O0lBQ25GLDBDQUF5RTs7SUFDekUsNkNBQStFOztJQUUvRSxxQ0FBK0Q7O0lBQy9ELDBDQUF5RTs7SUFFekUsMkNBQTJFOztJQUMzRSxzQ0FBaUU7O0lBQ2pFLHlDQUF1RTs7SUFDdkUsZ0RBQXFGOztJQUNyRiwyQ0FBMkU7O0lBQzNFLDhDQUFpRjs7SUFFakYsc0NBQWlEOztJQUNqRCwyQ0FBMkQ7O0lBRTNELG9DQUE2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgSW5wdXQsIE9uRGVzdHJveSxcbiAgT25Jbml0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMsIEV2ZW50RW1pdHRlciwgT3V0cHV0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IE1vdmVhYmxlLCB7XG4gIFBST1BFUlRJRVMsIEVWRU5UUywgTW92ZWFibGVPcHRpb25zLFxuICBPblNjcm9sbEdyb3VwLCBPblNjcm9sbCwgTW92ZWFibGVFdmVudHMsIE9uU25hcCxcbn0gZnJvbSAnbW92ZWFibGUnO1xuaW1wb3J0IHsgSU9iamVjdCB9IGZyb20gJ0BkYXlicnVzaC91dGlscyc7XG5pbXBvcnQgeyBOZ3hNb3ZlYWJsZUV2ZW50cyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQWJsZSB9IGZyb20gJ21vdmVhYmxlJztcbmltcG9ydCB7IE5neE1vdmVhYmxlSW50ZXJmYWNlIH0gZnJvbSAnLi9uZ3gtbW92ZWFibGUuaW50ZXJmYWNlJztcblxuXG4vLyBAZHluYW1pY1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmd4LW1vdmVhYmxlJyxcbiAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBjbGFzcyBOZ3hNb3ZlYWJsZUNvbXBvbmVudFxuICBleHRlbmRzIE5neE1vdmVhYmxlSW50ZXJmYWNlXG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcywgUmVxdWlyZWQ8TW92ZWFibGVPcHRpb25zPiwgTmd4TW92ZWFibGVFdmVudHMge1xuICBASW5wdXQoKSBwdWJsaWMgZHJhZ2dhYmxlITogTW92ZWFibGVPcHRpb25zWydkcmFnZ2FibGUnXTtcbiAgQElucHV0KCkgcHVibGljIHJlc2l6YWJsZSE6IE1vdmVhYmxlT3B0aW9uc1sncmVzaXphYmxlJ107XG4gIEBJbnB1dCgpIHB1YmxpYyBzY2FsYWJsZSE6IE1vdmVhYmxlT3B0aW9uc1snc2NhbGFibGUnXTtcbiAgQElucHV0KCkgcHVibGljIHJvdGF0YWJsZSE6IE1vdmVhYmxlT3B0aW9uc1sncm90YXRhYmxlJ107XG4gIEBJbnB1dCgpIHB1YmxpYyB3YXJwYWJsZSE6IE1vdmVhYmxlT3B0aW9uc1snd2FycGFibGUnXTtcbiAgQElucHV0KCkgcHVibGljIHBpbmNoYWJsZSE6IGJvb2xlYW4gfCBBcnJheTwncm90YXRhYmxlJyB8ICdyZXNpemFibGUnIHwgJ3NjYWxhYmxlJz47XG4gIEBJbnB1dCgpIHB1YmxpYyBzbmFwcGFibGUhOiBib29sZWFuIHwgc3RyaW5nW107XG4gIEBJbnB1dCgpIHB1YmxpYyBvcmlnaW4hOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgdGFyZ2V0ITogU1ZHRWxlbWVudCB8IEhUTUxFbGVtZW50IHwgQXJyYXk8U1ZHRWxlbWVudCB8IEhUTUxFbGVtZW50PjtcbiAgQElucHV0KCkgcHVibGljIGNvbnRhaW5lciE6IFNWR0VsZW1lbnQgfCBIVE1MRWxlbWVudCB8IG51bGw7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aHJvdHRsZURyYWchOiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aHJvdHRsZURyYWdSb3RhdGUhOiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aHJvdHRsZVJlc2l6ZSE6IG51bWJlcjtcbiAgQElucHV0KCkgcHVibGljIHRocm90dGxlU2NhbGUhOiBudW1iZXI7XG4gIEBJbnB1dCgpIHB1YmxpYyB0aHJvdHRsZVJvdGF0ZSE6IG51bWJlcjtcbiAgQElucHV0KCkgcHVibGljIGtlZXBSYXRpbyE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBlZGdlITogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIHBpbmNoVGhyZXNob2xkITogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgc25hcENlbnRlciE6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHB1YmxpYyBzbmFwVmVydGljYWwhOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgc25hcEVsZW1lbnQhOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgc25hcEhvcml6b250YWwhOiBib29sZWFuO1xuICBASW5wdXQoKSBwdWJsaWMgc25hcFRocmVzaG9sZCE6IG51bWJlcjtcbiAgQElucHV0KCkgcHVibGljIGhvcml6b250YWxHdWlkZWxpbmVzITogbnVtYmVyW107XG4gIEBJbnB1dCgpIHB1YmxpYyB2ZXJ0aWNhbEd1aWRlbGluZXMhOiBudW1iZXJbXTtcbiAgQElucHV0KCkgcHVibGljIGVsZW1lbnRHdWlkZWxpbmVzITogRWxlbWVudFtdO1xuICBASW5wdXQoKSBwdWJsaWMgYm91bmRzITogeyBsZWZ0PzogbnVtYmVyLCB0b3A/OiBudW1iZXIsIHJpZ2h0PzogbnVtYmVyLCBib3R0b20/OiBudW1iZXIgfTtcbiAgQElucHV0KCkgcHVibGljIGRyYWdBcmVhITogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIHJvdGF0aW9uUG9zaXRpb24hOiAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgQElucHV0KCkgcHVibGljIGJhc2VEaXJlY3Rpb24hOiBudW1iZXJbXTtcbiAgQElucHV0KCkgcHVibGljIGRlZmF1bHRHcm91cFJvdGF0ZSE6IG51bWJlcjtcbiAgQElucHV0KCkgcHVibGljIGFibGVzITogQWJsZVtdO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBjbGFzc05hbWUhOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHB1YmxpYyByZW5kZXJEaXJlY3Rpb25zITogc3RyaW5nW107XG4gIEBJbnB1dCgpIHB1YmxpYyBzY3JvbGxhYmxlITogYm9vbGVhbjtcbiAgQElucHV0KCkgcHVibGljIHNjcm9sbENvbnRhaW5lciE6IEhUTUxFbGVtZW50O1xuICBASW5wdXQoKSBwdWJsaWMgc2Nyb2xsVGhyZXNob2xkITogbnVtYmVyO1xuICBASW5wdXQoKSBwdWJsaWMgZ2V0U2Nyb2xsUG9zaXRpb24hOiBNb3ZlYWJsZU9wdGlvbnNbJ2dldFNjcm9sbFBvc2l0aW9uJ107XG5cbiAgQElucHV0KCkgcHVibGljIHJvb3RDb250YWluZXIhOiBNb3ZlYWJsZU9wdGlvbnNbJ3Jvb3RDb250YWluZXInXTtcbiAgQElucHV0KCkgcHVibGljIHpvb20hOiBNb3ZlYWJsZU9wdGlvbnNbJ3pvb20nXTtcbiAgQElucHV0KCkgcHVibGljIHRyYW5zZm9ybU9yaWdpbiE6IE1vdmVhYmxlT3B0aW9uc1sndHJhbnNmb3JtT3JpZ2luJ107XG4gIEBJbnB1dCgpIHB1YmxpYyBzbmFwRGlnaXQhOiBNb3ZlYWJsZU9wdGlvbnNbJ3NuYXBEaWdpdCddO1xuICBASW5wdXQoKSBwdWJsaWMgaXNEaXNwbGF5U25hcERpZ2l0ITogTW92ZWFibGVPcHRpb25zWydpc0Rpc3BsYXlTbmFwRGlnaXQnXTtcbiAgQElucHV0KCkgcHVibGljIGlubmVyQm91bmRzITogTW92ZWFibGVPcHRpb25zWydpbm5lckJvdW5kcyddO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyB0cmlnZ2VyQWJsZXNTaW11bHRhbmVvdXNseSE6IE1vdmVhYmxlT3B0aW9uc1sndHJpZ2dlckFibGVzU2ltdWx0YW5lb3VzbHknXTtcbiAgQElucHV0KCkgcHVibGljIHNuYXBHYXAhOiBNb3ZlYWJsZU9wdGlvbnNbJ3NuYXBHYXAnXTtcblxuICBASW5wdXQoKSBwdWJsaWMgcGluY2hPdXRzaWRlITogTW92ZWFibGVPcHRpb25zWydwaW5jaE91dHNpZGUnXTtcbiAgQElucHV0KCkgcHVibGljIHBhZGRpbmchOiBNb3ZlYWJsZU9wdGlvbnNbJ3BhZGRpbmcnXTtcbiAgQElucHV0KCkgcHVibGljIHNuYXBEaXN0Rm9ybWF0ITogTW92ZWFibGVPcHRpb25zWydzbmFwRGlzdEZvcm1hdCddO1xuICBASW5wdXQoKSBwdWJsaWMgZHJhZ1RhcmdldCE6IE1vdmVhYmxlT3B0aW9uc1snZHJhZ1RhcmdldCddO1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgZHJhZ1N0YXJ0ITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydkcmFnU3RhcnQnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgZHJhZyE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snZHJhZyddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyBkcmFnRW5kITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydkcmFnRW5kJ10+O1xuICBAT3V0cHV0KCkgcHVibGljIGRyYWdHcm91cFN0YXJ0ITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydkcmFnR3JvdXBTdGFydCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyBkcmFnR3JvdXAhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ2RyYWdHcm91cCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyBkcmFnR3JvdXBFbmQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ2RyYWdHcm91cEVuZCddPjtcblxuICBAT3V0cHV0KCkgcHVibGljIHJlc2l6ZVN0YXJ0ITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyZXNpemVTdGFydCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByZXNpemUhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3Jlc2l6ZSddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByZXNpemVFbmQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3Jlc2l6ZUVuZCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByZXNpemVHcm91cFN0YXJ0ITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyZXNpemVHcm91cFN0YXJ0J10+O1xuICBAT3V0cHV0KCkgcHVibGljIHJlc2l6ZUdyb3VwITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyZXNpemVHcm91cCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByZXNpemVHcm91cEVuZCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1sncmVzaXplR3JvdXBFbmQnXT47XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBzY2FsZVN0YXJ0ITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydzY2FsZVN0YXJ0J10+O1xuICBAT3V0cHV0KCkgcHVibGljIHNjYWxlITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydzY2FsZSddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyBzY2FsZUVuZCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snc2NhbGVFbmQnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2NhbGVHcm91cFN0YXJ0ITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydzY2FsZUdyb3VwU3RhcnQnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2NhbGVHcm91cCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snc2NhbGVHcm91cCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyBzY2FsZUdyb3VwRW5kITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydzY2FsZUdyb3VwRW5kJ10+O1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgcm90YXRlU3RhcnQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3JvdGF0ZVN0YXJ0J10+O1xuICBAT3V0cHV0KCkgcHVibGljIHJvdGF0ZSE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1sncm90YXRlJ10+O1xuICBAT3V0cHV0KCkgcHVibGljIHJvdGF0ZUVuZCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1sncm90YXRlRW5kJ10+O1xuICBAT3V0cHV0KCkgcHVibGljIHJvdGF0ZUdyb3VwU3RhcnQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3JvdGF0ZUdyb3VwU3RhcnQnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcm90YXRlR3JvdXAhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3JvdGF0ZUdyb3VwJ10+O1xuICBAT3V0cHV0KCkgcHVibGljIHJvdGF0ZUdyb3VwRW5kITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyb3RhdGVHcm91cEVuZCddPjtcblxuICBAT3V0cHV0KCkgcHVibGljIHdhcnBTdGFydCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snd2FycFN0YXJ0J10+O1xuICBAT3V0cHV0KCkgcHVibGljIHdhcnAhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3dhcnAnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgd2FycEVuZCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snd2FycEVuZCddPjtcblxuICBAT3V0cHV0KCkgcHVibGljIHBpbmNoU3RhcnQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3BpbmNoU3RhcnQnXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgcGluY2ghOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3BpbmNoJ10+O1xuICBAT3V0cHV0KCkgcHVibGljIHBpbmNoRW5kITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydwaW5jaEVuZCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyBwaW5jaEdyb3VwU3RhcnQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3BpbmNoR3JvdXBTdGFydCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyBwaW5jaEdyb3VwITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydwaW5jaEdyb3VwJ10+O1xuICBAT3V0cHV0KCkgcHVibGljIHBpbmNoR3JvdXBFbmQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3BpbmNoR3JvdXBFbmQnXT47XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBjbGljayE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snY2xpY2snXT47XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2xpY2tHcm91cCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1snY2xpY2tHcm91cCddPjtcblxuICBAT3V0cHV0KCkgcHVibGljIHJlbmRlclN0YXJ0ITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyZW5kZXJTdGFydCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByZW5kZXIhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3JlbmRlciddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByZW5kZXJFbmQhOiBFdmVudEVtaXR0ZXI8TW92ZWFibGVFdmVudHNbJ3JlbmRlckVuZCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByZW5kZXJHcm91cFN0YXJ0ITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyZW5kZXJHcm91cFN0YXJ0J10+O1xuICBAT3V0cHV0KCkgcHVibGljIHJlbmRlckdyb3VwITogRXZlbnRFbWl0dGVyPE1vdmVhYmxlRXZlbnRzWydyZW5kZXJHcm91cCddPjtcbiAgQE91dHB1dCgpIHB1YmxpYyByZW5kZXJHcm91cEVuZCE6IEV2ZW50RW1pdHRlcjxNb3ZlYWJsZUV2ZW50c1sncmVuZGVyR3JvdXBFbmQnXT47XG5cbiAgQE91dHB1dCgpIHB1YmxpYyBzY3JvbGwhOiBFdmVudEVtaXR0ZXI8T25TY3JvbGw+O1xuICBAT3V0cHV0KCkgcHVibGljIHNjcm9sbEdyb3VwITogRXZlbnRFbWl0dGVyPE9uU2Nyb2xsR3JvdXA+O1xuXG4gIEBPdXRwdXQoKSBwdWJsaWMgc25hcCE6IEV2ZW50RW1pdHRlcjxPblNuYXA+O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gICAgRVZFTlRTLmZvckVhY2gobmFtZSA9PiB7XG4gICAgICB0aGlzW25hbWVdID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gICAgfSk7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9uczogTW92ZWFibGVPcHRpb25zID0ge307XG4gICAgY29uc3QgZXZlbnRzOiBJT2JqZWN0PGFueT4gPSB7fTtcblxuICAgIFBST1BFUlRJRVMuZm9yRWFjaChuYW1lID0+IHtcbiAgICAgIChvcHRpb25zIGFzIGFueSlbbmFtZV0gPSB0aGlzW25hbWVdO1xuICAgIH0pO1xuICAgIEVWRU5UUy5mb3JFYWNoKG5hbWUgPT4ge1xuICAgICAgZXZlbnRzW25hbWVdID0gZSA9PiB7XG4gICAgICAgIHRoaXNbbmFtZV0uZW1pdChlKTtcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICB0aGlzLm1vdmVhYmxlID0gbmV3IE1vdmVhYmxlKHRoaXMuY29udGFpbmVyIHx8IGRvY3VtZW50LmJvZHksIG9wdGlvbnMpO1xuICAgIHRoaXMubW92ZWFibGUub24oZXZlbnRzKTtcbiAgfVxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgbW92ZWFibGUgPSB0aGlzLm1vdmVhYmxlO1xuXG4gICAgaWYgKCFtb3ZlYWJsZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IG5hbWUgaW4gY2hhbmdlcykge1xuICAgICAgY29uc3QgeyBwcmV2aW91c1ZhbHVlLCBjdXJyZW50VmFsdWUgfSA9IGNoYW5nZXNbbmFtZV07XG5cbiAgICAgIGlmIChwcmV2aW91c1ZhbHVlID09PSBjdXJyZW50VmFsdWUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBtb3ZlYWJsZVtuYW1lXSA9IGN1cnJlbnRWYWx1ZTtcbiAgICB9XG4gIH1cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5tb3ZlYWJsZS5kZXN0cm95KCk7XG4gIH1cbn1cbiJdfQ==