@tolle_/tolle-ui 0.0.27-beta → 0.0.29-beta

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.
@@ -7,7 +7,7 @@ export class CardComponent {
7
7
  cn = cn;
8
8
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
9
9
  static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: CardComponent, isStandalone: true, selector: "tolle-card", inputs: { class: "class" }, ngImport: i0, template: `
10
- <div [class]="cn('rounded-md border border-border bg-card text-card-foreground shadow', class)">
10
+ <div [class]="cn('rounded-md border border-border text-card-foreground shadow', class)">
11
11
  <ng-content></ng-content>
12
12
  </div>
13
13
  `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }] });
@@ -19,7 +19,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
19
19
  standalone: true,
20
20
  imports: [CommonModule],
21
21
  template: `
22
- <div [class]="cn('rounded-md border border-border bg-card text-card-foreground shadow', class)">
22
+ <div [class]="cn('rounded-md border border-border text-card-foreground shadow', class)">
23
23
  <ng-content></ng-content>
24
24
  </div>
25
25
  `,
@@ -91,4 +91,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
91
91
  }], propDecorators: { class: [{
92
92
  type: Input
93
93
  }] } });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL2NhcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQVloQyxNQUFNLE9BQU8sYUFBYTtJQUFZLEtBQUssR0FBRyxFQUFFLENBQUM7SUFBVyxFQUFFLEdBQUcsRUFBRSxDQUFDO3dHQUF2RCxhQUFhOzRGQUFiLGFBQWEsa0dBTmQ7Ozs7R0FJVCwyREFMUyxZQUFZOzs0RkFPWCxhQUFhO2tCQVZ6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixRQUFRLEVBQUU7Ozs7R0FJVDtpQkFDRjs4QkFDcUMsS0FBSztzQkFBYixLQUFLOztBQU9uQyxNQUFNLE9BQU8sbUJBQW1CO0lBQVksS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBQTdELG1CQUFtQjs0RkFBbkIsbUJBQW1CLHlHQUZwQiwyRkFBMkY7OzRGQUUxRixtQkFBbUI7a0JBTC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSwyRkFBMkY7aUJBQ3RHOzhCQUMyQyxLQUFLO3NCQUFiLEtBQUs7O0FBT3pDLE1BQU0sT0FBTyxrQkFBa0I7SUFBWSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQzt3R0FBNUQsa0JBQWtCOzRGQUFsQixrQkFBa0Isd0dBRm5CLHFHQUFxRzs7NEZBRXBHLGtCQUFrQjtrQkFMOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHFHQUFxRztpQkFDaEg7OEJBQzBDLEtBQUs7c0JBQWIsS0FBSzs7QUFPeEMsTUFBTSxPQUFPLG9CQUFvQjtJQUFZLEtBQUssR0FBRyxFQUFFLENBQUM7SUFBVyxFQUFFLEdBQUcsRUFBRSxDQUFDO3dHQUE5RCxvQkFBb0I7NEZBQXBCLG9CQUFvQiwwR0FGckIsc0VBQXNFOzs0RkFFckUsb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsc0VBQXNFO2lCQUNqRjs4QkFDNEMsS0FBSztzQkFBYixLQUFLOztBQU8xQyxNQUFNLE9BQU8sbUJBQW1CO0lBQVksS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBQTdELG1CQUFtQjs0RkFBbkIsbUJBQW1CLHlHQUZwQix3RkFBd0Y7OzRGQUV2RixtQkFBbUI7a0JBTC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx3RkFBd0Y7aUJBQ25HOzhCQUMyQyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtY2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2NsYXNzXT1cImNuKCdyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWNhcmQgdGV4dC1jYXJkLWZvcmVncm91bmQgc2hhZG93JywgY2xhc3MpXCI+XG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIGAsXG59KVxuZXhwb3J0IGNsYXNzIENhcmRDb21wb25lbnQgeyBASW5wdXQoKSBjbGFzcyA9ICcnOyBwcm90ZWN0ZWQgY24gPSBjbjsgfVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1jYXJkLWhlYWRlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgPGRpdiBbY2xhc3NdPVwiY24oJ2ZsZXggZmxleC1jb2wgc3BhY2UteS0xLjUgcC02JywgY2xhc3MpXCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PmAsXG59KVxuZXhwb3J0IGNsYXNzIENhcmRIZWFkZXJDb21wb25lbnQgeyBASW5wdXQoKSBjbGFzcyA9ICcnOyBwcm90ZWN0ZWQgY24gPSBjbjsgfVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1jYXJkLXRpdGxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGA8aDMgW2NsYXNzXT1cImNuKCdmb250LXNlbWlib2xkIGxlYWRpbmctbm9uZSB0cmFja2luZy10aWdodCcsIGNsYXNzKVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2gzPmAsXG59KVxuZXhwb3J0IGNsYXNzIENhcmRUaXRsZUNvbXBvbmVudCB7IEBJbnB1dCgpIGNsYXNzID0gJyc7IHByb3RlY3RlZCBjbiA9IGNuOyB9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWNhcmQtY29udGVudCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgPGRpdiBbY2xhc3NdPVwiY24oJ3AtNiBwdC0wJywgY2xhc3MpXCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PmAsXG59KVxuZXhwb3J0IGNsYXNzIENhcmRDb250ZW50Q29tcG9uZW50IHsgQElucHV0KCkgY2xhc3MgPSAnJzsgcHJvdGVjdGVkIGNuID0gY247IH1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtY2FyZC1mb290ZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYDxkaXYgW2NsYXNzXT1cImNuKCdmbGV4IGl0ZW1zLWNlbnRlciBwLTYgcHQtMCcsIGNsYXNzKVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5gLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJkRm9vdGVyQ29tcG9uZW50IHsgQElucHV0KCkgY2xhc3MgPSAnJzsgcHJvdGVjdGVkIGNuID0gY247IH1cbiJdfQ==
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL2NhcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDOztBQVloQyxNQUFNLE9BQU8sYUFBYTtJQUFZLEtBQUssR0FBRyxFQUFFLENBQUM7SUFBVyxFQUFFLEdBQUcsRUFBRSxDQUFDO3dHQUF2RCxhQUFhOzRGQUFiLGFBQWEsa0dBTmQ7Ozs7R0FJVCwyREFMUyxZQUFZOzs0RkFPWCxhQUFhO2tCQVZ6QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUN2QixRQUFRLEVBQUU7Ozs7R0FJVDtpQkFDRjs4QkFDcUMsS0FBSztzQkFBYixLQUFLOztBQU9uQyxNQUFNLE9BQU8sbUJBQW1CO0lBQVksS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBQTdELG1CQUFtQjs0RkFBbkIsbUJBQW1CLHlHQUZwQiwyRkFBMkY7OzRGQUUxRixtQkFBbUI7a0JBTC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSwyRkFBMkY7aUJBQ3RHOzhCQUMyQyxLQUFLO3NCQUFiLEtBQUs7O0FBT3pDLE1BQU0sT0FBTyxrQkFBa0I7SUFBWSxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQzt3R0FBNUQsa0JBQWtCOzRGQUFsQixrQkFBa0Isd0dBRm5CLHFHQUFxRzs7NEZBRXBHLGtCQUFrQjtrQkFMOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLHFHQUFxRztpQkFDaEg7OEJBQzBDLEtBQUs7c0JBQWIsS0FBSzs7QUFPeEMsTUFBTSxPQUFPLG9CQUFvQjtJQUFZLEtBQUssR0FBRyxFQUFFLENBQUM7SUFBVyxFQUFFLEdBQUcsRUFBRSxDQUFDO3dHQUE5RCxvQkFBb0I7NEZBQXBCLG9CQUFvQiwwR0FGckIsc0VBQXNFOzs0RkFFckUsb0JBQW9CO2tCQUxoQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUUsc0VBQXNFO2lCQUNqRjs4QkFDNEMsS0FBSztzQkFBYixLQUFLOztBQU8xQyxNQUFNLE9BQU8sbUJBQW1CO0lBQVksS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUFXLEVBQUUsR0FBRyxFQUFFLENBQUM7d0dBQTdELG1CQUFtQjs0RkFBbkIsbUJBQW1CLHlHQUZwQix3RkFBd0Y7OzRGQUV2RixtQkFBbUI7a0JBTC9CLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG1CQUFtQjtvQkFDN0IsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSx3RkFBd0Y7aUJBQ25HOzhCQUMyQyxLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgY24gfSBmcm9tICcuL3V0aWxzL2NuJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtY2FyZCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgW2NsYXNzXT1cImNuKCdyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYm9yZGVyIHRleHQtY2FyZC1mb3JlZ3JvdW5kIHNoYWRvdycsIGNsYXNzKVwiPlxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICBgLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJkQ29tcG9uZW50IHsgQElucHV0KCkgY2xhc3MgPSAnJzsgcHJvdGVjdGVkIGNuID0gY247IH1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtY2FyZC1oZWFkZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYDxkaXYgW2NsYXNzXT1cImNuKCdmbGV4IGZsZXgtY29sIHNwYWNlLXktMS41IHAtNicsIGNsYXNzKVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5gLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJkSGVhZGVyQ29tcG9uZW50IHsgQElucHV0KCkgY2xhc3MgPSAnJzsgcHJvdGVjdGVkIGNuID0gY247IH1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtY2FyZC10aXRsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlOiBgPGgzIFtjbGFzc109XCJjbignZm9udC1zZW1pYm9sZCBsZWFkaW5nLW5vbmUgdHJhY2tpbmctdGlnaHQnLCBjbGFzcylcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9oMz5gLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJkVGl0bGVDb21wb25lbnQgeyBASW5wdXQoKSBjbGFzcyA9ICcnOyBwcm90ZWN0ZWQgY24gPSBjbjsgfVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1jYXJkLWNvbnRlbnQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICB0ZW1wbGF0ZTogYDxkaXYgW2NsYXNzXT1cImNuKCdwLTYgcHQtMCcsIGNsYXNzKVwiPjxuZy1jb250ZW50PjwvbmctY29udGVudD48L2Rpdj5gLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJkQ29udGVudENvbXBvbmVudCB7IEBJbnB1dCgpIGNsYXNzID0gJyc7IHByb3RlY3RlZCBjbiA9IGNuOyB9XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWNhcmQtZm9vdGVyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGU6IGA8ZGl2IFtjbGFzc109XCJjbignZmxleCBpdGVtcy1jZW50ZXIgcC02IHB0LTAnLCBjbGFzcylcIj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+YCxcbn0pXG5leHBvcnQgY2xhc3MgQ2FyZEZvb3RlckNvbXBvbmVudCB7IEBJbnB1dCgpIGNsYXNzID0gJyc7IHByb3RlY3RlZCBjbiA9IGNuOyB9XG4iXX0=
@@ -160,7 +160,7 @@ export class DataTableComponent {
160
160
  </tolle-input>
161
161
  </div>
162
162
 
163
- <div class="rounded-md border border-border bg-background overflow-hidden shadow-sm">
163
+ <div class="rounded-md border border-border overflow-hidden shadow-sm">
164
164
  <table class="w-full text-sm">
165
165
  <thead class="border-b bg-muted/30">
166
166
  <tr>
@@ -256,7 +256,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
256
256
  </tolle-input>
257
257
  </div>
258
258
 
259
- <div class="rounded-md border border-border bg-background overflow-hidden shadow-sm">
259
+ <div class="rounded-md border border-border overflow-hidden shadow-sm">
260
260
  <table class="w-full text-sm">
261
261
  <thead class="border-b bg-muted/30">
262
262
  <tr>
@@ -357,4 +357,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
357
357
  }], expandedTemplate: [{
358
358
  type: Input
359
359
  }] } });
360
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL2RhdGEtdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsS0FBSyxFQUNILGVBQWUsRUFDN0IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQXNHakQsTUFBTSxPQUFPLGtCQUFrQjtJQUNwQixJQUFJLEdBQVUsRUFBRSxDQUFDO0lBQ2pCLE9BQU8sR0FBa0IsRUFBRSxDQUFDO0lBQzVCLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDbEIsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNoQixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixJQUFJLEdBQW1DLFNBQVMsQ0FBQztJQUUxRCx1Q0FBdUM7SUFDOUIsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQyxtREFBbUQ7SUFFakYsc0RBQXNEO0lBQ3RELGdCQUFnQixHQUE0QixFQUFFLENBQUM7SUFDL0MsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUV2QiwyQ0FBMkM7SUFDM0MsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0s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LEVBQUUsY0FBYyxDQUFDO29CQUN6RSxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3RlQ7aUJBQ0Y7OEJBRVUsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFHRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFlK0IsYUFBYTtzQkFBakQsZUFBZTt1QkFBQyxrQkFBa0I7Z0JBRzFCLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZiwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuaW1wb3J0IHtQYWdpbmF0aW9uQ29tcG9uZW50fSBmcm9tICcuL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7VG9sbGVDZWxsRGlyZWN0aXZlfSBmcm9tICcuL3RvbGxlLWNlbGwuZGlyZWN0aXZlJztcbmltcG9ydCB7SW5wdXRDb21wb25lbnR9IGZyb20gJy4vaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb2x1bW4ge1xuICBrZXk6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgc29ydGFibGU/OiBib29sZWFuO1xuICBjbGFzcz86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtZGF0YS10YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBQYWdpbmF0aW9uQ29tcG9uZW50LCBJbnB1dENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInNwYWNlLXktNFwiPlxuICAgICAgPGRpdiAqbmdJZj1cInNlYXJjaGFibGVcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHB5LTJcIj5cbiAgICAgICAgPHRvbGxlLWlucHV0XG4gICAgICAgICAgW3NpemVdPVwic2l6ZSA9PT0gJ2xnJyA/ICdkZWZhdWx0JyA6ICdzbSdcIlxuICAgICAgICAgIGNsYXNzPVwibWF4LXctc21cIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIHJlY29yZHMuLi5cIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goKVwiPlxuICAgICAgICAgIDxpIHByZWZpeCBjbGFzcz1cInJpLXNlYXJjaC1saW5lXCI+PC9pPlxuICAgICAgICA8L3RvbGxlLWlucHV0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYm9yZGVyIGJnLWJhY2tncm91bmQgb3ZlcmZsb3ctaGlkZGVuIHNoYWRvdy1zbVwiPlxuICAgICAgICA8dGFibGUgY2xhc3M9XCJ3LWZ1bGwgdGV4dC1zbVwiPlxuICAgICAgICAgIDx0aGVhZCBjbGFzcz1cImJvcmRlci1iIGJnLW11dGVkLzMwXCI+XG4gICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgIDx0aCAqbmdJZj1cImV4cGFuZGFibGVcIiBbY2xhc3NdPVwiY24oJ3B4LTQnLCBzaXplID09PSAneHMnID8gJ3ctWzMycHhdJyA6ICd3LVs0OHB4XScpXCI+PC90aD5cbiAgICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY24oXG4gICAgICAgICAgICAgICAgICAnZm9udC1tZWRpdW0gdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIHRyYW5zaXRpb24tYWxsJyxcbiAgICAgICAgICAgICAgICAgIGhlYWRlclBhZGRpbmdDbGFzcyxcbiAgICAgICAgICAgICAgICAgIGZvbnRTaXplQ2xhc3MsXG4gICAgICAgICAgICAgICAgICBjb2wuY2xhc3NcbiAgICAgICAgICAgICAgICApXCI+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNvbC5zb3J0YWJsZTsgZWxzZSBzaW1wbGVIZWFkZXJcIiAoY2xpY2spPVwidG9nZ2xlU29ydChjb2wua2V5KVwiIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEgY3Vyc29yLXBvaW50ZXIgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kXCI+XG4gICAgICAgICAgICAgICAgICB7eyBjb2wubGFiZWwgfX1cbiAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCJnZXRTb3J0SWNvbihjb2wua2V5KVwiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbXBsZUhlYWRlcj57eyBjb2wubGFiZWwgfX08L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImRpdmlkZS15IGRpdmlkZS1ib3JkZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHJvdyBvZiBwYWdlZERhdGE7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwiaG92ZXI6YmctbXV0ZWQvNTAgdHJhbnNpdGlvbi1jb2xvcnNcIj5cbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJleHBhbmRhYmxlXCIgY2xhc3M9XCJweC00XCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ0b2dnbGVSb3coaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiY24oXG4gICAgICAgICAgICAgICAgICAgICAgJ2ZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtbWQgaG92ZXI6YmctYWNjZW50IHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQnLFxuICAgICAgICAgICAgICAgICAgICAgIHNpemUgPT09ICd4cycgPyAnaC02IHctNicgOiAnaC04IHctOCdcbiAgICAgICAgICAgICAgICAgICAgKVwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiZXhwYW5kZWRSb3dzLmhhcyhpKSA/ICdyaS1hcnJvdy1kb3duLXMtbGluZScgOiAncmktYXJyb3ctcmlnaHQtcy1saW5lJ1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNuKFxuICAgICAgICAgICAgICAgICAgICAnYWxpZ24tbWlkZGxlIHRyYW5zaXRpb24tYWxsJyxcbiAgICAgICAgICAgICAgICAgICAgY2VsbFBhZGRpbmdDbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemVDbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgY29sLmNsYXNzXG4gICAgICAgICAgICAgICAgICApXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0VGVtcGxhdGUoY29sLmtleSkgYXMgY2VsbDsgZWxzZSBkZWZhdWx0VmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNlbGwudGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiByb3dbY29sLmtleV0sIHJvdzogcm93IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0VmFsdWU+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1mb3JlZ3JvdW5kXCI+e3sgcm93W2NvbC5rZXldIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuXG4gICAgICAgICAgICAgIDx0ciAqbmdJZj1cImV4cGFuZGVkUm93cy5oYXMoaSlcIiBjbGFzcz1cImJnLW11dGVkLzEwXCI+XG4gICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGggKyAoZXhwYW5kYWJsZSA/IDEgOiAwKVwiIGNsYXNzPVwicC0wXCI+XG4gICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtNiBib3JkZXItYiBib3JkZXItZGFzaGVkIGJvcmRlci1ib3JkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZXhwYW5kZWRUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0RXhwYW5kZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHBhbmRlZFRlbXBsYXRlOyBjb250ZXh0OiB7IHJvdzogcm93IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRFeHBhbmRlZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXhzIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBpdGFsaWNcIj5ObyBkZXRhaWxzIGF2YWlsYWJsZS48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICA8L3RhYmxlPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDx0b2xsZS1wYWdpbmF0aW9uXG4gICAgICAgICpuZ0lmPVwicGFnaW5hdGVcIlxuICAgICAgICBbdG90YWxSZWNvcmRzXT1cImZpbHRlcmVkRGF0YS5sZW5ndGhcIlxuICAgICAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgICBbY3VycmVudFBhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgKG9uUGFnZU51bWJlckNoYW5nZSk9XCJ1cGRhdGVQYWdlKClcIlxuICAgICAgICAob25QYWdlU2l6ZUNoYW5nZSk9XCJ1cGRhdGVQYWdlKClcIlxuICAgICAgPjwvdG9sbGUtcGFnaW5hdGlvbj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYXRhVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGRhdGE6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGNvbHVtbnM6IFRhYmxlQ29sdW1uW10gPSBbXTtcbiAgQElucHV0KCkgc2VhcmNoYWJsZSA9IHRydWU7XG4gIEBJbnB1dCgpIHBhZ2luYXRlID0gdHJ1ZTtcbiAgQElucHV0KCkgcGFnZVNpemUgPSAxMDtcbiAgQElucHV0KCkgZXhwYW5kYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBzaXplOiAneHMnIHwgJ3NtJyB8ICdkZWZhdWx0JyB8ICdsZycgPSAnZGVmYXVsdCc7XG5cbiAgLy8gLS0tIE5FVyBJTlBVVFMgRk9SIENPTFVNTiBISURJTkcgLS0tXG4gIEBJbnB1dCgpIGFsbG93Q29sdW1uSGlkaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1NldHRpbmdzID0gdHJ1ZTsgLy8gU2V0IHRvIGZhbHNlIHRvIGhpZGUgdGhlIGdlYXIgaWNvbi9tZW51IGVudGlyZWx5XG5cbiAgLy8gVHJhY2sgdmlzaWJpbGl0eSBzdGF0ZTogeyAnY29sdW1uS2V5JzogdHJ1ZS9mYWxzZSB9XG4gIGNvbHVtblZpc2liaWxpdHk6IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+ID0ge307XG4gIHNob3dDb2x1bW5NZW51ID0gZmFsc2U7XG5cbiAgLy8gRmlsdGVyIGNvbHVtbnMgYmFzZWQgb24gdmlzaWJpbGl0eSBzdGF0ZVxuICBnZXQgYWN0aXZlQ29sdW1ucygpIHtcbiAgICByZXR1cm4gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2wgPT4gdGhpcy5jb2x1bW5WaXNpYmlsaXR5W2NvbC5rZXldKTtcbiAgfVxuXG4gIC8vIFRyYWNrIHdoaWNoIHJvd3MgYXJlIG9wZW5cbiAgZXhwYW5kZWRSb3dzID0gbmV3IFNldDxudW1iZXI+KCk7XG5cbiAgLy8gVXNlIENvbnRlbnRDaGlsZHJlbiB0byBncmFiIHRoZSB0b2xsZUNlbGwgdGVtcGxhdGVzIGZyb20gdGhlIHVzZXIncyBIVE1MXG4gIEBDb250ZW50Q2hpbGRyZW4oVG9sbGVDZWxsRGlyZWN0aXZlKSBjZWxsVGVtcGxhdGVzITogUXVlcnlMaXN0PFRvbGxlQ2VsbERpcmVjdGl2ZT47XG5cbiAgLy8gS2VlcCB0aGlzIGFzIGFuIElucHV0IGZvciB0aGUgbWFpbiBleHBhbnNpb24gc2xvdFxuICBASW5wdXQoKSBleHBhbmRlZFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8YW55PjtcblxuICBmaWx0ZXJlZERhdGE6IGFueVtdID0gW107XG4gIHBhZ2VkRGF0YTogYW55W10gPSBbXTtcbiAgc2VhcmNoVGVybSA9ICcnO1xuICBjdXJyZW50UGFnZSA9IDE7XG4gIHNvcnRLZXkgPSAnJztcbiAgc29ydERpcjogJ2FzYycgfCAnZGVzYycgfCBudWxsID0gbnVsbDtcblxuICAvLyAyLiBNYXAgU2l6ZSB0byBQYWRkaW5nIGZvciBDZWxsc1xuICBnZXQgY2VsbFBhZGRpbmdDbGFzcygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5zaXplKSB7XG4gICAgICBjYXNlICd4cyc6IHJldHVybiAncC0xIHB4LTQnOyAgICAvLyBVbHRyYS1jb21wYWN0XG4gICAgICBjYXNlICdzbSc6IHJldHVybiAncC0yIHB4LTQnOyAgICAvLyBEZW5zZVxuICAgICAgY2FzZSAnbGcnOiByZXR1cm4gJ3AtNiBweC00JzsgICAgLy8gU3BhY2lvdXNcbiAgICAgIGRlZmF1bHQ6ICAgcmV0dXJuICdwLTQnOyAgICAgICAgIC8vIFN0YW5kYXJkICgxNnB4KVxuICAgIH1cbiAgfVxuXG4gIC8vIDMuIE1hcCBTaXplIHRvIFBhZGRpbmcgZm9yIEhlYWRlciAodXN1YWxseSBzbGlnaHRseSBzaG9ydGVyIHRoYW4gY2VsbHMpXG4gIGdldCBoZWFkZXJQYWRkaW5nQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuc2l6ZSkge1xuICAgICAgY2FzZSAneHMnOiByZXR1cm4gJ2gtNyBweC00JztcbiAgICAgIGNhc2UgJ3NtJzogcmV0dXJuICdoLTkgcHgtNCc7XG4gICAgICBjYXNlICdsZyc6IHJldHVybiAnaC0xNCBweC00JztcbiAgICAgIGRlZmF1bHQ6ICAgcmV0dXJuICdoLTEyIHB4LTQnO1xuICAgIH1cbiAgfVxuXG4gIC8vIDQuIE1hcCBTaXplIHRvIEZvbnQgU2l6ZXNcbiAgZ2V0IGZvbnRTaXplQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuc2l6ZSkge1xuICAgICAgY2FzZSAneHMnOiByZXR1cm4gJ3RleHQtWzExcHhdJztcbiAgICAgIGNhc2UgJ3NtJzogcmV0dXJuICd0ZXh0LXhzJztcbiAgICAgIGNhc2UgJ2xnJzogcmV0dXJuICd0ZXh0LWJhc2UnO1xuICAgICAgZGVmYXVsdDogICByZXR1cm4gJ3RleHQtc20nO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBjbiA9IGNuO1xuXG4gIG5nT25Jbml0KCkgeyB0aGlzLnJlZnJlc2hUYWJsZSgpOyB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydkYXRhJ10pIHsgdGhpcy5yZWZyZXNoVGFibGUoKTsgfVxuICAgIGlmIChjaGFuZ2VzWydjb2x1bW5zJ10pIHsgdGhpcy5pbml0aWFsaXplVmlzaWJpbGl0eSgpOyB9XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVWaXNpYmlsaXR5KCkge1xuICAgIC8vIERlZmF1bHQgYWxsIGNvbHVtbnMgdG8gdmlzaWJsZSBpZiBub3QgYWxyZWFkeSBzZXRcbiAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xuICAgICAgaWYgKHRoaXMuY29sdW1uVmlzaWJpbGl0eVtjb2wua2V5XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuY29sdW1uVmlzaWJpbGl0eVtjb2wua2V5XSA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyAtLS0gU2VhcmNoICYgU29ydCAmIFBhZ2UgTG9naWMgLS0tXG4gIC8vIChZb3VyIGV4aXN0aW5nIGltcGxlbWVudGF0aW9uIG9mIGFwcGx5U2VhcmNoLCBhcHBseVNvcnQsIGFuZCB1cGRhdGVQYWdlIGdvZXMgaGVyZSlcbiAgcmVmcmVzaFRhYmxlKCkgeyB0aGlzLmFwcGx5U2VhcmNoKCk7IHRoaXMuYXBwbHlTb3J0KCk7IHRoaXMudXBkYXRlUGFnZSgpOyB9XG4gIG9uU2VhcmNoKCkgeyB0aGlzLmN1cnJlbnRQYWdlID0gMTsgdGhpcy5yZWZyZXNoVGFibGUoKTsgfVxuXG4gIHRvZ2dsZUNvbHVtbihrZXk6IHN0cmluZykge1xuICAgIHRoaXMuY29sdW1uVmlzaWJpbGl0eVtrZXldID0gIXRoaXMuY29sdW1uVmlzaWJpbGl0eVtrZXldO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVNlYXJjaCgpIHtcbiAgICBpZiAoIXRoaXMuc2VhcmNoVGVybSkgeyB0aGlzLmZpbHRlcmVkRGF0YSA9IFsuLi50aGlzLmRhdGFdOyByZXR1cm47IH1cbiAgICBjb25zdCBxID0gdGhpcy5zZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCk7XG4gICAgdGhpcy5maWx0ZXJlZERhdGEgPSB0aGlzLmRhdGEuZmlsdGVyKHJvdyA9PlxuICAgICAgT2JqZWN0LnZhbHVlcyhyb3cpLnNvbWUodmFsID0+IFN0cmluZyh2YWwpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTb3J0KCkge1xuICAgIGlmICghdGhpcy5zb3J0S2V5IHx8ICF0aGlzLnNvcnREaXIpIHJldHVybjtcbiAgICB0aGlzLmZpbHRlcmVkRGF0YS5zb3J0KChhLCBiKSA9PiB7XG4gICAgICBjb25zdCB2YWxBID0gYVt0aGlzLnNvcnRLZXldOyBjb25zdCB2YWxCID0gYlt0aGlzLnNvcnRLZXldO1xuICAgICAgaWYgKHZhbEEgPCB2YWxCKSByZXR1cm4gdGhpcy5zb3J0RGlyID09PSAnYXNjJyA/IC0xIDogMTtcbiAgICAgIGlmICh2YWxBID4gdmFsQikgcmV0dXJuIHRoaXMuc29ydERpciA9PT0gJ2FzYycgPyAxIDogLTE7XG4gICAgICByZXR1cm4gMDtcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVBhZ2UoKSB7XG4gICAgaWYgKCF0aGlzLnBhZ2luYXRlKSB7IHRoaXMucGFnZWREYXRhID0gdGhpcy5maWx0ZXJlZERhdGE7IHJldHVybjsgfVxuICAgIGNvbnN0IHN0YXJ0ID0gKHRoaXMuY3VycmVudFBhZ2UgLSAxKSAqIHRoaXMucGFnZVNpemU7XG4gICAgY29uc3QgZW5kID0gc3RhcnQgKyB0aGlzLnBhZ2VTaXplO1xuICAgIHRoaXMucGFnZWREYXRhID0gdGhpcy5maWx0ZXJlZERhdGEuc2xpY2Uoc3RhcnQsIGVuZCk7XG4gIH1cblxuICAvLyAtLS0gSGVscGVycyAtLS1cbiAgdG9nZ2xlU29ydChrZXk6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnNvcnRLZXkgPT09IGtleSkge1xuICAgICAgdGhpcy5zb3J0RGlyID0gdGhpcy5zb3J0RGlyID09PSAnYXNjJyA/ICdkZXNjJyA6IHRoaXMuc29ydERpciA9PT0gJ2Rlc2MnID8gbnVsbCA6ICdhc2MnO1xuICAgIH0gZWxzZSB7IHRoaXMuc29ydEtleSA9IGtleTsgdGhpcy5zb3J0RGlyID0gJ2FzYyc7IH1cbiAgICB0aGlzLnJlZnJlc2hUYWJsZSgpO1xuICB9XG5cbiAgZ2V0U29ydEljb24oa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zb3J0S2V5ICE9PSBrZXkgfHwgIXRoaXMuc29ydERpcikgcmV0dXJuICdyaS1hcnJvdy11cC1kb3duLWxpbmUgb3BhY2l0eS0zMCc7XG4gICAgcmV0dXJuIHRoaXMuc29ydERpciA9PT0gJ2FzYycgPyAncmktYXJyb3ctdXAtbGluZScgOiAncmktYXJyb3ctZG93bi1saW5lJztcbiAgfVxuXG4gIHRvZ2dsZVJvdyhpbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuZXhwYW5kZWRSb3dzLmhhcyhpbmRleCkpIHRoaXMuZXhwYW5kZWRSb3dzLmRlbGV0ZShpbmRleCk7XG4gICAgZWxzZSB0aGlzLmV4cGFuZGVkUm93cy5hZGQoaW5kZXgpO1xuICB9XG5cbiAgLy8gSGVscGVyIHRvIGZpbmQgdGhlIHJpZ2h0IGNlbGwgdGVtcGxhdGVcbiAgZ2V0VGVtcGxhdGUoa2V5OiBzdHJpbmcpOiBUb2xsZUNlbGxEaXJlY3RpdmUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmNlbGxUZW1wbGF0ZXM/LmZpbmQodCA9PiB0Lm5hbWUgPT09IGtleSk7XG4gIH1cbn1cbiJdfQ==
360
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy90b2xsZS9zcmMvbGliL2RhdGEtdGFibGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQUUsS0FBSyxFQUNILGVBQWUsRUFDN0IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQzs7OztBQXNHakQsTUFBTSxPQUFPLGtCQUFrQjtJQUNwQixJQUFJLEdBQVUsRUFBRSxDQUFDO0lBQ2pCLE9BQU8sR0FBa0IsRUFBRSxDQUFDO0lBQzVCLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDbEIsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNoQixRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ2QsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixJQUFJLEdBQW1DLFNBQVMsQ0FBQztJQUUxRCx1Q0FBdUM7SUFDOUIsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ3pCLFlBQVksR0FBRyxJQUFJLENBQUMsQ0FBQyxtREFBbUQ7SUFFakYsc0RBQXNEO0lBQ3RELGdCQUFnQixHQUE0QixFQUFFLENBQUM7SUFDL0MsY0FBYyxHQUFHLEtBQUssQ0FBQztJQUV2QiwyQ0FBMkM7SUFDM0MsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsNEJBQTRCO0lBQzVCLFlBQVksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBRWpDLDJFQUEyRTtJQUN0QyxhQUFhLENBQWlDO0lBRW5GLG9EQUFvRDtJQUMzQyxnQkFBZ0IsQ0FBb0I7SUFFN0MsWUFBWSxHQUFVLEVBQUUsQ0FBQztJQUN6QixTQUFTLEdBQVUsRUFBRSxDQUFDO0lBQ3RCLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDaEIsV0FBVyxHQUFHLENBQUMsQ0FBQztJQUNoQixPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ2IsT0FBTyxHQUEwQixJQUFJLENBQUM7SUFFdEMsbUNBQW1DO0lBQ25DLElBQUksZ0JBQWdCO1FBQ2xCLFFBQVEsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2xCLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxVQUFVLENBQUMsQ0FBSSxnQkFBZ0I7WUFDakQsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxDQUFJLFFBQVE7WUFDekMsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLFVBQVUsQ0FBQyxDQUFJLFdBQVc7WUFDNUMsT0FBTyxDQUFDLENBQUcsT0FBTyxLQUFLLENBQUMsQ0FBUyxrQkFBa0I7UUFDckQsQ0FBQztJQUNILENBQUM7SUFFRCwwRUFBMEU7SUFDMUUsSUFBSSxrQkFBa0I7UUFDcEIsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLFVBQVUsQ0FBQztZQUM3QixLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sVUFBVSxDQUFDO1lBQzdCLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxXQUFXLENBQUM7WUFDOUIsT0FBTyxDQUFDLENBQUcsT0FBTyxXQUFXLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFRCw0QkFBNEI7SUFDNUIsSUFBSSxhQUFhO1FBQ2YsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLGFBQWEsQ0FBQztZQUNoQyxLQUFLLElBQUksQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDO1lBQzVCLEtBQUssSUFBSSxDQUFDLENBQUMsT0FBTyxXQUFXLENBQUM7WUFDOUIsT0FBTyxDQUFDLENBQUcsT0FBTyxTQUFTLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFUyxFQUFFLEdBQUcsRUFBRSxDQUFDO0lBRWxCLFFBQVEsS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRW5DLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQUMsQ0FBQztRQUM3QyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFBQyxDQUFDO0lBQzFELENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsb0RBQW9EO1FBQ3BELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDakQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDeEMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHFDQUFxQztJQUNyQyxxRkFBcUY7SUFDckYsWUFBWSxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0UsUUFBUSxLQUFLLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUV6RCxZQUFZLENBQUMsR0FBVztRQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQ3JFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUN6QyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDdEUsQ0FBQztJQUNKLENBQUM7SUFFTyxTQUFTO1FBQ2YsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU87UUFDM0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDM0QsSUFBSSxJQUFJLEdBQUcsSUFBSTtnQkFBRSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hELElBQUksSUFBSSxHQUFHLElBQUk7Z0JBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO1lBQUMsT0FBTztRQUFDLENBQUM7UUFDbkUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDckQsTUFBTSxHQUFHLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixVQUFVLENBQUMsR0FBVztRQUNwQixJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDMUYsQ0FBQzthQUFNLENBQUM7WUFBQyxJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQztZQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFXO1FBQ3JCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUFFLE9BQU8sa0NBQWtDLENBQUM7UUFDckYsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO0lBQzVFLENBQUM7SUFFRCxTQUFTLENBQUMsS0FBYTtRQUNyQixJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDOztZQUM3RCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQseUNBQXlDO0lBQ3pDLFdBQVcsQ0FBQyxHQUFXO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7d0dBN0lVLGtCQUFrQjs0RkFBbEIsa0JBQWtCLGtYQTBCWixrQkFBa0Isa0RBcEh6Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdGVCwyREF6RlMsWUFBWSxzYUFBRSxXQUFXLCtWQUFFLG1CQUFtQixnU0FBRSxjQUFjOzs0RkEyRjdELGtCQUFrQjtrQkE5RjlCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsY0FBYyxDQUFDO29CQUN6RSxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3RlQ7aUJBQ0Y7OEJBRVUsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFHRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFlK0IsYUFBYTtzQkFBakQsZUFBZTt1QkFBQyxrQkFBa0I7Z0JBRzFCLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZiwgQ29udGVudENoaWxkcmVuLCBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuaW1wb3J0IHtQYWdpbmF0aW9uQ29tcG9uZW50fSBmcm9tICcuL3BhZ2luYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7VG9sbGVDZWxsRGlyZWN0aXZlfSBmcm9tICcuL3RvbGxlLWNlbGwuZGlyZWN0aXZlJztcbmltcG9ydCB7SW5wdXRDb21wb25lbnR9IGZyb20gJy4vaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCBpbnRlcmZhY2UgVGFibGVDb2x1bW4ge1xuICBrZXk6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgc29ydGFibGU/OiBib29sZWFuO1xuICBjbGFzcz86IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9sbGUtZGF0YS10YWJsZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBQYWdpbmF0aW9uQ29tcG9uZW50LCBJbnB1dENvbXBvbmVudF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInNwYWNlLXktNFwiPlxuICAgICAgPGRpdiAqbmdJZj1cInNlYXJjaGFibGVcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIHB5LTJcIj5cbiAgICAgICAgPHRvbGxlLWlucHV0XG4gICAgICAgICAgW3NpemVdPVwic2l6ZSA9PT0gJ2xnJyA/ICdkZWZhdWx0JyA6ICdzbSdcIlxuICAgICAgICAgIGNsYXNzPVwibWF4LXctc21cIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRmlsdGVyIHJlY29yZHMuLi5cIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGVybVwiXG4gICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goKVwiPlxuICAgICAgICAgIDxpIHByZWZpeCBjbGFzcz1cInJpLXNlYXJjaC1saW5lXCI+PC9pPlxuICAgICAgICA8L3RvbGxlLWlucHV0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYm9yZGVyIG92ZXJmbG93LWhpZGRlbiBzaGFkb3ctc21cIj5cbiAgICAgICAgPHRhYmxlIGNsYXNzPVwidy1mdWxsIHRleHQtc21cIj5cbiAgICAgICAgICA8dGhlYWQgY2xhc3M9XCJib3JkZXItYiBiZy1tdXRlZC8zMFwiPlxuICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICA8dGggKm5nSWY9XCJleHBhbmRhYmxlXCIgW2NsYXNzXT1cImNuKCdweC00Jywgc2l6ZSA9PT0gJ3hzJyA/ICd3LVszMnB4XScgOiAndy1bNDhweF0nKVwiPjwvdGg+XG4gICAgICAgICAgICAgIDx0aCAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNuKFxuICAgICAgICAgICAgICAgICAgJ2ZvbnQtbWVkaXVtIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWFsbCcsXG4gICAgICAgICAgICAgICAgICBoZWFkZXJQYWRkaW5nQ2xhc3MsXG4gICAgICAgICAgICAgICAgICBmb250U2l6ZUNsYXNzLFxuICAgICAgICAgICAgICAgICAgY29sLmNsYXNzXG4gICAgICAgICAgICAgICAgKVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjb2wuc29ydGFibGU7IGVsc2Ugc2ltcGxlSGVhZGVyXCIgKGNsaWNrKT1cInRvZ2dsZVNvcnQoY29sLmtleSlcIiBjbGFzcz1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xIGN1cnNvci1wb2ludGVyIGhvdmVyOnRleHQtZm9yZWdyb3VuZFwiPlxuICAgICAgICAgICAgICAgICAge3sgY29sLmxhYmVsIH19XG4gICAgICAgICAgICAgICAgICA8aSBbY2xhc3NdPVwiZ2V0U29ydEljb24oY29sLmtleSlcIj48L2k+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNzaW1wbGVIZWFkZXI+e3sgY29sLmxhYmVsIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJkaXZpZGUteSBkaXZpZGUtYm9yZGVyXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCByb3cgb2YgcGFnZWREYXRhOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgIDx0ciBjbGFzcz1cImhvdmVyOmJnLW11dGVkLzUwIHRyYW5zaXRpb24tY29sb3JzXCI+XG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiZXhwYW5kYWJsZVwiIGNsYXNzPVwicHgtNFwiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwidG9nZ2xlUm93KGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cImNuKFxuICAgICAgICAgICAgICAgICAgICAgICdmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLW1kIGhvdmVyOmJnLWFjY2VudCB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1mb3JlZ3JvdW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICBzaXplID09PSAneHMnID8gJ2gtNiB3LTYnIDogJ2gtOCB3LTgnXG4gICAgICAgICAgICAgICAgICAgIClcIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgW2NsYXNzXT1cImV4cGFuZGVkUm93cy5oYXMoaSkgPyAncmktYXJyb3ctZG93bi1zLWxpbmUnIDogJ3JpLWFycm93LXJpZ2h0LXMtbGluZSdcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJjbihcbiAgICAgICAgICAgICAgICAgICAgJ2FsaWduLW1pZGRsZSB0cmFuc2l0aW9uLWFsbCcsXG4gICAgICAgICAgICAgICAgICAgIGNlbGxQYWRkaW5nQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplQ2xhc3MsXG4gICAgICAgICAgICAgICAgICAgIGNvbC5jbGFzc1xuICAgICAgICAgICAgICAgICAgKVwiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldFRlbXBsYXRlKGNvbC5rZXkpIGFzIGNlbGw7IGVsc2UgZGVmYXVsdFZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjZWxsLnRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogcm93W2NvbC5rZXldLCByb3c6IHJvdyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFZhbHVlPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZm9yZWdyb3VuZFwiPnt7IHJvd1tjb2wua2V5XSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgPC90cj5cblxuICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJleHBhbmRlZFJvd3MuaGFzKGkpXCIgY2xhc3M9XCJiZy1tdXRlZC8xMFwiPlxuICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMubGVuZ3RoICsgKGV4cGFuZGFibGUgPyAxIDogMClcIiBjbGFzcz1cInAtMFwiPlxuICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTYgYm9yZGVyLWIgYm9yZGVyLWRhc2hlZCBib3JkZXItYm9yZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImV4cGFuZGVkVGVtcGxhdGU7IGVsc2UgZGVmYXVsdEV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXhwYW5kZWRUZW1wbGF0ZTsgY29udGV4dDogeyByb3c6IHJvdyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0RXhwYW5kZWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC14cyB0ZXh0LW11dGVkLWZvcmVncm91bmQgaXRhbGljXCI+Tm8gZGV0YWlscyBhdmFpbGFibGUuPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgPC90YWJsZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8dG9sbGUtcGFnaW5hdGlvblxuICAgICAgICAqbmdJZj1cInBhZ2luYXRlXCJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJmaWx0ZXJlZERhdGEubGVuZ3RoXCJcbiAgICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcbiAgICAgICAgW2N1cnJlbnRQYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgIChvblBhZ2VOdW1iZXJDaGFuZ2UpPVwidXBkYXRlUGFnZSgpXCJcbiAgICAgICAgKG9uUGFnZVNpemVDaGFuZ2UpPVwidXBkYXRlUGFnZSgpXCJcbiAgICAgID48L3RvbGxlLXBhZ2luYXRpb24+XG4gICAgPC9kaXY+XG4gIGBcbn0pXG5leHBvcnQgY2xhc3MgRGF0YVRhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBkYXRhOiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBjb2x1bW5zOiBUYWJsZUNvbHVtbltdID0gW107XG4gIEBJbnB1dCgpIHNlYXJjaGFibGUgPSB0cnVlO1xuICBASW5wdXQoKSBwYWdpbmF0ZSA9IHRydWU7XG4gIEBJbnB1dCgpIHBhZ2VTaXplID0gMTA7XG4gIEBJbnB1dCgpIGV4cGFuZGFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2l6ZTogJ3hzJyB8ICdzbScgfCAnZGVmYXVsdCcgfCAnbGcnID0gJ2RlZmF1bHQnO1xuXG4gIC8vIC0tLSBORVcgSU5QVVRTIEZPUiBDT0xVTU4gSElESU5HIC0tLVxuICBASW5wdXQoKSBhbGxvd0NvbHVtbkhpZGluZyA9IHRydWU7XG4gIEBJbnB1dCgpIHNob3dTZXR0aW5ncyA9IHRydWU7IC8vIFNldCB0byBmYWxzZSB0byBoaWRlIHRoZSBnZWFyIGljb24vbWVudSBlbnRpcmVseVxuXG4gIC8vIFRyYWNrIHZpc2liaWxpdHkgc3RhdGU6IHsgJ2NvbHVtbktleSc6IHRydWUvZmFsc2UgfVxuICBjb2x1bW5WaXNpYmlsaXR5OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuICBzaG93Q29sdW1uTWVudSA9IGZhbHNlO1xuXG4gIC8vIEZpbHRlciBjb2x1bW5zIGJhc2VkIG9uIHZpc2liaWxpdHkgc3RhdGVcbiAgZ2V0IGFjdGl2ZUNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+IHRoaXMuY29sdW1uVmlzaWJpbGl0eVtjb2wua2V5XSk7XG4gIH1cblxuICAvLyBUcmFjayB3aGljaCByb3dzIGFyZSBvcGVuXG4gIGV4cGFuZGVkUm93cyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuXG4gIC8vIFVzZSBDb250ZW50Q2hpbGRyZW4gdG8gZ3JhYiB0aGUgdG9sbGVDZWxsIHRlbXBsYXRlcyBmcm9tIHRoZSB1c2VyJ3MgSFRNTFxuICBAQ29udGVudENoaWxkcmVuKFRvbGxlQ2VsbERpcmVjdGl2ZSkgY2VsbFRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxUb2xsZUNlbGxEaXJlY3RpdmU+O1xuXG4gIC8vIEtlZXAgdGhpcyBhcyBhbiBJbnB1dCBmb3IgdGhlIG1haW4gZXhwYW5zaW9uIHNsb3RcbiAgQElucHV0KCkgZXhwYW5kZWRUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgZmlsdGVyZWREYXRhOiBhbnlbXSA9IFtdO1xuICBwYWdlZERhdGE6IGFueVtdID0gW107XG4gIHNlYXJjaFRlcm0gPSAnJztcbiAgY3VycmVudFBhZ2UgPSAxO1xuICBzb3J0S2V5ID0gJyc7XG4gIHNvcnREaXI6ICdhc2MnIHwgJ2Rlc2MnIHwgbnVsbCA9IG51bGw7XG5cbiAgLy8gMi4gTWFwIFNpemUgdG8gUGFkZGluZyBmb3IgQ2VsbHNcbiAgZ2V0IGNlbGxQYWRkaW5nQ2xhc3MoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMuc2l6ZSkge1xuICAgICAgY2FzZSAneHMnOiByZXR1cm4gJ3AtMSBweC00JzsgICAgLy8gVWx0cmEtY29tcGFjdFxuICAgICAgY2FzZSAnc20nOiByZXR1cm4gJ3AtMiBweC00JzsgICAgLy8gRGVuc2VcbiAgICAgIGNhc2UgJ2xnJzogcmV0dXJuICdwLTYgcHgtNCc7ICAgIC8vIFNwYWNpb3VzXG4gICAgICBkZWZhdWx0OiAgIHJldHVybiAncC00JzsgICAgICAgICAvLyBTdGFuZGFyZCAoMTZweClcbiAgICB9XG4gIH1cblxuICAvLyAzLiBNYXAgU2l6ZSB0byBQYWRkaW5nIGZvciBIZWFkZXIgKHVzdWFsbHkgc2xpZ2h0bHkgc2hvcnRlciB0aGFuIGNlbGxzKVxuICBnZXQgaGVhZGVyUGFkZGluZ0NsYXNzKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnNpemUpIHtcbiAgICAgIGNhc2UgJ3hzJzogcmV0dXJuICdoLTcgcHgtNCc7XG4gICAgICBjYXNlICdzbSc6IHJldHVybiAnaC05IHB4LTQnO1xuICAgICAgY2FzZSAnbGcnOiByZXR1cm4gJ2gtMTQgcHgtNCc7XG4gICAgICBkZWZhdWx0OiAgIHJldHVybiAnaC0xMiBweC00JztcbiAgICB9XG4gIH1cblxuICAvLyA0LiBNYXAgU2l6ZSB0byBGb250IFNpemVzXG4gIGdldCBmb250U2l6ZUNsYXNzKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnNpemUpIHtcbiAgICAgIGNhc2UgJ3hzJzogcmV0dXJuICd0ZXh0LVsxMXB4XSc7XG4gICAgICBjYXNlICdzbSc6IHJldHVybiAndGV4dC14cyc7XG4gICAgICBjYXNlICdsZyc6IHJldHVybiAndGV4dC1iYXNlJztcbiAgICAgIGRlZmF1bHQ6ICAgcmV0dXJuICd0ZXh0LXNtJztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgY24gPSBjbjtcblxuICBuZ09uSW5pdCgpIHsgdGhpcy5yZWZyZXNoVGFibGUoKTsgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddKSB7IHRoaXMucmVmcmVzaFRhYmxlKCk7IH1cbiAgICBpZiAoY2hhbmdlc1snY29sdW1ucyddKSB7IHRoaXMuaW5pdGlhbGl6ZVZpc2liaWxpdHkoKTsgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVmlzaWJpbGl0eSgpIHtcbiAgICAvLyBEZWZhdWx0IGFsbCBjb2x1bW5zIHRvIHZpc2libGUgaWYgbm90IGFscmVhZHkgc2V0XG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goY29sID0+IHtcbiAgICAgIGlmICh0aGlzLmNvbHVtblZpc2liaWxpdHlbY29sLmtleV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmNvbHVtblZpc2liaWxpdHlbY29sLmtleV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gLS0tIFNlYXJjaCAmIFNvcnQgJiBQYWdlIExvZ2ljIC0tLVxuICAvLyAoWW91ciBleGlzdGluZyBpbXBsZW1lbnRhdGlvbiBvZiBhcHBseVNlYXJjaCwgYXBwbHlTb3J0LCBhbmQgdXBkYXRlUGFnZSBnb2VzIGhlcmUpXG4gIHJlZnJlc2hUYWJsZSgpIHsgdGhpcy5hcHBseVNlYXJjaCgpOyB0aGlzLmFwcGx5U29ydCgpOyB0aGlzLnVwZGF0ZVBhZ2UoKTsgfVxuICBvblNlYXJjaCgpIHsgdGhpcy5jdXJyZW50UGFnZSA9IDE7IHRoaXMucmVmcmVzaFRhYmxlKCk7IH1cblxuICB0b2dnbGVDb2x1bW4oa2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmNvbHVtblZpc2liaWxpdHlba2V5XSA9ICF0aGlzLmNvbHVtblZpc2liaWxpdHlba2V5XTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlTZWFyY2goKSB7XG4gICAgaWYgKCF0aGlzLnNlYXJjaFRlcm0pIHsgdGhpcy5maWx0ZXJlZERhdGEgPSBbLi4udGhpcy5kYXRhXTsgcmV0dXJuOyB9XG4gICAgY29uc3QgcSA9IHRoaXMuc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpO1xuICAgIHRoaXMuZmlsdGVyZWREYXRhID0gdGhpcy5kYXRhLmZpbHRlcihyb3cgPT5cbiAgICAgIE9iamVjdC52YWx1ZXMocm93KS5zb21lKHZhbCA9PiBTdHJpbmcodmFsKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5U29ydCgpIHtcbiAgICBpZiAoIXRoaXMuc29ydEtleSB8fCAhdGhpcy5zb3J0RGlyKSByZXR1cm47XG4gICAgdGhpcy5maWx0ZXJlZERhdGEuc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgdmFsQSA9IGFbdGhpcy5zb3J0S2V5XTsgY29uc3QgdmFsQiA9IGJbdGhpcy5zb3J0S2V5XTtcbiAgICAgIGlmICh2YWxBIDwgdmFsQikgcmV0dXJuIHRoaXMuc29ydERpciA9PT0gJ2FzYycgPyAtMSA6IDE7XG4gICAgICBpZiAodmFsQSA+IHZhbEIpIHJldHVybiB0aGlzLnNvcnREaXIgPT09ICdhc2MnID8gMSA6IC0xO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVQYWdlKCkge1xuICAgIGlmICghdGhpcy5wYWdpbmF0ZSkgeyB0aGlzLnBhZ2VkRGF0YSA9IHRoaXMuZmlsdGVyZWREYXRhOyByZXR1cm47IH1cbiAgICBjb25zdCBzdGFydCA9ICh0aGlzLmN1cnJlbnRQYWdlIC0gMSkgKiB0aGlzLnBhZ2VTaXplO1xuICAgIGNvbnN0IGVuZCA9IHN0YXJ0ICsgdGhpcy5wYWdlU2l6ZTtcbiAgICB0aGlzLnBhZ2VkRGF0YSA9IHRoaXMuZmlsdGVyZWREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgLy8gLS0tIEhlbHBlcnMgLS0tXG4gIHRvZ2dsZVNvcnQoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zb3J0S2V5ID09PSBrZXkpIHtcbiAgICAgIHRoaXMuc29ydERpciA9IHRoaXMuc29ydERpciA9PT0gJ2FzYycgPyAnZGVzYycgOiB0aGlzLnNvcnREaXIgPT09ICdkZXNjJyA/IG51bGwgOiAnYXNjJztcbiAgICB9IGVsc2UgeyB0aGlzLnNvcnRLZXkgPSBrZXk7IHRoaXMuc29ydERpciA9ICdhc2MnOyB9XG4gICAgdGhpcy5yZWZyZXNoVGFibGUoKTtcbiAgfVxuXG4gIGdldFNvcnRJY29uKGtleTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc29ydEtleSAhPT0ga2V5IHx8ICF0aGlzLnNvcnREaXIpIHJldHVybiAncmktYXJyb3ctdXAtZG93bi1saW5lIG9wYWNpdHktMzAnO1xuICAgIHJldHVybiB0aGlzLnNvcnREaXIgPT09ICdhc2MnID8gJ3JpLWFycm93LXVwLWxpbmUnIDogJ3JpLWFycm93LWRvd24tbGluZSc7XG4gIH1cblxuICB0b2dnbGVSb3coaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmV4cGFuZGVkUm93cy5oYXMoaW5kZXgpKSB0aGlzLmV4cGFuZGVkUm93cy5kZWxldGUoaW5kZXgpO1xuICAgIGVsc2UgdGhpcy5leHBhbmRlZFJvd3MuYWRkKGluZGV4KTtcbiAgfVxuXG4gIC8vIEhlbHBlciB0byBmaW5kIHRoZSByaWdodCBjZWxsIHRlbXBsYXRlXG4gIGdldFRlbXBsYXRlKGtleTogc3RyaW5nKTogVG9sbGVDZWxsRGlyZWN0aXZlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jZWxsVGVtcGxhdGVzPy5maW5kKHQgPT4gdC5uYW1lID09PSBrZXkpO1xuICB9XG59XG4iXX0=
@@ -15,6 +15,15 @@ export class DatePickerComponent {
15
15
  disabled = false;
16
16
  class = '';
17
17
  disablePastDates = false;
18
+ showClear = true;
19
+ showQuickActions = true;
20
+ minDate;
21
+ maxDate;
22
+ mode = 'date';
23
+ formatMonthFn;
24
+ formatYearFn;
25
+ // Format functions for display
26
+ displayFormat;
18
27
  triggerContainer;
19
28
  popover;
20
29
  value = null;
@@ -24,12 +33,56 @@ export class DatePickerComponent {
24
33
  constructor(cdr) {
25
34
  this.cdr = cdr;
26
35
  }
27
- // --- Logic ---
36
+ getMask() {
37
+ switch (this.mode) {
38
+ case 'date': return '00/00/0000';
39
+ case 'month': return '00/0000';
40
+ case 'year': return '0000';
41
+ default: return '00/00/0000';
42
+ }
43
+ }
44
+ getPlaceholder() {
45
+ switch (this.mode) {
46
+ case 'date': return 'MM/DD/YYYY';
47
+ case 'month': return 'MM/YYYY';
48
+ case 'year': return 'YYYY';
49
+ default: return 'MM/DD/YYYY';
50
+ }
51
+ }
52
+ getFormatString() {
53
+ switch (this.mode) {
54
+ case 'date': return 'MM/dd/yyyy';
55
+ case 'month': return 'MM/yyyy';
56
+ case 'year': return 'yyyy';
57
+ default: return 'MM/dd/yyyy';
58
+ }
59
+ }
60
+ formatDate(date) {
61
+ if (this.displayFormat) {
62
+ return this.displayFormat(date, this.mode);
63
+ }
64
+ switch (this.mode) {
65
+ case 'date': return format(date, 'MM/dd/yyyy');
66
+ case 'month': return format(date, 'MM/yyyy');
67
+ case 'year': return format(date, 'yyyy');
68
+ default: return format(date, 'MM/dd/yyyy');
69
+ }
70
+ }
71
+ parseDate(str) {
72
+ try {
73
+ const parsed = parse(str, this.getFormatString(), new Date());
74
+ return isValid(parsed) ? startOfDay(parsed) : null;
75
+ }
76
+ catch {
77
+ return null;
78
+ }
79
+ }
28
80
  onInputChange(str) {
29
- if (str?.length === 10) {
30
- const parsed = parse(str, 'MM/dd/yyyy', new Date());
31
- if (isValid(parsed)) {
32
- this.value = startOfDay(parsed);
81
+ const expectedLength = this.getFormatString().replace(/[^0]/g, '').length;
82
+ if (str?.length === expectedLength) {
83
+ const parsed = this.parseDate(str);
84
+ if (parsed) {
85
+ this.value = parsed;
33
86
  this.onChange(this.value);
34
87
  }
35
88
  }
@@ -40,12 +93,17 @@ export class DatePickerComponent {
40
93
  }
41
94
  onCalendarChange(date) {
42
95
  this.value = date;
43
- this.inputValue = format(date, 'MM/dd/yyyy');
96
+ if (date) {
97
+ this.inputValue = this.formatDate(date);
98
+ }
99
+ else {
100
+ this.inputValue = '';
101
+ }
44
102
  this.onChange(this.value);
45
103
  this.close();
46
104
  }
47
105
  togglePopover(event) {
48
- event.stopPropagation(); // Prevent bubbling to document
106
+ event.stopPropagation();
49
107
  if (this.disabled)
50
108
  return;
51
109
  this.isOpen ? this.close() : this.open();
@@ -60,22 +118,27 @@ export class DatePickerComponent {
60
118
  this.cleanupAutoUpdate();
61
119
  }
62
120
  clear(event) {
63
- event.stopPropagation(); // CRITICAL: Stop the calendar from opening
121
+ event.stopPropagation();
64
122
  this.value = null;
65
123
  this.inputValue = '';
66
124
  this.onChange(null);
67
125
  this.cdr.markForCheck();
68
126
  }
69
- // --- Positioning ---
70
127
  updatePosition() {
71
128
  if (!this.triggerContainer || !this.popover)
72
129
  return;
73
130
  this.cleanupAutoUpdate = autoUpdate(this.triggerContainer.nativeElement, this.popover.nativeElement, () => {
74
131
  computePosition(this.triggerContainer.nativeElement, this.popover.nativeElement, {
75
- placement: 'bottom-end', // Aligned to the right where the icon is
76
- middleware: [offset(4), flip(), shift({ padding: 8 })],
77
- }).then(({ x, y }) => {
132
+ strategy: 'fixed', // ADDED: Fixed strategy
133
+ placement: 'bottom-start', // Changed to bottom-start to align with input left edge
134
+ middleware: [
135
+ offset(4),
136
+ flip(),
137
+ shift({ padding: 8 })
138
+ ],
139
+ }).then(({ x, y, strategy }) => {
78
140
  Object.assign(this.popover.nativeElement.style, {
141
+ position: strategy,
79
142
  left: `${x}px`,
80
143
  top: `${y}px`,
81
144
  visibility: 'visible',
@@ -90,7 +153,7 @@ export class DatePickerComponent {
90
153
  this.close();
91
154
  }
92
155
  }
93
- // --- CVA ---
156
+ // CVA Implementation
94
157
  onChange = () => { };
95
158
  onTouched = () => { };
96
159
  writeValue(val) {
@@ -98,7 +161,7 @@ export class DatePickerComponent {
98
161
  const date = new Date(val);
99
162
  if (isValid(date)) {
100
163
  this.value = startOfDay(date);
101
- this.inputValue = format(this.value, 'MM/dd/yyyy');
164
+ this.inputValue = this.formatDate(this.value);
102
165
  }
103
166
  }
104
167
  else {
@@ -112,7 +175,7 @@ export class DatePickerComponent {
112
175
  setDisabledState(isDisabled) { this.disabled = isDisabled; }
113
176
  cn = cn;
114
177
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DatePickerComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
115
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DatePickerComponent, isStandalone: true, selector: "tolle-date-picker", inputs: { placeholder: "placeholder", disabled: "disabled", class: "class", disablePastDates: "disablePastDates" }, host: { listeners: { "document:mousedown": "onClickOutside($event)" } }, providers: [
178
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DatePickerComponent, isStandalone: true, selector: "tolle-date-picker", inputs: { placeholder: "placeholder", disabled: "disabled", class: "class", disablePastDates: "disablePastDates", showClear: "showClear", showQuickActions: "showQuickActions", minDate: "minDate", maxDate: "maxDate", mode: "mode", formatMonthFn: "formatMonthFn", formatYearFn: "formatYearFn", displayFormat: "displayFormat" }, host: { listeners: { "document:mousedown": "onClickOutside($event)" } }, providers: [
116
179
  {
117
180
  provide: NG_VALUE_ACCESSOR,
118
181
  useExisting: forwardRef(() => DatePickerComponent),
@@ -122,8 +185,8 @@ export class DatePickerComponent {
122
185
  <div class="relative w-full" #triggerContainer>
123
186
  <tolle-masked-input
124
187
  #maskInput
125
- [mask]="'00/00/0000'"
126
- [placeholder]="placeholder"
188
+ [mask]="getMask()"
189
+ [placeholder]="getPlaceholder()"
127
190
  [disabled]="disabled"
128
191
  [(ngModel)]="inputValue"
129
192
  (ngModelChange)="onInputChange($event)"
@@ -131,14 +194,17 @@ export class DatePickerComponent {
131
194
  >
132
195
  <div suffix class="flex items-center gap-1.5 cursor-pointer">
133
196
  <i
134
- *ngIf="value && !disabled"
197
+ *ngIf="value && !disabled && showClear"
135
198
  (click)="clear($event)"
136
199
  class="ri-close-line cursor-pointer text-muted-foreground hover:text-foreground transition-colors"
137
200
  ></i>
138
201
 
139
202
  <i
140
203
  (click)="togglePopover($event)"
141
- class="ri-calendar-line cursor-pointer text-muted-foreground hover:text-primary transition-colors"
204
+ [class]="cn(
205
+ 'cursor-pointer text-muted-foreground transition-colors',
206
+ 'ri-calendar-line'
207
+ )"
142
208
  ></i>
143
209
  </div>
144
210
  </tolle-masked-input>
@@ -146,17 +212,23 @@ export class DatePickerComponent {
146
212
  <div
147
213
  #popover
148
214
  *ngIf="isOpen"
149
- class="absolute bg-popover z-50 max-w-max left-0 right-0 overflow-hidden rounded-md border border-border text-popover-foreground bg-background shadow-md"
215
+ class="fixed z-[50]"
150
216
  style="visibility: hidden; top: 0; left: 0;"
151
217
  >
152
- <tolle-calendar
218
+ <tolle-calendar class="shadow-lg"
153
219
  [(ngModel)]="value"
154
220
  (ngModelChange)="onCalendarChange($event)"
221
+ [mode]="mode"
155
222
  [disablePastDates]="disablePastDates"
223
+ [minDate]="minDate"
224
+ [maxDate]="maxDate"
225
+ [showQuickActions]="showQuickActions"
226
+ [formatMonthFn]="formatMonthFn"
227
+ [formatYearFn]="formatYearFn"
156
228
  ></tolle-calendar>
157
229
  </div>
158
230
  </div>
159
- `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MaskedInputComponent, selector: "tolle-masked-input", inputs: ["id", "label", "hint", "errorMessage", "mask", "placeholder", "type", "disabled", "readonly", "class", "containerClass", "error", "size", "returnRaw", "hideHintOnFocus"] }, { kind: "component", type: CalendarComponent, selector: "tolle-calendar", inputs: ["class", "disablePastDates"] }] });
231
+ `, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: MaskedInputComponent, selector: "tolle-masked-input", inputs: ["id", "label", "hint", "errorMessage", "mask", "placeholder", "type", "disabled", "readonly", "class", "containerClass", "error", "size", "returnRaw", "hideHintOnFocus"] }, { kind: "component", type: CalendarComponent, selector: "tolle-calendar", inputs: ["class", "mode", "disablePastDates", "showQuickActions", "minDate", "maxDate", "formatMonthFn", "formatYearFn", "formatDateFn"], outputs: ["dateSelect"] }] });
160
232
  }
161
233
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DatePickerComponent, decorators: [{
162
234
  type: Component,
@@ -175,8 +247,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
175
247
  <div class="relative w-full" #triggerContainer>
176
248
  <tolle-masked-input
177
249
  #maskInput
178
- [mask]="'00/00/0000'"
179
- [placeholder]="placeholder"
250
+ [mask]="getMask()"
251
+ [placeholder]="getPlaceholder()"
180
252
  [disabled]="disabled"
181
253
  [(ngModel)]="inputValue"
182
254
  (ngModelChange)="onInputChange($event)"
@@ -184,14 +256,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
184
256
  >
185
257
  <div suffix class="flex items-center gap-1.5 cursor-pointer">
186
258
  <i
187
- *ngIf="value && !disabled"
259
+ *ngIf="value && !disabled && showClear"
188
260
  (click)="clear($event)"
189
261
  class="ri-close-line cursor-pointer text-muted-foreground hover:text-foreground transition-colors"
190
262
  ></i>
191
263
 
192
264
  <i
193
265
  (click)="togglePopover($event)"
194
- class="ri-calendar-line cursor-pointer text-muted-foreground hover:text-primary transition-colors"
266
+ [class]="cn(
267
+ 'cursor-pointer text-muted-foreground transition-colors',
268
+ 'ri-calendar-line'
269
+ )"
195
270
  ></i>
196
271
  </div>
197
272
  </tolle-masked-input>
@@ -199,13 +274,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
199
274
  <div
200
275
  #popover
201
276
  *ngIf="isOpen"
202
- class="absolute bg-popover z-50 max-w-max left-0 right-0 overflow-hidden rounded-md border border-border text-popover-foreground bg-background shadow-md"
277
+ class="fixed z-[50]"
203
278
  style="visibility: hidden; top: 0; left: 0;"
204
279
  >
205
- <tolle-calendar
280
+ <tolle-calendar class="shadow-lg"
206
281
  [(ngModel)]="value"
207
282
  (ngModelChange)="onCalendarChange($event)"
283
+ [mode]="mode"
208
284
  [disablePastDates]="disablePastDates"
285
+ [minDate]="minDate"
286
+ [maxDate]="maxDate"
287
+ [showQuickActions]="showQuickActions"
288
+ [formatMonthFn]="formatMonthFn"
289
+ [formatYearFn]="formatYearFn"
209
290
  ></tolle-calendar>
210
291
  </div>
211
292
  </div>
@@ -219,6 +300,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
219
300
  type: Input
220
301
  }], disablePastDates: [{
221
302
  type: Input
303
+ }], showClear: [{
304
+ type: Input
305
+ }], showQuickActions: [{
306
+ type: Input
307
+ }], minDate: [{
308
+ type: Input
309
+ }], maxDate: [{
310
+ type: Input
311
+ }], mode: [{
312
+ type: Input
313
+ }], formatMonthFn: [{
314
+ type: Input
315
+ }], formatYearFn: [{
316
+ type: Input
317
+ }], displayFormat: [{
318
+ type: Input
222
319
  }], triggerContainer: [{
223
320
  type: ViewChild,
224
321
  args: ['triggerContainer']
@@ -229,4 +326,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
229
326
  type: HostListener,
230
327
  args: ['document:mousedown', ['$event']]
231
328
  }] } });
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFjLFNBQVMsRUFBRSxZQUFZLEVBQ2xFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7O0FBcUR6RCxNQUFNLE9BQU8sbUJBQW1CO0lBY1Y7SUFiWCxXQUFXLEdBQUcsWUFBWSxDQUFDO0lBQzNCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUVILGdCQUFnQixDQUFjO0lBQ3ZDLE9BQU8sQ0FBYztJQUUzQyxLQUFLLEdBQWdCLElBQUksQ0FBQztJQUMxQixVQUFVLEdBQVcsRUFBRSxDQUFDO0lBQ3hCLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDZixpQkFBaUIsQ0FBYztJQUUvQixZQUFv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O29CQUNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQ1Q7aUJBQ0Y7c0ZBRVUsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRXlCLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBQ1AsT0FBTztzQkFBNUIsU0FBUzt1QkFBQyxTQUFTO2dCQStFcEIsY0FBYztzQkFEYixZQUFZO3VCQUFDLG9CQUFvQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LCBJbnB1dCwgZm9yd2FyZFJlZiwgRWxlbWVudFJlZiwgVmlld0NoaWxkLCBIb3N0TGlzdGVuZXIsIENoYW5nZURldGVjdG9yUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjb21wdXRlUG9zaXRpb24sIGZsaXAsIHNoaWZ0LCBvZmZzZXQsIGF1dG9VcGRhdGUgfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmltcG9ydCB7IGZvcm1hdCwgcGFyc2UsIGlzVmFsaWQsIHN0YXJ0T2ZEYXkgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBjbiB9IGZyb20gJy4vdXRpbHMvY24nO1xuaW1wb3J0IHsgTWFza2VkSW5wdXRDb21wb25lbnQgfSBmcm9tICcuL21hc2tlZC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuL2NhbGVuZGFyLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RvbGxlLWRhdGUtcGlja2VyJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIE1hc2tlZElucHV0Q29tcG9uZW50LCBDYWxlbmRhckNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGF0ZVBpY2tlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwicmVsYXRpdmUgdy1mdWxsXCIgI3RyaWdnZXJDb250YWluZXI+XG4gICAgICA8dG9sbGUtbWFza2VkLWlucHV0XG4gICAgICAgICNtYXNrSW5wdXRcbiAgICAgICAgW21hc2tdPVwiJzAwLzAwLzAwMDAnXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2NsYXNzXT1cImNuKGNsYXNzKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgc3VmZml4IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICAqbmdJZj1cInZhbHVlICYmICFkaXNhYmxlZFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xlYXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBjbGFzcz1cInJpLWNsb3NlLWxpbmUgY3Vyc29yLXBvaW50ZXIgdGV4dC1tdXRlZC1mb3JlZ3JvdW5kIGhvdmVyOnRleHQtZm9yZWdyb3VuZCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgPjwvaT5cblxuICAgICAgICAgIDxpXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlUG9wb3ZlcigkZXZlbnQpXCJcbiAgICAgICAgICAgIGNsYXNzPVwicmktY2FsZW5kYXItbGluZSBjdXJzb3ItcG9pbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgaG92ZXI6dGV4dC1wcmltYXJ5IHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+PC9pPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvdG9sbGUtbWFza2VkLWlucHV0PlxuXG4gICAgICA8ZGl2XG4gICAgICAgICNwb3BvdmVyXG4gICAgICAgICpuZ0lmPVwiaXNPcGVuXCJcbiAgICAgICAgY2xhc3M9XCJhYnNvbHV0ZSBiZy1wb3BvdmVyIHotNTAgbWF4LXctbWF4IGxlZnQtMCByaWdodC0wIG92ZXJmbG93LWhpZGRlbiByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYm9yZGVyIHRleHQtcG9wb3Zlci1mb3JlZ3JvdW5kIGJnLWJhY2tncm91bmQgc2hhZG93LW1kXCJcbiAgICAgICAgc3R5bGU9XCJ2aXNpYmlsaXR5OiBoaWRkZW47IHRvcDogMDsgbGVmdDogMDtcIlxuICAgICAgPlxuICAgICAgICA8dG9sbGUtY2FsZW5kYXJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNhbGVuZGFyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFtkaXNhYmxlUGFzdERhdGVzXT1cImRpc2FibGVQYXN0RGF0ZXNcIlxuICAgICAgICA+PC90b2xsZS1jYWxlbmRhcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICBgXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJ01NL0REL1lZWVknO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBjbGFzcyA9ICcnO1xuICBASW5wdXQoKSBkaXNhYmxlUGFzdERhdGVzID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgndHJpZ2dlckNvbnRhaW5lcicpIHRyaWdnZXJDb250YWluZXIhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdwb3BvdmVyJykgcG9wb3ZlciE6IEVsZW1lbnRSZWY7XG5cbiAgdmFsdWU6IERhdGUgfCBudWxsID0gbnVsbDtcbiAgaW5wdXRWYWx1ZTogc3RyaW5nID0gJyc7XG4gIGlzT3BlbiA9IGZhbHNlO1xuICBjbGVhbnVwQXV0b1VwZGF0ZT86ICgpID0+IHZvaWQ7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gIC8vIC0tLSBMb2dpYyAtLS1cblxuICBvbklucHV0Q2hhbmdlKHN0cjogc3RyaW5nKSB7XG4gICAgaWYgKHN0cj8ubGVuZ3RoID09PSAxMCkge1xuICAgICAgY29uc3QgcGFyc2VkID0gcGFyc2Uoc3RyLCAnTU0vZGQveXl5eScsIG5ldyBEYXRlKCkpO1xuICAgICAgaWYgKGlzVmFsaWQocGFyc2VkKSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gc3RhcnRPZkRheShwYXJzZWQpO1xuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoIXN0cikge1xuICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICB0aGlzLm9uQ2hhbmdlKG51bGwpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2FsZW5kYXJDaGFuZ2UoZGF0ZTogRGF0ZSkge1xuICAgIHRoaXMudmFsdWUgPSBkYXRlO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGZvcm1hdChkYXRlLCAnTU0vZGQveXl5eScpO1xuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgdGhpcy5jbG9zZSgpO1xuICB9XG5cbiAgdG9nZ2xlUG9wb3ZlcihldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBQcmV2ZW50IGJ1YmJsaW5nIHRvIGRvY3VtZW50XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHJldHVybjtcbiAgICB0aGlzLmlzT3BlbiA/IHRoaXMuY2xvc2UoKSA6IHRoaXMub3BlbigpO1xuICB9XG5cbiAgb3BlbigpIHtcbiAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZVBvc2l0aW9uKCkpO1xuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICBpZiAodGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSkgdGhpcy5jbGVhbnVwQXV0b1VwZGF0ZSgpO1xuICB9XG5cbiAgY2xlYXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgLy8gQ1JJVElDQUw6IFN0b3AgdGhlIGNhbGVuZGFyIGZyb20gb3BlbmluZ1xuICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvLyAtLS0gUG9zaXRpb25pbmcgLS0tXG5cbiAgcHJpdmF0ZSB1cGRhdGVQb3NpdGlvbigpIHtcbiAgICBpZiAoIXRoaXMudHJpZ2dlckNvbnRhaW5lciB8fCAhdGhpcy5wb3BvdmVyKSByZXR1cm47XG5cbiAgICB0aGlzLmNsZWFudXBBdXRvVXBkYXRlID0gYXV0b1VwZGF0ZShcbiAgICAgIHRoaXMudHJpZ2dlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LFxuICAgICAgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbXB1dGVQb3NpdGlvbih0aGlzLnRyaWdnZXJDb250YWluZXIubmF0aXZlRWxlbWVudCwgdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tZW5kJywgLy8gQWxpZ25lZCB0byB0aGUgcmlnaHQgd2hlcmUgdGhlIGljb24gaXNcbiAgICAgICAgICBtaWRkbGV3YXJlOiBbb2Zmc2V0KDQpLCBmbGlwKCksIHNoaWZ0KHsgcGFkZGluZzogOCB9KV0sXG4gICAgICAgIH0pLnRoZW4oKHsgeCwgeSB9KSA9PiB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudC5zdHlsZSwge1xuICAgICAgICAgICAgbGVmdDogYCR7eH1weGAsXG4gICAgICAgICAgICB0b3A6IGAke3l9cHhgLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogJ3Zpc2libGUnLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgb25DbGlja091dHNpZGUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc09wZW4gJiZcbiAgICAgICF0aGlzLnRyaWdnZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpICYmXG4gICAgICAhdGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIC0tLSBDVkEgLS0tXG4gIG9uQ2hhbmdlOiBhbnkgPSAoKSA9PiB7fTtcbiAgb25Ub3VjaGVkOiBhbnkgPSAoKSA9PiB7fTtcblxuICB3cml0ZVZhbHVlKHZhbDogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbCkge1xuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbCk7XG4gICAgICBpZiAoaXNWYWxpZChkYXRlKSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gc3RhcnRPZkRheShkYXRlKTtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gZm9ybWF0KHRoaXMudmFsdWUsICdNTS9kZC95eXl5Jyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG4gIHByb3RlY3RlZCBjbiA9IGNuO1xufVxuIl19
329
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvdG9sbGUvc3JjL2xpYi9kYXRlLXBpY2tlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFjLFNBQVMsRUFBRSxZQUFZLEVBQ2xFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEYsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBWSxNQUFNLFVBQVUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBZ0IsTUFBTSxzQkFBc0IsQ0FBQzs7OztBQThEdkUsTUFBTSxPQUFPLG1CQUFtQjtJQXdCVjtJQXZCWCxXQUFXLEdBQUcsWUFBWSxDQUFDO0lBQzNCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLGdCQUFnQixHQUFHLEtBQUssQ0FBQztJQUN6QixTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ2pCLGdCQUFnQixHQUFHLElBQUksQ0FBQztJQUN4QixPQUFPLENBQVE7SUFDZixPQUFPLENBQVE7SUFDZixJQUFJLEdBQWlCLE1BQU0sQ0FBQztJQUM1QixhQUFhLENBQTBCO0lBQ3ZDLFlBQVksQ0FBMEI7SUFFL0MsK0JBQStCO0lBQ3RCLGFBQWEsQ0FBOEM7SUFFckMsZ0JBQWdCLENBQWM7SUFDdkMsT0FBTyxDQUFjO0lBRTNDLEtBQUssR0FBZ0IsSUFBSSxDQUFDO0lBQzFCLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDeEIsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUNmLGlCQUFpQixDQUFjO0lBRS9CLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBQUcsQ0FBQztJQUU5QyxPQUFPO1FBQ0wsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPLFlBQVksQ0FBQztZQUNqQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDO1lBQy9CLEtBQUssTUFBTSxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUM7WUFDM0IsT0FBTyxDQUFDLENBQUMsT0FBTyxZQUFZLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPLFlBQVksQ0FBQztZQUNqQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDO1lBQy9CLEtBQUssTUFBTSxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUM7WUFDM0IsT0FBTyxDQUFDLENBQUMsT0FBTyxZQUFZLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO1FBQ2IsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPLFlBQVksQ0FBQztZQUNqQyxLQUFLLE9BQU8sQ0FBQyxDQUFDLE9BQU8sU0FBUyxDQUFDO1lBQy9CLEtBQUssTUFBTSxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUM7WUFDM0IsT0FBTyxDQUFDLENBQUMsT0FBTyxZQUFZLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsSUFBVTtRQUNuQixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDbEIsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDL0MsS0FBSyxPQUFPLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDN0MsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDekMsT0FBTyxDQUFDLENBQUMsT0FBTyxNQUFNLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDO1FBQzdDLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEdBQVc7UUFDbkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1lBQzlELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUNyRCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFXO1FBQ3ZCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUUxRSxJQUFJLEdBQUcsRUFBRSxNQUFNLEtBQUssY0FBYyxFQUFFLENBQUM7WUFDbkMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuQyxJQUFJLE1BQU0sRUFBRSxDQUFDO2dCQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO2dCQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBaUI7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWlCO1FBQzdCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQsSUFBSTtRQUNGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLGlCQUFpQjtZQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3ZELENBQUM7SUFFRCxLQUFLLENBQUMsS0FBaUI7UUFDckIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8sY0FBYztRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU87WUFBRSxPQUFPO1FBRXBELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxVQUFVLENBQ2pDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUMxQixHQUFHLEVBQUU7WUFDSCxlQUFlLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtnQkFDL0UsUUFBUSxFQUFFLE9BQU8sRUFBRSx3QkFBd0I7Z0JBQzNDLFNBQVMsRUFBRSxjQUFjLEVBQUUsd0RBQXdEO2dCQUNuRixVQUFVLEVBQUU7b0JBQ1YsTUFBTSxDQUFDLENBQUMsQ0FBQztvQkFDVCxJQUFJLEVBQUU7b0JBQ04sS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO2lCQUN0QjthQUNGLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRTtnQkFDN0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUU7b0JBQzlDLFFBQVEsRUFBRSxRQUFRO29CQUNsQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7b0JBQ2QsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJO29CQUNiLFVBQVUsRUFBRSxTQUFTO2lCQUN0QixDQUFDLENBQUM7WUFDTCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUdELGNBQWMsQ0FBQyxLQUFpQjtRQUM5QixJQUFJLElBQUksQ0FBQyxNQUFNO1lBQ2IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQzNELENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLFFBQVEsR0FBUSxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7SUFDekIsU0FBUyxHQUFRLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUUxQixVQUFVLENBQUMsR0FBUTtRQUNqQixJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ1IsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDM0IsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDbEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdkIsQ0FBQztRQUNELElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGdCQUFnQixDQUFDLEVBQU8sSUFBVSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkQsaUJBQWlCLENBQUMsRUFBTyxJQUFVLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN6RCxnQkFBZ0IsQ0FBQyxVQUFtQixJQUFVLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNqRSxFQUFFLEdBQUcsRUFBRSxDQUFDO3dHQXRMUCxtQkFBbUI7NEZBQW5CLG1CQUFtQiwrY0F4RG5CO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQztnQkFDbEQsS0FBSyxFQUFFLElBQUk7YUFDWjtTQUNGLHFPQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStDVCwyREF2RFMsWUFBWSxrSUFBRSxXQUFXLCtWQUFFLG9CQUFvQixtUEFBRSxpQkFBaUI7OzRGQXlEakUsbUJBQW1CO2tCQTVEL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixVQUFVLEVBQUUsSUFBSTtvQkFDaEIsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRSxpQkFBaUIsQ0FBQztvQkFDN0UsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLG9CQUFvQixDQUFDOzRCQUNsRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjtvQkFDRCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBK0NUO2lCQUNGO3NGQUVVLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLO2dCQUV5QixnQkFBZ0I7c0JBQTlDLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUNQLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkF3SXBCLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCwgSW5wdXQsIGZvcndhcmRSZWYsIEVsZW1lbnRSZWYsIFZpZXdDaGlsZCwgSG9zdExpc3RlbmVyLCBDaGFuZ2VEZXRlY3RvclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IsIEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29tcHV0ZVBvc2l0aW9uLCBmbGlwLCBzaGlmdCwgb2Zmc2V0LCBhdXRvVXBkYXRlIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgeyBmb3JtYXQsIHBhcnNlLCBpc1ZhbGlkLCBzdGFydE9mRGF5LCBwYXJzZUlTTyB9IGZyb20gJ2RhdGUtZm5zJztcbmltcG9ydCB7IGNuIH0gZnJvbSAnLi91dGlscy9jbic7XG5pbXBvcnQgeyBNYXNrZWRJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vbWFza2VkLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYWxlbmRhckNvbXBvbmVudCwgQ2FsZW5kYXJNb2RlIH0gZnJvbSAnLi9jYWxlbmRhci5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0b2xsZS1kYXRlLXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBNYXNrZWRJbnB1dENvbXBvbmVudCwgQ2FsZW5kYXJDb21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERhdGVQaWNrZXJDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cInJlbGF0aXZlIHctZnVsbFwiICN0cmlnZ2VyQ29udGFpbmVyPlxuICAgICAgPHRvbGxlLW1hc2tlZC1pbnB1dFxuICAgICAgICAjbWFza0lucHV0XG4gICAgICAgIFttYXNrXT1cImdldE1hc2soKVwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJnZXRQbGFjZWhvbGRlcigpXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJpbnB1dFZhbHVlXCJcbiAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25JbnB1dENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgW2NsYXNzXT1cImNuKGNsYXNzKVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgc3VmZml4IGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNSBjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgIDxpXG4gICAgICAgICAgICAqbmdJZj1cInZhbHVlICYmICFkaXNhYmxlZCAmJiBzaG93Q2xlYXJcIlxuICAgICAgICAgICAgKGNsaWNrKT1cImNsZWFyKCRldmVudClcIlxuICAgICAgICAgICAgY2xhc3M9XCJyaS1jbG9zZS1saW5lIGN1cnNvci1wb2ludGVyIHRleHQtbXV0ZWQtZm9yZWdyb3VuZCBob3Zlcjp0ZXh0LWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgID48L2k+XG5cbiAgICAgICAgICA8aVxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVBvcG92ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICBbY2xhc3NdPVwiY24oXG4gICAgICAgICAgICAgICdjdXJzb3ItcG9pbnRlciB0ZXh0LW11dGVkLWZvcmVncm91bmQgdHJhbnNpdGlvbi1jb2xvcnMnLFxuICAgICAgICAgICAgICAncmktY2FsZW5kYXItbGluZSdcbiAgICAgICAgICAgIClcIlxuICAgICAgICAgID48L2k+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC90b2xsZS1tYXNrZWQtaW5wdXQ+XG5cbiAgICAgIDxkaXZcbiAgICAgICAgI3BvcG92ZXJcbiAgICAgICAgKm5nSWY9XCJpc09wZW5cIlxuICAgICAgICBjbGFzcz1cImZpeGVkIHotWzUwXVwiXG4gICAgICAgIHN0eWxlPVwidmlzaWJpbGl0eTogaGlkZGVuOyB0b3A6IDA7IGxlZnQ6IDA7XCJcbiAgICAgID5cbiAgICAgICAgPHRvbGxlLWNhbGVuZGFyIGNsYXNzPVwic2hhZG93LWxnXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cInZhbHVlXCJcbiAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkNhbGVuZGFyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFttb2RlXT1cIm1vZGVcIlxuICAgICAgICAgIFtkaXNhYmxlUGFzdERhdGVzXT1cImRpc2FibGVQYXN0RGF0ZXNcIlxuICAgICAgICAgIFttaW5EYXRlXT1cIm1pbkRhdGVcIlxuICAgICAgICAgIFttYXhEYXRlXT1cIm1heERhdGVcIlxuICAgICAgICAgIFtzaG93UXVpY2tBY3Rpb25zXT1cInNob3dRdWlja0FjdGlvbnNcIlxuICAgICAgICAgIFtmb3JtYXRNb250aEZuXT1cImZvcm1hdE1vbnRoRm5cIlxuICAgICAgICAgIFtmb3JtYXRZZWFyRm5dPVwiZm9ybWF0WWVhckZuXCJcbiAgICAgICAgPjwvdG9sbGUtY2FsZW5kYXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYFxufSlcbmV4cG9ydCBjbGFzcyBEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdNTS9ERC9ZWVlZJztcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgY2xhc3MgPSAnJztcbiAgQElucHV0KCkgZGlzYWJsZVBhc3REYXRlcyA9IGZhbHNlO1xuICBASW5wdXQoKSBzaG93Q2xlYXIgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93UXVpY2tBY3Rpb25zID0gdHJ1ZTtcbiAgQElucHV0KCkgbWluRGF0ZT86IERhdGU7XG4gIEBJbnB1dCgpIG1heERhdGU/OiBEYXRlO1xuICBASW5wdXQoKSBtb2RlOiBDYWxlbmRhck1vZGUgPSAnZGF0ZSc7XG4gIEBJbnB1dCgpIGZvcm1hdE1vbnRoRm4/OiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuICBASW5wdXQoKSBmb3JtYXRZZWFyRm4/OiAoZGF0ZTogRGF0ZSkgPT4gc3RyaW5nO1xuXG4gIC8vIEZvcm1hdCBmdW5jdGlvbnMgZm9yIGRpc3BsYXlcbiAgQElucHV0KCkgZGlzcGxheUZvcm1hdD86IChkYXRlOiBEYXRlLCBtb2RlOiBDYWxlbmRhck1vZGUpID0+IHN0cmluZztcblxuICBAVmlld0NoaWxkKCd0cmlnZ2VyQ29udGFpbmVyJykgdHJpZ2dlckNvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3BvcG92ZXInKSBwb3BvdmVyITogRWxlbWVudFJlZjtcblxuICB2YWx1ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xuICBpbnB1dFZhbHVlOiBzdHJpbmcgPSAnJztcbiAgaXNPcGVuID0gZmFsc2U7XG4gIGNsZWFudXBBdXRvVXBkYXRlPzogKCkgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgZ2V0TWFzaygpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgICBjYXNlICdkYXRlJzogcmV0dXJuICcwMC8wMC8wMDAwJztcbiAgICAgIGNhc2UgJ21vbnRoJzogcmV0dXJuICcwMC8wMDAwJztcbiAgICAgIGNhc2UgJ3llYXInOiByZXR1cm4gJzAwMDAnO1xuICAgICAgZGVmYXVsdDogcmV0dXJuICcwMC8wMC8wMDAwJztcbiAgICB9XG4gIH1cblxuICBnZXRQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xuICAgIHN3aXRjaCAodGhpcy5tb2RlKSB7XG4gICAgICBjYXNlICdkYXRlJzogcmV0dXJuICdNTS9ERC9ZWVlZJztcbiAgICAgIGNhc2UgJ21vbnRoJzogcmV0dXJuICdNTS9ZWVlZJztcbiAgICAgIGNhc2UgJ3llYXInOiByZXR1cm4gJ1lZWVknO1xuICAgICAgZGVmYXVsdDogcmV0dXJuICdNTS9ERC9ZWVlZJztcbiAgICB9XG4gIH1cblxuICBnZXRGb3JtYXRTdHJpbmcoKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMubW9kZSkge1xuICAgICAgY2FzZSAnZGF0ZSc6IHJldHVybiAnTU0vZGQveXl5eSc7XG4gICAgICBjYXNlICdtb250aCc6IHJldHVybiAnTU0veXl5eSc7XG4gICAgICBjYXNlICd5ZWFyJzogcmV0dXJuICd5eXl5JztcbiAgICAgIGRlZmF1bHQ6IHJldHVybiAnTU0vZGQveXl5eSc7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0RGF0ZShkYXRlOiBEYXRlKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5Rm9ybWF0KSB7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwbGF5Rm9ybWF0KGRhdGUsIHRoaXMubW9kZSk7XG4gICAgfVxuXG4gICAgc3dpdGNoICh0aGlzLm1vZGUpIHtcbiAgICAgIGNhc2UgJ2RhdGUnOiByZXR1cm4gZm9ybWF0KGRhdGUsICdNTS9kZC95eXl5Jyk7XG4gICAgICBjYXNlICdtb250aCc6IHJldHVybiBmb3JtYXQoZGF0ZSwgJ01NL3l5eXknKTtcbiAgICAgIGNhc2UgJ3llYXInOiByZXR1cm4gZm9ybWF0KGRhdGUsICd5eXl5Jyk7XG4gICAgICBkZWZhdWx0OiByZXR1cm4gZm9ybWF0KGRhdGUsICdNTS9kZC95eXl5Jyk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VEYXRlKHN0cjogc3RyaW5nKTogRGF0ZSB8IG51bGwge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwYXJzZWQgPSBwYXJzZShzdHIsIHRoaXMuZ2V0Rm9ybWF0U3RyaW5nKCksIG5ldyBEYXRlKCkpO1xuICAgICAgcmV0dXJuIGlzVmFsaWQocGFyc2VkKSA/IHN0YXJ0T2ZEYXkocGFyc2VkKSA6IG51bGw7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBvbklucHV0Q2hhbmdlKHN0cjogc3RyaW5nKSB7XG4gICAgY29uc3QgZXhwZWN0ZWRMZW5ndGggPSB0aGlzLmdldEZvcm1hdFN0cmluZygpLnJlcGxhY2UoL1teMF0vZywgJycpLmxlbmd0aDtcblxuICAgIGlmIChzdHI/Lmxlbmd0aCA9PT0gZXhwZWN0ZWRMZW5ndGgpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMucGFyc2VEYXRlKHN0cik7XG4gICAgICBpZiAocGFyc2VkKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBwYXJzZWQ7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghc3RyKSB7XG4gICAgICB0aGlzLnZhbHVlID0gbnVsbDtcbiAgICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgb25DYWxlbmRhckNoYW5nZShkYXRlOiBEYXRlIHwgbnVsbCkge1xuICAgIHRoaXMudmFsdWUgPSBkYXRlO1xuICAgIGlmIChkYXRlKSB7XG4gICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmZvcm1hdERhdGUoZGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIH1cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIHRoaXMuY2xvc2UoKTtcbiAgfVxuXG4gIHRvZ2dsZVBvcG92ZXIoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIHRoaXMuaXNPcGVuID8gdGhpcy5jbG9zZSgpIDogdGhpcy5vcGVuKCk7XG4gIH1cblxuICBvcGVuKCkge1xuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudXBkYXRlUG9zaXRpb24oKSk7XG4gIH1cblxuICBjbG9zZSgpIHtcbiAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmNsZWFudXBBdXRvVXBkYXRlKSB0aGlzLmNsZWFudXBBdXRvVXBkYXRlKCk7XG4gIH1cblxuICBjbGVhcihldmVudDogTW91c2VFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMub25DaGFuZ2UobnVsbCk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVBvc2l0aW9uKCkge1xuICAgIGlmICghdGhpcy50cmlnZ2VyQ29udGFpbmVyIHx8ICF0aGlzLnBvcG92ZXIpIHJldHVybjtcblxuICAgIHRoaXMuY2xlYW51cEF1dG9VcGRhdGUgPSBhdXRvVXBkYXRlKFxuICAgICAgdGhpcy50cmlnZ2VyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsXG4gICAgICB0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudCxcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29tcHV0ZVBvc2l0aW9uKHRoaXMudHJpZ2dlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCB0aGlzLnBvcG92ZXIubmF0aXZlRWxlbWVudCwge1xuICAgICAgICAgIHN0cmF0ZWd5OiAnZml4ZWQnLCAvLyBBRERFRDogRml4ZWQgc3RyYXRlZ3lcbiAgICAgICAgICBwbGFjZW1lbnQ6ICdib3R0b20tc3RhcnQnLCAvLyBDaGFuZ2VkIHRvIGJvdHRvbS1zdGFydCB0byBhbGlnbiB3aXRoIGlucHV0IGxlZnQgZWRnZVxuICAgICAgICAgIG1pZGRsZXdhcmU6IFtcbiAgICAgICAgICAgIG9mZnNldCg0KSxcbiAgICAgICAgICAgIGZsaXAoKSxcbiAgICAgICAgICAgIHNoaWZ0KHsgcGFkZGluZzogOCB9KVxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLnRoZW4oKHsgeCwgeSwgc3RyYXRlZ3kgfSkgPT4ge1xuICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5wb3BvdmVyLm5hdGl2ZUVsZW1lbnQuc3R5bGUsIHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdHJhdGVneSxcbiAgICAgICAgICAgIGxlZnQ6IGAke3h9cHhgLFxuICAgICAgICAgICAgdG9wOiBgJHt5fXB4YCxcbiAgICAgICAgICAgIHZpc2liaWxpdHk6ICd2aXNpYmxlJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50Om1vdXNlZG93bicsIFsnJGV2ZW50J10pXG4gIG9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuICYmXG4gICAgICAhdGhpcy50cmlnZ2VyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgIXRoaXMucG9wb3Zlci5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9XG4gIH1cblxuICAvLyBDVkEgSW1wbGVtZW50YXRpb25cbiAgb25DaGFuZ2U6IGFueSA9ICgpID0+IHt9O1xuICBvblRvdWNoZWQ6IGFueSA9ICgpID0+IHt9O1xuXG4gIHdyaXRlVmFsdWUodmFsOiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodmFsKSB7XG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsKTtcbiAgICAgIGlmIChpc1ZhbGlkKGRhdGUpKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSBzdGFydE9mRGF5KGRhdGUpO1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmZvcm1hdERhdGUodGhpcy52YWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgdGhpcy5pbnB1dFZhbHVlID0gJyc7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7IHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkOyB9XG4gIHByb3RlY3RlZCBjbiA9IGNuO1xufVxuIl19