@apipass/schemas 0.2.15 → 1.0.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 (73) hide show
  1. package/README.md +33 -33
  2. package/assets/css/buttons.scss +118 -118
  3. package/assets/css/colors.scss +34 -34
  4. package/assets/css/fonts.scss +24 -24
  5. package/assets/css/inputs.scss +197 -197
  6. package/assets/css/pt_sans.scss +143 -143
  7. package/assets/css/spacing.scss +28 -28
  8. package/assets/css/texts.scss +18 -18
  9. package/base-schema.component.d.ts +12 -12
  10. package/{esm2015/apipass-schemas.js → esm2020/apipass-schemas.mjs} +4 -4
  11. package/esm2020/base-schema.component.mjs +38 -0
  12. package/{esm2015/public-api.js → esm2020/public-api.mjs} +17 -17
  13. package/esm2020/schema-custom-attributes/schema-custom-attributes.mjs +169 -0
  14. package/esm2020/schema-fields.service.mjs +82 -0
  15. package/esm2020/schema-form/schema-array/array-session/array-session.mjs +143 -0
  16. package/esm2020/schema-form/schema-array/schema-array.mjs +220 -0
  17. package/esm2020/schema-form/schema-form.mjs +107 -0
  18. package/esm2020/schema-form/schema-input/field-render/field-render.mjs +69 -0
  19. package/esm2020/schema-form/schema-input/input-render/boolean-input/boolean-input.component.mjs +46 -0
  20. package/esm2020/schema-form/schema-input/input-render/input-render.mjs +192 -0
  21. package/esm2020/schema-form/schema-input/input-render/number-input/number-input.component.mjs +44 -0
  22. package/esm2020/schema-form/schema-input/schema-input.mjs +96 -0
  23. package/esm2020/schema-form/schema-object/schema-object.mjs +123 -0
  24. package/esm2020/schema-form-render.mjs +126 -0
  25. package/esm2020/schema-form-render.module.mjs +108 -0
  26. package/esm2020/schema-validation-field.mjs +14 -0
  27. package/{esm2015/struct.utils.js → esm2020/struct.utils.mjs} +9 -9
  28. package/esm2020/type-script-compile/type-script-compile.base.mjs +112 -0
  29. package/fesm2015/apipass-schemas.mjs +1803 -0
  30. package/fesm2015/apipass-schemas.mjs.map +1 -0
  31. package/fesm2020/apipass-schemas.mjs +1618 -0
  32. package/fesm2020/apipass-schemas.mjs.map +1 -0
  33. package/{apipass-schemas.d.ts → index.d.ts} +5 -5
  34. package/package.json +32 -19
  35. package/public-api.d.ts +16 -16
  36. package/schema-custom-attributes/schema-custom-attributes.d.ts +21 -21
  37. package/schema-fields.service.d.ts +15 -15
  38. package/schema-form/schema-array/array-session/array-session.d.ts +19 -19
  39. package/schema-form/schema-array/schema-array.d.ts +32 -32
  40. package/schema-form/schema-form.d.ts +31 -31
  41. package/schema-form/schema-input/field-render/field-render.d.ts +16 -16
  42. package/schema-form/schema-input/input-render/boolean-input/boolean-input.component.d.ts +15 -15
  43. package/schema-form/schema-input/input-render/input-render.d.ts +29 -29
  44. package/schema-form/schema-input/input-render/number-input/number-input.component.d.ts +15 -15
  45. package/schema-form/schema-input/schema-input.d.ts +19 -19
  46. package/schema-form/schema-object/schema-object.d.ts +34 -34
  47. package/schema-form-render.d.ts +31 -31
  48. package/schema-form-render.module.d.ts +23 -22
  49. package/schema-validation-field.d.ts +23 -23
  50. package/struct.utils.d.ts +1 -1
  51. package/type-script-compile/type-script-compile.base.d.ts +17 -17
  52. package/bundles/apipass-schemas.umd.js +0 -2312
  53. package/bundles/apipass-schemas.umd.js.map +0 -1
  54. package/bundles/apipass-schemas.umd.min.js +0 -16
  55. package/bundles/apipass-schemas.umd.min.js.map +0 -1
  56. package/esm2015/base-schema.component.js +0 -38
  57. package/esm2015/schema-custom-attributes/schema-custom-attributes.js +0 -192
  58. package/esm2015/schema-fields.service.js +0 -87
  59. package/esm2015/schema-form/schema-array/array-session/array-session.js +0 -161
  60. package/esm2015/schema-form/schema-array/schema-array.js +0 -234
  61. package/esm2015/schema-form/schema-form.js +0 -114
  62. package/esm2015/schema-form/schema-input/field-render/field-render.js +0 -74
  63. package/esm2015/schema-form/schema-input/input-render/boolean-input/boolean-input.component.js +0 -50
  64. package/esm2015/schema-form/schema-input/input-render/input-render.js +0 -179
  65. package/esm2015/schema-form/schema-input/input-render/number-input/number-input.component.js +0 -48
  66. package/esm2015/schema-form/schema-input/schema-input.js +0 -111
  67. package/esm2015/schema-form/schema-object/schema-object.js +0 -134
  68. package/esm2015/schema-form-render.js +0 -136
  69. package/esm2015/schema-form-render.module.js +0 -124
  70. package/esm2015/schema-validation-field.js +0 -15
  71. package/esm2015/type-script-compile/type-script-compile.base.js +0 -112
  72. package/fesm2015/apipass-schemas.js +0 -1725
  73. package/fesm2015/apipass-schemas.js.map +0 -1
@@ -1,112 +0,0 @@
1
- import { Injectable, Optional, SkipSelf } from '@angular/core';
2
- import { FormControl, Validators } from '@angular/forms';
3
- import * as i0 from "@angular/core";
4
- export class TypeScriptCompileBase {
5
- getTranslate(text) {
6
- return text;
7
- }
8
- addItemToFormProperties(formProperties, item, key) {
9
- this.translateProperties(item);
10
- if (item.minLength && item.minLength > 0) {
11
- formProperties[key] = new FormControl([null, [Validators.required]]);
12
- }
13
- else {
14
- formProperties[key] = new FormControl([null]);
15
- }
16
- }
17
- compileProperties(input) {
18
- const compiledProperties = [];
19
- const formProperties = {};
20
- let inputData = {};
21
- const inputToCompile = JSON.parse(JSON.stringify(input));
22
- this.translateProperties(inputToCompile);
23
- if (inputToCompile.properties) {
24
- if (inputToCompile.type === 'array') {
25
- inputData = [];
26
- }
27
- if (inputToCompile.type === 'object') {
28
- inputData = {};
29
- }
30
- inputToCompile.id = 'inputData';
31
- this.proccessProperties(inputToCompile, formProperties, 'inputData');
32
- this.translateProperties(inputToCompile);
33
- compiledProperties.push(inputToCompile);
34
- }
35
- else if (inputToCompile.type === 'array') {
36
- inputToCompile.id = 'inputData';
37
- inputData = [];
38
- this.addItemToFormProperties(formProperties, inputToCompile, 'inputData');
39
- compiledProperties.push(inputToCompile);
40
- }
41
- else if (!inputToCompile.type) {
42
- for (let index = 0; index < Object.keys(inputToCompile).length; index++) {
43
- const key = Object.keys(inputToCompile)[index];
44
- const item = inputToCompile[key];
45
- item.id = key;
46
- if (item.type === 'array') {
47
- inputData[item.id] = [];
48
- }
49
- if (item.type === 'object') {
50
- inputData[item.id] = {};
51
- }
52
- this.proccessProperties(item, formProperties, key);
53
- this.translateProperties(item);
54
- compiledProperties.push(item);
55
- }
56
- }
57
- compiledProperties.sort((a, b) => a.propertyOrder - b.propertyOrder);
58
- return { compiledProperties, formProperties, inputData };
59
- }
60
- translateProperties(input) {
61
- if (input === null || input === void 0 ? void 0 : input.title) {
62
- input.title = this.getTranslate(input.title);
63
- }
64
- if (input === null || input === void 0 ? void 0 : input.description) {
65
- input.description = this.getTranslate(input.description);
66
- }
67
- if ((input === null || input === void 0 ? void 0 : input.options) instanceof Array) {
68
- input === null || input === void 0 ? void 0 : input.options.forEach((option) => option.value = this.getTranslate(option.value));
69
- }
70
- }
71
- proccessProperties(item, formProperties, key) {
72
- this.translateProperties(item);
73
- if (this.hasProperties(item)) {
74
- const arFieldsChild = [];
75
- for (let indexChild = 0; indexChild < Object.keys(item.properties).length; indexChild++) {
76
- const keyChild = Object.keys(item.properties)[indexChild];
77
- const itemChild = item.properties[keyChild];
78
- itemChild.id = keyChild;
79
- if (this.hasProperties(itemChild)) {
80
- this.proccessProperties(itemChild, formProperties, keyChild);
81
- arFieldsChild.push(itemChild);
82
- }
83
- else {
84
- this.addItemToFormProperties(formProperties, itemChild, keyChild);
85
- arFieldsChild.push(itemChild);
86
- }
87
- }
88
- item.properties = arFieldsChild;
89
- }
90
- else {
91
- this.addItemToFormProperties(formProperties, item, key);
92
- }
93
- }
94
- hasProperties(item) {
95
- return item.type === 'object' || (item.type === 'array' && item.properties);
96
- }
97
- }
98
- TypeScriptCompileBase.ɵfac = function TypeScriptCompileBase_Factory(t) { return new (t || TypeScriptCompileBase)(); };
99
- TypeScriptCompileBase.ɵprov = i0.ɵɵdefineInjectable({ token: TypeScriptCompileBase, factory: TypeScriptCompileBase.ɵfac, providedIn: 'root' });
100
- /*@__PURE__*/ (function () { i0.ɵsetClassMetadata(TypeScriptCompileBase, [{
101
- type: Injectable,
102
- args: [{ providedIn: 'root' }]
103
- }], null, null); })();
104
- export function APIPASS_TYPESCRIPT_COMPILE_BASE_PROVIDER_FACTORY(parentIntl) {
105
- return parentIntl || new TypeScriptCompileBase();
106
- }
107
- export const APIPASS_TYPESCRIPT_COMPILE_INTL_PROVIDER = {
108
- provide: TypeScriptCompileBase,
109
- deps: [[new Optional(), new SkipSelf(), TypeScriptCompileBase]],
110
- useFactory: APIPASS_TYPESCRIPT_COMPILE_BASE_PROVIDER_FACTORY,
111
- };
112
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS1zY3JpcHQtY29tcGlsZS5iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc2NoZW1hcy9zcmMvdHlwZS1zY3JpcHQtY29tcGlsZS90eXBlLXNjcmlwdC1jb21waWxlLmJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzdELE9BQU8sRUFBQyxXQUFXLEVBQUUsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7O0FBR3ZELE1BQU0sT0FBTyxxQkFBcUI7SUFFdEIsWUFBWSxDQUFDLElBQVk7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRVMsdUJBQXVCLENBQUMsY0FBbUIsRUFBRSxJQUFTLEVBQUUsR0FBVztRQUMzRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEU7YUFBTTtZQUNMLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7U0FDL0M7SUFDSCxDQUFDO0lBRU0saUJBQWlCLENBQUMsS0FBVTtRQUtqQyxNQUFNLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM5QixNQUFNLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxTQUFTLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFL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QUFDO2lCQUMvQjthQUNGO1lBQ0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxhQUFhLENBQUM7U0FDakM7YUFBTTtZQUNMLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxjQUFjLEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQztJQUVTLGFBQWEsQ0FBQyxJQUFTO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDOUUsQ0FBQzs7MEZBckdVLHFCQUFxQjs2REFBckIscUJBQXFCLFdBQXJCLHFCQUFxQixtQkFEVCxNQUFNO2tEQUNsQixxQkFBcUI7Y0FEakMsVUFBVTtlQUFDLEVBQUMsVUFBVSxFQUFFLE1BQU0sRUFBQzs7QUEwR2hDLE1BQU0sVUFBVSxnREFBZ0QsQ0FBQyxVQUFpQztJQUNoRyxPQUFPLFVBQVUsSUFBSSxJQUFJLHFCQUFxQixFQUFFLENBQUM7QUFDbkQsQ0FBQztBQUVELE1BQU0sQ0FBQyxNQUFNLHdDQUF3QyxHQUFRO0lBQzNELE9BQU8sRUFBRSxxQkFBcUI7SUFDOUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLFFBQVEsRUFBRSxFQUFFLElBQUksUUFBUSxFQUFFLEVBQUUscUJBQXFCLENBQUMsQ0FBQztJQUMvRCxVQUFVLEVBQUUsZ0RBQWdEO0NBQzdELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE9wdGlvbmFsLCBTa2lwU2VsZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Zvcm1Db250cm9sLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFR5cGVTY3JpcHRDb21waWxlQmFzZSB7XG5cbiAgcHJvdGVjdGVkIGdldFRyYW5zbGF0ZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgcHJvdGVjdGVkIGFkZEl0ZW1Ub0Zvcm1Qcm9wZXJ0aWVzKGZvcm1Qcm9wZXJ0aWVzOiBhbnksIGl0ZW06IGFueSwga2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnRyYW5zbGF0ZVByb3BlcnRpZXMoaXRlbSk7XG4gICAgaWYgKGl0ZW0ubWluTGVuZ3RoICYmIGl0ZW0ubWluTGVuZ3RoID4gMCkge1xuICAgICAgZm9ybVByb3BlcnRpZXNba2V5XSA9IG5ldyBGb3JtQ29udHJvbChbbnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvcm1Qcm9wZXJ0aWVzW2tleV0gPSBuZXcgRm9ybUNvbnRyb2woW251bGxdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY29tcGlsZVByb3BlcnRpZXMoaW5wdXQ6IGFueSk6IHtcbiAgICBjb21waWxlZFByb3BlcnRpZXM6IGFueSxcbiAgICBmb3JtUHJvcGVydGllczogYW55LFxuICAgIGlucHV0RGF0YTogYW55XG4gIH0ge1xuICAgIGNvbnN0IGNvbXBpbGVkUHJvcGVydGllcyA9IFtdO1xuICAgIGNvbnN0IGZvcm1Qcm9wZXJ0aWVzID0ge307XG4gICAgbGV0IGlucHV0RGF0YTogYW55ID0ge307XG4gICAgY29uc3QgaW5wdXRUb0NvbXBpbGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGlucHV0KSk7XG4gICAgdGhpcy50cmFuc2xhdGVQcm9wZXJ0aWVzKGlucHV0VG9Db21waWxlKTtcblxuICAgIGlmIChpbnB1dFRvQ29tcGlsZS5wcm9wZXJ0aWVzKSB7XG4gICAgICBpZiAoaW5wdXRUb0NvbXBpbGUudHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgICBpbnB1dERhdGEgPSBbXTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnB1dFRvQ29tcGlsZS50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpbnB1dERhdGEgPSB7fTtcbiAgICAgIH1cbiAgICAgIGlucHV0VG9Db21waWxlLmlkID0gJ2lucHV0RGF0YSc7XG4gICAgICB0aGlzLnByb2NjZXNzUHJvcGVydGllcyhpbnB1dFRvQ29tcGlsZSwgZm9ybVByb3BlcnRpZXMsICdpbnB1dERhdGEnKTtcbiAgICAgIHRoaXMudHJhbnNsYXRlUHJvcGVydGllcyhpbnB1dFRvQ29tcGlsZSk7XG4gICAgICBjb21waWxlZFByb3BlcnRpZXMucHVzaChpbnB1dFRvQ29tcGlsZSk7XG4gICAgfSBlbHNlIGlmIChpbnB1dFRvQ29tcGlsZS50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICBpbnB1dFRvQ29tcGlsZS5pZCA9ICdpbnB1dERhdGEnO1xuICAgICAgaW5wdXREYXRhID0gW107XG4gICAgICB0aGlzLmFkZEl0ZW1Ub0Zvcm1Qcm9wZXJ0aWVzKGZvcm1Qcm9wZXJ0aWVzLCBpbnB1dFRvQ29tcGlsZSwgJ2lucHV0RGF0YScpO1xuICAgICAgY29tcGlsZWRQcm9wZXJ0aWVzLnB1c2goaW5wdXRUb0NvbXBpbGUpO1xuICAgIH0gZWxzZSBpZiAoIWlucHV0VG9Db21waWxlLnR5cGUpIHtcbiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBPYmplY3Qua2V5cyhpbnB1dFRvQ29tcGlsZSkubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGlucHV0VG9Db21waWxlKVtpbmRleF07XG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpbnB1dFRvQ29tcGlsZVtrZXldO1xuICAgICAgICBpdGVtLmlkID0ga2V5O1xuXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgICBpbnB1dERhdGFbaXRlbS5pZF0gPSBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgaW5wdXREYXRhW2l0ZW0uaWRdID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9jY2Vzc1Byb3BlcnRpZXMoaXRlbSwgZm9ybVByb3BlcnRpZXMsIGtleSk7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlUHJvcGVydGllcyhpdGVtKTtcbiAgICAgICAgY29tcGlsZWRQcm9wZXJ0aWVzLnB1c2goaXRlbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29tcGlsZWRQcm9wZXJ0aWVzLnNvcnQoKGEsIGIpID0+IGEucHJvcGVydHlPcmRlciAtIGIucHJvcGVydHlPcmRlcik7XG4gICAgcmV0dXJuIHtjb21waWxlZFByb3BlcnRpZXMsIGZvcm1Qcm9wZXJ0aWVzLCBpbnB1dERhdGF9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVByb3BlcnRpZXMoaW5wdXQ6IGFueSk6IHZvaWQge1xuICAgIGlmIChpbnB1dD8udGl0bGUpIHtcbiAgICAgIGlucHV0LnRpdGxlID0gdGhpcy5nZXRUcmFuc2xhdGUoaW5wdXQudGl0bGUpO1xuICAgIH1cbiAgICBpZiAoaW5wdXQ/LmRlc2NyaXB0aW9uKSB7XG4gICAgICBpbnB1dC5kZXNjcmlwdGlvbiA9IHRoaXMuZ2V0VHJhbnNsYXRlKGlucHV0LmRlc2NyaXB0aW9uKTtcbiAgICB9XG4gICAgaWYgKGlucHV0Py5vcHRpb25zIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICAgIGlucHV0Py5vcHRpb25zLmZvckVhY2goKG9wdGlvbjogYW55KSA9PiBvcHRpb24udmFsdWUgPSB0aGlzLmdldFRyYW5zbGF0ZShvcHRpb24udmFsdWUpKTtcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgcHJvY2Nlc3NQcm9wZXJ0aWVzKGl0ZW06IGFueSwgZm9ybVByb3BlcnRpZXM6IHt9LCBrZXk6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudHJhbnNsYXRlUHJvcGVydGllcyhpdGVtKTtcbiAgICBpZiAodGhpcy5oYXNQcm9wZXJ0aWVzKGl0ZW0pKSB7XG4gICAgICBjb25zdCBhckZpZWxkc0NoaWxkID0gW107XG4gICAgICBmb3IgKGxldCBpbmRleENoaWxkID0gMDsgaW5kZXhDaGlsZCA8IE9iamVjdC5rZXlzKGl0ZW0ucHJvcGVydGllcykubGVuZ3RoOyBpbmRleENoaWxkKyspIHtcbiAgICAgICAgY29uc3Qga2V5Q2hpbGQgPSBPYmplY3Qua2V5cyhpdGVtLnByb3BlcnRpZXMpW2luZGV4Q2hpbGRdO1xuICAgICAgICBjb25zdCBpdGVtQ2hpbGQgPSBpdGVtLnByb3BlcnRpZXNba2V5Q2hpbGRdO1xuICAgICAgICBpdGVtQ2hpbGQuaWQgPSBrZXlDaGlsZDtcbiAgICAgICAgaWYgKHRoaXMuaGFzUHJvcGVydGllcyhpdGVtQ2hpbGQpKSB7XG4gICAgICAgICAgdGhpcy5wcm9jY2Vzc1Byb3BlcnRpZXMoaXRlbUNoaWxkLCBmb3JtUHJvcGVydGllcywga2V5Q2hpbGQpO1xuICAgICAgICAgIGFyRmllbGRzQ2hpbGQucHVzaChpdGVtQ2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYWRkSXRlbVRvRm9ybVByb3BlcnRpZXMoZm9ybVByb3BlcnRpZXMsIGl0ZW1DaGlsZCwga2V5Q2hpbGQpO1xuICAgICAgICAgIGFyRmllbGRzQ2hpbGQucHVzaChpdGVtQ2hpbGQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpdGVtLnByb3BlcnRpZXMgPSBhckZpZWxkc0NoaWxkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZEl0ZW1Ub0Zvcm1Qcm9wZXJ0aWVzKGZvcm1Qcm9wZXJ0aWVzLCBpdGVtLCBrZXkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBoYXNQcm9wZXJ0aWVzKGl0ZW06IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIGl0ZW0udHlwZSA9PT0gJ29iamVjdCcgfHwgKGl0ZW0udHlwZSA9PT0gJ2FycmF5JyAmJiBpdGVtLnByb3BlcnRpZXMpO1xuICB9XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEFQSVBBU1NfVFlQRVNDUklQVF9DT01QSUxFX0JBU0VfUFJPVklERVJfRkFDVE9SWShwYXJlbnRJbnRsOiBUeXBlU2NyaXB0Q29tcGlsZUJhc2UpOiBhbnkge1xuICByZXR1cm4gcGFyZW50SW50bCB8fCBuZXcgVHlwZVNjcmlwdENvbXBpbGVCYXNlKCk7XG59XG5cbmV4cG9ydCBjb25zdCBBUElQQVNTX1RZUEVTQ1JJUFRfQ09NUElMRV9JTlRMX1BST1ZJREVSOiBhbnkgPSB7XG4gIHByb3ZpZGU6IFR5cGVTY3JpcHRDb21waWxlQmFzZSxcbiAgZGVwczogW1tuZXcgT3B0aW9uYWwoKSwgbmV3IFNraXBTZWxmKCksIFR5cGVTY3JpcHRDb21waWxlQmFzZV1dLFxuICB1c2VGYWN0b3J5OiBBUElQQVNTX1RZUEVTQ1JJUFRfQ09NUElMRV9CQVNFX1BST1ZJREVSX0ZBQ1RPUlksXG59O1xuIl19