@colijnit/homedecorator 255.1.4 → 255.1.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/app/core/enum/message-type.enum.d.ts +3 -1
- package/app/core/interface/message-with-payload.interface.d.ts +6 -0
- package/app/core/model/homedecorator-settings-options.d.ts +2 -0
- package/app/core/service/homedecorator-app-event.service.d.ts +1 -0
- package/app/core/service/homedecorator-connector-adapter.service.d.ts +2 -0
- package/app/core/service/homedecorator-connector.service.d.ts +5 -4
- package/app/core/service/homedecorator-settings.service.d.ts +2 -1
- package/app/core/service/presets.service.d.ts +3 -1
- package/app/homedecorator.component.d.ts +3 -1
- package/app/homedecorator.module.d.ts +2 -1
- package/app/plugins/core3d/service/floor-pattern.service.d.ts +1 -1
- package/app/plugins/core3d/service/floor-tile-intersection.service.d.ts +2 -1
- package/app/plugins/core3d/service/floor.service.d.ts +3 -1
- package/app/plugins/core3d/service/post-processing.service.d.ts +21 -7
- package/app/plugins/core3d/service/scene.service.d.ts +1 -1
- package/app/plugins/core3d/service/ssr.service.d.ts +0 -1
- package/app/plugins/model-uploader/model-previewer/model-preview.component.d.ts +11 -2
- package/app/plugins/model-uploader/model-previewer/model-preview.component.scss +185 -15
- package/app/plugins/model-uploader/model-uploader.module.d.ts +5 -1
- package/app/plugins/render/render-dialog/render-dialog.component.d.ts +4 -1
- package/app/plugins/render/render-dialog/render-dialog.component.scss +5 -5
- package/app/plugins/room-planner/components/floorplanner/floorplanner.component.d.ts +3 -1
- package/app/plugins/room-planner/components/floorplanner/service/room.service.d.ts +1 -0
- package/app/plugins/room-planner/components/settings/settings.component.d.ts +5 -1
- package/app/plugins/room-planner/components/texture-editor/texture-editor.component.d.ts +4 -1
- package/app/plugins/room-planner/room-planner/room-planner.component.scss +1 -0
- package/app/plugins/threedselector/threedselector/service/build-furniture.service.d.ts +1 -3
- package/app/plugins/toolbar/draw-dialog/draw-dialog.component.d.ts +2 -0
- package/app/plugins/toolbar/draw-dialog/draw-dialog.component.scss +1 -1
- package/app/plugins/toolbar/toolbar/toolbar.component.d.ts +2 -0
- package/assets/icons/dash-button.svg +7 -0
- package/assets/icons/pen-ruler.svg +1 -0
- package/assets/icons/retry-button.svg +7 -0
- package/bundles/colijnit-homedecorator.umd.js +822 -601
- package/bundles/colijnit-homedecorator.umd.js.map +1 -1
- package/esm2015/app/app.version.js +3 -3
- package/esm2015/app/core/enum/message-type.enum.js +3 -1
- package/esm2015/app/core/interface/message-with-payload.interface.js +1 -1
- package/esm2015/app/core/model/homedecorator-settings-options.js +3 -1
- package/esm2015/app/core/service/3dm-api.js +4 -4
- package/esm2015/app/core/service/homedecorator-app-event.service.js +2 -1
- package/esm2015/app/core/service/homedecorator-connector-adapter.service.js +25 -2
- package/esm2015/app/core/service/homedecorator-connector.service.js +25 -22
- package/esm2015/app/core/service/homedecorator-settings.service.js +3 -2
- package/esm2015/app/core/service/presets.service.js +13 -5
- package/esm2015/app/core/utils/material.utils.js +3 -3
- package/esm2015/app/homedecorator.component.js +26 -19
- package/esm2015/app/homedecorator.module.js +8 -4
- package/esm2015/app/plugins/core3d/core3d/components/scenecontrol/scene-control.component.js +5 -5
- package/esm2015/app/plugins/core3d/items/custom-cylinder-floor-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-cylinder-wall-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-shape-floor-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/custom-shape-wall-item.js +2 -2
- package/esm2015/app/plugins/core3d/items/factory.js +3 -2
- package/esm2015/app/plugins/core3d/service/ar.service.js +2 -1
- package/esm2015/app/plugins/core3d/service/floor-pattern.service.js +24 -18
- package/esm2015/app/plugins/core3d/service/floor-tile-intersection.service.js +13 -8
- package/esm2015/app/plugins/core3d/service/floor.service.js +9 -4
- package/esm2015/app/plugins/core3d/service/light-presets.service.js +10 -8
- package/esm2015/app/plugins/core3d/service/lights.service.js +8 -1
- package/esm2015/app/plugins/core3d/service/outline.service.js +4 -6
- package/esm2015/app/plugins/core3d/service/post-processing.service.js +148 -51
- package/esm2015/app/plugins/core3d/service/scene-event.service.js +14 -7
- package/esm2015/app/plugins/core3d/service/scene.service.js +84 -74
- package/esm2015/app/plugins/core3d/service/ssr.service.js +2 -53
- package/esm2015/app/plugins/lite-selector/lite-selector/component/answers-slideout/answers-slideout.component.js +10 -5
- package/esm2015/app/plugins/lite-selector/lite-selector/lite-selector.component.js +2 -2
- package/esm2015/app/plugins/model-uploader/model-previewer/model-preview.component.js +281 -166
- package/esm2015/app/plugins/model-uploader/model-uploader.module.js +22 -3
- package/esm2015/app/plugins/render/render-controls/render-controls.component.js +3 -2
- package/esm2015/app/plugins/render/render-dialog/render-dialog.component.js +19 -14
- package/esm2015/app/plugins/render/service/new-render.service.js +4 -2
- package/esm2015/app/plugins/room-planner/components/custom-cylinder-creator/custom-cylinder-creator.component.js +4 -2
- package/esm2015/app/plugins/room-planner/components/custome-shape-creator/custom-shape-creator.component.js +2 -2
- package/esm2015/app/plugins/room-planner/components/floorplanner/floorplanner.component.js +29 -15
- package/esm2015/app/plugins/room-planner/components/floorplanner/service/room.service.js +5 -2
- package/esm2015/app/plugins/room-planner/components/settings/settings.component.js +12 -5
- package/esm2015/app/plugins/room-planner/components/texture-editor/texture-editor.component.js +31 -15
- package/esm2015/app/plugins/room-planner/room-planner/room-planner.component.js +691 -683
- package/esm2015/app/plugins/threedselector/threedselector/service/build-furniture.service.js +43 -41
- package/esm2015/app/plugins/threedselector/threedselector/threedselector.component.js +1 -1
- package/esm2015/app/plugins/toolbar/draw-dialog/draw-dialog.component.js +26 -20
- package/esm2015/app/plugins/toolbar/save-dialog/save-dialog.component.js +2 -2
- package/esm2015/app/plugins/toolbar/toolbar/toolbar.component.js +15 -8
- package/esm2015/app/shared/loading-overlay/loading-overlay.component.js +4 -2
- package/esm2015/app/shared/model-dialog/model-dialog-furniture-list.component.js +3 -3
- package/fesm2015/colijnit-homedecorator.js +1656 -1322
- package/fesm2015/colijnit-homedecorator.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Color,
|
|
2
|
+
import { Color, HalfFloatType, NearestFilter, RGBAFormat, SRGBColorSpace, WebGLRenderTarget } from 'three';
|
|
3
3
|
import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer';
|
|
4
4
|
import GUI from 'three/examples/jsm/libs/lil-gui.module.min';
|
|
5
5
|
import { N8AOPass } from 'n8ao';
|
|
6
6
|
import { ConfigurationKey } from '../../../core/enum/configuration-key.enum';
|
|
7
|
-
import { TAARenderPass } from 'three/examples/jsm/postprocessing/TAARenderPass';
|
|
8
7
|
import { OutputPass } from 'three/examples/jsm/postprocessing/OutputPass';
|
|
9
8
|
import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass';
|
|
9
|
+
import { FXAAShader } from 'three/examples/jsm/shaders/FXAAShader';
|
|
10
|
+
import { ShaderPass } from 'three/examples/jsm/postprocessing/ShaderPass';
|
|
11
|
+
import { BlendShader } from 'three/examples/jsm/shaders/BlendShader';
|
|
10
12
|
import * as i0 from "@angular/core";
|
|
11
13
|
import * as i1 from "../../../core/service/configuration.service";
|
|
14
|
+
import * as i2 from "../../../core/service/homedecorator-settings.service";
|
|
12
15
|
export class PostProcessingService {
|
|
13
|
-
constructor(_configurationService) {
|
|
16
|
+
constructor(_configurationService, _settingsService) {
|
|
14
17
|
this._configurationService = _configurationService;
|
|
18
|
+
this._settingsService = _settingsService;
|
|
15
19
|
this._effectController = {
|
|
16
20
|
aoSamples: 32.0,
|
|
17
21
|
denoiseSamples: 8.0,
|
|
@@ -27,13 +31,24 @@ export class PostProcessingService {
|
|
|
27
31
|
color: [0, 0, 0],
|
|
28
32
|
colorMultiply: true,
|
|
29
33
|
stencil: true,
|
|
30
|
-
accumulate: false
|
|
34
|
+
accumulate: false,
|
|
35
|
+
gammaCorrection: false
|
|
31
36
|
};
|
|
32
37
|
this._subs = [];
|
|
33
38
|
this._subs.push(this._configurationService.onChange.subscribe((changed) => {
|
|
34
39
|
if (ConfigurationKey.ShowPostProcessingSettings in changed) {
|
|
35
40
|
this._showHideGui(changed[ConfigurationKey.ShowPostProcessingSettings]);
|
|
36
41
|
}
|
|
42
|
+
}), this._settingsService.settingsLoaded.subscribe(() => {
|
|
43
|
+
this._aoEnabled = this._settingsService.settings.options.aoEnabled;
|
|
44
|
+
this._aaEnabled = this._settingsService.settings.options.aaEnabled;
|
|
45
|
+
}), this._settingsService.settingsChanged.subscribe(() => {
|
|
46
|
+
if (this._aoEnabled !== this._settingsService.settings.options.aoEnabled || this._aaEnabled !== this._settingsService.settings.options.aaEnabled) {
|
|
47
|
+
this._aoEnabled = this._settingsService.settings.options.aoEnabled;
|
|
48
|
+
this._aaEnabled = this._settingsService.settings.options.aaEnabled;
|
|
49
|
+
this._initComposers();
|
|
50
|
+
this.render();
|
|
51
|
+
}
|
|
37
52
|
}));
|
|
38
53
|
}
|
|
39
54
|
ngOnDestroy() {
|
|
@@ -43,37 +58,127 @@ export class PostProcessingService {
|
|
|
43
58
|
this._renderer = renderer;
|
|
44
59
|
this._scene = scene;
|
|
45
60
|
this._camera = camera;
|
|
46
|
-
this.
|
|
61
|
+
this._width = width;
|
|
62
|
+
this._height = height;
|
|
63
|
+
this._postProcessingGui = new GUI();
|
|
64
|
+
this._postProcessingGui.hide();
|
|
65
|
+
this._renderPass = new RenderPass(this._scene, this._camera);
|
|
66
|
+
this._outputPass = new OutputPass();
|
|
67
|
+
this._initComposers();
|
|
68
|
+
this._createGui();
|
|
69
|
+
// this._createGuiTaaPass();
|
|
70
|
+
}
|
|
71
|
+
setSize(width, height) {
|
|
72
|
+
if (this._aoComposer) {
|
|
73
|
+
this._aoComposer.setSize(width, height);
|
|
74
|
+
}
|
|
75
|
+
if (this._aaComposer) {
|
|
76
|
+
this._aaComposer.setSize(width, height);
|
|
77
|
+
}
|
|
78
|
+
if (this._blendComposer) {
|
|
79
|
+
this._blendComposer.setSize(width, height);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
render() {
|
|
83
|
+
if (this._settingsService.settings.options.aaEnabled && this._aaComposer) {
|
|
84
|
+
this._aaComposer.render();
|
|
85
|
+
}
|
|
86
|
+
if (this._settingsService.settings.options.aoEnabled && this._aoComposer) {
|
|
87
|
+
this._aoComposer.render();
|
|
88
|
+
}
|
|
89
|
+
if (this._blendComposer) {
|
|
90
|
+
this._blendComposer.render();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
showGui() {
|
|
94
|
+
this._postProcessingGui.show(true);
|
|
95
|
+
}
|
|
96
|
+
hideGui() {
|
|
97
|
+
this._postProcessingGui.hide();
|
|
98
|
+
}
|
|
99
|
+
_initComposers() {
|
|
100
|
+
this._initAaComposer();
|
|
101
|
+
this._initAoComposer();
|
|
102
|
+
this._initBlendComposer();
|
|
103
|
+
}
|
|
104
|
+
_initAaComposer() {
|
|
105
|
+
if (this._aaComposer) {
|
|
106
|
+
this._aaComposer.dispose();
|
|
107
|
+
}
|
|
108
|
+
if (!this._aaEnabled) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
this._aaRenderTarget = new WebGLRenderTarget(this._width, this._height, {
|
|
112
|
+
samples: 4,
|
|
113
|
+
type: HalfFloatType,
|
|
47
114
|
minFilter: NearestFilter,
|
|
48
115
|
magFilter: NearestFilter,
|
|
49
116
|
format: RGBAFormat,
|
|
50
117
|
colorSpace: SRGBColorSpace
|
|
51
118
|
});
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
54
|
-
this.
|
|
55
|
-
|
|
56
|
-
this.
|
|
119
|
+
this._aaComposer = new EffectComposer(this._renderer, this._aaRenderTarget);
|
|
120
|
+
this._aaComposer.renderToScreen = false;
|
|
121
|
+
this._fxaaPass = new ShaderPass(FXAAShader);
|
|
122
|
+
const pixelRatio = this._renderer.getPixelRatio();
|
|
123
|
+
// this._fxaaPass.material.uniforms[ 'resolution' ].value.x = 1 / (this._width * pixelRatio);
|
|
124
|
+
// this._fxaaPass.material.uniforms[ 'resolution' ].value.y = 1 / (this._height * pixelRatio);
|
|
125
|
+
this._fxaaPass.uniforms['resolution'].value.x = 1 / (this._width * pixelRatio);
|
|
126
|
+
this._fxaaPass.uniforms['resolution'].value.y = 1 / (this._height * pixelRatio);
|
|
127
|
+
// this._taaRenderPass = new TAARenderPass(this._scene, this._camera, 0x000000, 0);
|
|
128
|
+
// this._taaRenderPass.unbiased = true;
|
|
129
|
+
// this._taaRenderPass.sampleLevel = 4;
|
|
130
|
+
this._aaComposer.addPass(this._renderPass);
|
|
131
|
+
// this._aaComposer.addPass(this._taaRenderPass);
|
|
132
|
+
this._aaComposer.addPass(this._fxaaPass);
|
|
133
|
+
this._aaComposer.addPass(this._outputPass);
|
|
134
|
+
}
|
|
135
|
+
_initAoComposer() {
|
|
136
|
+
if (this._aoComposer) {
|
|
137
|
+
this._aoComposer.dispose();
|
|
138
|
+
}
|
|
139
|
+
if (!this._aoEnabled) {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
this._aoRenderTarget = new WebGLRenderTarget(this._width, this._height, {
|
|
143
|
+
samples: 4,
|
|
144
|
+
type: HalfFloatType,
|
|
145
|
+
minFilter: NearestFilter,
|
|
146
|
+
magFilter: NearestFilter,
|
|
147
|
+
format: RGBAFormat,
|
|
148
|
+
colorSpace: SRGBColorSpace
|
|
149
|
+
});
|
|
150
|
+
this._aoComposer = new EffectComposer(this._renderer, this._aoRenderTarget);
|
|
151
|
+
this._aoComposer.renderToScreen = false;
|
|
152
|
+
this._n8aoPass = new N8AOPass(this._scene, this._camera, this._width, this._height);
|
|
57
153
|
this._n8aoPass.configuration.gammaCorrection = false;
|
|
58
|
-
this._n8aoPass.debugMode = true;
|
|
59
|
-
//
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
this.
|
|
68
|
-
this.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
this.
|
|
76
|
-
|
|
154
|
+
// this._n8aoPass.debugMode = true;
|
|
155
|
+
// this._aoComposer.addPass(this._renderPass);
|
|
156
|
+
this._aoComposer.addPass(this._n8aoPass);
|
|
157
|
+
this._aoComposer.addPass(this._outputPass);
|
|
158
|
+
}
|
|
159
|
+
_initBlendComposer() {
|
|
160
|
+
if (this._blendShader) {
|
|
161
|
+
this._blendShader.dispose();
|
|
162
|
+
}
|
|
163
|
+
this._blendShader = new ShaderPass(BlendShader);
|
|
164
|
+
if (this._aaEnabled && this._aoEnabled) {
|
|
165
|
+
this._blendShader.uniforms.tDiffuse1.value = this._aaRenderTarget.texture;
|
|
166
|
+
this._blendShader.uniforms.tDiffuse2.value = this._aoRenderTarget.texture;
|
|
167
|
+
}
|
|
168
|
+
else if (this._aoEnabled) {
|
|
169
|
+
this._blendShader.uniforms.tDiffuse1.value = this._aoRenderTarget.texture;
|
|
170
|
+
}
|
|
171
|
+
else if (this._aaEnabled) {
|
|
172
|
+
this._blendShader.uniforms.tDiffuse1.value = this._aaRenderTarget.texture;
|
|
173
|
+
}
|
|
174
|
+
this._blendShader.uniforms.mixRatio.value = 0.2;
|
|
175
|
+
this._blendComposer = new EffectComposer(this._renderer);
|
|
176
|
+
this._blendComposer.renderToScreen = true;
|
|
177
|
+
this._blendComposer.addPass(this._renderPass);
|
|
178
|
+
if (this._aaEnabled || this._aoEnabled) {
|
|
179
|
+
this._blendComposer.addPass(this._blendShader);
|
|
180
|
+
}
|
|
181
|
+
// this._blendComposer.addPass(this._outputPass);
|
|
77
182
|
}
|
|
78
183
|
_updatePass() {
|
|
79
184
|
this._n8aoPass.configuration.aoRadius = this._effectController.aoRadius;
|
|
@@ -91,13 +196,12 @@ export class PostProcessingService {
|
|
|
91
196
|
this._n8aoPass.configuration.depthAwareUpsampling = this._effectController.depthAwareUpsampling;
|
|
92
197
|
this._n8aoPass.configuration.colorMultiply = this._effectController.colorMultiply;
|
|
93
198
|
this._n8aoPass.configuration.accumulate = this._effectController.accumulate;
|
|
199
|
+
this._n8aoPass.configuration.gammaCorrection = this._effectController.gammaCorrection;
|
|
94
200
|
this.render();
|
|
95
201
|
}
|
|
96
202
|
_createGuiTaaPass() {
|
|
97
|
-
this._taaPassGui = new GUI();
|
|
98
|
-
this._taaPassGui.hide();
|
|
99
203
|
const param = { TAAEnabled: '1', TAASampleLevel: 0 };
|
|
100
|
-
this.
|
|
204
|
+
this._postProcessingGui.add(param, 'TAAEnabled', {
|
|
101
205
|
'Disabled': '0',
|
|
102
206
|
'Enabled': '1'
|
|
103
207
|
}).onFinishChange(() => {
|
|
@@ -106,7 +210,7 @@ export class PostProcessingService {
|
|
|
106
210
|
}
|
|
107
211
|
this.render();
|
|
108
212
|
});
|
|
109
|
-
this.
|
|
213
|
+
this._postProcessingGui.add(param, 'TAASampleLevel', {
|
|
110
214
|
'Level 0: 1 Sample': 0,
|
|
111
215
|
'Level 1: 2 Samples': 1,
|
|
112
216
|
'Level 2: 4 Samples': 2,
|
|
@@ -119,26 +223,11 @@ export class PostProcessingService {
|
|
|
119
223
|
}
|
|
120
224
|
this.render();
|
|
121
225
|
});
|
|
122
|
-
this._taaPassGui.open();
|
|
123
|
-
}
|
|
124
|
-
setSize(width, height) {
|
|
125
|
-
this._composer.setSize(width, height);
|
|
126
|
-
}
|
|
127
|
-
render() {
|
|
128
|
-
this._composer.render();
|
|
129
|
-
}
|
|
130
|
-
showGui() {
|
|
131
|
-
this._postProcessingGui.show(true);
|
|
132
|
-
}
|
|
133
|
-
hideGui() {
|
|
134
|
-
this._postProcessingGui.hide();
|
|
135
226
|
}
|
|
136
227
|
_showHideGui(show) {
|
|
137
228
|
show ? this.showGui() : this.hideGui();
|
|
138
229
|
}
|
|
139
230
|
_createGui() {
|
|
140
|
-
this._postProcessingGui = new GUI();
|
|
141
|
-
this._postProcessingGui.hide();
|
|
142
231
|
this._postProcessingGui.add(this._effectController, 'aoSamples', 1.0, 64.0, 1.0).onChange(() => this._updatePass());
|
|
143
232
|
this._postProcessingGui.add(this._effectController, 'denoiseSamples', 1.0, 64.0, 1.0).onChange(() => this._updatePass());
|
|
144
233
|
this._postProcessingGui.add(this._effectController, 'denoiseRadius', 0.0, 24.0, 0.01).onChange(() => this._updatePass());
|
|
@@ -165,6 +254,9 @@ export class PostProcessingService {
|
|
|
165
254
|
df.updateDisplay();
|
|
166
255
|
this._updatePass();
|
|
167
256
|
});
|
|
257
|
+
const blendShaderParams = {
|
|
258
|
+
mixRatio: 0.5
|
|
259
|
+
};
|
|
168
260
|
this._postProcessingGui.add(this._effectController, 'halfRes').onChange(() => this._updatePass());
|
|
169
261
|
this._postProcessingGui.add(this._effectController, 'transparencyAware').onChange(() => this._updatePass());
|
|
170
262
|
this._postProcessingGui.add(this._effectController, 'depthAwareUpsampling').onChange(() => this._updatePass());
|
|
@@ -173,15 +265,20 @@ export class PostProcessingService {
|
|
|
173
265
|
this._postProcessingGui.addColor(this._effectController, 'color').onChange(() => this._updatePass());
|
|
174
266
|
this._postProcessingGui.add(this._effectController, 'colorMultiply').onChange(() => this._updatePass());
|
|
175
267
|
this._postProcessingGui.add(this._effectController, 'accumulate').onChange(() => this._updatePass());
|
|
268
|
+
this._postProcessingGui.add(this._effectController, 'gammaCorrection').onChange(() => this._updatePass());
|
|
176
269
|
this._postProcessingGui.add(this._effectController, 'renderMode', ['Combined', 'AO', 'No AO', 'Split', 'Split AO']).onChange(() => this._updatePass());
|
|
270
|
+
this._postProcessingGui.add(blendShaderParams, 'mixRatio', 0.0, 10.0, 0.01).onChange(() => {
|
|
271
|
+
this._blendShader.uniforms.mixRatio.value = blendShaderParams.mixRatio;
|
|
272
|
+
this.render();
|
|
273
|
+
});
|
|
177
274
|
}
|
|
178
275
|
}
|
|
179
|
-
PostProcessingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PostProcessingService, deps: [{ token: i1.ConfigurationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
276
|
+
PostProcessingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PostProcessingService, deps: [{ token: i1.ConfigurationService }, { token: i2.HomedecoratorSettingsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
180
277
|
PostProcessingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PostProcessingService, providedIn: 'root' });
|
|
181
278
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: PostProcessingService, decorators: [{
|
|
182
279
|
type: Injectable,
|
|
183
280
|
args: [{
|
|
184
281
|
providedIn: 'root'
|
|
185
282
|
}]
|
|
186
|
-
}], ctorParameters: function () { return [{ type: i1.ConfigurationService }]; } });
|
|
187
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1wcm9jZXNzaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL2NvcmUzZC9zZXJ2aWNlL3Bvc3QtcHJvY2Vzc2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUNMLEtBQUssRUFDTCxXQUFXLEVBQUUsWUFBWSxFQUN6QixhQUFhLEVBRWIsVUFBVSxFQUVWLGNBQWMsRUFBRSxlQUFlLEVBRS9CLGlCQUFpQixFQUNsQixNQUFNLE9BQU8sQ0FBQztBQUNmLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrREFBa0QsQ0FBQztBQUNoRixPQUFPLEdBQUcsTUFBTSw0Q0FBNEMsQ0FBQztBQUM3RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRTlCLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBRzNFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpREFBaUQsQ0FBQztBQUM5RSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDOzs7QUFReEUsTUFBTSxPQUFPLHFCQUFxQjtJQWdDaEMsWUFDVSxxQkFBMkM7UUFBM0MsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFzQjtRQXRCN0Msc0JBQWlCLEdBQUc7WUFDMUIsU0FBUyxFQUFFLElBQUk7WUFDZixjQUFjLEVBQUUsR0FBRztZQUNuQixhQUFhLEVBQUUsSUFBSTtZQUNuQixRQUFRLEVBQUUsR0FBRztZQUNiLGVBQWUsRUFBRSxHQUFHO1lBQ3BCLGlCQUFpQixFQUFFLEtBQUs7WUFDeEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxvQkFBb0IsRUFBRSxJQUFJO1lB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RUFBRSxDQUFDLENBQUM7UUFDckgsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3JHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLGVBQWUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUN4RyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDckcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3pKLENBQUM7O21IQTNNVSxxQkFBcUI7dUhBQXJCLHFCQUFxQixjQUZwQixNQUFNOzRGQUVQLHFCQUFxQjtrQkFIakMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgQ29sb3IsXHJcbiAgRGVwdGhGb3JtYXQsIERlcHRoVGV4dHVyZSxcclxuICBOZWFyZXN0RmlsdGVyLFxyXG4gIFBlcnNwZWN0aXZlQ2FtZXJhLFxyXG4gIFJHQkFGb3JtYXQsXHJcbiAgU2NlbmUsXHJcbiAgU1JHQkNvbG9yU3BhY2UsIFVuc2lnbmVkSW50VHlwZSxcclxuICBXZWJHTFJlbmRlcmVyLFxyXG4gIFdlYkdMUmVuZGVyVGFyZ2V0XHJcbn0gZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQge0VmZmVjdENvbXBvc2VyfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vcG9zdHByb2Nlc3NpbmcvRWZmZWN0Q29tcG9zZXInO1xyXG5pbXBvcnQgR1VJIGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9saWJzL2xpbC1ndWkubW9kdWxlLm1pbic7XHJcbmltcG9ydCB7TjhBT1Bhc3N9IGZyb20gJ244YW8nO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25EYXRhfSBmcm9tICcuLi8uLi8uLi9jb3JlL2ludGVyZmFjZS9jb25maWd1cmF0aW9uLWRhdGEuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtDb25maWd1cmF0aW9uS2V5fSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vY29uZmlndXJhdGlvbi1rZXkuZW51bSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7VEFBUmVuZGVyUGFzc30gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3Bvc3Rwcm9jZXNzaW5nL1RBQVJlbmRlclBhc3MnO1xyXG5pbXBvcnQge091dHB1dFBhc3N9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9wb3N0cHJvY2Vzc2luZy9PdXRwdXRQYXNzJztcclxuaW1wb3J0IHtSZW5kZXJQYXNzfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vcG9zdHByb2Nlc3NpbmcvUmVuZGVyUGFzcyc7XHJcbmltcG9ydCB7RlhBQVNoYWRlcn0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3NoYWRlcnMvRlhBQVNoYWRlcic7XHJcbmltcG9ydCB7U2hhZGVyUGFzc30gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3Bvc3Rwcm9jZXNzaW5nL1NoYWRlclBhc3MnO1xyXG5pbXBvcnQge1NNQUFQYXNzfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vcG9zdHByb2Nlc3NpbmcvU01BQVBhc3MnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUG9zdFByb2Nlc3NpbmdTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgcHJpdmF0ZSBfY29tcG9zZXI6IEVmZmVjdENvbXBvc2VyO1xyXG4gIHByaXZhdGUgX244YW9QYXNzOiBOOEFPUGFzcztcclxuICBwcml2YXRlIF90YWFSZW5kZXJQYXNzOiBUQUFSZW5kZXJQYXNzO1xyXG4gIHByaXZhdGUgX291dHB1dFBhc3M6IE91dHB1dFBhc3M7XHJcbiAgcHJpdmF0ZSBfcmVuZGVyUGFzczogUmVuZGVyUGFzcztcclxuICBwcml2YXRlIF9zY2VuZTogU2NlbmU7XHJcbiAgcHJpdmF0ZSBfcmVuZGVyZXI6IFdlYkdMUmVuZGVyZXI7XHJcbiAgcHJpdmF0ZSBfY2FtZXJhOiBQZXJzcGVjdGl2ZUNhbWVyYTtcclxuICBwcml2YXRlIF9yZW5kZXJUYXJnZXQ6IFdlYkdMUmVuZGVyVGFyZ2V0O1xyXG4gIHByaXZhdGUgX2VmZmVjdENvbnRyb2xsZXIgPSB7XHJcbiAgICBhb1NhbXBsZXM6IDMyLjAsXHJcbiAgICBkZW5vaXNlU2FtcGxlczogOC4wLFxyXG4gICAgZGVub2lzZVJhZGl1czogMTIuMCxcclxuICAgIGFvUmFkaXVzOiA1LjAsXHJcbiAgICBkaXN0YW5jZUZhbGxvZmY6IDEuMCxcclxuICAgIHNjcmVlblNwYWNlUmFkaXVzOiBmYWxzZSxcclxuICAgIGhhbGZSZXM6IGZhbHNlLFxyXG4gICAgZGVwdGhBd2FyZVVwc2FtcGxpbmc6IHRydWUsXHJcbiAgICB0cmFuc3BhcmVuY3lBd2FyZTogdHJ1ZSxcclxuICAgIGludGVuc2l0eTogMi41LFxyXG4gICAgcmVuZGVyTW9kZTogJ0NvbWJpbmVkJyxcclxuICAgIGNvbG9yOiBbMCwgMCwgMF0sXHJcbiAgICBjb2xvck11bHRpcGx5OiB0cnVlLFxyXG4gICAgc3RlbmNpbDogdHJ1ZSxcclxuICAgIGFjY3VtdWxhdGU6IGZhbHNlXHJcbiAgfTtcclxuICBwcml2YXRlIF9wb3N0UHJvY2Vzc2luZ0d1aTogR1VJO1xyXG4gIHByaXZhdGUgX3RhYVBhc3NHdWk6IEdVSTtcclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICB0aGlzLl9jb25maWd1cmF0aW9uU2VydmljZS5vbkNoYW5nZS5zdWJzY3JpYmUoKGNoYW5nZWQ6IENvbmZpZ3VyYXRpb25EYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKENvbmZpZ3VyYXRpb25LZXkuU2hvd1Bvc3RQcm9jZXNzaW5nU2V0dGluZ3MgaW4gY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5fc2hvd0hpZGVHdWkoY2hhbmdlZFtDb25maWd1cmF0aW9uS2V5LlNob3dQb3N0UHJvY2Vzc2luZ1NldHRpbmdzXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0KHJlbmRlcmVyOiBXZWJHTFJlbmRlcmVyLCBzY2VuZTogU2NlbmUsIGNhbWVyYTogUGVyc3BlY3RpdmVDYW1lcmEsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZW5kZXJlciA9IHJlbmRlcmVyO1xyXG4gICAgdGhpcy5fc2NlbmUgPSBzY2VuZTtcclxuICAgIHRoaXMuX2NhbWVyYSA9IGNhbWVyYTtcclxuXHJcbiAgICB0aGlzLl9yZW5kZXJUYXJnZXQgPSBuZXcgV2ViR0xSZW5kZXJUYXJnZXQod2lkdGgsIGhlaWdodCwge1xyXG4gICAgICBtaW5GaWx0ZXI6IE5lYXJlc3RGaWx0ZXIsXHJcbiAgICAgIG1hZ0ZpbHRlcjogTmVhcmVzdEZpbHRlcixcclxuICAgICAgZm9ybWF0OiBSR0JBRm9ybWF0LFxyXG4gICAgICBjb2xvclNwYWNlOiBTUkdCQ29sb3JTcGFjZVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLl9yZW5kZXJUYXJnZXQuc2FtcGxlcyA9IDQ7XHJcbiAgICB0aGlzLl9yZW5kZXJUYXJnZXQuZGVwdGhUZXh0dXJlID0gbmV3IERlcHRoVGV4dHVyZSh3aWR0aCwgaGVpZ2h0LCBVbnNpZ25lZEludFR5cGUpO1xyXG4gICAgdGhpcy5fcmVuZGVyVGFyZ2V0LmRlcHRoVGV4dHVyZS5mb3JtYXQgPSBEZXB0aEZvcm1hdDtcclxuICAgIHRoaXMuX2NvbXBvc2VyID0gbmV3IEVmZmVjdENvbXBvc2VyKHRoaXMuX3JlbmRlcmVyLCB0aGlzLl9yZW5kZXJUYXJnZXQpO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MgPSBuZXcgTjhBT1Bhc3Moc2NlbmUsIGNhbWVyYSwgd2lkdGgsIGhlaWdodCk7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmdhbW1hQ29ycmVjdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuZGVidWdNb2RlID0gdHJ1ZTtcclxuICAgIC8vIGNvbnN0IHNtYWFQYXNzID0gbmV3IFNNQUFQYXNzKHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgLy8gdGhpcy5fY29tcG9zZXIuYWRkUGFzcyhzbWFhUGFzcyk7XHJcblxyXG4gICAgLy8gY29uc3QgZnhhYVBhc3MgPSBuZXcgU2hhZGVyUGFzcyhGWEFBU2hhZGVyKTtcclxuICAgIC8vIGNvbnN0IHBpeGVsUmF0aW8gPSB0aGlzLl9yZW5kZXJlci5nZXRQaXhlbFJhdGlvKCk7XHJcbiAgICAvLyBmeGFhUGFzcy5tYXRlcmlhbC51bmlmb3Jtc1sgJ3Jlc29sdXRpb24nIF0udmFsdWUueCA9IDEgLyAod2lkdGggKiBwaXhlbFJhdGlvKTtcclxuICAgIC8vIGZ4YWFQYXNzLm1hdGVyaWFsLnVuaWZvcm1zWyAncmVzb2x1dGlvbicgXS52YWx1ZS55ID0gMSAvIChoZWlnaHQgKiBwaXhlbFJhdGlvKTtcclxuXHJcbiAgICB0aGlzLl9vdXRwdXRQYXNzID0gbmV3IE91dHB1dFBhc3MoKTtcclxuXHJcbiAgICB0aGlzLl90YWFSZW5kZXJQYXNzID0gbmV3IFRBQVJlbmRlclBhc3ModGhpcy5fc2NlbmUsIHRoaXMuX2NhbWVyYSwgMHgwMDAwMDAsIDApO1xyXG4gICAgdGhpcy5fdGFhUmVuZGVyUGFzcy51bmJpYXNlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5fdGFhUmVuZGVyUGFzcy5zYW1wbGVMZXZlbCA9IDQ7XHJcblxyXG4gICAgdGhpcy5fcmVuZGVyUGFzcyA9IG5ldyBSZW5kZXJQYXNzKHRoaXMuX3NjZW5lLCB0aGlzLl9jYW1lcmEpO1xyXG4gICAgLy8gdGhpcy5fcmVuZGVyUGFzcy5lbmFibGVkID0gZmFsc2U7XHJcblxyXG4gICAgdGhpcy5fY29tcG9zZXIuYWRkUGFzcyh0aGlzLl9yZW5kZXJQYXNzKTtcclxuICAgIHRoaXMuX2NvbXBvc2VyLmFkZFBhc3ModGhpcy5fdGFhUmVuZGVyUGFzcyk7XHJcbiAgICB0aGlzLl9jb21wb3Nlci5hZGRQYXNzKHRoaXMuX244YW9QYXNzKTtcclxuICAgIHRoaXMuX2NvbXBvc2VyLmFkZFBhc3ModGhpcy5fb3V0cHV0UGFzcyk7XHJcblxyXG4gICAgdGhpcy5fY3JlYXRlR3VpKCk7XHJcbiAgICB0aGlzLl9jcmVhdGVHdWlUYWFQYXNzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVQYXNzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5hb1JhZGl1cyA9IHRoaXMuX2VmZmVjdENvbnRyb2xsZXIuYW9SYWRpdXM7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmRpc3RhbmNlRmFsbG9mZiA9IHRoaXMuX2VmZmVjdENvbnRyb2xsZXIuZGlzdGFuY2VGYWxsb2ZmO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi50cmFuc3BhcmVuY3lBd2FyZSA9IHRoaXMuX2VmZmVjdENvbnRyb2xsZXIudHJhbnNwYXJlbmN5QXdhcmU7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmludGVuc2l0eSA9IHRoaXMuX2VmZmVjdENvbnRyb2xsZXIuaW50ZW5zaXR5O1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5hb1NhbXBsZXMgPSB0aGlzLl9lZmZlY3RDb250cm9sbGVyLmFvU2FtcGxlcztcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uZGVub2lzZVJhZGl1cyA9IHRoaXMuX2VmZmVjdENvbnRyb2xsZXIuZGVub2lzZVJhZGl1cztcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uZGVub2lzZVNhbXBsZXMgPSB0aGlzLl9lZmZlY3RDb250cm9sbGVyLmRlbm9pc2VTYW1wbGVzO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5zdGVuY2lsID0gdGhpcy5fZWZmZWN0Q29udHJvbGxlci5zdGVuY2lsO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5yZW5kZXJNb2RlID0gWydDb21iaW5lZCcsICdBTycsICdObyBBTycsICdTcGxpdCcsICdTcGxpdCBBTyddLmluZGV4T2YodGhpcy5fZWZmZWN0Q29udHJvbGxlci5yZW5kZXJNb2RlKTtcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uY29sb3IgPSBuZXcgQ29sb3IodGhpcy5fZWZmZWN0Q29udHJvbGxlci5jb2xvclswXSwgdGhpcy5fZWZmZWN0Q29udHJvbGxlci5jb2xvclsxXSwgdGhpcy5fZWZmZWN0Q29udHJvbGxlci5jb2xvclsyXSk7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLnNjcmVlblNwYWNlUmFkaXVzID0gdGhpcy5fZWZmZWN0Q29udHJvbGxlci5zY3JlZW5TcGFjZVJhZGl1cztcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uaGFsZlJlcyA9IHRoaXMuX2VmZmVjdENvbnRyb2xsZXIuaGFsZlJlcztcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uZGVwdGhBd2FyZVVwc2FtcGxpbmcgPSB0aGlzLl9lZmZlY3RDb250cm9sbGVyLmRlcHRoQXdhcmVVcHNhbXBsaW5nO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5jb2xvck11bHRpcGx5ID0gdGhpcy5fZWZmZWN0Q29udHJvbGxlci5jb2xvck11bHRpcGx5O1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5hY2N1bXVsYXRlID0gdGhpcy5fZWZmZWN0Q29udHJvbGxlci5hY2N1bXVsYXRlO1xyXG4gICAgdGhpcy5yZW5kZXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZUd1aVRhYVBhc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLl90YWFQYXNzR3VpID0gbmV3IEdVSSgpO1xyXG4gICAgdGhpcy5fdGFhUGFzc0d1aS5oaWRlKCk7XHJcbiAgICBjb25zdCBwYXJhbSA9IHsgVEFBRW5hYmxlZDogJzEnLCBUQUFTYW1wbGVMZXZlbDogMCB9O1xyXG4gICAgdGhpcy5fdGFhUGFzc0d1aS5hZGQoIHBhcmFtLCAnVEFBRW5hYmxlZCcsIHtcclxuICAgICAgJ0Rpc2FibGVkJzogJzAnLFxyXG4gICAgICAnRW5hYmxlZCc6ICcxJ1xyXG4gICAgfSApLm9uRmluaXNoQ2hhbmdlKCAoKSA9PiB7XHJcblxyXG4gICAgICBpZiAoIHRoaXMuX3RhYVJlbmRlclBhc3MgKSB7XHJcbiAgICAgICAgdGhpcy5fdGFhUmVuZGVyUGFzcy5lbmFibGVkID0gKCBwYXJhbS5UQUFFbmFibGVkID09PSAnMScgKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICAgfSApO1xyXG5cclxuICAgIHRoaXMuX3RhYVBhc3NHdWkuYWRkKCBwYXJhbSwgJ1RBQVNhbXBsZUxldmVsJywge1xyXG4gICAgICAnTGV2ZWwgMDogMSBTYW1wbGUnOiAwLFxyXG4gICAgICAnTGV2ZWwgMTogMiBTYW1wbGVzJzogMSxcclxuICAgICAgJ0xldmVsIDI6IDQgU2FtcGxlcyc6IDIsXHJcbiAgICAgICdMZXZlbCAzOiA4IFNhbXBsZXMnOiAzLFxyXG4gICAgICAnTGV2ZWwgNDogMTYgU2FtcGxlcyc6IDQsXHJcbiAgICAgICdMZXZlbCA1OiAzMiBTYW1wbGVzJzogNVxyXG4gICAgfSApLm9uRmluaXNoQ2hhbmdlKCAoKSA9PiB7XHJcblxyXG4gICAgICBpZiAoIHRoaXMuX3RhYVJlbmRlclBhc3MgKSB7XHJcblxyXG4gICAgICAgIHRoaXMuX3RhYVJlbmRlclBhc3Muc2FtcGxlTGV2ZWwgPSBwYXJhbS5UQUFTYW1wbGVMZXZlbDtcclxuXHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgIH0gKTtcclxuXHJcbiAgICB0aGlzLl90YWFQYXNzR3VpLm9wZW4oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRTaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9jb21wb3Nlci5zZXRTaXplKHdpZHRoLCBoZWlnaHQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbmRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX2NvbXBvc2VyLnJlbmRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dHdWkoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5zaG93KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhpZGVHdWkoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5oaWRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zaG93SGlkZUd1aShzaG93OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBzaG93ID8gdGhpcy5zaG93R3VpKCkgOiB0aGlzLmhpZGVHdWkoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZUd1aSgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpID0gbmV3IEdVSSgpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuaGlkZSgpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2VmZmVjdENvbnRyb2xsZXIsICdhb1NhbXBsZXMnLCAxLjAsIDY0LjAsIDEuMCkub25DaGFuZ2UoKCkgPT4gdGhpcy5fdXBkYXRlUGFzcygpKTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9lZmZlY3RDb250cm9sbGVyLCAnZGVub2lzZVNhbXBsZXMnLCAxLjAsIDY0LjAsIDEuMCkub25DaGFuZ2UoKCkgPT4gdGhpcy5fdXBkYXRlUGFzcygpKTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9lZmZlY3RDb250cm9sbGVyLCAnZGVub2lzZVJhZGl1cycsIDAuMCwgMjQuMCwgMC4wMSkub25DaGFuZ2UoKCkgPT4gdGhpcy5fdXBkYXRlUGFzcygpKTtcclxuICAgIGNvbnN0IGFvciA9IHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9lZmZlY3RDb250cm9sbGVyLCAnYW9SYWRpdXMnLCAxLjAsIDEwLjAsIDAuMDEpLm9uQ2hhbmdlKCgpID0+IHRoaXMuX3VwZGF0ZVBhc3MoKSk7XHJcbiAgICBjb25zdCBkZiA9IHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9lZmZlY3RDb250cm9sbGVyLCAnZGlzdGFuY2VGYWxsb2ZmJywgMC4wLCAxMC4wLCAwLjAxKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl91cGRhdGVQYXNzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2VmZmVjdENvbnRyb2xsZXIsICdzY3JlZW5TcGFjZVJhZGl1cycpLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9lZmZlY3RDb250cm9sbGVyLmFvUmFkaXVzID0gNDguMDtcclxuICAgICAgICB0aGlzLl9lZmZlY3RDb250cm9sbGVyLmRpc3RhbmNlRmFsbG9mZiA9IDAuMjtcclxuICAgICAgICBhb3IuX21pbiA9IDA7XHJcbiAgICAgICAgYW9yLl9tYXggPSA2NDtcclxuICAgICAgICBkZi5fbWluID0gMDtcclxuICAgICAgICBkZi5fbWF4ID0gMTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLl9lZmZlY3RDb250cm9sbGVyLmFvUmFkaXVzID0gNS4wO1xyXG4gICAgICAgIHRoaXMuX2VmZmVjdENvbnRyb2xsZXIuZGlzdGFuY2VGYWxsb2ZmID0gMS4wO1xyXG4gICAgICAgIGFvci5fbWluID0gMTtcclxuICAgICAgICBhb3IuX21heCA9IDEwO1xyXG4gICAgICAgIGRmLl9taW4gPSAwO1xyXG4gICAgICAgIGRmLl9tYXggPSAxMDtcclxuICAgICAgfVxyXG4gICAgICBhb3IudXBkYXRlRGlzcGxheSgpO1xyXG4gICAgICBkZi51cGRhdGVEaXNwbGF5KCk7XHJcbiAgICAgIHRoaXMuX3VwZGF0ZVBhc3MoKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2VmZmVjdENvbnRyb2xsZXIsICdoYWxmUmVzJykub25DaGFuZ2UoKCkgPT4gdGhpcy5fdXBkYXRlUGFzcygpKTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9lZmZlY3RDb250cm9sbGVyLCAndHJhbnNwYXJlbmN5QXdhcmUnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl91cGRhdGVQYXNzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2VmZmVjdENvbnRyb2xsZXIsICdkZXB0aEF3YXJlVXBzYW1wbGluZycpLm9uQ2hhbmdlKCgpID0+IHRoaXMuX3VwZGF0ZVBhc3MoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fZWZmZWN0Q29udHJvbGxlciwgJ3N0ZW5jaWwnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl91cGRhdGVQYXNzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2VmZmVjdENvbnRyb2xsZXIsICdpbnRlbnNpdHknLCAwLjAsIDEwLjAsIDAuMDEpLm9uQ2hhbmdlKCgpID0+IHRoaXMuX3VwZGF0ZVBhc3MoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGRDb2xvcih0aGlzLl9lZmZlY3RDb250cm9sbGVyLCAnY29sb3InKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl91cGRhdGVQYXNzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2VmZmVjdENvbnRyb2xsZXIsICdjb2xvck11bHRpcGx5Jykub25DaGFuZ2UoKCkgPT4gdGhpcy5fdXBkYXRlUGFzcygpKTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9lZmZlY3RDb250cm9sbGVyLCAnYWNjdW11bGF0ZScpLm9uQ2hhbmdlKCgpID0+IHRoaXMuX3VwZGF0ZVBhc3MoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fZWZmZWN0Q29udHJvbGxlciwgJ3JlbmRlck1vZGUnLCBbJ0NvbWJpbmVkJywgJ0FPJywgJ05vIEFPJywgJ1NwbGl0JywgJ1NwbGl0IEFPJ10pLm9uQ2hhbmdlKCgpID0+IHRoaXMuX3VwZGF0ZVBhc3MoKSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
283
|
+
}], ctorParameters: function () { return [{ type: i1.ConfigurationService }, { type: i2.HomedecoratorSettingsService }]; } });
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9zdC1wcm9jZXNzaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2xpZW50L2FwcC9wbHVnaW5zL2NvcmUzZC9zZXJ2aWNlL3Bvc3QtcHJvY2Vzc2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFxQixVQUFVLEVBQVMsY0FBYyxFQUFpQixpQkFBaUIsRUFBQyxNQUFNLE9BQU8sQ0FBQztBQUNsSixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0RBQWtELENBQUM7QUFDaEYsT0FBTyxHQUFHLE1BQU0sNENBQTRDLENBQUM7QUFDN0QsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUU5QixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUkzRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sOENBQThDLENBQUM7QUFDeEUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHdDQUF3QyxDQUFDOzs7O0FBTW5FLE1BQU0sT0FBTyxxQkFBcUI7SUErQ2hDLFlBQ1UscUJBQTJDLEVBQzNDLGdCQUE4QztRQUQ5QywwQkFBcUIsR0FBckIscUJBQXFCLENBQXNCO1FBQzNDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBOEI7UUF2QmhELHNCQUFpQixHQUFHO1lBQzFCLFNBQVMsRUFBRSxJQUFJO1lBQ2YsY0FBYyxFQUFFLEdBQUc7WUFDbkIsYUFBYSxFQUFFLElB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QUFFLENBQUMsQ0FBQztRQUN4RyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxZQUFZLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDckcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsaUJBQWlCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDMUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZKLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUN4RixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLGlCQUFpQixDQUFDLFFBQVEsQ0FBQztZQUN2RSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzttSEF4VFUscUJBQXFCO3VIQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs0RkFFUCxxQkFBcUI7a0JBSGpDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvbG9yLCBIYWxmRmxvYXRUeXBlLCBOZWFyZXN0RmlsdGVyLCBQZXJzcGVjdGl2ZUNhbWVyYSwgUkdCQUZvcm1hdCwgU2NlbmUsIFNSR0JDb2xvclNwYWNlLCBXZWJHTFJlbmRlcmVyLCBXZWJHTFJlbmRlclRhcmdldH0gZnJvbSAndGhyZWUnO1xyXG5pbXBvcnQge0VmZmVjdENvbXBvc2VyfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vcG9zdHByb2Nlc3NpbmcvRWZmZWN0Q29tcG9zZXInO1xyXG5pbXBvcnQgR1VJIGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9saWJzL2xpbC1ndWkubW9kdWxlLm1pbic7XHJcbmltcG9ydCB7TjhBT1Bhc3N9IGZyb20gJ244YW8nO1xyXG5pbXBvcnQge0NvbmZpZ3VyYXRpb25EYXRhfSBmcm9tICcuLi8uLi8uLi9jb3JlL2ludGVyZmFjZS9jb25maWd1cmF0aW9uLWRhdGEuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtDb25maWd1cmF0aW9uS2V5fSBmcm9tICcuLi8uLi8uLi9jb3JlL2VudW0vY29uZmlndXJhdGlvbi1rZXkuZW51bSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtDb25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2NvbmZpZ3VyYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7VEFBUmVuZGVyUGFzc30gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3Bvc3Rwcm9jZXNzaW5nL1RBQVJlbmRlclBhc3MnO1xyXG5pbXBvcnQge091dHB1dFBhc3N9IGZyb20gJ3RocmVlL2V4YW1wbGVzL2pzbS9wb3N0cHJvY2Vzc2luZy9PdXRwdXRQYXNzJztcclxuaW1wb3J0IHtSZW5kZXJQYXNzfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vcG9zdHByb2Nlc3NpbmcvUmVuZGVyUGFzcyc7XHJcbmltcG9ydCB7RlhBQVNoYWRlcn0gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3NoYWRlcnMvRlhBQVNoYWRlcic7XHJcbmltcG9ydCB7U2hhZGVyUGFzc30gZnJvbSAndGhyZWUvZXhhbXBsZXMvanNtL3Bvc3Rwcm9jZXNzaW5nL1NoYWRlclBhc3MnO1xyXG5pbXBvcnQge0JsZW5kU2hhZGVyfSBmcm9tICd0aHJlZS9leGFtcGxlcy9qc20vc2hhZGVycy9CbGVuZFNoYWRlcic7XHJcbmltcG9ydCB7SG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9zZXJ2aWNlL2hvbWVkZWNvcmF0b3Itc2V0dGluZ3Muc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQb3N0UHJvY2Vzc2luZ1NlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIF9hb0VuYWJsZWQ6IGJvb2xlYW47XHJcbiAgcHJpdmF0ZSBfYWFFbmFibGVkOiBib29sZWFuO1xyXG5cclxuICBwcml2YXRlIF9hYUNvbXBvc2VyOiBFZmZlY3RDb21wb3NlcjtcclxuICBwcml2YXRlIF9hb0NvbXBvc2VyOiBFZmZlY3RDb21wb3NlcjtcclxuICBwcml2YXRlIF9ibGVuZENvbXBvc2VyOiBFZmZlY3RDb21wb3NlcjtcclxuICBwcml2YXRlIF9uOGFvUGFzczogTjhBT1Bhc3M7XHJcbiAgcHJpdmF0ZSBfdGFhUmVuZGVyUGFzczogVEFBUmVuZGVyUGFzcztcclxuICAvLyBwcml2YXRlIF9hYU91dHB1dFBhc3M6IE91dHB1dFBhc3M7XHJcbiAgcHJpdmF0ZSBfcmVuZGVyUGFzczogUmVuZGVyUGFzcztcclxuICBwcml2YXRlIF9vdXRwdXRQYXNzOiBPdXRwdXRQYXNzO1xyXG4gIC8vIHByaXZhdGUgX2FvUmVuZGVyUGFzczogUmVuZGVyUGFzcztcclxuICBwcml2YXRlIF9meGFhUGFzczogU2hhZGVyUGFzcztcclxuICAvLyBwcml2YXRlIF9zYW9QYXNzOiBTQU9QYXNzO1xyXG4gIC8vIHByaXZhdGUgX3NzYW9QYXNzOiBTU0FPUGFzcztcclxuICBwcml2YXRlIF9zY2VuZTogU2NlbmU7XHJcbiAgcHJpdmF0ZSBfcmVuZGVyZXI6IFdlYkdMUmVuZGVyZXI7XHJcbiAgcHJpdmF0ZSBfY2FtZXJhOiBQZXJzcGVjdGl2ZUNhbWVyYTtcclxuICBwcml2YXRlIF9hYVJlbmRlclRhcmdldDogV2ViR0xSZW5kZXJUYXJnZXQ7XHJcbiAgcHJpdmF0ZSBfYW9SZW5kZXJUYXJnZXQ6IFdlYkdMUmVuZGVyVGFyZ2V0O1xyXG4gIHByaXZhdGUgX2JsZW5kU2hhZGVyOiBTaGFkZXJQYXNzO1xyXG4gIHByaXZhdGUgX3dpZHRoOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBfaGVpZ2h0OiBudW1iZXI7XHJcblxyXG4gIHByaXZhdGUgX2VmZmVjdENvbnRyb2xsZXIgPSB7XHJcbiAgICBhb1NhbXBsZXM6IDMyLjAsXHJcbiAgICBkZW5vaXNlU2FtcGxlczogOC4wLFxyXG4gICAgZGVub2lzZVJhZGl1czogMTIuMCxcclxuICAgIGFvUmFkaXVzOiA1LjAsXHJcbiAgICBkaXN0YW5jZUZhbGxvZmY6IDEuMCxcclxuICAgIHNjcmVlblNwYWNlUmFkaXVzOiBmYWxzZSxcclxuICAgIGhhbGZSZXM6IGZhbHNlLFxyXG4gICAgZGVwdGhBd2FyZVVwc2FtcGxpbmc6IHRydWUsXHJcbiAgICB0cmFuc3BhcmVuY3lBd2FyZTogdHJ1ZSxcclxuICAgIGludGVuc2l0eTogMi41LFxyXG4gICAgcmVuZGVyTW9kZTogJ0NvbWJpbmVkJyxcclxuICAgIGNvbG9yOiBbMCwgMCwgMF0sXHJcbiAgICBjb2xvck11bHRpcGx5OiB0cnVlLFxyXG4gICAgc3RlbmNpbDogdHJ1ZSxcclxuICAgIGFjY3VtdWxhdGU6IGZhbHNlLFxyXG4gICAgZ2FtbWFDb3JyZWN0aW9uOiBmYWxzZVxyXG4gIH07XHJcbiAgcHJpdmF0ZSBfcG9zdFByb2Nlc3NpbmdHdWk6IEdVSTtcclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgX2NvbmZpZ3VyYXRpb25TZXJ2aWNlOiBDb25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NldHRpbmdzU2VydmljZTogSG9tZWRlY29yYXRvclNldHRpbmdzU2VydmljZVxyXG4gICkge1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICB0aGlzLl9jb25maWd1cmF0aW9uU2VydmljZS5vbkNoYW5nZS5zdWJzY3JpYmUoKGNoYW5nZWQ6IENvbmZpZ3VyYXRpb25EYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKENvbmZpZ3VyYXRpb25LZXkuU2hvd1Bvc3RQcm9jZXNzaW5nU2V0dGluZ3MgaW4gY2hhbmdlZCkge1xyXG4gICAgICAgICAgdGhpcy5fc2hvd0hpZGVHdWkoY2hhbmdlZFtDb25maWd1cmF0aW9uS2V5LlNob3dQb3N0UHJvY2Vzc2luZ1NldHRpbmdzXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KSxcclxuICAgICAgdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzTG9hZGVkLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fYW9FbmFibGVkID0gdGhpcy5fc2V0dGluZ3NTZXJ2aWNlLnNldHRpbmdzLm9wdGlvbnMuYW9FbmFibGVkO1xyXG4gICAgICAgIHRoaXMuX2FhRW5hYmxlZCA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLmFhRW5hYmxlZDtcclxuICAgICAgfSksXHJcbiAgICAgIHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5nc0NoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5fYW9FbmFibGVkICE9PSB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Mub3B0aW9ucy5hb0VuYWJsZWQgfHwgdGhpcy5fYWFFbmFibGVkICE9PSB0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Mub3B0aW9ucy5hYUVuYWJsZWQpIHtcclxuICAgICAgICAgIHRoaXMuX2FvRW5hYmxlZCA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLmFvRW5hYmxlZDtcclxuICAgICAgICAgIHRoaXMuX2FhRW5hYmxlZCA9IHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLmFhRW5hYmxlZDtcclxuICAgICAgICAgIHRoaXMuX2luaXRDb21wb3NlcnMoKTtcclxuICAgICAgICAgIHRoaXMucmVuZGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbml0KHJlbmRlcmVyOiBXZWJHTFJlbmRlcmVyLCBzY2VuZTogU2NlbmUsIGNhbWVyYTogUGVyc3BlY3RpdmVDYW1lcmEsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9yZW5kZXJlciA9IHJlbmRlcmVyO1xyXG4gICAgdGhpcy5fc2NlbmUgPSBzY2VuZTtcclxuICAgIHRoaXMuX2NhbWVyYSA9IGNhbWVyYTtcclxuICAgIHRoaXMuX3dpZHRoID0gd2lkdGg7XHJcbiAgICB0aGlzLl9oZWlnaHQgPSBoZWlnaHQ7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aSA9IG5ldyBHVUkoKTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmhpZGUoKTtcclxuICAgIHRoaXMuX3JlbmRlclBhc3MgPSBuZXcgUmVuZGVyUGFzcyh0aGlzLl9zY2VuZSwgdGhpcy5fY2FtZXJhKTtcclxuICAgIHRoaXMuX291dHB1dFBhc3MgPSBuZXcgT3V0cHV0UGFzcygpO1xyXG4gICAgdGhpcy5faW5pdENvbXBvc2VycygpO1xyXG4gICAgdGhpcy5fY3JlYXRlR3VpKCk7XHJcbiAgICAvLyB0aGlzLl9jcmVhdGVHdWlUYWFQYXNzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0U2l6ZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2FvQ29tcG9zZXIpIHtcclxuICAgICAgdGhpcy5fYW9Db21wb3Nlci5zZXRTaXplKHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2FhQ29tcG9zZXIpIHtcclxuICAgICAgdGhpcy5fYWFDb21wb3Nlci5zZXRTaXplKHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX2JsZW5kQ29tcG9zZXIpIHtcclxuICAgICAgdGhpcy5fYmxlbmRDb21wb3Nlci5zZXRTaXplKHdpZHRoLCBoZWlnaHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbmRlcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9zZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3Mub3B0aW9ucy5hYUVuYWJsZWQgJiYgdGhpcy5fYWFDb21wb3Nlcikge1xyXG4gICAgICB0aGlzLl9hYUNvbXBvc2VyLnJlbmRlcigpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuX3NldHRpbmdzU2VydmljZS5zZXR0aW5ncy5vcHRpb25zLmFvRW5hYmxlZCAmJiB0aGlzLl9hb0NvbXBvc2VyKSB7XHJcbiAgICAgIHRoaXMuX2FvQ29tcG9zZXIucmVuZGVyKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5fYmxlbmRDb21wb3Nlcikge1xyXG4gICAgICB0aGlzLl9ibGVuZENvbXBvc2VyLnJlbmRlcigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNob3dHdWkoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5zaG93KHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhpZGVHdWkoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5oaWRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9pbml0Q29tcG9zZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5faW5pdEFhQ29tcG9zZXIoKTtcclxuICAgIHRoaXMuX2luaXRBb0NvbXBvc2VyKCk7XHJcbiAgICB0aGlzLl9pbml0QmxlbmRDb21wb3NlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdEFhQ29tcG9zZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fYWFDb21wb3Nlcikge1xyXG4gICAgICB0aGlzLl9hYUNvbXBvc2VyLmRpc3Bvc2UoKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5fYWFFbmFibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2FhUmVuZGVyVGFyZ2V0ID0gbmV3IFdlYkdMUmVuZGVyVGFyZ2V0KHRoaXMuX3dpZHRoLCB0aGlzLl9oZWlnaHQsIHtcclxuICAgICAgc2FtcGxlczogNCxcclxuICAgICAgdHlwZTogSGFsZkZsb2F0VHlwZSxcclxuICAgICAgbWluRmlsdGVyOiBOZWFyZXN0RmlsdGVyLFxyXG4gICAgICBtYWdGaWx0ZXI6IE5lYXJlc3RGaWx0ZXIsXHJcbiAgICAgIGZvcm1hdDogUkdCQUZvcm1hdCxcclxuICAgICAgY29sb3JTcGFjZTogU1JHQkNvbG9yU3BhY2VcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fYWFDb21wb3NlciA9IG5ldyBFZmZlY3RDb21wb3Nlcih0aGlzLl9yZW5kZXJlciwgdGhpcy5fYWFSZW5kZXJUYXJnZXQpO1xyXG4gICAgdGhpcy5fYWFDb21wb3Nlci5yZW5kZXJUb1NjcmVlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5fZnhhYVBhc3MgPSBuZXcgU2hhZGVyUGFzcyhGWEFBU2hhZGVyKTtcclxuICAgIGNvbnN0IHBpeGVsUmF0aW8gPSB0aGlzLl9yZW5kZXJlci5nZXRQaXhlbFJhdGlvKCk7XHJcbiAgICAvLyB0aGlzLl9meGFhUGFzcy5tYXRlcmlhbC51bmlmb3Jtc1sgJ3Jlc29sdXRpb24nIF0udmFsdWUueCA9IDEgLyAodGhpcy5fd2lkdGggKiBwaXhlbFJhdGlvKTtcclxuICAgIC8vIHRoaXMuX2Z4YWFQYXNzLm1hdGVyaWFsLnVuaWZvcm1zWyAncmVzb2x1dGlvbicgXS52YWx1ZS55ID0gMSAvICh0aGlzLl9oZWlnaHQgKiBwaXhlbFJhdGlvKTtcclxuICAgIHRoaXMuX2Z4YWFQYXNzLnVuaWZvcm1zWyAncmVzb2x1dGlvbicgXS52YWx1ZS54ID0gMSAvICh0aGlzLl93aWR0aCAqIHBpeGVsUmF0aW8pO1xyXG4gICAgdGhpcy5fZnhhYVBhc3MudW5pZm9ybXNbICdyZXNvbHV0aW9uJyBdLnZhbHVlLnkgPSAxIC8gKHRoaXMuX2hlaWdodCAqIHBpeGVsUmF0aW8pO1xyXG5cclxuXHJcbiAgICAvLyB0aGlzLl90YWFSZW5kZXJQYXNzID0gbmV3IFRBQVJlbmRlclBhc3ModGhpcy5fc2NlbmUsIHRoaXMuX2NhbWVyYSwgMHgwMDAwMDAsIDApO1xyXG4gICAgLy8gdGhpcy5fdGFhUmVuZGVyUGFzcy51bmJpYXNlZCA9IHRydWU7XHJcbiAgICAvLyB0aGlzLl90YWFSZW5kZXJQYXNzLnNhbXBsZUxldmVsID0gNDtcclxuXHJcbiAgICB0aGlzLl9hYUNvbXBvc2VyLmFkZFBhc3ModGhpcy5fcmVuZGVyUGFzcyk7XHJcbiAgICAvLyB0aGlzLl9hYUNvbXBvc2VyLmFkZFBhc3ModGhpcy5fdGFhUmVuZGVyUGFzcyk7XHJcbiAgICB0aGlzLl9hYUNvbXBvc2VyLmFkZFBhc3ModGhpcy5fZnhhYVBhc3MpO1xyXG4gICAgdGhpcy5fYWFDb21wb3Nlci5hZGRQYXNzKHRoaXMuX291dHB1dFBhc3MpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdEFvQ29tcG9zZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fYW9Db21wb3Nlcikge1xyXG4gICAgICB0aGlzLl9hb0NvbXBvc2VyLmRpc3Bvc2UoKTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5fYW9FbmFibGVkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2FvUmVuZGVyVGFyZ2V0ID0gbmV3IFdlYkdMUmVuZGVyVGFyZ2V0KHRoaXMuX3dpZHRoLCB0aGlzLl9oZWlnaHQsIHtcclxuICAgICAgc2FtcGxlczogNCxcclxuICAgICAgdHlwZTogSGFsZkZsb2F0VHlwZSxcclxuICAgICAgbWluRmlsdGVyOiBOZWFyZXN0RmlsdGVyLFxyXG4gICAgICBtYWdGaWx0ZXI6IE5lYXJlc3RGaWx0ZXIsXHJcbiAgICAgIGZvcm1hdDogUkdCQUZvcm1hdCxcclxuICAgICAgY29sb3JTcGFjZTogU1JHQkNvbG9yU3BhY2VcclxuICAgIH0pO1xyXG4gICAgdGhpcy5fYW9Db21wb3NlciA9IG5ldyBFZmZlY3RDb21wb3Nlcih0aGlzLl9yZW5kZXJlciwgdGhpcy5fYW9SZW5kZXJUYXJnZXQpO1xyXG4gICAgdGhpcy5fYW9Db21wb3Nlci5yZW5kZXJUb1NjcmVlbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MgPSBuZXcgTjhBT1Bhc3ModGhpcy5fc2NlbmUsIHRoaXMuX2NhbWVyYSwgdGhpcy5fd2lkdGgsIHRoaXMuX2hlaWdodCk7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmdhbW1hQ29ycmVjdGlvbiA9IGZhbHNlO1xyXG4gICAgLy8gdGhpcy5fbjhhb1Bhc3MuZGVidWdNb2RlID0gdHJ1ZTtcclxuXHJcbiAgICAvLyB0aGlzLl9hb0NvbXBvc2VyLmFkZFBhc3ModGhpcy5fcmVuZGVyUGFzcyk7XHJcbiAgICB0aGlzLl9hb0NvbXBvc2VyLmFkZFBhc3ModGhpcy5fbjhhb1Bhc3MpO1xyXG4gICAgdGhpcy5fYW9Db21wb3Nlci5hZGRQYXNzKHRoaXMuX291dHB1dFBhc3MpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfaW5pdEJsZW5kQ29tcG9zZXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fYmxlbmRTaGFkZXIpIHtcclxuICAgICAgdGhpcy5fYmxlbmRTaGFkZXIuZGlzcG9zZSgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fYmxlbmRTaGFkZXIgPSBuZXcgU2hhZGVyUGFzcyhCbGVuZFNoYWRlcik7XHJcbiAgICBpZiAodGhpcy5fYWFFbmFibGVkICYmIHRoaXMuX2FvRW5hYmxlZCkge1xyXG4gICAgICB0aGlzLl9ibGVuZFNoYWRlci51bmlmb3Jtcy50RGlmZnVzZTEudmFsdWUgPSB0aGlzLl9hYVJlbmRlclRhcmdldC50ZXh0dXJlO1xyXG4gICAgICB0aGlzLl9ibGVuZFNoYWRlci51bmlmb3Jtcy50RGlmZnVzZTIudmFsdWUgPSB0aGlzLl9hb1JlbmRlclRhcmdldC50ZXh0dXJlO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLl9hb0VuYWJsZWQpIHtcclxuICAgICAgdGhpcy5fYmxlbmRTaGFkZXIudW5pZm9ybXMudERpZmZ1c2UxLnZhbHVlID0gdGhpcy5fYW9SZW5kZXJUYXJnZXQudGV4dHVyZTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5fYWFFbmFibGVkKSB7XHJcbiAgICAgIHRoaXMuX2JsZW5kU2hhZGVyLnVuaWZvcm1zLnREaWZmdXNlMS52YWx1ZSA9IHRoaXMuX2FhUmVuZGVyVGFyZ2V0LnRleHR1cmU7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9ibGVuZFNoYWRlci51bmlmb3Jtcy5taXhSYXRpby52YWx1ZSA9IDAuMjtcclxuXHJcbiAgICB0aGlzLl9ibGVuZENvbXBvc2VyID0gbmV3IEVmZmVjdENvbXBvc2VyKHRoaXMuX3JlbmRlcmVyKTtcclxuICAgIHRoaXMuX2JsZW5kQ29tcG9zZXIucmVuZGVyVG9TY3JlZW4gPSB0cnVlO1xyXG4gICAgdGhpcy5fYmxlbmRDb21wb3Nlci5hZGRQYXNzKHRoaXMuX3JlbmRlclBhc3MpO1xyXG4gICAgaWYgKHRoaXMuX2FhRW5hYmxlZCB8fCB0aGlzLl9hb0VuYWJsZWQpIHtcclxuICAgICAgdGhpcy5fYmxlbmRDb21wb3Nlci5hZGRQYXNzKHRoaXMuX2JsZW5kU2hhZGVyKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMuX2JsZW5kQ29tcG9zZXIuYWRkUGFzcyh0aGlzLl9vdXRwdXRQYXNzKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZVBhc3MoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmFvUmFkaXVzID0gdGhpcy5fZWZmZWN0Q29udHJvbGxlci5hb1JhZGl1cztcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uZGlzdGFuY2VGYWxsb2ZmID0gdGhpcy5fZWZmZWN0Q29udHJvbGxlci5kaXN0YW5jZUZhbGxvZmY7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLnRyYW5zcGFyZW5jeUF3YXJlID0gdGhpcy5fZWZmZWN0Q29udHJvbGxlci50cmFuc3BhcmVuY3lBd2FyZTtcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uaW50ZW5zaXR5ID0gdGhpcy5fZWZmZWN0Q29udHJvbGxlci5pbnRlbnNpdHk7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmFvU2FtcGxlcyA9IHRoaXMuX2VmZmVjdENvbnRyb2xsZXIuYW9TYW1wbGVzO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5kZW5vaXNlUmFkaXVzID0gdGhpcy5fZWZmZWN0Q29udHJvbGxlci5kZW5vaXNlUmFkaXVzO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5kZW5vaXNlU2FtcGxlcyA9IHRoaXMuX2VmZmVjdENvbnRyb2xsZXIuZGVub2lzZVNhbXBsZXM7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLnN0ZW5jaWwgPSB0aGlzLl9lZmZlY3RDb250cm9sbGVyLnN0ZW5jaWw7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLnJlbmRlck1vZGUgPSBbJ0NvbWJpbmVkJywgJ0FPJywgJ05vIEFPJywgJ1NwbGl0JywgJ1NwbGl0IEFPJ10uaW5kZXhPZih0aGlzLl9lZmZlY3RDb250cm9sbGVyLnJlbmRlck1vZGUpO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5jb2xvciA9IG5ldyBDb2xvcih0aGlzLl9lZmZlY3RDb250cm9sbGVyLmNvbG9yWzBdLCB0aGlzLl9lZmZlY3RDb250cm9sbGVyLmNvbG9yWzFdLCB0aGlzLl9lZmZlY3RDb250cm9sbGVyLmNvbG9yWzJdKTtcclxuICAgIHRoaXMuX244YW9QYXNzLmNvbmZpZ3VyYXRpb24uc2NyZWVuU3BhY2VSYWRpdXMgPSB0aGlzLl9lZmZlY3RDb250cm9sbGVyLnNjcmVlblNwYWNlUmFkaXVzO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5oYWxmUmVzID0gdGhpcy5fZWZmZWN0Q29udHJvbGxlci5oYWxmUmVzO1xyXG4gICAgdGhpcy5fbjhhb1Bhc3MuY29uZmlndXJhdGlvbi5kZXB0aEF3YXJlVXBzYW1wbGluZyA9IHRoaXMuX2VmZmVjdENvbnRyb2xsZXIuZGVwdGhBd2FyZVVwc2FtcGxpbmc7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmNvbG9yTXVsdGlwbHkgPSB0aGlzLl9lZmZlY3RDb250cm9sbGVyLmNvbG9yTXVsdGlwbHk7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmFjY3VtdWxhdGUgPSB0aGlzLl9lZmZlY3RDb250cm9sbGVyLmFjY3VtdWxhdGU7XHJcbiAgICB0aGlzLl9uOGFvUGFzcy5jb25maWd1cmF0aW9uLmdhbW1hQ29ycmVjdGlvbiA9IHRoaXMuX2VmZmVjdENvbnRyb2xsZXIuZ2FtbWFDb3JyZWN0aW9uO1xyXG4gICAgdGhpcy5yZW5kZXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZUd1aVRhYVBhc3MoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXJhbSA9IHsgVEFBRW5hYmxlZDogJzEnLCBUQUFTYW1wbGVMZXZlbDogMCB9O1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKCBwYXJhbSwgJ1RBQUVuYWJsZWQnLCB7XHJcbiAgICAgICdEaXNhYmxlZCc6ICcwJyxcclxuICAgICAgJ0VuYWJsZWQnOiAnMSdcclxuICAgIH0gKS5vbkZpbmlzaENoYW5nZSggKCkgPT4ge1xyXG5cclxuICAgICAgaWYgKCB0aGlzLl90YWFSZW5kZXJQYXNzICkge1xyXG4gICAgICAgIHRoaXMuX3RhYVJlbmRlclBhc3MuZW5hYmxlZCA9ICggcGFyYW0uVEFBRW5hYmxlZCA9PT0gJzEnICk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgIH0gKTtcclxuXHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQoIHBhcmFtLCAnVEFBU2FtcGxlTGV2ZWwnLCB7XHJcbiAgICAgICdMZXZlbCAwOiAxIFNhbXBsZSc6IDAsXHJcbiAgICAgICdMZXZlbCAxOiAyIFNhbXBsZXMnOiAxLFxyXG4gICAgICAnTGV2ZWwgMjogNCBTYW1wbGVzJzogMixcclxuICAgICAgJ0xldmVsIDM6IDggU2FtcGxlcyc6IDMsXHJcbiAgICAgICdMZXZlbCA0OiAxNiBTYW1wbGVzJzogNCxcclxuICAgICAgJ0xldmVsIDU6IDMyIFNhbXBsZXMnOiA1XHJcbiAgICB9ICkub25GaW5pc2hDaGFuZ2UoICgpID0+IHtcclxuXHJcbiAgICAgIGlmICggdGhpcy5fdGFhUmVuZGVyUGFzcyApIHtcclxuXHJcbiAgICAgICAgdGhpcy5fdGFhUmVuZGVyUGFzcy5zYW1wbGVMZXZlbCA9IHBhcmFtLlRBQVNhbXBsZUxldmVsO1xyXG5cclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJlbmRlcigpO1xyXG4gICAgfSApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2hvd0hpZGVHdWkoc2hvdzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgc2hvdyA/IHRoaXMuc2hvd0d1aSgpIDogdGhpcy5oaWRlR3VpKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVHdWkoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fZWZmZWN0Q29udHJvbGxlciwgJ2FvU2FtcGxlcycsIDEuMCwgNjQuMCwgMS4wKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl91cGRhdGVQYXNzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2VmZmVjdENvbnRyb2xsZXIsICdkZW5vaXNlU2FtcGxlcycsIDEuMCwgNjQuMCwgMS4wKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl91cGRhdGVQYXNzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2VmZmVjdENvbnRyb2xsZXIsICdkZW5vaXNlUmFkaXVzJywgMC4wLCAyNC4wLCAwLjAxKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl91cGRhdGVQYXNzKCkpO1xyXG4gICAgY29uc3QgYW9yID0gdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2VmZmVjdENvbnRyb2xsZXIsICdhb1JhZGl1cycsIDEuMCwgMTAuMCwgMC4wMSkub25DaGFuZ2UoKCkgPT4gdGhpcy5fdXBkYXRlUGFzcygpKTtcclxuICAgIGNvbnN0IGRmID0gdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2VmZmVjdENvbnRyb2xsZXIsICdkaXN0YW5jZUZhbGxvZmYnLCAwLjAsIDEwLjAsIDAuMDEpLm9uQ2hhbmdlKCgpID0+IHRoaXMuX3VwZGF0ZVBhc3MoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fZWZmZWN0Q29udHJvbGxlciwgJ3NjcmVlblNwYWNlUmFkaXVzJykub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX2VmZmVjdENvbnRyb2xsZXIuYW9SYWRpdXMgPSA0OC4wO1xyXG4gICAgICAgIHRoaXMuX2VmZmVjdENvbnRyb2xsZXIuZGlzdGFuY2VGYWxsb2ZmID0gMC4yO1xyXG4gICAgICAgIGFvci5fbWluID0gMDtcclxuICAgICAgICBhb3IuX21heCA9IDY0O1xyXG4gICAgICAgIGRmLl9taW4gPSAwO1xyXG4gICAgICAgIGRmLl9tYXggPSAxO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2VmZmVjdENvbnRyb2xsZXIuYW9SYWRpdXMgPSA1LjA7XHJcbiAgICAgICAgdGhpcy5fZWZmZWN0Q29udHJvbGxlci5kaXN0YW5jZUZhbGxvZmYgPSAxLjA7XHJcbiAgICAgICAgYW9yLl9taW4gPSAxO1xyXG4gICAgICAgIGFvci5fbWF4ID0gMTA7XHJcbiAgICAgICAgZGYuX21pbiA9IDA7XHJcbiAgICAgICAgZGYuX21heCA9IDEwO1xyXG4gICAgICB9XHJcbiAgICAgIGFvci51cGRhdGVEaXNwbGF5KCk7XHJcbiAgICAgIGRmLnVwZGF0ZURpc3BsYXkoKTtcclxuICAgICAgdGhpcy5fdXBkYXRlUGFzcygpO1xyXG4gICAgfSk7XHJcbiAgICBjb25zdCBibGVuZFNoYWRlclBhcmFtcyA9IHtcclxuICAgICAgbWl4UmF0aW86IDAuNVxyXG4gICAgfTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9lZmZlY3RDb250cm9sbGVyLCAnaGFsZlJlcycpLm9uQ2hhbmdlKCgpID0+IHRoaXMuX3VwZGF0ZVBhc3MoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fZWZmZWN0Q29udHJvbGxlciwgJ3RyYW5zcGFyZW5jeUF3YXJlJykub25DaGFuZ2UoKCkgPT4gdGhpcy5fdXBkYXRlUGFzcygpKTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9lZmZlY3RDb250cm9sbGVyLCAnZGVwdGhBd2FyZVVwc2FtcGxpbmcnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl91cGRhdGVQYXNzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2VmZmVjdENvbnRyb2xsZXIsICdzdGVuY2lsJykub25DaGFuZ2UoKCkgPT4gdGhpcy5fdXBkYXRlUGFzcygpKTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9lZmZlY3RDb250cm9sbGVyLCAnaW50ZW5zaXR5JywgMC4wLCAxMC4wLCAwLjAxKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl91cGRhdGVQYXNzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkQ29sb3IodGhpcy5fZWZmZWN0Q29udHJvbGxlciwgJ2NvbG9yJykub25DaGFuZ2UoKCkgPT4gdGhpcy5fdXBkYXRlUGFzcygpKTtcclxuICAgIHRoaXMuX3Bvc3RQcm9jZXNzaW5nR3VpLmFkZCh0aGlzLl9lZmZlY3RDb250cm9sbGVyLCAnY29sb3JNdWx0aXBseScpLm9uQ2hhbmdlKCgpID0+IHRoaXMuX3VwZGF0ZVBhc3MoKSk7XHJcbiAgICB0aGlzLl9wb3N0UHJvY2Vzc2luZ0d1aS5hZGQodGhpcy5fZWZmZWN0Q29udHJvbGxlciwgJ2FjY3VtdWxhdGUnKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl91cGRhdGVQYXNzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2VmZmVjdENvbnRyb2xsZXIsICdnYW1tYUNvcnJlY3Rpb24nKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl91cGRhdGVQYXNzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKHRoaXMuX2VmZmVjdENvbnRyb2xsZXIsICdyZW5kZXJNb2RlJywgWydDb21iaW5lZCcsICdBTycsICdObyBBTycsICdTcGxpdCcsICdTcGxpdCBBTyddKS5vbkNoYW5nZSgoKSA9PiB0aGlzLl91cGRhdGVQYXNzKCkpO1xyXG4gICAgdGhpcy5fcG9zdFByb2Nlc3NpbmdHdWkuYWRkKGJsZW5kU2hhZGVyUGFyYW1zLCAnbWl4UmF0aW8nLCAwLjAsIDEwLjAsIDAuMDEpLm9uQ2hhbmdlKCgpID0+IHtcclxuICAgICAgdGhpcy5fYmxlbmRTaGFkZXIudW5pZm9ybXMubWl4UmF0aW8udmFsdWUgPSBibGVuZFNoYWRlclBhcmFtcy5taXhSYXRpbztcclxuICAgICAgdGhpcy5yZW5kZXIoKTtcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|