@worktile/theia 15.0.2 → 15.0.4
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/components/color-select/color-select.component.scss +20 -21
- package/components/column-resize/column-resize.scss +10 -10
- package/components/contextmenu/contextmenu.component.scss +1 -1
- package/components/conversion-hint/conversion-hint.component.scss +1 -1
- package/components/index.scss +1 -1
- package/components/inline-toolbar/inline-toolbar.component.scss +3 -3
- package/components/plugin-menu/plugin-menu.component.scss +5 -3
- package/components/table-select/table-select.component.scss +3 -3
- package/components/toolbar/toolbar.component.scss +5 -5
- package/components/toolbar-dropdown/toolbar-dropdown.component.d.ts +1 -3
- package/components/toolbar-dropdown/toolbar-dropdown.component.scss +5 -5
- package/core/toolbar-item/base-toolbar-item.d.ts +2 -2
- package/esm2020/components/listbox/listbox.mjs +1 -1
- package/esm2020/components/toolbar-dropdown/toolbar-dropdown.component.mjs +3 -5
- package/esm2020/core/toolbar-item/base-toolbar-item.mjs +4 -2
- package/esm2020/editor.component.mjs +2 -2
- package/esm2020/plugins/code/code.component.mjs +1 -1
- package/esm2020/plugins/common/auto-insert-data..mjs +10 -11
- package/esm2020/plugins/table/components/table.component.mjs +72 -17
- package/esm2020/plugins/table/components/td/td.component.mjs +1 -1
- package/esm2020/plugins/table/table.types.mjs +5 -1
- package/esm2020/services/context.service.mjs +1 -1
- package/esm2020/services/table-contextmenu.service.mjs +5 -5
- package/esm2020/utils/dom.mjs +2 -2
- package/fesm2015/worktile-theia.mjs +98 -38
- package/fesm2015/worktile-theia.mjs.map +1 -1
- package/fesm2020/worktile-theia.mjs +94 -36
- package/fesm2020/worktile-theia.mjs.map +1 -1
- package/package.json +1 -1
- package/plugins/code/code.component.scss +29 -27
- package/plugins/image/image.component.scss +32 -32
- package/plugins/inline-code/inline-code.component.scss +13 -13
- package/plugins/link/link.component.scss +1 -1
- package/plugins/quick-insert/components/quick-insert.component.scss +2 -2
- package/plugins/table/components/mixins.scss +16 -17
- package/plugins/table/components/table.component.d.ts +10 -0
- package/plugins/table/components/table.component.scss +128 -100
- package/plugins/table/table.types.d.ts +4 -0
- package/plugins/todo-item/todo-item.component.scss +3 -3
- package/styles/editor.scss +15 -15
- package/styles/mixins.scss +1 -1
- package/styles/typo.scss +34 -34
- package/styles/variables.scss +5 -2
|
@@ -1,23 +1,22 @@
|
|
|
1
|
-
|
|
2
1
|
@use 'ngx-tethys/styles/variables.scss';
|
|
3
2
|
|
|
4
3
|
.color-container {
|
|
5
4
|
padding: 15px;
|
|
5
|
+
line-height: 0;
|
|
6
6
|
background: variables.$white;
|
|
7
7
|
border-radius: 4px;
|
|
8
|
-
line-height: 0;
|
|
9
8
|
.colors {
|
|
10
|
-
display: block;
|
|
11
9
|
position: relative;
|
|
10
|
+
display: block;
|
|
12
11
|
|
|
13
12
|
thy-icon {
|
|
14
13
|
position: absolute;
|
|
15
|
-
display: none;
|
|
16
|
-
font-size: 12px;
|
|
17
14
|
top: 50%;
|
|
18
15
|
left: 50%;
|
|
19
|
-
|
|
16
|
+
display: none;
|
|
20
17
|
color: variables.$white;
|
|
18
|
+
font-size: 12px;
|
|
19
|
+
transform: translate(-50%, -50%);
|
|
21
20
|
}
|
|
22
21
|
|
|
23
22
|
.color-item {
|
|
@@ -38,33 +37,33 @@
|
|
|
38
37
|
}
|
|
39
38
|
|
|
40
39
|
.color-item {
|
|
40
|
+
position: relative;
|
|
41
41
|
display: inline-block;
|
|
42
|
-
padding: 2px;
|
|
43
42
|
margin-right: 5px;
|
|
44
43
|
margin-bottom: 5px;
|
|
45
|
-
|
|
46
|
-
position: relative;
|
|
44
|
+
padding: 2px;
|
|
47
45
|
border: 1px solid transparent;
|
|
46
|
+
border-radius: 2px;
|
|
48
47
|
cursor: pointer;
|
|
49
48
|
|
|
50
49
|
> span {
|
|
50
|
+
position: relative;
|
|
51
|
+
display: block;
|
|
51
52
|
width: 20px;
|
|
52
53
|
height: 20px;
|
|
53
|
-
display: block;
|
|
54
|
-
position: relative;
|
|
55
54
|
}
|
|
56
55
|
|
|
57
56
|
&.special-color::after {
|
|
58
|
-
content: '';
|
|
59
|
-
display: block;
|
|
60
57
|
position: absolute;
|
|
61
58
|
top: 11px;
|
|
62
59
|
left: 0;
|
|
60
|
+
display: block;
|
|
63
61
|
width: 24px;
|
|
64
62
|
height: 0;
|
|
65
63
|
border-bottom: 2px solid #ff0100;
|
|
66
64
|
-webkit-transform: rotate(45deg);
|
|
67
65
|
transform: rotate(45deg);
|
|
66
|
+
content: '';
|
|
68
67
|
}
|
|
69
68
|
|
|
70
69
|
&:hover {
|
|
@@ -74,31 +73,31 @@
|
|
|
74
73
|
}
|
|
75
74
|
|
|
76
75
|
.select-color {
|
|
77
|
-
margin-top: 15px;
|
|
78
76
|
display: flex;
|
|
79
|
-
justify-content: center;
|
|
80
77
|
align-items: center;
|
|
78
|
+
justify-content: center;
|
|
79
|
+
margin-top: 15px;
|
|
81
80
|
|
|
82
81
|
.color {
|
|
82
|
+
position: relative;
|
|
83
83
|
display: inline-block;
|
|
84
84
|
width: 20px;
|
|
85
85
|
height: 20px;
|
|
86
|
-
border-radius: 2px;
|
|
87
|
-
position: relative;
|
|
88
|
-
border: 1px solid variables.$gray-400;
|
|
89
86
|
margin-right: 5px;
|
|
87
|
+
border: 1px solid variables.$gray-400;
|
|
88
|
+
border-radius: 2px;
|
|
90
89
|
}
|
|
91
90
|
|
|
92
91
|
.value {
|
|
93
92
|
display: inline-block;
|
|
94
|
-
font-size: 12px;
|
|
95
|
-
text-indent: 10px;
|
|
96
93
|
width: 63px;
|
|
97
94
|
height: 20px;
|
|
98
95
|
margin-left: 5px;
|
|
96
|
+
padding: 0;
|
|
97
|
+
font-size: 12px;
|
|
99
98
|
letter-spacing: 0;
|
|
100
99
|
text-align: justify;
|
|
101
|
-
|
|
100
|
+
text-indent: 10px;
|
|
102
101
|
}
|
|
103
102
|
}
|
|
104
103
|
}
|
|
@@ -9,31 +9,31 @@ $resizable-hover-divider: variables.$primary;
|
|
|
9
9
|
$resizable-active-divider: variables.$primary;
|
|
10
10
|
|
|
11
11
|
@mixin no-select {
|
|
12
|
-
-webkit-touch-callout: none;
|
|
13
12
|
-webkit-user-select: none;
|
|
14
13
|
-khtml-user-select: none;
|
|
15
14
|
-moz-user-select: none;
|
|
16
15
|
-ms-user-select: none;
|
|
17
16
|
user-select: none;
|
|
17
|
+
-webkit-touch-callout: none;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
.the-table-resize-overlay-thumb {
|
|
21
|
+
position: relative;
|
|
22
|
+
width: 100%;
|
|
23
|
+
height: 100%;
|
|
21
24
|
background: transparent;
|
|
22
25
|
cursor: col-resize;
|
|
23
|
-
height: 100%;
|
|
24
26
|
transition: background $swift-ease-in-duration $swift-ease-in-timing-function;
|
|
25
27
|
@include no-select();
|
|
26
|
-
width: 100%;
|
|
27
|
-
position: relative;
|
|
28
28
|
|
|
29
29
|
&:hover {
|
|
30
30
|
&::after {
|
|
31
|
-
content: ' ';
|
|
32
|
-
right: 7px;
|
|
33
31
|
position: absolute;
|
|
32
|
+
right: 7px;
|
|
34
33
|
width: 2px;
|
|
35
34
|
height: 100%;
|
|
36
35
|
background-color: variables.$primary;
|
|
36
|
+
content: ' ';
|
|
37
37
|
pointer-events: none;
|
|
38
38
|
}
|
|
39
39
|
}
|
|
@@ -44,17 +44,17 @@ $resizable-active-divider: variables.$primary;
|
|
|
44
44
|
max-width: inherit;
|
|
45
45
|
}
|
|
46
46
|
.the-table-resize-overlay-thumb {
|
|
47
|
-
cursor: row-resize;
|
|
48
47
|
left: -11px;
|
|
48
|
+
cursor: row-resize;
|
|
49
49
|
&:hover {
|
|
50
50
|
&::after {
|
|
51
|
-
|
|
51
|
+
position: absolute;
|
|
52
52
|
top: 7px;
|
|
53
53
|
left: 0;
|
|
54
|
-
position: absolute;
|
|
55
54
|
width: 100%;
|
|
56
55
|
height: 2px;
|
|
57
56
|
background-color: variables.$primary;
|
|
57
|
+
content: ' ';
|
|
58
58
|
pointer-events: none;
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -62,7 +62,7 @@ $resizable-active-divider: variables.$primary;
|
|
|
62
62
|
}
|
|
63
63
|
.the-numbered-resize-handle-panel {
|
|
64
64
|
.the-table-resize-overlay-thumb {
|
|
65
|
-
cursor: row-resize;
|
|
66
65
|
left: -55px;
|
|
66
|
+
cursor: row-resize;
|
|
67
67
|
}
|
|
68
68
|
}
|
package/components/index.scss
CHANGED
|
@@ -7,4 +7,4 @@
|
|
|
7
7
|
@forward './conversion-hint/conversion-hint.component.scss';
|
|
8
8
|
@forward './inline-toolbar/inline-toolbar.component.scss';
|
|
9
9
|
@forward './plugin-menu/plugin-menu.component.scss';
|
|
10
|
-
@forward './contextmenu/contextmenu.component.scss';
|
|
10
|
+
@forward './contextmenu/contextmenu.component.scss';
|
|
@@ -5,15 +5,15 @@
|
|
|
5
5
|
position: fixed;
|
|
6
6
|
top: -10000px;
|
|
7
7
|
left: -10000px;
|
|
8
|
+
z-index: 9;
|
|
8
9
|
width: auto;
|
|
9
10
|
margin-top: -6px;
|
|
10
|
-
border-radius: 4px;
|
|
11
11
|
background: variables.$white;
|
|
12
|
+
border: 1px solid variables.$gray-200;
|
|
13
|
+
border-radius: 4px;
|
|
12
14
|
box-shadow: variables.$box-shadow;
|
|
13
15
|
opacity: 0;
|
|
14
|
-
z-index: 9;
|
|
15
16
|
transition: opacity 0.75s;
|
|
16
|
-
border: 1px solid variables.$gray-200;
|
|
17
17
|
|
|
18
18
|
&.hide {
|
|
19
19
|
display: none;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
@use 'ngx-tethys/styles/variables.scss';
|
|
2
2
|
|
|
3
3
|
.the-plugin-menu-container {
|
|
4
|
-
width: 260px;
|
|
5
4
|
display: block;
|
|
5
|
+
width: 260px;
|
|
6
6
|
&.expand-menu {
|
|
7
7
|
overflow: initial;
|
|
8
8
|
}
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
.dropdown-menu-group .dropdown-menu-group-title {
|
|
30
|
-
line-height: 32px;
|
|
31
30
|
margin: 4px 0;
|
|
32
31
|
padding: 0 20px;
|
|
33
32
|
color: variables.$gray-600;
|
|
33
|
+
line-height: 32px;
|
|
34
34
|
}
|
|
35
35
|
.dropdown-menu-item {
|
|
36
36
|
height: 44px;
|
|
@@ -48,7 +48,9 @@
|
|
|
48
48
|
.dropdown-submenu {
|
|
49
49
|
padding: 12px 0 8px 0;
|
|
50
50
|
}
|
|
51
|
-
&.focus
|
|
51
|
+
&.focus,
|
|
52
|
+
&.thy-popover-origin-active,
|
|
53
|
+
&.thy-dropdown-origin-active {
|
|
52
54
|
background-color: variables.$dropdown-menu-item-hover-bg;
|
|
53
55
|
}
|
|
54
56
|
}
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
.selector-cell {
|
|
16
|
+
display: inline-block;
|
|
16
17
|
width: 16px;
|
|
17
18
|
height: 16px;
|
|
18
19
|
margin-right: 6px;
|
|
19
20
|
margin-bottom: 6px;
|
|
20
|
-
display: inline-block;
|
|
21
21
|
font-size: 0;
|
|
22
22
|
vertical-align: middle;
|
|
23
23
|
background: variables.$gray-80;
|
|
@@ -25,13 +25,13 @@
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
.active-cell {
|
|
28
|
+
background: rgba(variables.$primary, 0.15);
|
|
28
29
|
border-color: rgba(variables.$primary, 0.15);
|
|
29
|
-
background: rgba(variables.$primary, 0.15)
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
.selector-text {
|
|
33
33
|
padding-top: 3px;
|
|
34
|
-
font-size: 14px;
|
|
35
34
|
color: variables.$gray-700;
|
|
35
|
+
font-size: 14px;
|
|
36
36
|
}
|
|
37
37
|
}
|
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
.the-toolbar-container {
|
|
6
6
|
position: relative;
|
|
7
7
|
z-index: 3;
|
|
8
|
+
box-sizing: border-box;
|
|
8
9
|
padding: theVariables.$nav-item-margin;
|
|
10
|
+
background-color: variables.$gray-80;
|
|
9
11
|
border: none;
|
|
10
12
|
border-bottom: 1px solid variables.$gray-100;
|
|
11
|
-
background-color: variables.$gray-80;
|
|
12
|
-
box-sizing: border-box;
|
|
13
13
|
|
|
14
14
|
.head-type-dropdown {
|
|
15
15
|
width: 70px;
|
|
@@ -19,11 +19,11 @@
|
|
|
19
19
|
padding-bottom: 0;
|
|
20
20
|
|
|
21
21
|
.name {
|
|
22
|
-
font-weight: bold;
|
|
23
|
-
line-height: 100%;
|
|
24
|
-
color: variables.$gray-800;
|
|
25
22
|
display: block;
|
|
26
23
|
margin: auto 0;
|
|
24
|
+
color: variables.$gray-800;
|
|
25
|
+
font-weight: bold;
|
|
26
|
+
line-height: 100%;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -12,8 +12,6 @@ export declare class TheToolbarDropdownComponent extends TheBaseToolbarDropdown
|
|
|
12
12
|
private viewContainerRef;
|
|
13
13
|
private overlay;
|
|
14
14
|
className: string;
|
|
15
|
-
itemMousedownHandle: (item: ToolbarItem) => void;
|
|
16
|
-
editor: Editor;
|
|
17
15
|
activeKeys: ToolbarKey[];
|
|
18
16
|
dropdownMode: typeof DropdownMode;
|
|
19
17
|
dropdownPopoverRef: ThyPopoverRef<any>;
|
|
@@ -33,5 +31,5 @@ export declare class TheToolbarDropdownComponent extends TheBaseToolbarDropdown
|
|
|
33
31
|
closeDropdownPopover(): void;
|
|
34
32
|
createPositionStrategy(): import("@angular/cdk/overlay").FlexibleConnectedPositionStrategy;
|
|
35
33
|
static ɵfac: i0.ɵɵFactoryDeclaration<TheToolbarDropdownComponent, never>;
|
|
36
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<TheToolbarDropdownComponent, "the-toolbar-dropdown", never, {
|
|
34
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<TheToolbarDropdownComponent, "the-toolbar-dropdown", never, {}, {}, never, never, false, never>;
|
|
37
35
|
}
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
.text-caret-down-icon {
|
|
23
23
|
position: absolute;
|
|
24
24
|
top: 16px;
|
|
25
|
-
transform: translateY(-65%);
|
|
26
25
|
right: 0.438rem;
|
|
26
|
+
transform: translateY(-65%);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
|
|
@@ -33,13 +33,13 @@
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
.thy-dropdown-menu {
|
|
36
|
+
z-index: 100;
|
|
36
37
|
display: flex;
|
|
37
38
|
flex-direction: column;
|
|
38
39
|
width: 200px;
|
|
39
40
|
max-height: 300px;
|
|
40
41
|
overflow-y: auto;
|
|
41
42
|
background-color: variables.$white;
|
|
42
|
-
z-index: 100;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
&.heading-list {
|
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
padding-bottom: 0;
|
|
49
49
|
|
|
50
50
|
.name {
|
|
51
|
-
font-weight: bold;
|
|
52
|
-
line-height: 100%;
|
|
53
|
-
color: variables.$gray-800;
|
|
54
51
|
display: block;
|
|
55
52
|
margin: auto 0;
|
|
53
|
+
color: variables.$gray-800;
|
|
54
|
+
font-weight: bold;
|
|
55
|
+
line-height: 100%;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
}
|
|
@@ -6,16 +6,16 @@ export declare abstract class TheBaseToolbarItem {
|
|
|
6
6
|
set toolbarItem(value: ToolbarItem);
|
|
7
7
|
get toolbarItem(): ToolbarItem;
|
|
8
8
|
editor: Editor;
|
|
9
|
+
itemMousedownHandle: (item: ToolbarItem) => void;
|
|
9
10
|
disabled: boolean;
|
|
10
11
|
active: string | boolean;
|
|
11
12
|
_toolbarItem: ToolbarItem;
|
|
12
|
-
itemMousedownHandle: (item: ToolbarItem) => void;
|
|
13
13
|
get disabledState(): boolean;
|
|
14
14
|
get activeState(): string | boolean;
|
|
15
15
|
execute(event: MouseEvent): void;
|
|
16
16
|
selectionChange(editor: Editor): void;
|
|
17
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<TheBaseToolbarItem, never>;
|
|
18
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<TheBaseToolbarItem, never, never, { "toolbarItem": "toolbarItem"; "editor": "editor"; }, {}, never, never, false, never>;
|
|
18
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TheBaseToolbarItem, never, never, { "toolbarItem": "toolbarItem"; "editor": "editor"; "itemMousedownHandle": "itemMousedownHandle"; }, {}, never, never, false, never>;
|
|
19
19
|
}
|
|
20
20
|
export declare abstract class TheBaseToolbarDropdown extends TheBaseToolbarItem {
|
|
21
21
|
activeMenuItem: ToolbarItem;
|
|
@@ -372,4 +372,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImpor
|
|
|
372
372
|
}], theListboxChange: [{
|
|
373
373
|
type: Output
|
|
374
374
|
}] } });
|
|
375
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9jb21wb25lbnRzL2xpc3Rib3gvbGlzdGJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBSyxNQUFNLHVCQUF1QixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxVQUFVLEVBQVUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBRUgsZUFBZSxFQUNmLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsK0JBQStCLEVBQy9CLDhCQUE4QixFQUNqQyxNQUFNLGdCQUFnQixDQUFDOztBQVl4QixNQUFNLE9BQU8seUJBQXlCO0lBT2xDLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFNRCxZQUM0RSxZQUF1QyxFQUNoRSxXQUFxQyxFQUM3RSxVQUFtQztRQUY4QixpQkFBWSxHQUFaLFlBQVksQ0FBMkI7UUFDaEUsZ0JBQVcsR0FBWCxXQUFXLENBQTBCO1FBQzdFLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBckJ0QyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRUYsY0FBUyxHQUFHLG9CQUFvQixDQUFDO0lBb0JwRCxDQUFD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QUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLDBCQUEwQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM3QyxDQUFDOztnSEFoTVEsbUJBQW1CO29HQUFuQixtQkFBbUIsK09BUGpCO1FBQ1A7WUFDSSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxtQkFBbUI7U0FDbkM7S0FDSixrREFhZ0Isd0JBQXdCLDhEQUV4Qix5QkFBeUI7MkZBYmpDLG1CQUFtQjtrQkFWL0IsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsY0FBYztvQkFDeEIsUUFBUSxFQUFFLFlBQVk7b0JBQ3RCLFNBQVMsRUFBRTt3QkFDUDs0QkFDSSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHFCQUFxQjt5QkFDbkM7cUJBQ0o7aUJBQ0o7c0hBRXlCLFNBQVM7c0JBQTlCLFdBQVc7dUJBQUMsT0FBTztnQkFVd0QsT0FBTztzQkFBbEYsZUFBZTt1QkFBQyx3QkFBd0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBRWEsUUFBUTtzQkFBcEYsZUFBZTt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBRXhELGlCQUFpQjtzQkFBekIsS0FBSztnQkFFRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBRUksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9XTl9BUlJPVywgTEVGVF9BUlJPVywgRU5URVIsIFJJR0hUX0FSUk9XLCBVUF9BUlJPVywgVCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XG5pbXBvcnQgeyBmb3J3YXJkUmVmLCBOZ1pvbmUsIE9wdGlvbmFsLCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBEaXJlY3RpdmUsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcy9pbnRlcm5hbC9TdWJzY3JpcHRpb24nO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgICBUaGVMaXN0Ym94Q2hhbmdlRXZlbnRUeXBlLFxuICAgIFRIRV9MSVNUQk9YX1RPS0VOLFxuICAgIFRIRV9MSVNUQk9YX1BBUkVOVF9PUFRJT05fVE9LRU4sXG4gICAgVEhFX0xJU1RCT1hfUEFSRU5UX0dST1VQX1RPS0VOXG59IGZyb20gJy4vbGlzdGJveC50eXBlJztcblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdGhlTGlzdGJveE9wdGlvbl0nLFxuICAgIGV4cG9ydEFzOiAndGhlTGlzdGJveE9wdGlvbicsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRIRV9MSVNUQk9YX1BBUkVOVF9PUFRJT05fVE9LRU4sXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZVxuICAgICAgICB9XG4gICAgXVxufSlcbmV4cG9ydCBjbGFzcyBUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgICBwcml2YXRlIF9hY3RpdmUgPSBmYWxzZTtcblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBjbGFzc05hbWUgPSAndGhlLWxpc3Rib3gtb3B0aW9uJztcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oZm9yd2FyZFJlZigoKSA9PiBUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlKSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBwdWJsaWMgX29wdGlvbnM6IFF1ZXJ5TGlzdDxUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlPjtcblxuICAgIGdldCBoYXNDaGlsZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBnZXQgZmlyc3RDaGlsZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuZmlyc3Q7XG4gICAgfVxuXG4gICAgQElucHV0KCkgdGhlT3B0aW9uVmFsdWU6IHVua25vd247XG5cbiAgICBASW5wdXQoKSB0aGVPcHRpb25EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRIRV9MSVNUQk9YX1BBUkVOVF9PUFRJT05fVE9LRU4pIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHB1YmxpYyBwYXJlbnRPcHRpb246IFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUsXG4gICAgICAgIEBJbmplY3QoVEhFX0xJU1RCT1hfUEFSRU5UX0dST1VQX1RPS0VOKSBwdWJsaWMgcGFyZW50R3JvdXA6IFRoZUxpc3Rib3hHcm91cERpcmVjdGl2ZSxcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge31cblxuICAgIGdldEdyb3VwcygpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzOiBUaGVMaXN0Ym94R3JvdXBEaXJlY3RpdmVbXSA9IFtdO1xuICAgICAgICB0aGlzLl9vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRpb24ucGFyZW50T3B0aW9uICYmIG9wdGlvbi5wYXJlbnRPcHRpb24gPT09IHRoaXMgJiYgIWdyb3Vwcy5pbmNsdWRlcyhvcHRpb24ucGFyZW50R3JvdXApKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBzLnB1c2gob3B0aW9uLnBhcmVudEdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBncm91cHM7XG4gICAgfVxuXG4gICAgc2V0QWN0aXZlKGFjdGl2ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSBhY3RpdmU7XG4gICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2ZvY3VzJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmb2N1cycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0QWN0aXZlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdGhlTGlzdGJveEdyb3VwXScsXG4gICAgZXhwb3J0QXM6ICd0aGVMaXN0Ym94R3JvdXAnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUSEVfTElTVEJPWF9QQVJFTlRfR1JPVVBfVE9LRU4sXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGhlTGlzdGJveEdyb3VwRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoZUxpc3Rib3hHcm91cERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzTmFtZSA9ICd0aGUtbGlzdGJveC1ncm91cCc7XG5cbiAgICBvcHRpb25zOiBUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlW10gPSBbXTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBwdWJsaWMgX29wdGlvbnM6IFF1ZXJ5TGlzdDxUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlPjtcblxuICAgIC8qKlxuICAgICAqIOWkp+S6jiAxIOihqOekuuawtOW5s+WIhue7hO+8jOWwj+S6juetieS6jiAxIOihqOekuuWeguebtOWIhue7hFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGhvcml6b250YWxDb2x1bW4gPSAxO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoVEhFX0xJU1RCT1hfUEFSRU5UX09QVElPTl9UT0tFTikgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHVibGljIHBhcmVudE9wdGlvbjogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSxcbiAgICAgICAgQEluamVjdChUSEVfTElTVEJPWF9UT0tFTikgcHVibGljIHRoZUxpc3RCb3g6IFRoZUxpc3Rib3hEaXJlY3RpdmVcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xuICAgIH1cblxuICAgIGZpbHRlck9wdGlvbnMoKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuZmlsdGVyKF9vcHRpb24gPT4ge1xuICAgICAgICAgICAgaWYgKF9vcHRpb24ucGFyZW50R3JvdXAgJiYgX29wdGlvbi5wYXJlbnRHcm91cCA9PT0gdGhpcykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFNpYmxpbmdHcm91cHMoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudE9wdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50T3B0aW9uLmdldEdyb3VwcygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGhlTGlzdEJveC5ncm91cHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNDaGlsZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGdldEZpcnN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zWzBdO1xuICAgIH1cblxuICAgIGdldExhc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNbdGhpcy5vcHRpb25zLmxlbmd0aCAtIDFdO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdGhlTGlzdEJveF0nLFxuICAgIGV4cG9ydEFzOiAndGhlTGlzdEJveCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRIRV9MSVNUQk9YX1RPS0VOLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRoZUxpc3Rib3hEaXJlY3RpdmVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGhlTGlzdGJveERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3NOYW1lID0gJ3RoZS1saXN0Ym94LWNvbnRhaW5lcic7XG5cbiAgICBwcml2YXRlIF9vcHRpb25DaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcml2YXRlIF9rZXlib2FyZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHVibGljIGFjdGl2ZU9wdGlvbjogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZTtcblxuICAgIHB1YmxpYyBncm91cHM6IFRoZUxpc3Rib3hHcm91cERpcmVjdGl2ZVtdID0gW107XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFRoZUxpc3Rib3hHcm91cERpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBwcm90ZWN0ZWQgX2dyb3VwczogUXVlcnlMaXN0PFRoZUxpc3Rib3hHcm91cERpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcHJvdGVjdGVkIF9vcHRpb25zOiBRdWVyeUxpc3Q8VGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZT47XG5cbiAgICBASW5wdXQoKSBrZXlib2FyZENvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG5cbiAgICBASW5wdXQoKSBhdXRvQWN0aXZlRmlyc3RJdGVtID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKSB0aGVMaXN0Ym94Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaGVMaXN0Ym94Q2hhbmdlRXZlbnQ+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlckdyb3VwcygpO1xuICAgICAgICBpZiAodGhpcy5ncm91cHMubGVuZ3RoID4gMCAmJiB0aGlzLmF1dG9BY3RpdmVGaXJzdEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbShudWxsLCB0aGlzLmdyb3Vwc1swXS5nZXRGaXJzdCgpLCAnaW5pdCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29wdGlvbkNoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLl9vcHRpb25zLmNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMjApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJHcm91cHMoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgdGhpcy5ncm91cHNbMF0uZ2V0Rmlyc3QoKSwgJ2luaXQnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICAgICAgICAgIHRoaXMua2V5Ym9hcmRDb250YWluZXIgfHwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgJ2tleWRvd24nXG4gICAgICAgICAgICApLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmaWx0ZXJHcm91cHMoKSB7XG4gICAgICAgIHRoaXMuZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLmZpbHRlcihncm91cCA9PiB7XG4gICAgICAgICAgICBncm91cC5maWx0ZXJPcHRpb25zKCk7XG4gICAgICAgICAgICBpZiAoIWdyb3VwLnBhcmVudE9wdGlvbiAmJiBncm91cC5oYXNDaGlsZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCB7IGtleUNvZGUgfSA9IGV2ZW50O1xuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlT3B0aW9uICYmIChrZXlDb2RlID09PSBET1dOX0FSUk9XIHx8IGtleUNvZGUgPT09IFVQX0FSUk9XIHx8IGtleUNvZGUgPT09IFJJR0hUX0FSUk9XIHx8IGtleUNvZGUgPT09IExFRlRfQVJST1cpKSB7XG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0obnVsbCwgdGhpcy5ncm91cHNbMF0uZ2V0Rmlyc3QoKSwgJ2luaXQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoa2V5Q29kZSkge1xuICAgICAgICAgICAgY2FzZSBET1dOX0FSUk9XOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TmV4dExpbmVBY3RpdmUoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBVUF9BUlJPVzpcbiAgICAgICAgICAgICAgICB0aGlzLnNldFByZXZpb3VzTGluZUFjdGl2ZSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFJJR0hUX0FSUk9XOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TmV4dEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMRUZUX0FSUk9XOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0UHJldmlvdXNJdGVtQWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRU5URVI6XG4gICAgICAgICAgICAgICAgdGhpcy50aGVMaXN0Ym94Q2hhbmdlLmVtaXQoeyBvcHRpb246IHRoaXMuYWN0aXZlT3B0aW9uLCB0eXBlOiAnc2VsZWN0JyB9KTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog4oaQXG4gICAgICovXG4gICAgc2V0UHJldmlvdXNJdGVtQWN0aXZlKCkge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVPcHRpb24ucGFyZW50T3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5hY3RpdmVPcHRpb24sIHRoaXMuYWN0aXZlT3B0aW9uLnBhcmVudE9wdGlvbiwgJ3BhcmVudCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBPcHRpb25zID0gdGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAub3B0aW9ucztcbiAgICAgICAgICAgIGxldCBvcHRpb25JbmRleCA9IGdyb3VwT3B0aW9ucy5pbmRleE9mKHRoaXMuYWN0aXZlT3B0aW9uKTtcbiAgICAgICAgICAgIGxldCBuZXdPcHRpb25JbmRleCA9IG9wdGlvbkluZGV4IC0gMTtcbiAgICAgICAgICAgIGlmIChuZXdPcHRpb25JbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtKHRoaXMuYWN0aXZlT3B0aW9uLCBncm91cE9wdGlvbnNbbmV3T3B0aW9uSW5kZXhdLCAndHVybicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGVyUHJldmlvdXNHcm91cCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog4oaTIOmUrlxuICAgICAqL1xuICAgIHNldE5leHRMaW5lQWN0aXZlKGFjdGl2ZU9wdGlvbj86IFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUpIHtcbiAgICAgICAgY29uc3QgX2FjdGl2ZU9wdGlvbiA9IGFjdGl2ZU9wdGlvbiA/IGFjdGl2ZU9wdGlvbiA6IHRoaXMuYWN0aXZlT3B0aW9uO1xuICAgICAgICBjb25zdCBncm91cE9wdGlvbnMgPSBfYWN0aXZlT3B0aW9uLnBhcmVudEdyb3VwLm9wdGlvbnM7XG4gICAgICAgIGxldCBvcHRpb25JbmRleCA9IGdyb3VwT3B0aW9ucy5pbmRleE9mKF9hY3RpdmVPcHRpb24pO1xuICAgICAgICBsZXQgbmV3T3B0aW9uSW5kZXggPSBvcHRpb25JbmRleCArIF9hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAuaG9yaXpvbnRhbENvbHVtbjtcbiAgICAgICAgY29uc3QgbGFzdExpbmVMZW5ndGggPSBncm91cE9wdGlvbnMubGVuZ3RoICUgX2FjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5ob3Jpem9udGFsQ29sdW1uO1xuICAgICAgICBjb25zdCBsYXN0TGluZVN0YXJ0SW5kZXggPSBncm91cE9wdGlvbnMubGVuZ3RoIC0gKGxhc3RMaW5lTGVuZ3RoID4gMCA/IGxhc3RMaW5lTGVuZ3RoIDogMSk7XG4gICAgICAgIGxldCBuZXdPcHRpb24gPSBudWxsO1xuICAgICAgICBpZiAobmV3T3B0aW9uSW5kZXggPD0gZ3JvdXBPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIG5ld09wdGlvbiA9IGdyb3VwT3B0aW9uc1tuZXdPcHRpb25JbmRleF07XG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9uSW5kZXggPCBsYXN0TGluZVN0YXJ0SW5kZXgpIHtcbiAgICAgICAgICAgIG5ld09wdGlvbkluZGV4ID0gZ3JvdXBPcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBuZXdPcHRpb24gPSBncm91cE9wdGlvbnNbbmV3T3B0aW9uSW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdPcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgbmV3T3B0aW9uLCAndHVybicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbnRlck5leHRHcm91cCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog4oaSIOmUrlxuICAgICAqL1xuICAgIHNldE5leHRJdGVtQWN0aXZlKCkge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVPcHRpb24uaGFzQ2hpbGQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgdGhpcy5hY3RpdmVPcHRpb24uZmlyc3RDaGlsZCwgJ2NoaWxkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBncm91cE9wdGlvbnMgPSB0aGlzLmFjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5vcHRpb25zO1xuICAgICAgICAgICAgbGV0IG9wdGlvbkluZGV4ID0gZ3JvdXBPcHRpb25zLmluZGV4T2YodGhpcy5hY3RpdmVPcHRpb24pO1xuICAgICAgICAgICAgbGV0IG5ld09wdGlvbkluZGV4ID0gb3B0aW9uSW5kZXggKyAxO1xuICAgICAgICAgICAgaWYgKG5ld09wdGlvbkluZGV4IDw9IGdyb3VwT3B0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtKHRoaXMuYWN0aXZlT3B0aW9uLCBncm91cE9wdGlvbnNbbmV3T3B0aW9uSW5kZXhdLCAndHVybicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGVyTmV4dEdyb3VwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDihpEg6ZSuXG4gICAgICovXG4gICAgc2V0UHJldmlvdXNMaW5lQWN0aXZlKCkge1xuICAgICAgICBjb25zdCBncm91cE9wdGlvbnMgPSB0aGlzLmFjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5vcHRpb25zO1xuICAgICAgICBsZXQgb3B0aW9uSW5kZXggPSBncm91cE9wdGlvbnMuaW5kZXhPZih0aGlzLmFjdGl2ZU9wdGlvbik7XG4gICAgICAgIGxldCBuZXdPcHRpb25JbmRleCA9IG9wdGlvbkluZGV4IC0gdGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAuaG9yaXpvbnRhbENvbHVtbjtcbiAgICAgICAgaWYgKG5ld09wdGlvbkluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgZ3JvdXBPcHRpb25zW25ld09wdGlvbkluZGV4XSwgJ3R1cm4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50ZXJQcmV2aW91c0dyb3VwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbnRlck5leHRHcm91cCgpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gdGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAuZ2V0U2libGluZ0dyb3VwcygpO1xuICAgICAgICBjb25zdCBncm91cEluZGV4ID0gZ3JvdXBzLmluZGV4T2YodGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXApO1xuICAgICAgICBsZXQgbmV3R3JvdXBJbmRleCA9IGdyb3VwSW5kZXggKyAxO1xuICAgICAgICBpZiAobmV3R3JvdXBJbmRleCA+IGdyb3Vwcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBuZXdHcm91cEluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5hY3RpdmVPcHRpb24sIGdyb3Vwc1tuZXdHcm91cEluZGV4XS5nZXRGaXJzdCgpLCAndHVybicpO1xuICAgIH1cblxuICAgIGVudGVyUHJldmlvdXNHcm91cCgpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gdGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAuZ2V0U2libGluZ0dyb3VwcygpO1xuICAgICAgICBjb25zdCBncm91cEluZGV4ID0gZ3JvdXBzLmluZGV4T2YodGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXApO1xuICAgICAgICBsZXQgbmV3R3JvdXBJbmRleCA9IGdyb3VwSW5kZXggLSAxO1xuICAgICAgICBpZiAobmV3R3JvdXBJbmRleCA8IDApIHtcbiAgICAgICAgICAgIG5ld0dyb3VwSW5kZXggPSBncm91cHMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5hY3RpdmVPcHRpb24sIGdyb3Vwc1tuZXdHcm91cEluZGV4XS5nZXRMYXN0KCksICd0dXJuJyk7XG4gICAgfVxuXG4gICAgc2V0QWN0aXZlSXRlbShwcmV2aW91czogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSB8IG51bGwsIG9wdGlvbjogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSwgdHlwZTogVGhlTGlzdGJveENoYW5nZUV2ZW50VHlwZSkge1xuICAgICAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgICAgIHByZXZpb3VzLnNldEFjdGl2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9uLnNldEFjdGl2ZSh0cnVlKTtcbiAgICAgICAgdGhpcy5hY3RpdmVPcHRpb24gPSBvcHRpb247XG4gICAgICAgIHRoaXMudGhlTGlzdGJveENoYW5nZS5lbWl0KHsgb3B0aW9uLCB0eXBlIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vcHRpb25DaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZUxpc3Rib3hDaGFuZ2VFdmVudCB7XG4gICAgb3B0aW9uOiBUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlO1xuICAgIHR5cGU6IFRoZUxpc3Rib3hDaGFuZ2VFdmVudFR5cGU7XG59XG4iXX0=
|
|
375
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdGJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3NyYy9jb21wb25lbnRzL2xpc3Rib3gvbGlzdGJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBSyxNQUFNLHVCQUF1QixDQUFDO0FBQ2hHLE9BQU8sRUFBRSxVQUFVLEVBQVUsUUFBUSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBRUgsZUFBZSxFQUNmLFNBQVMsRUFFVCxZQUFZLEVBQ1osV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUVULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFakMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFFSCxpQkFBaUIsRUFDakIsK0JBQStCLEVBQy9CLDhCQUE4QixFQUNqQyxNQUFNLGdCQUFnQixDQUFDOztBQVl4QixNQUFNLE9BQU8seUJBQXlCO0lBUWxDLElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDVixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQy9CLENBQUM7SUFNRCxZQUM0RSxZQUF1QyxFQUNoRSxXQUFxQyxFQUM3RSxVQUFtQztRQUY4QixpQkFBWSxHQUFaLFlBQVksQ0FBMkI7UUFDaEUsZ0JBQVcsR0FBWCxXQUFXLENBQTBCO1FBQzdFLGVBQVUsR0FBVixVQUFVLENBQXlCO1FBdEJ0QyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBRUYsY0FBUyxHQUFHLG9CQUFvQixDQUFDO0lBcUJwRCxDQUFD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QyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsV0FBVztRQUNQLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUM5QyxJQUFJLENBQUMscUJBQXFCLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDN0MsQ0FBQzs7Z0hBaE1RLG1CQUFtQjtvR0FBbkIsbUJBQW1CLCtPQVBqQjtRQUNQO1lBQ0ksT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUUsbUJBQW1CO1NBQ25DO0tBQ0osa0RBYWdCLHdCQUF3Qiw4REFFeEIseUJBQXlCOzJGQWJqQyxtQkFBbUI7a0JBVi9CLFNBQVM7bUJBQUM7b0JBQ1AsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFFBQVEsRUFBRSxZQUFZO29CQUN0QixTQUFTLEVBQUU7d0JBQ1A7NEJBQ0ksT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxxQkFBcUI7eUJBQ25DO3FCQUNKO2lCQUNKO3NIQUV5QixTQUFTO3NCQUE5QixXQUFXO3VCQUFDLE9BQU87Z0JBVXdELE9BQU87c0JBQWxGLGVBQWU7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUVhLFFBQVE7c0JBQXBGLGVBQWU7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUV4RCxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUcsbUJBQW1CO3NCQUEzQixLQUFLO2dCQUVJLGdCQUFnQjtzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPV05fQVJST1csIExFRlRfQVJST1csIEVOVEVSLCBSSUdIVF9BUlJPVywgVVBfQVJST1csIFQgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgZm9yd2FyZFJlZiwgTmdab25lLCBPcHRpb25hbCwgU2tpcFNlbGYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMvaW50ZXJuYWwvU3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgVGhlTGlzdGJveENoYW5nZUV2ZW50VHlwZSxcbiAgICBUSEVfTElTVEJPWF9UT0tFTixcbiAgICBUSEVfTElTVEJPWF9QQVJFTlRfT1BUSU9OX1RPS0VOLFxuICAgIFRIRV9MSVNUQk9YX1BBUkVOVF9HUk9VUF9UT0tFTlxufSBmcm9tICcuL2xpc3Rib3gudHlwZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnW3RoZUxpc3Rib3hPcHRpb25dJyxcbiAgICBleHBvcnRBczogJ3RoZUxpc3Rib3hPcHRpb24nLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUSEVfTElTVEJPWF9QQVJFTlRfT1BUSU9OX1RPS0VOLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgcHJpdmF0ZSBfYWN0aXZlID0gZmFsc2U7XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3NOYW1lID0gJ3RoZS1saXN0Ym94LW9wdGlvbic7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKGZvcndhcmRSZWYoKCkgPT4gVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSksIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwdWJsaWMgX29wdGlvbnM6IFF1ZXJ5TGlzdDxUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlPjtcblxuICAgIGdldCBoYXNDaGlsZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBnZXQgZmlyc3RDaGlsZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29wdGlvbnMuZmlyc3Q7XG4gICAgfVxuXG4gICAgQElucHV0KCkgdGhlT3B0aW9uVmFsdWU6IHVua25vd247XG5cbiAgICBASW5wdXQoKSB0aGVPcHRpb25EaXNhYmxlZDogYm9vbGVhbjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KFRIRV9MSVNUQk9YX1BBUkVOVF9PUFRJT05fVE9LRU4pIEBPcHRpb25hbCgpIEBTa2lwU2VsZigpIHB1YmxpYyBwYXJlbnRPcHRpb246IFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUsXG4gICAgICAgIEBJbmplY3QoVEhFX0xJU1RCT1hfUEFSRU5UX0dST1VQX1RPS0VOKSBwdWJsaWMgcGFyZW50R3JvdXA6IFRoZUxpc3Rib3hHcm91cERpcmVjdGl2ZSxcbiAgICAgICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgKSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge31cblxuICAgIGdldEdyb3VwcygpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzOiBUaGVMaXN0Ym94R3JvdXBEaXJlY3RpdmVbXSA9IFtdO1xuICAgICAgICB0aGlzLl9vcHRpb25zLmZvckVhY2gob3B0aW9uID0+IHtcbiAgICAgICAgICAgIGlmIChvcHRpb24ucGFyZW50T3B0aW9uICYmIG9wdGlvbi5wYXJlbnRPcHRpb24gPT09IHRoaXMgJiYgIWdyb3Vwcy5pbmNsdWRlcyhvcHRpb24ucGFyZW50R3JvdXApKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXBzLnB1c2gob3B0aW9uLnBhcmVudEdyb3VwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBncm91cHM7XG4gICAgfVxuXG4gICAgc2V0QWN0aXZlKGFjdGl2ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9hY3RpdmUgPSBhY3RpdmU7XG4gICAgICAgIGlmIChhY3RpdmUpIHtcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2ZvY3VzJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdmb2N1cycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0QWN0aXZlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZlO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdGhlTGlzdGJveEdyb3VwXScsXG4gICAgZXhwb3J0QXM6ICd0aGVMaXN0Ym94R3JvdXAnLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBUSEVfTElTVEJPWF9QQVJFTlRfR1JPVVBfVE9LRU4sXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogVGhlTGlzdGJveEdyb3VwRGlyZWN0aXZlXG4gICAgICAgIH1cbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIFRoZUxpc3Rib3hHcm91cERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCB7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzTmFtZSA9ICd0aGUtbGlzdGJveC1ncm91cCc7XG5cbiAgICBvcHRpb25zOiBUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlW10gPSBbXTtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBwdWJsaWMgX29wdGlvbnM6IFF1ZXJ5TGlzdDxUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlPjtcblxuICAgIC8qKlxuICAgICAqIOWkp+S6jiAxIOihqOekuuawtOW5s+WIhue7hO+8jOWwj+S6juetieS6jiAxIOihqOekuuWeguebtOWIhue7hFxuICAgICAqL1xuICAgIEBJbnB1dCgpIGhvcml6b250YWxDb2x1bW4gPSAxO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBJbmplY3QoVEhFX0xJU1RCT1hfUEFSRU5UX09QVElPTl9UT0tFTikgQE9wdGlvbmFsKCkgQFNraXBTZWxmKCkgcHVibGljIHBhcmVudE9wdGlvbjogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSxcbiAgICAgICAgQEluamVjdChUSEVfTElTVEJPWF9UT0tFTikgcHVibGljIHRoZUxpc3RCb3g6IFRoZUxpc3Rib3hEaXJlY3RpdmVcbiAgICApIHt9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygpO1xuICAgIH1cblxuICAgIGZpbHRlck9wdGlvbnMoKSB7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuZmlsdGVyKF9vcHRpb24gPT4ge1xuICAgICAgICAgICAgaWYgKF9vcHRpb24ucGFyZW50R3JvdXAgJiYgX29wdGlvbi5wYXJlbnRHcm91cCA9PT0gdGhpcykge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldFNpYmxpbmdHcm91cHMoKSB7XG4gICAgICAgIGlmICh0aGlzLnBhcmVudE9wdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50T3B0aW9uLmdldEdyb3VwcygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMudGhlTGlzdEJveC5ncm91cHM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYXNDaGlsZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGdldEZpcnN0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zWzBdO1xuICAgIH1cblxuICAgIGdldExhc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNbdGhpcy5vcHRpb25zLmxlbmd0aCAtIDFdO1xuICAgIH1cbn1cblxuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdbdGhlTGlzdEJveF0nLFxuICAgIGV4cG9ydEFzOiAndGhlTGlzdEJveCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFRIRV9MSVNUQk9YX1RPS0VOLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IFRoZUxpc3Rib3hEaXJlY3RpdmVcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgVGhlTGlzdGJveERpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3NOYW1lID0gJ3RoZS1saXN0Ym94LWNvbnRhaW5lcic7XG5cbiAgICBwcml2YXRlIF9vcHRpb25DaGFuZ2VzU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcml2YXRlIF9rZXlib2FyZFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuXG4gICAgcHVibGljIGFjdGl2ZU9wdGlvbjogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZTtcblxuICAgIHB1YmxpYyBncm91cHM6IFRoZUxpc3Rib3hHcm91cERpcmVjdGl2ZVtdID0gW107XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFRoZUxpc3Rib3hHcm91cERpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBwcm90ZWN0ZWQgX2dyb3VwczogUXVlcnlMaXN0PFRoZUxpc3Rib3hHcm91cERpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSkgcHJvdGVjdGVkIF9vcHRpb25zOiBRdWVyeUxpc3Q8VGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZT47XG5cbiAgICBASW5wdXQoKSBrZXlib2FyZENvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XG5cbiAgICBASW5wdXQoKSBhdXRvQWN0aXZlRmlyc3RJdGVtID0gdHJ1ZTtcblxuICAgIEBPdXRwdXQoKSB0aGVMaXN0Ym94Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUaGVMaXN0Ym94Q2hhbmdlRXZlbnQ+KCk7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lLCBwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7fVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gICAgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZpbHRlckdyb3VwcygpO1xuICAgICAgICBpZiAodGhpcy5ncm91cHMubGVuZ3RoID4gMCAmJiB0aGlzLmF1dG9BY3RpdmVGaXJzdEl0ZW0pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbShudWxsLCB0aGlzLmdyb3Vwc1swXS5nZXRGaXJzdCgpLCAnaW5pdCcpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29wdGlvbkNoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLl9vcHRpb25zLmNoYW5nZXMucGlwZShkZWJvdW5jZVRpbWUoMjApKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJHcm91cHMoKTtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgdGhpcy5ncm91cHNbMF0uZ2V0Rmlyc3QoKSwgJ2luaXQnKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuX2tleWJvYXJkU3Vic2NyaXB0aW9uID0gZnJvbUV2ZW50PEtleWJvYXJkRXZlbnQ+KFxuICAgICAgICAgICAgICAgIHRoaXMua2V5Ym9hcmRDb250YWluZXIgfHwgdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgJ2tleWRvd24nXG4gICAgICAgICAgICApLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duKGV2ZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBmaWx0ZXJHcm91cHMoKSB7XG4gICAgICAgIHRoaXMuZ3JvdXBzID0gdGhpcy5fZ3JvdXBzLmZpbHRlcihncm91cCA9PiB7XG4gICAgICAgICAgICBncm91cC5maWx0ZXJPcHRpb25zKCk7XG4gICAgICAgICAgICBpZiAoIWdyb3VwLnBhcmVudE9wdGlvbiAmJiBncm91cC5oYXNDaGlsZCgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBjb25zdCB7IGtleUNvZGUgfSA9IGV2ZW50O1xuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlT3B0aW9uICYmIChrZXlDb2RlID09PSBET1dOX0FSUk9XIHx8IGtleUNvZGUgPT09IFVQX0FSUk9XIHx8IGtleUNvZGUgPT09IFJJR0hUX0FSUk9XIHx8IGtleUNvZGUgPT09IExFRlRfQVJST1cpKSB7XG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0obnVsbCwgdGhpcy5ncm91cHNbMF0uZ2V0Rmlyc3QoKSwgJ2luaXQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoa2V5Q29kZSkge1xuICAgICAgICAgICAgY2FzZSBET1dOX0FSUk9XOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TmV4dExpbmVBY3RpdmUoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBVUF9BUlJPVzpcbiAgICAgICAgICAgICAgICB0aGlzLnNldFByZXZpb3VzTGluZUFjdGl2ZSgpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFJJR0hUX0FSUk9XOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0TmV4dEl0ZW1BY3RpdmUoKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBMRUZUX0FSUk9XOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0UHJldmlvdXNJdGVtQWN0aXZlKCk7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgRU5URVI6XG4gICAgICAgICAgICAgICAgdGhpcy50aGVMaXN0Ym94Q2hhbmdlLmVtaXQoeyBvcHRpb246IHRoaXMuYWN0aXZlT3B0aW9uLCB0eXBlOiAnc2VsZWN0JyB9KTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog4oaQXG4gICAgICovXG4gICAgc2V0UHJldmlvdXNJdGVtQWN0aXZlKCkge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVPcHRpb24ucGFyZW50T3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5hY3RpdmVPcHRpb24sIHRoaXMuYWN0aXZlT3B0aW9uLnBhcmVudE9wdGlvbiwgJ3BhcmVudCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgZ3JvdXBPcHRpb25zID0gdGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAub3B0aW9ucztcbiAgICAgICAgICAgIGxldCBvcHRpb25JbmRleCA9IGdyb3VwT3B0aW9ucy5pbmRleE9mKHRoaXMuYWN0aXZlT3B0aW9uKTtcbiAgICAgICAgICAgIGxldCBuZXdPcHRpb25JbmRleCA9IG9wdGlvbkluZGV4IC0gMTtcbiAgICAgICAgICAgIGlmIChuZXdPcHRpb25JbmRleCA+PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtKHRoaXMuYWN0aXZlT3B0aW9uLCBncm91cE9wdGlvbnNbbmV3T3B0aW9uSW5kZXhdLCAndHVybicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGVyUHJldmlvdXNHcm91cCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog4oaTIOmUrlxuICAgICAqL1xuICAgIHNldE5leHRMaW5lQWN0aXZlKGFjdGl2ZU9wdGlvbj86IFRoZUxpc3Rib3hPcHRpb25EaXJlY3RpdmUpIHtcbiAgICAgICAgY29uc3QgX2FjdGl2ZU9wdGlvbiA9IGFjdGl2ZU9wdGlvbiA/IGFjdGl2ZU9wdGlvbiA6IHRoaXMuYWN0aXZlT3B0aW9uO1xuICAgICAgICBjb25zdCBncm91cE9wdGlvbnMgPSBfYWN0aXZlT3B0aW9uLnBhcmVudEdyb3VwLm9wdGlvbnM7XG4gICAgICAgIGxldCBvcHRpb25JbmRleCA9IGdyb3VwT3B0aW9ucy5pbmRleE9mKF9hY3RpdmVPcHRpb24pO1xuICAgICAgICBsZXQgbmV3T3B0aW9uSW5kZXggPSBvcHRpb25JbmRleCArIF9hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAuaG9yaXpvbnRhbENvbHVtbjtcbiAgICAgICAgY29uc3QgbGFzdExpbmVMZW5ndGggPSBncm91cE9wdGlvbnMubGVuZ3RoICUgX2FjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5ob3Jpem9udGFsQ29sdW1uO1xuICAgICAgICBjb25zdCBsYXN0TGluZVN0YXJ0SW5kZXggPSBncm91cE9wdGlvbnMubGVuZ3RoIC0gKGxhc3RMaW5lTGVuZ3RoID4gMCA/IGxhc3RMaW5lTGVuZ3RoIDogMSk7XG4gICAgICAgIGxldCBuZXdPcHRpb24gPSBudWxsO1xuICAgICAgICBpZiAobmV3T3B0aW9uSW5kZXggPD0gZ3JvdXBPcHRpb25zLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIG5ld09wdGlvbiA9IGdyb3VwT3B0aW9uc1tuZXdPcHRpb25JbmRleF07XG4gICAgICAgIH0gZWxzZSBpZiAob3B0aW9uSW5kZXggPCBsYXN0TGluZVN0YXJ0SW5kZXgpIHtcbiAgICAgICAgICAgIG5ld09wdGlvbkluZGV4ID0gZ3JvdXBPcHRpb25zLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICBuZXdPcHRpb24gPSBncm91cE9wdGlvbnNbbmV3T3B0aW9uSW5kZXhdO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuZXdPcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgbmV3T3B0aW9uLCAndHVybicpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5lbnRlck5leHRHcm91cCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog4oaSIOmUrlxuICAgICAqL1xuICAgIHNldE5leHRJdGVtQWN0aXZlKCkge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVPcHRpb24uaGFzQ2hpbGQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgdGhpcy5hY3RpdmVPcHRpb24uZmlyc3RDaGlsZCwgJ2NoaWxkJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBncm91cE9wdGlvbnMgPSB0aGlzLmFjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5vcHRpb25zO1xuICAgICAgICAgICAgbGV0IG9wdGlvbkluZGV4ID0gZ3JvdXBPcHRpb25zLmluZGV4T2YodGhpcy5hY3RpdmVPcHRpb24pO1xuICAgICAgICAgICAgbGV0IG5ld09wdGlvbkluZGV4ID0gb3B0aW9uSW5kZXggKyAxO1xuICAgICAgICAgICAgaWYgKG5ld09wdGlvbkluZGV4IDw9IGdyb3VwT3B0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRBY3RpdmVJdGVtKHRoaXMuYWN0aXZlT3B0aW9uLCBncm91cE9wdGlvbnNbbmV3T3B0aW9uSW5kZXhdLCAndHVybicpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVudGVyTmV4dEdyb3VwKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDihpEg6ZSuXG4gICAgICovXG4gICAgc2V0UHJldmlvdXNMaW5lQWN0aXZlKCkge1xuICAgICAgICBjb25zdCBncm91cE9wdGlvbnMgPSB0aGlzLmFjdGl2ZU9wdGlvbi5wYXJlbnRHcm91cC5vcHRpb25zO1xuICAgICAgICBsZXQgb3B0aW9uSW5kZXggPSBncm91cE9wdGlvbnMuaW5kZXhPZih0aGlzLmFjdGl2ZU9wdGlvbik7XG4gICAgICAgIGxldCBuZXdPcHRpb25JbmRleCA9IG9wdGlvbkluZGV4IC0gdGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAuaG9yaXpvbnRhbENvbHVtbjtcbiAgICAgICAgaWYgKG5ld09wdGlvbkluZGV4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlSXRlbSh0aGlzLmFjdGl2ZU9wdGlvbiwgZ3JvdXBPcHRpb25zW25ld09wdGlvbkluZGV4XSwgJ3R1cm4nKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZW50ZXJQcmV2aW91c0dyb3VwKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBlbnRlck5leHRHcm91cCgpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gdGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAuZ2V0U2libGluZ0dyb3VwcygpO1xuICAgICAgICBjb25zdCBncm91cEluZGV4ID0gZ3JvdXBzLmluZGV4T2YodGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXApO1xuICAgICAgICBsZXQgbmV3R3JvdXBJbmRleCA9IGdyb3VwSW5kZXggKyAxO1xuICAgICAgICBpZiAobmV3R3JvdXBJbmRleCA+IGdyb3Vwcy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBuZXdHcm91cEluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5hY3RpdmVPcHRpb24sIGdyb3Vwc1tuZXdHcm91cEluZGV4XS5nZXRGaXJzdCgpLCAndHVybicpO1xuICAgIH1cblxuICAgIGVudGVyUHJldmlvdXNHcm91cCgpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBzID0gdGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXAuZ2V0U2libGluZ0dyb3VwcygpO1xuICAgICAgICBjb25zdCBncm91cEluZGV4ID0gZ3JvdXBzLmluZGV4T2YodGhpcy5hY3RpdmVPcHRpb24ucGFyZW50R3JvdXApO1xuICAgICAgICBsZXQgbmV3R3JvdXBJbmRleCA9IGdyb3VwSW5kZXggLSAxO1xuICAgICAgICBpZiAobmV3R3JvdXBJbmRleCA8IDApIHtcbiAgICAgICAgICAgIG5ld0dyb3VwSW5kZXggPSBncm91cHMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEFjdGl2ZUl0ZW0odGhpcy5hY3RpdmVPcHRpb24sIGdyb3Vwc1tuZXdHcm91cEluZGV4XS5nZXRMYXN0KCksICd0dXJuJyk7XG4gICAgfVxuXG4gICAgc2V0QWN0aXZlSXRlbShwcmV2aW91czogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSB8IG51bGwsIG9wdGlvbjogVGhlTGlzdGJveE9wdGlvbkRpcmVjdGl2ZSwgdHlwZTogVGhlTGlzdGJveENoYW5nZUV2ZW50VHlwZSkge1xuICAgICAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgICAgIHByZXZpb3VzLnNldEFjdGl2ZShmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgb3B0aW9uLnNldEFjdGl2ZSh0cnVlKTtcbiAgICAgICAgdGhpcy5hY3RpdmVPcHRpb24gPSBvcHRpb247XG4gICAgICAgIHRoaXMudGhlTGlzdGJveENoYW5nZS5lbWl0KHsgb3B0aW9uLCB0eXBlIH0pO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vcHRpb25DaGFuZ2VzU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX2tleWJvYXJkU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRoZUxpc3Rib3hDaGFuZ2VFdmVudCB7XG4gICAgb3B0aW9uOiBUaGVMaXN0Ym94T3B0aW9uRGlyZWN0aXZlO1xuICAgIHR5cGU6IFRoZUxpc3Rib3hDaGFuZ2VFdmVudFR5cGU7XG59XG4iXX0=
|