tuain-ng-forms-lib 0.12.32 → 0.12.36

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 (34) hide show
  1. package/bundles/tuain-ng-forms-lib.umd.js +322 -291
  2. package/bundles/tuain-ng-forms-lib.umd.js.map +1 -1
  3. package/esm2015/lib/classes/forms/action.js +5 -5
  4. package/esm2015/lib/classes/forms/element.js +6 -7
  5. package/esm2015/lib/classes/forms/field.js +166 -146
  6. package/esm2015/lib/classes/forms/form.constants.js +82 -11
  7. package/esm2015/lib/classes/forms/form.js +10 -10
  8. package/esm2015/lib/classes/forms/subsection.js +6 -6
  9. package/esm2015/lib/classes/forms/table/column.js +5 -5
  10. package/esm2015/lib/classes/forms/table/row-data.js +4 -6
  11. package/esm2015/lib/classes/forms/table/table.js +13 -15
  12. package/esm2015/lib/components/elements/action.component.js +1 -3
  13. package/esm2015/lib/components/elements/field.component.js +7 -45
  14. package/esm2015/lib/components/elements/layout/element.component.js +6 -3
  15. package/esm2015/lib/components/elements/layout/form-error.component.js +1 -1
  16. package/esm2015/lib/components/elements/tables/table.component.js +7 -7
  17. package/esm2015/lib/components/forms/basic-form.js +23 -25
  18. package/fesm2015/tuain-ng-forms-lib.js +326 -285
  19. package/fesm2015/tuain-ng-forms-lib.js.map +1 -1
  20. package/lib/classes/forms/action.d.ts +1 -1
  21. package/lib/classes/forms/element.d.ts +2 -3
  22. package/lib/classes/forms/field.d.ts +14 -20
  23. package/lib/classes/forms/form.constants.d.ts +74 -10
  24. package/lib/classes/forms/form.d.ts +2 -3
  25. package/lib/classes/forms/table/column.d.ts +1 -2
  26. package/lib/classes/forms/table/table.d.ts +1 -1
  27. package/lib/components/elements/action.component.d.ts +0 -1
  28. package/lib/components/elements/field.component.d.ts +2 -17
  29. package/lib/components/elements/layout/element.component.d.ts +2 -1
  30. package/lib/components/elements/layout/form-error.component.d.ts +1 -0
  31. package/lib/components/elements/tables/table.component.d.ts +0 -1
  32. package/lib/components/forms/basic-form.d.ts +2 -3
  33. package/package.json +1 -1
  34. package/tuain-ng-forms-lib.metadata.json +1 -1
@@ -1,13 +1,43 @@
1
- export const elementTypes = {
2
- action: 'ACTION',
3
- field: 'FIELD',
4
- table: 'TABLE',
5
- };
6
- export const formActions = {
7
- tableAction: 'TABLEACTION',
8
- getData: 'GETDATA',
9
- getTableData: 'GETTABLEDATA',
10
- validate: 'VALIDATE',
1
+ export const componentConstants = {
2
+ recordsPerPage: 10,
3
+ // Constantes para el despliegue de formularios
4
+ ELEMENTTYPE_ACTION: 'ACTION',
5
+ ELEMENTTYPE_FIELD: 'FIELD',
6
+ ELEMENTTYPE_TABLE: 'TABLE',
7
+ // Acciones de formularios
8
+ FORMACTION_TABLEACTION: 'TABLEACTION',
9
+ FORMACTION_GETDATA: 'GETDATA',
10
+ FORMACTION_GETTABLEDATA: 'GETTABLEDATA',
11
+ FORMACTION_VALIDATE: 'VALIDATE',
12
+ // Errores etándar de formularios
13
+ FORMERROR_VALIDATION_CODE: '13',
14
+ FORMERROR_TYPE_WARNING: 'WARNING',
15
+ FORMERROR_REQUIRED_FIELDS: 'Todos los campos requeridos deben ser diligenciados',
16
+ FORMERROR_VALIDATION_TITLE: 'Advertencia',
17
+ FORMERROR_VALIDATION_FIELDS: 'Existen campos con problemas de validación',
18
+ // Valores para los controles de navegació
19
+ FORMNAVIGATION_FIRST: 'first',
20
+ FORMNAVIGATION_PREVGROUP: 'prevgroup',
21
+ FORMNAVIGATION_NEXTGROUP: 'nextgroup',
22
+ FORMNAVIGATION_LAST: 'last',
23
+ FIELDTYPE_ARRAY: 'ARRAY',
24
+ FIELDTYPE_CHECK: 'CHECK',
25
+ FIELDTYPE_DATE: 'DATE',
26
+ FIELDTYPE_MAP: 'MAP',
27
+ FIELDTYPE_CURRENCY: 'CURRENCY',
28
+ FIELDTYPE_SELECT: 'SELECT',
29
+ FIELDTYPE_TEXT: 'TEXT',
30
+ FIELD_REQUIRED_MESSAGE: 'Campo requerido',
31
+ FORMTABLEACTION_SORT: 'SORT',
32
+ FORMTABLEACTION_REFRESH: 'REFRESH',
33
+ FORMTABLEACTION_NAVIGATE: 'NAVIGATE',
34
+ FORMTABLEACTION_INLINE: 'INLINE',
35
+ FORMTABLEACTION_GLOBAL: 'GLOBAL',
36
+ FORMTABLEACTION_ROWSELECTION: 'ROWSELECTION',
37
+ FORMTABLEACTION_SELECTION: 'SELECTION',
38
+ TABLE_SORT_ASCENDING: 'asc',
39
+ TABLE_SORT_DESCENDING: 'desc',
40
+ SERVICE_ERRORCODE_NOERROR: '00',
11
41
  };
12
42
  export const operators = {
13
43
  G: '>',
@@ -20,4 +50,45 @@ export const operators = {
20
50
  NOT_CONTENT: 'No Contiene',
21
51
  BETWEEN: 'Entre',
22
52
  };
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2Zvcm0uY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsT0FBTztJQUNkLEtBQUssRUFBRSxPQUFPO0NBQ2YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixXQUFXLEVBQUUsYUFBYTtJQUMxQixPQUFPLEVBQUUsU0FBUztJQUNsQixZQUFZLEVBQUUsY0FBYztJQUM1QixRQUFRLEVBQUUsVUFBVTtDQUNyQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHO0lBQ3ZCLENBQUMsRUFBRSxHQUFHO0lBQ04sQ0FBQyxFQUFFLEdBQUc7SUFDTixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1IsRUFBRSxFQUFFLElBQUk7SUFDUixNQUFNLEVBQUUsSUFBSTtJQUNaLE9BQU8sRUFBRSxVQUFVO0lBQ25CLFdBQVcsRUFBRSxhQUFhO0lBQzFCLE9BQU8sRUFBRSxPQUFPO0NBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgZWxlbWVudFR5cGVzID0ge1xuICBhY3Rpb246ICdBQ1RJT04nLFxuICBmaWVsZDogJ0ZJRUxEJyxcbiAgdGFibGU6ICdUQUJMRScsXG59O1xuXG5leHBvcnQgY29uc3QgZm9ybUFjdGlvbnMgPSB7XG4gIHRhYmxlQWN0aW9uOiAnVEFCTEVBQ1RJT04nLFxuICBnZXREYXRhOiAnR0VUREFUQScsXG4gIGdldFRhYmxlRGF0YTogJ0dFVFRBQkxFREFUQScsXG4gIHZhbGlkYXRlOiAnVkFMSURBVEUnLFxufTtcblxuZXhwb3J0IGNvbnN0IG9wZXJhdG9ycyA9IHtcbiAgRzogJz4nLFxuICBMOiAnPCcsXG4gIEdFOiAnPj0nLFxuICBMRTogJzw9JyxcbiAgRVE6ICc9PScsXG4gIE5PVF9FUTogJyE9JyxcbiAgQ09OVEVOVDogJ0NvbnRpZW5lJyxcbiAgTk9UX0NPTlRFTlQ6ICdObyBDb250aWVuZScsXG4gIEJFVFdFRU46ICdFbnRyZScsXG59O1xuIl19
53
+ export const tableFieldStyles = {
54
+ TEXT: {
55
+ 'text-align': 'left'
56
+ },
57
+ TITLE: {
58
+ 'text-align': 'left'
59
+ },
60
+ LABEL: {
61
+ 'text-align': 'left'
62
+ },
63
+ MESSAGE: {
64
+ 'text-align': 'left'
65
+ },
66
+ NUMBER: {
67
+ 'text-align': 'right'
68
+ },
69
+ DATE: {
70
+ 'text-align': 'right'
71
+ },
72
+ CHECK: {
73
+ 'text-align': 'center'
74
+ },
75
+ ARRAY: {
76
+ 'text-align': 'left'
77
+ },
78
+ SELECT: {
79
+ 'text-align': 'left'
80
+ }
81
+ };
82
+ export const DEFAULT_STATE_FLOW = {
83
+ defaultState: 'CREATE',
84
+ states: ['CREATE', 'EDIT', 'VIEW'],
85
+ transitions: [
86
+ { name: 'VIEW1', origin: 'CREATE', destination: 'VIEW' },
87
+ { name: 'VIEW2', origin: 'EDIT', destination: 'VIEW' },
88
+ { name: 'EDIT1', origin: 'CREATE', destination: 'EDIT' },
89
+ { name: 'EDIT2', origin: 'VIEW', destination: 'EDIT' },
90
+ { name: 'CREATE1', origin: 'EDIT', destination: 'CREATE' },
91
+ { name: 'CREATE2', origin: 'VIEW', destination: 'CREATE' },
92
+ ]
93
+ };
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5jb25zdGFudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWFpbi1uZy1mb3Jtcy1saWIvc3JjL2xpYi9jbGFzc2VzL2Zvcm1zL2Zvcm0uY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLGNBQWMsRUFBRSxFQUFFO0lBQ2xCLCtDQUErQztJQUMvQyxrQkFBa0IsRUFBRSxRQUFRO0lBQzVCLGlCQUFpQixFQUFFLE9BQU87SUFDMUIsaUJBQWlCLEVBQUUsT0FBTztJQUMxQiwwQkFBMEI7SUFDMUIsc0JBQXNCLEVBQUUsYUFBYTtJQUNyQyxrQkFBa0IsRUFBRSxTQUFTO0lBQzdCLHVCQUF1QixFQUFFLGNBQWM7SUFDdkMsbUJBQW1CLEVBQUUsVUFBVTtJQUMvQixpQ0FBaUM7SUFDakMseUJBQXlCLEVBQUUsSUFBSTtJQUMvQixzQkFBc0IsRUFBRSxTQUFTO0lBQ2pDLHlCQUF5QixFQUFFLHFEQUFxRDtJQUNoRiwwQkFBMEIsRUFBRSxhQUFhO0lBQ3pDLDJCQUEyQixFQUFFLDRDQUE0QztJQUN6RSwwQ0FBMEM7SUFDMUMsb0JBQW9CLEVBQUUsT0FBTztJQUM3Qix3QkFBd0IsRUFBRSxXQUFXO0lBQ3JDLHdCQUF3QixFQUFFLFdBQVc7SUFDckMsbUJBQW1CLEVBQUUsTUFBTTtJQUUzQixlQUFlLEVBQUUsT0FBTztJQUN4QixlQUFlLEVBQUUsT0FBTztJQUN4QixjQUFjLEVBQUUsTUFBTTtJQUN0QixhQUFhLEVBQUUsS0FBSztJQUNwQixrQkFBa0IsRUFBRSxVQUFVO0lBQzlCLGdCQUFnQixFQUFFLFFBQVE7SUFDMUIsY0FBYyxFQUFFLE1BQU07SUFDdEIsc0JBQXNCLEVBQUUsaUJBQWlCO0lBRXpDLG9CQUFvQixFQUFFLE1BQU07SUFDNUIsdUJBQXVCLEVBQUUsU0FBUztJQUNsQyx3QkFBd0IsRUFBRSxVQUFVO0lBRXBDLHNCQUFzQixFQUFFLFFBQVE7SUFDaEMsc0JBQXNCLEVBQUUsUUFBUTtJQUNoQyw0QkFBNEIsRUFBRSxjQUFjO0lBQzVDLHlCQUF5QixFQUFFLFdBQVc7SUFFdEMsb0JBQW9CLEVBQUUsS0FBSztJQUMzQixxQkFBcUIsRUFBRSxNQUFNO0lBRTdCLHlCQUF5QixFQUFFLElBQUk7Q0FDaEMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRztJQUN2QixDQUFDLEVBQUUsR0FBRztJQUNOLENBQUMsRUFBRSxHQUFHO0lBQ04sRUFBRSxFQUFFLElBQUk7SUFDUixFQUFFLEVBQUUsSUFBSTtJQUNSLEVBQUUsRUFBRSxJQUFJO0lBQ1IsTUFBTSxFQUFFLElBQUk7SUFDWixPQUFPLEVBQUUsVUFBVTtJQUNuQixXQUFXLEVBQUUsYUFBYTtJQUMxQixPQUFPLEVBQUUsT0FBTztDQUNqQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUc7SUFDOUIsSUFBSSxFQUFFO1FBQ0osWUFBWSxFQUFFLE1BQU07S0FDckI7SUFDRCxLQUFLLEVBQUU7UUFDTCxZQUFZLEVBQUUsTUFBTTtLQUNyQjtJQUNELEtBQUssRUFBRTtRQUNMLFlBQVksRUFBRSxNQUFNO0tBQ3JCO0lBQ0QsT0FBTyxFQUFFO1FBQ1AsWUFBWSxFQUFFLE1BQU07S0FDckI7SUFDRCxNQUFNLEVBQUU7UUFDTixZQUFZLEVBQUUsT0FBTztLQUN0QjtJQUNELElBQUksRUFBRTtRQUNKLFlBQVksRUFBRSxPQUFPO0tBQ3RCO0lBQ0QsS0FBSyxFQUFFO1FBQ0wsWUFBWSxFQUFFLFFBQVE7S0FDdkI7SUFDRCxLQUFLLEVBQUU7UUFDTCxZQUFZLEVBQUUsTUFBTTtLQUNyQjtJQUNELE1BQU0sRUFBRTtRQUNOLFlBQVksRUFBRSxNQUFNO0tBQ3JCO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQ2hDLFlBQVksRUFBRSxRQUFRO0lBQ3RCLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2xDLFdBQVcsRUFBRTtRQUNYLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7UUFDeEQsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRTtRQUN0RCxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFO1FBQ3hELEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUU7UUFDdEQsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRTtRQUMxRCxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFO0tBQzNEO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBjb21wb25lbnRDb25zdGFudHMgPSB7XG4gIHJlY29yZHNQZXJQYWdlOiAxMCxcbiAgLy8gQ29uc3RhbnRlcyBwYXJhIGVsIGRlc3BsaWVndWUgZGUgZm9ybXVsYXJpb3NcbiAgRUxFTUVOVFRZUEVfQUNUSU9OOiAnQUNUSU9OJyxcbiAgRUxFTUVOVFRZUEVfRklFTEQ6ICdGSUVMRCcsXG4gIEVMRU1FTlRUWVBFX1RBQkxFOiAnVEFCTEUnLFxuICAvLyBBY2Npb25lcyBkZSBmb3JtdWxhcmlvc1xuICBGT1JNQUNUSU9OX1RBQkxFQUNUSU9OOiAnVEFCTEVBQ1RJT04nLFxuICBGT1JNQUNUSU9OX0dFVERBVEE6ICdHRVREQVRBJyxcbiAgRk9STUFDVElPTl9HRVRUQUJMRURBVEE6ICdHRVRUQUJMRURBVEEnLFxuICBGT1JNQUNUSU9OX1ZBTElEQVRFOiAnVkFMSURBVEUnLFxuICAvLyBFcnJvcmVzIGV0w6FuZGFyIGRlIGZvcm11bGFyaW9zXG4gIEZPUk1FUlJPUl9WQUxJREFUSU9OX0NPREU6ICcxMycsXG4gIEZPUk1FUlJPUl9UWVBFX1dBUk5JTkc6ICdXQVJOSU5HJyxcbiAgRk9STUVSUk9SX1JFUVVJUkVEX0ZJRUxEUzogJ1RvZG9zIGxvcyBjYW1wb3MgcmVxdWVyaWRvcyBkZWJlbiBzZXIgZGlsaWdlbmNpYWRvcycsXG4gIEZPUk1FUlJPUl9WQUxJREFUSU9OX1RJVExFOiAnQWR2ZXJ0ZW5jaWEnLFxuICBGT1JNRVJST1JfVkFMSURBVElPTl9GSUVMRFM6ICdFeGlzdGVuIGNhbXBvcyBjb24gcHJvYmxlbWFzIGRlIHZhbGlkYWNpw7NuJyxcbiAgLy8gVmFsb3JlcyBwYXJhIGxvcyBjb250cm9sZXMgZGUgbmF2ZWdhY2nDs1xuICBGT1JNTkFWSUdBVElPTl9GSVJTVDogJ2ZpcnN0JyxcbiAgRk9STU5BVklHQVRJT05fUFJFVkdST1VQOiAncHJldmdyb3VwJyxcbiAgRk9STU5BVklHQVRJT05fTkVYVEdST1VQOiAnbmV4dGdyb3VwJyxcbiAgRk9STU5BVklHQVRJT05fTEFTVDogJ2xhc3QnLFxuXG4gIEZJRUxEVFlQRV9BUlJBWTogJ0FSUkFZJyxcbiAgRklFTERUWVBFX0NIRUNLOiAnQ0hFQ0snLFxuICBGSUVMRFRZUEVfREFURTogJ0RBVEUnLFxuICBGSUVMRFRZUEVfTUFQOiAnTUFQJyxcbiAgRklFTERUWVBFX0NVUlJFTkNZOiAnQ1VSUkVOQ1knLFxuICBGSUVMRFRZUEVfU0VMRUNUOiAnU0VMRUNUJyxcbiAgRklFTERUWVBFX1RFWFQ6ICdURVhUJyxcbiAgRklFTERfUkVRVUlSRURfTUVTU0FHRTogJ0NhbXBvIHJlcXVlcmlkbycsXG5cbiAgRk9STVRBQkxFQUNUSU9OX1NPUlQ6ICdTT1JUJyxcbiAgRk9STVRBQkxFQUNUSU9OX1JFRlJFU0g6ICdSRUZSRVNIJyxcbiAgRk9STVRBQkxFQUNUSU9OX05BVklHQVRFOiAnTkFWSUdBVEUnLFxuXG4gIEZPUk1UQUJMRUFDVElPTl9JTkxJTkU6ICdJTkxJTkUnLFxuICBGT1JNVEFCTEVBQ1RJT05fR0xPQkFMOiAnR0xPQkFMJyxcbiAgRk9STVRBQkxFQUNUSU9OX1JPV1NFTEVDVElPTjogJ1JPV1NFTEVDVElPTicsXG4gIEZPUk1UQUJMRUFDVElPTl9TRUxFQ1RJT046ICdTRUxFQ1RJT04nLFxuXG4gIFRBQkxFX1NPUlRfQVNDRU5ESU5HOiAnYXNjJyxcbiAgVEFCTEVfU09SVF9ERVNDRU5ESU5HOiAnZGVzYycsXG5cbiAgU0VSVklDRV9FUlJPUkNPREVfTk9FUlJPUjogJzAwJyxcbn07XG5cbmV4cG9ydCBjb25zdCBvcGVyYXRvcnMgPSB7XG4gIEc6ICc+JyxcbiAgTDogJzwnLFxuICBHRTogJz49JyxcbiAgTEU6ICc8PScsXG4gIEVROiAnPT0nLFxuICBOT1RfRVE6ICchPScsXG4gIENPTlRFTlQ6ICdDb250aWVuZScsXG4gIE5PVF9DT05URU5UOiAnTm8gQ29udGllbmUnLFxuICBCRVRXRUVOOiAnRW50cmUnLFxufTtcblxuZXhwb3J0IGNvbnN0IHRhYmxlRmllbGRTdHlsZXMgPSB7XG4gIFRFWFQ6IHtcbiAgICAndGV4dC1hbGlnbic6ICdsZWZ0J1xuICB9LFxuICBUSVRMRToge1xuICAgICd0ZXh0LWFsaWduJzogJ2xlZnQnXG4gIH0sXG4gIExBQkVMOiB7XG4gICAgJ3RleHQtYWxpZ24nOiAnbGVmdCdcbiAgfSxcbiAgTUVTU0FHRToge1xuICAgICd0ZXh0LWFsaWduJzogJ2xlZnQnXG4gIH0sXG4gIE5VTUJFUjoge1xuICAgICd0ZXh0LWFsaWduJzogJ3JpZ2h0J1xuICB9LFxuICBEQVRFOiB7XG4gICAgJ3RleHQtYWxpZ24nOiAncmlnaHQnXG4gIH0sXG4gIENIRUNLOiB7XG4gICAgJ3RleHQtYWxpZ24nOiAnY2VudGVyJ1xuICB9LFxuICBBUlJBWToge1xuICAgICd0ZXh0LWFsaWduJzogJ2xlZnQnXG4gIH0sXG4gIFNFTEVDVDoge1xuICAgICd0ZXh0LWFsaWduJzogJ2xlZnQnXG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NUQVRFX0ZMT1cgPSB7XG4gIGRlZmF1bHRTdGF0ZTogJ0NSRUFURScsXG4gIHN0YXRlczogWydDUkVBVEUnLCAnRURJVCcsICdWSUVXJ10sXG4gIHRyYW5zaXRpb25zOiBbXG4gICAgeyBuYW1lOiAnVklFVzEnLCBvcmlnaW46ICdDUkVBVEUnLCBkZXN0aW5hdGlvbjogJ1ZJRVcnIH0sXG4gICAgeyBuYW1lOiAnVklFVzInLCBvcmlnaW46ICdFRElUJywgZGVzdGluYXRpb246ICdWSUVXJyB9LFxuICAgIHsgbmFtZTogJ0VESVQxJywgb3JpZ2luOiAnQ1JFQVRFJywgZGVzdGluYXRpb246ICdFRElUJyB9LFxuICAgIHsgbmFtZTogJ0VESVQyJywgb3JpZ2luOiAnVklFVycsIGRlc3RpbmF0aW9uOiAnRURJVCcgfSxcbiAgICB7IG5hbWU6ICdDUkVBVEUxJywgb3JpZ2luOiAnRURJVCcsIGRlc3RpbmF0aW9uOiAnQ1JFQVRFJyB9LFxuICAgIHsgbmFtZTogJ0NSRUFURTInLCBvcmlnaW46ICdWSUVXJywgZGVzdGluYXRpb246ICdDUkVBVEUnIH0sXG4gIF1cbn07XG4iXX0=
@@ -2,17 +2,17 @@ import { RecordFormSection } from './section';
2
2
  import { FormAction } from './action';
3
3
  import { FieldDescriptor } from './field';
4
4
  import { RecordTable } from './table/table';
5
+ import { DEFAULT_STATE_FLOW } from './form.constants';
5
6
  const HEADER = 'HEADER';
6
7
  const NO_ERROR = '00';
7
8
  export class FormStructureAndData {
8
- constructor(definitionReceived, formConfig) {
9
+ constructor(definitionReceived) {
9
10
  this._fieldsObj = {};
10
11
  this._actionsObj = {};
11
12
  this._tableObj = {};
12
13
  this._sectionsObj = {};
13
14
  this._immutableData = {};
14
15
  this._extraInfo = {};
15
- this._formConfig = formConfig;
16
16
  this.state = '';
17
17
  this._actions = [];
18
18
  this._fields = [];
@@ -46,7 +46,7 @@ export class FormStructureAndData {
46
46
  return Object.assign(Object.assign({}, objDef), { visibleStates, enabledStates });
47
47
  });
48
48
  for (const actionReceived of formActions) {
49
- const globalAction = new FormAction(actionReceived, this._formConfig);
49
+ const globalAction = new FormAction(actionReceived);
50
50
  const globalActionCode = globalAction.actionCode;
51
51
  if (globalActionCode) {
52
52
  this._actions.push(globalAction);
@@ -67,7 +67,7 @@ export class FormStructureAndData {
67
67
  return Object.assign(Object.assign({}, objDef), { visibleStates, enabledStates });
68
68
  });
69
69
  for (const fieldReceived of formFields) {
70
- const fieldToAdd = new FieldDescriptor(fieldReceived, this._formConfig);
70
+ const fieldToAdd = new FieldDescriptor(fieldReceived);
71
71
  const fieldCode = fieldToAdd.fieldCode;
72
72
  if (fieldCode) {
73
73
  this._fields.push(fieldToAdd);
@@ -86,12 +86,12 @@ export class FormStructureAndData {
86
86
  enabledStates = [...visibleStates];
87
87
  }
88
88
  if (!visibleStates || visibleStates.length === 0) {
89
- visibleStates = this._formConfig.defaultStateFlow.states;
89
+ visibleStates = DEFAULT_STATE_FLOW.states;
90
90
  }
91
91
  return Object.assign(Object.assign({}, objDef), { visibleStates, enabledStates });
92
92
  });
93
93
  for (const tableReceived of tables) {
94
- const tableToAdd = new RecordTable(tableReceived, this._formConfig);
94
+ const tableToAdd = new RecordTable(tableReceived);
95
95
  const tableCode = tableToAdd.tableCode;
96
96
  if (tableCode) {
97
97
  this._tables.push(tableToAdd);
@@ -143,7 +143,7 @@ export class FormStructureAndData {
143
143
  }
144
144
  setStateFlow(states, transitions, defaultState) {
145
145
  if (!states || !transitions) {
146
- this._stateFlow = JSON.parse(JSON.stringify(this._formConfig.defaultStateFlow));
146
+ this._stateFlow = JSON.parse(JSON.stringify(DEFAULT_STATE_FLOW));
147
147
  return;
148
148
  }
149
149
  this._stateFlow.states = states;
@@ -369,8 +369,8 @@ export class FormStructureAndData {
369
369
  const fieldObject = this.getFieldObject(fieldCode);
370
370
  return (fieldObject) ? fieldObject.setValue(fieldValue) : null;
371
371
  }
372
- setFieldError(code, message, type = 'error') {
373
- const fieldObject = this.getFieldObject(code);
372
+ setFieldError(fieldCode, code, message, type = 'error') {
373
+ const fieldObject = this.getFieldObject(fieldCode);
374
374
  return (fieldObject) ? fieldObject.setError(code, message, type) : null;
375
375
  }
376
376
  setFieldIntrinsicErrorMessage(code, message) {
@@ -567,4 +567,4 @@ export class FormStructureAndData {
567
567
  return formData;
568
568
  }
569
569
  }
570
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQztBQWF0QixNQUFNLE9BQU8sb0JBQW9CO0lBaUIvQixZQUFZLGtCQUFrQixFQUFFLFVBQVU7UUFWbEMsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUVqQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRWYsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsbUJBQWMsR0FBRyxFQUFFLENBQUM7UUFDcEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUd0QixJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLFlBQVksRUFBRSxFQUFFO1lBQ2hCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsV0FBVyxFQUFFLEVBQUU7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QUUsZUFBZSxDQUFDLGFBQWE7d0JBQ3ZDLFlBQVksRUFBRSxFQUFFO3FCQUNqQixDQUFDO29CQUNGLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2lCQUNqQzthQUNGO1NBQ0Y7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEMsSUFBSSxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDL0IsS0FBSyxNQUFNLGVBQWUsSUFBSSxNQUFNLEVBQUU7Z0JBQ3BDLE1BQU0sU0FBUyxHQUFHO29CQUNoQixTQUFTLEVBQUUsZUFBZSxDQUFDLFNBQVM7b0JBQ3BDLE9BQU8sRUFBRSxlQUFlLENBQUMsT0FBTztvQkFDaEMsV0FBVyxFQUFFLGVBQWUsQ0FBQyxXQUFXO29CQUN4QyxhQUFhLEVBQUUsZUFBZSxDQUFDLGFBQWE7b0JBQzVDLGNBQWMsRUFBRSxlQUFlLENBQUMsY0FBYztvQkFDOUMsYUFBYSxFQUFFLGVBQWUsQ0FBQyxhQUFhO29CQUM1QyxhQUFhLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxVQUFVO29CQUNqRCxnQkFBZ0IsRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVM7aUJBQ3BELENBQUM7Z0JBQ0YsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDakM7U0FDRjtRQUNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlY29yZEZvcm1TZWN0aW9uIH0gZnJvbSAnLi9zZWN0aW9uJztcbmltcG9ydCB7IEZvcm1BY3Rpb24gfSBmcm9tICcuL2FjdGlvbic7XG5pbXBvcnQgeyBGaWVsZERlc2NyaXB0b3IgfSBmcm9tICcuL2ZpZWxkJztcbmltcG9ydCB7IFJlY29yZFRhYmxlIH0gZnJvbSAnLi90YWJsZS90YWJsZSc7XG5cbmNvbnN0IEhFQURFUiA9ICdIRUFERVInO1xuY29uc3QgTk9fRVJST1IgPSAnMDAnO1xuaW50ZXJmYWNlIFRyYW5zaXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBkZXN0aW5hdGlvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3RhdGVGbG93IHtcbiAgZGVmYXVsdFN0YXRlOiBzdHJpbmc7XG4gIHN0YXRlczogc3RyaW5nW107XG4gIHRyYW5zaXRpb25zOiBUcmFuc2l0aW9uW107XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtU3RydWN0dXJlQW5kRGF0YSB7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIF9uYW1lOiBzdHJpbmc7XG4gIF9mb3JtQ29uZmlnOiBhbnk7XG4gIHByaXZhdGUgX3RpdGxlOiBzdHJpbmc7XG4gIHByaXZhdGUgX3N0YXRlRmxvdzogU3RhdGVGbG93O1xuICBwcml2YXRlIF9maWVsZHM6IEZpZWxkRGVzY3JpcHRvcltdO1xuICBwcml2YXRlIF9maWVsZHNPYmogPSB7fTtcbiAgcHJpdmF0ZSBfYWN0aW9uczogRm9ybUFjdGlvbltdO1xuICBwcml2YXRlIF9hY3Rpb25zT2JqID0ge307XG4gIHByaXZhdGUgX3RhYmxlczogUmVjb3JkVGFibGVbXTtcbiAgcHJpdmF0ZSBfdGFibGVPYmogPSB7fTtcbiAgcHJpdmF0ZSBfc2VjdGlvbnM6IFJlY29yZEZvcm1TZWN0aW9uW107XG4gIHByaXZhdGUgX3NlY3Rpb25zT2JqID0ge307XG4gIHByaXZhdGUgX2ltbXV0YWJsZURhdGEgPSB7fTtcbiAgcHJpdmF0ZSBfZXh0cmFJbmZvID0ge307XG5cbiAgY29uc3RydWN0b3IoZGVmaW5pdGlvblJlY2VpdmVkLCBmb3JtQ29uZmlnKSB7XG4gICAgdGhpcy5fZm9ybUNvbmZpZyA9IGZvcm1Db25maWc7XG4gICAgdGhpcy5zdGF0ZSA9ICcnO1xuICAgIHRoaXMuX2FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLl9maWVsZHMgPSBbXTtcbiAgICB0aGlzLl90YWJsZXMgPSBbXTtcbiAgICB0aGlzLl9zZWN0aW9ucyA9IFtdO1xuICAgIHRoaXMuX3N0YXRlRmxvdyA9IHtcbiAgICAgIGRlZmF1bHRTdGF0ZTogJycsXG4gICAgICBzdGF0ZXM6IFtdLFxuICAgICAgdHJhbnNpdGlvbnM6IFtdLFxuICAgIH07XG4gICAgaWYgKCFkZWZpbml0aW9uUmVjZWl2ZWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5fbmFtZSA9IChkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybSAmJiBkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybS5mb3JtQ29kZSlcbiAgICAgID8gZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0uZm9ybUNvZGUgOiB0aGlzLl9uYW1lO1xuICAgIHRoaXMuX3RpdGxlID0gKGRlZmluaXRpb25SZWNlaXZlZC5mb3JtICYmIGRlZmluaXRpb25SZWNlaXZlZC5mb3JtLmZvcm1UaXRsZSlcbiAgICAgID8gZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0uZm9ybVRpdGxlIDogJyc7XG4gICAgdGhpcy5zZXRTdGF0ZUZsb3coZGVmaW5pdGlvblJlY2VpdmVkPy5zdGF0ZXMsIGRlZmluaXRpb25SZWNlaXZlZD8udHJhbnNpdGlvbnMsXG4gICAgICBkZWZpbml0aW9uUmVjZWl2ZWQ/LmRlZmF1bHRTdGF0ZSk7XG4gICAgdGhpcy5pbW11dGFibGVEYXRhID0gZGVmaW5pdGlvblJlY2VpdmVkLmltbXV0YWJsZURhdGE7XG4gICAgdGhpcy5leHRyYUluZm8gPSBkZWZpbml0aW9uUmVjZWl2ZWQuZXh0cmFJbmZvO1xuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5hY3Rpb25zKSB7XG4gICAgICBjb25zdCBmb3JtQWN0aW9ucyA9IGRlZmluaXRpb25SZWNlaXZlZC5hY3Rpb25zLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi5hY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICAgIGVuYWJsZWRTdGF0ZXMgPSBbLi4udmlzaWJsZVN0YXRlc107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uUmVjZWl2ZWQgb2YgZm9ybUFjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZ2xvYmFsQWN0aW9uID0gbmV3IEZvcm1BY3Rpb24oYWN0aW9uUmVjZWl2ZWQsIHRoaXMuX2Zvcm1Db25maWcpO1xuICAgICAgICBjb25zdCBnbG9iYWxBY3Rpb25Db2RlID0gZ2xvYmFsQWN0aW9uLmFjdGlvbkNvZGU7XG4gICAgICAgIGlmIChnbG9iYWxBY3Rpb25Db2RlKSB7XG4gICAgICAgICAgdGhpcy5fYWN0aW9ucy5wdXNoKGdsb2JhbEFjdGlvbik7XG4gICAgICAgICAgdGhpcy5fYWN0aW9uc09ialtnbG9iYWxBY3Rpb25Db2RlXSA9IGdsb2JhbEFjdGlvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZWZpbml0aW9uUmVjZWl2ZWQuZmllbGRzKSB7XG4gICAgICBjb25zdCBmb3JtRmllbGRzID0gZGVmaW5pdGlvblJlY2VpdmVkLmZpZWxkcy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcyB8fCBvYmpEZWYuZWRpdGFibGVTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLmZpZWxkTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gWy4uLnZpc2libGVTdGF0ZXNdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkUmVjZWl2ZWQgb2YgZm9ybUZpZWxkcykge1xuICAgICAgICBjb25zdCBmaWVsZFRvQWRkID0gbmV3IEZpZWxkRGVzY3JpcHRvcihmaWVsZFJlY2VpdmVkLCB0aGlzLl9mb3JtQ29uZmlnKTtcbiAgICAgICAgY29uc3QgZmllbGRDb2RlID0gZmllbGRUb0FkZC5maWVsZENvZGU7XG4gICAgICAgIGlmIChmaWVsZENvZGUpIHtcbiAgICAgICAgICB0aGlzLl9maWVsZHMucHVzaChmaWVsZFRvQWRkKTtcbiAgICAgICAgICB0aGlzLl9maWVsZHNPYmpbZmllbGRDb2RlXSA9IGZpZWxkVG9BZGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLnRhYmxlcykge1xuICAgICAgY29uc3QgdGFibGVzID0gZGVmaW5pdGlvblJlY2VpdmVkLnRhYmxlcy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcyB8fCBvYmpEZWYuZWRpdGFibGVTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLnRhYmxlTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gWy4uLnZpc2libGVTdGF0ZXNdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcyB8fCB2aXNpYmxlU3RhdGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSB0aGlzLl9mb3JtQ29uZmlnLmRlZmF1bHRTdGF0ZUZsb3cuc3RhdGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHRhYmxlUmVjZWl2ZWQgb2YgdGFibGVzKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlVG9BZGQgPSBuZXcgUmVjb3JkVGFibGUodGFibGVSZWNlaXZlZCwgdGhpcy5fZm9ybUNvbmZpZyk7XG4gICAgICAgIGNvbnN0IHRhYmxlQ29kZSA9IHRhYmxlVG9BZGQudGFibGVDb2RlO1xuICAgICAgICBpZiAodGFibGVDb2RlKSB7XG4gICAgICAgICAgdGhpcy5fdGFibGVzLnB1c2godGFibGVUb0FkZCk7XG4gICAgICAgICAgdGhpcy5fdGFibGVPYmpbdGFibGVDb2RlXSA9IHRhYmxlVG9BZGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLnNlY3Rpb25zKSB7XG4gICAgICBjb25zdCBmb3JtU2VjdGlvbnMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuc2VjdGlvbnMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLnNlY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHNlY3Rpb25SZWNlaXZlZCBvZiBmb3JtU2VjdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc2VjdGlvblRvQWRkID0gbmV3IFJlY29yZEZvcm1TZWN0aW9uKHNlY3Rpb25SZWNlaXZlZCwgdGhpcyk7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25Db2RlID0gc2VjdGlvblRvQWRkLnNlY3Rpb25Db2RlO1xuICAgICAgICBpZiAoc2VjdGlvbkNvZGUpIHtcbiAgICAgICAgICB0aGlzLl9zZWN0aW9ucy5wdXNoKHNlY3Rpb25Ub0FkZCk7XG4gICAgICAgICAgdGhpcy5fc2VjdGlvbnNPYmpbc2VjdGlvbkNvZGVdID0gc2VjdGlvblRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0IGltbXV0YWJsZURhdGEoaW1tdXRhYmxlRGF0YSkgeyBPYmplY3QuYXNzaWduKHRoaXMuX2ltbXV0YWJsZURhdGEsIGltbXV0YWJsZURhdGEpOyB9XG4gIHNldCBleHRyYUluZm8oZXh0cmFJbmZvKSB7IE9iamVjdC5hc3NpZ24odGhpcy5fZXh0cmFJbmZvLCBleHRyYUluZm8pOyB9XG5cbiAgZ2V0IGRlZmF1bHRTdGF0ZSgpIHsgcmV0dXJuIHRoaXMuX3N0YXRlRmxvdy5kZWZhdWx0U3RhdGU7IH1cbiAgZ2V0IHRpdGxlKCkgeyByZXR1cm4gdGhpcy5fdGl0bGU7IH1cbiAgc2V0IHRpdGxlKHRpdGxlKSB7IHRoaXMuX3RpdGxlID0gdGl0bGU7IH1cbiAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9XG4gIHNldCBuYW1lKG5hbWUpIHsgdGhpcy5fbmFtZSA9IG5hbWU7IH1cblxuICBjaGFuZ2VTdGF0ZShuZXdTdGF0ZSkge1xuICAgIGlmICghbmV3U3RhdGUgfHwgIXRoaXMuc3VwcG9ydFN0YXRlKG5ld1N0YXRlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc3RhdGUpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHJhbnNpdGlvblRvQ2hhbmdlID0gdGhpcy5fc3RhdGVGbG93LnRyYW5zaXRpb25zLmZpbmQodHJucyA9PlxuICAgICAgICB0cm5zLnNvdXJjZSA9PT0gdGhpcy5zdGF0ZSAmJiB0cm5zLmRlc3RpbmF0aW9uID09PSBuZXdTdGF0ZSk7XG4gICAgICBpZiAodHJhbnNpdGlvblRvQ2hhbmdlKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLnN0YXRlID09PSBuZXdTdGF0ZSk7XG4gIH1cblxuICBzZXRTdGF0ZUZsb3coc3RhdGVzPywgdHJhbnNpdGlvbnM/LCBkZWZhdWx0U3RhdGU/KSB7XG4gICAgaWYgKCFzdGF0ZXMgfHwgIXRyYW5zaXRpb25zKSB7XG4gICAgICB0aGlzLl9zdGF0ZUZsb3cgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuX2Zvcm1Db25maWcuZGVmYXVsdFN0YXRlRmxvdykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzID0gc3RhdGVzO1xuICAgIHRoaXMuX3N0YXRlRmxvdy5kZWZhdWx0U3RhdGUgPSBkZWZhdWx0U3RhdGUgfHwgdGhpcy5fc3RhdGVGbG93LnN0YXRlc1swXTtcbiAgICB0aGlzLl9zdGF0ZUZsb3cudHJhbnNpdGlvbnMgPSB0cmFuc2l0aW9ucy5tYXAodHJhbnNpdGlvbiA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gdHJhbnNpdGlvbi5uYW1lO1xuICAgICAgY29uc3Qgc291cmNlID0gKHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXMuaW5jbHVkZXModHJhbnNpdGlvbi5zb3VyY2UpKSA/IHRyYW5zaXRpb24uc291cmNlIDogJyc7XG4gICAgICBjb25zdCBkZXN0aW5hdGlvbiA9ICh0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzLmluY2x1ZGVzKHRyYW5zaXRpb24uZGVzdGluYXRpb24pKSA/IHRyYW5zaXRpb24uZGVzdGluYXRpb24gOiAnJztcbiAgICAgIHJldHVybiB7IG5hbWUsIHNvdXJjZSwgZGVzdGluYXRpb24gfTtcbiAgICB9KS5maWx0ZXIoaXRlbSA9PiBpdGVtLm5hbWUgJiYgaXRlbS5zb3VyY2UgJiYgaXRlbS5kZXN0aW5hdGlvbik7XG4gIH1cblxuICBzdXBwb3J0U3RhdGUoc3RhdGUpIHsgcmV0dXJuIHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXM/LmluY2x1ZGVzKHN0YXRlKTsgfVxuICBzdXBwb3J0TW9kZShzdGF0ZSkgeyByZXR1cm4gdGhpcy5zdXBwb3J0U3RhdGUoc3RhdGUpOyB9XG5cblxuICBnZXQgaW1tdXRhYmxlRGF0YSgpIHtcbiAgICBjb25zdCBkYXRhID0ge307XG4gICAgY29uc3Qgb2JqZWN0TmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLl9pbW11dGFibGVEYXRhKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgb2JqZWN0TmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBuYW1lID0gb2JqZWN0TmFtZXNbaW5kZXhdO1xuICAgICAgZGF0YVtuYW1lXSA9IHRoaXMuZ2V0SW1tdXRhYmxlRWxlbWVudChuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXRJbW11dGFibGVFbGVtZW50KG5hbWUpIHsgcmV0dXJuIHRoaXMuX2ltbXV0YWJsZURhdGE/LltuYW1lXT8udmFsdWUgPz8gbnVsbDsgfVxuICBnZXRFeHRyYUluZm8obmFtZSkgeyByZXR1cm4gdGhpcy5fZXh0cmFJbmZvPy5bbmFtZV0/LnZhbHVlID8/IG51bGw7IH1cblxuICBnZXQgZXh0cmFJbmZvKCkge1xuICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICBjb25zdCBvYmplY3ROYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuX2V4dHJhSW5mbyk7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG9iamVjdE5hbWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgbmFtZSA9IG9iamVjdE5hbWVzW2luZGV4XTtcbiAgICAgIGRhdGFbbmFtZV0gPSB0aGlzLmdldEV4dHJhSW5mbyhuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXRGaWVsZHMoKSB7IHJldHVybiB0aGlzLl9maWVsZHM7IH1cblxuICBnZXRTdGF0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXM7XG4gIH1cblxuICBnZXRGaWVsZE5hbWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZHMubWFwKGZpZWxkID0+IGZpZWxkLmZpZWxkQ29kZSk7XG4gIH1cblxuICBnZXRBY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zO1xuICB9XG5cbiAgZ2V0SGVhZGVyQWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5maWx0ZXIoYWN0aW9uSXRlbSA9PiBhY3Rpb25JdGVtLmxvY2F0aW9uID09PSBIRUFERVIpO1xuICB9XG5cbiAgZ2V0RmllbGRPYmplY3QoZWxlbWVudElkKSB7XG4gICAgcmV0dXJuICh0aGlzLl9maWVsZHNPYmogJiYgZWxlbWVudElkICYmIHRoaXMuX2ZpZWxkc09ialtlbGVtZW50SWRdKVxuICAgICAgPyB0aGlzLl9maWVsZHNPYmpbZWxlbWVudElkXSA6IG51bGw7XG4gIH1cblxuICBnZXRUYWJsZU9iamVjdChlbGVtZW50SWQpIHtcbiAgICByZXR1cm4gKHRoaXMuX3RhYmxlT2JqICYmIGVsZW1lbnRJZCAmJiB0aGlzLl90YWJsZU9ialtlbGVtZW50SWRdKVxuICAgICAgPyB0aGlzLl90YWJsZU9ialtlbGVtZW50SWRdIDogbnVsbDtcbiAgfVxuXG4gIGdldEFjdGlvbk9iamVjdChlbGVtZW50SWQpIHtcbiAgICByZXR1cm4gKHRoaXMuX2FjdGlvbnNPYmogJiYgZWxlbWVudElkICYmIHRoaXMuX2FjdGlvbnNPYmpbZWxlbWVudElkXSlcbiAgICAgID8gdGhpcy5fYWN0aW9uc09ialtlbGVtZW50SWRdIDogbnVsbDtcbiAgfVxuXG4gIGdldFN1YlNlY3Rpb24oc2VjdGlvbkNvZGUsIHN1YnNlY3Rpb25Db2RlKSB7XG4gICAgY29uc3Qgc2VjdGlvbiA9ICh0aGlzLl9zZWN0aW9uc09iaiAmJiB0aGlzLl9zZWN0aW9uc09ialtzZWN0aW9uQ29kZV0pXG4gICAgICA/IHRoaXMuX3NlY3Rpb25zT2JqW3NlY3Rpb25Db2RlXSA6IG51bGw7XG4gICAgcmV0dXJuIChzZWN0aW9uKSA/IHNlY3Rpb24uZ2V0U3Vic2VjdGlvbihzdWJzZWN0aW9uQ29kZSkgOiBudWxsO1xuICB9XG5cbiAgZ2V0U2VjdGlvbihzZWN0aW9uQ29kZSkge1xuICAgIHJldHVybiAodGhpcy5fc2VjdGlvbnNPYmogJiYgdGhpcy5fc2VjdGlvbnNPYmpbc2VjdGlvbkNvZGVdKVxuICAgICAgPyB0aGlzLl9zZWN0aW9uc09ialtzZWN0aW9uQ29kZV0gOiBudWxsO1xuICB9XG4gIHNlY3Rpb25zKCkgeyByZXR1cm4gdGhpcy5nZXRTZWN0aW9ucygpOyB9XG4gIHNlY3Rpb25UaXRsZXMoKSB7IHJldHVybiB0aGlzLmdldFNlY3Rpb25zVGl0bGVzKCk7IH1cblxuICBnZXRTZWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnM7XG4gIH1cblxuICBudW1TZWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0U2VjdGlvbnNUaXRsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlY3Rpb25zLm1hcChmb3JtU2VjdGlvbiA9PiBmb3JtU2VjdGlvbi5zZWN0aW9uVGl0bGUpO1xuICB9XG5cbiAgZ2V0U2VjdGlvbk9iamVjdChlbGVtZW50SWQpIHtcbiAgICByZXR1cm4gKHRoaXMuX3NlY3Rpb25zT2JqICYmIGVsZW1lbnRJZCAmJiB0aGlzLl9zZWN0aW9uc09ialtlbGVtZW50SWRdKVxuICAgICAgPyB0aGlzLl9zZWN0aW9uc09ialtlbGVtZW50SWRdIDogbnVsbDtcbiAgfVxuICB0YWJsZXMoKSB7IHJldHVybiB0aGlzLmdldFRhYmxlcygpOyB9XG5cbiAgZ2V0VGFibGVzKCkge1xuICAgIHJldHVybiB0aGlzLl90YWJsZXM7XG4gIH1cblxuICBjbGVhbkRhdGEoKSB7XG4gICAgaWYgKHRoaXMuX2ZpZWxkcykge1xuICAgICAgZm9yIChjb25zdCByZWNvcmRGaWVsZCBvZiB0aGlzLl9maWVsZHMpIHtcbiAgICAgICAgcmVjb3JkRmllbGQuc2V0VmFsdWUocmVjb3JkRmllbGQuZGVmYXVsdFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuX3RhYmxlcykge1xuICAgICAgZm9yIChjb25zdCBmb3JtVGFibGUgb2YgdGhpcy5fdGFibGVzKSB7XG4gICAgICAgIGZvcm1UYWJsZS5jbGVhbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNob3dTZWN0aW9uKHNlY3Rpb25Db2RlKSB7XG4gICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3Quc2hvdygpIDogbnVsbDtcbiAgfVxuXG4gIGhpZGVTZWN0aW9uKHNlY3Rpb25Db2RlKSB7XG4gICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuaGlkZSgpIDogbnVsbDtcbiAgfVxuXG4gIGFjdGl2ZVNlY3Rpb24oKSB7XG4gICAgY29uc3QgYWN0aXZlU2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zLmZpbmQoc2VjdGlvbk9iaiA9PiBzZWN0aW9uT2JqLmFjdGl2ZSk7XG4gICAgcmV0dXJuIGFjdGl2ZVNlY3Rpb24uc2VjdGlvbkNvZGU7XG4gIH1cblxuICBhY3RpdmF0ZVNlY3Rpb24oc2VjdGlvbkNvZGUpIHtcbiAgICB0aGlzLl9zZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb25PYmogPT4ge1xuICAgICAgaWYgKHNlY3Rpb25PYmopIHsgc2VjdGlvbk9iai5pbmFjdGl2YXRlKCk7IH1cbiAgICB9KTtcbiAgICBjb25zdCBzZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTZWN0aW9uT2JqZWN0KHNlY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKHNlY3Rpb25PYmplY3QpID8gc2VjdGlvbk9iamVjdC5hY3RpdmF0ZSgpIDogbnVsbDtcbiAgfVxuXG4gIHNob3dTZWN0aW9ucyhzZWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBzZWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShzZWN0aW9uQXJyYXkpKSA/IHNlY3Rpb25BcnJheSA6IFtzZWN0aW9uQXJyYXldO1xuICAgIHNlY3Rpb25OYW1lcy5mb3JFYWNoKHNlY3Rpb25Db2RlID0+IHRoaXMuc2hvd1NlY3Rpb24oc2VjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIGhpZGVTZWN0aW9ucyhzZWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBzZWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShzZWN0aW9uQXJyYXkpKSA/IHNlY3Rpb25BcnJheSA6IFtzZWN0aW9uQXJyYXldO1xuICAgIHNlY3Rpb25OYW1lcy5mb3JFYWNoKHNlY3Rpb25Db2RlID0+IHRoaXMuaGlkZVNlY3Rpb24oc2VjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIHNob3dTdWJTZWN0aW9uKHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgIGNvbnN0IHN1YlNlY3Rpb25PYmplY3QgPSAoc2VjdGlvbk9iamVjdCkgPyBzZWN0aW9uT2JqZWN0LmdldFN1YnNlY3Rpb24oc3ViU2VjdGlvbkNvZGUpIDogbnVsbDtcbiAgICByZXR1cm4gKHN1YlNlY3Rpb25PYmplY3QpID8gc3ViU2VjdGlvbk9iamVjdC5zaG93KCkgOiBudWxsO1xuICB9XG5cbiAgaGlkZVN1YlNlY3Rpb24oc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKSB7XG4gICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgY29uc3Qgc3ViU2VjdGlvbk9iamVjdCA9IChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuZ2V0U3Vic2VjdGlvbihzdWJTZWN0aW9uQ29kZSkgOiBudWxsO1xuICAgIHJldHVybiAoc3ViU2VjdGlvbk9iamVjdCkgPyBzdWJTZWN0aW9uT2JqZWN0LmhpZGUoKSA6IG51bGw7XG4gIH1cblxuICBzaG93U3ViU2VjdGlvbnMoc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25BcnJheSkge1xuICAgIGlmIChzdWJTZWN0aW9uQXJyYXkgJiYgc3ViU2VjdGlvbkFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgICAgZm9yIChjb25zdCBzdWJTZWN0aW9uQ29kZSBvZiBzdWJTZWN0aW9uQXJyYXkpIHtcbiAgICAgICAgY29uc3Qgc3ViU2VjdGlvbk9iamVjdCA9IChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuZ2V0U3Vic2VjdGlvbihzdWJTZWN0aW9uQ29kZSkgOiBudWxsO1xuICAgICAgICBpZiAoc3ViU2VjdGlvbk9iamVjdCkgeyBzdWJTZWN0aW9uT2JqZWN0LnNob3coKTsgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhpZGVTdWJTZWN0aW9ucyhzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkFycmF5KSB7XG4gICAgaWYgKHN1YlNlY3Rpb25BcnJheSAmJiBzdWJTZWN0aW9uQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgICBmb3IgKGNvbnN0IHN1YlNlY3Rpb25Db2RlIG9mIHN1YlNlY3Rpb25BcnJheSkge1xuICAgICAgICBjb25zdCBzdWJTZWN0aW9uT2JqZWN0ID0gKHNlY3Rpb25PYmplY3QpID8gc2VjdGlvbk9iamVjdC5nZXRTdWJzZWN0aW9uKHN1YlNlY3Rpb25Db2RlKSA6IG51bGw7XG4gICAgICAgIGlmIChzdWJTZWN0aW9uT2JqZWN0KSB7IHN1YlNlY3Rpb25PYmplY3QuaGlkZSgpOyB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2hvd0FjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgY29uc3QgYWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRBY3Rpb25PYmplY3QoYWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChhY3Rpb25PYmplY3QpID8gYWN0aW9uT2JqZWN0LnNob3coKSA6IG51bGw7XG4gIH1cblxuICBoaWRlQWN0aW9uKGFjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBhY3Rpb25PYmplY3QgPSB0aGlzLmdldEFjdGlvbk9iamVjdChhY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKGFjdGlvbk9iamVjdCkgPyBhY3Rpb25PYmplY3QuaGlkZSgpIDogbnVsbDtcbiAgfVxuXG4gIHNob3dBY3Rpb25zKGFjdGlvbkFycmF5KSB7XG4gICAgY29uc3QgYWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShhY3Rpb25BcnJheSkpID8gYWN0aW9uQXJyYXkgOiBbYWN0aW9uQXJyYXldO1xuICAgIGFjdGlvbk5hbWVzLmZvckVhY2goYWN0aW9uQ29kZSA9PiB0aGlzLnNob3dBY3Rpb24oYWN0aW9uQ29kZSkpO1xuICB9XG5cbiAgaGlkZUFjdGlvbnMoYWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBhY3Rpb25OYW1lcyA9IChBcnJheS5pc0FycmF5KGFjdGlvbkFycmF5KSkgPyBhY3Rpb25BcnJheSA6IFthY3Rpb25BcnJheV07XG4gICAgYWN0aW9uTmFtZXMuZm9yRWFjaChhY3Rpb25Db2RlID0+IHRoaXMuaGlkZUFjdGlvbihhY3Rpb25Db2RlKSk7XG4gIH1cblxuICBlbmFibGVBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IGFjdGlvbk9iamVjdCA9IHRoaXMuZ2V0QWN0aW9uT2JqZWN0KGFjdGlvbkNvZGUpO1xuICAgIHJldHVybiAoYWN0aW9uT2JqZWN0KSA/IGFjdGlvbk9iamVjdC5lbmFibGUoKSA6IG51bGw7XG4gIH1cblxuICBkaXNhYmxlQWN0aW9uKGFjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBhY3Rpb25PYmplY3QgPSB0aGlzLmdldEFjdGlvbk9iamVjdChhY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKGFjdGlvbk9iamVjdCkgPyBhY3Rpb25PYmplY3QuZGlzYWJsZSgpIDogbnVsbDtcbiAgfVxuXG4gIGVuYWJsZUFjdGlvbnMoYWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBhY3Rpb25OYW1lcyA9IChBcnJheS5pc0FycmF5KGFjdGlvbkFycmF5KSkgPyBhY3Rpb25BcnJheSA6IFthY3Rpb25BcnJheV07XG4gICAgYWN0aW9uTmFtZXMuZm9yRWFjaChhY3Rpb25Db2RlID0+IHRoaXMuZW5hYmxlQWN0aW9uKGFjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIGRpc2FibGVBY3Rpb25zKGFjdGlvbkFycmF5KSB7XG4gICAgY29uc3QgYWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShhY3Rpb25BcnJheSkpID8gYWN0aW9uQXJyYXkgOiBbYWN0aW9uQXJyYXldO1xuICAgIGFjdGlvbk5hbWVzLmZvckVhY2goYWN0aW9uQ29kZSA9PiB0aGlzLmRpc2FibGVBY3Rpb24oYWN0aW9uQ29kZSkpO1xuICB9XG5cbiAgZW5hYmxlRmllbGQoZmllbGRDb2RlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5lbmFibGUoKSA6IG51bGw7XG4gIH1cblxuICBkaXNhYmxlRmllbGQoZmllbGRDb2RlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5kaXNhYmxlKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0RmllbGRWYWx1ZShmaWVsZENvZGUpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LmdldFZhbHVlKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0RmllbGRzVmFsdWVzKGZpZWxkQ29kZXNBcnJheSkge1xuICAgIGlmICghZmllbGRDb2Rlc0FycmF5IHx8ICFBcnJheS5pc0FycmF5KGZpZWxkQ29kZXNBcnJheSkgfHwgZmllbGRDb2Rlc0FycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdE9iamVjdCA9IHt9O1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZENvZGVzQXJyYXkubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBmaWVsZENvZGUgPSBmaWVsZENvZGVzQXJyYXlbaW5kZXhdO1xuICAgICAgaWYgKGZpZWxkQ29kZSkge1xuICAgICAgICByZXN1bHRPYmplY3RbZmllbGRDb2RlXSA9IHRoaXMuX2ZpZWxkc09iaj8uW2ZpZWxkQ29kZV0/LmdldFZhbHVlKCkgPz8gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdE9iamVjdDtcbiAgfVxuXG4gIGdldEZpZWxkT3B0aW9ucyhmaWVsZENvZGUpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LmdldEZpZWxkT3B0aW9ucygpIDogbnVsbDtcbiAgfVxuXG4gIHNldEZpZWxkVmFsdWUoZmllbGRDb2RlLCBmaWVsZFZhbHVlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5zZXRWYWx1ZShmaWVsZFZhbHVlKSA6IG51bGw7XG4gIH1cblxuICBzZXRGaWVsZEVycm9yKGNvZGUsIG1lc3NhZ2UsIHR5cGUgPSAnZXJyb3InKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGNvZGUpO1xuICAgIHJldHVybiAoZmllbGRPYmplY3QpID8gZmllbGRPYmplY3Quc2V0RXJyb3IoY29kZSwgbWVzc2FnZSwgdHlwZSkgOiBudWxsO1xuICB9XG5cbiAgc2V0RmllbGRJbnRyaW5zaWNFcnJvck1lc3NhZ2UoY29kZSwgbWVzc2FnZSkge1xuICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChjb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LnNldEludHJpbnNpY0Vycm9yTWVzc2FnZShtZXNzYWdlKSA6IG51bGw7XG4gIH1cblxuICBzZXRGaWVsZFJlcXVpcmVkKGZpZWxkQ29kZSwgcmVxdWlyZWQpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LnJlcXVpcmVkID0gcmVxdWlyZWQgOiBudWxsO1xuICB9XG5cbiAgc2V0RmllbGRFcnJvck1lc3NhZ2UoZmllbGRDb2RlLCBlcnJvck1lc3NhZ2UpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LnNldEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpIDogbnVsbDtcbiAgfVxuXG4gIHNldEZpZWxkT3B0aW9ucyhmaWVsZENvZGUsIG9wdGlvbnNBcnJheSwgaWRBdHRyaWJ1dGUsIG5hbWVBdHRyaWJ1dGUpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICBpZiAoZmllbGRPYmplY3QgJiYgb3B0aW9uc0FycmF5ICYmIG9wdGlvbnNBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWVsZE9wdGlvbnMgPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgb3B0aW9uSXRlbSBvZiBvcHRpb25zQXJyYXkpIHtcbiAgICAgICAgY29uc3QgZmllbGRPcHRpb24gPSB7XG4gICAgICAgICAgZmllbGRPcHRpb25JZDogb3B0aW9uSXRlbVtpZEF0dHJpYnV0ZV0sXG4gICAgICAgICAgZmllbGRPcHRpb25WYWx1ZTogb3B0aW9uSXRlbVtuYW1lQXR0cmlidXRlXVxuICAgICAgICB9O1xuICAgICAgICBmaWVsZE9wdGlvbnMucHVzaChmaWVsZE9wdGlvbik7XG4gICAgICB9XG4gICAgICBmaWVsZE9iamVjdC5zZXRGaWVsZE9wdGlvbnMoZmllbGRPcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICBnZXRGaWVsZFNldChmaWx0ZXJGdW5jLCBmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICBsZXQgZmllbGRVbml2ZXJzZSA9IG51bGw7XG4gICAgaWYgKGZpZWxkQXJyYXkgJiYgQXJyYXkuaXNBcnJheShmaWVsZEFycmF5KSAmJiBmaWVsZEFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGZpZWxkVW5pdmVyc2UgPSBmaWVsZEFycmF5O1xuICAgIH0gZWxzZSBpZiAoc2VjdGlvbkNvZGUgJiYgIXN1YlNlY3Rpb25Db2RlKSB7XG4gICAgICBjb25zdCBzZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTZWN0aW9uT2JqZWN0KHNlY3Rpb25Db2RlKTtcbiAgICAgIGZpZWxkVW5pdmVyc2UgPSBzZWN0aW9uT2JqZWN0Py5nZXRGaWVsZE5hbWVzKCk7XG4gICAgfSBlbHNlIGlmIChzZWN0aW9uQ29kZSAmJiBzdWJTZWN0aW9uQ29kZSkge1xuICAgICAgY29uc3Qgc3ViU2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U3ViU2VjdGlvbihzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICAgICAgZmllbGRVbml2ZXJzZSA9IHN1YlNlY3Rpb25PYmplY3Q/LmdldEZpZWxkTmFtZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZmllbGRVbml2ZXJzZSA9IHRoaXMuZ2V0RmllbGROYW1lcygpO1xuICAgIH1cbiAgICBpZiAoIWZpbHRlckZ1bmMpIHtcbiAgICAgIHJldHVybiBmaWVsZFVuaXZlcnNlO1xuICAgIH1cbiAgICByZXR1cm4gZmllbGRVbml2ZXJzZS5maWx0ZXIoZmxkID0+IHtcbiAgICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmbGQpO1xuICAgICAgcmV0dXJuIChmaWVsZE9iamVjdCAmJiBmaWx0ZXJGdW5jKGZpZWxkT2JqZWN0KSk7XG4gICAgfSk7XG4gIH1cblxuICBhcHBseVByb2Nlc3NUb0ZpZWxkU2V0KHByb2Nlc3NGdW5jLCBmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICBjb25zdCBmaWVsZFVuaXZlcnNlID0gdGhpcy5nZXRGaWVsZFNldChudWxsLCBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICAgIGxldCBmaWVsZFNldFNpemUgPSAwO1xuICAgIGlmIChmaWVsZFVuaXZlcnNlICYmIHByb2Nlc3NGdW5jKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkQ29kZSBvZiBmaWVsZFVuaXZlcnNlKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkT2JqZWN0ID0gdGhpcy5nZXRGaWVsZE9iamVjdChmaWVsZENvZGUpO1xuICAgICAgICBpZiAoZmllbGRPYmplY3QpIHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJvY2Vzc0Z1bmMoZmllbGRPYmplY3QpO1xuICAgICAgICAgICAgZmllbGRTZXRTaXplICs9IDE7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYEVycm9yIHByb2Nlc2FuZG8gZnVuY2lvbiBlbiBjYW1wbyAke2ZpZWxkT2JqZWN0fTogJHtlfWApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmllbGRTZXRTaXplO1xuICB9XG5cbiAgc2hvd0ZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZsZCA9PiBmbGQuc2hvdygpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGhpZGVGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmbGQgPT4gZmxkLmhpZGUoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBzaG93TGFiZWxGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmbGQgPT4gZmxkLnNob3dMYWJsZWwoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBoaWRlTGFiZWxGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmbGQgPT4gZmxkLmhpZGVMYWJlbCgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuICAvLyBQYXJhIGRlcHJlY2FyXG4gIGVuYWJsZUVkaXRGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZW5hYmxlRmllbGRzKGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cbiAgLy8gUGFyYSBkZXByZWNhclxuICBkaXNhYmxlRWRpdEZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlRmllbGRzKGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBlbmFibGVGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmbGQgPT4gZmxkLmVuYWJsZSgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGRpc2FibGVGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmbGQgPT4gZmxkLmRpc2FibGUoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBjbGVhbkZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZpZWxkT2JqZWN0ID0+IHtcbiAgICAgIGZpZWxkT2JqZWN0LmNsZWFuKCcnKTtcbiAgICAgIGZpZWxkT2JqZWN0LnNldEVycm9yTWVzc2FnZSgnJyk7XG4gICAgfSwgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGdldFJlcXVpcmVkRmllbGRzKGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+IGZsZC5maWVsZFJlcXVpcmVkLCBmaWVsZEFycmF5LFxuICAgICAgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGdldFJlcXVpcmVkRW1wdHlGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RmllbGRTZXQoZmxkID0+IGZsZC5maWVsZFJlcXVpcmVkICYmIGZsZC5pc0VtcHR5KCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgZ2V0Q2hhbmdlZEZpZWxkcyhmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiAhZmxkLm91dHB1dE9ubHkgJiYgZmxkLmhhc0NoYW5nZWQoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBnZXRGaWVsZHNXaXRoVmFsaWRhdGlvbklzc3VlcyhmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQuZXJyb3JDb2RlICE9PSBOT19FUlJPUixcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICB0YWdGaWVsZHNXaXRoRXJyb3IoZXJyb3JNZXNzYWdlLCBmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5hcHBseVByb2Nlc3NUb0ZpZWxkU2V0KGZpZWxkT2JqZWN0ID0+IHtcbiAgICAgIGZpZWxkT2JqZWN0LnNldEVycm9yTWVzc2FnZShlcnJvck1lc3NhZ2UpO1xuICAgIH0sIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBjbGVhbkVycm9yRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHRoaXMudGFnRmllbGRzV2l0aEVycm9yKCcnLCBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgdGFnRW1wdHlSZXF1aXJlZEZpZWxkcyhlcnJvck1lc3NhZ2UsIGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIGNvbnN0IHBlbmRpbmdGaWVsZHMgPSB0aGlzLmdldFJlcXVpcmVkRW1wdHlGaWVsZHMoZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgICBpZiAocGVuZGluZ0ZpZWxkcyAmJiBwZW5kaW5nRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMudGFnRmllbGRzV2l0aEVycm9yKGVycm9yTWVzc2FnZSwgcGVuZGluZ0ZpZWxkcyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY2xlYW5UYWJsZSh0YWJsZUNvZGUpIHtcbiAgICBjb25zdCB0YWJsZU9iamVjdCA9IHRoaXMuZ2V0VGFibGVPYmplY3QodGFibGVDb2RlKTtcbiAgICByZXR1cm4gKHRhYmxlT2JqZWN0KSA/IHRhYmxlT2JqZWN0LmNsZWFuKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0VGFibGVSZWNvcmQodGFibGVDb2RlLCByZWNvcmRJZCkge1xuICAgIGNvbnN0IHRhYmxlT2JqZWN0ID0gdGhpcy5nZXRUYWJsZU9iamVjdCh0YWJsZUNvZGUpO1xuICAgIHJldHVybiAodGFibGVPYmplY3QpID8gdGFibGVPYmplY3QuZ2V0VGFibGVSZWNvcmQocmVjb3JkSWQpIDogbnVsbDtcbiAgfVxuXG4gIGhpZGVUYWJsZSh0YWJsZUNvZGUpIHtcbiAgICBjb25zdCB0YWJsZU9iamVjdCA9IHRoaXMuZ2V0VGFibGVPYmplY3QodGFibGVDb2RlKTtcbiAgICByZXR1cm4gKHRhYmxlT2JqZWN0KSA/IHRhYmxlT2JqZWN0LmhpZGUoKSA6IG51bGw7XG4gIH1cblxuICBzaG93VGFibGUodGFibGVDb2RlKSB7XG4gICAgY29uc3QgdGFibGVPYmplY3QgPSB0aGlzLmdldFRhYmxlT2JqZWN0KHRhYmxlQ29kZSk7XG4gICAgcmV0dXJuICh0YWJsZU9iamVjdCkgPyB0YWJsZU9iamVjdC5zaG93KCkgOiBudWxsO1xuICB9XG5cbiAgc2hvd1RhYmxlcyh0YWJsZUFycmF5KSB7XG4gICAgY29uc3QgdGFibGVOYW1lcyA9IChBcnJheS5pc0FycmF5KHRhYmxlQXJyYXkpKSA/IHRhYmxlQXJyYXkgOiBbdGFibGVBcnJheV07XG4gICAgdGFibGVOYW1lcy5mb3JFYWNoKHRhYmxlQ29kZSA9PiB0aGlzLnNob3dUYWJsZSh0YWJsZUNvZGUpKTtcbiAgfVxuXG4gIGhpZGVUYWJsZXModGFibGVBcnJheSkge1xuICAgIGNvbnN0IHRhYmxlTmFtZXMgPSAoQXJyYXkuaXNBcnJheSh0YWJsZUFycmF5KSkgPyB0YWJsZUFycmF5IDogW3RhYmxlQXJyYXldO1xuICAgIHRhYmxlTmFtZXMuZm9yRWFjaCh0YWJsZUNvZGUgPT4gdGhpcy5oaWRlVGFibGUodGFibGVDb2RlKSk7XG4gIH1cblxuICAvKiogcGF5bG9hZCBwYXJhIHNlcnZpY2lvcyBUdWFpbiAqL1xuICBnZXRQYXlsb2FkKCkge1xuICAgIGNvbnN0IGZvcm1EYXRhID0ge1xuICAgICAgZmllbGRzOiBbXSxcbiAgICAgIHRhYmxlczogW10sXG4gICAgfTtcbiAgICBjb25zdCBmb3JtRmllbGRzID0gdGhpcy5nZXRGaWVsZHMoKTtcbiAgICBpZiAoZm9ybUZpZWxkcyAmJiBmb3JtRmllbGRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgZmllbGREZXNjcmlwdG9yIG9mIGZvcm1GaWVsZHMpIHtcbiAgICAgICAgaWYgKCFmaWVsZERlc2NyaXB0b3Iub3V0cHV0T25seSkge1xuICAgICAgICAgIGNvbnN0IGZvcm1GaWVsZCA9IHtcbiAgICAgICAgICAgIGZpZWxkQ29kZTogZmllbGREZXNjcmlwdG9yLmZpZWxkQ29kZSxcbiAgICAgICAgICAgIGZpZWxkVmFsdWU6IGZpZWxkRGVzY3JpcHRvci5nZXRWYWx1ZSgpLFxuICAgICAgICAgICAgZWRpdGFibGU6ICFmaWVsZERlc2NyaXB0b3IuZGlzYWJsZWQsXG4gICAgICAgICAgICB2aXNpYmxlOiBmaWVsZERlc2NyaXB0b3IudmlzaWJsZSxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmaWVsZERlc2NyaXB0b3IuZmllbGRSZXF1aXJlZCxcbiAgICAgICAgICAgIGZpZWxkT3B0aW9uczogJycsXG4gICAgICAgICAgfTtcbiAgICAgICAgICBmb3JtRGF0YS5maWVsZHMucHVzaChmb3JtRmllbGQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHRhYmxlcyA9IHRoaXMuZ2V0VGFibGVzKCk7XG4gICAgaWYgKHRhYmxlcyAmJiB0YWJsZXMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChjb25zdCB0YWJsZURlc2NyaXB0b3Igb2YgdGFibGVzKSB7XG4gICAgICAgIGNvbnN0IGZvcm1UYWJsZSA9IHtcbiAgICAgICAgICB0YWJsZUNvZGU6IHRhYmxlRGVzY3JpcHRvci50YWJsZUNvZGUsXG4gICAgICAgICAgdmlzaWJsZTogdGFibGVEZXNjcmlwdG9yLnZpc2libGUsXG4gICAgICAgICAgY3VycmVudFBhZ2U6IHRhYmxlRGVzY3JpcHRvci5jdXJyZW50UGFnZSxcbiAgICAgICAgICByZXF1ZXN0ZWRQYWdlOiB0YWJsZURlc2NyaXB0b3IucmVxdWVzdGVkUGFnZSxcbiAgICAgICAgICByZWNvcmRzUGVyUGFnZTogdGFibGVEZXNjcmlwdG9yLnJlY29yZHNQZXJQYWdlLFxuICAgICAgICAgIGN1cnJlbnRGaWx0ZXI6IHRhYmxlRGVzY3JpcHRvci5jdXJyZW50RmlsdGVyLFxuICAgICAgICAgIHNvcnRpbmdDb2x1bW46IHRhYmxlRGVzY3JpcHRvci5zb3J0aW5nLmNvbHVtbk5hbWUsXG4gICAgICAgICAgc29ydGluZ0RpcmVjdGlvbjogdGFibGVEZXNjcmlwdG9yLnNvcnRpbmcuZGlyZWN0aW9uLFxuICAgICAgICB9O1xuICAgICAgICBmb3JtRGF0YS50YWJsZXMucHVzaChmb3JtVGFibGUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZm9ybURhdGE7XG4gIH1cbn1cbiJdfQ==
570
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvZm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDOUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFdEQsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ3hCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQztBQWN0QixNQUFNLE9BQU8sb0JBQW9CO0lBZ0IvQixZQUFZLGtCQUFrQjtRQVZ0QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBRWhCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBRWpCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFFZixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixtQkFBYyxHQUFHLEVBQUUsQ0FBQztRQUNwQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBR3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUc7WUFDaEIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsTUFBTSxFQUFFLEVBQUU7WUFDVixXQUFXLEVBQUUsRUFBRTtTQUNoQixDQUFDO1FBQ0YsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQUUsT0FBTztTQUFFO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN4RSxDQUFDLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNsRCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsa0JBQWtCLENBQUMsSUFBSSxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDMUUsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUMzQyxJQUFJLENBQUMsWUFBWSxDQUFDLGtCQUFrQixhQUFsQixrQkFBa0IsdUJBQWxCLGtCQUFrQixDQUFFLE1BQU0sRUFBRSxrQkFBa0IsYUFBbEIsa0JBQWtCLHVCQUFsQixrQkFBa0IsQ0FBRSxXQUFXLEVBQzNFLGtCQUFrQixhQUFsQixrQkFBa0IsdUJBQWxCLGtCQUFrQixDQUFFLFlBQVksQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsa0JBQWtCLENBQUMsYUFBYSxDQUFDO1FBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDO1FBRTlDLElBQUksa0JBQWtCLENBQUMsT0FBTyxFQUFFO1lBQzlCLE1BQU0sV0FBVyxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQzFELElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3pDLElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3pDLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ2xCLGFBQWEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzt5QkFDbEQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO3lCQUMxQixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDM0MsYUFBYSxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQztpQkFDcEM7Z0JBQ0QsdUNBQVksTUFBTSxLQUFFLGFBQWEsRUFBRSxhQUFhLElBQUc7WUFDckQsQ0FBQyxDQUFDLENBQUM7WUFDSCxLQUFLLE1BQU0sY0FBYyxJQUFJLFdBQVcsRUFBRTtnQkFDeEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ3BELE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLFVBQVUsQ0FBQztnQkFDakQsSUFBSSxnQkFBZ0IsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxZQUFZLENBQUM7aUJBQ25EO2FBQ0Y7U0FDRjtRQUVELElBQUksa0JBQWtCLENBQUMsTUFBTSxFQUFFO1lBQzdCLE1BQU0sVUFBVSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3hELElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3pDLElBQUksYUFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDLGNBQWMsQ0FBQztnQkFDbEUsSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDbEIsYUFBYSxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO3lCQUNqRCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7eUJBQzFCLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUMzQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDO2lCQUNwQztnQkFDRCx1Q0FBWSxNQUFNLEtBQUUsYUFBYSxFQUFFLGFBQWEsSUFBRztZQUNyRCxDQUFDLENBQUMsQ0FBQztZQUNILEtBQUssTUFBTSxhQUFhLElBQUksVUFBVSxFQUFFO2dCQUN0QyxNQUFNLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDdEQsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztnQkFDdkMsSUFBSSxTQUFTLEVBQUU7b0JBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsVUFBVSxDQUFDO2lCQUN6QzthQUNGO1NBQ0Y7UUFFRCxJQUFJLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtZQUM3QixNQUFNLE1BQU0sR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUNwRCxJQUFJLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO2dCQUN6QyxJQUFJLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxJQUFJLE1BQU0sQ0FBQyxjQUFjLENBQUM7Z0JBQ2xFLElBQUksQ0FBQyxhQUFhLEVBQUU7b0JBQ2xCLGFBQWEsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQzt5QkFDakQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO3lCQUMxQixNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDM0MsYUFBYSxHQUFHLENBQUMsR0FBRyxhQUFhLENBQUMsQ0FBQztpQkFDcEM7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDaEQsYUFBYSxHQUFHLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztpQkFDM0M7Z0JBQ0QsdUNBQVksTUFBTSxLQUFFLGFBQWEsRUFBRSxhQUFhLElBQUc7WUFDckQsQ0FBQyxDQUFDLENBQUM7WUFDSCxLQUFLLE1BQU0sYUFBYSxJQUFJLE1BQU0sRUFBRTtnQkFDbEMsTUFBTSxVQUFVLEdBQUcsSUFBSSxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2xELE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUM7Z0JBQ3ZDLElBQUksU0FBUyxFQUFFO29CQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO29CQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxHQUFHLFVBQVUsQ0FBQztpQkFDeEM7YUFDRjtTQUNGO1FBRUQsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7WUFDL0IsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtnQkFDNUQsSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDekMsSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDbEIsYUFBYSxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO3lCQUNuRCxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7eUJBQzFCLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO2lCQUM1QztnQkFDRCx1Q0FBWSxNQUFNLEtBQUUsYUFBYSxJQUFHO1lBQ3RDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsS0FBSyxNQUFNLGVBQWUsSUFBSSxZQUFZLEVBQUU7Z0JBQzFDLE1BQU0sWUFBWSxHQUFHLElBQUksaUJBQWlCLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNsRSxNQUFNLFdBQVcsR0FBRyxZQUFZLENBQUMsV0FBVyxDQUFDO2dCQUM3QyxJQUFJLFdBQVcsRUFBRTtvQkFDZixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsR0FBRyxZQUFZLENBQUM7aUJBQy9DO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxJQUFJLGFBQWEsQ0FBQyxhQUFhLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2RixJQUFJLFNBQVMsQ0FBQyxTQUFTLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV2RSxJQUFJLFlBQVksS0FBSyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUMzRCxJQUFJLEtBQUssS0FBSyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25DLElBQUksS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDekMsSUFBSSxJQUFJLEtBQUssT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNqQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBRXJDLFdBQVcsQ0FBQyxRQUFRO1FBQ2xCLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDO1NBQ3ZCO2FBQU07WUFDTCxNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNqRSxJQUFJLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxRQUFRLENBQUMsQ0FBQztZQUMvRCxJQUFJLGtCQUFrQixFQUFFO2dCQUN0QixJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQzthQUN2QjtTQUNGO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFPLEVBQUUsV0FBWSxFQUFFLFlBQWE7UUFDL0MsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMzQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7WUFDakUsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxHQUFHLFlBQVksSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ3pELE1BQU0sSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFDN0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM3RixNQUFNLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVHLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ3ZDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFLLFlBQUksT0FBTyxNQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSwwQ0FBRSxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLFdBQVcsQ0FBQyxLQUFLLElBQUksT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUd2RCxJQUFJLGFBQWE7UUFDZixNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDckQsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDdkQsTUFBTSxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0M7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxJQUFJLG9CQUFJLE9BQU8sTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLGNBQWMsMENBQUcsSUFBSSxDQUFDLDBDQUFFLEtBQUssbUNBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRixZQUFZLENBQUMsSUFBSSxvQkFBSSxPQUFPLE1BQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxVQUFVLDBDQUFHLElBQUksQ0FBQywwQ0FBRSxLQUFLLG1DQUFJLElBQUksQ0FBQyxDQUFDLENBQUM7SUFFckUsSUFBSSxTQUFTO1FBQ1gsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pELEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3ZELE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFNBQVMsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBRXBDLFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFTO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pFLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxTQUFTO1FBQ3RCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQy9ELENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkMsQ0FBQztJQUVELGVBQWUsQ0FBQyxTQUFTO1FBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25FLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDekMsQ0FBQztJQUVELGFBQWEsQ0FBQyxXQUFXLEVBQUUsY0FBYztRQUN2QyxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNuRSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2xFLENBQUM7SUFFRCxVQUFVLENBQUMsV0FBVztRQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDNUMsQ0FBQztJQUNELFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDekMsYUFBYSxLQUFLLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXBELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO0lBQy9CLENBQUM7SUFFRCxpQkFBaUI7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxTQUFTO1FBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxJQUFJLFNBQVMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUMsQ0FBQztJQUNELE1BQU0sS0FBSyxPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFckMsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixLQUFLLE1BQU0sV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ3RDLFdBQVcsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQ2hEO1NBQ0Y7UUFDRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNwQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDbkI7U0FDRjtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsV0FBVztRQUNyQixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekQsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBRUQsV0FBVyxDQUFDLFdBQVc7UUFDckIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkQsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMzRSxPQUFPLGFBQWEsQ0FBQyxXQUFXLENBQUM7SUFDbkMsQ0FBQztJQUVELGVBQWUsQ0FBQyxXQUFXO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2xDLElBQUksVUFBVSxFQUFFO2dCQUFFLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUFFO1FBQzlDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDM0QsQ0FBQztJQUVELFlBQVksQ0FBQyxZQUFZO1FBQ3ZCLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkYsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsWUFBWSxDQUFDLFlBQVk7UUFDdkIsTUFBTSxZQUFZLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRixZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxjQUFjLENBQUMsV0FBVyxFQUFFLGNBQWM7UUFDeEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzlGLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdELENBQUM7SUFFRCxjQUFjLENBQUMsV0FBVyxFQUFFLGNBQWM7UUFDeEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ3pELE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBQzlGLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzdELENBQUM7SUFFRCxlQUFlLENBQUMsV0FBVyxFQUFFLGVBQWU7UUFDMUMsSUFBSSxlQUFlLElBQUksZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pELEtBQUssTUFBTSxjQUFjLElBQUksZUFBZSxFQUFFO2dCQUM1QyxNQUFNLGdCQUFnQixHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDOUYsSUFBSSxnQkFBZ0IsRUFBRTtvQkFBRSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFBRTthQUNuRDtTQUNGO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxXQUFXLEVBQUUsZUFBZTtRQUMxQyxJQUFJLGVBQWUsSUFBSSxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNqRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDekQsS0FBSyxNQUFNLGNBQWMsSUFBSSxlQUFlLEVBQUU7Z0JBQzVDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUM5RixJQUFJLGdCQUFnQixFQUFFO29CQUFFLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO2lCQUFFO2FBQ25EO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLFVBQVU7UUFDbkIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RCxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3JELENBQUM7SUFFRCxVQUFVLENBQUMsVUFBVTtRQUNuQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckQsQ0FBQztJQUVELFdBQVcsQ0FBQyxXQUFXO1FBQ3JCLE1BQU0sV0FBVyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDL0UsV0FBVyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsV0FBVyxDQUFDLFdBQVc7UUFDckIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRSxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxZQUFZLENBQUMsVUFBVTtRQUNyQixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELE9BQU8sQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkQsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFVO1FBQ3RCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEQsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN4RCxDQUFDO0lBRUQsYUFBYSxDQUFDLFdBQVc7UUFDdkIsTUFBTSxXQUFXLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRSxXQUFXLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxjQUFjLENBQUMsV0FBVztRQUN4QixNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQy9FLFdBQVcsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFDcEUsQ0FBQztJQUVELFdBQVcsQ0FBQyxTQUFTO1FBQ25CLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNyRCxDQUFDO0lBRUQsWUFBWSxDQUFDLFNBQVM7UUFDcEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3RELENBQUM7SUFFRCxhQUFhLENBQUMsU0FBUztRQUNyQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDdkQsQ0FBQztJQUVELGVBQWUsQ0FBQyxlQUFlOztRQUM3QixJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxlQUFlLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN2RixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzNELE1BQU0sU0FBUyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxJQUFJLFNBQVMsRUFBRTtnQkFDYixZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBQSxNQUFBLE1BQUEsSUFBSSxDQUFDLFVBQVUsMENBQUcsU0FBUyxDQUFDLDBDQUFFLFFBQVEsRUFBRSxtQ0FBSSxJQUFJLENBQUM7YUFDNUU7U0FDRjtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBUztRQUN2QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUQsQ0FBQztJQUVELGFBQWEsQ0FBQyxTQUFTLEVBQUUsVUFBVTtRQUNqQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2pFLENBQUM7SUFFRCxhQUFhLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxHQUFHLE9BQU87UUFDcEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzFFLENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxJQUFJLEVBQUUsT0FBTztRQUN6QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDOUUsQ0FBQztJQUVELGdCQUFnQixDQUFDLFNBQVMsRUFBRSxRQUFRO1FBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ2hFLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsWUFBWTtRQUMxQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzFFLENBQUM7SUFFRCxlQUFlLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsYUFBYTtRQUNqRSxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25ELElBQUksV0FBVyxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMxRCxNQUFNLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDeEIsS0FBSyxNQUFNLFVBQVUsSUFBSSxZQUFZLEVBQUU7Z0JBQ3JDLE1BQU0sV0FBVyxHQUFHO29CQUNsQixhQUFhLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQztvQkFDdEMsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLGFBQWEsQ0FBQztpQkFDNUMsQ0FBQztnQkFDRixZQUFZLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2hDO1lBQ0QsV0FBVyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUMzQztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsVUFBVSxFQUFFLFVBQVUsR0FBRyxJQUFJLEVBQUUsV0FBVyxHQUFHLElBQUksRUFBRSxjQUFjLEdBQUcsSUFBSTtRQUNsRixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxVQUFVLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsSUFBSSxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNwRSxhQUFhLEdBQUcsVUFBVSxDQUFDO1NBQzVCO2FBQU0sSUFBSSxXQUFXLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDekMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ3pELGFBQWEsR0FBRyxhQUFhLGFBQWIsYUFBYSx1QkFBYixhQUFhLENBQUUsYUFBYSxFQUFFLENBQUM7U0FDaEQ7YUFBTSxJQUFJLFdBQVcsSUFBSSxjQUFjLEVBQUU7WUFDeEMsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztZQUN6RSxhQUFhLEdBQUcsZ0JBQWdCLGFBQWhCLGdCQUFnQix1QkFBaEIsZ0JBQWdCLENBQUUsYUFBYSxFQUFFLENBQUM7U0FDbkQ7YUFBTTtZQUNMLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7U0FDdEM7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2YsT0FBTyxhQUFhLENBQUM7U0FDdEI7UUFDRCxPQUFPLGFBQWEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUM3QyxPQUFPLENBQUMsV0FBVyxJQUFJLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ2xELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELHNCQUFzQixDQUFDLFdBQVcsRUFBRSxVQUFVLEdBQUcsSUFBSSxFQUFFLFdBQVcsR0FBRyxJQUFJLEVBQUUsY0FBYyxHQUFHLElBQUk7UUFDOUYsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztRQUN0RixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxhQUFhLElBQUksV0FBVyxFQUFFO1lBQ2hDLEtBQUssTUFBTSxTQUFTLElBQUksYUFBYSxFQUFFO2dCQUNyQyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLFdBQVcsRUFBRTtvQkFDZixJQUFJO3dCQUNGLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDekIsWUFBWSxJQUFJLENBQUMsQ0FBQztxQkFDbkI7b0JBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ1YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsV0FBVyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQ3ZFO2lCQUNGO2FBQ0Y7U0FDRjtRQUNELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxVQUFVLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUNsRCxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxVQUFVLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJO1FBQ3JFLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxFQUNsRCxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxlQUFlLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJO1FBQzFFLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsRUFBRSxFQUN4RCxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxlQUFlLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJO1FBQzFFLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUN2RCxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFDRCxnQkFBZ0I7SUFDaEIsZ0JBQWdCLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJO1FBQzNFLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxnQkFBZ0I7SUFDaEIsaUJBQWlCLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJO1FBQzVFLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxZQUFZLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJO1FBQ3ZFLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxFQUNwRCxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUNyRCxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJO1FBQ3RFLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQy9DLFdBQVcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdEIsV0FBVyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNsQyxDQUFDLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsVUFBVSxFQUFFLFdBQVcsR0FBRyxJQUFJLEVBQUUsY0FBYyxHQUFHLElBQUk7UUFDckUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxVQUFVLEVBQzFELFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsc0JBQXNCLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJO1FBQ2pGLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRSxFQUMvRCxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxHQUFHLElBQUksRUFBRSxjQUFjLEdBQUcsSUFBSTtRQUNwRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxFQUNoRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCw2QkFBNkIsQ0FBQyxVQUFVLEVBQUUsV0FBVyxHQUFHLElBQUksRUFBRSxjQUFjLEdBQUcsSUFBSTtRQUNqRixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFDdkQsVUFBVSxFQUFFLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsa0JBQWtCLENBQUMsWUFBWSxFQUFFLFVBQVUsR0FBRyxJQUFJLEVBQUUsV0FBVyxHQUFHLElBQUksRUFBRSxjQUFjLEdBQUcsSUFBSTtRQUMzRixPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMvQyxXQUFXLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzVDLENBQUMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxVQUFVLEdBQUcsSUFBSSxFQUFFLFdBQVcsR0FBRyxJQUFJLEVBQUUsY0FBYyxHQUFHLElBQUk7UUFDM0UsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxZQUFZLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFXLEdBQUcsSUFBSSxFQUFFLGNBQWMsR0FBRyxJQUFJO1FBQy9GLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBQzNGLElBQUksYUFBYSxJQUFJLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzdDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELFVBQVUsQ0FBQyxTQUFTO1FBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNwRCxDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQVMsRUFBRSxRQUFRO1FBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDckUsQ0FBQztJQUVELFNBQVMsQ0FBQyxTQUFTO1FBQ2pCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbkQsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNuRCxDQUFDO0lBRUQsU0FBUyxDQUFDLFNBQVM7UUFDakIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuRCxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25ELENBQUM7SUFFRCxVQUFVLENBQUMsVUFBVTtRQUNuQixNQUFNLFVBQVUsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzNFLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUFVO1FBQ25CLE1BQU0sVUFBVSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0UsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLFVBQVU7UUFDUixNQUFNLFFBQVEsR0FBRztZQUNmLE1BQU0sRUFBRSxFQUFFO1lBQ1YsTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFDO1FBQ0YsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3BDLElBQUksVUFBVSxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZDLEtBQUssTUFBTSxlQUFlLElBQUksVUFBVSxFQUFFO2dCQUN4QyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsRUFBRTtvQkFDL0IsTUFBTSxTQUFTLEdBQUc7d0JBQ2hCLFNBQVMsRUFBRSxlQUFlLENBQUMsU0FBUzt3QkFDcEMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUU7d0JBQ3RDLFFBQVEsRUFBRSxDQUFDLGVBQWUsQ0FBQyxRQUFRO3dCQUNuQyxPQUFPLEVBQUUsZUFBZSxDQUFDLE9BQU87d0JBQ2hDLFFBQVEsRUFBRSxlQUFlLENBQUMsYUFBYTt3QkFDdkMsWUFBWSxFQUFFLEVBQUU7cUJBQ2pCLENBQUM7b0JBQ0YsUUFBUSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7aUJBQ2pDO2FBQ0Y7U0FDRjtRQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNoQyxJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvQixLQUFLLE1BQU0sZUFBZSxJQUFJLE1BQU0sRUFBRTtnQkFDcEMsTUFBTSxTQUFTLEdBQUc7b0JBQ2hCLFNBQVMsRUFBRSxlQUFlLENBQUMsU0FBUztvQkFDcEMsT0FBTyxFQUFFLGVBQWUsQ0FBQyxPQUFPO29CQUNoQyxXQUFXLEVBQUUsZUFBZSxDQUFDLFdBQVc7b0JBQ3hDLGFBQWEsRUFBRSxlQUFlLENBQUMsYUFBYTtvQkFDNUMsY0FBYyxFQUFFLGVBQWUsQ0FBQyxjQUFjO29CQUM5QyxhQUFhLEVBQUUsZUFBZSxDQUFDLGFBQWE7b0JBQzVDLGFBQWEsRUFBRSxlQUFlLENBQUMsT0FBTyxDQUFDLFVBQVU7b0JBQ2pELGdCQUFnQixFQUFFLGVBQWUsQ0FBQyxPQUFPLENBQUMsU0FBUztpQkFDcEQsQ0FBQztnQkFDRixRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNqQztTQUNGO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVjb3JkRm9ybVNlY3Rpb24gfSBmcm9tICcuL3NlY3Rpb24nO1xuaW1wb3J0IHsgRm9ybUFjdGlvbiB9IGZyb20gJy4vYWN0aW9uJztcbmltcG9ydCB7IEZpZWxkRGVzY3JpcHRvciB9IGZyb20gJy4vZmllbGQnO1xuaW1wb3J0IHsgUmVjb3JkVGFibGUgfSBmcm9tICcuL3RhYmxlL3RhYmxlJztcbmltcG9ydCB7IERFRkFVTFRfU1RBVEVfRkxPVyB9IGZyb20gJy4vZm9ybS5jb25zdGFudHMnO1xuXG5jb25zdCBIRUFERVIgPSAnSEVBREVSJztcbmNvbnN0IE5PX0VSUk9SID0gJzAwJztcblxuaW50ZXJmYWNlIFRyYW5zaXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHNvdXJjZTogc3RyaW5nO1xuICBkZXN0aW5hdGlvbjogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU3RhdGVGbG93IHtcbiAgZGVmYXVsdFN0YXRlOiBzdHJpbmc7XG4gIHN0YXRlczogc3RyaW5nW107XG4gIHRyYW5zaXRpb25zOiBUcmFuc2l0aW9uW107XG59XG5cbmV4cG9ydCBjbGFzcyBGb3JtU3RydWN0dXJlQW5kRGF0YSB7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIF9uYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX3RpdGxlOiBzdHJpbmc7XG4gIHByaXZhdGUgX3N0YXRlRmxvdzogU3RhdGVGbG93O1xuICBwcml2YXRlIF9maWVsZHM6IEZpZWxkRGVzY3JpcHRvcltdO1xuICBwcml2YXRlIF9maWVsZHNPYmogPSB7fTtcbiAgcHJpdmF0ZSBfYWN0aW9uczogRm9ybUFjdGlvbltdO1xuICBwcml2YXRlIF9hY3Rpb25zT2JqID0ge307XG4gIHByaXZhdGUgX3RhYmxlczogUmVjb3JkVGFibGVbXTtcbiAgcHJpdmF0ZSBfdGFibGVPYmogPSB7fTtcbiAgcHJpdmF0ZSBfc2VjdGlvbnM6IFJlY29yZEZvcm1TZWN0aW9uW107XG4gIHByaXZhdGUgX3NlY3Rpb25zT2JqID0ge307XG4gIHByaXZhdGUgX2ltbXV0YWJsZURhdGEgPSB7fTtcbiAgcHJpdmF0ZSBfZXh0cmFJbmZvID0ge307XG5cbiAgY29uc3RydWN0b3IoZGVmaW5pdGlvblJlY2VpdmVkKSB7XG4gICAgdGhpcy5zdGF0ZSA9ICcnO1xuICAgIHRoaXMuX2FjdGlvbnMgPSBbXTtcbiAgICB0aGlzLl9maWVsZHMgPSBbXTtcbiAgICB0aGlzLl90YWJsZXMgPSBbXTtcbiAgICB0aGlzLl9zZWN0aW9ucyA9IFtdO1xuICAgIHRoaXMuX3N0YXRlRmxvdyA9IHtcbiAgICAgIGRlZmF1bHRTdGF0ZTogJycsXG4gICAgICBzdGF0ZXM6IFtdLFxuICAgICAgdHJhbnNpdGlvbnM6IFtdLFxuICAgIH07XG4gICAgaWYgKCFkZWZpbml0aW9uUmVjZWl2ZWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5fbmFtZSA9IChkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybSAmJiBkZWZpbml0aW9uUmVjZWl2ZWQuZm9ybS5mb3JtQ29kZSlcbiAgICAgID8gZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0uZm9ybUNvZGUgOiB0aGlzLl9uYW1lO1xuICAgIHRoaXMuX3RpdGxlID0gKGRlZmluaXRpb25SZWNlaXZlZC5mb3JtICYmIGRlZmluaXRpb25SZWNlaXZlZC5mb3JtLmZvcm1UaXRsZSlcbiAgICAgID8gZGVmaW5pdGlvblJlY2VpdmVkLmZvcm0uZm9ybVRpdGxlIDogJyc7XG4gICAgdGhpcy5zZXRTdGF0ZUZsb3coZGVmaW5pdGlvblJlY2VpdmVkPy5zdGF0ZXMsIGRlZmluaXRpb25SZWNlaXZlZD8udHJhbnNpdGlvbnMsXG4gICAgICBkZWZpbml0aW9uUmVjZWl2ZWQ/LmRlZmF1bHRTdGF0ZSk7XG4gICAgdGhpcy5pbW11dGFibGVEYXRhID0gZGVmaW5pdGlvblJlY2VpdmVkLmltbXV0YWJsZURhdGE7XG4gICAgdGhpcy5leHRyYUluZm8gPSBkZWZpbml0aW9uUmVjZWl2ZWQuZXh0cmFJbmZvO1xuXG4gICAgaWYgKGRlZmluaXRpb25SZWNlaXZlZC5hY3Rpb25zKSB7XG4gICAgICBjb25zdCBmb3JtQWN0aW9ucyA9IGRlZmluaXRpb25SZWNlaXZlZC5hY3Rpb25zLm1hcChvYmpEZWYgPT4ge1xuICAgICAgICBsZXQgdmlzaWJsZVN0YXRlcyA9IG9iakRlZi52aXNpYmxlU3RhdGVzO1xuICAgICAgICBsZXQgZW5hYmxlZFN0YXRlcyA9IG9iakRlZi5lbmFibGVkU3RhdGVzO1xuICAgICAgICBpZiAoIXZpc2libGVTdGF0ZXMpIHtcbiAgICAgICAgICB2aXNpYmxlU3RhdGVzID0gKG9iakRlZi5hY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICAgIGVuYWJsZWRTdGF0ZXMgPSBbLi4udmlzaWJsZVN0YXRlc107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgLi4ub2JqRGVmLCB2aXNpYmxlU3RhdGVzLCBlbmFibGVkU3RhdGVzIH07XG4gICAgICB9KTtcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uUmVjZWl2ZWQgb2YgZm9ybUFjdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZ2xvYmFsQWN0aW9uID0gbmV3IEZvcm1BY3Rpb24oYWN0aW9uUmVjZWl2ZWQpO1xuICAgICAgICBjb25zdCBnbG9iYWxBY3Rpb25Db2RlID0gZ2xvYmFsQWN0aW9uLmFjdGlvbkNvZGU7XG4gICAgICAgIGlmIChnbG9iYWxBY3Rpb25Db2RlKSB7XG4gICAgICAgICAgdGhpcy5fYWN0aW9ucy5wdXNoKGdsb2JhbEFjdGlvbik7XG4gICAgICAgICAgdGhpcy5fYWN0aW9uc09ialtnbG9iYWxBY3Rpb25Db2RlXSA9IGdsb2JhbEFjdGlvbjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChkZWZpbml0aW9uUmVjZWl2ZWQuZmllbGRzKSB7XG4gICAgICBjb25zdCBmb3JtRmllbGRzID0gZGVmaW5pdGlvblJlY2VpdmVkLmZpZWxkcy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcyB8fCBvYmpEZWYuZWRpdGFibGVTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLmZpZWxkTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gWy4uLnZpc2libGVTdGF0ZXNdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkUmVjZWl2ZWQgb2YgZm9ybUZpZWxkcykge1xuICAgICAgICBjb25zdCBmaWVsZFRvQWRkID0gbmV3IEZpZWxkRGVzY3JpcHRvcihmaWVsZFJlY2VpdmVkKTtcbiAgICAgICAgY29uc3QgZmllbGRDb2RlID0gZmllbGRUb0FkZC5maWVsZENvZGU7XG4gICAgICAgIGlmIChmaWVsZENvZGUpIHtcbiAgICAgICAgICB0aGlzLl9maWVsZHMucHVzaChmaWVsZFRvQWRkKTtcbiAgICAgICAgICB0aGlzLl9maWVsZHNPYmpbZmllbGRDb2RlXSA9IGZpZWxkVG9BZGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLnRhYmxlcykge1xuICAgICAgY29uc3QgdGFibGVzID0gZGVmaW5pdGlvblJlY2VpdmVkLnRhYmxlcy5tYXAob2JqRGVmID0+IHtcbiAgICAgICAgbGV0IHZpc2libGVTdGF0ZXMgPSBvYmpEZWYudmlzaWJsZVN0YXRlcztcbiAgICAgICAgbGV0IGVuYWJsZWRTdGF0ZXMgPSBvYmpEZWYuZW5hYmxlZFN0YXRlcyB8fCBvYmpEZWYuZWRpdGFibGVTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLnRhYmxlTW9kZXMgfHwgJycpLnNwbGl0KCcsJylcbiAgICAgICAgICAgIC5tYXAoc3RhdGUgPT4gc3RhdGUudHJpbSgpKVxuICAgICAgICAgICAgLmZpbHRlcihzdGF0ZSA9PiBzdGF0ZS5sZW5ndGggPiAwKSB8fCBbXTtcbiAgICAgICAgICBlbmFibGVkU3RhdGVzID0gWy4uLnZpc2libGVTdGF0ZXNdO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcyB8fCB2aXNpYmxlU3RhdGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSBERUZBVUxUX1NUQVRFX0ZMT1cuc3RhdGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcywgZW5hYmxlZFN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHRhYmxlUmVjZWl2ZWQgb2YgdGFibGVzKSB7XG4gICAgICAgIGNvbnN0IHRhYmxlVG9BZGQgPSBuZXcgUmVjb3JkVGFibGUodGFibGVSZWNlaXZlZCk7XG4gICAgICAgIGNvbnN0IHRhYmxlQ29kZSA9IHRhYmxlVG9BZGQudGFibGVDb2RlO1xuICAgICAgICBpZiAodGFibGVDb2RlKSB7XG4gICAgICAgICAgdGhpcy5fdGFibGVzLnB1c2godGFibGVUb0FkZCk7XG4gICAgICAgICAgdGhpcy5fdGFibGVPYmpbdGFibGVDb2RlXSA9IHRhYmxlVG9BZGQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZGVmaW5pdGlvblJlY2VpdmVkLnNlY3Rpb25zKSB7XG4gICAgICBjb25zdCBmb3JtU2VjdGlvbnMgPSBkZWZpbml0aW9uUmVjZWl2ZWQuc2VjdGlvbnMubWFwKG9iakRlZiA9PiB7XG4gICAgICAgIGxldCB2aXNpYmxlU3RhdGVzID0gb2JqRGVmLnZpc2libGVTdGF0ZXM7XG4gICAgICAgIGlmICghdmlzaWJsZVN0YXRlcykge1xuICAgICAgICAgIHZpc2libGVTdGF0ZXMgPSAob2JqRGVmLnNlY3Rpb25Nb2RlcyB8fCAnJykuc3BsaXQoJywnKVxuICAgICAgICAgICAgLm1hcChzdGF0ZSA9PiBzdGF0ZS50cmltKCkpXG4gICAgICAgICAgICAuZmlsdGVyKHN0YXRlID0+IHN0YXRlLmxlbmd0aCA+IDApIHx8IFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IC4uLm9iakRlZiwgdmlzaWJsZVN0YXRlcyB9O1xuICAgICAgfSk7XG4gICAgICBmb3IgKGNvbnN0IHNlY3Rpb25SZWNlaXZlZCBvZiBmb3JtU2VjdGlvbnMpIHtcbiAgICAgICAgY29uc3Qgc2VjdGlvblRvQWRkID0gbmV3IFJlY29yZEZvcm1TZWN0aW9uKHNlY3Rpb25SZWNlaXZlZCwgdGhpcyk7XG4gICAgICAgIGNvbnN0IHNlY3Rpb25Db2RlID0gc2VjdGlvblRvQWRkLnNlY3Rpb25Db2RlO1xuICAgICAgICBpZiAoc2VjdGlvbkNvZGUpIHtcbiAgICAgICAgICB0aGlzLl9zZWN0aW9ucy5wdXNoKHNlY3Rpb25Ub0FkZCk7XG4gICAgICAgICAgdGhpcy5fc2VjdGlvbnNPYmpbc2VjdGlvbkNvZGVdID0gc2VjdGlvblRvQWRkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2V0IGltbXV0YWJsZURhdGEoaW1tdXRhYmxlRGF0YSkgeyBPYmplY3QuYXNzaWduKHRoaXMuX2ltbXV0YWJsZURhdGEsIGltbXV0YWJsZURhdGEpOyB9XG4gIHNldCBleHRyYUluZm8oZXh0cmFJbmZvKSB7IE9iamVjdC5hc3NpZ24odGhpcy5fZXh0cmFJbmZvLCBleHRyYUluZm8pOyB9XG5cbiAgZ2V0IGRlZmF1bHRTdGF0ZSgpIHsgcmV0dXJuIHRoaXMuX3N0YXRlRmxvdy5kZWZhdWx0U3RhdGU7IH1cbiAgZ2V0IHRpdGxlKCkgeyByZXR1cm4gdGhpcy5fdGl0bGU7IH1cbiAgc2V0IHRpdGxlKHRpdGxlKSB7IHRoaXMuX3RpdGxlID0gdGl0bGU7IH1cbiAgZ2V0IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9XG4gIHNldCBuYW1lKG5hbWUpIHsgdGhpcy5fbmFtZSA9IG5hbWU7IH1cblxuICBjaGFuZ2VTdGF0ZShuZXdTdGF0ZSkge1xuICAgIGlmICghbmV3U3RhdGUgfHwgIXRoaXMuc3VwcG9ydFN0YXRlKG5ld1N0YXRlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc3RhdGUpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgdHJhbnNpdGlvblRvQ2hhbmdlID0gdGhpcy5fc3RhdGVGbG93LnRyYW5zaXRpb25zLmZpbmQodHJucyA9PlxuICAgICAgICB0cm5zLnNvdXJjZSA9PT0gdGhpcy5zdGF0ZSAmJiB0cm5zLmRlc3RpbmF0aW9uID09PSBuZXdTdGF0ZSk7XG4gICAgICBpZiAodHJhbnNpdGlvblRvQ2hhbmdlKSB7XG4gICAgICAgIHRoaXMuc3RhdGUgPSBuZXdTdGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICh0aGlzLnN0YXRlID09PSBuZXdTdGF0ZSk7XG4gIH1cblxuICBzZXRTdGF0ZUZsb3coc3RhdGVzPywgdHJhbnNpdGlvbnM/LCBkZWZhdWx0U3RhdGU/KSB7XG4gICAgaWYgKCFzdGF0ZXMgfHwgIXRyYW5zaXRpb25zKSB7XG4gICAgICB0aGlzLl9zdGF0ZUZsb3cgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KERFRkFVTFRfU1RBVEVfRkxPVykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzID0gc3RhdGVzO1xuICAgIHRoaXMuX3N0YXRlRmxvdy5kZWZhdWx0U3RhdGUgPSBkZWZhdWx0U3RhdGUgfHwgdGhpcy5fc3RhdGVGbG93LnN0YXRlc1swXTtcbiAgICB0aGlzLl9zdGF0ZUZsb3cudHJhbnNpdGlvbnMgPSB0cmFuc2l0aW9ucy5tYXAodHJhbnNpdGlvbiA9PiB7XG4gICAgICBjb25zdCBuYW1lID0gdHJhbnNpdGlvbi5uYW1lO1xuICAgICAgY29uc3Qgc291cmNlID0gKHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXMuaW5jbHVkZXModHJhbnNpdGlvbi5zb3VyY2UpKSA/IHRyYW5zaXRpb24uc291cmNlIDogJyc7XG4gICAgICBjb25zdCBkZXN0aW5hdGlvbiA9ICh0aGlzLl9zdGF0ZUZsb3cuc3RhdGVzLmluY2x1ZGVzKHRyYW5zaXRpb24uZGVzdGluYXRpb24pKSA/IHRyYW5zaXRpb24uZGVzdGluYXRpb24gOiAnJztcbiAgICAgIHJldHVybiB7IG5hbWUsIHNvdXJjZSwgZGVzdGluYXRpb24gfTtcbiAgICB9KS5maWx0ZXIoaXRlbSA9PiBpdGVtLm5hbWUgJiYgaXRlbS5zb3VyY2UgJiYgaXRlbS5kZXN0aW5hdGlvbik7XG4gIH1cblxuICBzdXBwb3J0U3RhdGUoc3RhdGUpIHsgcmV0dXJuIHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXM/LmluY2x1ZGVzKHN0YXRlKTsgfVxuICBzdXBwb3J0TW9kZShzdGF0ZSkgeyByZXR1cm4gdGhpcy5zdXBwb3J0U3RhdGUoc3RhdGUpOyB9XG5cblxuICBnZXQgaW1tdXRhYmxlRGF0YSgpIHtcbiAgICBjb25zdCBkYXRhID0ge307XG4gICAgY29uc3Qgb2JqZWN0TmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLl9pbW11dGFibGVEYXRhKTtcbiAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgb2JqZWN0TmFtZXMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBuYW1lID0gb2JqZWN0TmFtZXNbaW5kZXhdO1xuICAgICAgZGF0YVtuYW1lXSA9IHRoaXMuZ2V0SW1tdXRhYmxlRWxlbWVudChuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXRJbW11dGFibGVFbGVtZW50KG5hbWUpIHsgcmV0dXJuIHRoaXMuX2ltbXV0YWJsZURhdGE/LltuYW1lXT8udmFsdWUgPz8gbnVsbDsgfVxuICBnZXRFeHRyYUluZm8obmFtZSkgeyByZXR1cm4gdGhpcy5fZXh0cmFJbmZvPy5bbmFtZV0/LnZhbHVlID8/IG51bGw7IH1cblxuICBnZXQgZXh0cmFJbmZvKCkge1xuICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICBjb25zdCBvYmplY3ROYW1lcyA9IE9iamVjdC5rZXlzKHRoaXMuX2V4dHJhSW5mbyk7XG4gICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG9iamVjdE5hbWVzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgY29uc3QgbmFtZSA9IG9iamVjdE5hbWVzW2luZGV4XTtcbiAgICAgIGRhdGFbbmFtZV0gPSB0aGlzLmdldEV4dHJhSW5mbyhuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXRGaWVsZHMoKSB7IHJldHVybiB0aGlzLl9maWVsZHM7IH1cblxuICBnZXRTdGF0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlRmxvdy5zdGF0ZXM7XG4gIH1cblxuICBnZXRGaWVsZE5hbWVzKCkge1xuICAgIHJldHVybiB0aGlzLl9maWVsZHMubWFwKGZpZWxkID0+IGZpZWxkLmZpZWxkQ29kZSk7XG4gIH1cblxuICBnZXRBY3Rpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9hY3Rpb25zO1xuICB9XG5cbiAgZ2V0SGVhZGVyQWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5maWx0ZXIoYWN0aW9uSXRlbSA9PiBhY3Rpb25JdGVtLmxvY2F0aW9uID09PSBIRUFERVIpO1xuICB9XG5cbiAgZ2V0RmllbGRPYmplY3QoZWxlbWVudElkKSB7XG4gICAgcmV0dXJuICh0aGlzLl9maWVsZHNPYmogJiYgZWxlbWVudElkICYmIHRoaXMuX2ZpZWxkc09ialtlbGVtZW50SWRdKVxuICAgICAgPyB0aGlzLl9maWVsZHNPYmpbZWxlbWVudElkXSA6IG51bGw7XG4gIH1cblxuICBnZXRUYWJsZU9iamVjdChlbGVtZW50SWQpIHtcbiAgICByZXR1cm4gKHRoaXMuX3RhYmxlT2JqICYmIGVsZW1lbnRJZCAmJiB0aGlzLl90YWJsZU9ialtlbGVtZW50SWRdKVxuICAgICAgPyB0aGlzLl90YWJsZU9ialtlbGVtZW50SWRdIDogbnVsbDtcbiAgfVxuXG4gIGdldEFjdGlvbk9iamVjdChlbGVtZW50SWQpIHtcbiAgICByZXR1cm4gKHRoaXMuX2FjdGlvbnNPYmogJiYgZWxlbWVudElkICYmIHRoaXMuX2FjdGlvbnNPYmpbZWxlbWVudElkXSlcbiAgICAgID8gdGhpcy5fYWN0aW9uc09ialtlbGVtZW50SWRdIDogbnVsbDtcbiAgfVxuXG4gIGdldFN1YlNlY3Rpb24oc2VjdGlvbkNvZGUsIHN1YnNlY3Rpb25Db2RlKSB7XG4gICAgY29uc3Qgc2VjdGlvbiA9ICh0aGlzLl9zZWN0aW9uc09iaiAmJiB0aGlzLl9zZWN0aW9uc09ialtzZWN0aW9uQ29kZV0pXG4gICAgICA/IHRoaXMuX3NlY3Rpb25zT2JqW3NlY3Rpb25Db2RlXSA6IG51bGw7XG4gICAgcmV0dXJuIChzZWN0aW9uKSA/IHNlY3Rpb24uZ2V0U3Vic2VjdGlvbihzdWJzZWN0aW9uQ29kZSkgOiBudWxsO1xuICB9XG5cbiAgZ2V0U2VjdGlvbihzZWN0aW9uQ29kZSkge1xuICAgIHJldHVybiAodGhpcy5fc2VjdGlvbnNPYmogJiYgdGhpcy5fc2VjdGlvbnNPYmpbc2VjdGlvbkNvZGVdKVxuICAgICAgPyB0aGlzLl9zZWN0aW9uc09ialtzZWN0aW9uQ29kZV0gOiBudWxsO1xuICB9XG4gIHNlY3Rpb25zKCkgeyByZXR1cm4gdGhpcy5nZXRTZWN0aW9ucygpOyB9XG4gIHNlY3Rpb25UaXRsZXMoKSB7IHJldHVybiB0aGlzLmdldFNlY3Rpb25zVGl0bGVzKCk7IH1cblxuICBnZXRTZWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnM7XG4gIH1cblxuICBudW1TZWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnMubGVuZ3RoO1xuICB9XG5cbiAgZ2V0U2VjdGlvbnNUaXRsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlY3Rpb25zLm1hcChmb3JtU2VjdGlvbiA9PiBmb3JtU2VjdGlvbi5zZWN0aW9uVGl0bGUpO1xuICB9XG5cbiAgZ2V0U2VjdGlvbk9iamVjdChlbGVtZW50SWQpIHtcbiAgICByZXR1cm4gKHRoaXMuX3NlY3Rpb25zT2JqICYmIGVsZW1lbnRJZCAmJiB0aGlzLl9zZWN0aW9uc09ialtlbGVtZW50SWRdKVxuICAgICAgPyB0aGlzLl9zZWN0aW9uc09ialtlbGVtZW50SWRdIDogbnVsbDtcbiAgfVxuICB0YWJsZXMoKSB7IHJldHVybiB0aGlzLmdldFRhYmxlcygpOyB9XG5cbiAgZ2V0VGFibGVzKCkge1xuICAgIHJldHVybiB0aGlzLl90YWJsZXM7XG4gIH1cblxuICBjbGVhbkRhdGEoKSB7XG4gICAgaWYgKHRoaXMuX2ZpZWxkcykge1xuICAgICAgZm9yIChjb25zdCByZWNvcmRGaWVsZCBvZiB0aGlzLl9maWVsZHMpIHtcbiAgICAgICAgcmVjb3JkRmllbGQuc2V0VmFsdWUocmVjb3JkRmllbGQuZGVmYXVsdFZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuX3RhYmxlcykge1xuICAgICAgZm9yIChjb25zdCBmb3JtVGFibGUgb2YgdGhpcy5fdGFibGVzKSB7XG4gICAgICAgIGZvcm1UYWJsZS5jbGVhbigpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNob3dTZWN0aW9uKHNlY3Rpb25Db2RlKSB7XG4gICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3Quc2hvdygpIDogbnVsbDtcbiAgfVxuXG4gIGhpZGVTZWN0aW9uKHNlY3Rpb25Db2RlKSB7XG4gICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuaGlkZSgpIDogbnVsbDtcbiAgfVxuXG4gIGFjdGl2ZVNlY3Rpb24oKSB7XG4gICAgY29uc3QgYWN0aXZlU2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zLmZpbmQoc2VjdGlvbk9iaiA9PiBzZWN0aW9uT2JqLmFjdGl2ZSk7XG4gICAgcmV0dXJuIGFjdGl2ZVNlY3Rpb24uc2VjdGlvbkNvZGU7XG4gIH1cblxuICBhY3RpdmF0ZVNlY3Rpb24oc2VjdGlvbkNvZGUpIHtcbiAgICB0aGlzLl9zZWN0aW9ucy5mb3JFYWNoKHNlY3Rpb25PYmogPT4ge1xuICAgICAgaWYgKHNlY3Rpb25PYmopIHsgc2VjdGlvbk9iai5pbmFjdGl2YXRlKCk7IH1cbiAgICB9KTtcbiAgICBjb25zdCBzZWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRTZWN0aW9uT2JqZWN0KHNlY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKHNlY3Rpb25PYmplY3QpID8gc2VjdGlvbk9iamVjdC5hY3RpdmF0ZSgpIDogbnVsbDtcbiAgfVxuXG4gIHNob3dTZWN0aW9ucyhzZWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBzZWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShzZWN0aW9uQXJyYXkpKSA/IHNlY3Rpb25BcnJheSA6IFtzZWN0aW9uQXJyYXldO1xuICAgIHNlY3Rpb25OYW1lcy5mb3JFYWNoKHNlY3Rpb25Db2RlID0+IHRoaXMuc2hvd1NlY3Rpb24oc2VjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIGhpZGVTZWN0aW9ucyhzZWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBzZWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShzZWN0aW9uQXJyYXkpKSA/IHNlY3Rpb25BcnJheSA6IFtzZWN0aW9uQXJyYXldO1xuICAgIHNlY3Rpb25OYW1lcy5mb3JFYWNoKHNlY3Rpb25Db2RlID0+IHRoaXMuaGlkZVNlY3Rpb24oc2VjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIHNob3dTdWJTZWN0aW9uKHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgIGNvbnN0IHN1YlNlY3Rpb25PYmplY3QgPSAoc2VjdGlvbk9iamVjdCkgPyBzZWN0aW9uT2JqZWN0LmdldFN1YnNlY3Rpb24oc3ViU2VjdGlvbkNvZGUpIDogbnVsbDtcbiAgICByZXR1cm4gKHN1YlNlY3Rpb25PYmplY3QpID8gc3ViU2VjdGlvbk9iamVjdC5zaG93KCkgOiBudWxsO1xuICB9XG5cbiAgaGlkZVN1YlNlY3Rpb24oc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKSB7XG4gICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgY29uc3Qgc3ViU2VjdGlvbk9iamVjdCA9IChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuZ2V0U3Vic2VjdGlvbihzdWJTZWN0aW9uQ29kZSkgOiBudWxsO1xuICAgIHJldHVybiAoc3ViU2VjdGlvbk9iamVjdCkgPyBzdWJTZWN0aW9uT2JqZWN0LmhpZGUoKSA6IG51bGw7XG4gIH1cblxuICBzaG93U3ViU2VjdGlvbnMoc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25BcnJheSkge1xuICAgIGlmIChzdWJTZWN0aW9uQXJyYXkgJiYgc3ViU2VjdGlvbkFycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFNlY3Rpb25PYmplY3Qoc2VjdGlvbkNvZGUpO1xuICAgICAgZm9yIChjb25zdCBzdWJTZWN0aW9uQ29kZSBvZiBzdWJTZWN0aW9uQXJyYXkpIHtcbiAgICAgICAgY29uc3Qgc3ViU2VjdGlvbk9iamVjdCA9IChzZWN0aW9uT2JqZWN0KSA/IHNlY3Rpb25PYmplY3QuZ2V0U3Vic2VjdGlvbihzdWJTZWN0aW9uQ29kZSkgOiBudWxsO1xuICAgICAgICBpZiAoc3ViU2VjdGlvbk9iamVjdCkgeyBzdWJTZWN0aW9uT2JqZWN0LnNob3coKTsgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGhpZGVTdWJTZWN0aW9ucyhzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkFycmF5KSB7XG4gICAgaWYgKHN1YlNlY3Rpb25BcnJheSAmJiBzdWJTZWN0aW9uQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgICBmb3IgKGNvbnN0IHN1YlNlY3Rpb25Db2RlIG9mIHN1YlNlY3Rpb25BcnJheSkge1xuICAgICAgICBjb25zdCBzdWJTZWN0aW9uT2JqZWN0ID0gKHNlY3Rpb25PYmplY3QpID8gc2VjdGlvbk9iamVjdC5nZXRTdWJzZWN0aW9uKHN1YlNlY3Rpb25Db2RlKSA6IG51bGw7XG4gICAgICAgIGlmIChzdWJTZWN0aW9uT2JqZWN0KSB7IHN1YlNlY3Rpb25PYmplY3QuaGlkZSgpOyB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2hvd0FjdGlvbihhY3Rpb25Db2RlKSB7XG4gICAgY29uc3QgYWN0aW9uT2JqZWN0ID0gdGhpcy5nZXRBY3Rpb25PYmplY3QoYWN0aW9uQ29kZSk7XG4gICAgcmV0dXJuIChhY3Rpb25PYmplY3QpID8gYWN0aW9uT2JqZWN0LnNob3coKSA6IG51bGw7XG4gIH1cblxuICBoaWRlQWN0aW9uKGFjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBhY3Rpb25PYmplY3QgPSB0aGlzLmdldEFjdGlvbk9iamVjdChhY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKGFjdGlvbk9iamVjdCkgPyBhY3Rpb25PYmplY3QuaGlkZSgpIDogbnVsbDtcbiAgfVxuXG4gIHNob3dBY3Rpb25zKGFjdGlvbkFycmF5KSB7XG4gICAgY29uc3QgYWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShhY3Rpb25BcnJheSkpID8gYWN0aW9uQXJyYXkgOiBbYWN0aW9uQXJyYXldO1xuICAgIGFjdGlvbk5hbWVzLmZvckVhY2goYWN0aW9uQ29kZSA9PiB0aGlzLnNob3dBY3Rpb24oYWN0aW9uQ29kZSkpO1xuICB9XG5cbiAgaGlkZUFjdGlvbnMoYWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBhY3Rpb25OYW1lcyA9IChBcnJheS5pc0FycmF5KGFjdGlvbkFycmF5KSkgPyBhY3Rpb25BcnJheSA6IFthY3Rpb25BcnJheV07XG4gICAgYWN0aW9uTmFtZXMuZm9yRWFjaChhY3Rpb25Db2RlID0+IHRoaXMuaGlkZUFjdGlvbihhY3Rpb25Db2RlKSk7XG4gIH1cblxuICBlbmFibGVBY3Rpb24oYWN0aW9uQ29kZSkge1xuICAgIGNvbnN0IGFjdGlvbk9iamVjdCA9IHRoaXMuZ2V0QWN0aW9uT2JqZWN0KGFjdGlvbkNvZGUpO1xuICAgIHJldHVybiAoYWN0aW9uT2JqZWN0KSA/IGFjdGlvbk9iamVjdC5lbmFibGUoKSA6IG51bGw7XG4gIH1cblxuICBkaXNhYmxlQWN0aW9uKGFjdGlvbkNvZGUpIHtcbiAgICBjb25zdCBhY3Rpb25PYmplY3QgPSB0aGlzLmdldEFjdGlvbk9iamVjdChhY3Rpb25Db2RlKTtcbiAgICByZXR1cm4gKGFjdGlvbk9iamVjdCkgPyBhY3Rpb25PYmplY3QuZGlzYWJsZSgpIDogbnVsbDtcbiAgfVxuXG4gIGVuYWJsZUFjdGlvbnMoYWN0aW9uQXJyYXkpIHtcbiAgICBjb25zdCBhY3Rpb25OYW1lcyA9IChBcnJheS5pc0FycmF5KGFjdGlvbkFycmF5KSkgPyBhY3Rpb25BcnJheSA6IFthY3Rpb25BcnJheV07XG4gICAgYWN0aW9uTmFtZXMuZm9yRWFjaChhY3Rpb25Db2RlID0+IHRoaXMuZW5hYmxlQWN0aW9uKGFjdGlvbkNvZGUpKTtcbiAgfVxuXG4gIGRpc2FibGVBY3Rpb25zKGFjdGlvbkFycmF5KSB7XG4gICAgY29uc3QgYWN0aW9uTmFtZXMgPSAoQXJyYXkuaXNBcnJheShhY3Rpb25BcnJheSkpID8gYWN0aW9uQXJyYXkgOiBbYWN0aW9uQXJyYXldO1xuICAgIGFjdGlvbk5hbWVzLmZvckVhY2goYWN0aW9uQ29kZSA9PiB0aGlzLmRpc2FibGVBY3Rpb24oYWN0aW9uQ29kZSkpO1xuICB9XG5cbiAgZW5hYmxlRmllbGQoZmllbGRDb2RlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5lbmFibGUoKSA6IG51bGw7XG4gIH1cblxuICBkaXNhYmxlRmllbGQoZmllbGRDb2RlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5kaXNhYmxlKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0RmllbGRWYWx1ZShmaWVsZENvZGUpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LmdldFZhbHVlKCkgOiBudWxsO1xuICB9XG5cbiAgZ2V0RmllbGRzVmFsdWVzKGZpZWxkQ29kZXNBcnJheSkge1xuICAgIGlmICghZmllbGRDb2Rlc0FycmF5IHx8ICFBcnJheS5pc0FycmF5KGZpZWxkQ29kZXNBcnJheSkgfHwgZmllbGRDb2Rlc0FycmF5Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdE9iamVjdCA9IHt9O1xuICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBmaWVsZENvZGVzQXJyYXkubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICBjb25zdCBmaWVsZENvZGUgPSBmaWVsZENvZGVzQXJyYXlbaW5kZXhdO1xuICAgICAgaWYgKGZpZWxkQ29kZSkge1xuICAgICAgICByZXN1bHRPYmplY3RbZmllbGRDb2RlXSA9IHRoaXMuX2ZpZWxkc09iaj8uW2ZpZWxkQ29kZV0/LmdldFZhbHVlKCkgPz8gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdE9iamVjdDtcbiAgfVxuXG4gIGdldEZpZWxkT3B0aW9ucyhmaWVsZENvZGUpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LmdldEZpZWxkT3B0aW9ucygpIDogbnVsbDtcbiAgfVxuXG4gIHNldEZpZWxkVmFsdWUoZmllbGRDb2RlLCBmaWVsZFZhbHVlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5zZXRWYWx1ZShmaWVsZFZhbHVlKSA6IG51bGw7XG4gIH1cblxuICBzZXRGaWVsZEVycm9yKGZpZWxkQ29kZSwgY29kZSwgbWVzc2FnZSwgdHlwZSA9ICdlcnJvcicpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICByZXR1cm4gKGZpZWxkT2JqZWN0KSA/IGZpZWxkT2JqZWN0LnNldEVycm9yKGNvZGUsIG1lc3NhZ2UsIHR5cGUpIDogbnVsbDtcbiAgfVxuXG4gIHNldEZpZWxkSW50cmluc2ljRXJyb3JNZXNzYWdlKGNvZGUsIG1lc3NhZ2UpIHtcbiAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoY29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5zZXRJbnRyaW5zaWNFcnJvck1lc3NhZ2UobWVzc2FnZSkgOiBudWxsO1xuICB9XG5cbiAgc2V0RmllbGRSZXF1aXJlZChmaWVsZENvZGUsIHJlcXVpcmVkKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5yZXF1aXJlZCA9IHJlcXVpcmVkIDogbnVsbDtcbiAgfVxuXG4gIHNldEZpZWxkRXJyb3JNZXNzYWdlKGZpZWxkQ29kZSwgZXJyb3JNZXNzYWdlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgcmV0dXJuIChmaWVsZE9iamVjdCkgPyBmaWVsZE9iamVjdC5zZXRFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKSA6IG51bGw7XG4gIH1cblxuICBzZXRGaWVsZE9wdGlvbnMoZmllbGRDb2RlLCBvcHRpb25zQXJyYXksIGlkQXR0cmlidXRlLCBuYW1lQXR0cmlidXRlKSB7XG4gICAgY29uc3QgZmllbGRPYmplY3QgPSB0aGlzLmdldEZpZWxkT2JqZWN0KGZpZWxkQ29kZSk7XG4gICAgaWYgKGZpZWxkT2JqZWN0ICYmIG9wdGlvbnNBcnJheSAmJiBvcHRpb25zQXJyYXkubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmllbGRPcHRpb25zID0gW107XG4gICAgICBmb3IgKGNvbnN0IG9wdGlvbkl0ZW0gb2Ygb3B0aW9uc0FycmF5KSB7XG4gICAgICAgIGNvbnN0IGZpZWxkT3B0aW9uID0ge1xuICAgICAgICAgIGZpZWxkT3B0aW9uSWQ6IG9wdGlvbkl0ZW1baWRBdHRyaWJ1dGVdLFxuICAgICAgICAgIGZpZWxkT3B0aW9uVmFsdWU6IG9wdGlvbkl0ZW1bbmFtZUF0dHJpYnV0ZV1cbiAgICAgICAgfTtcbiAgICAgICAgZmllbGRPcHRpb25zLnB1c2goZmllbGRPcHRpb24pO1xuICAgICAgfVxuICAgICAgZmllbGRPYmplY3Quc2V0RmllbGRPcHRpb25zKGZpZWxkT3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0RmllbGRTZXQoZmlsdGVyRnVuYywgZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgbGV0IGZpZWxkVW5pdmVyc2UgPSBudWxsO1xuICAgIGlmIChmaWVsZEFycmF5ICYmIEFycmF5LmlzQXJyYXkoZmllbGRBcnJheSkgJiYgZmllbGRBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICBmaWVsZFVuaXZlcnNlID0gZmllbGRBcnJheTtcbiAgICB9IGVsc2UgaWYgKHNlY3Rpb25Db2RlICYmICFzdWJTZWN0aW9uQ29kZSkge1xuICAgICAgY29uc3Qgc2VjdGlvbk9iamVjdCA9IHRoaXMuZ2V0U2VjdGlvbk9iamVjdChzZWN0aW9uQ29kZSk7XG4gICAgICBmaWVsZFVuaXZlcnNlID0gc2VjdGlvbk9iamVjdD8uZ2V0RmllbGROYW1lcygpO1xuICAgIH0gZWxzZSBpZiAoc2VjdGlvbkNvZGUgJiYgc3ViU2VjdGlvbkNvZGUpIHtcbiAgICAgIGNvbnN0IHN1YlNlY3Rpb25PYmplY3QgPSB0aGlzLmdldFN1YlNlY3Rpb24oc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgICAgIGZpZWxkVW5pdmVyc2UgPSBzdWJTZWN0aW9uT2JqZWN0Py5nZXRGaWVsZE5hbWVzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpZWxkVW5pdmVyc2UgPSB0aGlzLmdldEZpZWxkTmFtZXMoKTtcbiAgICB9XG4gICAgaWYgKCFmaWx0ZXJGdW5jKSB7XG4gICAgICByZXR1cm4gZmllbGRVbml2ZXJzZTtcbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkVW5pdmVyc2UuZmlsdGVyKGZsZCA9PiB7XG4gICAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmxkKTtcbiAgICAgIHJldHVybiAoZmllbGRPYmplY3QgJiYgZmlsdGVyRnVuYyhmaWVsZE9iamVjdCkpO1xuICAgIH0pO1xuICB9XG5cbiAgYXBwbHlQcm9jZXNzVG9GaWVsZFNldChwcm9jZXNzRnVuYywgZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgY29uc3QgZmllbGRVbml2ZXJzZSA9IHRoaXMuZ2V0RmllbGRTZXQobnVsbCwgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgICBsZXQgZmllbGRTZXRTaXplID0gMDtcbiAgICBpZiAoZmllbGRVbml2ZXJzZSAmJiBwcm9jZXNzRnVuYykge1xuICAgICAgZm9yIChjb25zdCBmaWVsZENvZGUgb2YgZmllbGRVbml2ZXJzZSkge1xuICAgICAgICBjb25zdCBmaWVsZE9iamVjdCA9IHRoaXMuZ2V0RmllbGRPYmplY3QoZmllbGRDb2RlKTtcbiAgICAgICAgaWYgKGZpZWxkT2JqZWN0KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHByb2Nlc3NGdW5jKGZpZWxkT2JqZWN0KTtcbiAgICAgICAgICAgIGZpZWxkU2V0U2l6ZSArPSAxO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBFcnJvciBwcm9jZXNhbmRvIGZ1bmNpb24gZW4gY2FtcG8gJHtmaWVsZE9iamVjdH06ICR7ZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpZWxkU2V0U2l6ZTtcbiAgfVxuXG4gIHNob3dGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmbGQgPT4gZmxkLnNob3coKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBoaWRlRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmxkID0+IGZsZC5oaWRlKCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgc2hvd0xhYmVsRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmxkID0+IGZsZC5zaG93TGFibGVsKCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgaGlkZUxhYmVsRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmxkID0+IGZsZC5oaWRlTGFiZWwoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cbiAgLy8gUGFyYSBkZXByZWNhclxuICBlbmFibGVFZGl0RmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmVuYWJsZUZpZWxkcyhmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG4gIC8vIFBhcmEgZGVwcmVjYXJcbiAgZGlzYWJsZUVkaXRGaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlzYWJsZUZpZWxkcyhmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgZW5hYmxlRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmxkID0+IGZsZC5lbmFibGUoKSxcbiAgICAgIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBkaXNhYmxlRmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmFwcGx5UHJvY2Vzc1RvRmllbGRTZXQoZmxkID0+IGZsZC5kaXNhYmxlKCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgY2xlYW5GaWVsZHMoZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmaWVsZE9iamVjdCA9PiB7XG4gICAgICBmaWVsZE9iamVjdC5jbGVhbignJyk7XG4gICAgICBmaWVsZE9iamVjdC5zZXRFcnJvck1lc3NhZ2UoJycpO1xuICAgIH0sIGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBnZXRSZXF1aXJlZEZpZWxkcyhmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQuZmllbGRSZXF1aXJlZCwgZmllbGRBcnJheSxcbiAgICAgIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gIH1cblxuICBnZXRSZXF1aXJlZEVtcHR5RmllbGRzKGZpZWxkQXJyYXkgPSBudWxsLCBzZWN0aW9uQ29kZSA9IG51bGwsIHN1YlNlY3Rpb25Db2RlID0gbnVsbCkge1xuICAgIHJldHVybiB0aGlzLmdldEZpZWxkU2V0KGZsZCA9PiBmbGQuZmllbGRSZXF1aXJlZCAmJiBmbGQuaXNFbXB0eSgpLFxuICAgICAgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIGdldENoYW5nZWRGaWVsZHMoZmllbGRBcnJheSwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gIWZsZC5vdXRwdXRPbmx5ICYmIGZsZC5oYXNDaGFuZ2VkKCksXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgZ2V0RmllbGRzV2l0aFZhbGlkYXRpb25Jc3N1ZXMoZmllbGRBcnJheSwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRGaWVsZFNldChmbGQgPT4gZmxkLmVycm9yQ29kZSAhPT0gTk9fRVJST1IsXG4gICAgICBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgdGFnRmllbGRzV2l0aEVycm9yKGVycm9yTWVzc2FnZSwgZmllbGRBcnJheSA9IG51bGwsIHNlY3Rpb25Db2RlID0gbnVsbCwgc3ViU2VjdGlvbkNvZGUgPSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbHlQcm9jZXNzVG9GaWVsZFNldChmaWVsZE9iamVjdCA9PiB7XG4gICAgICBmaWVsZE9iamVjdC5zZXRFcnJvck1lc3NhZ2UoZXJyb3JNZXNzYWdlKTtcbiAgICB9LCBmaWVsZEFycmF5LCBzZWN0aW9uQ29kZSwgc3ViU2VjdGlvbkNvZGUpO1xuICB9XG5cbiAgY2xlYW5FcnJvckZpZWxkcyhmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICB0aGlzLnRhZ0ZpZWxkc1dpdGhFcnJvcignJywgZmllbGRBcnJheSwgc2VjdGlvbkNvZGUsIHN1YlNlY3Rpb25Db2RlKTtcbiAgfVxuXG4gIHRhZ0VtcHR5UmVxdWlyZWRGaWVsZHMoZXJyb3JNZXNzYWdlLCBmaWVsZEFycmF5ID0gbnVsbCwgc2VjdGlvbkNvZGUgPSBudWxsLCBzdWJTZWN0aW9uQ29kZSA9IG51bGwpIHtcbiAgICBjb25zdCBwZW5kaW5nRmllbGRzID0gdGhpcy5nZXRSZXF1aXJlZEVtcHR5RmllbGRzKGZpZWxkQXJyYXksIHNlY3Rpb25Db2RlLCBzdWJTZWN0aW9uQ29kZSk7XG4gICAgaWYgKHBlbmRpbmdGaWVsZHMgJiYgcGVuZGluZ0ZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnRhZ0ZpZWxkc1dpdGhFcnJvcihlcnJvck1lc3NhZ2UsIHBlbmRpbmdGaWVsZHMpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNsZWFuVGFibGUodGFibGVDb2RlKSB7XG4gICAgY29uc3QgdGFibGVPYmplY3QgPSB0aGlzLmdldFRhYmxlT2JqZWN0KHRhYmxlQ29kZSk7XG4gICAgcmV0dXJuICh0YWJsZU9iamVjdCkgPyB0YWJsZU9iamVjdC5jbGVhbigpIDogbnVsbDtcbiAgfVxuXG4gIGdldFRhYmxlUmVjb3JkKHRhYmxlQ29kZSwgcmVjb3JkSWQpIHtcbiAgICBjb25zdCB0YWJsZU9iamVjdCA9IHRoaXMuZ2V0VGFibGVPYmplY3QodGFibGVDb2RlKTtcbiAgICByZXR1cm4gKHRhYmxlT2JqZWN0KSA/IHRhYmxlT2JqZWN0LmdldFRhYmxlUmVjb3JkKHJlY29yZElkKSA6IG51bGw7XG4gIH1cblxuICBoaWRlVGFibGUodGFibGVDb2RlKSB7XG4gICAgY29uc3QgdGFibGVPYmplY3QgPSB0aGlzLmdldFRhYmxlT2JqZWN0KHRhYmxlQ29kZSk7XG4gICAgcmV0dXJuICh0YWJsZU9iamVjdCkgPyB0YWJsZU9iamVjdC5oaWRlKCkgOiBudWxsO1xuICB9XG5cbiAgc2hvd1RhYmxlKHRhYmxlQ29kZSkge1xuICAgIGNvbnN0IHRhYmxlT2JqZWN0ID0gdGhpcy5nZXRUYWJsZU9iamVjdCh0YWJsZUNvZGUpO1xuICAgIHJldHVybiAodGFibGVPYmplY3QpID8gdGFibGVPYmplY3Quc2hvdygpIDogbnVsbDtcbiAgfVxuXG4gIHNob3dUYWJsZXModGFibGVBcnJheSkge1xuICAgIGNvbnN0IHRhYmxlTmFtZXMgPSAoQXJyYXkuaXNBcnJheSh0YWJsZUFycmF5KSkgPyB0YWJsZUFycmF5IDogW3RhYmxlQXJyYXldO1xuICAgIHRhYmxlTmFtZXMuZm9yRWFjaCh0YWJsZUNvZGUgPT4gdGhpcy5zaG93VGFibGUodGFibGVDb2RlKSk7XG4gIH1cblxuICBoaWRlVGFibGVzKHRhYmxlQXJyYXkpIHtcbiAgICBjb25zdCB0YWJsZU5hbWVzID0gKEFycmF5LmlzQXJyYXkodGFibGVBcnJheSkpID8gdGFibGVBcnJheSA6IFt0YWJsZUFycmF5XTtcbiAgICB0YWJsZU5hbWVzLmZvckVhY2godGFibGVDb2RlID0+IHRoaXMuaGlkZVRhYmxlKHRhYmxlQ29kZSkpO1xuICB9XG5cbiAgLyoqIHBheWxvYWQgcGFyYSBzZXJ2aWNpb3MgVHVhaW4gKi9cbiAgZ2V0UGF5bG9hZCgpIHtcbiAgICBjb25zdCBmb3JtRGF0YSA9IHtcbiAgICAgIGZpZWxkczogW10sXG4gICAgICB0YWJsZXM6IFtdLFxuICAgIH07XG4gICAgY29uc3QgZm9ybUZpZWxkcyA9IHRoaXMuZ2V0RmllbGRzKCk7XG4gICAgaWYgKGZvcm1GaWVsZHMgJiYgZm9ybUZpZWxkcy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkRGVzY3JpcHRvciBvZiBmb3JtRmllbGRzKSB7XG4gICAgICAgIGlmICghZmllbGREZXNjcmlwdG9yLm91dHB1dE9ubHkpIHtcbiAgICAgICAgICBjb25zdCBmb3JtRmllbGQgPSB7XG4gICAgICAgICAgICBmaWVsZENvZGU6IGZpZWxkRGVzY3JpcHRvci5maWVsZENvZGUsXG4gICAgICAgICAgICBmaWVsZFZhbHVlOiBmaWVsZERlc2NyaXB0b3IuZ2V0VmFsdWUoKSxcbiAgICAgICAgICAgIGVkaXRhYmxlOiAhZmllbGREZXNjcmlwdG9yLmRpc2FibGVkLFxuICAgICAgICAgICAgdmlzaWJsZTogZmllbGREZXNjcmlwdG9yLnZpc2libGUsXG4gICAgICAgICAgICByZXF1aXJlZDogZmllbGREZXNjcmlwdG9yLmZpZWxkUmVxdWlyZWQsXG4gICAgICAgICAgICBmaWVsZE9wdGlvbnM6ICcnLFxuICAgICAgICAgIH07XG4gICAgICAgICAgZm9ybURhdGEuZmllbGRzLnB1c2goZm9ybUZpZWxkKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCB0YWJsZXMgPSB0aGlzLmdldFRhYmxlcygpO1xuICAgIGlmICh0YWJsZXMgJiYgdGFibGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAoY29uc3QgdGFibGVEZXNjcmlwdG9yIG9mIHRhYmxlcykge1xuICAgICAgICBjb25zdCBmb3JtVGFibGUgPSB7XG4gICAgICAgICAgdGFibGVDb2RlOiB0YWJsZURlc2NyaXB0b3IudGFibGVDb2RlLFxuICAgICAgICAgIHZpc2libGU6IHRhYmxlRGVzY3JpcHRvci52aXNpYmxlLFxuICAgICAgICAgIGN1cnJlbnRQYWdlOiB0YWJsZURlc2NyaXB0b3IuY3VycmVudFBhZ2UsXG4gICAgICAgICAgcmVxdWVzdGVkUGFnZTogdGFibGVEZXNjcmlwdG9yLnJlcXVlc3RlZFBhZ2UsXG4gICAgICAgICAgcmVjb3Jkc1BlclBhZ2U6IHRhYmxlRGVzY3JpcHRvci5yZWNvcmRzUGVyUGFnZSxcbiAgICAgICAgICBjdXJyZW50RmlsdGVyOiB0YWJsZURlc2NyaXB0b3IuY3VycmVudEZpbHRlcixcbiAgICAgICAgICBzb3J0aW5nQ29sdW1uOiB0YWJsZURlc2NyaXB0b3Iuc29ydGluZy5jb2x1bW5OYW1lLFxuICAgICAgICAgIHNvcnRpbmdEaXJlY3Rpb246IHRhYmxlRGVzY3JpcHRvci5zb3J0aW5nLmRpcmVjdGlvbixcbiAgICAgICAgfTtcbiAgICAgICAgZm9ybURhdGEudGFibGVzLnB1c2goZm9ybVRhYmxlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZvcm1EYXRhO1xuICB9XG59XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { elementTypes } from './form.constants';
1
+ import { componentConstants } from './form.constants';
2
2
  export class RecordFormSubSection {
3
3
  constructor(subsectionReceived, formObject) {
4
4
  if (!subsectionReceived) {
@@ -21,21 +21,21 @@ export class RecordFormSubSection {
21
21
  let arrayToAdd = null;
22
22
  const { type, code } = receivedElement;
23
23
  switch (type) {
24
- case elementTypes.field:
24
+ case componentConstants.ELEMENTTYPE_FIELD:
25
25
  elementObject = formObject.getFieldObject(code);
26
26
  arrayToAdd = this.subSectionFields;
27
27
  break;
28
- case elementTypes.table:
28
+ case componentConstants.ELEMENTTYPE_TABLE:
29
29
  elementObject = formObject.getTableObject(code);
30
30
  arrayToAdd = this.subSectionTables;
31
31
  break;
32
- case elementTypes.action:
32
+ case componentConstants.ELEMENTTYPE_ACTION:
33
33
  elementObject = formObject.getActionObject(code);
34
34
  arrayToAdd = this.subSectionActions;
35
35
  break;
36
36
  }
37
37
  if (elementObject) {
38
- elementObject.elementType = type;
38
+ elementObject.type = type;
39
39
  arrayToAdd.push(elementObject);
40
40
  this.subSectionElements.push(elementObject);
41
41
  this.elementsArray[code] = elementObject;
@@ -61,4 +61,4 @@ export class RecordFormSubSection {
61
61
  }
62
62
  supportMode(state) { return this.viewOnState(state); }
63
63
  }
64
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvc3Vic2VjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFaEQsTUFBTSxPQUFPLG9CQUFvQjtJQWMvQixZQUFZLGtCQUFrQixFQUFFLFVBQVU7UUFDeEMsSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQUUsT0FBTztTQUFFO1FBQ3BDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN4RyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ25HLElBQUksQ0FBQyxlQUFlLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDdEcsSUFBSSxDQUFDLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDO1FBQzVELElBQUksa0JBQWtCLENBQUMsUUFBUSxFQUFFO1lBQy9CLEtBQUssTUFBTSxlQUFlLElBQUksa0JBQWtCLENBQUMsUUFBUSxFQUFFO2dCQUN6RCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7Z0JBQ3pCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQztnQkFDdEIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsR0FBRyxlQUFlLENBQUM7Z0JBQ3ZDLFFBQVEsSUFBSSxFQUFFO29CQUNaLEtBQUssWUFBWSxDQUFDLEtBQUs7d0JBQ3JCLGFBQWEsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO3dCQUNuQyxNQUFNO29CQUNSLEtBQUssWUFBWSxDQUFDLEtBQUs7d0JBQ3JCLGFBQWEsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO3dCQUNuQyxNQUFNO29CQUNSLEtBQUssWUFBWSxDQUFDLE1BQU07d0JBQ3RCLGFBQWEsR0FBRyxVQUFVLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNqRCxVQUFVLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDO3dCQUNwQyxNQUFNO2lCQUNUO2dCQUNELElBQUksYUFBYSxFQUFFO29CQUNqQixhQUFhLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztvQkFDakMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDNUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLENBQUM7aUJBQzFDO2FBQ0Y7U0FDRjtJQUNILENBQUM7SUFFRCxJQUFJLEtBQUssSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQy9CLElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFFaEMsSUFBSSxZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNqRCxJQUFJLFlBQVksQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQztJQUU3RSxRQUFRLENBQUMsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDZixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSyxJQUFJLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDdkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlbGVtZW50VHlwZXMgfSBmcm9tICcuL2Zvcm0uY29uc3RhbnRzJztcblxuZXhwb3J0IGNsYXNzIFJlY29yZEZvcm1TdWJTZWN0aW9uIHtcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgX2N1c3RvbVJlbmRlcjogc3RyaW5nO1xuICBzdWJzZWN0aW9uSWQ6IHN0cmluZztcbiAgc3Vic2VjdGlvbkNvZGU6IHN0cmluZztcbiAgc3Vic2VjdGlvblRpdGxlOiBzdHJpbmc7XG4gIHZpc2libGVTdGF0ZXM6IHN0cmluZ1tdO1xuXG4gIHN1YlNlY3Rpb25FbGVtZW50czogYW55W107XG4gIHN1YlNlY3Rpb25GaWVsZHM6IGFueVtdO1xuICBzdWJTZWN0aW9uVGFibGVzOiBhbnlbXTtcbiAgc3ViU2VjdGlvbkFjdGlvbnM6IGFueVtdO1xuICBlbGVtZW50c0FycmF5OiBhbnk7XG5cbiAgY29uc3RydWN0b3Ioc3Vic2VjdGlvblJlY2VpdmVkLCBmb3JtT2JqZWN0KSB7XG4gICAgaWYgKCFzdWJzZWN0aW9uUmVjZWl2ZWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5fY3VzdG9tUmVuZGVyID0gbnVsbDtcbiAgICB0aGlzLnZpc2libGUgPSB0cnVlO1xuICAgIHRoaXMuc3ViU2VjdGlvbkVsZW1lbnRzID0gW107XG4gICAgdGhpcy5zdWJTZWN0aW9uRmllbGRzID0gW107XG4gICAgdGhpcy5zdWJTZWN0aW9uVGFibGVzID0gW107XG4gICAgdGhpcy5zdWJTZWN0aW9uQWN0aW9ucyA9IFtdO1xuICAgIHRoaXMuZWxlbWVudHNBcnJheSA9IHt9O1xuICAgIHRoaXMuc3Vic2VjdGlvbklkID0gKHN1YnNlY3Rpb25SZWNlaXZlZC5zdWJzZWN0aW9uSWQpID8gc3Vic2VjdGlvblJlY2VpdmVkLnN1YnNlY3Rpb25JZC50b1N0cmluZygpIDogJyc7XG4gICAgdGhpcy5zdWJzZWN0aW9uQ29kZSA9IChzdWJzZWN0aW9uUmVjZWl2ZWQuc3Vic2VjdGlvbkNvZGUpID8gc3Vic2VjdGlvblJlY2VpdmVkLnN1YnNlY3Rpb25Db2RlIDogJyc7XG4gICAgdGhpcy5zdWJzZWN0aW9uVGl0bGUgPSAoc3Vic2VjdGlvblJlY2VpdmVkLnN1YnNlY3Rpb25UaXRsZSkgPyBzdWJzZWN0aW9uUmVjZWl2ZWQuc3Vic2VjdGlvblRpdGxlIDogJyc7XG4gICAgdGhpcy52aXNpYmxlU3RhdGVzID0gc3Vic2VjdGlvblJlY2VpdmVkLnZpc2libGVTdGF0ZXMgfHwgW107XG4gICAgaWYgKHN1YnNlY3Rpb25SZWNlaXZlZC5lbGVtZW50cykge1xuICAgICAgZm9yIChjb25zdCByZWNlaXZlZEVsZW1lbnQgb2Ygc3Vic2VjdGlvblJlY2VpdmVkLmVsZW1lbnRzKSB7XG4gICAgICAgIGxldCBlbGVtZW50T2JqZWN0ID0gbnVsbDtcbiAgICAgICAgbGV0IGFycmF5VG9BZGQgPSBudWxsO1xuICAgICAgICBjb25zdCB7IHR5cGUsIGNvZGUgfSA9IHJlY2VpdmVkRWxlbWVudDtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgY2FzZSBlbGVtZW50VHlwZXMuZmllbGQ6XG4gICAgICAgICAgICBlbGVtZW50T2JqZWN0ID0gZm9ybU9iamVjdC5nZXRGaWVsZE9iamVjdChjb2RlKTtcbiAgICAgICAgICAgIGFycmF5VG9BZGQgPSB0aGlzLnN1YlNlY3Rpb25GaWVsZHM7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIGVsZW1lbnRUeXBlcy50YWJsZTpcbiAgICAgICAgICAgIGVsZW1lbnRPYmplY3QgPSBmb3JtT2JqZWN0LmdldFRhYmxlT2JqZWN0KGNvZGUpO1xuICAgICAgICAgICAgYXJyYXlUb0FkZCA9IHRoaXMuc3ViU2VjdGlvblRhYmxlcztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgZWxlbWVudFR5cGVzLmFjdGlvbjpcbiAgICAgICAgICAgIGVsZW1lbnRPYmplY3QgPSBmb3JtT2JqZWN0LmdldEFjdGlvbk9iamVjdChjb2RlKTtcbiAgICAgICAgICAgIGFycmF5VG9BZGQgPSB0aGlzLnN1YlNlY3Rpb25BY3Rpb25zO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVsZW1lbnRPYmplY3QpIHtcbiAgICAgICAgICBlbGVtZW50T2JqZWN0LmVsZW1lbnRUeXBlID0gdHlwZTtcbiAgICAgICAgICBhcnJheVRvQWRkLnB1c2goZWxlbWVudE9iamVjdCk7XG4gICAgICAgICAgdGhpcy5zdWJTZWN0aW9uRWxlbWVudHMucHVzaChlbGVtZW50T2JqZWN0KTtcbiAgICAgICAgICB0aGlzLmVsZW1lbnRzQXJyYXlbY29kZV0gPSBlbGVtZW50T2JqZWN0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc2hvdygpIHsgdGhpcy52aXNpYmxlID0gdHJ1ZTsgfVxuICBoaWRlKCkgeyB0aGlzLnZpc2libGUgPSBmYWxzZTsgfVxuXG4gIGdldCBjdXN0b21SZW5kZXIoKSB7IHJldHVybiB0aGlzLl9jdXN0b21SZW5kZXI7IH1cbiAgc2V0IGN1c3RvbVJlbmRlcihjdXN0b21SZW5kZXJOYW1lKSB7IHRoaXMuX2N1c3RvbVJlbmRlciA9IGN1c3RvbVJlbmRlck5hbWU7IH1cblxuICBnZXRGaWVsZChuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViU2VjdGlvbkZpZWxkcy5maW5kKGZsZCA9PiBmbGQubmFtZSA9PT0gbmFtZSk7XG4gIH1cblxuICBnZXRGaWVsZHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViU2VjdGlvbkZpZWxkcztcbiAgfVxuXG4gIGdldEZpZWxkTmFtZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3ViU2VjdGlvbkZpZWxkcy5tYXAoZmllbGQgPT4gZmllbGQuZmllbGRDb2RlKTtcbiAgfVxuXG4gIHZpZXdPblN0YXRlKHN0YXRlKSB7XG4gICAgcmV0dXJuIHRoaXMudmlzaWJsZVN0YXRlcy5pbmNsdWRlcyhzdGF0ZSk7XG4gIH1cblxuICBzdXBwb3J0TW9kZShzdGF0ZSkgeyByZXR1cm4gdGhpcy52aWV3T25TdGF0ZShzdGF0ZSk7IH1cbn1cbiJdfQ==
64
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1YWluLW5nLWZvcm1zLWxpYi9zcmMvbGliL2NsYXNzZXMvZm9ybXMvc3Vic2VjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUV0RCxNQUFNLE9BQU8sb0JBQW9CO0lBYy9CLFlBQVksa0JBQWtCLEVBQUUsVUFBVTtRQUN4QyxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDcEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3hHLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkcsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLGtCQUFrQixDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUN0RyxJQUFJLENBQUMsYUFBYSxHQUFHLGtCQUFrQixDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7UUFDNUQsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7WUFDL0IsS0FBSyxNQUFNLGVBQWUsSUFBSSxrQkFBa0IsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3pELElBQUksYUFBYSxHQUFHLElBQUksQ0FBQztnQkFDekIsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDO2dCQUN0QixNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxHQUFHLGVBQWUsQ0FBQztnQkFDdkMsUUFBUSxJQUFJLEVBQUU7b0JBQ1osS0FBSyxrQkFBa0IsQ0FBQyxpQkFBaUI7d0JBQ3ZDLGFBQWEsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNoRCxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO3dCQUNuQyxNQUFNO29CQUNSLEtBQUssa0JBQWtCLENBQUMsaUJBQWlCO3dCQUN2QyxhQUFhLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDaEQsVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDbkMsTUFBTTtvQkFDUixLQUFLLGtCQUFrQixDQUFDLGtCQUFrQjt3QkFDeEMsYUFBYSxHQUFHLFVBQVUsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ2pELFVBQVUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUM7d0JBQ3BDLE1BQU07aUJBQ1Q7Z0JBQ0QsSUFBSSxhQUFhLEVBQUU7b0JBQ2pCLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO29CQUMxQixVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUMvQixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO29CQUM1QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLGFBQWEsQ0FBQztpQkFDMUM7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELElBQUksS0FBSyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDL0IsSUFBSSxLQUFLLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUVoQyxJQUFJLFlBQVksS0FBSyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBQ2pELElBQUksWUFBWSxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO0lBRTdFLFFBQVEsQ0FBQyxJQUFJO1FBQ1gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBSztRQUNmLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztDQUN2RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbXBvbmVudENvbnN0YW50cyB9IGZyb20gJy4vZm9ybS5jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgUmVjb3JkRm9ybVN1YlNlY3Rpb24ge1xuICB2aXNpYmxlOiBib29sZWFuO1xuICBfY3VzdG9tUmVuZGVyOiBzdHJpbmc7XG4gIHN1YnNlY3Rpb25JZDogc3RyaW5nO1xuICBzdWJzZWN0aW9uQ29kZTogc3RyaW5nO1xuICBzdWJzZWN0aW9uVGl0bGU6IHN0cmluZztcbiAgdmlzaWJsZVN0YXRlczogc3RyaW5nW107XG5cbiAgc3ViU2VjdGlvbkVsZW1lbnRzOiBhbnlbXTtcbiAgc3ViU2VjdGlvbkZpZWxkczogYW55W107XG4gIHN1YlNlY3Rpb25UYWJsZXM6IGFueVtdO1xuICBzdWJTZWN0aW9uQWN0aW9uczogYW55W107XG4gIGVsZW1lbnRzQXJyYXk6IGFueTtcblxuICBjb25zdHJ1Y3RvcihzdWJzZWN0aW9uUmVjZWl2ZWQsIGZvcm1PYmplY3QpIHtcbiAgICBpZiAoIXN1YnNlY3Rpb25SZWNlaXZlZCkgeyByZXR1cm47IH1cbiAgICB0aGlzLl9jdXN0b21SZW5kZXIgPSBudWxsO1xuICAgIHRoaXMudmlzaWJsZSA9IHRydWU7XG4gICAgdGhpcy5zdWJTZWN0aW9uRWxlbWVudHMgPSBbXTtcbiAgICB0aGlzLnN1YlNlY3Rpb25GaWVsZHMgPSBbXTtcbiAgICB0aGlzLnN1YlNlY3Rpb25UYWJsZXMgPSBbXTtcbiAgICB0aGlzLnN1YlNlY3Rpb25BY3Rpb25zID0gW107XG4gICAgdGhpcy5lbGVtZW50c0FycmF5ID0ge307XG4gICAgdGhpcy5zdWJzZWN0aW9uSWQgPSAoc3Vic2VjdGlvblJlY2VpdmVkLnN1YnNlY3Rpb25JZCkgPyBzdWJzZWN0aW9uUmVjZWl2ZWQuc3Vic2VjdGlvbklkLnRvU3RyaW5nKCkgOiAnJztcbiAgICB0aGlzLnN1YnNlY3Rpb25Db2RlID0gKHN1YnNlY3Rpb25SZWNlaXZlZC5zdWJzZWN0aW9uQ29kZSkgPyBzdWJzZWN0aW9uUmVjZWl2ZWQuc3Vic2VjdGlvbkNvZGUgOiAnJztcbiAgICB0aGlzLnN1YnNlY3Rpb25UaXRsZSA9IChzdWJzZWN0aW9uUmVjZWl2ZWQuc3Vic2VjdGlvblRpdGxlKSA/IHN1YnNlY3Rpb25SZWNlaXZlZC5zdWJzZWN0aW9uVGl0bGUgOiAnJztcbiAgICB0aGlzLnZpc2libGVTdGF0ZXMgPSBzdWJzZWN0aW9uUmVjZWl2ZWQudmlzaWJsZVN0YXRlcyB8fCBbXTtcbiAgICBpZiAoc3Vic2VjdGlvblJlY2VpdmVkLmVsZW1lbnRzKSB7XG4gICAgICBmb3IgKGNvbnN0IHJlY2VpdmVkRWxlbWVudCBvZiBzdWJzZWN0aW9uUmVjZWl2ZWQuZWxlbWVudHMpIHtcbiAgICAgICAgbGV0IGVsZW1lbnRPYmplY3QgPSBudWxsO1xuICAgICAgICBsZXQgYXJyYXlUb0FkZCA9IG51bGw7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgY29kZSB9ID0gcmVjZWl2ZWRFbGVtZW50O1xuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgICBjYXNlIGNvbXBvbmVudENvbnN0YW50cy5FTEVNRU5UVFlQRV9GSUVMRDpcbiAgICAgICAgICAgIGVsZW1lbnRPYmplY3QgPSBmb3JtT2JqZWN0LmdldEZpZWxkT2JqZWN0KGNvZGUpO1xuICAgICAgICAgICAgYXJyYXlUb0FkZCA9IHRoaXMuc3ViU2VjdGlvbkZpZWxkcztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgY29tcG9uZW50Q29uc3RhbnRzLkVMRU1FTlRUWVBFX1RBQkxFOlxuICAgICAgICAgICAgZWxlbWVudE9iamVjdCA9IGZvcm1PYmplY3QuZ2V0VGFibGVPYmplY3QoY29kZSk7XG4gICAgICAgICAgICBhcnJheVRvQWRkID0gdGhpcy5zdWJTZWN0aW9uVGFibGVzO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBjb21wb25lbnRDb25zdGFudHMuRUxFTUVOVFRZUEVfQUNUSU9OOlxuICAgICAgICAgICAgZWxlbWVudE9iamVjdCA9IGZvcm1PYmplY3QuZ2V0QWN0aW9uT2JqZWN0KGNvZGUpO1xuICAgICAgICAgICAgYXJyYXlUb0FkZCA9IHRoaXMuc3ViU2VjdGlvbkFjdGlvbnM7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpZiAoZWxlbWVudE9iamVjdCkge1xuICAgICAgICAgIGVsZW1lbnRPYmplY3QudHlwZSA9IHR5cGU7XG4gICAgICAgICAgYXJyYXlUb0FkZC5wdXNoKGVsZW1lbnRPYmplY3QpO1xuICAgICAgICAgIHRoaXMuc3ViU2VjdGlvbkVsZW1lbnRzLnB1c2goZWxlbWVudE9iamVjdCk7XG4gICAgICAgICAgdGhpcy5lbGVtZW50c0FycmF5W2NvZGVdID0gZWxlbWVudE9iamVjdDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNob3coKSB7IHRoaXMudmlzaWJsZSA9IHRydWU7IH1cbiAgaGlkZSgpIHsgdGhpcy52aXNpYmxlID0gZmFsc2U7IH1cblxuICBnZXQgY3VzdG9tUmVuZGVyKCkgeyByZXR1cm4gdGhpcy5fY3VzdG9tUmVuZGVyOyB9XG4gIHNldCBjdXN0b21SZW5kZXIoY3VzdG9tUmVuZGVyTmFtZSkgeyB0aGlzLl9jdXN0b21SZW5kZXIgPSBjdXN0b21SZW5kZXJOYW1lOyB9XG5cbiAgZ2V0RmllbGQobmFtZSkge1xuICAgIHJldHVybiB0aGlzLnN1YlNlY3Rpb25GaWVsZHMuZmluZChmbGQgPT4gZmxkLm5hbWUgPT09IG5hbWUpO1xuICB9XG5cbiAgZ2V0RmllbGRzKCkge1xuICAgIHJldHVybiB0aGlzLnN1YlNlY3Rpb25GaWVsZHM7XG4gIH1cblxuICBnZXRGaWVsZE5hbWVzKCkge1xuICAgIHJldHVybiB0aGlzLnN1YlNlY3Rpb25GaWVsZHMubWFwKGZpZWxkID0+IGZpZWxkLmZpZWxkQ29kZSk7XG4gIH1cblxuICB2aWV3T25TdGF0ZShzdGF0ZSkge1xuICAgIHJldHVybiB0aGlzLnZpc2libGVTdGF0ZXMuaW5jbHVkZXMoc3RhdGUpO1xuICB9XG5cbiAgc3VwcG9ydE1vZGUoc3RhdGUpIHsgcmV0dXJuIHRoaXMudmlld09uU3RhdGUoc3RhdGUpOyB9XG59XG4iXX0=
@@ -1,12 +1,12 @@
1
+ import { componentConstants, tableFieldStyles } from '../form.constants';
1
2
  export class RecordTableColumn {
2
- constructor(recTableColReceived, formConfig) {
3
+ constructor(recTableColReceived) {
3
4
  var _a, _b, _c;
4
- this._formConfig = formConfig;
5
5
  if (recTableColReceived) {
6
6
  this.fieldCode = recTableColReceived.fieldCode;
7
7
  this.fieldTitle = recTableColReceived.fieldTitle;
8
- this.fieldType = recTableColReceived.fieldTypeCode || this._formConfig.fieldTypes.text;
9
- const defaultTypeAlignment = (this._formConfig.tableFieldStyles[this.fieldType] != null) ? this._formConfig.tableFieldStyles[this.fieldType]['text-align'] : 'left';
8
+ this.fieldType = recTableColReceived.fieldTypeCode || componentConstants.FIELDTYPE_TEXT;
9
+ const defaultTypeAlignment = (tableFieldStyles[this.fieldType] != null) ? tableFieldStyles[this.fieldType]['text-align'] : 'left';
10
10
  this.fieldAlignment = (recTableColReceived.alignment != null) ? recTableColReceived.alignment.toLowerCase() : defaultTypeAlignment;
11
11
  this.visible = (_a = recTableColReceived === null || recTableColReceived === void 0 ? void 0 : recTableColReceived.visible) !== null && _a !== void 0 ? _a : true;
12
12
  this.sortable = (_b = recTableColReceived === null || recTableColReceived === void 0 ? void 0 : recTableColReceived.sortable) !== null && _b !== void 0 ? _b : false;
@@ -15,4 +15,4 @@ export class RecordTableColumn {
15
15
  }
16
16
  }
17
17
  }
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy90YWJsZS9jb2x1bW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGlCQUFpQjtJQVc1QixZQUFZLG1CQUFtQixFQUFFLFVBQVU7O1FBQ3pDLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1FBQzlCLElBQUksbUJBQW1CLEVBQUU7WUFDdkIsSUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUM7WUFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxVQUFVLENBQUM7WUFDakQsSUFBSSxDQUFDLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ3ZGLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNwSyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUMsbUJBQW1CLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1lBQ25JLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBQSxtQkFBbUIsYUFBbkIsbUJBQW1CLHVCQUFuQixtQkFBbUIsQ0FBRSxPQUFPLG1DQUFJLElBQUksQ0FBQztZQUNwRCxJQUFJLENBQUMsUUFBUSxHQUFHLE1BQUEsbUJBQW1CLGFBQW5CLG1CQUFtQix1QkFBbkIsbUJBQW1CLENBQUUsUUFBUSxtQ0FBSSxLQUFLLENBQUM7WUFDdkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDO1lBQ3BELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFBLG1CQUFtQixhQUFuQixtQkFBbUIsdUJBQW5CLG1CQUFtQixDQUFFLGdCQUFnQixtQ0FBSSxFQUFFLENBQUM7U0FDckU7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgUmVjb3JkVGFibGVDb2x1bW4ge1xuICBfZm9ybUNvbmZpZzogYW55O1xuICBmaWVsZENvZGU6IHN0cmluZztcbiAgZmllbGRUaXRsZTogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbiAgZmllbGRBbGlnbm1lbnQ6IHN0cmluZztcbiAgZmllbGRGb3JtYXQ6IHN0cmluZztcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgc29ydGFibGU6IGJvb2xlYW47XG4gIGN1c3RvbUF0dHJpYnV0ZXM6IGFueTtcblxuICBjb25zdHJ1Y3RvcihyZWNUYWJsZUNvbFJlY2VpdmVkLCBmb3JtQ29uZmlnKSB7XG4gICAgdGhpcy5fZm9ybUNvbmZpZyA9IGZvcm1Db25maWc7XG4gICAgaWYgKHJlY1RhYmxlQ29sUmVjZWl2ZWQpIHtcbiAgICAgIHRoaXMuZmllbGRDb2RlID0gcmVjVGFibGVDb2xSZWNlaXZlZC5maWVsZENvZGU7XG4gICAgICB0aGlzLmZpZWxkVGl0bGUgPSByZWNUYWJsZUNvbFJlY2VpdmVkLmZpZWxkVGl0bGU7XG4gICAgICB0aGlzLmZpZWxkVHlwZSA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQuZmllbGRUeXBlQ29kZSB8fCB0aGlzLl9mb3JtQ29uZmlnLmZpZWxkVHlwZXMudGV4dDtcbiAgICAgIGNvbnN0IGRlZmF1bHRUeXBlQWxpZ25tZW50ID0gKHRoaXMuX2Zvcm1Db25maWcudGFibGVGaWVsZFN0eWxlc1t0aGlzLmZpZWxkVHlwZV0gIT0gbnVsbCkgPyB0aGlzLl9mb3JtQ29uZmlnLnRhYmxlRmllbGRTdHlsZXNbdGhpcy5maWVsZFR5cGVdWyd0ZXh0LWFsaWduJ10gOiAnbGVmdCc7XG4gICAgICB0aGlzLmZpZWxkQWxpZ25tZW50ID0gKHJlY1RhYmxlQ29sUmVjZWl2ZWQuYWxpZ25tZW50ICE9IG51bGwpID8gcmVjVGFibGVDb2xSZWNlaXZlZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgICAgdGhpcy52aXNpYmxlID0gcmVjVGFibGVDb2xSZWNlaXZlZD8udmlzaWJsZSA/PyB0cnVlO1xuICAgICAgdGhpcy5zb3J0YWJsZSA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQ/LnNvcnRhYmxlID8/IGZhbHNlO1xuICAgICAgdGhpcy5maWVsZEZvcm1hdCA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQuZm9ybWF0IHx8ICcnO1xuICAgICAgdGhpcy5jdXN0b21BdHRyaWJ1dGVzID0gcmVjVGFibGVDb2xSZWNlaXZlZD8uY3VzdG9tQXR0cmlidXRlcyA/PyB7fTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVhaW4tbmctZm9ybXMtbGliL3NyYy9saWIvY2xhc3Nlcy9mb3Jtcy90YWJsZS9jb2x1bW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFekUsTUFBTSxPQUFPLGlCQUFpQjtJQVU1QixZQUFZLG1CQUFtQjs7UUFDN0IsSUFBSSxtQkFBbUIsRUFBRTtZQUN2QixJQUFJLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDLFNBQVMsQ0FBQztZQUMvQyxJQUFJLENBQUMsVUFBVSxHQUFHLG1CQUFtQixDQUFDLFVBQVUsQ0FBQztZQUNqRCxJQUFJLENBQUMsU0FBUyxHQUFHLG1CQUFtQixDQUFDLGFBQWEsSUFBSSxrQkFBa0IsQ0FBQyxjQUFjLENBQUM7WUFDeEYsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7WUFDbEksSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQztZQUNuSSxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQUEsbUJBQW1CLGFBQW5CLG1CQUFtQix1QkFBbkIsbUJBQW1CLENBQUUsT0FBTyxtQ0FBSSxJQUFJLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFBLG1CQUFtQixhQUFuQixtQkFBbUIsdUJBQW5CLG1CQUFtQixDQUFFLFFBQVEsbUNBQUksS0FBSyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxXQUFXLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztZQUNwRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBQSxtQkFBbUIsYUFBbkIsbUJBQW1CLHVCQUFuQixtQkFBbUIsQ0FBRSxnQkFBZ0IsbUNBQUksRUFBRSxDQUFDO1NBQ3JFO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tcG9uZW50Q29uc3RhbnRzLCB0YWJsZUZpZWxkU3R5bGVzIH0gZnJvbSAnLi4vZm9ybS5jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgUmVjb3JkVGFibGVDb2x1bW4ge1xuICBmaWVsZENvZGU6IHN0cmluZztcbiAgZmllbGRUaXRsZTogc3RyaW5nO1xuICBmaWVsZFR5cGU6IHN0cmluZztcbiAgZmllbGRBbGlnbm1lbnQ6IHN0cmluZztcbiAgZmllbGRGb3JtYXQ6IHN0cmluZztcbiAgdmlzaWJsZTogYm9vbGVhbjtcbiAgc29ydGFibGU6IGJvb2xlYW47XG4gIGN1c3RvbUF0dHJpYnV0ZXM6IGFueTtcblxuICBjb25zdHJ1Y3RvcihyZWNUYWJsZUNvbFJlY2VpdmVkKSB7XG4gICAgaWYgKHJlY1RhYmxlQ29sUmVjZWl2ZWQpIHtcbiAgICAgIHRoaXMuZmllbGRDb2RlID0gcmVjVGFibGVDb2xSZWNlaXZlZC5maWVsZENvZGU7XG4gICAgICB0aGlzLmZpZWxkVGl0bGUgPSByZWNUYWJsZUNvbFJlY2VpdmVkLmZpZWxkVGl0bGU7XG4gICAgICB0aGlzLmZpZWxkVHlwZSA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQuZmllbGRUeXBlQ29kZSB8fCBjb21wb25lbnRDb25zdGFudHMuRklFTERUWVBFX1RFWFQ7XG4gICAgICBjb25zdCBkZWZhdWx0VHlwZUFsaWdubWVudCA9ICh0YWJsZUZpZWxkU3R5bGVzW3RoaXMuZmllbGRUeXBlXSAhPSBudWxsKSA/IHRhYmxlRmllbGRTdHlsZXNbdGhpcy5maWVsZFR5cGVdWyd0ZXh0LWFsaWduJ10gOiAnbGVmdCc7XG4gICAgICB0aGlzLmZpZWxkQWxpZ25tZW50ID0gKHJlY1RhYmxlQ29sUmVjZWl2ZWQuYWxpZ25tZW50ICE9IG51bGwpID8gcmVjVGFibGVDb2xSZWNlaXZlZC5hbGlnbm1lbnQudG9Mb3dlckNhc2UoKSA6IGRlZmF1bHRUeXBlQWxpZ25tZW50O1xuICAgICAgdGhpcy52aXNpYmxlID0gcmVjVGFibGVDb2xSZWNlaXZlZD8udmlzaWJsZSA/PyB0cnVlO1xuICAgICAgdGhpcy5zb3J0YWJsZSA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQ/LnNvcnRhYmxlID8/IGZhbHNlO1xuICAgICAgdGhpcy5maWVsZEZvcm1hdCA9IHJlY1RhYmxlQ29sUmVjZWl2ZWQuZm9ybWF0IHx8ICcnO1xuICAgICAgdGhpcy5jdXN0b21BdHRyaWJ1dGVzID0gcmVjVGFibGVDb2xSZWNlaXZlZD8uY3VzdG9tQXR0cmlidXRlcyA/PyB7fTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==