ngx-dynamic-entity 0.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +129 -0
  2. package/esm2022/lib/field-types/array-field.component.mjs +160 -0
  3. package/esm2022/lib/field-types/boolean-field.component.mjs +100 -0
  4. package/esm2022/lib/field-types/checkbox-field.component.mjs +25 -17
  5. package/esm2022/lib/field-types/currency-field.component.mjs +101 -0
  6. package/esm2022/lib/field-types/date-field.component.mjs +21 -13
  7. package/esm2022/lib/field-types/dropdown-field.component.mjs +120 -29
  8. package/esm2022/lib/field-types/email-field.component.mjs +101 -0
  9. package/esm2022/lib/field-types/entity-ref-field.component.mjs +96 -32
  10. package/esm2022/lib/field-types/file-field.component.mjs +156 -0
  11. package/esm2022/lib/field-types/group-field.component.mjs +89 -0
  12. package/esm2022/lib/field-types/image-field.component.mjs +168 -0
  13. package/esm2022/lib/field-types/month-year-field.component.mjs +151 -0
  14. package/esm2022/lib/field-types/multi-select-field.component.mjs +79 -25
  15. package/esm2022/lib/field-types/number-field.component.mjs +60 -17
  16. package/esm2022/lib/field-types/password-field.component.mjs +109 -0
  17. package/esm2022/lib/field-types/radio-field.component.mjs +152 -0
  18. package/esm2022/lib/field-types/text-field.component.mjs +58 -18
  19. package/esm2022/lib/field-types/textarea-field.component.mjs +26 -15
  20. package/esm2022/lib/form/dynamic-field/dynamic-field.component.mjs +44 -26
  21. package/esm2022/lib/form/dynamic-form.component.mjs +676 -69
  22. package/esm2022/lib/form/dynamic-record-form.component.mjs +494 -0
  23. package/esm2022/lib/providers/provide-field-types.mjs +72 -0
  24. package/esm2022/lib/providers/provide-ngx-dynamic-entity.mjs +4 -5
  25. package/esm2022/lib/services/cascade-data.service.mjs +129 -0
  26. package/esm2022/lib/services/config-source.service.mjs +67 -0
  27. package/esm2022/lib/services/entity-ref-cache.mjs +20 -0
  28. package/esm2022/lib/services/entity-ref-registry.service.mjs +3 -3
  29. package/esm2022/lib/services/entity-ref-selection.service.mjs +27 -0
  30. package/esm2022/lib/services/entity-reference.service.mjs +168 -0
  31. package/esm2022/lib/services/field-registry.service.mjs +35 -30
  32. package/esm2022/lib/services/file-upload.service.mjs +89 -0
  33. package/esm2022/lib/services/lookup-registry.service.mjs +246 -0
  34. package/esm2022/lib/services/rbac.service.mjs +5 -11
  35. package/esm2022/lib/services/rules-evaluation.service.mjs +27 -0
  36. package/esm2022/lib/services/validator-registry.service.mjs +35 -7
  37. package/esm2022/lib/tokens/injection-tokens.mjs +104 -7
  38. package/esm2022/public-api.mjs +31 -6
  39. package/fesm2022/ngx-dynamic-entity.mjs +4094 -759
  40. package/fesm2022/ngx-dynamic-entity.mjs.map +1 -1
  41. package/lib/field-types/array-field.component.d.ts +22 -0
  42. package/lib/field-types/boolean-field.component.d.ts +18 -0
  43. package/lib/field-types/checkbox-field.component.d.ts +3 -2
  44. package/lib/field-types/currency-field.component.d.ts +17 -0
  45. package/lib/field-types/date-field.component.d.ts +3 -2
  46. package/lib/field-types/dropdown-field.component.d.ts +24 -4
  47. package/lib/field-types/email-field.component.d.ts +15 -0
  48. package/lib/field-types/entity-ref-field.component.d.ts +24 -11
  49. package/lib/field-types/file-field.component.d.ts +25 -0
  50. package/lib/field-types/group-field.component.d.ts +17 -0
  51. package/lib/field-types/image-field.component.d.ts +30 -0
  52. package/lib/field-types/month-year-field.component.d.ts +28 -0
  53. package/lib/field-types/multi-select-field.component.d.ts +18 -4
  54. package/lib/field-types/number-field.component.d.ts +5 -2
  55. package/lib/field-types/password-field.component.d.ts +17 -0
  56. package/lib/field-types/radio-field.component.d.ts +33 -0
  57. package/lib/field-types/text-field.component.d.ts +5 -3
  58. package/lib/field-types/textarea-field.component.d.ts +4 -2
  59. package/lib/form/dynamic-field/dynamic-field.component.d.ts +20 -7
  60. package/lib/form/dynamic-form.component.d.ts +203 -24
  61. package/lib/form/dynamic-record-form.component.d.ts +180 -0
  62. package/lib/providers/provide-field-types.d.ts +24 -0
  63. package/lib/providers/provide-ngx-dynamic-entity.d.ts +19 -8
  64. package/lib/services/cascade-data.service.d.ts +45 -0
  65. package/lib/services/config-source.service.d.ts +14 -0
  66. package/lib/services/entity-ref-cache.d.ts +27 -0
  67. package/lib/services/entity-ref-registry.service.d.ts +4 -3
  68. package/lib/services/entity-ref-selection.service.d.ts +24 -0
  69. package/lib/services/entity-reference.service.d.ts +49 -0
  70. package/lib/services/field-registry.service.d.ts +17 -7
  71. package/lib/services/file-upload.service.d.ts +27 -0
  72. package/lib/services/lookup-registry.service.d.ts +94 -0
  73. package/lib/services/rbac.service.d.ts +4 -9
  74. package/lib/services/rules-evaluation.service.d.ts +17 -0
  75. package/lib/services/validator-registry.service.d.ts +5 -4
  76. package/lib/tokens/injection-tokens.d.ts +113 -8
  77. package/package.json +18 -8
  78. package/public-api.d.ts +21 -4
  79. package/esm2022/lib/services/config.service.mjs +0 -58
  80. package/esm2022/lib/services/version.service.mjs +0 -40
  81. package/esm2022/lib/table/dynamic-table.component.mjs +0 -160
  82. package/lib/services/config.service.d.ts +0 -25
  83. package/lib/services/version.service.d.ts +0 -26
  84. package/lib/table/dynamic-table.component.d.ts +0 -56
@@ -2,25 +2,50 @@
2
2
  export * from './lib/tokens/injection-tokens';
3
3
  // Providers
4
4
  export * from './lib/providers/provide-ngx-dynamic-entity';
5
+ export * from './lib/providers/provide-field-types';
5
6
  // Services
6
- export * from './lib/services/config.service';
7
7
  export * from './lib/services/field-registry.service';
8
8
  export * from './lib/services/hook-registry.service';
9
9
  export * from './lib/services/validator-registry.service';
10
10
  export * from './lib/services/entity-ref-registry.service';
11
- export * from './lib/services/version.service';
11
+ export * from './lib/services/entity-ref-selection.service';
12
+ export * from './lib/services/cascade-data.service';
13
+ export * from './lib/services/entity-reference.service';
14
+ export * from './lib/services/entity-ref-cache';
15
+ export * from './lib/services/lookup-registry.service';
12
16
  export * from './lib/services/rbac.service';
13
- // Components
17
+ export * from './lib/services/rules-evaluation.service';
18
+ export * from './lib/services/config-source.service';
19
+ // Components — the library ships form UI only; rendering a data table is the consumer's choice.
14
20
  export * from './lib/form/dynamic-form.component';
21
+ export * from './lib/form/dynamic-record-form.component';
15
22
  export * from './lib/form/dynamic-field/dynamic-field.component';
16
- export * from './lib/table/dynamic-table.component';
17
- // Field type components (individually importable — reusability rule)
23
+ // Field type components — every one, individually importable.
24
+ //
25
+ // The tree-shaking seam is `provideFieldTypes({ image: ImageFieldComponent })`: register
26
+ // only what you use and the rest never enters the bundle. That only works for components a
27
+ // consumer can name, and ten of these were unreachable — so wanting eleven of the eighteen
28
+ // meant calling provideBuiltInFieldTypes() and bundling all of them, which is exactly what
29
+ // the seam exists to avoid.
18
30
  export * from './lib/field-types/text-field.component';
19
31
  export * from './lib/field-types/textarea-field.component';
20
32
  export * from './lib/field-types/number-field.component';
33
+ export * from './lib/field-types/currency-field.component';
34
+ export * from './lib/field-types/email-field.component';
35
+ export * from './lib/field-types/password-field.component';
21
36
  export * from './lib/field-types/checkbox-field.component';
37
+ export * from './lib/field-types/boolean-field.component';
22
38
  export * from './lib/field-types/date-field.component';
39
+ export * from './lib/field-types/month-year-field.component';
23
40
  export * from './lib/field-types/dropdown-field.component';
41
+ export * from './lib/field-types/radio-field.component';
24
42
  export * from './lib/field-types/multi-select-field.component';
25
43
  export * from './lib/field-types/entity-ref-field.component';
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVM7QUFDVCxjQUFjLCtCQUErQixDQUFDO0FBRTlDLFlBQVk7QUFDWixjQUFjLDRDQUE0QyxDQUFDO0FBRTNELFdBQVc7QUFDWCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDZCQUE2QixDQUFDO0FBRTVDLGFBQWE7QUFDYixjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxxQ0FBcUMsQ0FBQztBQUVwRCxxRUFBcUU7QUFDckUsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDhDQUE4QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVG9rZW5zXG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2tlbnMvaW5qZWN0aW9uLXRva2Vucyc7XG5cbi8vIFByb3ZpZGVyc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvdmlkZXJzL3Byb3ZpZGUtbmd4LWR5bmFtaWMtZW50aXR5JztcblxuLy8gU2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2ZpZWxkLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvaG9vay1yZWdpc3RyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3ZhbGlkYXRvci1yZWdpc3RyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2VudGl0eS1yZWYtcmVnaXN0cnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy92ZXJzaW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvcmJhYy5zZXJ2aWNlJztcblxuLy8gQ29tcG9uZW50c1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0vZHluYW1pYy1maWVsZC9keW5hbWljLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90YWJsZS9keW5hbWljLXRhYmxlLmNvbXBvbmVudCc7XG5cbi8vIEZpZWxkIHR5cGUgY29tcG9uZW50cyAoaW5kaXZpZHVhbGx5IGltcG9ydGFibGUg4oCUIHJldXNhYmlsaXR5IHJ1bGUpXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy90ZXh0LWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy90ZXh0YXJlYS1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvbnVtYmVyLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy9jaGVja2JveC1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvZGF0ZS1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvZHJvcGRvd24tZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLXR5cGVzL211bHRpLXNlbGVjdC1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvZW50aXR5LXJlZi1maWVsZC5jb21wb25lbnQnO1xuXG4vLyBSZS1leHBvcnQgY29yZSB0eXBlcyBzbyBjb25zdW1lcnMgbmVlZCBvbmx5IG9uZSBpbXBvcnRcbmV4cG9ydCB0eXBlIHtcbiAgRW50aXR5Q29uZmlnLFxuICBGaWVsZENvbmZpZyxcbiAgVGFiQ29uZmlnLFxuICBEcm9wZG93bk9wdGlvbixcbiAgRmllbGREZXBlbmRlbmN5LFxuICBFbnRpdHlIb29rcyxcbiAgVmVyc2lvbmVkUmVjb3JkLFxuICBFbnRpdHlQZXJtaXNzaW9ucyxcbiAgUmJhY0NvbnRleHQsXG4gIE1pZ3JhdGlvblN0cmF0ZWd5LFxuICBRdWVyeU9wdGlvbnMsXG4gIFBhZ2luYXRlZFJlc3VsdCxcbn0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuIl19
44
+ export * from './lib/field-types/group-field.component';
45
+ export * from './lib/field-types/array-field.component';
46
+ export * from './lib/field-types/image-field.component';
47
+ export * from './lib/field-types/file-field.component';
48
+ // Value helpers — a dropdown value is now a language-keyed object, so a consumer rendering
49
+ // record values needs these. Re-exported so they don't have to depend on core directly.
50
+ export { resolveLabel, resolveOptionLabel, resolveOptionValue, formatDisplayValue, valuesMatch, normalizeOption, normalizeConfig, } from '@dynamic-entity/core';
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFNBQVM7QUFDVCxjQUFjLCtCQUErQixDQUFDO0FBRTlDLFlBQVk7QUFDWixjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMscUNBQXFDLENBQUM7QUFFcEQsV0FBVztBQUNYLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHNDQUFzQyxDQUFDO0FBRXJELGdHQUFnRztBQUNoRyxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyxrREFBa0QsQ0FBQztBQUVqRSw4REFBOEQ7QUFDOUQsRUFBRTtBQUNGLHlGQUF5RjtBQUN6RiwyRkFBMkY7QUFDM0YsMkZBQTJGO0FBQzNGLDJGQUEyRjtBQUMzRiw0QkFBNEI7QUFDNUIsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyw4Q0FBOEMsQ0FBQztBQUM3RCxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyxnREFBZ0QsQ0FBQztBQUMvRCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyx5Q0FBeUMsQ0FBQztBQUN4RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsd0NBQXdDLENBQUM7QUFFdkQsMkZBQTJGO0FBQzNGLHdGQUF3RjtBQUN4RixPQUFPLEVBQ0wsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixrQkFBa0IsRUFDbEIsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVG9rZW5zXG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2tlbnMvaW5qZWN0aW9uLXRva2Vucyc7XG5cbi8vIFByb3ZpZGVyc1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcHJvdmlkZXJzL3Byb3ZpZGUtbmd4LWR5bmFtaWMtZW50aXR5JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3Byb3ZpZGVycy9wcm92aWRlLWZpZWxkLXR5cGVzJztcblxuLy8gU2VydmljZXNcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2ZpZWxkLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvaG9vay1yZWdpc3RyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3ZhbGlkYXRvci1yZWdpc3RyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2VudGl0eS1yZWYtcmVnaXN0cnkuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9lbnRpdHktcmVmLXNlbGVjdGlvbi5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2Nhc2NhZGUtZGF0YS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2VudGl0eS1yZWZlcmVuY2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9lbnRpdHktcmVmLWNhY2hlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL2xvb2t1cC1yZWdpc3RyeS5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzL3JiYWMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9ydWxlcy1ldmFsdWF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc2VydmljZXMvY29uZmlnLXNvdXJjZS5zZXJ2aWNlJztcblxuLy8gQ29tcG9uZW50cyDigJQgdGhlIGxpYnJhcnkgc2hpcHMgZm9ybSBVSSBvbmx5OyByZW5kZXJpbmcgYSBkYXRhIHRhYmxlIGlzIHRoZSBjb25zdW1lcidzIGNob2ljZS5cbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0vZHluYW1pYy1mb3JtLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtL2R5bmFtaWMtcmVjb3JkLWZvcm0uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2Zvcm0vZHluYW1pYy1maWVsZC9keW5hbWljLWZpZWxkLmNvbXBvbmVudCc7XG5cbi8vIEZpZWxkIHR5cGUgY29tcG9uZW50cyDigJQgZXZlcnkgb25lLCBpbmRpdmlkdWFsbHkgaW1wb3J0YWJsZS5cbi8vXG4vLyBUaGUgdHJlZS1zaGFraW5nIHNlYW0gaXMgYHByb3ZpZGVGaWVsZFR5cGVzKHsgaW1hZ2U6IEltYWdlRmllbGRDb21wb25lbnQgfSlgOiByZWdpc3RlclxuLy8gb25seSB3aGF0IHlvdSB1c2UgYW5kIHRoZSByZXN0IG5ldmVyIGVudGVycyB0aGUgYnVuZGxlLiBUaGF0IG9ubHkgd29ya3MgZm9yIGNvbXBvbmVudHMgYVxuLy8gY29uc3VtZXIgY2FuIG5hbWUsIGFuZCB0ZW4gb2YgdGhlc2Ugd2VyZSB1bnJlYWNoYWJsZSDigJQgc28gd2FudGluZyBlbGV2ZW4gb2YgdGhlIGVpZ2h0ZWVuXG4vLyBtZWFudCBjYWxsaW5nIHByb3ZpZGVCdWlsdEluRmllbGRUeXBlcygpIGFuZCBidW5kbGluZyBhbGwgb2YgdGhlbSwgd2hpY2ggaXMgZXhhY3RseSB3aGF0XG4vLyB0aGUgc2VhbSBleGlzdHMgdG8gYXZvaWQuXG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy90ZXh0LWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy90ZXh0YXJlYS1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvbnVtYmVyLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy9jdXJyZW5jeS1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvZW1haWwtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLXR5cGVzL3Bhc3N3b3JkLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy9jaGVja2JveC1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvYm9vbGVhbi1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvZGF0ZS1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvbW9udGgteWVhci1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvZHJvcGRvd24tZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLXR5cGVzL3JhZGlvLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy9tdWx0aS1zZWxlY3QtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLXR5cGVzL2VudGl0eS1yZWYtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLXR5cGVzL2dyb3VwLWZpZWxkLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZC10eXBlcy9hcnJheS1maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmllbGQtdHlwZXMvaW1hZ2UtZmllbGQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpZWxkLXR5cGVzL2ZpbGUtZmllbGQuY29tcG9uZW50JztcblxuLy8gVmFsdWUgaGVscGVycyDigJQgYSBkcm9wZG93biB2YWx1ZSBpcyBub3cgYSBsYW5ndWFnZS1rZXllZCBvYmplY3QsIHNvIGEgY29uc3VtZXIgcmVuZGVyaW5nXG4vLyByZWNvcmQgdmFsdWVzIG5lZWRzIHRoZXNlLiBSZS1leHBvcnRlZCBzbyB0aGV5IGRvbid0IGhhdmUgdG8gZGVwZW5kIG9uIGNvcmUgZGlyZWN0bHkuXG5leHBvcnQge1xuICByZXNvbHZlTGFiZWwsXG4gIHJlc29sdmVPcHRpb25MYWJlbCxcbiAgcmVzb2x2ZU9wdGlvblZhbHVlLFxuICBmb3JtYXREaXNwbGF5VmFsdWUsXG4gIHZhbHVlc01hdGNoLFxuICBub3JtYWxpemVPcHRpb24sXG4gIG5vcm1hbGl6ZUNvbmZpZyxcbn0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuXG4vLyBSZS1leHBvcnQgY29yZSB0eXBlcyBzbyBjb25zdW1lcnMgbmVlZCBvbmx5IG9uZSBpbXBvcnRcbmV4cG9ydCB0eXBlIHtcbiAgRW50aXR5Rm9ybUNvbmZpZyxcbiAgTmVzdGVkVGFiQ29uZmlnLFxuICBOZXN0ZWRGaWVsZENvbmZpZyxcbiAgRmllbGRUYWJsZUNvbmZpZyxcbiAgUmljaEZpZWxkVHlwZSxcbiAgTG9jYWxpemVkVGV4dCxcbiAgRHJvcGRvd25PcHRpb24sXG4gIFZlcnNpb25lZFJlY29yZCxcbiAgRW50aXR5UGVybWlzc2lvbnMsXG4gIFJiYWNDb250ZXh0LFxuICBGaWVsZFZhbGlkYXRvcnMsXG4gIEVudGl0eVJlZmVyZW5jZUNvbmZpZyxcbiAgRW50aXR5UmVmZXJlbmNlTG9hZGVyLFxuICBSZWZlcmVuY2VPcHRpb24sXG4gIFJlZmVyZW5jZUxvYWRlckNvbnRleHQsXG4gIEF1dG9QYXRjaENvbmZpZyxcbiAgUGF0Y2hPblRydWVNYXBwaW5nLFxuICBGaWxlUmVmLFxuICBGb3JtUnVsZSxcbiAgUnVsZUNvbmRpdGlvbixcbiAgUnVsZUFjdGlvbixcbiAgUnVsZUV2YWx1YXRpb25SZXN1bHQsXG4gIENvbW1vbk1vZHVsZUVudHJ5LFxufSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XG4iXX0=