simpo-component-library 3.6.935 → 3.6.936

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -71,12 +71,12 @@ export class BookingCartGroupsComponent {
71
71
  dialogRef.componentInstance.data = { content: { mode: group.mode } };
72
72
  }
73
73
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BookingCartGroupsComponent, deps: [{ token: i1.BookingProductCartService }, { token: i2.StorageServiceService }, { token: i3.MatDialog }, { token: i3.MatDialogRef, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
74
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BookingCartGroupsComponent, isStandalone: true, selector: "simpo-booking-cart-groups", ngImport: i0, template: "<div class=\"booking-cart-groups\">\n <div class=\"bcg-header\" *ngIf=\"dialogRefPresent\">\n <div class=\"bcg-title\">Your Bookings</div>\n <button class=\"bcg-close\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"bcg-body\" *ngIf=\"!loading\">\n <ng-container *ngFor=\"let group of groups\">\n <div class=\"bcg-group\">\n <div class=\"bcg-group-header\">\n <span class=\"bcg-dot\" [ngClass]=\"group.mode === 'HOME_VISIT' ? 'bcg-dot-home' : 'bcg-dot-video'\"></span>\n <span class=\"bcg-group-title\">{{ group.title }}</span>\n <span class=\"bcg-group-meta\">{{ group.items.length }} item{{ group.items.length === 1 ? '' : 's' }}</span>\n </div>\n <div class=\"bcg-item\" *ngFor=\"let item of group.items\">\n <img class=\"bcg-item-img\" *ngIf=\"item.imgUrl\" [src]=\"item.imgUrl\" [alt]=\"item.itemName\" />\n <div class=\"bcg-item-img bcg-item-img-empty\" *ngIf=\"!item.imgUrl\"></div>\n <div class=\"bcg-item-name\">{{ item.itemName }}</div>\n <button class=\"bcg-item-remove\" (click)=\"removeItem(group, item)\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <button class=\"bcg-continue\" (click)=\"continueBooking(group)\">Continue Booking</button>\n </div>\n </ng-container>\n\n <div class=\"bcg-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"bcg-empty-icon\">event_available</mat-icon>\n <div class=\"bcg-empty-title\">You haven't added anything yet.</div>\n <div class=\"bcg-empty-sub\">Try a piece at home or on a video call \u2014 add it here first, book when you're ready.</div>\n <button class=\"bcg-browse\" (click)=\"browse()\">Browse collections</button>\n </div>\n </div>\n</div>\n", styles: [".booking-cart-groups{display:flex;flex-direction:column;height:100%;background:#fff;font-family:inherit}.bcg-header{flex:none;padding:20px 22px;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;justify-content:space-between}.bcg-title{font-size:17px;font-weight:600;color:#1b2436}.bcg-close{border:none;background:none;cursor:pointer;color:#8a94a3;line-height:0;padding:3px}.bcg-body{flex:1;min-height:0;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:18px}.bcg-group{border:1px solid #EDE8E2;border-radius:10px;overflow:hidden}.bcg-group-header{padding:12px 14px;background:#fbfaf8;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;gap:9px}.bcg-dot{width:8px;height:8px;border-radius:999px;flex:none}.bcg-dot-home{background:#16233a}.bcg-dot-video{background:#7c3a11}.bcg-group-title{flex:1;font-size:14px;font-weight:600;color:#1b2436}.bcg-group-meta{font-size:11.5px;color:#8a94a3}.bcg-item{display:flex;align-items:center;gap:11px;padding:11px 14px;border-bottom:1px solid #F4F1EC}.bcg-item-img{width:40px;height:40px;border-radius:6px;object-fit:cover;flex:none;background:#f2ede6}.bcg-item-img-empty{background:#f2ede6}.bcg-item-name{flex:1;font-size:13px;line-height:1.3;color:#1b2436}.bcg-item-remove{border:none;background:none;cursor:pointer;color:#b6aba0;line-height:0;padding:4px}.bcg-continue{display:block;width:calc(100% - 28px);margin:14px;height:44px;border:none;border-radius:8px;background:#7c3a11;color:#fff;font-size:13.5px;font-weight:600;cursor:pointer}.bcg-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;text-align:center}.bcg-empty-icon{font-size:40px;height:40px;width:40px;color:#c9b7a2}.bcg-empty-title{font-size:16px;font-weight:600;color:#1b2436}.bcg-empty-sub{font-size:12.5px;line-height:1.6;color:#8a94a3;max-width:240px}.bcg-browse{height:42px;padding:0 20px;border:1.5px solid #7C3A11;border-radius:8px;background:#fff;color:#7c3a11;font-size:13px;font-weight:600;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
74
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: BookingCartGroupsComponent, isStandalone: true, selector: "simpo-booking-cart-groups", ngImport: i0, template: "<div class=\"booking-cart-groups\" [class.bcg-panel]=\"dialogRefPresent\">\n <div class=\"bcg-header\" *ngIf=\"dialogRefPresent\">\n <div class=\"bcg-title\">Your Bookings</div>\n <button class=\"bcg-close\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"bcg-body\" *ngIf=\"!loading\">\n <ng-container *ngFor=\"let group of groups\">\n <div class=\"bcg-group\">\n <div class=\"bcg-group-header\">\n <span class=\"bcg-dot\" [ngClass]=\"group.mode === 'HOME_VISIT' ? 'bcg-dot-home' : 'bcg-dot-video'\"></span>\n <span class=\"bcg-group-title\">{{ group.title }}</span>\n <span class=\"bcg-group-meta\">{{ group.items.length }} item{{ group.items.length === 1 ? '' : 's' }}</span>\n </div>\n <div class=\"bcg-item\" *ngFor=\"let item of group.items\">\n <img class=\"bcg-item-img\" *ngIf=\"item.imgUrl\" [src]=\"item.imgUrl\" [alt]=\"item.itemName\" />\n <div class=\"bcg-item-img bcg-item-img-empty\" *ngIf=\"!item.imgUrl\"></div>\n <div class=\"bcg-item-name\">{{ item.itemName }}</div>\n <button class=\"bcg-item-remove\" (click)=\"removeItem(group, item)\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <button class=\"bcg-continue\" (click)=\"continueBooking(group)\">Continue Booking</button>\n </div>\n </ng-container>\n\n <div class=\"bcg-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"bcg-empty-icon\">event_available</mat-icon>\n <div class=\"bcg-empty-title\">You haven't added anything yet.</div>\n <div class=\"bcg-empty-sub\">Try a piece at home or on a video call \u2014 add it here first, book when you're ready.</div>\n <button class=\"bcg-browse\" (click)=\"browse()\">Browse collections</button>\n </div>\n </div>\n</div>\n", styles: [".booking-cart-groups{display:flex;flex-direction:column;width:100%;background:#fff;font-family:inherit;border:1px solid #e2e8f0;border-radius:8px}.booking-cart-groups.bcg-panel{height:100%;border:none;border-radius:0}.bcg-header{flex:none;padding:20px 22px;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;justify-content:space-between}.bcg-title{font-size:17px;font-weight:600;color:#1b2436}.bcg-close{border:none;background:none;cursor:pointer;color:#8a94a3;line-height:0;padding:3px}.bcg-body{flex:1;min-height:0;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:18px}.bcg-group{border:1px solid #EDE8E2;border-radius:10px;overflow:hidden}.bcg-group-header{padding:12px 14px;background:#fbfaf8;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;gap:9px}.bcg-dot{width:8px;height:8px;border-radius:999px;flex:none}.bcg-dot-home{background:#16233a}.bcg-dot-video{background:#7c3a11}.bcg-group-title{flex:1;font-size:14px;font-weight:600;color:#1b2436}.bcg-group-meta{font-size:11.5px;color:#8a94a3}.bcg-item{display:flex;align-items:center;gap:11px;padding:11px 14px;border-bottom:1px solid #F4F1EC}.bcg-item-img{width:40px;height:40px;border-radius:6px;object-fit:cover;flex:none;background:#f2ede6}.bcg-item-img-empty{background:#f2ede6}.bcg-item-name{flex:1;font-size:13px;line-height:1.3;color:#1b2436}.bcg-item-remove{border:none;background:none;cursor:pointer;color:#b6aba0;line-height:0;padding:4px}.bcg-continue{display:block;width:calc(100% - 28px);margin:14px;height:44px;border:none;border-radius:8px;background:#7c3a11;color:#fff;font-size:13.5px;font-weight:600;cursor:pointer}.bcg-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;text-align:center}.bcg-empty-icon{font-size:40px;height:40px;width:40px;color:#c9b7a2}.bcg-empty-title{font-size:16px;font-weight:600;color:#1b2436}.bcg-empty-sub{font-size:12.5px;line-height:1.6;color:#8a94a3;max-width:240px}.bcg-browse{height:42px;padding:0 20px;border:1.5px solid #7C3A11;border-radius:8px;background:#fff;color:#7c3a11;font-size:13px;font-weight:600;cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
75
75
  }
76
76
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: BookingCartGroupsComponent, decorators: [{
77
77
  type: Component,
78
- args: [{ selector: 'simpo-booking-cart-groups', standalone: true, imports: [CommonModule, MatIconModule], template: "<div class=\"booking-cart-groups\">\n <div class=\"bcg-header\" *ngIf=\"dialogRefPresent\">\n <div class=\"bcg-title\">Your Bookings</div>\n <button class=\"bcg-close\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"bcg-body\" *ngIf=\"!loading\">\n <ng-container *ngFor=\"let group of groups\">\n <div class=\"bcg-group\">\n <div class=\"bcg-group-header\">\n <span class=\"bcg-dot\" [ngClass]=\"group.mode === 'HOME_VISIT' ? 'bcg-dot-home' : 'bcg-dot-video'\"></span>\n <span class=\"bcg-group-title\">{{ group.title }}</span>\n <span class=\"bcg-group-meta\">{{ group.items.length }} item{{ group.items.length === 1 ? '' : 's' }}</span>\n </div>\n <div class=\"bcg-item\" *ngFor=\"let item of group.items\">\n <img class=\"bcg-item-img\" *ngIf=\"item.imgUrl\" [src]=\"item.imgUrl\" [alt]=\"item.itemName\" />\n <div class=\"bcg-item-img bcg-item-img-empty\" *ngIf=\"!item.imgUrl\"></div>\n <div class=\"bcg-item-name\">{{ item.itemName }}</div>\n <button class=\"bcg-item-remove\" (click)=\"removeItem(group, item)\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <button class=\"bcg-continue\" (click)=\"continueBooking(group)\">Continue Booking</button>\n </div>\n </ng-container>\n\n <div class=\"bcg-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"bcg-empty-icon\">event_available</mat-icon>\n <div class=\"bcg-empty-title\">You haven't added anything yet.</div>\n <div class=\"bcg-empty-sub\">Try a piece at home or on a video call \u2014 add it here first, book when you're ready.</div>\n <button class=\"bcg-browse\" (click)=\"browse()\">Browse collections</button>\n </div>\n </div>\n</div>\n", styles: [".booking-cart-groups{display:flex;flex-direction:column;height:100%;background:#fff;font-family:inherit}.bcg-header{flex:none;padding:20px 22px;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;justify-content:space-between}.bcg-title{font-size:17px;font-weight:600;color:#1b2436}.bcg-close{border:none;background:none;cursor:pointer;color:#8a94a3;line-height:0;padding:3px}.bcg-body{flex:1;min-height:0;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:18px}.bcg-group{border:1px solid #EDE8E2;border-radius:10px;overflow:hidden}.bcg-group-header{padding:12px 14px;background:#fbfaf8;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;gap:9px}.bcg-dot{width:8px;height:8px;border-radius:999px;flex:none}.bcg-dot-home{background:#16233a}.bcg-dot-video{background:#7c3a11}.bcg-group-title{flex:1;font-size:14px;font-weight:600;color:#1b2436}.bcg-group-meta{font-size:11.5px;color:#8a94a3}.bcg-item{display:flex;align-items:center;gap:11px;padding:11px 14px;border-bottom:1px solid #F4F1EC}.bcg-item-img{width:40px;height:40px;border-radius:6px;object-fit:cover;flex:none;background:#f2ede6}.bcg-item-img-empty{background:#f2ede6}.bcg-item-name{flex:1;font-size:13px;line-height:1.3;color:#1b2436}.bcg-item-remove{border:none;background:none;cursor:pointer;color:#b6aba0;line-height:0;padding:4px}.bcg-continue{display:block;width:calc(100% - 28px);margin:14px;height:44px;border:none;border-radius:8px;background:#7c3a11;color:#fff;font-size:13.5px;font-weight:600;cursor:pointer}.bcg-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;text-align:center}.bcg-empty-icon{font-size:40px;height:40px;width:40px;color:#c9b7a2}.bcg-empty-title{font-size:16px;font-weight:600;color:#1b2436}.bcg-empty-sub{font-size:12.5px;line-height:1.6;color:#8a94a3;max-width:240px}.bcg-browse{height:42px;padding:0 20px;border:1.5px solid #7C3A11;border-radius:8px;background:#fff;color:#7c3a11;font-size:13px;font-weight:600;cursor:pointer}\n"] }]
78
+ args: [{ selector: 'simpo-booking-cart-groups', standalone: true, imports: [CommonModule, MatIconModule], template: "<div class=\"booking-cart-groups\" [class.bcg-panel]=\"dialogRefPresent\">\n <div class=\"bcg-header\" *ngIf=\"dialogRefPresent\">\n <div class=\"bcg-title\">Your Bookings</div>\n <button class=\"bcg-close\" (click)=\"close()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <div class=\"bcg-body\" *ngIf=\"!loading\">\n <ng-container *ngFor=\"let group of groups\">\n <div class=\"bcg-group\">\n <div class=\"bcg-group-header\">\n <span class=\"bcg-dot\" [ngClass]=\"group.mode === 'HOME_VISIT' ? 'bcg-dot-home' : 'bcg-dot-video'\"></span>\n <span class=\"bcg-group-title\">{{ group.title }}</span>\n <span class=\"bcg-group-meta\">{{ group.items.length }} item{{ group.items.length === 1 ? '' : 's' }}</span>\n </div>\n <div class=\"bcg-item\" *ngFor=\"let item of group.items\">\n <img class=\"bcg-item-img\" *ngIf=\"item.imgUrl\" [src]=\"item.imgUrl\" [alt]=\"item.itemName\" />\n <div class=\"bcg-item-img bcg-item-img-empty\" *ngIf=\"!item.imgUrl\"></div>\n <div class=\"bcg-item-name\">{{ item.itemName }}</div>\n <button class=\"bcg-item-remove\" (click)=\"removeItem(group, item)\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <button class=\"bcg-continue\" (click)=\"continueBooking(group)\">Continue Booking</button>\n </div>\n </ng-container>\n\n <div class=\"bcg-empty\" *ngIf=\"isEmpty\">\n <mat-icon class=\"bcg-empty-icon\">event_available</mat-icon>\n <div class=\"bcg-empty-title\">You haven't added anything yet.</div>\n <div class=\"bcg-empty-sub\">Try a piece at home or on a video call \u2014 add it here first, book when you're ready.</div>\n <button class=\"bcg-browse\" (click)=\"browse()\">Browse collections</button>\n </div>\n </div>\n</div>\n", styles: [".booking-cart-groups{display:flex;flex-direction:column;width:100%;background:#fff;font-family:inherit;border:1px solid #e2e8f0;border-radius:8px}.booking-cart-groups.bcg-panel{height:100%;border:none;border-radius:0}.bcg-header{flex:none;padding:20px 22px;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;justify-content:space-between}.bcg-title{font-size:17px;font-weight:600;color:#1b2436}.bcg-close{border:none;background:none;cursor:pointer;color:#8a94a3;line-height:0;padding:3px}.bcg-body{flex:1;min-height:0;overflow-y:auto;padding:18px 22px;display:flex;flex-direction:column;gap:18px}.bcg-group{border:1px solid #EDE8E2;border-radius:10px;overflow:hidden}.bcg-group-header{padding:12px 14px;background:#fbfaf8;border-bottom:1px solid #EFEBE5;display:flex;align-items:center;gap:9px}.bcg-dot{width:8px;height:8px;border-radius:999px;flex:none}.bcg-dot-home{background:#16233a}.bcg-dot-video{background:#7c3a11}.bcg-group-title{flex:1;font-size:14px;font-weight:600;color:#1b2436}.bcg-group-meta{font-size:11.5px;color:#8a94a3}.bcg-item{display:flex;align-items:center;gap:11px;padding:11px 14px;border-bottom:1px solid #F4F1EC}.bcg-item-img{width:40px;height:40px;border-radius:6px;object-fit:cover;flex:none;background:#f2ede6}.bcg-item-img-empty{background:#f2ede6}.bcg-item-name{flex:1;font-size:13px;line-height:1.3;color:#1b2436}.bcg-item-remove{border:none;background:none;cursor:pointer;color:#b6aba0;line-height:0;padding:4px}.bcg-continue{display:block;width:calc(100% - 28px);margin:14px;height:44px;border:none;border-radius:8px;background:#7c3a11;color:#fff;font-size:13.5px;font-weight:600;cursor:pointer}.bcg-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;text-align:center}.bcg-empty-icon{font-size:40px;height:40px;width:40px;color:#c9b7a2}.bcg-empty-title{font-size:16px;font-weight:600;color:#1b2436}.bcg-empty-sub{font-size:12.5px;line-height:1.6;color:#8a94a3;max-width:240px}.bcg-browse{height:42px;padding:0 20px;border:1.5px solid #7C3A11;border-radius:8px;background:#fff;color:#7c3a11;font-size:13px;font-weight:600;cursor:pointer}\n"] }]
79
79
  }], ctorParameters: () => [{ type: i1.BookingProductCartService }, { type: i2.StorageServiceService }, { type: i3.MatDialog }, { type: i3.MatDialogRef, decorators: [{
80
80
  type: Optional
81
81
  }] }] });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2Jvb2tpbmctY2FydC1ncm91cHMvYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2Jvb2tpbmctY2FydC1ncm91cHMvYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBS3ZELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVHQUF1RyxDQUFDO0FBQ3BKLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG9GQUFvRixDQUFDOzs7Ozs7O0FBUXJJOzs7Ozs7R0FNRztBQVFILE1BQU0sT0FBTywwQkFBMEI7SUFJckMsWUFDbUIseUJBQW9ELEVBQ3BELGNBQXFDLEVBQ3JDLFNBQW9CLEVBQ1IsU0FBbUQ7UUFIL0QsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNSLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBUGxGLFdBQU0sR0FBdUIsRUFBRSxDQUFDO1FBQ2hDLFlBQU8sR0FBWSxJQUFJLENBQUM7SUFPcEIsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUMvQyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNyRCxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztTQUN0RCxDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBdUIsRUFBRSxDQUFDO1FBQ3RDLElBQUksU0FBUyxDQUFDLE1BQU07WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLElBQUksU0FBUyxDQUFDLE1BQU07WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBdUIsRUFBRSxJQUFrQjtRQUMxRCxNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUUsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUF1QjtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDckYsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUNqRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCO1NBQ25GLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFTLENBQUM7SUFDOUUsQ0FBQzsrR0E1RFUsMEJBQTBCO21HQUExQiwwQkFBMEIscUZDOUJ2QyxveURBb0NBLDJpRURWWSxZQUFZLDZWQUFFLGFBQWE7OzRGQUkxQiwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0UsMkJBQTJCLGNBQ3pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7OzBCQVluQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZSwgQm9va2luZ0NhcnRNb2RlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYm9va2luZy1wcm9kdWN0LWNhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vZWNvbW1lcmNlL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xuaW1wb3J0IHsgQXBwb2ludG1lbnRCb29raW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2VjdGlvbnMvYXBwb2ludG1lbnQtZm9ybS9hcHBvaW50bWVudC1ib29raW5nL2FwcG9pbnRtZW50LWJvb2tpbmcvYXBwb2ludG1lbnQtYm9va2luZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25SZXF1aXJlZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Vjb21tZXJjZS9zZWN0aW9ucy9hdXRoZW50aWNhdGlvbi1yZXF1aXJlZC9hdXRoZW50aWNhdGlvbi1yZXF1aXJlZC5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgQm9va2luZ0NhcnRHcm91cCB7XG4gIG1vZGU6IEJvb2tpbmdDYXJ0TW9kZTtcbiAgdGl0bGU6IHN0cmluZztcbiAgaXRlbXM6IE9yZGVyZWRJdGVtc1tdO1xufVxuXG4vKipcbiAqIFNoYXJlZCBcImdyb3VwZWQgYm9va2luZyBjYXJ0XCIgdmlldyDigJQgb25lIHNlY3Rpb24gcGVyIG5vbi1lbXB0eSBtb2RlIChIb21lIFZpc2l0IC8gVmlkZW8gQ2FsbCksXG4gKiBlYWNoIHdpdGggaXRzIG93biBDb250aW51ZSBCb29raW5nIGFjdGlvbiwgc2luY2UgYSBib29raW5nIGNhbiBvbmx5IGV2ZXIgYmUgb25lIG1vZGUuIFVzZWRcbiAqIGJvdGggYXMgdGhlIGhlYWRlcidzIEJvb2tpbmdzIGRyYXdlciAob3BlbmVkIHZpYSBNYXREaWFsb2csIHBhbmVsQ2xhc3MgJ3NpZGVwYW5lbC1jbGFzcycsIHNhbWVcbiAqIGNvbnZlbnRpb24gYXMgdGhlIHJlc3Qgb2YgdGhpcyBhcHAncyBzaWRlIHBhbmVscykgYW5kIGVtYmVkZGVkIGlubGluZSBpbiB0aGUgQ2FydCBwYWdlJ3NcbiAqIEJvb2tpbmcgQ2FydCB0YWIsIHNvIHRoZSB0d28gc3VyZmFjZXMgbmV2ZXIgc2hvdyBkaWZmZXJlbnQgZGF0YS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltcG8tYm9va2luZy1jYXJ0LWdyb3VwcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9ib29raW5nLWNhcnQtZ3JvdXBzLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIEJvb2tpbmdDYXJ0R3JvdXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZ3JvdXBzOiBCb29raW5nQ2FydEdyb3VwW10gPSBbXTtcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBib29raW5nUHJvZHVjdENhcnRTZXJ2aWNlOiBCb29raW5nUHJvZHVjdENhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Qm9va2luZ0NhcnRHcm91cHNDb21wb25lbnQ+LFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IFtob21lVmlzaXQsIHZpZGVvQ2FsbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmJvb2tpbmdQcm9kdWN0Q2FydFNlcnZpY2UuZ2V0SXRlbXMoJ0hPTUVfVklTSVQnKSxcbiAgICAgIHRoaXMuYm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZS5nZXRJdGVtcygnVklERU9fQ0FMTCcpLFxuICAgIF0pO1xuICAgIGNvbnN0IGdyb3VwczogQm9va2luZ0NhcnRHcm91cFtdID0gW107XG4gICAgaWYgKGhvbWVWaXNpdC5sZW5ndGgpIGdyb3Vwcy5wdXNoKHsgbW9kZTogJ0hPTUVfVklTSVQnLCB0aXRsZTogJ0hvbWUgVmlzaXQnLCBpdGVtczogaG9tZVZpc2l0IH0pO1xuICAgIGlmICh2aWRlb0NhbGwubGVuZ3RoKSBncm91cHMucHVzaCh7IG1vZGU6ICdWSURFT19DQUxMJywgdGl0bGU6ICdWaWRlbyBDYWxsJywgaXRlbXM6IHZpZGVvQ2FsbCB9KTtcbiAgICB0aGlzLmdyb3VwcyA9IGdyb3VwcztcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5sb2FkaW5nICYmIHRoaXMuZ3JvdXBzLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIGdldCBkaWFsb2dSZWZQcmVzZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZGlhbG9nUmVmO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlSXRlbShncm91cDogQm9va2luZ0NhcnRHcm91cCwgaXRlbTogT3JkZXJlZEl0ZW1zKSB7XG4gICAgYXdhaXQgdGhpcy5ib29raW5nUHJvZHVjdENhcnRTZXJ2aWNlLnJlbW92ZUl0ZW0oZ3JvdXAubW9kZSwgaXRlbS52YXJpZW50SWQpO1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XG4gIH1cblxuICBicm93c2UoKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgY29udGludWVCb29raW5nKGdyb3VwOiBCb29raW5nQ2FydEdyb3VwKSB7XG4gICAgaWYgKCF0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgdGhpcy5tYXREaWFsb2cub3BlbihBdXRoZW50aWNhdGlvblJlcXVpcmVkQ29tcG9uZW50LCB7IHBhbmVsQ2xhc3M6ICdhdXRoZW50aWNhdGUnIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3BlbihBcHBvaW50bWVudEJvb2tpbmdDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnMTAwdncnLCBoZWlnaHQ6ICcxMDB2aCcsIG1heFdpZHRoOiAnMTAwdncnLCBwYW5lbENsYXNzOiAnYXBwb2ludG1lbnQtZm9ybSdcbiAgICB9KTtcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHsgY29udGVudDogeyBtb2RlOiBncm91cC5tb2RlIH0gfSBhcyBhbnk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJib29raW5nLWNhcnQtZ3JvdXBzXCI+XG4gIDxkaXYgY2xhc3M9XCJiY2ctaGVhZGVyXCIgKm5nSWY9XCJkaWFsb2dSZWZQcmVzZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImJjZy10aXRsZVwiPllvdXIgQm9va2luZ3M8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWNsb3NlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJiY2ctYm9keVwiICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiY2ctZ3JvdXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJjZy1ncm91cC1oZWFkZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJjZy1kb3RcIiBbbmdDbGFzc109XCJncm91cC5tb2RlID09PSAnSE9NRV9WSVNJVCcgPyAnYmNnLWRvdC1ob21lJyA6ICdiY2ctZG90LXZpZGVvJ1wiPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJjZy1ncm91cC10aXRsZVwiPnt7IGdyb3VwLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmNnLWdyb3VwLW1ldGFcIj57eyBncm91cC5pdGVtcy5sZW5ndGggfX0gaXRlbXt7IGdyb3VwLml0ZW1zLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJjZy1pdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXAuaXRlbXNcIj5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwiYmNnLWl0ZW0taW1nXCIgKm5nSWY9XCJpdGVtLmltZ1VybFwiIFtzcmNdPVwiaXRlbS5pbWdVcmxcIiBbYWx0XT1cIml0ZW0uaXRlbU5hbWVcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiY2ctaXRlbS1pbWcgYmNnLWl0ZW0taW1nLWVtcHR5XCIgKm5nSWY9XCIhaXRlbS5pbWdVcmxcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmNnLWl0ZW0tbmFtZVwiPnt7IGl0ZW0uaXRlbU5hbWUgfX08L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWl0ZW0tcmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUl0ZW0oZ3JvdXAsIGl0ZW0pXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJjZy1jb250aW51ZVwiIChjbGljayk9XCJjb250aW51ZUJvb2tpbmcoZ3JvdXApXCI+Q29udGludWUgQm9va2luZzwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmNnLWVtcHR5XCIgKm5nSWY9XCJpc0VtcHR5XCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJiY2ctZW1wdHktaWNvblwiPmV2ZW50X2F2YWlsYWJsZTwvbWF0LWljb24+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmNnLWVtcHR5LXRpdGxlXCI+WW91IGhhdmVuJ3QgYWRkZWQgYW55dGhpbmcgeWV0LjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJjZy1lbXB0eS1zdWJcIj5UcnkgYSBwaWVjZSBhdCBob21lIG9yIG9uIGEgdmlkZW8gY2FsbCDigJQgYWRkIGl0IGhlcmUgZmlyc3QsIGJvb2sgd2hlbiB5b3UncmUgcmVhZHkuPC9kaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWJyb3dzZVwiIChjbGljayk9XCJicm93c2UoKVwiPkJyb3dzZSBjb2xsZWN0aW9uczwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2Jvb2tpbmctY2FydC1ncm91cHMvYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2Jvb2tpbmctY2FydC1ncm91cHMvYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBS3ZELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHVHQUF1RyxDQUFDO0FBQ3BKLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG9GQUFvRixDQUFDOzs7Ozs7O0FBUXJJOzs7Ozs7R0FNRztBQVFILE1BQU0sT0FBTywwQkFBMEI7SUFJckMsWUFDbUIseUJBQW9ELEVBQ3BELGNBQXFDLEVBQ3JDLFNBQW9CLEVBQ1IsU0FBbUQ7UUFIL0QsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUNwRCxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBVztRQUNSLGNBQVMsR0FBVCxTQUFTLENBQTBDO1FBUGxGLFdBQU0sR0FBdUIsRUFBRSxDQUFDO1FBQ2hDLFlBQU8sR0FBWSxJQUFJLENBQUM7SUFPcEIsQ0FBQztJQUVMLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUk7UUFDUixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixNQUFNLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQztZQUMvQyxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNyRCxJQUFJLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztTQUN0RCxDQUFDLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBdUIsRUFBRSxDQUFDO1FBQ3RDLElBQUksU0FBUyxDQUFDLE1BQU07WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLElBQUksU0FBUyxDQUFDLE1BQU07WUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2pHLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBdUIsRUFBRSxJQUFrQjtRQUMxRCxNQUFNLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDNUUsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUF1QjtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7WUFDckYsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUNqRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsa0JBQWtCO1NBQ25GLENBQUMsQ0FBQztRQUNILFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFTLENBQUM7SUFDOUUsQ0FBQzsrR0E1RFUsMEJBQTBCO21HQUExQiwwQkFBMEIscUZDOUJ2QywyMERBb0NBLDRwRURWWSxZQUFZLDZWQUFFLGFBQWE7OzRGQUkxQiwwQkFBMEI7a0JBUHRDLFNBQVM7K0JBQ0UsMkJBQTJCLGNBQ3pCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxhQUFhLENBQUM7OzBCQVluQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0RGlhbG9nLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgQm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZSwgQm9va2luZ0NhcnRNb2RlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYm9va2luZy1wcm9kdWN0LWNhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vLi4vZWNvbW1lcmNlL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xuaW1wb3J0IHsgQXBwb2ludG1lbnRCb29raW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vc2VjdGlvbnMvYXBwb2ludG1lbnQtZm9ybS9hcHBvaW50bWVudC1ib29raW5nL2FwcG9pbnRtZW50LWJvb2tpbmcvYXBwb2ludG1lbnQtYm9va2luZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQXV0aGVudGljYXRpb25SZXF1aXJlZENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Vjb21tZXJjZS9zZWN0aW9ucy9hdXRoZW50aWNhdGlvbi1yZXF1aXJlZC9hdXRoZW50aWNhdGlvbi1yZXF1aXJlZC5jb21wb25lbnQnO1xuXG5pbnRlcmZhY2UgQm9va2luZ0NhcnRHcm91cCB7XG4gIG1vZGU6IEJvb2tpbmdDYXJ0TW9kZTtcbiAgdGl0bGU6IHN0cmluZztcbiAgaXRlbXM6IE9yZGVyZWRJdGVtc1tdO1xufVxuXG4vKipcbiAqIFNoYXJlZCBcImdyb3VwZWQgYm9va2luZyBjYXJ0XCIgdmlldyDigJQgb25lIHNlY3Rpb24gcGVyIG5vbi1lbXB0eSBtb2RlIChIb21lIFZpc2l0IC8gVmlkZW8gQ2FsbCksXG4gKiBlYWNoIHdpdGggaXRzIG93biBDb250aW51ZSBCb29raW5nIGFjdGlvbiwgc2luY2UgYSBib29raW5nIGNhbiBvbmx5IGV2ZXIgYmUgb25lIG1vZGUuIFVzZWRcbiAqIGJvdGggYXMgdGhlIGhlYWRlcidzIEJvb2tpbmdzIGRyYXdlciAob3BlbmVkIHZpYSBNYXREaWFsb2csIHBhbmVsQ2xhc3MgJ3NpZGVwYW5lbC1jbGFzcycsIHNhbWVcbiAqIGNvbnZlbnRpb24gYXMgdGhlIHJlc3Qgb2YgdGhpcyBhcHAncyBzaWRlIHBhbmVscykgYW5kIGVtYmVkZGVkIGlubGluZSBpbiB0aGUgQ2FydCBwYWdlJ3NcbiAqIEJvb2tpbmcgQ2FydCB0YWIsIHNvIHRoZSB0d28gc3VyZmFjZXMgbmV2ZXIgc2hvdyBkaWZmZXJlbnQgZGF0YS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2ltcG8tYm9va2luZy1jYXJ0LWdyb3VwcycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYm9va2luZy1jYXJ0LWdyb3Vwcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9ib29raW5nLWNhcnQtZ3JvdXBzLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIEJvb2tpbmdDYXJ0R3JvdXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZ3JvdXBzOiBCb29raW5nQ2FydEdyb3VwW10gPSBbXTtcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBib29raW5nUHJvZHVjdENhcnRTZXJ2aWNlOiBCb29raW5nUHJvZHVjdENhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdERpYWxvZzogTWF0RGlhbG9nLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Qm9va2luZ0NhcnRHcm91cHNDb21wb25lbnQ+LFxuICApIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMubG9hZCgpO1xuICB9XG5cbiAgYXN5bmMgbG9hZCgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIGNvbnN0IFtob21lVmlzaXQsIHZpZGVvQ2FsbF0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmJvb2tpbmdQcm9kdWN0Q2FydFNlcnZpY2UuZ2V0SXRlbXMoJ0hPTUVfVklTSVQnKSxcbiAgICAgIHRoaXMuYm9va2luZ1Byb2R1Y3RDYXJ0U2VydmljZS5nZXRJdGVtcygnVklERU9fQ0FMTCcpLFxuICAgIF0pO1xuICAgIGNvbnN0IGdyb3VwczogQm9va2luZ0NhcnRHcm91cFtdID0gW107XG4gICAgaWYgKGhvbWVWaXNpdC5sZW5ndGgpIGdyb3Vwcy5wdXNoKHsgbW9kZTogJ0hPTUVfVklTSVQnLCB0aXRsZTogJ0hvbWUgVmlzaXQnLCBpdGVtczogaG9tZVZpc2l0IH0pO1xuICAgIGlmICh2aWRlb0NhbGwubGVuZ3RoKSBncm91cHMucHVzaCh7IG1vZGU6ICdWSURFT19DQUxMJywgdGl0bGU6ICdWaWRlbyBDYWxsJywgaXRlbXM6IHZpZGVvQ2FsbCB9KTtcbiAgICB0aGlzLmdyb3VwcyA9IGdyb3VwcztcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5sb2FkaW5nICYmIHRoaXMuZ3JvdXBzLmxlbmd0aCA9PT0gMDtcbiAgfVxuXG4gIGdldCBkaWFsb2dSZWZQcmVzZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZGlhbG9nUmVmO1xuICB9XG5cbiAgYXN5bmMgcmVtb3ZlSXRlbShncm91cDogQm9va2luZ0NhcnRHcm91cCwgaXRlbTogT3JkZXJlZEl0ZW1zKSB7XG4gICAgYXdhaXQgdGhpcy5ib29raW5nUHJvZHVjdENhcnRTZXJ2aWNlLnJlbW92ZUl0ZW0oZ3JvdXAubW9kZSwgaXRlbS52YXJpZW50SWQpO1xuICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5kaWFsb2dSZWY/LmNsb3NlKCk7XG4gIH1cblxuICBicm93c2UoKSB7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgY29udGludWVCb29raW5nKGdyb3VwOiBCb29raW5nQ2FydEdyb3VwKSB7XG4gICAgaWYgKCF0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgdGhpcy5tYXREaWFsb2cub3BlbihBdXRoZW50aWNhdGlvblJlcXVpcmVkQ29tcG9uZW50LCB7IHBhbmVsQ2xhc3M6ICdhdXRoZW50aWNhdGUnIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlKCk7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5tYXREaWFsb2cub3BlbihBcHBvaW50bWVudEJvb2tpbmdDb21wb25lbnQsIHtcbiAgICAgIHdpZHRoOiAnMTAwdncnLCBoZWlnaHQ6ICcxMDB2aCcsIG1heFdpZHRoOiAnMTAwdncnLCBwYW5lbENsYXNzOiAnYXBwb2ludG1lbnQtZm9ybSdcbiAgICB9KTtcbiAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UuZGF0YSA9IHsgY29udGVudDogeyBtb2RlOiBncm91cC5tb2RlIH0gfSBhcyBhbnk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJib29raW5nLWNhcnQtZ3JvdXBzXCIgW2NsYXNzLmJjZy1wYW5lbF09XCJkaWFsb2dSZWZQcmVzZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJiY2ctaGVhZGVyXCIgKm5nSWY9XCJkaWFsb2dSZWZQcmVzZW50XCI+XG4gICAgPGRpdiBjbGFzcz1cImJjZy10aXRsZVwiPllvdXIgQm9va2luZ3M8L2Rpdj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWNsb3NlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJiY2ctYm9keVwiICpuZ0lmPVwiIWxvYWRpbmdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBncm91cHNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJiY2ctZ3JvdXBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJjZy1ncm91cC1oZWFkZXJcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJjZy1kb3RcIiBbbmdDbGFzc109XCJncm91cC5tb2RlID09PSAnSE9NRV9WSVNJVCcgPyAnYmNnLWRvdC1ob21lJyA6ICdiY2ctZG90LXZpZGVvJ1wiPjwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImJjZy1ncm91cC10aXRsZVwiPnt7IGdyb3VwLnRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmNnLWdyb3VwLW1ldGFcIj57eyBncm91cC5pdGVtcy5sZW5ndGggfX0gaXRlbXt7IGdyb3VwLml0ZW1zLmxlbmd0aCA9PT0gMSA/ICcnIDogJ3MnIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJjZy1pdGVtXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ3JvdXAuaXRlbXNcIj5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwiYmNnLWl0ZW0taW1nXCIgKm5nSWY9XCJpdGVtLmltZ1VybFwiIFtzcmNdPVwiaXRlbS5pbWdVcmxcIiBbYWx0XT1cIml0ZW0uaXRlbU5hbWVcIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJiY2ctaXRlbS1pbWcgYmNnLWl0ZW0taW1nLWVtcHR5XCIgKm5nSWY9XCIhaXRlbS5pbWdVcmxcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmNnLWl0ZW0tbmFtZVwiPnt7IGl0ZW0uaXRlbU5hbWUgfX08L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWl0ZW0tcmVtb3ZlXCIgKGNsaWNrKT1cInJlbW92ZUl0ZW0oZ3JvdXAsIGl0ZW0pXCI+XG4gICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJjZy1jb250aW51ZVwiIChjbGljayk9XCJjb250aW51ZUJvb2tpbmcoZ3JvdXApXCI+Q29udGludWUgQm9va2luZzwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYmNnLWVtcHR5XCIgKm5nSWY9XCJpc0VtcHR5XCI+XG4gICAgICA8bWF0LWljb24gY2xhc3M9XCJiY2ctZW1wdHktaWNvblwiPmV2ZW50X2F2YWlsYWJsZTwvbWF0LWljb24+XG4gICAgICA8ZGl2IGNsYXNzPVwiYmNnLWVtcHR5LXRpdGxlXCI+WW91IGhhdmVuJ3QgYWRkZWQgYW55dGhpbmcgeWV0LjwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImJjZy1lbXB0eS1zdWJcIj5UcnkgYSBwaWVjZSBhdCBob21lIG9yIG9uIGEgdmlkZW8gY2FsbCDigJQgYWRkIGl0IGhlcmUgZmlyc3QsIGJvb2sgd2hlbiB5b3UncmUgcmVhZHkuPC9kaXY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYmNnLWJyb3dzZVwiIChjbGljayk9XCJicm93c2UoKVwiPkJyb3dzZSBjb2xsZWN0aW9uczwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19