@aws-cdk/aws-medialive-alpha 2.268.0-alpha.0

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.
Files changed (70) hide show
  1. package/.jsii +60888 -0
  2. package/.jsii.tabl.json.gz +0 -0
  3. package/.warnings.jsii.js +524 -0
  4. package/LICENSE +201 -0
  5. package/NOTICE +2 -0
  6. package/README.md +1297 -0
  7. package/grants.json +27 -0
  8. package/lib/audio-codec-settings.d.ts +901 -0
  9. package/lib/audio-codec-settings.js +1098 -0
  10. package/lib/audio-selector.d.ts +170 -0
  11. package/lib/audio-selector.js +306 -0
  12. package/lib/avail-settings.d.ts +231 -0
  13. package/lib/avail-settings.js +226 -0
  14. package/lib/caption-selector.d.ts +234 -0
  15. package/lib/caption-selector.js +413 -0
  16. package/lib/caption-settings.d.ts +349 -0
  17. package/lib/caption-settings.js +482 -0
  18. package/lib/channel-features.d.ts +106 -0
  19. package/lib/channel-features.js +85 -0
  20. package/lib/channel-placement-group.d.ts +73 -0
  21. package/lib/channel-placement-group.js +132 -0
  22. package/lib/channel.d.ts +687 -0
  23. package/lib/channel.js +1096 -0
  24. package/lib/cluster.d.ts +129 -0
  25. package/lib/cluster.js +158 -0
  26. package/lib/color-correction.d.ts +39 -0
  27. package/lib/color-correction.js +29 -0
  28. package/lib/destinations.d.ts +242 -0
  29. package/lib/destinations.js +455 -0
  30. package/lib/encode-configuration.d.ts +615 -0
  31. package/lib/encode-configuration.js +629 -0
  32. package/lib/enums.d.ts +698 -0
  33. package/lib/enums.js +1045 -0
  34. package/lib/file-location.d.ts +65 -0
  35. package/lib/file-location.js +150 -0
  36. package/lib/framerate.d.ts +31 -0
  37. package/lib/framerate.js +71 -0
  38. package/lib/index.d.ts +26 -0
  39. package/lib/index.js +43 -0
  40. package/lib/input-attachment.d.ts +319 -0
  41. package/lib/input-attachment.js +228 -0
  42. package/lib/input-security-group.d.ts +51 -0
  43. package/lib/input-security-group.js +123 -0
  44. package/lib/input-specification.d.ts +111 -0
  45. package/lib/input-specification.js +181 -0
  46. package/lib/input.d.ts +505 -0
  47. package/lib/input.js +803 -0
  48. package/lib/m2ts-settings.d.ts +421 -0
  49. package/lib/m2ts-settings.js +469 -0
  50. package/lib/m3u8-settings.d.ts +272 -0
  51. package/lib/m3u8-settings.js +304 -0
  52. package/lib/medialive-grants.generated.d.ts +30 -0
  53. package/lib/medialive-grants.generated.js +92 -0
  54. package/lib/network.d.ts +83 -0
  55. package/lib/network.js +132 -0
  56. package/lib/output-group.d.ts +924 -0
  57. package/lib/output-group.js +941 -0
  58. package/lib/outputs.d.ts +304 -0
  59. package/lib/outputs.js +598 -0
  60. package/lib/sdi-source.d.ts +124 -0
  61. package/lib/sdi-source.js +180 -0
  62. package/lib/shared.d.ts +44 -0
  63. package/lib/shared.js +146 -0
  64. package/lib/video-codec-settings.d.ts +1500 -0
  65. package/lib/video-codec-settings.js +1722 -0
  66. package/lib/video-selection.d.ts +92 -0
  67. package/lib/video-selection.js +95 -0
  68. package/package.json +135 -0
  69. package/rosetta/_generated.ts-fixture +6 -0
  70. package/rosetta/default.ts-fixture +21 -0
@@ -0,0 +1,1098 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AudioCodecSettings = exports.WavCodingMode = exports.Mp2CodingMode = exports.Eac3AtmosDrcRf = exports.Eac3AtmosDrcLine = exports.Eac3AtmosCodingMode = exports.Eac3SurroundMode = exports.Eac3SurroundExMode = exports.Eac3StereoDownmix = exports.Eac3PhaseControl = exports.Eac3PassthroughControl = exports.Eac3MetadataControl = exports.Eac3LfeFilter = exports.Eac3LfeControl = exports.Eac3DrcRf = exports.Eac3DrcLine = exports.Eac3DcFilter = exports.Eac3CodingMode = exports.Eac3BitstreamMode = exports.Eac3AttenuationControl = exports.Ac3MetadataControl = exports.Ac3LfeFilter = exports.Ac3DrcProfile = exports.Ac3CodingMode = exports.Ac3BitstreamMode = exports.Ac3AttenuationControl = exports.AacVbrQuality = exports.AacInputType = exports.AacSpec = exports.AacRawFormat = exports.AacRateControlMode = exports.AacCodingMode = exports.AacProfile = exports.AudioCodecType = exports.AudioBitDepth = exports.AudioSampleRate = void 0;
4
+ const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ /**
7
+ * Audio sample rate for AAC, MP2, and WAV codecs.
8
+ *
9
+ * Use one of the standard presets or `AudioSampleRate.of(hz)` for a custom value.
10
+ */
11
+ class AudioSampleRate {
12
+ hz;
13
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AudioSampleRate", version: "2.268.0-alpha.0" };
14
+ /** 8,000 Hz */
15
+ static HZ_8000 = new AudioSampleRate(8000);
16
+ /** 12,000 Hz */
17
+ static HZ_12000 = new AudioSampleRate(12000);
18
+ /** 16,000 Hz */
19
+ static HZ_16000 = new AudioSampleRate(16000);
20
+ /** 22,050 Hz */
21
+ static HZ_22050 = new AudioSampleRate(22050);
22
+ /** 24,000 Hz */
23
+ static HZ_24000 = new AudioSampleRate(24000);
24
+ /** 32,000 Hz */
25
+ static HZ_32000 = new AudioSampleRate(32000);
26
+ /** 44,100 Hz */
27
+ static HZ_44100 = new AudioSampleRate(44100);
28
+ /** 48,000 Hz */
29
+ static HZ_48000 = new AudioSampleRate(48000);
30
+ /** 88,200 Hz */
31
+ static HZ_88200 = new AudioSampleRate(88200);
32
+ /** 96,000 Hz */
33
+ static HZ_96000 = new AudioSampleRate(96000);
34
+ /**
35
+ * A custom sample rate in Hz.
36
+ * @param hz the sample rate in Hz
37
+ */
38
+ static of(hz) {
39
+ return new AudioSampleRate(hz);
40
+ }
41
+ constructor(hz) {
42
+ this.hz = hz;
43
+ }
44
+ /** @internal */
45
+ _toHz() {
46
+ return this.hz;
47
+ }
48
+ }
49
+ exports.AudioSampleRate = AudioSampleRate;
50
+ /**
51
+ * Audio bit depth for WAV codec.
52
+ *
53
+ * Use one of the standard presets or `AudioBitDepth.of(bits)` for a custom value.
54
+ */
55
+ class AudioBitDepth {
56
+ bits;
57
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AudioBitDepth", version: "2.268.0-alpha.0" };
58
+ /** 16-bit */
59
+ static DEPTH_16 = new AudioBitDepth(16);
60
+ /** 24-bit */
61
+ static DEPTH_24 = new AudioBitDepth(24);
62
+ /**
63
+ * A custom bit depth.
64
+ * @param bits the bit depth
65
+ */
66
+ static of(bits) {
67
+ return new AudioBitDepth(bits);
68
+ }
69
+ constructor(bits) {
70
+ this.bits = bits;
71
+ }
72
+ /** @internal */
73
+ _toBits() {
74
+ return this.bits;
75
+ }
76
+ }
77
+ exports.AudioBitDepth = AudioBitDepth;
78
+ /**
79
+ * The type of audio codec. Users select a codec via the
80
+ * `AudioCodecSettings` factory methods, never by passing this type directly.
81
+ * @internal
82
+ */
83
+ var AudioCodecType;
84
+ (function (AudioCodecType) {
85
+ /** AAC */
86
+ AudioCodecType["AAC"] = "AAC";
87
+ /** Dolby Digital (AC3) */
88
+ AudioCodecType["AC3"] = "AC3";
89
+ /** Dolby Digital Plus (EAC3) */
90
+ AudioCodecType["EAC3"] = "EAC3";
91
+ /** Dolby Digital Plus with Atmos (EAC3 Atmos) */
92
+ AudioCodecType["EAC3_ATMOS"] = "EAC3_ATMOS";
93
+ /** MPEG-1 Layer II (MP2) */
94
+ AudioCodecType["MP2"] = "MP2";
95
+ /** WAV */
96
+ AudioCodecType["WAV"] = "WAV";
97
+ /** Passthrough (no transcoding) */
98
+ AudioCodecType["PASSTHROUGH"] = "PASSTHROUGH";
99
+ })(AudioCodecType || (exports.AudioCodecType = AudioCodecType = {}));
100
+ /**
101
+ * AAC profile.
102
+ */
103
+ class AacProfile {
104
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacProfile", version: "2.268.0-alpha.0" };
105
+ /** HEV1 */
106
+ static HEV1 = new AacProfile('HEV1');
107
+ /** HEV2 */
108
+ static HEV2 = new AacProfile('HEV2');
109
+ /** LC (Low Complexity) */
110
+ static LC = new AacProfile('LC');
111
+ /** A value not yet modelled by AWS CDK. */
112
+ static of(value) {
113
+ return new AacProfile(value);
114
+ }
115
+ /** The underlying string value passed to CloudFormation. */
116
+ value;
117
+ constructor(value) {
118
+ this.value = value;
119
+ }
120
+ }
121
+ exports.AacProfile = AacProfile;
122
+ /**
123
+ * AAC coding mode.
124
+ */
125
+ class AacCodingMode {
126
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacCodingMode", version: "2.268.0-alpha.0" };
127
+ /** Ad receiver mix — receives stereo audio description + control track per ETSI TS 101 154 Annex E. */
128
+ static AD_RECEIVER_MIX = new AacCodingMode('AD_RECEIVER_MIX');
129
+ /** 1.0 (mono) */
130
+ static CODING_MODE_1_0 = new AacCodingMode('CODING_MODE_1_0');
131
+ /** 1+1 (dual mono) */
132
+ static CODING_MODE_1_1 = new AacCodingMode('CODING_MODE_1_1');
133
+ /** 2.0 (stereo) */
134
+ static CODING_MODE_2_0 = new AacCodingMode('CODING_MODE_2_0');
135
+ /** 5.1 surround */
136
+ static CODING_MODE_5_1 = new AacCodingMode('CODING_MODE_5_1');
137
+ /** A value not yet modelled by AWS CDK. */
138
+ static of(value) {
139
+ return new AacCodingMode(value);
140
+ }
141
+ /** The underlying string value passed to CloudFormation. */
142
+ value;
143
+ constructor(value) {
144
+ this.value = value;
145
+ }
146
+ }
147
+ exports.AacCodingMode = AacCodingMode;
148
+ /**
149
+ * AAC rate control mode.
150
+ */
151
+ class AacRateControlMode {
152
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacRateControlMode", version: "2.268.0-alpha.0" };
153
+ /** Constant bitrate */
154
+ static CBR = new AacRateControlMode('CBR');
155
+ /** Variable bitrate */
156
+ static VBR = new AacRateControlMode('VBR');
157
+ /** A value not yet modelled by AWS CDK. */
158
+ static of(value) {
159
+ return new AacRateControlMode(value);
160
+ }
161
+ /** The underlying string value passed to CloudFormation. */
162
+ value;
163
+ constructor(value) {
164
+ this.value = value;
165
+ }
166
+ }
167
+ exports.AacRateControlMode = AacRateControlMode;
168
+ /**
169
+ * AAC raw format.
170
+ */
171
+ class AacRawFormat {
172
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacRawFormat", version: "2.268.0-alpha.0" };
173
+ /** LATM/LOAS */
174
+ static LATM_LOAS = new AacRawFormat('LATM_LOAS');
175
+ /** None */
176
+ static NONE = new AacRawFormat('NONE');
177
+ /** A value not yet modelled by AWS CDK. */
178
+ static of(value) {
179
+ return new AacRawFormat(value);
180
+ }
181
+ /** The underlying string value passed to CloudFormation. */
182
+ value;
183
+ constructor(value) {
184
+ this.value = value;
185
+ }
186
+ }
187
+ exports.AacRawFormat = AacRawFormat;
188
+ /**
189
+ * AAC specification.
190
+ */
191
+ class AacSpec {
192
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacSpec", version: "2.268.0-alpha.0" };
193
+ /** MPEG-2 AAC */
194
+ static MPEG2 = new AacSpec('MPEG2');
195
+ /** MPEG-4 AAC */
196
+ static MPEG4 = new AacSpec('MPEG4');
197
+ /** A value not yet modelled by AWS CDK. */
198
+ static of(value) {
199
+ return new AacSpec(value);
200
+ }
201
+ /** The underlying string value passed to CloudFormation. */
202
+ value;
203
+ constructor(value) {
204
+ this.value = value;
205
+ }
206
+ }
207
+ exports.AacSpec = AacSpec;
208
+ /**
209
+ * AAC input type.
210
+ */
211
+ class AacInputType {
212
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacInputType", version: "2.268.0-alpha.0" };
213
+ /** Broadcaster mixed AD */
214
+ static BROADCASTER_MIXED_AD = new AacInputType('BROADCASTER_MIXED_AD');
215
+ /** Normal */
216
+ static NORMAL = new AacInputType('NORMAL');
217
+ /** A value not yet modelled by AWS CDK. */
218
+ static of(value) {
219
+ return new AacInputType(value);
220
+ }
221
+ /** The underlying string value passed to CloudFormation. */
222
+ value;
223
+ constructor(value) {
224
+ this.value = value;
225
+ }
226
+ }
227
+ exports.AacInputType = AacInputType;
228
+ /**
229
+ * AAC VBR quality level.
230
+ */
231
+ class AacVbrQuality {
232
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AacVbrQuality", version: "2.268.0-alpha.0" };
233
+ /** High */
234
+ static HIGH = new AacVbrQuality('HIGH');
235
+ /** Low */
236
+ static LOW = new AacVbrQuality('LOW');
237
+ /** Medium high */
238
+ static MEDIUM_HIGH = new AacVbrQuality('MEDIUM_HIGH');
239
+ /** Medium low */
240
+ static MEDIUM_LOW = new AacVbrQuality('MEDIUM_LOW');
241
+ /** A value not yet modelled by AWS CDK. */
242
+ static of(value) {
243
+ return new AacVbrQuality(value);
244
+ }
245
+ /** The underlying string value passed to CloudFormation. */
246
+ value;
247
+ constructor(value) {
248
+ this.value = value;
249
+ }
250
+ }
251
+ exports.AacVbrQuality = AacVbrQuality;
252
+ // =============================================================================
253
+ // AC3 enums
254
+ // =============================================================================
255
+ /**
256
+ * AC3 attenuation control.
257
+ */
258
+ class Ac3AttenuationControl {
259
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Ac3AttenuationControl", version: "2.268.0-alpha.0" };
260
+ /** Apply 3 dB attenuation to surround channels */
261
+ static ATTENUATE_3_DB = new Ac3AttenuationControl('ATTENUATE_3_DB');
262
+ /** No attenuation */
263
+ static NONE = new Ac3AttenuationControl('NONE');
264
+ /** A value not yet modelled by AWS CDK. */
265
+ static of(value) {
266
+ return new Ac3AttenuationControl(value);
267
+ }
268
+ /** The underlying string value passed to CloudFormation. */
269
+ value;
270
+ constructor(value) {
271
+ this.value = value;
272
+ }
273
+ }
274
+ exports.Ac3AttenuationControl = Ac3AttenuationControl;
275
+ /**
276
+ * AC3 bitstream mode.
277
+ */
278
+ class Ac3BitstreamMode {
279
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Ac3BitstreamMode", version: "2.268.0-alpha.0" };
280
+ /** Commentary */
281
+ static COMMENTARY = new Ac3BitstreamMode('COMMENTARY');
282
+ /** Complete main */
283
+ static COMPLETE_MAIN = new Ac3BitstreamMode('COMPLETE_MAIN');
284
+ /** Dialogue */
285
+ static DIALOGUE = new Ac3BitstreamMode('DIALOGUE');
286
+ /** Emergency */
287
+ static EMERGENCY = new Ac3BitstreamMode('EMERGENCY');
288
+ /** Hearing impaired */
289
+ static HEARING_IMPAIRED = new Ac3BitstreamMode('HEARING_IMPAIRED');
290
+ /** Music and effects */
291
+ static MUSIC_AND_EFFECTS = new Ac3BitstreamMode('MUSIC_AND_EFFECTS');
292
+ /** Visually impaired */
293
+ static VISUALLY_IMPAIRED = new Ac3BitstreamMode('VISUALLY_IMPAIRED');
294
+ /** Voice over */
295
+ static VOICE_OVER = new Ac3BitstreamMode('VOICE_OVER');
296
+ /** A value not yet modelled by AWS CDK. */
297
+ static of(value) {
298
+ return new Ac3BitstreamMode(value);
299
+ }
300
+ /** The underlying string value passed to CloudFormation. */
301
+ value;
302
+ constructor(value) {
303
+ this.value = value;
304
+ }
305
+ }
306
+ exports.Ac3BitstreamMode = Ac3BitstreamMode;
307
+ /**
308
+ * AC3 coding mode.
309
+ */
310
+ class Ac3CodingMode {
311
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Ac3CodingMode", version: "2.268.0-alpha.0" };
312
+ /** 1.0 (mono) */
313
+ static CODING_MODE_1_0 = new Ac3CodingMode('CODING_MODE_1_0');
314
+ /** 1+1 (dual mono) */
315
+ static CODING_MODE_1_1 = new Ac3CodingMode('CODING_MODE_1_1');
316
+ /** 2.0 (stereo) */
317
+ static CODING_MODE_2_0 = new Ac3CodingMode('CODING_MODE_2_0');
318
+ /** 3/2 (5.0 surround) */
319
+ static CODING_MODE_3_2_LFE = new Ac3CodingMode('CODING_MODE_3_2_LFE');
320
+ /** A value not yet modelled by AWS CDK. */
321
+ static of(value) {
322
+ return new Ac3CodingMode(value);
323
+ }
324
+ /** The underlying string value passed to CloudFormation. */
325
+ value;
326
+ constructor(value) {
327
+ this.value = value;
328
+ }
329
+ }
330
+ exports.Ac3CodingMode = Ac3CodingMode;
331
+ /**
332
+ * AC3 DRC profile.
333
+ */
334
+ class Ac3DrcProfile {
335
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Ac3DrcProfile", version: "2.268.0-alpha.0" };
336
+ /** Film standard */
337
+ static FILM_STANDARD = new Ac3DrcProfile('FILM_STANDARD');
338
+ /** None */
339
+ static NONE = new Ac3DrcProfile('NONE');
340
+ /** A value not yet modelled by AWS CDK. */
341
+ static of(value) {
342
+ return new Ac3DrcProfile(value);
343
+ }
344
+ /** The underlying string value passed to CloudFormation. */
345
+ value;
346
+ constructor(value) {
347
+ this.value = value;
348
+ }
349
+ }
350
+ exports.Ac3DrcProfile = Ac3DrcProfile;
351
+ /**
352
+ * AC3 LFE filter.
353
+ */
354
+ class Ac3LfeFilter {
355
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Ac3LfeFilter", version: "2.268.0-alpha.0" };
356
+ /** Disabled */
357
+ static DISABLED = new Ac3LfeFilter('DISABLED');
358
+ /** Enabled */
359
+ static ENABLED = new Ac3LfeFilter('ENABLED');
360
+ /** A value not yet modelled by AWS CDK. */
361
+ static of(value) {
362
+ return new Ac3LfeFilter(value);
363
+ }
364
+ /** The underlying string value passed to CloudFormation. */
365
+ value;
366
+ constructor(value) {
367
+ this.value = value;
368
+ }
369
+ }
370
+ exports.Ac3LfeFilter = Ac3LfeFilter;
371
+ /**
372
+ * AC3 metadata control.
373
+ */
374
+ class Ac3MetadataControl {
375
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Ac3MetadataControl", version: "2.268.0-alpha.0" };
376
+ /** Follow input */
377
+ static FOLLOW_INPUT = new Ac3MetadataControl('FOLLOW_INPUT');
378
+ /** Use configured */
379
+ static USE_CONFIGURED = new Ac3MetadataControl('USE_CONFIGURED');
380
+ /** A value not yet modelled by AWS CDK. */
381
+ static of(value) {
382
+ return new Ac3MetadataControl(value);
383
+ }
384
+ /** The underlying string value passed to CloudFormation. */
385
+ value;
386
+ constructor(value) {
387
+ this.value = value;
388
+ }
389
+ }
390
+ exports.Ac3MetadataControl = Ac3MetadataControl;
391
+ // =============================================================================
392
+ // EAC3 enums
393
+ // =============================================================================
394
+ /**
395
+ * EAC3 attenuation control.
396
+ */
397
+ class Eac3AttenuationControl {
398
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3AttenuationControl", version: "2.268.0-alpha.0" };
399
+ /** Apply 3 dB attenuation to surround channels */
400
+ static ATTENUATE_3_DB = new Eac3AttenuationControl('ATTENUATE_3_DB');
401
+ /** No attenuation */
402
+ static NONE = new Eac3AttenuationControl('NONE');
403
+ /** A value not yet modelled by AWS CDK. */
404
+ static of(value) {
405
+ return new Eac3AttenuationControl(value);
406
+ }
407
+ /** The underlying string value passed to CloudFormation. */
408
+ value;
409
+ constructor(value) {
410
+ this.value = value;
411
+ }
412
+ }
413
+ exports.Eac3AttenuationControl = Eac3AttenuationControl;
414
+ /**
415
+ * EAC3 bitstream mode.
416
+ */
417
+ class Eac3BitstreamMode {
418
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3BitstreamMode", version: "2.268.0-alpha.0" };
419
+ /** Commentary */
420
+ static COMMENTARY = new Eac3BitstreamMode('COMMENTARY');
421
+ /** Complete main */
422
+ static COMPLETE_MAIN = new Eac3BitstreamMode('COMPLETE_MAIN');
423
+ /** Emergency */
424
+ static EMERGENCY = new Eac3BitstreamMode('EMERGENCY');
425
+ /** Hearing impaired */
426
+ static HEARING_IMPAIRED = new Eac3BitstreamMode('HEARING_IMPAIRED');
427
+ /** Visually impaired */
428
+ static VISUALLY_IMPAIRED = new Eac3BitstreamMode('VISUALLY_IMPAIRED');
429
+ /** A value not yet modelled by AWS CDK. */
430
+ static of(value) {
431
+ return new Eac3BitstreamMode(value);
432
+ }
433
+ /** The underlying string value passed to CloudFormation. */
434
+ value;
435
+ constructor(value) {
436
+ this.value = value;
437
+ }
438
+ }
439
+ exports.Eac3BitstreamMode = Eac3BitstreamMode;
440
+ /**
441
+ * EAC3 coding mode.
442
+ */
443
+ class Eac3CodingMode {
444
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3CodingMode", version: "2.268.0-alpha.0" };
445
+ /** 1.0 (mono) */
446
+ static CODING_MODE_1_0 = new Eac3CodingMode('CODING_MODE_1_0');
447
+ /** 2.0 (stereo) */
448
+ static CODING_MODE_2_0 = new Eac3CodingMode('CODING_MODE_2_0');
449
+ /** 3/2 (5.0 surround) */
450
+ static CODING_MODE_3_2 = new Eac3CodingMode('CODING_MODE_3_2');
451
+ /** A value not yet modelled by AWS CDK. */
452
+ static of(value) {
453
+ return new Eac3CodingMode(value);
454
+ }
455
+ /** The underlying string value passed to CloudFormation. */
456
+ value;
457
+ constructor(value) {
458
+ this.value = value;
459
+ }
460
+ }
461
+ exports.Eac3CodingMode = Eac3CodingMode;
462
+ /**
463
+ * EAC3 DC filter.
464
+ */
465
+ class Eac3DcFilter {
466
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3DcFilter", version: "2.268.0-alpha.0" };
467
+ /** Disabled */
468
+ static DISABLED = new Eac3DcFilter('DISABLED');
469
+ /** Enabled */
470
+ static ENABLED = new Eac3DcFilter('ENABLED');
471
+ /** A value not yet modelled by AWS CDK. */
472
+ static of(value) {
473
+ return new Eac3DcFilter(value);
474
+ }
475
+ /** The underlying string value passed to CloudFormation. */
476
+ value;
477
+ constructor(value) {
478
+ this.value = value;
479
+ }
480
+ }
481
+ exports.Eac3DcFilter = Eac3DcFilter;
482
+ /**
483
+ * EAC3 DRC line mode profile.
484
+ */
485
+ class Eac3DrcLine {
486
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3DrcLine", version: "2.268.0-alpha.0" };
487
+ /** Film light */
488
+ static FILM_LIGHT = new Eac3DrcLine('FILM_LIGHT');
489
+ /** Film standard */
490
+ static FILM_STANDARD = new Eac3DrcLine('FILM_STANDARD');
491
+ /** Music light */
492
+ static MUSIC_LIGHT = new Eac3DrcLine('MUSIC_LIGHT');
493
+ /** Music standard */
494
+ static MUSIC_STANDARD = new Eac3DrcLine('MUSIC_STANDARD');
495
+ /** None */
496
+ static NONE = new Eac3DrcLine('NONE');
497
+ /** Speech */
498
+ static SPEECH = new Eac3DrcLine('SPEECH');
499
+ /** A value not yet modelled by AWS CDK. */
500
+ static of(value) {
501
+ return new Eac3DrcLine(value);
502
+ }
503
+ /** The underlying string value passed to CloudFormation. */
504
+ value;
505
+ constructor(value) {
506
+ this.value = value;
507
+ }
508
+ }
509
+ exports.Eac3DrcLine = Eac3DrcLine;
510
+ /**
511
+ * EAC3 DRC RF mode profile.
512
+ */
513
+ class Eac3DrcRf {
514
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3DrcRf", version: "2.268.0-alpha.0" };
515
+ /** Film light */
516
+ static FILM_LIGHT = new Eac3DrcRf('FILM_LIGHT');
517
+ /** Film standard */
518
+ static FILM_STANDARD = new Eac3DrcRf('FILM_STANDARD');
519
+ /** Music light */
520
+ static MUSIC_LIGHT = new Eac3DrcRf('MUSIC_LIGHT');
521
+ /** Music standard */
522
+ static MUSIC_STANDARD = new Eac3DrcRf('MUSIC_STANDARD');
523
+ /** None */
524
+ static NONE = new Eac3DrcRf('NONE');
525
+ /** Speech */
526
+ static SPEECH = new Eac3DrcRf('SPEECH');
527
+ /** A value not yet modelled by AWS CDK. */
528
+ static of(value) {
529
+ return new Eac3DrcRf(value);
530
+ }
531
+ /** The underlying string value passed to CloudFormation. */
532
+ value;
533
+ constructor(value) {
534
+ this.value = value;
535
+ }
536
+ }
537
+ exports.Eac3DrcRf = Eac3DrcRf;
538
+ /**
539
+ * EAC3 LFE control.
540
+ */
541
+ class Eac3LfeControl {
542
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3LfeControl", version: "2.268.0-alpha.0" };
543
+ /** LFE */
544
+ static LFE = new Eac3LfeControl('LFE');
545
+ /** No LFE */
546
+ static NO_LFE = new Eac3LfeControl('NO_LFE');
547
+ /** A value not yet modelled by AWS CDK. */
548
+ static of(value) {
549
+ return new Eac3LfeControl(value);
550
+ }
551
+ /** The underlying string value passed to CloudFormation. */
552
+ value;
553
+ constructor(value) {
554
+ this.value = value;
555
+ }
556
+ }
557
+ exports.Eac3LfeControl = Eac3LfeControl;
558
+ /**
559
+ * EAC3 LFE filter.
560
+ */
561
+ class Eac3LfeFilter {
562
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3LfeFilter", version: "2.268.0-alpha.0" };
563
+ /** Disabled */
564
+ static DISABLED = new Eac3LfeFilter('DISABLED');
565
+ /** Enabled */
566
+ static ENABLED = new Eac3LfeFilter('ENABLED');
567
+ /** A value not yet modelled by AWS CDK. */
568
+ static of(value) {
569
+ return new Eac3LfeFilter(value);
570
+ }
571
+ /** The underlying string value passed to CloudFormation. */
572
+ value;
573
+ constructor(value) {
574
+ this.value = value;
575
+ }
576
+ }
577
+ exports.Eac3LfeFilter = Eac3LfeFilter;
578
+ /**
579
+ * EAC3 metadata control.
580
+ */
581
+ class Eac3MetadataControl {
582
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3MetadataControl", version: "2.268.0-alpha.0" };
583
+ /** Follow input */
584
+ static FOLLOW_INPUT = new Eac3MetadataControl('FOLLOW_INPUT');
585
+ /** Use configured */
586
+ static USE_CONFIGURED = new Eac3MetadataControl('USE_CONFIGURED');
587
+ /** A value not yet modelled by AWS CDK. */
588
+ static of(value) {
589
+ return new Eac3MetadataControl(value);
590
+ }
591
+ /** The underlying string value passed to CloudFormation. */
592
+ value;
593
+ constructor(value) {
594
+ this.value = value;
595
+ }
596
+ }
597
+ exports.Eac3MetadataControl = Eac3MetadataControl;
598
+ /**
599
+ * EAC3 passthrough control.
600
+ */
601
+ class Eac3PassthroughControl {
602
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3PassthroughControl", version: "2.268.0-alpha.0" };
603
+ /** No passthrough */
604
+ static NO_PASSTHROUGH = new Eac3PassthroughControl('NO_PASSTHROUGH');
605
+ /** When possible */
606
+ static WHEN_POSSIBLE = new Eac3PassthroughControl('WHEN_POSSIBLE');
607
+ /** A value not yet modelled by AWS CDK. */
608
+ static of(value) {
609
+ return new Eac3PassthroughControl(value);
610
+ }
611
+ /** The underlying string value passed to CloudFormation. */
612
+ value;
613
+ constructor(value) {
614
+ this.value = value;
615
+ }
616
+ }
617
+ exports.Eac3PassthroughControl = Eac3PassthroughControl;
618
+ /**
619
+ * EAC3 phase control.
620
+ */
621
+ class Eac3PhaseControl {
622
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3PhaseControl", version: "2.268.0-alpha.0" };
623
+ /** No shift */
624
+ static NO_SHIFT = new Eac3PhaseControl('NO_SHIFT');
625
+ /** Shift 90 degrees */
626
+ static SHIFT_90_DEGREES = new Eac3PhaseControl('SHIFT_90_DEGREES');
627
+ /** A value not yet modelled by AWS CDK. */
628
+ static of(value) {
629
+ return new Eac3PhaseControl(value);
630
+ }
631
+ /** The underlying string value passed to CloudFormation. */
632
+ value;
633
+ constructor(value) {
634
+ this.value = value;
635
+ }
636
+ }
637
+ exports.Eac3PhaseControl = Eac3PhaseControl;
638
+ /**
639
+ * EAC3 stereo downmix preference.
640
+ */
641
+ class Eac3StereoDownmix {
642
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3StereoDownmix", version: "2.268.0-alpha.0" };
643
+ /** DPL2 */
644
+ static DPL2 = new Eac3StereoDownmix('DPL2');
645
+ /** Lo/Ro */
646
+ static LO_RO = new Eac3StereoDownmix('LO_RO');
647
+ /** Lt/Rt */
648
+ static LT_RT = new Eac3StereoDownmix('LT_RT');
649
+ /** Not indicated */
650
+ static NOT_INDICATED = new Eac3StereoDownmix('NOT_INDICATED');
651
+ /** A value not yet modelled by AWS CDK. */
652
+ static of(value) {
653
+ return new Eac3StereoDownmix(value);
654
+ }
655
+ /** The underlying string value passed to CloudFormation. */
656
+ value;
657
+ constructor(value) {
658
+ this.value = value;
659
+ }
660
+ }
661
+ exports.Eac3StereoDownmix = Eac3StereoDownmix;
662
+ /**
663
+ * EAC3 surround ex mode.
664
+ */
665
+ class Eac3SurroundExMode {
666
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3SurroundExMode", version: "2.268.0-alpha.0" };
667
+ /** Disabled */
668
+ static DISABLED = new Eac3SurroundExMode('DISABLED');
669
+ /** Enabled */
670
+ static ENABLED = new Eac3SurroundExMode('ENABLED');
671
+ /** Not indicated */
672
+ static NOT_INDICATED = new Eac3SurroundExMode('NOT_INDICATED');
673
+ /** A value not yet modelled by AWS CDK. */
674
+ static of(value) {
675
+ return new Eac3SurroundExMode(value);
676
+ }
677
+ /** The underlying string value passed to CloudFormation. */
678
+ value;
679
+ constructor(value) {
680
+ this.value = value;
681
+ }
682
+ }
683
+ exports.Eac3SurroundExMode = Eac3SurroundExMode;
684
+ /**
685
+ * EAC3 surround mode.
686
+ */
687
+ class Eac3SurroundMode {
688
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3SurroundMode", version: "2.268.0-alpha.0" };
689
+ /** Disabled */
690
+ static DISABLED = new Eac3SurroundMode('DISABLED');
691
+ /** Enabled */
692
+ static ENABLED = new Eac3SurroundMode('ENABLED');
693
+ /** Not indicated */
694
+ static NOT_INDICATED = new Eac3SurroundMode('NOT_INDICATED');
695
+ /** A value not yet modelled by AWS CDK. */
696
+ static of(value) {
697
+ return new Eac3SurroundMode(value);
698
+ }
699
+ /** The underlying string value passed to CloudFormation. */
700
+ value;
701
+ constructor(value) {
702
+ this.value = value;
703
+ }
704
+ }
705
+ exports.Eac3SurroundMode = Eac3SurroundMode;
706
+ // =============================================================================
707
+ // EAC3 Atmos enums
708
+ // =============================================================================
709
+ /**
710
+ * EAC3 Atmos coding mode.
711
+ */
712
+ class Eac3AtmosCodingMode {
713
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3AtmosCodingMode", version: "2.268.0-alpha.0" };
714
+ /** 5.1.4 surround */
715
+ static CODING_MODE_5_1_4 = new Eac3AtmosCodingMode('CODING_MODE_5_1_4');
716
+ /** 7.1.4 surround */
717
+ static CODING_MODE_7_1_4 = new Eac3AtmosCodingMode('CODING_MODE_7_1_4');
718
+ /** 9.1.6 surround */
719
+ static CODING_MODE_9_1_6 = new Eac3AtmosCodingMode('CODING_MODE_9_1_6');
720
+ /** A value not yet modelled by AWS CDK. */
721
+ static of(value) {
722
+ return new Eac3AtmosCodingMode(value);
723
+ }
724
+ /** The underlying string value passed to CloudFormation. */
725
+ value;
726
+ constructor(value) {
727
+ this.value = value;
728
+ }
729
+ }
730
+ exports.Eac3AtmosCodingMode = Eac3AtmosCodingMode;
731
+ /**
732
+ * EAC3 Atmos DRC line mode profile.
733
+ */
734
+ class Eac3AtmosDrcLine {
735
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3AtmosDrcLine", version: "2.268.0-alpha.0" };
736
+ /** Film light */
737
+ static FILM_LIGHT = new Eac3AtmosDrcLine('FILM_LIGHT');
738
+ /** Film standard */
739
+ static FILM_STANDARD = new Eac3AtmosDrcLine('FILM_STANDARD');
740
+ /** Music light */
741
+ static MUSIC_LIGHT = new Eac3AtmosDrcLine('MUSIC_LIGHT');
742
+ /** Music standard */
743
+ static MUSIC_STANDARD = new Eac3AtmosDrcLine('MUSIC_STANDARD');
744
+ /** None */
745
+ static NONE = new Eac3AtmosDrcLine('NONE');
746
+ /** Speech */
747
+ static SPEECH = new Eac3AtmosDrcLine('SPEECH');
748
+ /** A value not yet modelled by AWS CDK. */
749
+ static of(value) {
750
+ return new Eac3AtmosDrcLine(value);
751
+ }
752
+ /** The underlying string value passed to CloudFormation. */
753
+ value;
754
+ constructor(value) {
755
+ this.value = value;
756
+ }
757
+ }
758
+ exports.Eac3AtmosDrcLine = Eac3AtmosDrcLine;
759
+ /**
760
+ * EAC3 Atmos DRC RF mode profile.
761
+ */
762
+ class Eac3AtmosDrcRf {
763
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Eac3AtmosDrcRf", version: "2.268.0-alpha.0" };
764
+ /** Film light */
765
+ static FILM_LIGHT = new Eac3AtmosDrcRf('FILM_LIGHT');
766
+ /** Film standard */
767
+ static FILM_STANDARD = new Eac3AtmosDrcRf('FILM_STANDARD');
768
+ /** Music light */
769
+ static MUSIC_LIGHT = new Eac3AtmosDrcRf('MUSIC_LIGHT');
770
+ /** Music standard */
771
+ static MUSIC_STANDARD = new Eac3AtmosDrcRf('MUSIC_STANDARD');
772
+ /** None */
773
+ static NONE = new Eac3AtmosDrcRf('NONE');
774
+ /** Speech */
775
+ static SPEECH = new Eac3AtmosDrcRf('SPEECH');
776
+ /** A value not yet modelled by AWS CDK. */
777
+ static of(value) {
778
+ return new Eac3AtmosDrcRf(value);
779
+ }
780
+ /** The underlying string value passed to CloudFormation. */
781
+ value;
782
+ constructor(value) {
783
+ this.value = value;
784
+ }
785
+ }
786
+ exports.Eac3AtmosDrcRf = Eac3AtmosDrcRf;
787
+ // =============================================================================
788
+ // MP2 enums
789
+ // =============================================================================
790
+ /**
791
+ * MP2 coding mode.
792
+ */
793
+ class Mp2CodingMode {
794
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.Mp2CodingMode", version: "2.268.0-alpha.0" };
795
+ /** 1.0 (mono) */
796
+ static CODING_MODE_1_0 = new Mp2CodingMode('CODING_MODE_1_0');
797
+ /** 2.0 (stereo) */
798
+ static CODING_MODE_2_0 = new Mp2CodingMode('CODING_MODE_2_0');
799
+ /** A value not yet modelled by AWS CDK. */
800
+ static of(value) {
801
+ return new Mp2CodingMode(value);
802
+ }
803
+ /** The underlying string value passed to CloudFormation. */
804
+ value;
805
+ constructor(value) {
806
+ this.value = value;
807
+ }
808
+ }
809
+ exports.Mp2CodingMode = Mp2CodingMode;
810
+ // =============================================================================
811
+ // WAV enums
812
+ // =============================================================================
813
+ /**
814
+ * WAV coding mode.
815
+ */
816
+ class WavCodingMode {
817
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.WavCodingMode", version: "2.268.0-alpha.0" };
818
+ /** 1.0 (mono) */
819
+ static CODING_MODE_1_0 = new WavCodingMode('CODING_MODE_1_0');
820
+ /** 2.0 (stereo) */
821
+ static CODING_MODE_2_0 = new WavCodingMode('CODING_MODE_2_0');
822
+ /** 4.0 */
823
+ static CODING_MODE_4_0 = new WavCodingMode('CODING_MODE_4_0');
824
+ /** 8.0 */
825
+ static CODING_MODE_8_0 = new WavCodingMode('CODING_MODE_8_0');
826
+ /** A value not yet modelled by AWS CDK. */
827
+ static of(value) {
828
+ return new WavCodingMode(value);
829
+ }
830
+ /** The underlying string value passed to CloudFormation. */
831
+ value;
832
+ constructor(value) {
833
+ this.value = value;
834
+ }
835
+ }
836
+ exports.WavCodingMode = WavCodingMode;
837
+ // =============================================================================
838
+ // Abstract class and implementations
839
+ // =============================================================================
840
+ /**
841
+ * Audio codec settings. Use the static factory methods to create.
842
+ */
843
+ class AudioCodecSettings {
844
+ static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-medialive-alpha.AudioCodecSettings", version: "2.268.0-alpha.0" };
845
+ /**
846
+ * Create AAC codec settings.
847
+ */
848
+ static aac(props) {
849
+ try {
850
+ jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_AacSettingsProps(props);
851
+ }
852
+ catch (error) {
853
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
854
+ Error.captureStackTrace(error, this.aac);
855
+ }
856
+ throw error;
857
+ }
858
+ return new AacAudioCodecSettings(props ?? {});
859
+ }
860
+ /**
861
+ * Create AC3 codec settings.
862
+ */
863
+ static ac3(props) {
864
+ try {
865
+ jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_Ac3SettingsProps(props);
866
+ }
867
+ catch (error) {
868
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
869
+ Error.captureStackTrace(error, this.ac3);
870
+ }
871
+ throw error;
872
+ }
873
+ return new Ac3AudioCodecSettings(props ?? {});
874
+ }
875
+ /**
876
+ * Create EAC3 (Dolby Digital Plus) codec settings.
877
+ */
878
+ static eac3(props) {
879
+ try {
880
+ jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_Eac3SettingsProps(props);
881
+ }
882
+ catch (error) {
883
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
884
+ Error.captureStackTrace(error, this.eac3);
885
+ }
886
+ throw error;
887
+ }
888
+ return new Eac3AudioCodecSettings(props ?? {});
889
+ }
890
+ /**
891
+ * Create EAC3 Atmos (Dolby Digital Plus with Atmos) codec settings.
892
+ */
893
+ static eac3Atmos(props) {
894
+ try {
895
+ jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_Eac3AtmosSettingsProps(props);
896
+ }
897
+ catch (error) {
898
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
899
+ Error.captureStackTrace(error, this.eac3Atmos);
900
+ }
901
+ throw error;
902
+ }
903
+ return new Eac3AtmosAudioCodecSettings(props ?? {});
904
+ }
905
+ /**
906
+ * Create MP2 codec settings.
907
+ */
908
+ static mp2(props) {
909
+ try {
910
+ jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_Mp2SettingsProps(props);
911
+ }
912
+ catch (error) {
913
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
914
+ Error.captureStackTrace(error, this.mp2);
915
+ }
916
+ throw error;
917
+ }
918
+ return new Mp2AudioCodecSettings(props ?? {});
919
+ }
920
+ /**
921
+ * Create WAV codec settings.
922
+ */
923
+ static wav(props) {
924
+ try {
925
+ jsiiDeprecationWarnings._aws_cdk_aws_medialive_alpha_WavSettingsProps(props);
926
+ }
927
+ catch (error) {
928
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
929
+ Error.captureStackTrace(error, this.wav);
930
+ }
931
+ throw error;
932
+ }
933
+ return new WavAudioCodecSettings(props ?? {});
934
+ }
935
+ /**
936
+ * Create passthrough audio settings (no transcoding).
937
+ */
938
+ static passthrough() {
939
+ return new PassthroughAudioCodecSettings();
940
+ }
941
+ }
942
+ exports.AudioCodecSettings = AudioCodecSettings;
943
+ /** @internal */
944
+ class AacAudioCodecSettings extends AudioCodecSettings {
945
+ props;
946
+ _codecType = AudioCodecType.AAC;
947
+ constructor(props) {
948
+ super();
949
+ this.props = props;
950
+ }
951
+ _bind() {
952
+ const p = this.props;
953
+ return {
954
+ aacSettings: {
955
+ bitrate: p.bitrate?.toBps() ?? 192000,
956
+ profile: (p.profile ?? AacProfile.LC).value,
957
+ codingMode: (p.codingMode ?? AacCodingMode.CODING_MODE_2_0).value,
958
+ rateControlMode: (p.rateControlMode ?? AacRateControlMode.CBR).value,
959
+ sampleRate: (p.sampleRate ?? AudioSampleRate.HZ_48000)._toHz(),
960
+ rawFormat: (p.rawFormat ?? AacRawFormat.NONE).value,
961
+ spec: (p.spec ?? AacSpec.MPEG4).value,
962
+ inputType: (p.inputType ?? AacInputType.NORMAL).value,
963
+ vbrQuality: p.vbrQuality?.value,
964
+ },
965
+ };
966
+ }
967
+ }
968
+ /** @internal */
969
+ class Ac3AudioCodecSettings extends AudioCodecSettings {
970
+ props;
971
+ _codecType = AudioCodecType.AC3;
972
+ constructor(props) {
973
+ super();
974
+ this.props = props;
975
+ }
976
+ _bind() {
977
+ const p = this.props;
978
+ return {
979
+ ac3Settings: {
980
+ bitrate: p.bitrate?.toBps(),
981
+ codingMode: (p.codingMode ?? Ac3CodingMode.CODING_MODE_2_0).value,
982
+ dialnorm: p.dialNorm,
983
+ attenuationControl: p.attenuationControl?.value,
984
+ bitstreamMode: (p.bitstreamMode ?? Ac3BitstreamMode.COMPLETE_MAIN).value,
985
+ drcProfile: p.drcProfile?.value,
986
+ lfeFilter: (p.lfeFilter ?? Ac3LfeFilter.DISABLED).value,
987
+ metadataControl: p.metadataControl?.value,
988
+ },
989
+ };
990
+ }
991
+ }
992
+ /** @internal */
993
+ class Eac3AudioCodecSettings extends AudioCodecSettings {
994
+ props;
995
+ _codecType = AudioCodecType.EAC3;
996
+ constructor(props) {
997
+ super();
998
+ this.props = props;
999
+ }
1000
+ _bind() {
1001
+ const p = this.props;
1002
+ return {
1003
+ eac3Settings: {
1004
+ bitrate: p.bitrate?.toBps(),
1005
+ codingMode: (p.codingMode ?? Eac3CodingMode.CODING_MODE_3_2).value,
1006
+ dialnorm: p.dialNorm,
1007
+ attenuationControl: (p.attenuationControl ?? Eac3AttenuationControl.NONE).value,
1008
+ bitstreamMode: (p.bitstreamMode ?? Eac3BitstreamMode.COMPLETE_MAIN).value,
1009
+ dcFilter: p.dcFilter?.value,
1010
+ drcLine: p.drcLine?.value,
1011
+ drcRf: p.drcRf?.value,
1012
+ lfeControl: p.lfeControl?.value,
1013
+ lfeFilter: p.lfeFilter?.value,
1014
+ loRoCenterMixLevel: p.loRoCenterMixLevel,
1015
+ loRoSurroundMixLevel: p.loRoSurroundMixLevel,
1016
+ ltRtCenterMixLevel: p.ltRtCenterMixLevel,
1017
+ ltRtSurroundMixLevel: p.ltRtSurroundMixLevel,
1018
+ metadataControl: p.metadataControl?.value,
1019
+ passthroughControl: p.passthroughControl?.value,
1020
+ phaseControl: p.phaseControl?.value,
1021
+ stereoDownmix: p.stereoDownmix?.value,
1022
+ surroundExMode: p.surroundExMode?.value,
1023
+ surroundMode: p.surroundMode?.value,
1024
+ },
1025
+ };
1026
+ }
1027
+ }
1028
+ /** @internal */
1029
+ class Eac3AtmosAudioCodecSettings extends AudioCodecSettings {
1030
+ props;
1031
+ _codecType = AudioCodecType.EAC3_ATMOS;
1032
+ constructor(props) {
1033
+ super();
1034
+ this.props = props;
1035
+ }
1036
+ _bind() {
1037
+ const p = this.props;
1038
+ return {
1039
+ eac3AtmosSettings: {
1040
+ bitrate: p.bitrate?.toBps(),
1041
+ codingMode: (p.codingMode ?? Eac3AtmosCodingMode.CODING_MODE_5_1_4).value,
1042
+ dialnorm: p.dialNorm,
1043
+ drcLine: p.drcLine?.value,
1044
+ drcRf: p.drcRf?.value,
1045
+ heightTrim: p.heightTrim,
1046
+ surroundTrim: p.surroundTrim,
1047
+ },
1048
+ };
1049
+ }
1050
+ }
1051
+ /** @internal */
1052
+ class Mp2AudioCodecSettings extends AudioCodecSettings {
1053
+ props;
1054
+ _codecType = AudioCodecType.MP2;
1055
+ constructor(props) {
1056
+ super();
1057
+ this.props = props;
1058
+ }
1059
+ _bind() {
1060
+ const p = this.props;
1061
+ return {
1062
+ mp2Settings: {
1063
+ bitrate: p.bitrate?.toBps(),
1064
+ codingMode: (p.codingMode ?? Mp2CodingMode.CODING_MODE_2_0).value,
1065
+ sampleRate: (p.sampleRate ?? AudioSampleRate.HZ_48000)._toHz(),
1066
+ },
1067
+ };
1068
+ }
1069
+ }
1070
+ /** @internal */
1071
+ class WavAudioCodecSettings extends AudioCodecSettings {
1072
+ props;
1073
+ _codecType = AudioCodecType.WAV;
1074
+ constructor(props) {
1075
+ super();
1076
+ this.props = props;
1077
+ }
1078
+ _bind() {
1079
+ const p = this.props;
1080
+ return {
1081
+ wavSettings: {
1082
+ bitDepth: (p.bitDepth ?? AudioBitDepth.DEPTH_16)._toBits(),
1083
+ codingMode: (p.codingMode ?? WavCodingMode.CODING_MODE_2_0).value,
1084
+ sampleRate: (p.sampleRate ?? AudioSampleRate.HZ_48000)._toHz(),
1085
+ },
1086
+ };
1087
+ }
1088
+ }
1089
+ /** @internal */
1090
+ class PassthroughAudioCodecSettings extends AudioCodecSettings {
1091
+ _codecType = AudioCodecType.PASSTHROUGH;
1092
+ _bind() {
1093
+ return {
1094
+ passThroughSettings: {},
1095
+ };
1096
+ }
1097
+ }
1098
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8tY29kZWMtc2V0dGluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJhdWRpby1jb2RlYy1zZXR0aW5ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBOzs7O0dBSUc7QUFDSCxNQUFhLGVBQWU7SUE4Qlc7O0lBN0JyQyxlQUFlO0lBQ1IsTUFBTSxDQUFVLE9BQU8sR0FBRyxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMzRCxnQkFBZ0I7SUFDVCxNQUFNLENBQVUsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELGdCQUFnQjtJQUNULE1BQU0sQ0FBVSxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0QsZ0JBQWdCO0lBQ1QsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxnQkFBZ0I7SUFDVCxNQUFNLENBQVUsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELGdCQUFnQjtJQUNULE1BQU0sQ0FBVSxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0QsZ0JBQWdCO0lBQ1QsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3RCxnQkFBZ0I7SUFDVCxNQUFNLENBQVUsUUFBUSxHQUFHLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdELGdCQUFnQjtJQUNULE1BQU0sQ0FBVSxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0QsZ0JBQWdCO0lBQ1QsTUFBTSxDQUFVLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUU3RDs7O09BR0c7SUFDSSxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQVU7UUFDekIsT0FBTyxJQUFJ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LENBQUMsVUFBVSxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUU7YUFDL0Q7U0FDRixDQUFDO0tBQ0g7Q0FDRjtBQUVELGdCQUFnQjtBQUNoQixNQUFNLHFCQUFzQixTQUFRLGtCQUFrQjtJQUV2QjtJQURiLFVBQVUsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDO0lBQ2hELFlBQTZCLEtBQXVCO1FBQ2xELEtBQUssRUFBRSxDQUFDO1FBRG1CLFVBQUssR0FBTCxLQUFLLENBQWtCO0tBRW5EO0lBRU0sS0FBSztRQUNWLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDckIsT0FBTztZQUNMLFdBQVcsRUFBRTtnQkFDWCxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEVBQUU7Z0JBQzFELFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEtBQUs7Z0JBQ2pFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLElBQUksZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRTthQUMvRDtTQUNGLENBQUM7S0FDSDtDQUNGO0FBRUQsZ0JBQWdCO0FBQ2hCLE1BQU0sNkJBQThCLFNBQVEsa0JBQWtCO0lBQzVDLFVBQVUsR0FBRyxjQUFjLENBQUMsV0FBVyxDQUFDO0lBQ2pELEtBQUs7UUFDVixPQUFPO1lBQ0wsbUJBQW1CLEVBQUUsRUFBRTtTQUN4QixDQUFDO0tBQ0g7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQml0cmF0ZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB0eXBlIHsgQ2ZuQ2hhbm5lbCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1tZWRpYWxpdmUnO1xuXG4vKipcbiAqIEF1ZGlvIHNhbXBsZSByYXRlIGZvciBBQUMsIE1QMiwgYW5kIFdBViBjb2RlY3MuXG4gKlxuICogVXNlIG9uZSBvZiB0aGUgc3RhbmRhcmQgcHJlc2V0cyBvciBgQXVkaW9TYW1wbGVSYXRlLm9mKGh6KWAgZm9yIGEgY3VzdG9tIHZhbHVlLlxuICovXG5leHBvcnQgY2xhc3MgQXVkaW9TYW1wbGVSYXRlIHtcbiAgLyoqIDgsMDAwIEh6ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSFpfODAwMCA9IG5ldyBBdWRpb1NhbXBsZVJhdGUoODAwMCk7XG4gIC8qKiAxMiwwMDAgSHogKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBIWl8xMjAwMCA9IG5ldyBBdWRpb1NhbXBsZVJhdGUoMTIwMDApO1xuICAvKiogMTYsMDAwIEh6ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSFpfMTYwMDAgPSBuZXcgQXVkaW9TYW1wbGVSYXRlKDE2MDAwKTtcbiAgLyoqIDIyLDA1MCBIeiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhaXzIyMDUwID0gbmV3IEF1ZGlvU2FtcGxlUmF0ZSgyMjA1MCk7XG4gIC8qKiAyNCwwMDAgSHogKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBIWl8yNDAwMCA9IG5ldyBBdWRpb1NhbXBsZVJhdGUoMjQwMDApO1xuICAvKiogMzIsMDAwIEh6ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSFpfMzIwMDAgPSBuZXcgQXVkaW9TYW1wbGVSYXRlKDMyMDAwKTtcbiAgLyoqIDQ0LDEwMCBIeiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhaXzQ0MTAwID0gbmV3IEF1ZGlvU2FtcGxlUmF0ZSg0NDEwMCk7XG4gIC8qKiA0OCwwMDAgSHogKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBIWl80ODAwMCA9IG5ldyBBdWRpb1NhbXBsZVJhdGUoNDgwMDApO1xuICAvKiogODgsMjAwIEh6ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSFpfODgyMDAgPSBuZXcgQXVkaW9TYW1wbGVSYXRlKDg4MjAwKTtcbiAgLyoqIDk2LDAwMCBIeiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhaXzk2MDAwID0gbmV3IEF1ZGlvU2FtcGxlUmF0ZSg5NjAwMCk7XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIHNhbXBsZSByYXRlIGluIEh6LlxuICAgKiBAcGFyYW0gaHogdGhlIHNhbXBsZSByYXRlIGluIEh6XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9mKGh6OiBudW1iZXIpOiBBdWRpb1NhbXBsZVJhdGUge1xuICAgIHJldHVybiBuZXcgQXVkaW9TYW1wbGVSYXRlKGh6KTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBoejogbnVtYmVyKSB7fVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIF90b0h6KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuaHo7XG4gIH1cbn1cblxuLyoqXG4gKiBBdWRpbyBiaXQgZGVwdGggZm9yIFdBViBjb2RlYy5cbiAqXG4gKiBVc2Ugb25lIG9mIHRoZSBzdGFuZGFyZCBwcmVzZXRzIG9yIGBBdWRpb0JpdERlcHRoLm9mKGJpdHMpYCBmb3IgYSBjdXN0b20gdmFsdWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdWRpb0JpdERlcHRoIHtcbiAgLyoqIDE2LWJpdCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFUFRIXzE2ID0gbmV3IEF1ZGlvQml0RGVwdGgoMTYpO1xuICAvKiogMjQtYml0ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVQVEhfMjQgPSBuZXcgQXVkaW9CaXREZXB0aCgyNCk7XG5cbiAgLyoqXG4gICAqIEEgY3VzdG9tIGJpdCBkZXB0aC5cbiAgICogQHBhcmFtIGJpdHMgdGhlIGJpdCBkZXB0aFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvZihiaXRzOiBudW1iZXIpOiBBdWRpb0JpdERlcHRoIHtcbiAgICByZXR1cm4gbmV3IEF1ZGlvQml0RGVwdGgoYml0cyk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYml0czogbnVtYmVyKSB7fVxuXG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIF90b0JpdHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5iaXRzO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgYXVkaW8gY29kZWMuIFVzZXJzIHNlbGVjdCBhIGNvZGVjIHZpYSB0aGVcbiAqIGBBdWRpb0NvZGVjU2V0dGluZ3NgIGZhY3RvcnkgbWV0aG9kcywgbmV2ZXIgYnkgcGFzc2luZyB0aGlzIHR5cGUgZGlyZWN0bHkuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGVudW0gQXVkaW9Db2RlY1R5cGUge1xuICAvKiogQUFDICovXG4gIEFBQyA9ICdBQUMnLFxuICAvKiogRG9sYnkgRGlnaXRhbCAoQUMzKSAqL1xuICBBQzMgPSAnQUMzJyxcbiAgLyoqIERvbGJ5IERpZ2l0YWwgUGx1cyAoRUFDMykgKi9cbiAgRUFDMyA9ICdFQUMzJyxcbiAgLyoqIERvbGJ5IERpZ2l0YWwgUGx1cyB3aXRoIEF0bW9zIChFQUMzIEF0bW9zKSAqL1xuICBFQUMzX0FUTU9TID0gJ0VBQzNfQVRNT1MnLFxuICAvKiogTVBFRy0xIExheWVyIElJIChNUDIpICovXG4gIE1QMiA9ICdNUDInLFxuICAvKiogV0FWICovXG4gIFdBViA9ICdXQVYnLFxuICAvKiogUGFzc3Rocm91Z2ggKG5vIHRyYW5zY29kaW5nKSAqL1xuICBQQVNTVEhST1VHSCA9ICdQQVNTVEhST1VHSCcsXG59XG5cbi8qKlxuICogQUFDIHByb2ZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYWNQcm9maWxlIHtcbiAgLyoqIEhFVjEgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBIRVYxID0gbmV3IEFhY1Byb2ZpbGUoJ0hFVjEnKTtcbiAgLyoqIEhFVjIgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBIRVYyID0gbmV3IEFhY1Byb2ZpbGUoJ0hFVjInKTtcbiAgLyoqIExDIChMb3cgQ29tcGxleGl0eSkgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMQyA9IG5ldyBBYWNQcm9maWxlKCdMQycpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogQWFjUHJvZmlsZSB7XG4gICAgcmV0dXJuIG5ldyBBYWNQcm9maWxlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBBQUMgY29kaW5nIG1vZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYWNDb2RpbmdNb2RlIHtcbiAgLyoqIEFkIHJlY2VpdmVyIG1peCDigJQgcmVjZWl2ZXMgc3RlcmVvIGF1ZGlvIGRlc2NyaXB0aW9uICsgY29udHJvbCB0cmFjayBwZXIgRVRTSSBUUyAxMDEgMTU0IEFubmV4IEUuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQURfUkVDRUlWRVJfTUlYID0gbmV3IEFhY0NvZGluZ01vZGUoJ0FEX1JFQ0VJVkVSX01JWCcpO1xuICAvKiogMS4wIChtb25vKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzFfMCA9IG5ldyBBYWNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8xXzAnKTtcbiAgLyoqIDErMSAoZHVhbCBtb25vKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzFfMSA9IG5ldyBBYWNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8xXzEnKTtcbiAgLyoqIDIuMCAoc3RlcmVvKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzJfMCA9IG5ldyBBYWNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8yXzAnKTtcbiAgLyoqIDUuMSBzdXJyb3VuZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzVfMSA9IG5ldyBBYWNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV81XzEnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEFhY0NvZGluZ01vZGUge1xuICAgIHJldHVybiBuZXcgQWFjQ29kaW5nTW9kZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogQUFDIHJhdGUgY29udHJvbCBtb2RlLlxuICovXG5leHBvcnQgY2xhc3MgQWFjUmF0ZUNvbnRyb2xNb2RlIHtcbiAgLyoqIENvbnN0YW50IGJpdHJhdGUgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDQlIgPSBuZXcgQWFjUmF0ZUNvbnRyb2xNb2RlKCdDQlInKTtcbiAgLyoqIFZhcmlhYmxlIGJpdHJhdGUgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBWQlIgPSBuZXcgQWFjUmF0ZUNvbnRyb2xNb2RlKCdWQlInKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEFhY1JhdGVDb250cm9sTW9kZSB7XG4gICAgcmV0dXJuIG5ldyBBYWNSYXRlQ29udHJvbE1vZGUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEFBQyByYXcgZm9ybWF0LlxuICovXG5leHBvcnQgY2xhc3MgQWFjUmF3Rm9ybWF0IHtcbiAgLyoqIExBVE0vTE9BUyAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExBVE1fTE9BUyA9IG5ldyBBYWNSYXdGb3JtYXQoJ0xBVE1fTE9BUycpO1xuICAvKiogTm9uZSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PTkUgPSBuZXcgQWFjUmF3Rm9ybWF0KCdOT05FJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBBYWNSYXdGb3JtYXQge1xuICAgIHJldHVybiBuZXcgQWFjUmF3Rm9ybWF0KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBBQUMgc3BlY2lmaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFhY1NwZWMge1xuICAvKiogTVBFRy0yIEFBQyAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1QRUcyID0gbmV3IEFhY1NwZWMoJ01QRUcyJyk7XG4gIC8qKiBNUEVHLTQgQUFDICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTVBFRzQgPSBuZXcgQWFjU3BlYygnTVBFRzQnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEFhY1NwZWMge1xuICAgIHJldHVybiBuZXcgQWFjU3BlYyh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogQUFDIGlucHV0IHR5cGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYWNJbnB1dFR5cGUge1xuICAvKiogQnJvYWRjYXN0ZXIgbWl4ZWQgQUQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCUk9BRENBU1RFUl9NSVhFRF9BRCA9IG5ldyBBYWNJbnB1dFR5cGUoJ0JST0FEQ0FTVEVSX01JWEVEX0FEJyk7XG4gIC8qKiBOb3JtYWwgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT1JNQUwgPSBuZXcgQWFjSW5wdXRUeXBlKCdOT1JNQUwnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEFhY0lucHV0VHlwZSB7XG4gICAgcmV0dXJuIG5ldyBBYWNJbnB1dFR5cGUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEFBQyBWQlIgcXVhbGl0eSBsZXZlbC5cbiAqL1xuZXhwb3J0IGNsYXNzIEFhY1ZiclF1YWxpdHkge1xuICAvKiogSGlnaCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEhJR0ggPSBuZXcgQWFjVmJyUXVhbGl0eSgnSElHSCcpO1xuICAvKiogTG93ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTE9XID0gbmV3IEFhY1ZiclF1YWxpdHkoJ0xPVycpO1xuICAvKiogTWVkaXVtIGhpZ2ggKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNRURJVU1fSElHSCA9IG5ldyBBYWNWYnJRdWFsaXR5KCdNRURJVU1fSElHSCcpO1xuICAvKiogTWVkaXVtIGxvdyAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1FRElVTV9MT1cgPSBuZXcgQWFjVmJyUXVhbGl0eSgnTUVESVVNX0xPVycpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogQWFjVmJyUXVhbGl0eSB7XG4gICAgcmV0dXJuIG5ldyBBYWNWYnJRdWFsaXR5KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFDMyBlbnVtc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBBQzMgYXR0ZW51YXRpb24gY29udHJvbC5cbiAqL1xuZXhwb3J0IGNsYXNzIEFjM0F0dGVudWF0aW9uQ29udHJvbCB7XG4gIC8qKiBBcHBseSAzIGRCIGF0dGVudWF0aW9uIHRvIHN1cnJvdW5kIGNoYW5uZWxzICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVRURU5VQVRFXzNfREIgPSBuZXcgQWMzQXR0ZW51YXRpb25Db250cm9sKCdBVFRFTlVBVEVfM19EQicpO1xuICAvKiogTm8gYXR0ZW51YXRpb24gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT05FID0gbmV3IEFjM0F0dGVudWF0aW9uQ29udHJvbCgnTk9ORScpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogQWMzQXR0ZW51YXRpb25Db250cm9sIHtcbiAgICByZXR1cm4gbmV3IEFjM0F0dGVudWF0aW9uQ29udHJvbCh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogQUMzIGJpdHN0cmVhbSBtb2RlLlxuICovXG5leHBvcnQgY2xhc3MgQWMzQml0c3RyZWFtTW9kZSB7XG4gIC8qKiBDb21tZW50YXJ5ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09NTUVOVEFSWSA9IG5ldyBBYzNCaXRzdHJlYW1Nb2RlKCdDT01NRU5UQVJZJyk7XG4gIC8qKiBDb21wbGV0ZSBtYWluICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09NUExFVEVfTUFJTiA9IG5ldyBBYzNCaXRzdHJlYW1Nb2RlKCdDT01QTEVURV9NQUlOJyk7XG4gIC8qKiBEaWFsb2d1ZSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERJQUxPR1VFID0gbmV3IEFjM0JpdHN0cmVhbU1vZGUoJ0RJQUxPR1VFJyk7XG4gIC8qKiBFbWVyZ2VuY3kgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTUVSR0VOQ1kgPSBuZXcgQWMzQml0c3RyZWFtTW9kZSgnRU1FUkdFTkNZJyk7XG4gIC8qKiBIZWFyaW5nIGltcGFpcmVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSEVBUklOR19JTVBBSVJFRCA9IG5ldyBBYzNCaXRzdHJlYW1Nb2RlKCdIRUFSSU5HX0lNUEFJUkVEJyk7XG4gIC8qKiBNdXNpYyBhbmQgZWZmZWN0cyAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1VU0lDX0FORF9FRkZFQ1RTID0gbmV3IEFjM0JpdHN0cmVhbU1vZGUoJ01VU0lDX0FORF9FRkZFQ1RTJyk7XG4gIC8qKiBWaXN1YWxseSBpbXBhaXJlZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFZJU1VBTExZX0lNUEFJUkVEID0gbmV3IEFjM0JpdHN0cmVhbU1vZGUoJ1ZJU1VBTExZX0lNUEFJUkVEJyk7XG4gIC8qKiBWb2ljZSBvdmVyICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgVk9JQ0VfT1ZFUiA9IG5ldyBBYzNCaXRzdHJlYW1Nb2RlKCdWT0lDRV9PVkVSJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBBYzNCaXRzdHJlYW1Nb2RlIHtcbiAgICByZXR1cm4gbmV3IEFjM0JpdHN0cmVhbU1vZGUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEFDMyBjb2RpbmcgbW9kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFjM0NvZGluZ01vZGUge1xuICAvKiogMS4wIChtb25vKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzFfMCA9IG5ldyBBYzNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8xXzAnKTtcbiAgLyoqIDErMSAoZHVhbCBtb25vKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzFfMSA9IG5ldyBBYzNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8xXzEnKTtcbiAgLyoqIDIuMCAoc3RlcmVvKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzJfMCA9IG5ldyBBYzNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8yXzAnKTtcbiAgLyoqIDMvMiAoNS4wIHN1cnJvdW5kKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzNfMl9MRkUgPSBuZXcgQWMzQ29kaW5nTW9kZSgnQ09ESU5HX01PREVfM18yX0xGRScpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogQWMzQ29kaW5nTW9kZSB7XG4gICAgcmV0dXJuIG5ldyBBYzNDb2RpbmdNb2RlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBBQzMgRFJDIHByb2ZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYzNEcmNQcm9maWxlIHtcbiAgLyoqIEZpbG0gc3RhbmRhcmQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGSUxNX1NUQU5EQVJEID0gbmV3IEFjM0RyY1Byb2ZpbGUoJ0ZJTE1fU1RBTkRBUkQnKTtcbiAgLyoqIE5vbmUgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT05FID0gbmV3IEFjM0RyY1Byb2ZpbGUoJ05PTkUnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEFjM0RyY1Byb2ZpbGUge1xuICAgIHJldHVybiBuZXcgQWMzRHJjUHJvZmlsZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogQUMzIExGRSBmaWx0ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBBYzNMZmVGaWx0ZXIge1xuICAvKiogRGlzYWJsZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBESVNBQkxFRCA9IG5ldyBBYzNMZmVGaWx0ZXIoJ0RJU0FCTEVEJyk7XG4gIC8qKiBFbmFibGVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU5BQkxFRCA9IG5ldyBBYzNMZmVGaWx0ZXIoJ0VOQUJMRUQnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEFjM0xmZUZpbHRlciB7XG4gICAgcmV0dXJuIG5ldyBBYzNMZmVGaWx0ZXIodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEFDMyBtZXRhZGF0YSBjb250cm9sLlxuICovXG5leHBvcnQgY2xhc3MgQWMzTWV0YWRhdGFDb250cm9sIHtcbiAgLyoqIEZvbGxvdyBpbnB1dCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZPTExPV19JTlBVVCA9IG5ldyBBYzNNZXRhZGF0YUNvbnRyb2woJ0ZPTExPV19JTlBVVCcpO1xuICAvKiogVXNlIGNvbmZpZ3VyZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBVU0VfQ09ORklHVVJFRCA9IG5ldyBBYzNNZXRhZGF0YUNvbnRyb2woJ1VTRV9DT05GSUdVUkVEJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBBYzNNZXRhZGF0YUNvbnRyb2wge1xuICAgIHJldHVybiBuZXcgQWMzTWV0YWRhdGFDb250cm9sKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVBQzMgZW51bXNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRUFDMyBhdHRlbnVhdGlvbiBjb250cm9sLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM0F0dGVudWF0aW9uQ29udHJvbCB7XG4gIC8qKiBBcHBseSAzIGRCIGF0dGVudWF0aW9uIHRvIHN1cnJvdW5kIGNoYW5uZWxzICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQVRURU5VQVRFXzNfREIgPSBuZXcgRWFjM0F0dGVudWF0aW9uQ29udHJvbCgnQVRURU5VQVRFXzNfREInKTtcbiAgLyoqIE5vIGF0dGVudWF0aW9uICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ORSA9IG5ldyBFYWMzQXR0ZW51YXRpb25Db250cm9sKCdOT05FJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBFYWMzQXR0ZW51YXRpb25Db250cm9sIHtcbiAgICByZXR1cm4gbmV3IEVhYzNBdHRlbnVhdGlvbkNvbnRyb2wodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEVBQzMgYml0c3RyZWFtIG1vZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBFYWMzQml0c3RyZWFtTW9kZSB7XG4gIC8qKiBDb21tZW50YXJ5ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09NTUVOVEFSWSA9IG5ldyBFYWMzQml0c3RyZWFtTW9kZSgnQ09NTUVOVEFSWScpO1xuICAvKiogQ29tcGxldGUgbWFpbiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPTVBMRVRFX01BSU4gPSBuZXcgRWFjM0JpdHN0cmVhbU1vZGUoJ0NPTVBMRVRFX01BSU4nKTtcbiAgLyoqIEVtZXJnZW5jeSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEVNRVJHRU5DWSA9IG5ldyBFYWMzQml0c3RyZWFtTW9kZSgnRU1FUkdFTkNZJyk7XG4gIC8qKiBIZWFyaW5nIGltcGFpcmVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSEVBUklOR19JTVBBSVJFRCA9IG5ldyBFYWMzQml0c3RyZWFtTW9kZSgnSEVBUklOR19JTVBBSVJFRCcpO1xuICAvKiogVmlzdWFsbHkgaW1wYWlyZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBWSVNVQUxMWV9JTVBBSVJFRCA9IG5ldyBFYWMzQml0c3RyZWFtTW9kZSgnVklTVUFMTFlfSU1QQUlSRUQnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNCaXRzdHJlYW1Nb2RlIHtcbiAgICByZXR1cm4gbmV3IEVhYzNCaXRzdHJlYW1Nb2RlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBFQUMzIGNvZGluZyBtb2RlLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM0NvZGluZ01vZGUge1xuICAvKiogMS4wIChtb25vKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzFfMCA9IG5ldyBFYWMzQ29kaW5nTW9kZSgnQ09ESU5HX01PREVfMV8wJyk7XG4gIC8qKiAyLjAgKHN0ZXJlbykgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDT0RJTkdfTU9ERV8yXzAgPSBuZXcgRWFjM0NvZGluZ01vZGUoJ0NPRElOR19NT0RFXzJfMCcpO1xuICAvKiogMy8yICg1LjAgc3Vycm91bmQpICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09ESU5HX01PREVfM18yID0gbmV3IEVhYzNDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8zXzInKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNDb2RpbmdNb2RlIHtcbiAgICByZXR1cm4gbmV3IEVhYzNDb2RpbmdNb2RlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBFQUMzIERDIGZpbHRlci5cbiAqL1xuZXhwb3J0IGNsYXNzIEVhYzNEY0ZpbHRlciB7XG4gIC8qKiBEaXNhYmxlZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERJU0FCTEVEID0gbmV3IEVhYzNEY0ZpbHRlcignRElTQUJMRUQnKTtcbiAgLyoqIEVuYWJsZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTkFCTEVEID0gbmV3IEVhYzNEY0ZpbHRlcignRU5BQkxFRCcpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogRWFjM0RjRmlsdGVyIHtcbiAgICByZXR1cm4gbmV3IEVhYzNEY0ZpbHRlcih2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogRUFDMyBEUkMgbGluZSBtb2RlIHByb2ZpbGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBFYWMzRHJjTGluZSB7XG4gIC8qKiBGaWxtIGxpZ2h0ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRklMTV9MSUdIVCA9IG5ldyBFYWMzRHJjTGluZSgnRklMTV9MSUdIVCcpO1xuICAvKiogRmlsbSBzdGFuZGFyZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJTE1fU1RBTkRBUkQgPSBuZXcgRWFjM0RyY0xpbmUoJ0ZJTE1fU1RBTkRBUkQnKTtcbiAgLyoqIE11c2ljIGxpZ2h0ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTVVTSUNfTElHSFQgPSBuZXcgRWFjM0RyY0xpbmUoJ01VU0lDX0xJR0hUJyk7XG4gIC8qKiBNdXNpYyBzdGFuZGFyZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1VU0lDX1NUQU5EQVJEID0gbmV3IEVhYzNEcmNMaW5lKCdNVVNJQ19TVEFOREFSRCcpO1xuICAvKiogTm9uZSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PTkUgPSBuZXcgRWFjM0RyY0xpbmUoJ05PTkUnKTtcbiAgLyoqIFNwZWVjaCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFNQRUVDSCA9IG5ldyBFYWMzRHJjTGluZSgnU1BFRUNIJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBFYWMzRHJjTGluZSB7XG4gICAgcmV0dXJuIG5ldyBFYWMzRHJjTGluZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogRUFDMyBEUkMgUkYgbW9kZSBwcm9maWxlLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM0RyY1JmIHtcbiAgLyoqIEZpbG0gbGlnaHQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGSUxNX0xJR0hUID0gbmV3IEVhYzNEcmNSZignRklMTV9MSUdIVCcpO1xuICAvKiogRmlsbSBzdGFuZGFyZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEZJTE1fU1RBTkRBUkQgPSBuZXcgRWFjM0RyY1JmKCdGSUxNX1NUQU5EQVJEJyk7XG4gIC8qKiBNdXNpYyBsaWdodCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1VU0lDX0xJR0hUID0gbmV3IEVhYzNEcmNSZignTVVTSUNfTElHSFQnKTtcbiAgLyoqIE11c2ljIHN0YW5kYXJkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTVVTSUNfU1RBTkRBUkQgPSBuZXcgRWFjM0RyY1JmKCdNVVNJQ19TVEFOREFSRCcpO1xuICAvKiogTm9uZSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PTkUgPSBuZXcgRWFjM0RyY1JmKCdOT05FJyk7XG4gIC8qKiBTcGVlY2ggKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTUEVFQ0ggPSBuZXcgRWFjM0RyY1JmKCdTUEVFQ0gnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNEcmNSZiB7XG4gICAgcmV0dXJuIG5ldyBFYWMzRHJjUmYodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEVBQzMgTEZFIGNvbnRyb2wuXG4gKi9cbmV4cG9ydCBjbGFzcyBFYWMzTGZlQ29udHJvbCB7XG4gIC8qKiBMRkUgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMRkUgPSBuZXcgRWFjM0xmZUNvbnRyb2woJ0xGRScpO1xuICAvKiogTm8gTEZFICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9fTEZFID0gbmV3IEVhYzNMZmVDb250cm9sKCdOT19MRkUnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNMZmVDb250cm9sIHtcbiAgICByZXR1cm4gbmV3IEVhYzNMZmVDb250cm9sKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBFQUMzIExGRSBmaWx0ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBFYWMzTGZlRmlsdGVyIHtcbiAgLyoqIERpc2FibGVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRElTQUJMRUQgPSBuZXcgRWFjM0xmZUZpbHRlcignRElTQUJMRUQnKTtcbiAgLyoqIEVuYWJsZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBFTkFCTEVEID0gbmV3IEVhYzNMZmVGaWx0ZXIoJ0VOQUJMRUQnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNMZmVGaWx0ZXIge1xuICAgIHJldHVybiBuZXcgRWFjM0xmZUZpbHRlcih2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogRUFDMyBtZXRhZGF0YSBjb250cm9sLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM01ldGFkYXRhQ29udHJvbCB7XG4gIC8qKiBGb2xsb3cgaW5wdXQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGT0xMT1dfSU5QVVQgPSBuZXcgRWFjM01ldGFkYXRhQ29udHJvbCgnRk9MTE9XX0lOUFVUJyk7XG4gIC8qKiBVc2UgY29uZmlndXJlZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFVTRV9DT05GSUdVUkVEID0gbmV3IEVhYzNNZXRhZGF0YUNvbnRyb2woJ1VTRV9DT05GSUdVUkVEJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBFYWMzTWV0YWRhdGFDb250cm9sIHtcbiAgICByZXR1cm4gbmV3IEVhYzNNZXRhZGF0YUNvbnRyb2wodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEVBQzMgcGFzc3Rocm91Z2ggY29udHJvbC5cbiAqL1xuZXhwb3J0IGNsYXNzIEVhYzNQYXNzdGhyb3VnaENvbnRyb2wge1xuICAvKiogTm8gcGFzc3Rocm91Z2ggKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT19QQVNTVEhST1VHSCA9IG5ldyBFYWMzUGFzc3Rocm91Z2hDb250cm9sKCdOT19QQVNTVEhST1VHSCcpO1xuICAvKiogV2hlbiBwb3NzaWJsZSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFdIRU5fUE9TU0lCTEUgPSBuZXcgRWFjM1Bhc3N0aHJvdWdoQ29udHJvbCgnV0hFTl9QT1NTSUJMRScpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogRWFjM1Bhc3N0aHJvdWdoQ29udHJvbCB7XG4gICAgcmV0dXJuIG5ldyBFYWMzUGFzc3Rocm91Z2hDb250cm9sKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBFQUMzIHBoYXNlIGNvbnRyb2wuXG4gKi9cbmV4cG9ydCBjbGFzcyBFYWMzUGhhc2VDb250cm9sIHtcbiAgLyoqIE5vIHNoaWZ0ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9fU0hJRlQgPSBuZXcgRWFjM1BoYXNlQ29udHJvbCgnTk9fU0hJRlQnKTtcbiAgLyoqIFNoaWZ0IDkwIGRlZ3JlZXMgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTSElGVF85MF9ERUdSRUVTID0gbmV3IEVhYzNQaGFzZUNvbnRyb2woJ1NISUZUXzkwX0RFR1JFRVMnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNQaGFzZUNvbnRyb2wge1xuICAgIHJldHVybiBuZXcgRWFjM1BoYXNlQ29udHJvbCh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogRUFDMyBzdGVyZW8gZG93bm1peCBwcmVmZXJlbmNlLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM1N0ZXJlb0Rvd25taXgge1xuICAvKiogRFBMMiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERQTDIgPSBuZXcgRWFjM1N0ZXJlb0Rvd25taXgoJ0RQTDInKTtcbiAgLyoqIExvL1JvICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTE9fUk8gPSBuZXcgRWFjM1N0ZXJlb0Rvd25taXgoJ0xPX1JPJyk7XG4gIC8qKiBMdC9SdCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExUX1JUID0gbmV3IEVhYzNTdGVyZW9Eb3dubWl4KCdMVF9SVCcpO1xuICAvKiogTm90IGluZGljYXRlZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE5PVF9JTkRJQ0FURUQgPSBuZXcgRWFjM1N0ZXJlb0Rvd25taXgoJ05PVF9JTkRJQ0FURUQnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNTdGVyZW9Eb3dubWl4IHtcbiAgICByZXR1cm4gbmV3IEVhYzNTdGVyZW9Eb3dubWl4KHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLyoqXG4gKiBFQUMzIHN1cnJvdW5kIGV4IG1vZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBFYWMzU3Vycm91bmRFeE1vZGUge1xuICAvKiogRGlzYWJsZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBESVNBQkxFRCA9IG5ldyBFYWMzU3Vycm91bmRFeE1vZGUoJ0RJU0FCTEVEJyk7XG4gIC8qKiBFbmFibGVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU5BQkxFRCA9IG5ldyBFYWMzU3Vycm91bmRFeE1vZGUoJ0VOQUJMRUQnKTtcbiAgLyoqIE5vdCBpbmRpY2F0ZWQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBOT1RfSU5ESUNBVEVEID0gbmV3IEVhYzNTdXJyb3VuZEV4TW9kZSgnTk9UX0lORElDQVRFRCcpO1xuXG4gIC8qKiBBIHZhbHVlIG5vdCB5ZXQgbW9kZWxsZWQgYnkgQVdTIENESy4gKi9cbiAgcHVibGljIHN0YXRpYyBvZih2YWx1ZTogc3RyaW5nKTogRWFjM1N1cnJvdW5kRXhNb2RlIHtcbiAgICByZXR1cm4gbmV3IEVhYzNTdXJyb3VuZEV4TW9kZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8qKlxuICogRUFDMyBzdXJyb3VuZCBtb2RlLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM1N1cnJvdW5kTW9kZSB7XG4gIC8qKiBEaXNhYmxlZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERJU0FCTEVEID0gbmV3IEVhYzNTdXJyb3VuZE1vZGUoJ0RJU0FCTEVEJyk7XG4gIC8qKiBFbmFibGVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRU5BQkxFRCA9IG5ldyBFYWMzU3Vycm91bmRNb2RlKCdFTkFCTEVEJyk7XG4gIC8qKiBOb3QgaW5kaWNhdGVkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9UX0lORElDQVRFRCA9IG5ldyBFYWMzU3Vycm91bmRNb2RlKCdOT1RfSU5ESUNBVEVEJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBFYWMzU3Vycm91bmRNb2RlIHtcbiAgICByZXR1cm4gbmV3IEVhYzNTdXJyb3VuZE1vZGUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRUFDMyBBdG1vcyBlbnVtc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFQUMzIEF0bW9zIGNvZGluZyBtb2RlLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM0F0bW9zQ29kaW5nTW9kZSB7XG4gIC8qKiA1LjEuNCBzdXJyb3VuZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzVfMV80ID0gbmV3IEVhYzNBdG1vc0NvZGluZ01vZGUoJ0NPRElOR19NT0RFXzVfMV80Jyk7XG4gIC8qKiA3LjEuNCBzdXJyb3VuZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzdfMV80ID0gbmV3IEVhYzNBdG1vc0NvZGluZ01vZGUoJ0NPRElOR19NT0RFXzdfMV80Jyk7XG4gIC8qKiA5LjEuNiBzdXJyb3VuZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzlfMV82ID0gbmV3IEVhYzNBdG1vc0NvZGluZ01vZGUoJ0NPRElOR19NT0RFXzlfMV82Jyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBFYWMzQXRtb3NDb2RpbmdNb2RlIHtcbiAgICByZXR1cm4gbmV3IEVhYzNBdG1vc0NvZGluZ01vZGUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEVBQzMgQXRtb3MgRFJDIGxpbmUgbW9kZSBwcm9maWxlLlxuICovXG5leHBvcnQgY2xhc3MgRWFjM0F0bW9zRHJjTGluZSB7XG4gIC8qKiBGaWxtIGxpZ2h0ICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRklMTV9MSUdIVCA9IG5ldyBFYWMzQXRtb3NEcmNMaW5lKCdGSUxNX0xJR0hUJyk7XG4gIC8qKiBGaWxtIHN0YW5kYXJkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRklMTV9TVEFOREFSRCA9IG5ldyBFYWMzQXRtb3NEcmNMaW5lKCdGSUxNX1NUQU5EQVJEJyk7XG4gIC8qKiBNdXNpYyBsaWdodCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1VU0lDX0xJR0hUID0gbmV3IEVhYzNBdG1vc0RyY0xpbmUoJ01VU0lDX0xJR0hUJyk7XG4gIC8qKiBNdXNpYyBzdGFuZGFyZCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IE1VU0lDX1NUQU5EQVJEID0gbmV3IEVhYzNBdG1vc0RyY0xpbmUoJ01VU0lDX1NUQU5EQVJEJyk7XG4gIC8qKiBOb25lICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ORSA9IG5ldyBFYWMzQXRtb3NEcmNMaW5lKCdOT05FJyk7XG4gIC8qKiBTcGVlY2ggKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBTUEVFQ0ggPSBuZXcgRWFjM0F0bW9zRHJjTGluZSgnU1BFRUNIJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBFYWMzQXRtb3NEcmNMaW5lIHtcbiAgICByZXR1cm4gbmV3IEVhYzNBdG1vc0RyY0xpbmUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIEVBQzMgQXRtb3MgRFJDIFJGIG1vZGUgcHJvZmlsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEVhYzNBdG1vc0RyY1JmIHtcbiAgLyoqIEZpbG0gbGlnaHQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBGSUxNX0xJR0hUID0gbmV3IEVhYzNBdG1vc0RyY1JmKCdGSUxNX0xJR0hUJyk7XG4gIC8qKiBGaWxtIHN0YW5kYXJkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRklMTV9TVEFOREFSRCA9IG5ldyBFYWMzQXRtb3NEcmNSZignRklMTV9TVEFOREFSRCcpO1xuICAvKiogTXVzaWMgbGlnaHQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBNVVNJQ19MSUdIVCA9IG5ldyBFYWMzQXRtb3NEcmNSZignTVVTSUNfTElHSFQnKTtcbiAgLyoqIE11c2ljIHN0YW5kYXJkICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTVVTSUNfU1RBTkRBUkQgPSBuZXcgRWFjM0F0bW9zRHJjUmYoJ01VU0lDX1NUQU5EQVJEJyk7XG4gIC8qKiBOb25lICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgTk9ORSA9IG5ldyBFYWMzQXRtb3NEcmNSZignTk9ORScpO1xuICAvKiogU3BlZWNoICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU1BFRUNIID0gbmV3IEVhYzNBdG1vc0RyY1JmKCdTUEVFQ0gnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IEVhYzNBdG1vc0RyY1JmIHtcbiAgICByZXR1cm4gbmV3IEVhYzNBdG1vc0RyY1JmKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBUaGUgdW5kZXJseWluZyBzdHJpbmcgdmFsdWUgcGFzc2VkIHRvIENsb3VkRm9ybWF0aW9uLiAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWU6IHN0cmluZztcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1QMiBlbnVtc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBNUDIgY29kaW5nIG1vZGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBNcDJDb2RpbmdNb2RlIHtcbiAgLyoqIDEuMCAobW9ubykgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDT0RJTkdfTU9ERV8xXzAgPSBuZXcgTXAyQ29kaW5nTW9kZSgnQ09ESU5HX01PREVfMV8wJyk7XG4gIC8qKiAyLjAgKHN0ZXJlbykgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDT0RJTkdfTU9ERV8yXzAgPSBuZXcgTXAyQ29kaW5nTW9kZSgnQ09ESU5HX01PREVfMl8wJyk7XG5cbiAgLyoqIEEgdmFsdWUgbm90IHlldCBtb2RlbGxlZCBieSBBV1MgQ0RLLiAqL1xuICBwdWJsaWMgc3RhdGljIG9mKHZhbHVlOiBzdHJpbmcpOiBNcDJDb2RpbmdNb2RlIHtcbiAgICByZXR1cm4gbmV3IE1wMkNvZGluZ01vZGUodmFsdWUpO1xuICB9XG5cbiAgLyoqIFRoZSB1bmRlcmx5aW5nIHN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gQ2xvdWRGb3JtYXRpb24uICovXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29uc3RydWN0b3IodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gV0FWIGVudW1zXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFdBViBjb2RpbmcgbW9kZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFdhdkNvZGluZ01vZGUge1xuICAvKiogMS4wIChtb25vKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzFfMCA9IG5ldyBXYXZDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8xXzAnKTtcbiAgLyoqIDIuMCAoc3RlcmVvKSAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzJfMCA9IG5ldyBXYXZDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV8yXzAnKTtcbiAgLyoqIDQuMCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzRfMCA9IG5ldyBXYXZDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV80XzAnKTtcbiAgLyoqIDguMCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPRElOR19NT0RFXzhfMCA9IG5ldyBXYXZDb2RpbmdNb2RlKCdDT0RJTkdfTU9ERV84XzAnKTtcblxuICAvKiogQSB2YWx1ZSBub3QgeWV0IG1vZGVsbGVkIGJ5IEFXUyBDREsuICovXG4gIHB1YmxpYyBzdGF0aWMgb2YodmFsdWU6IHN0cmluZyk6IFdhdkNvZGluZ01vZGUge1xuICAgIHJldHVybiBuZXcgV2F2Q29kaW5nTW9kZSh2YWx1ZSk7XG4gIH1cblxuICAvKiogVGhlIHVuZGVybHlpbmcgc3RyaW5nIHZhbHVlIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbi4gKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQcm9wcyBpbnRlcmZhY2VzXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIEFBQyBjb2RlYyBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYWNTZXR0aW5nc1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBhdmVyYWdlIGJpdHJhdGUuXG4gICAqIEBkZWZhdWx0IEJpdHJhdGUua2JwcygxOTIpXG4gICAqL1xuICByZWFkb25seSBiaXRyYXRlPzogQml0cmF0ZTtcbiAgLyoqXG4gICAqIFRoZSBBQUMgcHJvZmlsZS5cbiAgICogQGRlZmF1bHQgQWFjUHJvZmlsZS5MQ1xuICAgKi9cbiAgcmVhZG9ubHkgcHJvZmlsZT86IEFhY1Byb2ZpbGU7XG4gIC8qKlxuICAgKiBUaGUgY29kaW5nIG1vZGUgKG1vbm8sIHN0ZXJlbywgNS4xKS5cbiAgICogQGRlZmF1bHQgQWFjQ29kaW5nTW9kZS5DT0RJTkdfTU9ERV8yXzBcbiAgICovXG4gIHJlYWRvbmx5IGNvZGluZ01vZGU/OiBBYWNDb2RpbmdNb2RlO1xuICAvKipcbiAgICogVGhlIHJhdGUgY29udHJvbCBtb2RlLlxuICAgKiBAZGVmYXVsdCBBYWNSYXRlQ29udHJvbE1vZGUuQ0JSXG4gICAqL1xuICByZWFkb25seSByYXRlQ29udHJvbE1vZGU/OiBBYWNSYXRlQ29udHJvbE1vZGU7XG4gIC8qKlxuICAgKiBUaGUgc2FtcGxlIHJhdGUuXG4gICAqIEBkZWZhdWx0IEF1ZGlvU2FtcGxlUmF0ZS5IWl80ODAwMFxuICAgKi9cbiAgcmVhZG9ubHkgc2FtcGxlUmF0ZT86IEF1ZGlvU2FtcGxlUmF0ZTtcbiAgLyoqXG4gICAqIFNldCB0byBicm9hZGNhc3Rlck1peGVkQWQgd2hlbiB0aGUgaW5wdXQgY29udGFpbnMgcHJlLW1peGVkIG1haW4gYXVkaW8gKyBBRCAobmFycmF0aW9uKSBhcyBhIHN0ZXJlbyBwYWlyLlxuICAgKiBAZGVmYXVsdCBBYWNJbnB1dFR5cGUuTk9STUFMXG4gICAqL1xuICByZWFkb25seSBpbnB1dFR5cGU/OiBBYWNJbnB1dFR5cGU7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBMQVRNL0xPQVMgQUFDIG91dHB1dCBmb3IgcmF3IGNvbnRhaW5lcnMuXG4gICAqIEBkZWZhdWx0IEFhY1Jhd0Zvcm1hdC5OT05FXG4gICAqL1xuICByZWFkb25seSByYXdGb3JtYXQ/OiBBYWNSYXdGb3JtYXQ7XG4gIC8qKlxuICAgKiBUaGUgQUFDIHNwZWNpZmljYXRpb24gKE1QRUctNCBvciBNUEVHLTIpIHVzZWQgdG8gZW5jb2RlIHRoZSBhdWRpby5cbiAgICpcbiAgICogU2V0IHRvIGBBYWNTcGVjLk1QRUcyYCB0byBlbWl0IE1QRUctMiBBQUMgaW5zdGVhZCBvZiBNUEVHLTQgQUFDIGZvciByYXcgb3IgTVBFRy0yIFRyYW5zcG9ydFxuICAgKiBTdHJlYW0gY29udGFpbmVycy5cbiAgICogQGRlZmF1bHQgQWFjU3BlYy5NUEVHNFxuICAgKi9cbiAgcmVhZG9ubHkgc3BlYz86IEFhY1NwZWM7XG4gIC8qKlxuICAgKiBUaGUgVkJSIHF1YWxpdHkgbGV2ZWwuIFVzZWQgb25seSBpZiByYXRlQ29udHJvbE1vZGUgaXMgVkJSLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgdmJyUXVhbGl0eT86IEFhY1ZiclF1YWxpdHk7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgQUMzIGNvZGVjIHNldHRpbmdzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFjM1NldHRpbmdzUHJvcHMge1xuICAvKipcbiAgICogVGhlIGF2ZXJhZ2UgYml0cmF0ZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGJpdHJhdGU/OiBCaXRyYXRlO1xuICAvKipcbiAgICogVGhlIERvbGJ5IERpZ2l0YWwgY29kaW5nIG1vZGUuXG4gICAqIEBkZWZhdWx0IEFjM0NvZGluZ01vZGUuQ09ESU5HX01PREVfMl8wXG4gICAqL1xuICByZWFkb25seSBjb2RpbmdNb2RlPzogQWMzQ29kaW5nTW9kZTtcbiAgLyoqXG4gICAqIFRoZSBkaWFsb2d1ZSBub3JtYWxpemF0aW9uIGxldmVsICgx4oCTMzEpLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZGlhbE5vcm0/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBBcHBsaWVzIGEgMyBkQiBhdHRlbnVhdGlvbiB0byB0aGUgc3Vycm91bmQgY2hhbm5lbHMuIFVzZWQgb25seSBmb3IgdGhlIDMvMiBjb2RpbmcgbW9kZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGF0dGVudWF0aW9uQ29udHJvbD86IEFjM0F0dGVudWF0aW9uQ29udHJvbDtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgYml0c3RyZWFtIG1vZGUgKGJzbW9kKSBmb3IgdGhlIGVtaXR0ZWQgQUMtMyBzdHJlYW0uXG4gICAqIEBkZWZhdWx0IEFjM0JpdHN0cmVhbU1vZGUuQ09NUExFVEVfTUFJTlxuICAgKi9cbiAgcmVhZG9ubHkgYml0c3RyZWFtTW9kZT86IEFjM0JpdHN0cmVhbU1vZGU7XG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gZmlsbVN0YW5kYXJkLCBhZGRzIGR5bmFtaWMgcmFuZ2UgY29tcHJlc3Npb24gc2lnbmFsaW5nIHRvIHRoZSBvdXRwdXQgYml0c3RyZWFtLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZHJjUHJvZmlsZT86IEFjM0RyY1Byb2ZpbGU7XG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBlbmFibGVkLCBhcHBsaWVzIGEgMTIwSHogbG93cGFzcyBmaWx0ZXIgdG8gdGhlIExGRSBjaGFubmVsIHByaW9yIHRvIGVuY29kaW5nLlxuICAgKiBWYWxpZCBvbmx5IGluIGNvZGluZ01vZGUzMkxmZSBtb2RlLlxuICAgKiBAZGVmYXVsdCBBYzNMZmVGaWx0ZXIuRElTQUJMRURcbiAgICovXG4gIHJlYWRvbmx5IGxmZUZpbHRlcj86IEFjM0xmZUZpbHRlcjtcbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIGZvbGxvd0lucHV0LCBlbmNvZGVyIG1ldGFkYXRhIGlzIHNvdXJjZWQgZnJvbSB0aGUgREQsIEREKywgb3IgRG9sYnlFIGRlY29kZXIgdGhhdCBzdXBwbGllcyB0aGlzIGF1ZGlvIGRhdGEuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YUNvbnRyb2w/OiBBYzNNZXRhZGF0YUNvbnRyb2w7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgRUFDMyBjb2RlYyBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFYWMzU2V0dGluZ3NQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYXZlcmFnZSBiaXRyYXRlLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgYml0cmF0ZT86IEJpdHJhdGU7XG4gIC8qKlxuICAgKiBUaGUgRG9sYnkgRGlnaXRhbCBQbHVzIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCBFYWMzQ29kaW5nTW9kZS5DT0RJTkdfTU9ERV8zXzJcbiAgICovXG4gIHJlYWRvbmx5IGNvZGluZ01vZGU/OiBFYWMzQ29kaW5nTW9kZTtcbiAgLyoqXG4gICAqIFRoZSBkaWFsb2d1ZSBub3JtYWxpemF0aW9uIGxldmVsICgx4oCTMzEpLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZGlhbE5vcm0/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBhdHRlbnVhdGUzRGIsIGFwcGxpZXMgYSAzIGRCIGF0dGVudWF0aW9uIHRvIHRoZSBzdXJyb3VuZCBjaGFubmVscy4gVXNlZCBvbmx5IGZvciB0aGUgMy8yIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCBFYWMzQXR0ZW51YXRpb25Db250cm9sLk5PTkVcbiAgICovXG4gIHJlYWRvbmx5IGF0dGVudWF0aW9uQ29udHJvbD86IEVhYzNBdHRlbnVhdGlvbkNvbnRyb2w7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIGJpdHN0cmVhbSBtb2RlIChic21vZCkgZm9yIHRoZSBlbWl0dGVkIEUtQUMtMyBzdHJlYW0uXG4gICAqIEBkZWZhdWx0IEVhYzNCaXRzdHJlYW1Nb2RlLkNPTVBMRVRFX01BSU5cbiAgICovXG4gIHJlYWRvbmx5IGJpdHN0cmVhbU1vZGU/OiBFYWMzQml0c3RyZWFtTW9kZTtcbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIGVuYWJsZWQsIGFjdGl2YXRlcyBhIERDIGhpZ2hwYXNzIGZpbHRlciBmb3IgYWxsIGlucHV0IGNoYW5uZWxzLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgZGNGaWx0ZXI/OiBFYWMzRGNGaWx0ZXI7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBEb2xieSBkeW5hbWljIHJhbmdlIGNvbXByZXNzaW9uIHByb2ZpbGUuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBkcmNMaW5lPzogRWFjM0RyY0xpbmU7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBwcm9maWxlIGZvciBoZWF2eSBEb2xieSBkeW5hbWljIHJhbmdlIGNvbXByZXNzaW9uLCBlbnN1cmluZyB0aGF0IHRoZSBpbnN0YW50YW5lb3VzIHNpZ25hbCBwZWFrcyBkbyBub3QgZXhjZWVkIHNwZWNpZmllZCBsZXZlbHMuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBkcmNSZj86IEVhYzNEcmNSZjtcbiAgLyoqXG4gICAqIFdoZW4gZW5jb2RpbmcgMy8yIGF1ZGlvLCBzZXR0aW5nIHRvIGxmZSBlbmFibGVzIHRoZSBMRkUgY2hhbm5lbC5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGxmZUNvbnRyb2w/OiBFYWMzTGZlQ29udHJvbDtcbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIGVuYWJsZWQsIGFwcGxpZXMgYSAxMjBIeiBsb3dwYXNzIGZpbHRlciB0byB0aGUgTEZFIGNoYW5uZWwgcHJpb3IgdG8gZW5jb2RpbmcuXG4gICAqIFZhbGlkIG9ubHkgd2l0aCBhIGNvZGluZ01vZGUzMiBjb2RpbmcgbW9kZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGxmZUZpbHRlcj86IEVhYzNMZmVGaWx0ZXI7XG4gIC8qKlxuICAgKiBUaGUgTGVmdCBvbmx5L1JpZ2h0IG9ubHkgY2VudGVyIG1peCBsZXZlbC4gVXNlZCBvbmx5IGZvciB0aGUgMy8yIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgbG9Sb0NlbnRlck1peExldmVsPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIExlZnQgb25seS9SaWdodCBvbmx5IHN1cnJvdW5kIG1peCBsZXZlbC4gVXNlZCBvbmx5IGZvciBhIDMvMiBjb2RpbmcgbW9kZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGxvUm9TdXJyb3VuZE1peExldmVsPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIExlZnQgdG90YWwvUmlnaHQgdG90YWwgY2VudGVyIG1peCBsZXZlbC4gVXNlZCBvbmx5IGZvciBhIDMvMiBjb2RpbmcgbW9kZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGx0UnRDZW50ZXJNaXhMZXZlbD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBMZWZ0IHRvdGFsL1JpZ2h0IHRvdGFsIHN1cnJvdW5kIG1peCBsZXZlbC4gVXNlZCBvbmx5IGZvciB0aGUgMy8yIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgbHRSdFN1cnJvdW5kTWl4TGV2ZWw/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaGVuIHNldCB0byBmb2xsb3dJbnB1dCwgZW5jb2RlciBtZXRhZGF0YSBpcyBzb3VyY2VkIGZyb20gdGhlIERELCBERCssIG9yIERvbGJ5RSBkZWNvZGVyIHRoYXQgc3VwcGxpZXMgdGhpcyBhdWRpbyBkYXRhLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGFDb250cm9sPzogRWFjM01ldGFkYXRhQ29udHJvbDtcbiAgLyoqXG4gICAqIFdoZW4gc2V0IHRvIHdoZW5Qb3NzaWJsZSwgaW5wdXQgREQrIGF1ZGlvIHdpbGwgYmUgcGFzc2VkIHRocm91Z2ggaWYgaXQgaXMgcHJlc2VudCBvbiB0aGUgaW5wdXQuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBwYXNzdGhyb3VnaENvbnRyb2w/OiBFYWMzUGFzc3Rocm91Z2hDb250cm9sO1xuICAvKipcbiAgICogV2hlbiBzZXQgdG8gc2hpZnQ5MERlZ3JlZXMsIGFwcGxpZXMgYSA5MC1kZWdyZWUgcGhhc2Ugc2hpZnQgdG8gdGhlIHN1cnJvdW5kIGNoYW5uZWxzLiBVc2VkIG9ubHkgZm9yIGEgMy8yIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgcGhhc2VDb250cm9sPzogRWFjM1BoYXNlQ29udHJvbDtcbiAgLyoqXG4gICAqIEEgc3RlcmVvIGRvd25taXggcHJlZmVyZW5jZS4gVXNlZCBvbmx5IGZvciB0aGUgMy8yIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgc3RlcmVvRG93bm1peD86IEVhYzNTdGVyZW9Eb3dubWl4O1xuICAvKipcbiAgICogV2hlbiBlbmNvZGluZyAzLzIgYXVkaW8sIHNldHMgd2hldGhlciBhbiBleHRyYSBjZW50ZXIgYmFjayBzdXJyb3VuZCBjaGFubmVsIGlzIG1hdHJpeCBlbmNvZGVkIGludG8gdGhlIGxlZnQgYW5kIHJpZ2h0IHN1cnJvdW5kIGNoYW5uZWxzLlxuICAgKiBAZGVmYXVsdCAtIHNlcnZpY2UgZGVmYXVsdFxuICAgKi9cbiAgcmVhZG9ubHkgc3Vycm91bmRFeE1vZGU/OiBFYWMzU3Vycm91bmRFeE1vZGU7XG4gIC8qKlxuICAgKiBXaGVuIGVuY29kaW5nIDIvMCBhdWRpbywgc2V0cyB3aGV0aGVyIERvbGJ5IFN1cnJvdW5kIGlzIG1hdHJpeC1lbmNvZGVkIGludG8gdGhlIHR3byBjaGFubmVscy5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IHN1cnJvdW5kTW9kZT86IEVhYzNTdXJyb3VuZE1vZGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgRUFDMyBBdG1vcyBjb2RlYyBzZXR0aW5ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFYWMzQXRtb3NTZXR0aW5nc1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBhdmVyYWdlIGJpdHJhdGUuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBiaXRyYXRlPzogQml0cmF0ZTtcbiAgLyoqXG4gICAqIFRoZSBjb2RpbmcgbW9kZSAoZS5nLiBDT0RJTkdfTU9ERV81XzFfNCwgQ09ESU5HX01PREVfN18xXzQsIENPRElOR19NT0RFXzlfMV82KS5cbiAgICogQGRlZmF1bHQgRWFjM0F0bW9zQ29kaW5nTW9kZS5DT0RJTkdfTU9ERV81XzFfNFxuICAgKi9cbiAgcmVhZG9ubHkgY29kaW5nTW9kZT86IEVhYzNBdG1vc0NvZGluZ01vZGU7XG4gIC8qKlxuICAgKiBUaGUgZGlhbG9ndWUgbm9ybWFsaXphdGlvbiBsZXZlbCAoMeKAkzMxKS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGRpYWxOb3JtPzogbnVtYmVyO1xuICAvKipcbiAgICogU2V0cyB0aGUgRG9sYnkgZHluYW1pYyByYW5nZSBjb21wcmVzc2lvbiBsaW5lIG1vZGUgcHJvZmlsZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGRyY0xpbmU/OiBFYWMzQXRtb3NEcmNMaW5lO1xuICAvKipcbiAgICogU2V0cyB0aGUgRG9sYnkgZHluYW1pYyByYW5nZSBjb21wcmVzc2lvbiBSRiBtb2RlIHByb2ZpbGUuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBkcmNSZj86IEVhYzNBdG1vc0RyY1JmO1xuICAvKipcbiAgICogSGVpZ2h0IGNoYW5uZWwgdHJpbSBsZXZlbC5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGhlaWdodFRyaW0/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTdXJyb3VuZCBjaGFubmVsIHRyaW0gbGV2ZWwuXG4gICAqIEBkZWZhdWx0IC0gc2VydmljZSBkZWZhdWx0XG4gICAqL1xuICByZWFkb25seSBzdXJyb3VuZFRyaW0/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgTVAyIGNvZGVjIHNldHRpbmdzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1wMlNldHRpbmdzUHJvcHMge1xuICAvKipcbiAgICogVGhlIGF2ZXJhZ2UgYml0cmF0ZS5cbiAgICogQGRlZmF1bHQgLSBzZXJ2aWNlIGRlZmF1bHRcbiAgICovXG4gIHJlYWRvbmx5IGJpdHJhdGU/OiBCaXRyYXRlO1xuICAvKipcbiAgICogVGhlIE1QRUcyIEF1ZGlvIGNvZGluZyBtb2RlLlxuICAgKiBAZGVmYXVsdCBNcDJDb2RpbmdNb2RlLkNPRElOR19NT0RFXzJfMFxuICAgKi9cbiAgcmVhZG9ubHkgY29kaW5nTW9kZT86IE1wMkNvZGluZ01vZGU7XG4gIC8qKlxuICAgKiBUaGUgc2FtcGxlIHJhdGUuXG4gICAqIEBkZWZhdWx0IEF1ZGlvU2FtcGxlUmF0ZS5IWl80ODAwMFxuICAgKi9cbiAgcmVhZG9ubHkgc2FtcGxlUmF0ZT86IEF1ZGlvU2FtcGxlUmF0ZTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBXQVYgY29kZWMgc2V0dGluZ3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2F2U2V0dGluZ3NQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYml0IGRlcHRoIG9mIHRoZSBXQVYgb3V0cHV0LlxuICAgKiBAZGVmYXVsdCBBdWRpb0JpdERlcHRoLkRFUFRIXzE2XG4gICAqL1xuICByZWFkb25seSBiaXREZXB0aD86IEF1ZGlvQml0RGVwdGg7XG4gIC8qKlxuICAgKiBUaGUgYXVkaW8gY29kaW5nIG1vZGUgZm9yIHRoZSBXQVYgYXVkaW8uXG4gICAqIEBkZWZhdWx0IFdhdkNvZGluZ01vZGUuQ09ESU5HX01PREVfMl8wXG4gICAqL1xuICByZWFkb25seSBjb2RpbmdNb2RlPzogV2F2Q29kaW5nTW9kZTtcbiAgLyoqXG4gICAqIFRoZSBzYW1wbGUgcmF0ZS5cbiAgICogQGRlZmF1bHQgQXVkaW9TYW1wbGVSYXRlLkhaXzQ4MDAwXG4gICAqL1xuICByZWFkb25seSBzYW1wbGVSYXRlPzogQXVkaW9TYW1wbGVSYXRlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQWJzdHJhY3QgY2xhc3MgYW5kIGltcGxlbWVudGF0aW9uc1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBBdWRpbyBjb2RlYyBzZXR0aW5ncy4gVXNlIHRoZSBzdGF0aWMgZmFjdG9yeSBtZXRob2RzIHRvIGNyZWF0ZS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gIC8qKlxuICAgKiBDcmVhdGUgQUFDIGNvZGVjIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhYWMocHJvcHM/OiBBYWNTZXR0aW5nc1Byb3BzKTogQXVkaW9Db2RlY1NldHRpbmdzIHtcbiAgICByZXR1cm4gbmV3IEFhY0F1ZGlvQ29kZWNTZXR0aW5ncyhwcm9wcyA/PyB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIEFDMyBjb2RlYyBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWMzKHByb3BzPzogQWMzU2V0dGluZ3NQcm9wcyk6IEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gICAgcmV0dXJuIG5ldyBBYzNBdWRpb0NvZGVjU2V0dGluZ3MocHJvcHMgPz8ge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBFQUMzIChEb2xieSBEaWdpdGFsIFBsdXMpIGNvZGVjIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBlYWMzKHByb3BzPzogRWFjM1NldHRpbmdzUHJvcHMpOiBBdWRpb0NvZGVjU2V0dGluZ3Mge1xuICAgIHJldHVybiBuZXcgRWFjM0F1ZGlvQ29kZWNTZXR0aW5ncyhwcm9wcyA/PyB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIEVBQzMgQXRtb3MgKERvbGJ5IERpZ2l0YWwgUGx1cyB3aXRoIEF0bW9zKSBjb2RlYyBzZXR0aW5ncy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZWFjM0F0bW9zKHByb3BzPzogRWFjM0F0bW9zU2V0dGluZ3NQcm9wcyk6IEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gICAgcmV0dXJuIG5ldyBFYWMzQXRtb3NBdWRpb0NvZGVjU2V0dGluZ3MocHJvcHMgPz8ge30pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBNUDIgY29kZWMgc2V0dGluZ3MuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG1wMihwcm9wcz86IE1wMlNldHRpbmdzUHJvcHMpOiBBdWRpb0NvZGVjU2V0dGluZ3Mge1xuICAgIHJldHVybiBuZXcgTXAyQXVkaW9Db2RlY1NldHRpbmdzKHByb3BzID8/IHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgV0FWIGNvZGVjIHNldHRpbmdzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3YXYocHJvcHM/OiBXYXZTZXR0aW5nc1Byb3BzKTogQXVkaW9Db2RlY1NldHRpbmdzIHtcbiAgICByZXR1cm4gbmV3IFdhdkF1ZGlvQ29kZWNTZXR0aW5ncyhwcm9wcyA/PyB7fSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHBhc3N0aHJvdWdoIGF1ZGlvIHNldHRpbmdzIChubyB0cmFuc2NvZGluZykuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHBhc3N0aHJvdWdoKCk6IEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gICAgcmV0dXJuIG5ldyBQYXNzdGhyb3VnaEF1ZGlvQ29kZWNTZXR0aW5ncygpO1xuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgX2NvZGVjVHlwZTogQXVkaW9Db2RlY1R5cGU7XG4gIC8qKiBAaW50ZXJuYWwgKi9cbiAgcHVibGljIGFic3RyYWN0IF9iaW5kKCk6IENmbkNoYW5uZWwuQXVkaW9Db2RlY1NldHRpbmdzUHJvcGVydHk7XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmNsYXNzIEFhY0F1ZGlvQ29kZWNTZXR0aW5ncyBleHRlbmRzIEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gIHB1YmxpYyByZWFkb25seSBfY29kZWNUeXBlID0gQXVkaW9Db2RlY1R5cGUuQUFDO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBBYWNTZXR0aW5nc1Byb3BzKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBfYmluZCgpOiBDZm5DaGFubmVsLkF1ZGlvQ29kZWNTZXR0aW5nc1Byb3BlcnR5IHtcbiAgICBjb25zdCBwID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4ge1xuICAgICAgYWFjU2V0dGluZ3M6IHtcbiAgICAgICAgYml0cmF0ZTogcC5iaXRyYXRlPy50b0JwcygpID8/IDE5MjAwMCxcbiAgICAgICAgcHJvZmlsZTogKHAucHJvZmlsZSA/PyBBYWNQcm9maWxlLkxDKS52YWx1ZSxcbiAgICAgICAgY29kaW5nTW9kZTogKHAuY29kaW5nTW9kZSA/PyBBYWNDb2RpbmdNb2RlLkNPRElOR19NT0RFXzJfMCkudmFsdWUsXG4gICAgICAgIHJhdGVDb250cm9sTW9kZTogKHAucmF0ZUNvbnRyb2xNb2RlID8/IEFhY1JhdGVDb250cm9sTW9kZS5DQlIpLnZhbHVlLFxuICAgICAgICBzYW1wbGVSYXRlOiAocC5zYW1wbGVSYXRlID8/IEF1ZGlvU2FtcGxlUmF0ZS5IWl80ODAwMCkuX3RvSHooKSxcbiAgICAgICAgcmF3Rm9ybWF0OiAocC5yYXdGb3JtYXQgPz8gQWFjUmF3Rm9ybWF0Lk5PTkUpLnZhbHVlLFxuICAgICAgICBzcGVjOiAocC5zcGVjID8/IEFhY1NwZWMuTVBFRzQpLnZhbHVlLFxuICAgICAgICBpbnB1dFR5cGU6IChwLmlucHV0VHlwZSA/PyBBYWNJbnB1dFR5cGUuTk9STUFMKS52YWx1ZSxcbiAgICAgICAgdmJyUXVhbGl0eTogcC52YnJRdWFsaXR5Py52YWx1ZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG4vKiogQGludGVybmFsICovXG5jbGFzcyBBYzNBdWRpb0NvZGVjU2V0dGluZ3MgZXh0ZW5kcyBBdWRpb0NvZGVjU2V0dGluZ3Mge1xuICBwdWJsaWMgcmVhZG9ubHkgX2NvZGVjVHlwZSA9IEF1ZGlvQ29kZWNUeXBlLkFDMztcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogQWMzU2V0dGluZ3NQcm9wcykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5BdWRpb0NvZGVjU2V0dGluZ3NQcm9wZXJ0eSB7XG4gICAgY29uc3QgcCA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjM1NldHRpbmdzOiB7XG4gICAgICAgIGJpdHJhdGU6IHAuYml0cmF0ZT8udG9CcHMoKSxcbiAgICAgICAgY29kaW5nTW9kZTogKHAuY29kaW5nTW9kZSA/PyBBYzNDb2RpbmdNb2RlLkNPRElOR19NT0RFXzJfMCkudmFsdWUsXG4gICAgICAgIGRpYWxub3JtOiBwLmRpYWxOb3JtLFxuICAgICAgICBhdHRlbnVhdGlvbkNvbnRyb2w6IHAuYXR0ZW51YXRpb25Db250cm9sPy52YWx1ZSxcbiAgICAgICAgYml0c3RyZWFtTW9kZTogKHAuYml0c3RyZWFtTW9kZSA/PyBBYzNCaXRzdHJlYW1Nb2RlLkNPTVBMRVRFX01BSU4pLnZhbHVlLFxuICAgICAgICBkcmNQcm9maWxlOiBwLmRyY1Byb2ZpbGU/LnZhbHVlLFxuICAgICAgICBsZmVGaWx0ZXI6IChwLmxmZUZpbHRlciA/PyBBYzNMZmVGaWx0ZXIuRElTQUJMRUQpLnZhbHVlLFxuICAgICAgICBtZXRhZGF0YUNvbnRyb2w6IHAubWV0YWRhdGFDb250cm9sPy52YWx1ZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxufVxuXG4vKiogQGludGVybmFsICovXG5jbGFzcyBFYWMzQXVkaW9Db2RlY1NldHRpbmdzIGV4dGVuZHMgQXVkaW9Db2RlY1NldHRpbmdzIHtcbiAgcHVibGljIHJlYWRvbmx5IF9jb2RlY1R5cGUgPSBBdWRpb0NvZGVjVHlwZS5FQUMzO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBFYWMzU2V0dGluZ3NQcm9wcykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5BdWRpb0NvZGVjU2V0dGluZ3NQcm9wZXJ0eSB7XG4gICAgY29uc3QgcCA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVhYzNTZXR0aW5nczoge1xuICAgICAgICBiaXRyYXRlOiBwLmJpdHJhdGU/LnRvQnBzKCksXG4gICAgICAgIGNvZGluZ01vZGU6IChwLmNvZGluZ01vZGUgPz8gRWFjM0NvZGluZ01vZGUuQ09ESU5HX01PREVfM18yKS52YWx1ZSxcbiAgICAgICAgZGlhbG5vcm06IHAuZGlhbE5vcm0sXG4gICAgICAgIGF0dGVudWF0aW9uQ29udHJvbDogKHAuYXR0ZW51YXRpb25Db250cm9sID8/IEVhYzNBdHRlbnVhdGlvbkNvbnRyb2wuTk9ORSkudmFsdWUsXG4gICAgICAgIGJpdHN0cmVhbU1vZGU6IChwLmJpdHN0cmVhbU1vZGUgPz8gRWFjM0JpdHN0cmVhbU1vZGUuQ09NUExFVEVfTUFJTikudmFsdWUsXG4gICAgICAgIGRjRmlsdGVyOiBwLmRjRmlsdGVyPy52YWx1ZSxcbiAgICAgICAgZHJjTGluZTogcC5kcmNMaW5lPy52YWx1ZSxcbiAgICAgICAgZHJjUmY6IHAuZHJjUmY/LnZhbHVlLFxuICAgICAgICBsZmVDb250cm9sOiBwLmxmZUNvbnRyb2w/LnZhbHVlLFxuICAgICAgICBsZmVGaWx0ZXI6IHAubGZlRmlsdGVyPy52YWx1ZSxcbiAgICAgICAgbG9Sb0NlbnRlck1peExldmVsOiBwLmxvUm9DZW50ZXJNaXhMZXZlbCxcbiAgICAgICAgbG9Sb1N1cnJvdW5kTWl4TGV2ZWw6IHAubG9Sb1N1cnJvdW5kTWl4TGV2ZWwsXG4gICAgICAgIGx0UnRDZW50ZXJNaXhMZXZlbDogcC5sdFJ0Q2VudGVyTWl4TGV2ZWwsXG4gICAgICAgIGx0UnRTdXJyb3VuZE1peExldmVsOiBwLmx0UnRTdXJyb3VuZE1peExldmVsLFxuICAgICAgICBtZXRhZGF0YUNvbnRyb2w6IHAubWV0YWRhdGFDb250cm9sPy52YWx1ZSxcbiAgICAgICAgcGFzc3Rocm91Z2hDb250cm9sOiBwLnBhc3N0aHJvdWdoQ29udHJvbD8udmFsdWUsXG4gICAgICAgIHBoYXNlQ29udHJvbDogcC5waGFzZUNvbnRyb2w/LnZhbHVlLFxuICAgICAgICBzdGVyZW9Eb3dubWl4OiBwLnN0ZXJlb0Rvd25taXg/LnZhbHVlLFxuICAgICAgICBzdXJyb3VuZEV4TW9kZTogcC5zdXJyb3VuZEV4TW9kZT8udmFsdWUsXG4gICAgICAgIHN1cnJvdW5kTW9kZTogcC5zdXJyb3VuZE1vZGU/LnZhbHVlLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmNsYXNzIEVhYzNBdG1vc0F1ZGlvQ29kZWNTZXR0aW5ncyBleHRlbmRzIEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gIHB1YmxpYyByZWFkb25seSBfY29kZWNUeXBlID0gQXVkaW9Db2RlY1R5cGUuRUFDM19BVE1PUztcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogRWFjM0F0bW9zU2V0dGluZ3NQcm9wcykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5BdWRpb0NvZGVjU2V0dGluZ3NQcm9wZXJ0eSB7XG4gICAgY29uc3QgcCA9IHRoaXMucHJvcHM7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVhYzNBdG1vc1NldHRpbmdzOiB7XG4gICAgICAgIGJpdHJhdGU6IHAuYml0cmF0ZT8udG9CcHMoKSxcbiAgICAgICAgY29kaW5nTW9kZTogKHAuY29kaW5nTW9kZSA/PyBFYWMzQXRtb3NDb2RpbmdNb2RlLkNPRElOR19NT0RFXzVfMV80KS52YWx1ZSxcbiAgICAgICAgZGlhbG5vcm06IHAuZGlhbE5vcm0sXG4gICAgICAgIGRyY0xpbmU6IHAuZHJjTGluZT8udmFsdWUsXG4gICAgICAgIGRyY1JmOiBwLmRyY1JmPy52YWx1ZSxcbiAgICAgICAgaGVpZ2h0VHJpbTogcC5oZWlnaHRUcmltLFxuICAgICAgICBzdXJyb3VuZFRyaW06IHAuc3Vycm91bmRUcmltLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmNsYXNzIE1wMkF1ZGlvQ29kZWNTZXR0aW5ncyBleHRlbmRzIEF1ZGlvQ29kZWNTZXR0aW5ncyB7XG4gIHB1YmxpYyByZWFkb25seSBfY29kZWNUeXBlID0gQXVkaW9Db2RlY1R5cGUuTVAyO1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBNcDJTZXR0aW5nc1Byb3BzKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBfYmluZCgpOiBDZm5DaGFubmVsLkF1ZGlvQ29kZWNTZXR0aW5nc1Byb3BlcnR5IHtcbiAgICBjb25zdCBwID0gdGhpcy5wcm9wcztcbiAgICByZXR1cm4ge1xuICAgICAgbXAyU2V0dGluZ3M6IHtcbiAgICAgICAgYml0cmF0ZTogcC5iaXRyYXRlPy50b0JwcygpLFxuICAgICAgICBjb2RpbmdNb2RlOiAocC5jb2RpbmdNb2RlID8/IE1wMkNvZGluZ01vZGUuQ09ESU5HX01PREVfMl8wKS52YWx1ZSxcbiAgICAgICAgc2FtcGxlUmF0ZTogKHAuc2FtcGxlUmF0ZSA/PyBBdWRpb1NhbXBsZVJhdGUuSFpfNDgwMDApLl90b0h6KCksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuY2xhc3MgV2F2QXVkaW9Db2RlY1NldHRpbmdzIGV4dGVuZHMgQXVkaW9Db2RlY1NldHRpbmdzIHtcbiAgcHVibGljIHJlYWRvbmx5IF9jb2RlY1R5cGUgPSBBdWRpb0NvZGVjVHlwZS5XQVY7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFdhdlNldHRpbmdzUHJvcHMpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgcHVibGljIF9iaW5kKCk6IENmbkNoYW5uZWwuQXVkaW9Db2RlY1NldHRpbmdzUHJvcGVydHkge1xuICAgIGNvbnN0IHAgPSB0aGlzLnByb3BzO1xuICAgIHJldHVybiB7XG4gICAgICB3YXZTZXR0aW5nczoge1xuICAgICAgICBiaXREZXB0aDogKHAuYml0RGVwdGggPz8gQXVkaW9CaXREZXB0aC5ERVBUSF8xNikuX3RvQml0cygpLFxuICAgICAgICBjb2RpbmdNb2RlOiAocC5jb2RpbmdNb2RlID8/IFdhdkNvZGluZ01vZGUuQ09ESU5HX01PREVfMl8wKS52YWx1ZSxcbiAgICAgICAgc2FtcGxlUmF0ZTogKHAuc2FtcGxlUmF0ZSA/PyBBdWRpb1NhbXBsZVJhdGUuSFpfNDgwMDApLl90b0h6KCksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuY2xhc3MgUGFzc3Rocm91Z2hBdWRpb0NvZGVjU2V0dGluZ3MgZXh0ZW5kcyBBdWRpb0NvZGVjU2V0dGluZ3Mge1xuICBwdWJsaWMgcmVhZG9ubHkgX2NvZGVjVHlwZSA9IEF1ZGlvQ29kZWNUeXBlLlBBU1NUSFJPVUdIO1xuICBwdWJsaWMgX2JpbmQoKTogQ2ZuQ2hhbm5lbC5BdWRpb0NvZGVjU2V0dGluZ3NQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhc3NUaHJvdWdoU2V0dGluZ3M6IHt9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==