@ifsworld/granite-components 13.2.5 → 13.2.6
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.
- package/esm2022/lib/card-list/card-list.component.mjs +4 -3
- package/esm2022/lib/card-list/card-list.module.mjs +5 -4
- package/esm2022/lib/menu/menu-base.mjs +5 -2
- package/esm2022/lib/menu/menu-trigger-for.directive.mjs +26 -4
- package/fesm2022/ifsworld-granite-components.mjs +36 -9
- package/fesm2022/ifsworld-granite-components.mjs.map +1 -1
- package/lib/card-list/card-list.module.d.ts +2 -1
- package/lib/menu/menu-base.d.ts +2 -1
- package/lib/menu/menu-trigger-for.directive.d.ts +8 -0
- package/package.json +7 -7
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Component, Input } from '@angular/core';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@angular/cdk/scrolling";
|
|
3
4
|
export class GraniteCardListComponent {
|
|
4
5
|
constructor() {
|
|
5
6
|
/**Present cards in vertically or horizontally */
|
|
@@ -8,11 +9,11 @@ export class GraniteCardListComponent {
|
|
|
8
9
|
this.gap = 'small';
|
|
9
10
|
}
|
|
10
11
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteCardListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
11
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: GraniteCardListComponent, selector: "granite-card-list", inputs: { orientation: "orientation", wrap: "wrap", gap: "gap" }, ngImport: i0, template: "<div\n class=\"card-list-wrapper\"\n [class.vertical]=\"orientation === 'vertical'\"\n [class.horizontal]=\"orientation === 'horizontal'\"\n [class.wrap]=\"wrap === 'wrap'\"\n [class.nowrap]=\"wrap === 'nowrap'\"\n [class.small]=\"gap === 'small'\"\n [class.medium]=\"gap === 'medium'\"\n [class.large]=\"gap === 'large'\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%}.card-list-wrapper{display:flex;flex-direction:row;padding:var(--granite-spacing-4)}.card-list-wrapper.horizontal.nowrap{overflow-x:auto}.card-list-wrapper.horizontal.wrap{overflow-y:auto}.card-list-wrapper.vertical{flex-direction:column}.card-list-wrapper.vertical.nowrap{overflow-y:auto}.card-list-wrapper.vertical.wrap{overflow-x:auto}.card-list-wrapper.small{gap:var(--granite-spacing-2)}.card-list-wrapper.medium{gap:var(--granite-spacing-4)}.card-list-wrapper.large{gap:var(--granite-spacing-8)}.card-list-wrapper.wrap{flex-wrap:wrap}.card-list-wrapper.nowrap{flex-wrap:nowrap}.card-list-wrapper::-webkit-scrollbar{width:calc(var(--granite-size-base-rem) * .25);height:calc(var(--granite-size-base-rem) * .25);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-thumb{background:var(--granite-color-border-hard);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-track{background:var(--granite-color-background-page)}\n"] }); }
|
|
12
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.4", type: GraniteCardListComponent, selector: "granite-card-list", inputs: { orientation: "orientation", wrap: "wrap", gap: "gap" }, ngImport: i0, template: "<div\n class=\"card-list-wrapper\"\n [class.vertical]=\"orientation === 'vertical'\"\n [class.horizontal]=\"orientation === 'horizontal'\"\n [class.wrap]=\"wrap === 'wrap'\"\n [class.nowrap]=\"wrap === 'nowrap'\"\n [class.small]=\"gap === 'small'\"\n [class.medium]=\"gap === 'medium'\"\n [class.large]=\"gap === 'large'\"\n cdkScrollable\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%}.card-list-wrapper{display:flex;flex-direction:row;padding:var(--granite-spacing-4)}.card-list-wrapper.horizontal.nowrap{overflow-x:auto}.card-list-wrapper.horizontal.wrap{overflow-y:auto}.card-list-wrapper.vertical{flex-direction:column}.card-list-wrapper.vertical.nowrap{overflow-y:auto}.card-list-wrapper.vertical.wrap{overflow-x:auto}.card-list-wrapper.small{gap:var(--granite-spacing-2)}.card-list-wrapper.medium{gap:var(--granite-spacing-4)}.card-list-wrapper.large{gap:var(--granite-spacing-8)}.card-list-wrapper.wrap{flex-wrap:wrap}.card-list-wrapper.nowrap{flex-wrap:nowrap}.card-list-wrapper::-webkit-scrollbar{width:calc(var(--granite-size-base-rem) * .25);height:calc(var(--granite-size-base-rem) * .25);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-thumb{background:var(--granite-color-border-hard);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-track{background:var(--granite-color-background-page)}\n"], dependencies: [{ kind: "directive", type: i1.CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }] }); }
|
|
12
13
|
}
|
|
13
14
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteCardListComponent, decorators: [{
|
|
14
15
|
type: Component,
|
|
15
|
-
args: [{ selector: 'granite-card-list', template: "<div\n class=\"card-list-wrapper\"\n [class.vertical]=\"orientation === 'vertical'\"\n [class.horizontal]=\"orientation === 'horizontal'\"\n [class.wrap]=\"wrap === 'wrap'\"\n [class.nowrap]=\"wrap === 'nowrap'\"\n [class.small]=\"gap === 'small'\"\n [class.medium]=\"gap === 'medium'\"\n [class.large]=\"gap === 'large'\"\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%}.card-list-wrapper{display:flex;flex-direction:row;padding:var(--granite-spacing-4)}.card-list-wrapper.horizontal.nowrap{overflow-x:auto}.card-list-wrapper.horizontal.wrap{overflow-y:auto}.card-list-wrapper.vertical{flex-direction:column}.card-list-wrapper.vertical.nowrap{overflow-y:auto}.card-list-wrapper.vertical.wrap{overflow-x:auto}.card-list-wrapper.small{gap:var(--granite-spacing-2)}.card-list-wrapper.medium{gap:var(--granite-spacing-4)}.card-list-wrapper.large{gap:var(--granite-spacing-8)}.card-list-wrapper.wrap{flex-wrap:wrap}.card-list-wrapper.nowrap{flex-wrap:nowrap}.card-list-wrapper::-webkit-scrollbar{width:calc(var(--granite-size-base-rem) * .25);height:calc(var(--granite-size-base-rem) * .25);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-thumb{background:var(--granite-color-border-hard);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-track{background:var(--granite-color-background-page)}\n"] }]
|
|
16
|
+
args: [{ selector: 'granite-card-list', template: "<div\n class=\"card-list-wrapper\"\n [class.vertical]=\"orientation === 'vertical'\"\n [class.horizontal]=\"orientation === 'horizontal'\"\n [class.wrap]=\"wrap === 'wrap'\"\n [class.nowrap]=\"wrap === 'nowrap'\"\n [class.small]=\"gap === 'small'\"\n [class.medium]=\"gap === 'medium'\"\n [class.large]=\"gap === 'large'\"\n cdkScrollable\n>\n <ng-content></ng-content>\n</div>\n", styles: [":host{width:100%}.card-list-wrapper{display:flex;flex-direction:row;padding:var(--granite-spacing-4)}.card-list-wrapper.horizontal.nowrap{overflow-x:auto}.card-list-wrapper.horizontal.wrap{overflow-y:auto}.card-list-wrapper.vertical{flex-direction:column}.card-list-wrapper.vertical.nowrap{overflow-y:auto}.card-list-wrapper.vertical.wrap{overflow-x:auto}.card-list-wrapper.small{gap:var(--granite-spacing-2)}.card-list-wrapper.medium{gap:var(--granite-spacing-4)}.card-list-wrapper.large{gap:var(--granite-spacing-8)}.card-list-wrapper.wrap{flex-wrap:wrap}.card-list-wrapper.nowrap{flex-wrap:nowrap}.card-list-wrapper::-webkit-scrollbar{width:calc(var(--granite-size-base-rem) * .25);height:calc(var(--granite-size-base-rem) * .25);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-thumb{background:var(--granite-color-border-hard);border-radius:var(--granite-radius-s)}.card-list-wrapper::-webkit-scrollbar-track{background:var(--granite-color-background-page)}\n"] }]
|
|
16
17
|
}], propDecorators: { orientation: [{
|
|
17
18
|
type: Input
|
|
18
19
|
}], wrap: [{
|
|
@@ -20,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
20
21
|
}], gap: [{
|
|
21
22
|
type: Input
|
|
22
23
|
}] } });
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvY2FyZC1saXN0L2NhcmQtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2dyYW5pdGUtY29tcG9uZW50cy9zcmMvbGliL2NhcmQtbGlzdC9jYXJkLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQU1qRCxNQUFNLE9BQU8sd0JBQXdCO0lBTHJDO1FBTUUsaURBQWlEO1FBRWpELGdCQUFXLEdBQThCLFlBQVksQ0FBQztRQUd0RCxTQUFJLEdBQXNCLFFBQVEsQ0FBQztRQUduQyxRQUFHLEdBQWlDLE9BQU8sQ0FBQztLQUM3Qzs4R0FWWSx3QkFBd0I7a0dBQXhCLHdCQUF3QiwySENOckMsdVlBYUE7OzJGRFBhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSxtQkFBbUI7OEJBTzdCLFdBQVc7c0JBRFYsS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sR0FBRztzQkFERixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ3Jhbml0ZS1jYXJkLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJ2NhcmQtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydjYXJkLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUNhcmRMaXN0Q29tcG9uZW50IHtcbiAgLyoqUHJlc2VudCBjYXJkcyBpbiB2ZXJ0aWNhbGx5IG9yIGhvcml6b250YWxseSAqL1xuICBASW5wdXQoKVxuICBvcmllbnRhdGlvbjogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJyA9ICdob3Jpem9udGFsJztcblxuICBASW5wdXQoKVxuICB3cmFwOiAnd3JhcCcgfCAnbm93cmFwJyA9ICdub3dyYXAnO1xuXG4gIEBJbnB1dCgpXG4gIGdhcDogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJyA9ICdzbWFsbCc7XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwiY2FyZC1saXN0LXdyYXBwZXJcIlxuICBbY2xhc3MudmVydGljYWxdPVwib3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCdcIlxuICBbY2xhc3MuaG9yaXpvbnRhbF09XCJvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnXCJcbiAgW2NsYXNzLndyYXBdPVwid3JhcCA9PT0gJ3dyYXAnXCJcbiAgW2NsYXNzLm5vd3JhcF09XCJ3cmFwID09PSAnbm93cmFwJ1wiXG4gIFtjbGFzcy5zbWFsbF09XCJnYXAgPT09ICdzbWFsbCdcIlxuICBbY2xhc3MubWVkaXVtXT1cImdhcCA9PT0gJ21lZGl1bSdcIlxuICBbY2xhc3MubGFyZ2VdPVwiZ2FwID09PSAnbGFyZ2UnXCJcbiAgY2RrU2Nyb2xsYWJsZVxuPlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -10,6 +10,7 @@ import { GraniteCardFooterComponent } from './card/card-content/card-footer.comp
|
|
|
10
10
|
import { GraniteCardAvatarComponent } from './card/card-avatar.component';
|
|
11
11
|
import { GraniteCardHeaderTitleComponent } from './card/card-content/card-header-title.component';
|
|
12
12
|
import { GraniteCardHeaderSubTitleComponent } from './card/card-content/card-header-subtitle.component';
|
|
13
|
+
import { ScrollingModule } from '@angular/cdk/scrolling';
|
|
13
14
|
import * as i0 from "@angular/core";
|
|
14
15
|
export class GraniteCardListModule {
|
|
15
16
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteCardListModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -22,7 +23,7 @@ export class GraniteCardListModule {
|
|
|
22
23
|
GraniteCardFooterComponent,
|
|
23
24
|
GraniteCardAvatarComponent,
|
|
24
25
|
GraniteCardHeaderTitleComponent,
|
|
25
|
-
GraniteCardHeaderSubTitleComponent], imports: [CommonModule], exports: [GraniteCardComponent,
|
|
26
|
+
GraniteCardHeaderSubTitleComponent], imports: [CommonModule, ScrollingModule], exports: [GraniteCardComponent,
|
|
26
27
|
GraniteCardListComponent,
|
|
27
28
|
GraniteCardContentComponent,
|
|
28
29
|
GraniteCardHeaderComponent,
|
|
@@ -32,7 +33,7 @@ export class GraniteCardListModule {
|
|
|
32
33
|
GraniteCardAvatarComponent,
|
|
33
34
|
GraniteCardHeaderTitleComponent,
|
|
34
35
|
GraniteCardHeaderSubTitleComponent] }); }
|
|
35
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteCardListModule, imports: [CommonModule] }); }
|
|
36
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteCardListModule, imports: [CommonModule, ScrollingModule] }); }
|
|
36
37
|
}
|
|
37
38
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: GraniteCardListModule, decorators: [{
|
|
38
39
|
type: NgModule,
|
|
@@ -49,7 +50,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
49
50
|
GraniteCardHeaderTitleComponent,
|
|
50
51
|
GraniteCardHeaderSubTitleComponent,
|
|
51
52
|
],
|
|
52
|
-
imports: [CommonModule],
|
|
53
|
+
imports: [CommonModule, ScrollingModule],
|
|
53
54
|
exports: [
|
|
54
55
|
GraniteCardComponent,
|
|
55
56
|
GraniteCardListComponent,
|
|
@@ -64,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
64
65
|
],
|
|
65
66
|
}]
|
|
66
67
|
}] });
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FyZC1saXN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZ3Jhbml0ZS1jb21wb25lbnRzL3NyYy9saWIvY2FyZC1saXN0L2NhcmQtbGlzdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDakUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdkYsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDekYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDbkYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDdkYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDMUUsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDbEcsT0FBTyxFQUFFLGtDQUFrQyxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDeEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQTZCekQsTUFBTSxPQUFPLHFCQUFxQjs4R0FBckIscUJBQXFCOytHQUFyQixxQkFBcUIsaUJBekI5QixvQkFBb0I7WUFDcEIsd0JBQXdCO1lBQ3hCLDJCQUEyQjtZQUMzQiwwQkFBMEI7WUFDMUIsMkJBQTJCO1lBQzNCLHdCQUF3QjtZQUN4QiwwQkFBMEI7WUFDMUIsMEJBQTBCO1lBQzFCLCtCQUErQjtZQUMvQixrQ0FBa0MsYUFFMUIsWUFBWSxFQUFFLGVBQWUsYUFFckMsb0JBQW9CO1lBQ3BCLHdCQUF3QjtZQUN4QiwyQkFBMkI7WUFDM0IsMEJBQTBCO1lBQzFCLHdCQUF3QjtZQUN4QiwyQkFBMkI7WUFDM0IsMEJBQTBCO1lBQzFCLDBCQUEwQjtZQUMxQiwrQkFBK0I7WUFDL0Isa0NBQWtDOytHQUd6QixxQkFBcUIsWUFkdEIsWUFBWSxFQUFFLGVBQWU7OzJGQWM1QixxQkFBcUI7a0JBM0JqQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRTt3QkFDWixvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3dCQUMzQiwwQkFBMEI7d0JBQzFCLDJCQUEyQjt3QkFDM0Isd0JBQXdCO3dCQUN4QiwwQkFBMEI7d0JBQzFCLDBCQUEwQjt3QkFDMUIsK0JBQStCO3dCQUMvQixrQ0FBa0M7cUJBQ25DO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3hDLE9BQU8sRUFBRTt3QkFDUCxvQkFBb0I7d0JBQ3BCLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3dCQUMzQiwwQkFBMEI7d0JBQzFCLHdCQUF3Qjt3QkFDeEIsMkJBQTJCO3dCQUMzQiwwQkFBMEI7d0JBQzFCLDBCQUEwQjt3QkFDMUIsK0JBQStCO3dCQUMvQixrQ0FBa0M7cUJBQ25DO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBHcmFuaXRlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vY2FyZC9jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmFuaXRlQ2FyZExpc3RDb21wb25lbnQgfSBmcm9tICcuL2NhcmQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3Jhbml0ZUNhcmRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi9jYXJkL2NhcmQtY29udGVudC9jYXJkLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IEdyYW5pdGVDYXJkSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJkL2NhcmQtY29udGVudC9jYXJkLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3Jhbml0ZUNhcmRBY3Rpb25zQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJkL2NhcmQtY29udGVudC9jYXJkLWFjdGlvbnMuY29tcG9uZW50JztcbmltcG9ydCB7IEdyYW5pdGVDYXJkQm9keUNvbXBvbmVudCB9IGZyb20gJy4vY2FyZC9jYXJkLWNvbnRlbnQvY2FyZC1ib2R5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmFuaXRlQ2FyZEZvb3RlckNvbXBvbmVudCB9IGZyb20gJy4vY2FyZC9jYXJkLWNvbnRlbnQvY2FyZC1mb290ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IEdyYW5pdGVDYXJkQXZhdGFyQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJkL2NhcmQtYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHcmFuaXRlQ2FyZEhlYWRlclRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi9jYXJkL2NhcmQtY29udGVudC9jYXJkLWhlYWRlci10aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3Jhbml0ZUNhcmRIZWFkZXJTdWJUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4vY2FyZC9jYXJkLWNvbnRlbnQvY2FyZC1oZWFkZXItc3VidGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNjcm9sbGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBHcmFuaXRlQ2FyZENvbXBvbmVudCxcbiAgICBHcmFuaXRlQ2FyZExpc3RDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRDb250ZW50Q29tcG9uZW50LFxuICAgIEdyYW5pdGVDYXJkSGVhZGVyQ29tcG9uZW50LFxuICAgIEdyYW5pdGVDYXJkQWN0aW9uc0NvbXBvbmVudCxcbiAgICBHcmFuaXRlQ2FyZEJvZHlDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRGb290ZXJDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRBdmF0YXJDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRIZWFkZXJUaXRsZUNvbXBvbmVudCxcbiAgICBHcmFuaXRlQ2FyZEhlYWRlclN1YlRpdGxlQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTY3JvbGxpbmdNb2R1bGVdLFxuICBleHBvcnRzOiBbXG4gICAgR3Jhbml0ZUNhcmRDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRMaXN0Q29tcG9uZW50LFxuICAgIEdyYW5pdGVDYXJkQ29udGVudENvbXBvbmVudCxcbiAgICBHcmFuaXRlQ2FyZEhlYWRlckNvbXBvbmVudCxcbiAgICBHcmFuaXRlQ2FyZEJvZHlDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRBY3Rpb25zQ29tcG9uZW50LFxuICAgIEdyYW5pdGVDYXJkRm9vdGVyQ29tcG9uZW50LFxuICAgIEdyYW5pdGVDYXJkQXZhdGFyQ29tcG9uZW50LFxuICAgIEdyYW5pdGVDYXJkSGVhZGVyVGl0bGVDb21wb25lbnQsXG4gICAgR3Jhbml0ZUNhcmRIZWFkZXJTdWJUaXRsZUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgR3Jhbml0ZUNhcmRMaXN0TW9kdWxlIHt9XG4iXX0=
|
|
@@ -48,6 +48,7 @@ export class _MenuBaseComponent {
|
|
|
48
48
|
constructor(_changeDetectorRef) {
|
|
49
49
|
this._changeDetectorRef = _changeDetectorRef;
|
|
50
50
|
this.openOnHover = true;
|
|
51
|
+
this.scrollStrategy = 'reposition';
|
|
51
52
|
/**
|
|
52
53
|
* Event emitted when the menu is closed
|
|
53
54
|
*/
|
|
@@ -325,7 +326,7 @@ export class _MenuBaseComponent {
|
|
|
325
326
|
});
|
|
326
327
|
}
|
|
327
328
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: _MenuBaseComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
328
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: _MenuBaseComponent, inputs: { xPosition: "xPosition", yPosition: "yPosition", title: "title", closeLabel: "closeLabel", openOnHover: "openOnHover" }, outputs: { closed: "closed", opened: "opened" }, queries: [{ propertyName: "_allItems", predicate: GraniteMenuItemComponent, descendants: true }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 }); }
|
|
329
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.4", type: _MenuBaseComponent, inputs: { xPosition: "xPosition", yPosition: "yPosition", title: "title", closeLabel: "closeLabel", openOnHover: "openOnHover", scrollStrategy: "scrollStrategy" }, outputs: { closed: "closed", opened: "opened" }, queries: [{ propertyName: "_allItems", predicate: GraniteMenuItemComponent, descendants: true }], viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true }], ngImport: i0 }); }
|
|
329
330
|
}
|
|
330
331
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImport: i0, type: _MenuBaseComponent, decorators: [{
|
|
331
332
|
type: Directive
|
|
@@ -339,6 +340,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
339
340
|
type: Input
|
|
340
341
|
}], openOnHover: [{
|
|
341
342
|
type: Input
|
|
343
|
+
}], scrollStrategy: [{
|
|
344
|
+
type: Input
|
|
342
345
|
}], templateRef: [{
|
|
343
346
|
type: ViewChild,
|
|
344
347
|
args: [TemplateRef]
|
|
@@ -350,4 +353,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.4", ngImpor
|
|
|
350
353
|
}], opened: [{
|
|
351
354
|
type: Output
|
|
352
355
|
}] } });
|
|
353
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9tZW51L21lbnUtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixLQUFLLEVBRUwsT0FBTyxFQUNQLFlBQVksR0FDYixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU1uRSxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxHQUNqQyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFRakUsc0NBQXNDO0FBQ3RDLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQTJCckIsb0RBQW9EO0FBQ3BELE1BQU0sb0JBQW9CLEdBQWtCO0lBQzFDLEtBQUssRUFBRSxNQUFNO0lBQ2IsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFLENBQUM7S0FDWDtDQUNGLENBQUM7QUFFRixxREFBcUQ7QUFFckQsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyxrQkFBa0I7SUFPN0IsMENBQTBDO0lBQzFDLElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFB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c291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvY3VzS2V5TWFuYWdlciwgRm9jdXNPcmlnaW4gfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQgeyBEaXJlY3Rpb24gfSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQgeyBoYXNNb2RpZmllcktleSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBBbmltYXRpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHtcbiAgQmVoYXZpb3JTdWJqZWN0LFxuICBjb21iaW5lTGF0ZXN0LFxuICBtZXJnZSxcbiAgT2JzZXJ2YWJsZSxcbiAgU3ViamVjdCxcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtcbiAgQ2xpZW50SW5wdXRJbnRlcmZhY2UsXG4gIENsaWVudE91dHB1dEludGVyZmFjZSxcbn0gZnJvbSAnLi4vY29yZS9jbGllbnQtZW52aXJvbm1lbnQnO1xuaW1wb3J0IHtcbiAgdGhyb3dHcmFuaXRlTWVudUludmFsaWRQb3NpdGlvblgsXG4gIHRocm93R3Jhbml0ZU1lbnVJbnZhbGlkUG9zaXRpb25ZLFxufSBmcm9tICcuL21lbnUtZXJyb3JzJztcbmltcG9ydCB7IEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4vbWVudS1pdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBDbG9zZWRFdmVudFR5cGUsXG4gIE9wZW5lZEV2ZW50VHlwZSxcbiAgR3Jhbml0ZU1lbnVQYW5lbEludGVyZmFjZSxcbn0gZnJvbSAnLi9tZW51LXBhbmVsJztcbmltcG9ydCB7IE1lbnVQb3NpdGlvblgsIE1lbnVQb3NpdGlvblkgfSBmcm9tICcuL21lbnUtcG9zaXRpb25zJztcblxuLyoqIENvdW50ZXIgZm9yIHBhbmVsIElEIGdlbmVyYXRpb24gKi9cbmxldCBtZW51UGFuZWxVaWQgPSAwO1xuXG4vKiogTWVudSBwYW5lbCBhbmltYXRpb24gc3RhdGVzICovXG50eXBlIFRyYW5zZm9ybU1lbnVTdGF0ZXMgPVxuICAvLyBUb3VjaCBkZXZpY2VcbiAgfCAndm9pZCdcbiAgfCAnZW50ZXInXG4gIHwgJ2VudGVyLWZyb20tYmVsb3cnXG4gIHwgJ2JlbG93LXdpdGgtZGVsYXknXG4gIHwgJ2JlbG93J1xuICB8ICdwYW4nXG4gIHwgJ2hpZGUnXG4gIHwgJ3Bhbi1oaWRkZW4nO1xuXG4vKipcbiAqIE1lbnUgcGFuZWwgYW5pbWF0aW9uIHRyYW5zZm9ybS9zdGF0ZSBvYmplY3QuIEhhcyB0byBiZSBhbiBvYmplY3QgYXMgd2Ugc3VwcGx5XG4gKiB0aGUgYHhPZmZzZXRgIHBhcmFtZXRlciBhbmQgbm90IGp1c3QgdGhlIHN0YXRlIG5hbWUuXG4gKi9cbnR5cGUgVHJhbnNmb3JtTWVudSA9IHtcbiAgLyoqIEN1cnJlbnQgYW5pbWF0aW9uIHN0YXRlIG5hbWUgKi9cbiAgdmFsdWU6IFRyYW5zZm9ybU1lbnVTdGF0ZXM7XG4gIHBhcmFtczoge1xuICAgIC8qKiBIb3cgZmFyIHRoZSBtZW51IGhhcyBiZWVuIHBhbm5lZC9zd2lwZWQgYnkgdGhlIHVzZXIgKi9cbiAgICB4T2Zmc2V0OiBudW1iZXI7XG4gIH07XG59O1xuXG4vKiogTWVudSBwYW5lbCBhbmltYXRpb24gZGVmYXVsdCB0cmFuc2Zvcm0gdmFsdWVzICovXG5jb25zdCB0cmFuc2Zvcm1NZW51RGVmYXVsdDogVHJhbnNmb3JtTWVudSA9IHtcbiAgdmFsdWU6ICd2b2lkJyxcbiAgcGFyYW1zOiB7XG4gICAgeE9mZnNldDogMCxcbiAgfSxcbn07XG5cbi8qKiBCYXNlIGNsYXNzIHdpdGggYWxsIG9mIHRoZSBtZW51IGZ1bmN0aW9uYWxpdHkuICovXG5ARGlyZWN0aXZlKClcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvZGlyZWN0aXZlLWNsYXNzLXN1ZmZpeFxuZXhwb3J0IGNsYXNzIF9NZW51QmFzZUNvbXBvbmVudFxuICBpbXBsZW1lbnRzXG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgICBHcmFuaXRlTWVudVBhbmVsSW50ZXJmYWNlXG57XG4gIC8qKiBQb3NpdGlvbiBvZiB0aGUgbWVudSBpbiB0aGUgWCBheGlzLiAqL1xuICBASW5wdXQoKVxuICBnZXQgeFBvc2l0aW9uKCk6IE1lbnVQb3NpdGlvblgge1xuICAgIHJldHVybiB0aGlzLl94UG9zaXRpb247XG4gIH1cbiAgc2V0IHhQb3NpdGlvbih2YWx1ZTogTWVudVBvc2l0aW9uWCkge1xuICAgIGlmICh2YWx1ZSAhPT0gJ2JlZm9yZScgJiYgdmFsdWUgIT09ICdhZnRlcicpIHtcbiAgICAgIHRocm93R3Jhbml0ZU1lbnVJbnZhbGlkUG9zaXRpb25YKCk7XG4gICAgfVxuICAgIHRoaXMuX3hQb3NpdGlvbiA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIFBvc2l0aW9uIG9mIHRoZSBtZW51IGluIHRoZSBZIGF4aXMuICovXG4gIEBJbnB1dCgpXG4gIGdldCB5UG9zaXRpb24oKTogTWVudVBvc2l0aW9uWSB7XG4gICAgcmV0dXJuIHRoaXMuX3lQb3NpdGlvbjtcbiAgfVxuICBzZXQgeVBvc2l0aW9uKHZhbHVlOiBNZW51UG9zaXRpb25ZKSB7XG4gICAgaWYgKHZhbHVlICE9PSAnYWJvdmUnICYmIHZhbHVlICE9PSAnYmVsb3cnKSB7XG4gICAgICB0aHJvd0dyYW5pdGVNZW51SW52YWxpZFBvc2l0aW9uWSgpO1xuICAgIH1cbiAgICB0aGlzLl95UG9zaXRpb24gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKiBPcHRpb25hbCB0b3VjaCBtZW51IHBhbmVsIHRpdGxlICovXG4gIEBJbnB1dCgpXG4gIHRpdGxlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRvdWNoIG1lbnUgY2xvc2UgYnV0dG9uIGxhYmVsLiBJZiBub3Qgc2V0LCBhbnkgbGFiZWwgc2V0IGJ5IHBhcmVudCB3aWxsXG4gICAqIGJlIHVzZWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBjbG9zZUxhYmVsOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgb3Blbk9uSG92ZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIEBWaWV3Q2hpbGQoVGVtcGxhdGVSZWYpIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIC8qKiBBbGwgaXRlbXMgaW5zaWRlIHRoZSBtZW51LiBJbmNsdWRlcyBpdGVtcyBuZXN0ZWQgaW5zaWRlIGFub3RoZXIgbWVudS4gKi9cbiAgQENvbnRlbnRDaGlsZHJlbihHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgX2FsbEl0ZW1zOiBRdWVyeUxpc3Q8R3Jhbml0ZU1lbnVJdGVtQ29tcG9uZW50PjtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBtZW51IGlzIGNsb3NlZFxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGNsb3NlZDogRXZlbnRFbWl0dGVyPENsb3NlZEV2ZW50VHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZWQgd2hlbiB0aGUgbWVudSBpcyBvcGVuZWRcbiAgICovXG4gIEBPdXRwdXQoKSByZWFkb25seSBvcGVuZWQ6IEV2ZW50RW1pdHRlcjxPcGVuZWRFdmVudFR5cGU+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBVc2VkIGZvciBsb2NhdGluZyB0aGUgcGFuZWwgaW4gdGVzdHMgYW5kIHNldHRpbmcgdGhlIGFyaWEtY29udHJvbCBhdHRyaWJ1dGVcbiAgICogZm9yIHRoZSBtZW51IHRyaWdnZXIuXG4gICAqL1xuICByZWFkb25seSBwYW5lbElkID0gYGdyYW5pdGUtbWVudS1wYW5lbC0ke21lbnVQYW5lbFVpZCsrfWA7XG5cbiAgLyoqIFBhcmVudCBtZW51IG9mIHRoZSBjdXJyZW50IG1lbnUgcGFuZWwuICovXG4gIHBhcmVudE1lbnU6IEdyYW5pdGVNZW51UGFuZWxJbnRlcmZhY2UgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIExheW91dCBkaXJlY3Rpb24gb2YgdGhlIG1lbnUuICovXG4gIGRpcmVjdGlvbjogRGlyZWN0aW9uO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgYmFjayBidXR0b24gaW4gdG91Y2ggbWVudSB0aXRsZSBiYXIgKi9cbiAgc2hvd0JhY2tCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogV2hldGhlciB0byBzaG93IHRvdWNoIG1lbnUgdGl0bGUgYmFyICovXG4gIHNob3dUaXRsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRvIGFkZCBhIGNsb3NlIGJ1dHRvbiBiZWxvdyB0aGUgbWVudSAqL1xuICBzaG93Q2xvc2VCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiogT2JzZXJ2YWJsZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBwYW5lbCBhbmltYXRpb24uICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByeGpzL25vLWV4cG9zZWQtc3ViamVjdHNcbiAgX3RyYW5zZm9ybU1lbnU6IEJlaGF2aW9yU3ViamVjdDxUcmFuc2Zvcm1NZW51PiA9IG5ldyBCZWhhdmlvclN1YmplY3QoXG4gICAgdHJhbnNmb3JtTWVudURlZmF1bHRcbiAgKTtcblxuICAvKiogRW1pdHMgd2hlbmV2ZXIgYW4gYW5pbWF0aW9uIG9uIHRoZSBtZW51IGNvbXBsZXRlcy4gKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMvbm8tZXhwb3NlZC1zdWJqZWN0c1xuICBfYW5pbWF0aW9uRG9uZSA9IG5ldyBTdWJqZWN0PEFuaW1hdGlvbkV2ZW50PigpO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBtZW51IGlzIGFuaW1hdGluZy4gKi9cbiAgX2lzQW5pbWF0aW5nOiBib29sZWFuO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBtZW51IGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gKi9cbiAgX2lzQ2xvc2luZzogYm9vbGVhbjtcblxuICAvKiogQ2xpZW50IGlucHV0IGRldmljZSBpbmZvcm1hdGlvbiAqL1xuICBfY2xpZW50SW5wdXQ6IENsaWVudElucHV0SW50ZXJmYWNlO1xuXG4gIC8qKiBDbGllbnQgb3V0cHV0IGRldmljZSBpbmZvcm1hdGlvbiAqL1xuICBfY2xpZW50T3V0cHV0OiBDbGllbnRPdXRwdXRJbnRlcmZhY2U7XG5cbiAgcHJpdmF0ZSBfbWVudUVtcHR5JDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbWVtYmVyLW9yZGVyaW5nXG4gIF9pc01lbnVFbXB0eSQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9tZW51RW1wdHkkLFxuICAgIHRoaXMuX2FuaW1hdGlvbkRvbmUsXG4gIF0pLnBpcGUoXG4gICAgZmlsdGVyKChbbSwgYV0pID0+IG0gJiYgYSAhPSBudWxsKSxcbiAgICBtYXAoKCkgPT4gdHJ1ZSlcbiAgKTtcblxuICAvKiogT25seSB0aGUgZGlyZWN0IGRlc2NlbmRhbnQgbWVudSBpdGVtcy4gKi9cbiAgcHJpdmF0ZSBfZGlyZWN0RGVzY2VuZGFudEl0ZW1zID0gbmV3IFF1ZXJ5TGlzdDxHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQ+KCk7XG5cbiAgcHJpdmF0ZSBfa2V5TWFuYWdlcjogRm9jdXNLZXlNYW5hZ2VyPEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudD47XG5cbiAgLyoqIFN1YnNjcmlwdGlvbiB0byB0YWIgZXZlbnRzIG9uIHRoZSBtZW51IHBhbmVsICovXG4gIHByaXZhdGUgX3RhYlN1YnNjcmlwdGlvbiA9IFN1YnNjcmlwdGlvbi5FTVBUWTtcblxuICBwcml2YXRlIF94UG9zaXRpb246IE1lbnVQb3NpdGlvblggPSAnYWZ0ZXInO1xuICBwcml2YXRlIF95UG9zaXRpb246IE1lbnVQb3NpdGlvblkgPSAnYmVsb3cnO1xuXG4gIC8qKiBDdXJyZW50IHN0YXRlIG9mIHRoZSBwYW5lbCBhbmltYXRpb24uICovXG4gIHNldCBfcGFuZWxBbmltYXRpb25TdGF0ZShzdGF0ZTogVHJhbnNmb3JtTWVudVN0YXRlcykge1xuICAgIHRoaXMuX3RyYW5zZm9ybU1lbnUubmV4dCh7XG4gICAgICB2YWx1ZTogc3RhdGUsXG4gICAgICBwYXJhbXM6IHsgeE9mZnNldDogdGhpcy54T2Zmc2V0IH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3VycmVudCBob3Jpem9udGFsIG9mZnNldC4gVXNlZCB3aXRoIGBwYW5gIGFuZCBgcGFuLWhpZGRlbmBcbiAgICogYW5pbWF0aW9uIHN0YXRlcy5cbiAgICovXG4gIHByaXZhdGUgeE9mZnNldDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuX21lbnVFbXB0eSQubmV4dCh0aGlzLl9hbGxJdGVtcy5sZW5ndGggPCAxID8gdHJ1ZSA6IGZhbHNlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVEaXJlY3REZXNjZW5kYW50cygpO1xuICAgIHRoaXMuX2tleU1hbmFnZXIgPSBuZXcgRm9jdXNLZXlNYW5hZ2VyKHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcylcbiAgICAgIC53aXRoV3JhcCgpXG4gICAgICAuc2tpcFByZWRpY2F0ZSgobWVudUl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgaG9zdEVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gbWVudUl0ZW0uX2dldEhvc3RFbGVtZW50KCk7XG4gICAgICAgIHJldHVybiBob3N0RWxlbWVudCBpbnN0YW5jZW9mIEhUTUxCdXR0b25FbGVtZW50XG4gICAgICAgICAgPyBob3N0RWxlbWVudC5kaXNhYmxlZFxuICAgICAgICAgIDogaG9zdEVsZW1lbnQuaGFzQXR0cmlidXRlKCdncmFuaXRlVGl0bGUnKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuX3RhYlN1YnNjcmlwdGlvbiA9IHRoaXMuX2tleU1hbmFnZXIudGFiT3V0LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmNsb3NlZC5lbWl0KCd0YWInKTtcbiAgICB9KTtcblxuICAgIC8vIElmIGEgdXNlciBtYW51YWxseSAocHJvZ3JhbWF0aWNhbGx5KSBmb2N1c2VzIGEgbWVudSBpdGVtLCB3ZSBuZWVkIHRvIHJlZmxlY3QgdGhhdCBmb2N1c1xuICAgIC8vIGNoYW5nZSBiYWNrIHRvIHRoZSBrZXkgbWFuYWdlci4gTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gdW5zdWJzY3JpYmUgaGVyZSBiZWNhdXNlIF9mb2N1c2VkXG4gICAgLy8gaXMgaW50ZXJuYWwgYW5kIHdlIGtub3cgdGhhdCBpdCBnZXRzIGNvbXBsZXRlZCBvbiBkZXN0cm95LlxuICAgIHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5jaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoKHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcyksXG4gICAgICAgIHN3aXRjaE1hcCgoaXRlbXMpID0+XG4gICAgICAgICAgbWVyZ2UoLi4uaXRlbXMubWFwKChpdGVtOiBHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQpID0+IGl0ZW0uX2ZvY3VzZWQpKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKChmb2N1c2VkSXRlbTogR3Jhbml0ZU1lbnVJdGVtQ29tcG9uZW50KSA9PlxuICAgICAgICB0aGlzLl9rZXlNYW5hZ2VyLnVwZGF0ZUFjdGl2ZUl0ZW0oZm9jdXNlZEl0ZW0pXG4gICAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmRlc3Ryb3koKTtcbiAgICB0aGlzLl90YWJTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNsb3NlZC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmVhbSB0aGF0IGNvbWJpbmVzIHRoZSBgX2hvdmVyZWRgIG9ic2VydmFibGVzIG9mIGFsbCB0aGUgbWVudSdzIGl0ZW1zXG4gICAqIGludG8gYSBzaW5nbGUgb2JzZXJ2YWJsZS4gRW1pdHMgd2hlbmV2ZXIgdGhlIGhvdmVyZWQgbWVudSBpdGVtIGNoYW5nZXMuXG4gICAqL1xuICBfaG92ZXJlZCgpOiBPYnNlcnZhYmxlPEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudD4ge1xuICAgIC8vIENvZXJjZSB0aGUgYGNoYW5nZXNgIHByb3BlcnR5IGJlY2F1c2UgQW5ndWxhciB0eXBlcyBpdCBhcyBgT2JzZXJ2YWJsZTxhbnk+YFxuICAgIGNvbnN0IGl0ZW1DaGFuZ2VzID0gdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmNoYW5nZXMgYXMgT2JzZXJ2YWJsZTxcbiAgICAgIFF1ZXJ5TGlzdDxHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQ+XG4gICAgPjtcblxuICAgIHJldHVybiBpdGVtQ2hhbmdlcy5waXBlKFxuICAgICAgc3RhcnRXaXRoKHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcyksXG4gICAgICAvLyBIb3ZlcmluZyBpcyBub3QgYXBwbGljYWJsZSB3aGVuIHByb2R1Y2luZyB0b3VjaCBvdXRwdXRcbiAgICAgIGZpbHRlcigoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jbGllbnRPdXRwdXQ/LmRldmljZSAhPT0gJ3RvdWNoJztcbiAgICAgIH0pLFxuICAgICAgc3dpdGNoTWFwKChpdGVtcykgPT5cbiAgICAgICAgbWVyZ2UoLi4uaXRlbXMubWFwKChpdGVtOiBHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQpID0+IGl0ZW0uX2hvdmVyZWQpKVxuICAgICAgKVxuICAgICkgYXMgT2JzZXJ2YWJsZTxHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQ+O1xuICB9XG5cbiAgLyoqIEhhbmRsZSBhIGtleWJvYXJkIGV2ZW50IGZyb20gdGhlIG1lbnUsIGRlbGVnYXRpbmcgdG8gdGhlIGFwcHJvcHJpYXRlIGFjdGlvbi4gKi9cbiAgX2hhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XG4gICAgY29uc3QgbWFuYWdlciA9IHRoaXMuX2tleU1hbmFnZXI7XG5cbiAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgaWYgKCFoYXNNb2RpZmllcktleShldmVudCkpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMuY2xvc2VkLmVtaXQoJ2tleWRvd24nKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGlmICh0aGlzLnBhcmVudE1lbnUgJiYgdGhpcy5kaXJlY3Rpb24gPT09ICdsdHInKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgna2V5ZG93bicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dSaWdodCc6XG4gICAgICAgIGlmICh0aGlzLnBhcmVudE1lbnUgJiYgdGhpcy5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgna2V5ZG93bicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnSG9tZSc6XG4gICAgICBjYXNlICdFbmQnOlxuICAgICAgICBpZiAoIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGtleSA9PT0gJ0hvbWUnXG4gICAgICAgICAgICA/IG1hbmFnZXIuc2V0Rmlyc3RJdGVtQWN0aXZlKClcbiAgICAgICAgICAgIDogbWFuYWdlci5zZXRMYXN0SXRlbUFjdGl2ZSgpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoa2V5ID09PSAnQXJyb3dVcCcgfHwga2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgICAgICAgIG1hbmFnZXIuc2V0Rm9jdXNPcmlnaW4oJ2tleWJvYXJkJyk7XG4gICAgICAgIH1cblxuICAgICAgICBtYW5hZ2VyLm9uS2V5ZG93bihldmVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBtZW51LlxuICAgKiBAcGFyYW0gb3JpZ2luIEFjdGlvbiBmcm9tIHdoaWNoIHRoZSBmb2N1cyBvcmlnaW5hdGVkLiBVc2VkIHRvIHNldCB0aGUgY29ycmVjdCBzdHlsaW5nLlxuICAgKi9cbiAgZm9jdXNGaXJzdEl0ZW0ob3JpZ2luOiBGb2N1c09yaWdpbiA9ICdwcm9ncmFtJyk6IHZvaWQge1xuICAgIHRoaXMuX2tleU1hbmFnZXIuc2V0Rm9jdXNPcmlnaW4ob3JpZ2luKS5zZXRGaXJzdEl0ZW1BY3RpdmUoKTtcbiAgfVxuXG4gIC8qKiBVcGRhdGVzIHRoZSBgc2hvd1RpdGxlYCBwcm9wZXJ0eSBmb3IgdG91Y2ggZGV2aWNlIFVJICovXG4gIF91cGRhdGVTaG93VGl0bGUoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93VGl0bGUgPSAhIXRoaXMudGl0bGUgfHwgdGhpcy5zaG93QmFja0J1dHRvbjtcbiAgfVxuXG4gIC8qKiBTdGFydHMgdGhlIGVudGVyIGFuaW1hdGlvbiAqL1xuICBfc3RhcnRBbmltYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdlbnRlcic7XG4gIH1cblxuICAvKiogUmVzZXRzIHRoZSBwYW5lbCBhbmltYXRpb24gdG8gaXRzIGluaXRpYWwgc3RhdGUuICovXG4gIF9yZXNldEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ3ZvaWQnO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgJ2JlbG93JyBhbmltYXRpb24sIG1vdmluZyBhIG1lbnUgZG93biwgb3V0IG9mIHZpZXcgYmVsb3cgdGhlXG4gICAqIHZpZXdwb3J0LiBVc2VkIHRvIGNsb3NlIHRoZSB3aG9sZSBtZW51LCBmb3IgZXhhbXBsZSB3aGVuIGNsaWNraW5nXG4gICAqIHRoZSBiYWNrZHJvcC5cbiAgICovXG4gIF9zdGFydFRvdWNoQ2xvc2VEb3duQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGUgPSAnYmVsb3cnO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgJ2JlbG93LXdpdGgtZGVsYXknIGFuaW1hdGlvbiwgbW92aW5nIGEgbWVudSBkb3duLCBvdXQgb2YgdmlldyBiZWxvdyB0aGVcbiAgICogdmlld3BvcnQuIFVzZWQgdG8gY2xvc2UgdGhlIHdob2xlIG1lbnUgYXMgYSByZXNwb25zZSB0byB0aGUgdXNlciB0YXBwaW5nXG4gICAqIGEgbWVudSBpdGVtLiBUaGVyZSBpcyBhIHNob3J0IGRlbGF5IGJlZm9yZSB0aGUgYW5pbWF0aW9uIHN0YXJ0cywgdG8gdGhhdFxuICAgKiB0aGUgdXNlciBnZXRzIGEgdmlzdWFsIGZlZWRiYWNrIG9uIHdoYXQgaXRlbSB3YXMgc2VsZWN0ZWQuXG4gICAqL1xuICBfc3RhcnRUb3VjaENsb3NlRG93bkFuaW1hdGlvbldpdGhEZWxheSgpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ2JlbG93LXdpdGgtZGVsYXknO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgJ3ZvaWQnIGFuaW1hdGlvbiwgbW92aW5nIGEgKHN1YikgbWVudSBvdXQgb2YgdmlldyB0byB0aGUgc2lkZVxuICAgKiBvZiB0aGUgdmlld3BvcnQuIFVzZWQgd2hlbiBnb2luZyBcImJhY2tcIiBmcm9tIGEgc3ViIG1lbnUuXG4gICAqL1xuICBfc3RhcnRUb3VjaENsb3NlU2lkZUFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNldEFuaW1hdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgZW50ZXItZnJvbS1iZWxvdyBhbmltYXRpb24sIG1vdmluZyBhIChyb290KSBtZW51IGludG8gdmlldyxcbiAgICogQW5pbWF0ZXMgdXB3YXJkcyBmcm9tIGEgc3RhcnRpbmcgcG9zaXRpb24gYmVsb3cgdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgX3N0YXJ0VG91Y2hSb290RW50ZXJBbmltYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdlbnRlci1mcm9tLWJlbG93JztcbiAgICB0aGlzLnhPZmZzZXQgPSAwO1xuICB9XG5cbiAgLyoqIFN0YXJ0cyB0aGUgZW50ZXIgYW5pbWF0aW9uLCBtb3ZpbmcgYSAoc3ViKSBtZW51IGludG8gdmlldy4gKi9cbiAgX3N0YXJ0VG91Y2hTdWJtZW51RW50ZXJBbmltYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdlbnRlcic7XG4gICAgdGhpcy54T2Zmc2V0ID0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgdGhlIHBhbiBhbmltYXRpb24sIHRvIHBvc2l0aW9uIGEgc3VibWVudSBpbiBhIHJlc3BvbnNlXG4gICAqIHRvIHVzZXIgZHJhZ2dpbmcgc2lkZXdheXMgKHBhbm5pbmcpLlxuICAgKi9cbiAgX3N0YXJ0VG91Y2hQYW5BbmltYXRpb24oeE9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdwYW4nO1xuICAgIHRoaXMueE9mZnNldCA9IHhPZmZzZXQ7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSBwYW4taGlkZGVuIGFuaW1hdGlvbiwgdG8gcG9zaXRpb24gYSBwYXJlbnQgbWVudSBuZXh0IHRvIGFuXG4gICAqIGFjdGl2ZSBzdWJtZW51IHRoYXQgdGhlIHVzZXIgaXMgZHJhZ2dpbmcgc2lkZXdheXMgKHBhbm5pbmcpLlxuICAgKi9cbiAgX3N0YXJ0VG91Y2hIaWRlUGFuQW5pbWF0aW9uKHhPZmZzZXQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGUgPSAncGFuLWhpZGRlbic7XG4gICAgdGhpcy54T2Zmc2V0ID0geE9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgdGhlIGhpZGUgYW5pbWF0aW9uLCB0byBtYWtlIGEgcGFyZW50IG1lbnUgc2xpZGUgb3V0IHRvIGxlYXZlXG4gICAqIHNwYWNlIGZvciBhIHN1Ym1lbnUuXG4gICAqL1xuICBfc3RhcnRUb3VjaEhpZGVBbmltYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdoaWRlJztcbiAgICB0aGlzLnhPZmZzZXQgPSAwO1xuICB9XG5cbiAgLyoqIENhbGxiYWNrIHRoYXQgaXMgaW52b2tlZCB3aGVuIHRoZSBwYW5lbCBhbmltYXRpb24gY29tcGxldGVzLiAqL1xuICBfb25BbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2FuaW1hdGlvbkRvbmUubmV4dChldmVudCk7XG4gICAgdGhpcy5faXNBbmltYXRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIF9vbkFuaW1hdGlvblN0YXJ0KGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2lzQW5pbWF0aW5nID0gdHJ1ZTtcblxuICAgIC8vIFNjcm9sbCB0aGUgY29udGVudCBlbGVtZW50IHRvIHRoZSB0b3AgYXMgc29vbiBhcyB0aGUgYW5pbWF0aW9uIHN0YXJ0cy4gVGhpcyBpcyBuZWNlc3NhcnksXG4gICAgLy8gYmVjYXVzZSB3ZSBtb3ZlIGZvY3VzIHRvIHRoZSBmaXJzdCBpdGVtIHdoaWxlIGl0J3Mgc3RpbGwgYmVpbmcgYW5pbWF0ZWQsIHdoaWNoIGNhbiB0aHJvd1xuICAgIC8vIHRoZSBicm93c2VyIG9mZiB3aGVuIGl0IGRldGVybWluZXMgdGhlIHNjcm9sbCBwb3NpdGlvbi4gQWx0ZXJuYXRpdmVseSB3ZSBjYW4gbW92ZSBmb2N1c1xuICAgIC8vIHdoZW4gdGhlIGFuaW1hdGlvbiBpcyBkb25lLCBob3dldmVyIG1vdmluZyBmb2N1cyBhc3luY2hyb25vdXNseSB3aWxsIGludGVycnVwdCBzY3JlZW5cbiAgICAvLyByZWFkZXJzIHdoaWNoIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiByZWFkaW5nIG91dCB0aGUgbWVudSBhbHJlYWR5LiBXZSB0YWtlIHRoZSBgZWxlbWVudGBcbiAgICAvLyBmcm9tIHRoZSBgZXZlbnRgIHNpbmNlIHdlIGNhbid0IHVzZSBhIGBWaWV3Q2hpbGRgIHRvIGFjY2VzcyB0aGUgcGFuZS5cbiAgICBpZiAoXG4gICAgICAoZXZlbnQudG9TdGF0ZSA9PT0gJ2VudGVyJyB8fCBldmVudC50b1N0YXRlID09PSAnZW50ZXItZnJvbS1iZWxvdycpICYmXG4gICAgICB0aGlzLl9rZXlNYW5hZ2VyLmFjdGl2ZUl0ZW1JbmRleCA9PT0gMFxuICAgICkge1xuICAgICAgZXZlbnQuZWxlbWVudC5zY3JvbGxUb3AgPSAwO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgY2xpY2sgb24gdGhlIG1lbnUgYnkgZW1pdHRpbmcgb24gdGhlIGBjbG9zZWRgIGVtaXR0ZXJcbiAgICogd2l0aCBhIGBjbGlja2AgcmVhc29uXG4gICAqL1xuICBfaGFuZGxlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgnY2xpY2snKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgY2xpY2sgb24gdGhlIGNsb3NlIGJ1dHRvbiBieSBlbWl0dGluZyBvbiB0aGUgYGNsb3NlZGAgZW1pdHRlclxuICAgKiB3aXRob3V0IGFueSBwYXJ0aWN1bGFyIHJlYXNvblxuICAgKi9cbiAgX2hhbmRsZUNsb3NlQ2xpY2soKTogdm9pZCB7XG4gICAgdGhpcy5jbG9zZWQuZW1pdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjbGljayBvbiB0aGUgYmFjayBpY29uIGJ5IGVtaXR0aW5nIG9uIHRoZSBgY2xpY2tlZGAgZW1pdHRlclxuICAgKi9cbiAgX2hhbmRsZUJhY2tDbGljayhlOiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvd0JhY2tCdXR0b24pIHtcbiAgICAgIC8vIENsb3NlIHN1Ym1lbnUga2V5ZG93bi1zdHlsZTogY2xvc2Ugb25seSB0aGlzIG1lbnUgYW5kIGxlYXZlIHBhcmVudHMgb3BlblxuICAgICAgdGhpcy5jbG9zZWQuZW1pdCgna2V5ZG93bicpO1xuICAgIH1cbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBjbGllbnQgZGV2aWNlIGluZm9ybWF0aW9uIGZvciB0aGUgbWVudSBhbmQgaXRzIG1lbnUgaXRlbXMuXG4gICAqL1xuICBfc2V0RGV2aWNlKFxuICAgIGNsaWVudElucHV0OiBDbGllbnRJbnB1dEludGVyZmFjZSxcbiAgICBjbGllbnRPdXRwdXQ6IENsaWVudE91dHB1dEludGVyZmFjZVxuICApOiB2b2lkIHtcbiAgICB0aGlzLl9jbGllbnRJbnB1dCA9IGNsaWVudElucHV0O1xuICAgIHRoaXMuX2NsaWVudE91dHB1dCA9IGNsaWVudE91dHB1dDtcblxuICAgIHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpdGVtLl9jbGllbnRJbnB1dCA9IGNsaWVudElucHV0O1xuICAgICAgaXRlbS5fY2xpZW50T3V0cHV0ID0gY2xpZW50T3V0cHV0O1xuICAgIH0pO1xuXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBhY3RpdmUgaXRlbSBpbiB0aGUgbWVudS4gVGhpcyBpcyB1c2VkIHdoZW4gdGhlIG1lbnUgaXMgb3BlbmVkLCBhbGxvd2luZ1xuICAgKiB0aGUgdXNlciB0byBzdGFydCBmcm9tIHRoZSBmaXJzdCBvcHRpb24gd2hlbiBwcmVzc2luZyB0aGUgZG93biBhcnJvdy5cbiAgICovXG4gIHJlc2V0QWN0aXZlSXRlbSgpOiB2b2lkIHtcbiAgICB0aGlzLl9rZXlNYW5hZ2VyLnNldEFjdGl2ZUl0ZW0oLTEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdXAgYSBzdHJlYW0gdGhhdCB3aWxsIGtlZXAgdHJhY2sgb2YgYW55IG5ld2x5LWFkZGVkIG1lbnUgaXRlbXMgYW5kIHdpbGwgdXBkYXRlIHRoZSBsaXN0XG4gICAqIG9mIGRpcmVjdCBkZXNjZW5kYW50cy4gV2UgY29sbGVjdCB0aGUgZGVzY2VuZGFudHMgdGhpcyB3YXksIGJlY2F1c2UgYF9hbGxJdGVtc2AgY2FuIGluY2x1ZGVcbiAgICogaXRlbXMgdGhhdCBhcmUgcGFydCBvZiBjaGlsZCBtZW51cywgYW5kIHVzaW5nIGEgY3VzdG9tIHdheSBvZiByZWdpc3RlcmluZyBpdGVtcyBpcyB1bnJlbGlhYmxlXG4gICAqIHdoZW4gaXQgY29tZXMgdG8gbWFpbnRhaW5pbmcgdGhlIGl0ZW0gb3JkZXIuXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVEaXJlY3REZXNjZW5kYW50cygpIHtcbiAgICB0aGlzLl9hbGxJdGVtcy5jaGFuZ2VzXG4gICAgICAucGlwZShzdGFydFdpdGgodGhpcy5fYWxsSXRlbXMpKVxuICAgICAgLnN1YnNjcmliZSgoaXRlbXM6IFF1ZXJ5TGlzdDxHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQ+KSA9PiB7XG4gICAgICAgIHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5yZXNldChcbiAgICAgICAgICBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uX3BhcmVudE1lbnUgPT09IHRoaXMpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuX2RpcmVjdERlc2NlbmRhbnRJdGVtcy5ub3RpZnlPbkNoYW5nZXMoKTtcbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
356
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9ncmFuaXRlLWNvbXBvbmVudHMvc3JjL2xpYi9tZW51L21lbnUtYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZixTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBZSxNQUFNLG1CQUFtQixDQUFDO0FBRWpFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixLQUFLLEVBRUwsT0FBTyxFQUNQLFlBQVksR0FDYixNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQU1uRSxPQUFPLEVBQ0wsZ0NBQWdDLEVBQ2hDLGdDQUFnQyxHQUNqQyxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFRakUsc0NBQXNDO0FBQ3RDLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQTJCckIsb0RBQW9EO0FBQ3BELE1BQU0sb0JBQW9CLEdBQWtCO0lBQzFDLEtBQUssRUFBRSxNQUFNO0lBQ2IsTUFBTSxFQUFFO1FBQ04sT0FBTyxFQUFFLENBQUM7S0FDWDtDQUNGLENBQUM7QUFFRixxREFBcUQ7QUFFckQsa0VBQWtFO0FBQ2xFLE1BQU0sT0FBTyxrQkFBa0I7SUFPN0IsMENBQTBDO0lBQzFDLElBQ0ksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFB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O2dCQU03QyxNQUFNO3NCQUF4QixNQUFNO2dCQUtZLE1BQU07c0JBQXhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29udGVudENoaWxkcmVuLFxuICBEaXJlY3RpdmUsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9jdXNLZXlNYW5hZ2VyLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IERpcmVjdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IGhhc01vZGlmaWVyS2V5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEFuaW1hdGlvbkV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIG1lcmdlLFxuICBPYnNlcnZhYmxlLFxuICBTdWJqZWN0LFxuICBTdWJzY3JpcHRpb24sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBDbGllbnRJbnB1dEludGVyZmFjZSxcbiAgQ2xpZW50T3V0cHV0SW50ZXJmYWNlLFxufSBmcm9tICcuLi9jb3JlL2NsaWVudC1lbnZpcm9ubWVudCc7XG5pbXBvcnQge1xuICB0aHJvd0dyYW5pdGVNZW51SW52YWxpZFBvc2l0aW9uWCxcbiAgdGhyb3dHcmFuaXRlTWVudUludmFsaWRQb3NpdGlvblksXG59IGZyb20gJy4vbWVudS1lcnJvcnMnO1xuaW1wb3J0IHsgR3Jhbml0ZU1lbnVJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9tZW51LWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7XG4gIENsb3NlZEV2ZW50VHlwZSxcbiAgT3BlbmVkRXZlbnRUeXBlLFxuICBHcmFuaXRlTWVudVBhbmVsSW50ZXJmYWNlLFxufSBmcm9tICcuL21lbnUtcGFuZWwnO1xuaW1wb3J0IHsgTWVudVBvc2l0aW9uWCwgTWVudVBvc2l0aW9uWSB9IGZyb20gJy4vbWVudS1wb3NpdGlvbnMnO1xuXG4vKiogQ291bnRlciBmb3IgcGFuZWwgSUQgZ2VuZXJhdGlvbiAqL1xubGV0IG1lbnVQYW5lbFVpZCA9IDA7XG5cbi8qKiBNZW51IHBhbmVsIGFuaW1hdGlvbiBzdGF0ZXMgKi9cbnR5cGUgVHJhbnNmb3JtTWVudVN0YXRlcyA9XG4gIC8vIFRvdWNoIGRldmljZVxuICB8ICd2b2lkJ1xuICB8ICdlbnRlcidcbiAgfCAnZW50ZXItZnJvbS1iZWxvdydcbiAgfCAnYmVsb3ctd2l0aC1kZWxheSdcbiAgfCAnYmVsb3cnXG4gIHwgJ3BhbidcbiAgfCAnaGlkZSdcbiAgfCAncGFuLWhpZGRlbic7XG5cbi8qKlxuICogTWVudSBwYW5lbCBhbmltYXRpb24gdHJhbnNmb3JtL3N0YXRlIG9iamVjdC4gSGFzIHRvIGJlIGFuIG9iamVjdCBhcyB3ZSBzdXBwbHlcbiAqIHRoZSBgeE9mZnNldGAgcGFyYW1ldGVyIGFuZCBub3QganVzdCB0aGUgc3RhdGUgbmFtZS5cbiAqL1xudHlwZSBUcmFuc2Zvcm1NZW51ID0ge1xuICAvKiogQ3VycmVudCBhbmltYXRpb24gc3RhdGUgbmFtZSAqL1xuICB2YWx1ZTogVHJhbnNmb3JtTWVudVN0YXRlcztcbiAgcGFyYW1zOiB7XG4gICAgLyoqIEhvdyBmYXIgdGhlIG1lbnUgaGFzIGJlZW4gcGFubmVkL3N3aXBlZCBieSB0aGUgdXNlciAqL1xuICAgIHhPZmZzZXQ6IG51bWJlcjtcbiAgfTtcbn07XG5cbi8qKiBNZW51IHBhbmVsIGFuaW1hdGlvbiBkZWZhdWx0IHRyYW5zZm9ybSB2YWx1ZXMgKi9cbmNvbnN0IHRyYW5zZm9ybU1lbnVEZWZhdWx0OiBUcmFuc2Zvcm1NZW51ID0ge1xuICB2YWx1ZTogJ3ZvaWQnLFxuICBwYXJhbXM6IHtcbiAgICB4T2Zmc2V0OiAwLFxuICB9LFxufTtcblxuLyoqIEJhc2UgY2xhc3Mgd2l0aCBhbGwgb2YgdGhlIG1lbnUgZnVuY3Rpb25hbGl0eS4gKi9cbkBEaXJlY3RpdmUoKVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtY2xhc3Mtc3VmZml4XG5leHBvcnQgY2xhc3MgX01lbnVCYXNlQ29tcG9uZW50XG4gIGltcGxlbWVudHNcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIE9uRGVzdHJveSxcbiAgICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICAgIEdyYW5pdGVNZW51UGFuZWxJbnRlcmZhY2VcbntcbiAgLyoqIFBvc2l0aW9uIG9mIHRoZSBtZW51IGluIHRoZSBYIGF4aXMuICovXG4gIEBJbnB1dCgpXG4gIGdldCB4UG9zaXRpb24oKTogTWVudVBvc2l0aW9uWCB7XG4gICAgcmV0dXJuIHRoaXMuX3hQb3NpdGlvbjtcbiAgfVxuICBzZXQgeFBvc2l0aW9uKHZhbHVlOiBNZW51UG9zaXRpb25YKSB7XG4gICAgaWYgKHZhbHVlICE9PSAnYmVmb3JlJyAmJiB2YWx1ZSAhPT0gJ2FmdGVyJykge1xuICAgICAgdGhyb3dHcmFuaXRlTWVudUludmFsaWRQb3NpdGlvblgoKTtcbiAgICB9XG4gICAgdGhpcy5feFBvc2l0aW9uID0gdmFsdWU7XG4gIH1cblxuICAvKiogUG9zaXRpb24gb2YgdGhlIG1lbnUgaW4gdGhlIFkgYXhpcy4gKi9cbiAgQElucHV0KClcbiAgZ2V0IHlQb3NpdGlvbigpOiBNZW51UG9zaXRpb25ZIHtcbiAgICByZXR1cm4gdGhpcy5feVBvc2l0aW9uO1xuICB9XG4gIHNldCB5UG9zaXRpb24odmFsdWU6IE1lbnVQb3NpdGlvblkpIHtcbiAgICBpZiAodmFsdWUgIT09ICdhYm92ZScgJiYgdmFsdWUgIT09ICdiZWxvdycpIHtcbiAgICAgIHRocm93R3Jhbml0ZU1lbnVJbnZhbGlkUG9zaXRpb25ZKCk7XG4gICAgfVxuICAgIHRoaXMuX3lQb3NpdGlvbiA9IHZhbHVlO1xuICB9XG5cbiAgLyoqIE9wdGlvbmFsIHRvdWNoIG1lbnUgcGFuZWwgdGl0bGUgKi9cbiAgQElucHV0KClcbiAgdGl0bGU6IHN0cmluZztcblxuICAvKipcbiAgICogVG91Y2ggbWVudSBjbG9zZSBidXR0b24gbGFiZWwuIElmIG5vdCBzZXQsIGFueSBsYWJlbCBzZXQgYnkgcGFyZW50IHdpbGxcbiAgICogYmUgdXNlZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGNsb3NlTGFiZWw6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBvcGVuT25Ib3ZlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgc2Nyb2xsU3RyYXRlZ3k6ICdyZXBvc2l0aW9uJyB8ICdjbG9zZScgPSAncmVwb3NpdGlvbic7XG5cbiAgQFZpZXdDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgLyoqIEFsbCBpdGVtcyBpbnNpZGUgdGhlIG1lbnUuIEluY2x1ZGVzIGl0ZW1zIG5lc3RlZCBpbnNpZGUgYW5vdGhlciBtZW51LiAqL1xuICBAQ29udGVudENoaWxkcmVuKEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBfYWxsSXRlbXM6IFF1ZXJ5TGlzdDxHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQ+O1xuXG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVkIHdoZW4gdGhlIG1lbnUgaXMgY2xvc2VkXG4gICAqL1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgY2xvc2VkOiBFdmVudEVtaXR0ZXI8Q2xvc2VkRXZlbnRUeXBlPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRXZlbnQgZW1pdHRlZCB3aGVuIHRoZSBtZW51IGlzIG9wZW5lZFxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IG9wZW5lZDogRXZlbnRFbWl0dGVyPE9wZW5lZEV2ZW50VHlwZT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIFVzZWQgZm9yIGxvY2F0aW5nIHRoZSBwYW5lbCBpbiB0ZXN0cyBhbmQgc2V0dGluZyB0aGUgYXJpYS1jb250cm9sIGF0dHJpYnV0ZVxuICAgKiBmb3IgdGhlIG1lbnUgdHJpZ2dlci5cbiAgICovXG4gIHJlYWRvbmx5IHBhbmVsSWQgPSBgZ3Jhbml0ZS1tZW51LXBhbmVsLSR7bWVudVBhbmVsVWlkKyt9YDtcblxuICAvKiogUGFyZW50IG1lbnUgb2YgdGhlIGN1cnJlbnQgbWVudSBwYW5lbC4gKi9cbiAgcGFyZW50TWVudTogR3Jhbml0ZU1lbnVQYW5lbEludGVyZmFjZSB8IHVuZGVmaW5lZDtcblxuICAvKiogTGF5b3V0IGRpcmVjdGlvbiBvZiB0aGUgbWVudS4gKi9cbiAgZGlyZWN0aW9uOiBEaXJlY3Rpb247XG5cbiAgLyoqIFdoZXRoZXIgdG8gc2hvdyBiYWNrIGJ1dHRvbiBpbiB0b3VjaCBtZW51IHRpdGxlIGJhciAqL1xuICBzaG93QmFja0J1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBXaGV0aGVyIHRvIHNob3cgdG91Y2ggbWVudSB0aXRsZSBiYXIgKi9cbiAgc2hvd1RpdGxlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqIFdoZXRoZXIgdG8gYWRkIGEgY2xvc2UgYnV0dG9uIGJlbG93IHRoZSBtZW51ICovXG4gIHNob3dDbG9zZUJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKiBPYnNlcnZhYmxlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbmVsIGFuaW1hdGlvbi4gKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMvbm8tZXhwb3NlZC1zdWJqZWN0c1xuICBfdHJhbnNmb3JtTWVudTogQmVoYXZpb3JTdWJqZWN0PFRyYW5zZm9ybU1lbnU+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChcbiAgICB0cmFuc2Zvcm1NZW51RGVmYXVsdFxuICApO1xuXG4gIC8qKiBFbWl0cyB3aGVuZXZlciBhbiBhbmltYXRpb24gb24gdGhlIG1lbnUgY29tcGxldGVzLiAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby1leHBvc2VkLXN1YmplY3RzXG4gIF9hbmltYXRpb25Eb25lID0gbmV3IFN1YmplY3Q8QW5pbWF0aW9uRXZlbnQ+KCk7XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG1lbnUgaXMgYW5pbWF0aW5nLiAqL1xuICBfaXNBbmltYXRpbmc6IGJvb2xlYW47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIG1lbnUgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAqL1xuICBfaXNDbG9zaW5nOiBib29sZWFuO1xuXG4gIC8qKiBDbGllbnQgaW5wdXQgZGV2aWNlIGluZm9ybWF0aW9uICovXG4gIF9jbGllbnRJbnB1dDogQ2xpZW50SW5wdXRJbnRlcmZhY2U7XG5cbiAgLyoqIENsaWVudCBvdXRwdXQgZGV2aWNlIGluZm9ybWF0aW9uICovXG4gIF9jbGllbnRPdXRwdXQ6IENsaWVudE91dHB1dEludGVyZmFjZTtcblxuICBwcml2YXRlIF9tZW51RW1wdHkkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgX2lzTWVudUVtcHR5JDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX21lbnVFbXB0eSQsXG4gICAgdGhpcy5fYW5pbWF0aW9uRG9uZSxcbiAgXSkucGlwZShcbiAgICBmaWx0ZXIoKFttLCBhXSkgPT4gbSAmJiBhICE9IG51bGwpLFxuICAgIG1hcCgoKSA9PiB0cnVlKVxuICApO1xuXG4gIC8qKiBPbmx5IHRoZSBkaXJlY3QgZGVzY2VuZGFudCBtZW51IGl0ZW1zLiAqL1xuICBwcml2YXRlIF9kaXJlY3REZXNjZW5kYW50SXRlbXMgPSBuZXcgUXVlcnlMaXN0PEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudD4oKTtcblxuICBwcml2YXRlIF9rZXlNYW5hZ2VyOiBGb2N1c0tleU1hbmFnZXI8R3Jhbml0ZU1lbnVJdGVtQ29tcG9uZW50PjtcblxuICAvKiogU3Vic2NyaXB0aW9uIHRvIHRhYiBldmVudHMgb24gdGhlIG1lbnUgcGFuZWwgKi9cbiAgcHJpdmF0ZSBfdGFiU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gIHByaXZhdGUgX3hQb3NpdGlvbjogTWVudVBvc2l0aW9uWCA9ICdhZnRlcic7XG4gIHByaXZhdGUgX3lQb3NpdGlvbjogTWVudVBvc2l0aW9uWSA9ICdiZWxvdyc7XG5cbiAgLyoqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbmVsIGFuaW1hdGlvbi4gKi9cbiAgc2V0IF9wYW5lbEFuaW1hdGlvblN0YXRlKHN0YXRlOiBUcmFuc2Zvcm1NZW51U3RhdGVzKSB7XG4gICAgdGhpcy5fdHJhbnNmb3JtTWVudS5uZXh0KHtcbiAgICAgIHZhbHVlOiBzdGF0ZSxcbiAgICAgIHBhcmFtczogeyB4T2Zmc2V0OiB0aGlzLnhPZmZzZXQgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDdXJyZW50IGhvcml6b250YWwgb2Zmc2V0LiBVc2VkIHdpdGggYHBhbmAgYW5kIGBwYW4taGlkZGVuYFxuICAgKiBhbmltYXRpb24gc3RhdGVzLlxuICAgKi9cbiAgcHJpdmF0ZSB4T2Zmc2V0OiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5fbWVudUVtcHR5JC5uZXh0KHRoaXMuX2FsbEl0ZW1zLmxlbmd0aCA8IDEgPyB0cnVlIDogZmFsc2UpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3VwZGF0ZURpcmVjdERlc2NlbmRhbnRzKCk7XG4gICAgdGhpcy5fa2V5TWFuYWdlciA9IG5ldyBGb2N1c0tleU1hbmFnZXIodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKVxuICAgICAgLndpdGhXcmFwKClcbiAgICAgIC5za2lwUHJlZGljYXRlKChtZW51SXRlbSkgPT4ge1xuICAgICAgICBjb25zdCBob3N0RWxlbWVudDogSFRNTEVsZW1lbnQgPSBtZW51SXRlbS5fZ2V0SG9zdEVsZW1lbnQoKTtcbiAgICAgICAgcmV0dXJuIGhvc3RFbGVtZW50IGluc3RhbmNlb2YgSFRNTEJ1dHRvbkVsZW1lbnRcbiAgICAgICAgICA/IGhvc3RFbGVtZW50LmRpc2FibGVkXG4gICAgICAgICAgOiBob3N0RWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2dyYW5pdGVUaXRsZScpO1xuICAgICAgfSk7XG4gICAgdGhpcy5fdGFiU3Vic2NyaXB0aW9uID0gdGhpcy5fa2V5TWFuYWdlci50YWJPdXQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xvc2VkLmVtaXQoJ3RhYicpO1xuICAgIH0pO1xuXG4gICAgLy8gSWYgYSB1c2VyIG1hbnVhbGx5IChwcm9ncmFtYXRpY2FsbHkpIGZvY3VzZXMgYSBtZW51IGl0ZW0sIHdlIG5lZWQgdG8gcmVmbGVjdCB0aGF0IGZvY3VzXG4gICAgLy8gY2hhbmdlIGJhY2sgdG8gdGhlIGtleSBtYW5hZ2VyLiBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byB1bnN1YnNjcmliZSBoZXJlIGJlY2F1c2UgX2ZvY3VzZWRcbiAgICAvLyBpcyBpbnRlcm5hbCBhbmQgd2Uga25vdyB0aGF0IGl0IGdldHMgY29tcGxldGVkIG9uIGRlc3Ryb3kuXG4gICAgdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGgodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSxcbiAgICAgICAgc3dpdGNoTWFwKChpdGVtcykgPT5cbiAgICAgICAgICBtZXJnZSguLi5pdGVtcy5tYXAoKGl0ZW06IEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudCkgPT4gaXRlbS5fZm9jdXNlZCkpXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGZvY3VzZWRJdGVtOiBHcmFuaXRlTWVudUl0ZW1Db21wb25lbnQpID0+XG4gICAgICAgIHRoaXMuX2tleU1hbmFnZXIudXBkYXRlQWN0aXZlSXRlbShmb2N1c2VkSXRlbSlcbiAgICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMuZGVzdHJveSgpO1xuICAgIHRoaXMuX3RhYlN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2xvc2VkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RyZWFtIHRoYXQgY29tYmluZXMgdGhlIGBfaG92ZXJlZGAgb2JzZXJ2YWJsZXMgb2YgYWxsIHRoZSBtZW51J3MgaXRlbXNcbiAgICogaW50byBhIHNpbmdsZSBvYnNlcnZhYmxlLiBFbWl0cyB3aGVuZXZlciB0aGUgaG92ZXJlZCBtZW51IGl0ZW0gY2hhbmdlcy5cbiAgICovXG4gIF9ob3ZlcmVkKCk6IE9ic2VydmFibGU8R3Jhbml0ZU1lbnVJdGVtQ29tcG9uZW50PiB7XG4gICAgLy8gQ29lcmNlIHRoZSBgY2hhbmdlc2AgcHJvcGVydHkgYmVjYXVzZSBBbmd1bGFyIHR5cGVzIGl0IGFzIGBPYnNlcnZhYmxlPGFueT5gXG4gICAgY29uc3QgaXRlbUNoYW5nZXMgPSB0aGlzLl9kaXJlY3REZXNjZW5kYW50SXRlbXMuY2hhbmdlcyBhcyBPYnNlcnZhYmxlPFxuICAgICAgUXVlcnlMaXN0PEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudD5cbiAgICA+O1xuXG4gICAgcmV0dXJuIGl0ZW1DaGFuZ2VzLnBpcGUoXG4gICAgICBzdGFydFdpdGgodGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zKSxcbiAgICAgIC8vIEhvdmVyaW5nIGlzIG5vdCBhcHBsaWNhYmxlIHdoZW4gcHJvZHVjaW5nIHRvdWNoIG91dHB1dFxuICAgICAgZmlsdGVyKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NsaWVudE91dHB1dD8uZGV2aWNlICE9PSAndG91Y2gnO1xuICAgICAgfSksXG4gICAgICBzd2l0Y2hNYXAoKGl0ZW1zKSA9PlxuICAgICAgICBtZXJnZSguLi5pdGVtcy5tYXAoKGl0ZW06IEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudCkgPT4gaXRlbS5faG92ZXJlZCkpXG4gICAgICApXG4gICAgKSBhcyBPYnNlcnZhYmxlPEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudD47XG4gIH1cblxuICAvKiogSGFuZGxlIGEga2V5Ym9hcmQgZXZlbnQgZnJvbSB0aGUgbWVudSwgZGVsZWdhdGluZyB0byB0aGUgYXBwcm9wcmlhdGUgYWN0aW9uLiAqL1xuICBfaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleTtcbiAgICBjb25zdCBtYW5hZ2VyID0gdGhpcy5fa2V5TWFuYWdlcjtcblxuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICBpZiAoIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCgna2V5ZG93bicpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgaWYgKHRoaXMucGFyZW50TWVudSAmJiB0aGlzLmRpcmVjdGlvbiA9PT0gJ2x0cicpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCdrZXlkb3duJyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgaWYgKHRoaXMucGFyZW50TWVudSAmJiB0aGlzLmRpcmVjdGlvbiA9PT0gJ3J0bCcpIHtcbiAgICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KCdrZXlkb3duJyk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdIb21lJzpcbiAgICAgIGNhc2UgJ0VuZCc6XG4gICAgICAgIGlmICghaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICAgICAga2V5ID09PSAnSG9tZSdcbiAgICAgICAgICAgID8gbWFuYWdlci5zZXRGaXJzdEl0ZW1BY3RpdmUoKVxuICAgICAgICAgICAgOiBtYW5hZ2VyLnNldExhc3RJdGVtQWN0aXZlKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChrZXkgPT09ICdBcnJvd1VwJyB8fCBrZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgICAgbWFuYWdlci5zZXRGb2N1c09yaWdpbigna2V5Ym9hcmQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIG1hbmFnZXIub25LZXlkb3duKGV2ZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRm9jdXMgdGhlIGZpcnN0IGl0ZW0gaW4gdGhlIG1lbnUuXG4gICAqIEBwYXJhbSBvcmlnaW4gQWN0aW9uIGZyb20gd2hpY2ggdGhlIGZvY3VzIG9yaWdpbmF0ZWQuIFVzZWQgdG8gc2V0IHRoZSBjb3JyZWN0IHN0eWxpbmcuXG4gICAqL1xuICBmb2N1c0ZpcnN0SXRlbShvcmlnaW46IEZvY3VzT3JpZ2luID0gJ3Byb2dyYW0nKTogdm9pZCB7XG4gICAgdGhpcy5fa2V5TWFuYWdlci5zZXRGb2N1c09yaWdpbihvcmlnaW4pLnNldEZpcnN0SXRlbUFjdGl2ZSgpO1xuICB9XG5cbiAgLyoqIFVwZGF0ZXMgdGhlIGBzaG93VGl0bGVgIHByb3BlcnR5IGZvciB0b3VjaCBkZXZpY2UgVUkgKi9cbiAgX3VwZGF0ZVNob3dUaXRsZSgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dUaXRsZSA9ICEhdGhpcy50aXRsZSB8fCB0aGlzLnNob3dCYWNrQnV0dG9uO1xuICB9XG5cbiAgLyoqIFN0YXJ0cyB0aGUgZW50ZXIgYW5pbWF0aW9uICovXG4gIF9zdGFydEFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ2VudGVyJztcbiAgfVxuXG4gIC8qKiBSZXNldHMgdGhlIHBhbmVsIGFuaW1hdGlvbiB0byBpdHMgaW5pdGlhbCBzdGF0ZS4gKi9cbiAgX3Jlc2V0QW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGUgPSAndm9pZCc7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSAnYmVsb3cnIGFuaW1hdGlvbiwgbW92aW5nIGEgbWVudSBkb3duLCBvdXQgb2YgdmlldyBiZWxvdyB0aGVcbiAgICogdmlld3BvcnQuIFVzZWQgdG8gY2xvc2UgdGhlIHdob2xlIG1lbnUsIGZvciBleGFtcGxlIHdoZW4gY2xpY2tpbmdcbiAgICogdGhlIGJhY2tkcm9wLlxuICAgKi9cbiAgX3N0YXJ0VG91Y2hDbG9zZURvd25BbmltYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdiZWxvdyc7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSAnYmVsb3ctd2l0aC1kZWxheScgYW5pbWF0aW9uLCBtb3ZpbmcgYSBtZW51IGRvd24sIG91dCBvZiB2aWV3IGJlbG93IHRoZVxuICAgKiB2aWV3cG9ydC4gVXNlZCB0byBjbG9zZSB0aGUgd2hvbGUgbWVudSBhcyBhIHJlc3BvbnNlIHRvIHRoZSB1c2VyIHRhcHBpbmdcbiAgICogYSBtZW51IGl0ZW0uIFRoZXJlIGlzIGEgc2hvcnQgZGVsYXkgYmVmb3JlIHRoZSBhbmltYXRpb24gc3RhcnRzLCB0byB0aGF0XG4gICAqIHRoZSB1c2VyIGdldHMgYSB2aXN1YWwgZmVlZGJhY2sgb24gd2hhdCBpdGVtIHdhcyBzZWxlY3RlZC5cbiAgICovXG4gIF9zdGFydFRvdWNoQ2xvc2VEb3duQW5pbWF0aW9uV2l0aERlbGF5KCk6IHZvaWQge1xuICAgIHRoaXMuX3BhbmVsQW5pbWF0aW9uU3RhdGUgPSAnYmVsb3ctd2l0aC1kZWxheSc7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSAndm9pZCcgYW5pbWF0aW9uLCBtb3ZpbmcgYSAoc3ViKSBtZW51IG91dCBvZiB2aWV3IHRvIHRoZSBzaWRlXG4gICAqIG9mIHRoZSB2aWV3cG9ydC4gVXNlZCB3aGVuIGdvaW5nIFwiYmFja1wiIGZyb20gYSBzdWIgbWVudS5cbiAgICovXG4gIF9zdGFydFRvdWNoQ2xvc2VTaWRlQW5pbWF0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3Jlc2V0QW5pbWF0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIHRoZSBlbnRlci1mcm9tLWJlbG93IGFuaW1hdGlvbiwgbW92aW5nIGEgKHJvb3QpIG1lbnUgaW50byB2aWV3LFxuICAgKiBBbmltYXRlcyB1cHdhcmRzIGZyb20gYSBzdGFydGluZyBwb3NpdGlvbiBiZWxvdyB0aGUgdmlld3BvcnQuXG4gICAqL1xuICBfc3RhcnRUb3VjaFJvb3RFbnRlckFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ2VudGVyLWZyb20tYmVsb3cnO1xuICAgIHRoaXMueE9mZnNldCA9IDA7XG4gIH1cblxuICAvKiogU3RhcnRzIHRoZSBlbnRlciBhbmltYXRpb24sIG1vdmluZyBhIChzdWIpIG1lbnUgaW50byB2aWV3LiAqL1xuICBfc3RhcnRUb3VjaFN1Ym1lbnVFbnRlckFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ2VudGVyJztcbiAgICB0aGlzLnhPZmZzZXQgPSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgcGFuIGFuaW1hdGlvbiwgdG8gcG9zaXRpb24gYSBzdWJtZW51IGluIGEgcmVzcG9uc2VcbiAgICogdG8gdXNlciBkcmFnZ2luZyBzaWRld2F5cyAocGFubmluZykuXG4gICAqL1xuICBfc3RhcnRUb3VjaFBhbkFuaW1hdGlvbih4T2Zmc2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ3Bhbic7XG4gICAgdGhpcy54T2Zmc2V0ID0geE9mZnNldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGFydHMgdGhlIHBhbi1oaWRkZW4gYW5pbWF0aW9uLCB0byBwb3NpdGlvbiBhIHBhcmVudCBtZW51IG5leHQgdG8gYW5cbiAgICogYWN0aXZlIHN1Ym1lbnUgdGhhdCB0aGUgdXNlciBpcyBkcmFnZ2luZyBzaWRld2F5cyAocGFubmluZykuXG4gICAqL1xuICBfc3RhcnRUb3VjaEhpZGVQYW5BbmltYXRpb24oeE9mZnNldDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5fcGFuZWxBbmltYXRpb25TdGF0ZSA9ICdwYW4taGlkZGVuJztcbiAgICB0aGlzLnhPZmZzZXQgPSB4T2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyB0aGUgaGlkZSBhbmltYXRpb24sIHRvIG1ha2UgYSBwYXJlbnQgbWVudSBzbGlkZSBvdXQgdG8gbGVhdmVcbiAgICogc3BhY2UgZm9yIGEgc3VibWVudS5cbiAgICovXG4gIF9zdGFydFRvdWNoSGlkZUFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9wYW5lbEFuaW1hdGlvblN0YXRlID0gJ2hpZGUnO1xuICAgIHRoaXMueE9mZnNldCA9IDA7XG4gIH1cblxuICAvKiogQ2FsbGJhY2sgdGhhdCBpcyBpbnZva2VkIHdoZW4gdGhlIHBhbmVsIGFuaW1hdGlvbiBjb21wbGV0ZXMuICovXG4gIF9vbkFuaW1hdGlvbkRvbmUoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5fYW5pbWF0aW9uRG9uZS5uZXh0KGV2ZW50KTtcbiAgICB0aGlzLl9pc0FuaW1hdGluZyA9IGZhbHNlO1xuICB9XG5cbiAgX29uQW5pbWF0aW9uU3RhcnQoZXZlbnQ6IEFuaW1hdGlvbkV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5faXNBbmltYXRpbmcgPSB0cnVlO1xuXG4gICAgLy8gU2Nyb2xsIHRoZSBjb250ZW50IGVsZW1lbnQgdG8gdGhlIHRvcCBhcyBzb29uIGFzIHRoZSBhbmltYXRpb24gc3RhcnRzLiBUaGlzIGlzIG5lY2Vzc2FyeSxcbiAgICAvLyBiZWNhdXNlIHdlIG1vdmUgZm9jdXMgdG8gdGhlIGZpcnN0IGl0ZW0gd2hpbGUgaXQncyBzdGlsbCBiZWluZyBhbmltYXRlZCwgd2hpY2ggY2FuIHRocm93XG4gICAgLy8gdGhlIGJyb3dzZXIgb2ZmIHdoZW4gaXQgZGV0ZXJtaW5lcyB0aGUgc2Nyb2xsIHBvc2l0aW9uLiBBbHRlcm5hdGl2ZWx5IHdlIGNhbiBtb3ZlIGZvY3VzXG4gICAgLy8gd2hlbiB0aGUgYW5pbWF0aW9uIGlzIGRvbmUsIGhvd2V2ZXIgbW92aW5nIGZvY3VzIGFzeW5jaHJvbm91c2x5IHdpbGwgaW50ZXJydXB0IHNjcmVlblxuICAgIC8vIHJlYWRlcnMgd2hpY2ggYXJlIGluIHRoZSBwcm9jZXNzIG9mIHJlYWRpbmcgb3V0IHRoZSBtZW51IGFscmVhZHkuIFdlIHRha2UgdGhlIGBlbGVtZW50YFxuICAgIC8vIGZyb20gdGhlIGBldmVudGAgc2luY2Ugd2UgY2FuJ3QgdXNlIGEgYFZpZXdDaGlsZGAgdG8gYWNjZXNzIHRoZSBwYW5lLlxuICAgIGlmIChcbiAgICAgIChldmVudC50b1N0YXRlID09PSAnZW50ZXInIHx8IGV2ZW50LnRvU3RhdGUgPT09ICdlbnRlci1mcm9tLWJlbG93JykgJiZcbiAgICAgIHRoaXMuX2tleU1hbmFnZXIuYWN0aXZlSXRlbUluZGV4ID09PSAwXG4gICAgKSB7XG4gICAgICBldmVudC5lbGVtZW50LnNjcm9sbFRvcCA9IDA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjbGljayBvbiB0aGUgbWVudSBieSBlbWl0dGluZyBvbiB0aGUgYGNsb3NlZGAgZW1pdHRlclxuICAgKiB3aXRoIGEgYGNsaWNrYCByZWFzb25cbiAgICovXG4gIF9oYW5kbGVDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCdjbGljaycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBjbGljayBvbiB0aGUgY2xvc2UgYnV0dG9uIGJ5IGVtaXR0aW5nIG9uIHRoZSBgY2xvc2VkYCBlbWl0dGVyXG4gICAqIHdpdGhvdXQgYW55IHBhcnRpY3VsYXIgcmVhc29uXG4gICAqL1xuICBfaGFuZGxlQ2xvc2VDbGljaygpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlZC5lbWl0KCk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGNsaWNrIG9uIHRoZSBiYWNrIGljb24gYnkgZW1pdHRpbmcgb24gdGhlIGBjbGlja2VkYCBlbWl0dGVyXG4gICAqL1xuICBfaGFuZGxlQmFja0NsaWNrKGU6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaG93QmFja0J1dHRvbikge1xuICAgICAgLy8gQ2xvc2Ugc3VibWVudSBrZXlkb3duLXN0eWxlOiBjbG9zZSBvbmx5IHRoaXMgbWVudSBhbmQgbGVhdmUgcGFyZW50cyBvcGVuXG4gICAgICB0aGlzLmNsb3NlZC5lbWl0KCdrZXlkb3duJyk7XG4gICAgfVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGNsaWVudCBkZXZpY2UgaW5mb3JtYXRpb24gZm9yIHRoZSBtZW51IGFuZCBpdHMgbWVudSBpdGVtcy5cbiAgICovXG4gIF9zZXREZXZpY2UoXG4gICAgY2xpZW50SW5wdXQ6IENsaWVudElucHV0SW50ZXJmYWNlLFxuICAgIGNsaWVudE91dHB1dDogQ2xpZW50T3V0cHV0SW50ZXJmYWNlXG4gICk6IHZvaWQge1xuICAgIHRoaXMuX2NsaWVudElucHV0ID0gY2xpZW50SW5wdXQ7XG4gICAgdGhpcy5fY2xpZW50T3V0cHV0ID0gY2xpZW50T3V0cHV0O1xuXG4gICAgdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0uX2NsaWVudElucHV0ID0gY2xpZW50SW5wdXQ7XG4gICAgICBpdGVtLl9jbGllbnRPdXRwdXQgPSBjbGllbnRPdXRwdXQ7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXNldHMgdGhlIGFjdGl2ZSBpdGVtIGluIHRoZSBtZW51LiBUaGlzIGlzIHVzZWQgd2hlbiB0aGUgbWVudSBpcyBvcGVuZWQsIGFsbG93aW5nXG4gICAqIHRoZSB1c2VyIHRvIHN0YXJ0IGZyb20gdGhlIGZpcnN0IG9wdGlvbiB3aGVuIHByZXNzaW5nIHRoZSBkb3duIGFycm93LlxuICAgKi9cbiAgcmVzZXRBY3RpdmVJdGVtKCk6IHZvaWQge1xuICAgIHRoaXMuX2tleU1hbmFnZXIuc2V0QWN0aXZlSXRlbSgtMSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB1cCBhIHN0cmVhbSB0aGF0IHdpbGwga2VlcCB0cmFjayBvZiBhbnkgbmV3bHktYWRkZWQgbWVudSBpdGVtcyBhbmQgd2lsbCB1cGRhdGUgdGhlIGxpc3RcbiAgICogb2YgZGlyZWN0IGRlc2NlbmRhbnRzLiBXZSBjb2xsZWN0IHRoZSBkZXNjZW5kYW50cyB0aGlzIHdheSwgYmVjYXVzZSBgX2FsbEl0ZW1zYCBjYW4gaW5jbHVkZVxuICAgKiBpdGVtcyB0aGF0IGFyZSBwYXJ0IG9mIGNoaWxkIG1lbnVzLCBhbmQgdXNpbmcgYSBjdXN0b20gd2F5IG9mIHJlZ2lzdGVyaW5nIGl0ZW1zIGlzIHVucmVsaWFibGVcbiAgICogd2hlbiBpdCBjb21lcyB0byBtYWludGFpbmluZyB0aGUgaXRlbSBvcmRlci5cbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZURpcmVjdERlc2NlbmRhbnRzKCkge1xuICAgIHRoaXMuX2FsbEl0ZW1zLmNoYW5nZXNcbiAgICAgIC5waXBlKHN0YXJ0V2l0aCh0aGlzLl9hbGxJdGVtcykpXG4gICAgICAuc3Vic2NyaWJlKChpdGVtczogUXVlcnlMaXN0PEdyYW5pdGVNZW51SXRlbUNvbXBvbmVudD4pID0+IHtcbiAgICAgICAgdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLnJlc2V0KFxuICAgICAgICAgIGl0ZW1zLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5fcGFyZW50TWVudSA9PT0gdGhpcylcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5fZGlyZWN0RGVzY2VuZGFudEl0ZW1zLm5vdGlmeU9uQ2hhbmdlcygpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
|