ngx-dynamic-entity 1.1.0 → 1.3.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.
- package/README.md +1 -1
- package/esm2022/lib/field-types/array-field.component.mjs +13 -5
- package/esm2022/lib/field-types/boolean-field.component.mjs +4 -3
- package/esm2022/lib/field-types/checkbox-field.component.mjs +4 -3
- package/esm2022/lib/field-types/currency-field.component.mjs +4 -3
- package/esm2022/lib/field-types/date-field.component.mjs +4 -3
- package/esm2022/lib/field-types/date-time-field.component.mjs +138 -0
- package/esm2022/lib/field-types/dropdown-field.component.mjs +9 -7
- package/esm2022/lib/field-types/email-field.component.mjs +4 -3
- package/esm2022/lib/field-types/entity-ref-field.component.mjs +21 -7
- package/esm2022/lib/field-types/field-component.contract.mjs +2 -0
- package/esm2022/lib/field-types/file-field.component.mjs +4 -3
- package/esm2022/lib/field-types/group-field.component.mjs +5 -5
- package/esm2022/lib/field-types/image-field.component.mjs +4 -3
- package/esm2022/lib/field-types/month-year-field.component.mjs +4 -3
- package/esm2022/lib/field-types/multi-select-field.component.mjs +4 -3
- package/esm2022/lib/field-types/number-field.component.mjs +7 -11
- package/esm2022/lib/field-types/password-field.component.mjs +4 -3
- package/esm2022/lib/field-types/radio-field.component.mjs +4 -3
- package/esm2022/lib/field-types/text-field.component.mjs +25 -18
- package/esm2022/lib/field-types/textarea-field.component.mjs +4 -3
- package/esm2022/lib/field-types/time-field.component.mjs +96 -0
- package/esm2022/lib/form/dynamic-field/dynamic-field.component.mjs +55 -7
- package/esm2022/lib/form/dynamic-form.component.mjs +140 -15
- package/esm2022/lib/form/dynamic-record-form.component.mjs +54 -17
- package/esm2022/lib/providers/provide-field-types.mjs +5 -2
- package/esm2022/lib/providers/provide-ngx-dynamic-entity.mjs +7 -2
- package/esm2022/lib/services/cascade-data.service.mjs +2 -2
- package/esm2022/lib/services/entity-ref-registry.service.mjs +2 -2
- package/esm2022/lib/services/lookup-registry.service.mjs +2 -2
- package/esm2022/lib/services/validation-messages.service.mjs +56 -0
- package/esm2022/lib/services/validator-registry.service.mjs +24 -2
- package/esm2022/lib/tokens/injection-tokens.mjs +19 -6
- package/esm2022/public-api.mjs +9 -2
- package/fesm2022/ngx-dynamic-entity.mjs +663 -98
- package/fesm2022/ngx-dynamic-entity.mjs.map +1 -1
- package/lib/field-types/array-field.component.d.ts +7 -1
- package/lib/field-types/date-time-field.component.d.ts +30 -0
- package/lib/field-types/dropdown-field.component.d.ts +1 -0
- package/lib/field-types/entity-ref-field.component.d.ts +11 -1
- package/lib/field-types/field-component.contract.d.ts +49 -0
- package/lib/field-types/group-field.component.d.ts +1 -1
- package/lib/field-types/number-field.component.d.ts +1 -0
- package/lib/field-types/text-field.component.d.ts +10 -2
- package/lib/field-types/time-field.component.d.ts +27 -0
- package/lib/form/dynamic-field/dynamic-field.component.d.ts +39 -4
- package/lib/form/dynamic-form.component.d.ts +64 -2
- package/lib/form/dynamic-record-form.component.d.ts +19 -0
- package/lib/providers/provide-ngx-dynamic-entity.d.ts +17 -1
- package/lib/services/cascade-data.service.d.ts +1 -1
- package/lib/services/entity-ref-registry.service.d.ts +1 -1
- package/lib/services/lookup-registry.service.d.ts +1 -1
- package/lib/services/validation-messages.service.d.ts +43 -0
- package/lib/services/validator-registry.service.d.ts +13 -1
- package/lib/tokens/injection-tokens.d.ts +18 -5
- package/package.json +2 -2
- package/public-api.d.ts +4 -0
- package/styles.css +579 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { makeEnvironmentProviders } from '@angular/core';
|
|
2
|
-
import { ENTITY_REF_REGISTRY, FIELD_TYPE_REGISTRY, HOOK_REGISTRY, RECORD_MIGRATIONS, LOOKUP_REGISTRY, MASKED_ROLES, VALIDATOR_REGISTRY, } from '../tokens/injection-tokens';
|
|
2
|
+
import { ENTITY_REF_REGISTRY, FIELD_TYPE_REGISTRY, HOOK_REGISTRY, ASYNC_VALIDATOR_REGISTRY, RECORD_MIGRATIONS, VALIDATION_MESSAGES, LOOKUP_REGISTRY, MASKED_ROLES, VALIDATOR_REGISTRY, } from '../tokens/injection-tokens';
|
|
3
3
|
/**
|
|
4
4
|
* Provider function for ngx-dynamic-entity.
|
|
5
5
|
* All options are optional — consumers provide only what they use (ISP).
|
|
@@ -16,7 +16,12 @@ export const provideNgxDynamicEntity = (config = {}) => makeEnvironmentProviders
|
|
|
16
16
|
{ provide: ENTITY_REF_REGISTRY, useValue: new Map(Object.entries(config.entityRefs ?? {})) },
|
|
17
17
|
{ provide: LOOKUP_REGISTRY, useValue: new Map(Object.entries(config.lookups ?? {})) },
|
|
18
18
|
{ provide: VALIDATOR_REGISTRY, useValue: new Map(Object.entries(config.validators ?? {})) },
|
|
19
|
+
{
|
|
20
|
+
provide: ASYNC_VALIDATOR_REGISTRY,
|
|
21
|
+
useValue: new Map(Object.entries(config.asyncValidators ?? {})),
|
|
22
|
+
},
|
|
19
23
|
{ provide: HOOK_REGISTRY, useValue: new Map(Object.entries(config.hooks ?? {})) },
|
|
20
24
|
{ provide: RECORD_MIGRATIONS, useValue: config.migrations ?? [] },
|
|
25
|
+
{ provide: VALIDATION_MESSAGES, useValue: config.validationMessages ?? {} },
|
|
21
26
|
]);
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS1uZ3gtZHluYW1pYy1lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3Byb3ZpZGVycy9wcm92aWRlLW5neC1keW5hbWljLWVudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLHdCQUF3QixFQUFRLE1BQU0sZUFBZSxDQUFDO0FBRXJGLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIsbUJBQW1CLEVBQ25CLGFBQWEsRUFFYix3QkFBd0IsRUFDeEIsaUJBQWlCLEVBQ2pCLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsWUFBWSxFQUNaLGtCQUFrQixHQUNuQixNQUFNLDRCQUE0QixDQUFDO0FBNkNwQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLFNBQWlDLEVBQUUsRUFBd0IsRUFBRSxDQUNuRyx3QkFBd0IsQ0FBQztJQUN2QixFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxFQUFFO0lBQzdELEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtJQUM1RixFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDNUYsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNyRixFQUFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxRQUFRLEVBQUUsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUU7SUFDM0Y7UUFDRSxPQUFPLEVBQUUsd0JBQXdCO1FBQ2pDLFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUM7S0FDaEU7SUFDRCxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFO0lBQ2pGLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsVUFBVSxJQUFJLEVBQUUsRUFBRTtJQUNqRSxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLGtCQUFrQixJQUFJLEVBQUUsRUFBRTtDQUM1RSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnZpcm9ubWVudFByb3ZpZGVycywgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IEVudGl0eVJlZmVyZW5jZUxvYWRlciwgTG9va3VwTGlzdFNvdXJjZSwgUmVjb3JkTWlncmF0aW9uIH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHtcbiAgRU5USVRZX1JFRl9SRUdJU1RSWSxcbiAgRklFTERfVFlQRV9SRUdJU1RSWSxcbiAgSE9PS19SRUdJU1RSWSxcbiAgdHlwZSBIb29rRm4sXG4gIEFTWU5DX1ZBTElEQVRPUl9SRUdJU1RSWSxcbiAgUkVDT1JEX01JR1JBVElPTlMsXG4gIFZBTElEQVRJT05fTUVTU0FHRVMsXG4gIExPT0tVUF9SRUdJU1RSWSxcbiAgTUFTS0VEX1JPTEVTLFxuICBWQUxJREFUT1JfUkVHSVNUUlksXG59IGZyb20gJy4uL3Rva2Vucy9pbmplY3Rpb24tdG9rZW5zJztcblxuZXhwb3J0IGludGVyZmFjZSBOZ3hEeW5hbWljRW50aXR5Q29uZmlnIHtcbiAgLyoqIFJvbGVzIHRoYXQgc2VlIG1hc2tlZCBmaWVsZCB2YWx1ZXMgYXMgWFhYWFhYWFhYICovXG4gIG1hc2tlZFJvbGVzPzogc3RyaW5nW107XG4gIC8qKiBDdXN0b20gZmllbGQgdHlwZSBjb21wb25lbnRzIGtleWVkIGJ5IHR5cGUgc3RyaW5nICovXG4gIGZpZWxkVHlwZXM/OiBSZWNvcmQ8c3RyaW5nLCBUeXBlPGFueT4+O1xuICAvKipcbiAgICogRW50aXR5LXJlZiBvcHRpb24gbG9hZGVycyBrZXllZCBieSBlbnRpdHkga2V5LlxuICAgKiBFYWNoIHJlY2VpdmVzIGB7IHBhcmVudFZhbHVlLCBmaWx0ZXJzLCBsYW5nIH1gIGFuZCBtYXkgcmV0dXJuIGFuIGFycmF5LCBQcm9taXNlLCBvciBPYnNlcnZhYmxlLlxuICAgKi9cbiAgZW50aXR5UmVmcz86IFJlY29yZDxzdHJpbmcsIEVudGl0eVJlZmVyZW5jZUxvYWRlcj47XG4gIC8qKlxuICAgKiBOYW1lZCBtYXN0ZXIgbGlzdHMga2V5ZWQgYnkgbGlzdCBuYW1lLCBmb3IgZmllbGRzIHRoYXQgc2V0IGBsaXN0TmFtZWAuXG4gICAqIEVhY2ggbWF5IGJlIHRoZSB2YWx1ZXMgdGhlbXNlbHZlcyAoYXJyYXkvUHJvbWlzZS9PYnNlcnZhYmxlKSBvciBhIGxvYWRlciBmdW5jdGlvbiDigJQgcHJlZmVyXG4gICAqIGEgbG9hZGVyIGZvciBhbnl0aGluZyBmZXRjaGVkLCBzbyBhbiB1bnVzZWQgbGlzdCBpcyBuZXZlciBsb2FkZWQuXG4gICAqL1xuICBsb29rdXBzPzogUmVjb3JkPHN0cmluZywgTG9va3VwTGlzdFNvdXJjZT47XG4gIC8qKlxuICAgKiBPdmVycmlkZSB0aGUgbWVzc2FnZXMgc2hvd24gdW5kZXIgaW52YWxpZCBmaWVsZHMsIGtleWVkIGJ5IEFuZ3VsYXIgZXJyb3Iga2V5LiBBIHZhbHVlIGlzXG4gICAqIGEgc3RyaW5nLCBvciBhIGZ1bmN0aW9uIHJlY2VpdmluZyBgKGxhbmd1YWdlLCBlcnJvcilgIHdoZW4gaXQgbmVlZHMgdGhlIGVycm9yJ3MgZGV0YWlsLlxuICAgKiBVbmxpc3RlZCBrZXlzIGtlZXAgdGhlaXIgRW5nbGlzaCBkZWZhdWx0LlxuICAgKi9cbiAgdmFsaWRhdGlvbk1lc3NhZ2VzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgKChsYW5ndWFnZTogc3RyaW5nLCBlcnJvcjogYW55KSA9PiBzdHJpbmcpPjtcbiAgLyoqXG4gICAqIEFzeW5jIHZhbGlkYXRvciBmdW5jdGlvbnMga2V5ZWQgYnkgbmFtZSwgZm9yIGNoZWNrcyB0aGF0IG5lZWQgYSBzZXJ2ZXIg4oCUIHVuaXF1ZW5lc3MsXG4gICAqIGF2YWlsYWJpbGl0eSwgYSByZW1vdGUgcnVsZS4gTmFtZSB0aGVtIGZyb20gYSBzY2hlbWEgd2l0aFxuICAgKiBgdmFsaWRhdG9yczogeyBjdXN0b21Bc3luYzogWyd1bmlxdWVFbWFpbCddIH1gLlxuICAgKlxuICAgKiBFYWNoIGlzIGFuIEFuZ3VsYXIgYEFzeW5jVmFsaWRhdG9yRm5gOiBpdCByZWNlaXZlcyB0aGUgY29udHJvbCBhbmQgcmV0dXJucyBhIFByb21pc2Ugb3JcbiAgICogT2JzZXJ2YWJsZSBvZiBgVmFsaWRhdGlvbkVycm9ycyB8IG51bGxgLiBUaGUgY29udHJvbCBpcyBgcGVuZGluZ2Agd2hpbGUgaXQgcnVucywgYW5kIHRoZVxuICAgKiBmb3JtIGNhbm5vdCBiZSBzdWJtaXR0ZWQgdW50aWwgZXZlcnkgcGVuZGluZyBjaGVjayBzZXR0bGVzLlxuICAgKi9cbiAgYXN5bmNWYWxpZGF0b3JzPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgLyoqIEN1c3RvbSB2YWxpZGF0b3IgZnVuY3Rpb25zIGtleWVkIGJ5IHZhbGlkYXRvciBuYW1lICovXG4gIHZhbGlkYXRvcnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAvKiogSG9vayBmdW5jdGlvbnMga2V5ZWQgYnkgaG9vayBuYW1lICovXG4gIGhvb2tzPzogUmVjb3JkPHN0cmluZywgSG9va0ZuPjtcbiAgLyoqXG4gICAqIE9yZGVyZWQgc3RlcHMgdGhhdCB1cGdyYWRlIGEgc2F2ZWQgcmVjb3JkIHdoZW4gYEVudGl0eUZvcm1Db25maWcudmVyc2lvbmAgbW92ZXMgYWhlYWRcbiAgICogb2YgdGhlIHJlY29yZCdzIGBfY29uZmlnVmVyc2lvbmAuIEFwcGxpZWQgdG8gYGluaXRpYWxEYXRhYCBiZWZvcmUgdGhlIGZvcm0gaXMgcGF0Y2hlZC5cbiAgICovXG4gIG1pZ3JhdGlvbnM/OiBSZWNvcmRNaWdyYXRpb25bXTtcbn1cblxuLyoqXG4gKiBQcm92aWRlciBmdW5jdGlvbiBmb3Igbmd4LWR5bmFtaWMtZW50aXR5LlxuICogQWxsIG9wdGlvbnMgYXJlIG9wdGlvbmFsIOKAlCBjb25zdW1lcnMgcHJvdmlkZSBvbmx5IHdoYXQgdGhleSB1c2UgKElTUCkuXG4gKlxuICogVXNhZ2UgaW4gYXBwLmNvbmZpZy50czpcbiAqICAgcHJvdmlkZU5neER5bmFtaWNFbnRpdHkoe1xuICogICAgIG1hc2tlZFJvbGVzOiBbJ0lUX1NVUFBPUlQnXSxcbiAqICAgICBlbnRpdHlSZWZzOiB7IGNsaWVudHM6ICgpID0+IGNsaWVudFNlcnZpY2UuZ2V0T3B0aW9ucygpIH0sXG4gKiAgIH0pXG4gKi9cbmV4cG9ydCBjb25zdCBwcm92aWRlTmd4RHluYW1pY0VudGl0eSA9IChjb25maWc6IE5neER5bmFtaWNFbnRpdHlDb25maWcgPSB7fSk6IEVudmlyb25tZW50UHJvdmlkZXJzID0+XG4gIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgeyBwcm92aWRlOiBNQVNLRURfUk9MRVMsIHVzZVZhbHVlOiBjb25maWcubWFza2VkUm9sZXMgPz8gW10gfSxcbiAgICB7IHByb3ZpZGU6IEZJRUxEX1RZUEVfUkVHSVNUUlksIHVzZVZhbHVlOiBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKGNvbmZpZy5maWVsZFR5cGVzID8/IHt9KSkgfSxcbiAgICB7IHByb3ZpZGU6IEVOVElUWV9SRUZfUkVHSVNUUlksIHVzZVZhbHVlOiBuZXcgTWFwKE9iamVjdC5lbnRyaWVzKGNvbmZpZy5lbnRpdHlSZWZzID8/IHt9KSkgfSxcbiAgICB7IHByb3ZpZGU6IExPT0tVUF9SRUdJU1RSWSwgdXNlVmFsdWU6IG5ldyBNYXAoT2JqZWN0LmVudHJpZXMoY29uZmlnLmxvb2t1cHMgPz8ge30pKSB9LFxuICAgIHsgcHJvdmlkZTogVkFMSURBVE9SX1JFR0lTVFJZLCB1c2VWYWx1ZTogbmV3IE1hcChPYmplY3QuZW50cmllcyhjb25maWcudmFsaWRhdG9ycyA/PyB7fSkpIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogQVNZTkNfVkFMSURBVE9SX1JFR0lTVFJZLFxuICAgICAgdXNlVmFsdWU6IG5ldyBNYXAoT2JqZWN0LmVudHJpZXMoY29uZmlnLmFzeW5jVmFsaWRhdG9ycyA/PyB7fSkpLFxuICAgIH0sXG4gICAgeyBwcm92aWRlOiBIT09LX1JFR0lTVFJZLCB1c2VWYWx1ZTogbmV3IE1hcChPYmplY3QuZW50cmllcyhjb25maWcuaG9va3MgPz8ge30pKSB9LFxuICAgIHsgcHJvdmlkZTogUkVDT1JEX01JR1JBVElPTlMsIHVzZVZhbHVlOiBjb25maWcubWlncmF0aW9ucyA/PyBbXSB9LFxuICAgIHsgcHJvdmlkZTogVkFMSURBVElPTl9NRVNTQUdFUywgdXNlVmFsdWU6IGNvbmZpZy52YWxpZGF0aW9uTWVzc2FnZXMgPz8ge30gfSxcbiAgXSk7XG4iXX0=
|
|
@@ -6,7 +6,7 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
/**
|
|
7
7
|
* CascadeDataService — loads entity-reference options and applies parent→child cascades.
|
|
8
8
|
*
|
|
9
|
-
* Loaders come from the registry only
|
|
9
|
+
* Loaders come from the registry only. This service owns the three things a
|
|
10
10
|
* field component should not: resolving the loader, coercing whatever it returned
|
|
11
11
|
* (array | Promise | Observable) into a Promise, and filtering by the parent's value.
|
|
12
12
|
*/
|
|
@@ -126,4 +126,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
126
126
|
type: Injectable,
|
|
127
127
|
args: [{ providedIn: 'root' }]
|
|
128
128
|
}] });
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZS1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2Nhc2NhZGUtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVwRTs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ1osUUFBUSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLFVBQVUsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUU3RCw4RkFBOEY7SUFDN0UsUUFBUSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0lBRTdELCtFQUErRTtJQUMvRSxZQUFZLENBQUMsS0FBd0I7UUFDbkMsT0FBTyxLQUFLLENBQUMsZUFBZSxFQUFFLGVBQWUsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxxREFBcUQ7SUFDckQsT0FBTyxDQUFDLEtBQXdCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUNSLEtBQXdCLEVBQ3hCLE1BQThCLEVBQUU7UUFFaEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFP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TUFBTSxDQUFDLENBQUM7Z0JBQ3ZCLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUNGLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQXBJVSxrQkFBa0I7NEdBQWxCLGtCQUFrQixjQURMLE1BQU07OzRGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEVudGl0eUZvcm1Db25maWcsXG4gIE5lc3RlZEZpZWxkQ29uZmlnLFxuICBOZXN0ZWRUYWJDb25maWcsXG4gIFJlZmVyZW5jZUxvYWRlckNvbnRleHQsXG4gIFJlZmVyZW5jZU9wdGlvbixcbn0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlDYXNjYWRlRmlsdGVyIH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgRW50aXR5UmVmUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktcmVmLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW50aXR5UmVmZXJlbmNlU2VydmljZSB9IGZyb20gJy4vZW50aXR5LXJlZmVyZW5jZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBDYXNjYWRlRGF0YVNlcnZpY2Ug4oCUIGxvYWRzIGVudGl0eS1yZWZlcmVuY2Ugb3B0aW9ucyBhbmQgYXBwbGllcyBwYXJlbnTihpJjaGlsZCBjYXNjYWRlcy5cbiAqXG4gKiBMb2FkZXJzIGNvbWUgZnJvbSB0aGUgcmVnaXN0cnkgb25seSAoQURSLTAwNikuIFRoaXMgc2VydmljZSBvd25zIHRoZSB0aHJlZSB0aGluZ3MgYVxuICogZmllbGQgY29tcG9uZW50IHNob3VsZCBub3Q6IHJlc29sdmluZyB0aGUgbG9hZGVyLCBjb2VyY2luZyB3aGF0ZXZlciBpdCByZXR1cm5lZFxuICogKGFycmF5IHwgUHJvbWlzZSB8IE9ic2VydmFibGUpIGludG8gYSBQcm9taXNlLCBhbmQgZmlsdGVyaW5nIGJ5IHRoZSBwYXJlbnQncyB2YWx1ZS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBDYXNjYWRlRGF0YVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5ID0gaW5qZWN0KEVudGl0eVJlZlJlZ2lzdHJ5U2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVmZXJlbmNlcyA9IGluamVjdChFbnRpdHlSZWZlcmVuY2VTZXJ2aWNlKTtcblxuICAvKiogUHJlbG9hZCBydW5zIGJ5IGZvcm1Db25maWdJZCwgc28gYSBzZWNvbmQgY2FsbCBqb2lucyB0aGUgZmlyc3QgcmF0aGVyIHRoYW4gcmUtZmV0Y2hpbmcuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJlbG9hZHMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx2b2lkPj4oKTtcblxuICAvKiogUmVnaXN0cnkga2V5IGZvciBhIGZpZWxkOiBleHBsaWNpdCBgbGlua2VkRW50aXR5S2V5YCwgZWxzZSB0aGUgZmllbGQgaWQuICovXG4gIGVudGl0eUtleUZvcihmaWVsZDogTmVzdGVkRmllbGRDb25maWcpOiBzdHJpbmcge1xuICAgIHJldHVybiBmaWVsZC5lbnRpdHlSZWZlcmVuY2U/LmxpbmtlZEVudGl0eUtleSA/PyBmaWVsZC5pZDtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIGEgbG9hZGVyIGlzIHJlZ2lzdGVyZWQgZm9yIHRoaXMgZmllbGQuICovXG4gIGNhbkxvYWQoZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVnaXN0cnkuaGFzKHRoaXMuZW50aXR5S2V5Rm9yKGZpZWxkKSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCB0aGUgb3B0aW9ucyBmb3IgYSBmaWVsZCwgY2FzY2FkZS1maWx0ZXJlZCBhZ2FpbnN0IGBwYXJlbnRWYWx1ZWAuXG4gICAqIFJldHVybnMgYFtdYCB3aGVuIG5vIGxvYWRlciBpcyByZWdpc3RlcmVkLCBvciB3aGVuIGEgY2FzY2FkZSBjaGlsZCBoYXMgbm8gcGFyZW50IHZhbHVlIHlldC5cbiAgICovXG4gIGFzeW5jIGxvYWQoXG4gICAgZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnLFxuICAgIGN0eDogUmVmZXJlbmNlTG9hZGVyQ29udGV4dCA9IHt9LFxuICApOiBQcm9taXNlPFJlZmVyZW5jZU9wdGlvbltdPiB7XG4gICAgY29uc3QgY2ZnID0gZmllbGQuZW50aXR5UmVmZXJlbmNlO1xuICAgIGlmICghdGhpcy5jYW5Mb2FkKGZpZWxkKSkgcmV0dXJuIFtdO1xuXG4gICAgLy8gQSBjYXNjYWRlIGNoaWxkIHdpdGggbm8gcGFyZW50IHNlbGVjdGlvbiBtdXN0IG9mZmVyIG5vdGhpbmcuXG4gICAgY29uc3QgaGFzUGFyZW50VmFsdWUgPVxuICAgICAgY3R4LnBhcmVudFZhbHVlICE9PSBudWxsICYmIGN0eC5wYXJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIGN0eC5wYXJlbnRWYWx1ZSAhPT0gJyc7XG4gICAgaWYgKGNmZz8ucGFyZW50RmllbGQgJiYgIWhhc1BhcmVudFZhbHVlKSByZXR1cm4gW107XG5cbiAgICBjb25zdCBsYW5nID0gY3R4LmxhbmcgPz8gJ2VuJztcblxuICAgIC8vIFdoZW4gdGhlIGNhc2NhZGUgY2FuIGJlIHJlc29sdmVkIGxvY2FsbHkgKGBsb29rdXBGaWx0ZXJgL2Bsb29rdXBQYXRoYCksIGZldGNoIHRoZVxuICAgIC8vIHVuZmlsdGVyZWQgc2V0IG9uY2UgYW5kIGZpbHRlciBwZXIgcGFyZW50IGJlbG93IOKAlCBzd2l0Y2hpbmcgcGFyZW50IHRoZW4gY29zdHMgbm90aGluZy5cbiAgICAvLyBPdGhlcndpc2UgdGhlIGxvYWRlciBpcyB0aGUgb25seSB0aGluZyB0aGF0IGNhbiBuYXJyb3cgdGhlIGxpc3QsIHNvIGBwYXJlbnRWYWx1ZWAgaXNcbiAgICAvLyBwYXNzZWQgdGhyb3VnaCBhbmQgYmVjb21lcyBwYXJ0IG9mIHRoZSBjYWNoZSBpZGVudGl0eSAob25lIGVudHJ5IHBlciBwYXJlbnQpLlxuICAgIGNvbnN0IGZpbHRlcnNMb2NhbGx5ID0gISEoY2ZnPy5sb29rdXBGaWx0ZXIgfHwgY2ZnPy5sb29rdXBQYXRoKTtcblxuICAgIGNvbnN0IG9wdGlvbnMgPSBhd2FpdCB0aGlzLnJlZmVyZW5jZXMubG9hZCh0aGlzLmVudGl0eUtleUZvcihmaWVsZCksIHtcbiAgICAgIC4uLmN0eCxcbiAgICAgIHBhcmVudFZhbHVlOiBmaWx0ZXJzTG9jYWxseSA/IHVuZGVmaW5lZCA6IGN0eC5wYXJlbnRWYWx1ZSxcbiAgICAgIGZpbHRlcnM6IHsgLi4uKGNmZz8uZmlsdGVycyA/PyB7fSksIC4uLihjdHguZmlsdGVycyA/PyB7fSkgfSxcbiAgICAgIGRpc3BsYXlGaWVsZHM6IGNmZz8uZGlzcGxheUZpZWxkcyxcbiAgICAgIGxhbmcsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXBwbHlDYXNjYWRlRmlsdGVyKG9wdGlvbnMsIGN0eC5wYXJlbnRWYWx1ZSwgY2ZnLCBsYW5nKTtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBQcmVsb2FkIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgFxuXG4gIC8qKlxuICAgKiBXYXJtIHRoZSBjYWNoZSBmb3IgZXZlcnkgZW50aXR5IGEgY29uZmlnJ3MgY2FzY2FkZXMgZGVwZW5kIG9uLCBzbyBjaGFuZ2luZyBhIHBhcmVudFxuICAgKiByZXNvbHZlcyBmcm9tIG1lbW9yeSBpbnN0ZWFkIG9mIGEgcm91bmQtdHJpcC5cbiAgICpcbiAgICogSWRlbXBvdGVudCBwZXIgYGZvcm1Db25maWdJZGA6IGNhbGxpbmcgaXQgYWdhaW4gcmV0dXJucyB0aGUgaW4tZmxpZ2h0IG9yIGNvbXBsZXRlZCBydW5cbiAgICogcmF0aGVyIHRoYW4gcmUtZmV0Y2hpbmcuXG4gICAqL1xuICBpbml0aWFsaXplQ2FzY2FkZURhdGEoZm9ybUNvbmZpZ0lkOiBzdHJpbmcsIGNvbmZpZzogRW50aXR5Rm9ybUNvbmZpZywgbGFuZyA9ICdlbicpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMucHJlbG9hZHMuZ2V0KGZvcm1Db25maWdJZCk7XG4gICAgaWYgKGV4aXN0aW5nKSByZXR1cm4gZXhpc3Rpbmc7XG5cbiAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmNhc2NhZGVGaWVsZHMoY29uZmlnKTtcbiAgICBjb25zdCBydW4gPSBQcm9taXNlLmFsbChcbiAgICAgIGZpZWxkcy5tYXAoZmllbGQgPT5cbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzLmxvYWQodGhpcy5lbnRpdHlLZXlGb3IoZmllbGQpLCB7XG4gICAgICAgICAgZmlsdGVyczogZmllbGQuZW50aXR5UmVmZXJlbmNlPy5maWx0ZXJzLFxuICAgICAgICAgIGRpc3BsYXlGaWVsZHM6IGZpZWxkLmVudGl0eVJlZmVyZW5jZT8uZGlzcGxheUZpZWxkcyxcbiAgICAgICAgICBsYW5nLFxuICAgICAgICB9KSxcbiAgICAgICksXG4gICAgKS50aGVuKCgpID0+IHVuZGVmaW5lZCk7XG5cbiAgICB0aGlzLnByZWxvYWRzLnNldChmb3JtQ29uZmlnSWQsIHJ1bik7XG4gICAgcmV0dXJuIHJ1bjtcbiAgfVxuXG4gIC8qKiBSZXNvbHZlcyB0cnVlIG9uY2UgYGluaXRpYWxpemVDYXNjYWRlRGF0YWAgZm9yIHRoaXMgY29uZmlnIGhhcyBmaW5pc2hlZC4gKi9cbiAgYXN5bmMgd2FpdEZvckRhdGEoZm9ybUNvbmZpZ0lkOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBydW4gPSB0aGlzLnByZWxvYWRzLmdldChmb3JtQ29uZmlnSWQpO1xuICAgIGlmICghcnVuKSByZXR1cm4gZmFsc2U7XG4gICAgYXdhaXQgcnVuO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIENoaWxkIG9wdGlvbnMgZm9yIGEgcGFyZW50IHNlbGVjdGlvbiwgZnJvbSBjYWNoZSBvbmx5IOKAlCBubyBsb2FkIGlzIHRyaWdnZXJlZC5cbiAgICogUmV0dXJucyBgW11gIHdoZW4gdGhlIGVudGl0eSBoYXMgbm90IGJlZW4gcHJlbG9hZGVkLlxuICAgKi9cbiAgZ2V0Q2FjaGVkQ2hpbGRPcHRpb25zKFxuICAgIGZpZWxkOiBOZXN0ZWRGaWVsZENvbmZpZyxcbiAgICBwYXJlbnRWYWx1ZTogdW5rbm93bixcbiAgICBsYW5nID0gJ2VuJyxcbiAgKTogUmVmZXJlbmNlT3B0aW9uW10ge1xuICAgIGNvbnN0IGNmZyA9IGZpZWxkLmVudGl0eVJlZmVyZW5jZTtcbiAgICBjb25zdCBjYWNoZWQgPSB0aGlzLnJlZmVyZW5jZXMucGVlayh0aGlzLmVudGl0eUtleUZvcihmaWVsZCksIHtcbiAgICAgIGZpbHRlcnM6IGNmZz8uZmlsdGVycyxcbiAgICAgIGRpc3BsYXlGaWVsZHM6IGNmZz8uZGlzcGxheUZpZWxkcyxcbiAgICAgIGxhbmcsXG4gICAgfSk7XG4gICAgaWYgKCFjYWNoZWQpIHJldHVybiBbXTtcbiAgICByZXR1cm4gYXBwbHlDYXNjYWRlRmlsdGVyKGNhY2hlZCwgcGFyZW50VmFsdWUsIGNmZywgbGFuZyk7XG4gIH1cblxuICAvKiogRm9yZ2V0IHRoZSBwcmVsb2FkIGZvciBvbmUgY29uZmlnLiBUaGUgb3B0aW9uIGNhY2hlIGl0c2VsZiBpcyB1bnRvdWNoZWQuICovXG4gIGNsZWFyQ2FjaGUoZm9ybUNvbmZpZ0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLnByZWxvYWRzLmRlbGV0ZShmb3JtQ29uZmlnSWQpO1xuICB9XG5cbiAgLyoqIEV2ZXJ5IGVudGl0eS1yZWYgZmllbGQgaW4gdGhlIGNvbmZpZyB0aGF0IHBhcnRpY2lwYXRlcyBpbiBhIGNhc2NhZGUuICovXG4gIHByaXZhdGUgY2FzY2FkZUZpZWxkcyhjb25maWc6IEVudGl0eUZvcm1Db25maWcpOiBOZXN0ZWRGaWVsZENvbmZpZ1tdIHtcbiAgICBjb25zdCBmb3VuZDogTmVzdGVkRmllbGRDb25maWdbXSA9IFtdO1xuICAgIGNvbnN0IHdhbGtGaWVsZHMgPSAoZmllbGRzOiBOZXN0ZWRGaWVsZENvbmZpZ1tdIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgICBmb3IgKGNvbnN0IGZpZWxkIG9mIGZpZWxkcyA/PyBbXSkge1xuICAgICAgICBjb25zdCBjZmcgPSBmaWVsZC5lbnRpdHlSZWZlcmVuY2U7XG4gICAgICAgIGlmIChjZmc/LmVuYWJsZWQgJiYgKGNmZy5wYXJlbnRGaWVsZCB8fCBjZmcubG9va3VwUGF0aCB8fCBjZmcubG9va3VwRmlsdGVyKSkge1xuICAgICAgICAgIGZvdW5kLnB1c2goZmllbGQpO1xuICAgICAgICB9XG4gICAgICAgIHdhbGtGaWVsZHMoZmllbGQuY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3Qgd2Fsa1RhYnMgPSAodGFiczogTmVzdGVkVGFiQ29uZmlnW10gfCB1bmRlZmluZWQpID0+IHtcbiAgICAgIGZvciAoY29uc3QgdGFiIG9mIHRhYnMgPz8gW10pIHtcbiAgICAgICAgd2Fsa0ZpZWxkcyh0YWIuZmllbGRzKTtcbiAgICAgICAgd2Fsa1RhYnModGFiLmNoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIHdhbGtUYWJzKGNvbmZpZz8udGFicyk7XG4gICAgcmV0dXJuIGZvdW5kO1xuICB9XG59XG4iXX0=
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FzY2FkZS1kYXRhLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2Nhc2NhZGUtZGF0YS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUW5ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUVwRTs7Ozs7O0dBTUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBQ1osUUFBUSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0lBQzVDLFVBQVUsR0FBRyxNQUFNLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUU3RCw4RkFBOEY7SUFDN0UsUUFBUSxHQUFHLElBQUksR0FBRyxFQUF5QixDQUFDO0lBRTdELCtFQUErRTtJQUMvRSxZQUFZLENBQUMsS0FBd0I7UUFDbkMsT0FBTyxLQUFLLENBQUMsZUFBZSxFQUFFLGVBQWUsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRCxxREFBcUQ7SUFDckQsT0FBTyxDQUFDLEtBQXdCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUNSLEtBQXdCLEVBQ3hCLE1BQThCLEVBQUU7UUFFaEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLGVBQWUsQ0FBQztRQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFP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TUFBTSxDQUFDLENBQUM7Z0JBQ3ZCLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDekIsQ0FBQztRQUNILENBQUMsQ0FBQztRQUNGLFFBQVEsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO3dHQXBJVSxrQkFBa0I7NEdBQWxCLGtCQUFrQixjQURMLE1BQU07OzRGQUNuQixrQkFBa0I7a0JBRDlCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIEVudGl0eUZvcm1Db25maWcsXG4gIE5lc3RlZEZpZWxkQ29uZmlnLFxuICBOZXN0ZWRUYWJDb25maWcsXG4gIFJlZmVyZW5jZUxvYWRlckNvbnRleHQsXG4gIFJlZmVyZW5jZU9wdGlvbixcbn0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgYXBwbHlDYXNjYWRlRmlsdGVyIH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgRW50aXR5UmVmUmVnaXN0cnlTZXJ2aWNlIH0gZnJvbSAnLi9lbnRpdHktcmVmLXJlZ2lzdHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRW50aXR5UmVmZXJlbmNlU2VydmljZSB9IGZyb20gJy4vZW50aXR5LXJlZmVyZW5jZS5zZXJ2aWNlJztcblxuLyoqXG4gKiBDYXNjYWRlRGF0YVNlcnZpY2Ug4oCUIGxvYWRzIGVudGl0eS1yZWZlcmVuY2Ugb3B0aW9ucyBhbmQgYXBwbGllcyBwYXJlbnTihpJjaGlsZCBjYXNjYWRlcy5cbiAqXG4gKiBMb2FkZXJzIGNvbWUgZnJvbSB0aGUgcmVnaXN0cnkgb25seS4gVGhpcyBzZXJ2aWNlIG93bnMgdGhlIHRocmVlIHRoaW5ncyBhXG4gKiBmaWVsZCBjb21wb25lbnQgc2hvdWxkIG5vdDogcmVzb2x2aW5nIHRoZSBsb2FkZXIsIGNvZXJjaW5nIHdoYXRldmVyIGl0IHJldHVybmVkXG4gKiAoYXJyYXkgfCBQcm9taXNlIHwgT2JzZXJ2YWJsZSkgaW50byBhIFByb21pc2UsIGFuZCBmaWx0ZXJpbmcgYnkgdGhlIHBhcmVudCdzIHZhbHVlLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIENhc2NhZGVEYXRhU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnaXN0cnkgPSBpbmplY3QoRW50aXR5UmVmUmVnaXN0cnlTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSByZWZlcmVuY2VzID0gaW5qZWN0KEVudGl0eVJlZmVyZW5jZVNlcnZpY2UpO1xuXG4gIC8qKiBQcmVsb2FkIHJ1bnMgYnkgZm9ybUNvbmZpZ0lkLCBzbyBhIHNlY29uZCBjYWxsIGpvaW5zIHRoZSBmaXJzdCByYXRoZXIgdGhhbiByZS1mZXRjaGluZy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwcmVsb2FkcyA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPHZvaWQ+PigpO1xuXG4gIC8qKiBSZWdpc3RyeSBrZXkgZm9yIGEgZmllbGQ6IGV4cGxpY2l0IGBsaW5rZWRFbnRpdHlLZXlgLCBlbHNlIHRoZSBmaWVsZCBpZC4gKi9cbiAgZW50aXR5S2V5Rm9yKGZpZWxkOiBOZXN0ZWRGaWVsZENvbmZpZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGZpZWxkLmVudGl0eVJlZmVyZW5jZT8ubGlua2VkRW50aXR5S2V5ID8/IGZpZWxkLmlkO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgYSBsb2FkZXIgaXMgcmVnaXN0ZXJlZCBmb3IgdGhpcyBmaWVsZC4gKi9cbiAgY2FuTG9hZChmaWVsZDogTmVzdGVkRmllbGRDb25maWcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5oYXModGhpcy5lbnRpdHlLZXlGb3IoZmllbGQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHRoZSBvcHRpb25zIGZvciBhIGZpZWxkLCBjYXNjYWRlLWZpbHRlcmVkIGFnYWluc3QgYHBhcmVudFZhbHVlYC5cbiAgICogUmV0dXJucyBgW11gIHdoZW4gbm8gbG9hZGVyIGlzIHJlZ2lzdGVyZWQsIG9yIHdoZW4gYSBjYXNjYWRlIGNoaWxkIGhhcyBubyBwYXJlbnQgdmFsdWUgeWV0LlxuICAgKi9cbiAgYXN5bmMgbG9hZChcbiAgICBmaWVsZDogTmVzdGVkRmllbGRDb25maWcsXG4gICAgY3R4OiBSZWZlcmVuY2VMb2FkZXJDb250ZXh0ID0ge30sXG4gICk6IFByb21pc2U8UmVmZXJlbmNlT3B0aW9uW10+IHtcbiAgICBjb25zdCBjZmcgPSBmaWVsZC5lbnRpdHlSZWZlcmVuY2U7XG4gICAgaWYgKCF0aGlzLmNhbkxvYWQoZmllbGQpKSByZXR1cm4gW107XG5cbiAgICAvLyBBIGNhc2NhZGUgY2hpbGQgd2l0aCBubyBwYXJlbnQgc2VsZWN0aW9uIG11c3Qgb2ZmZXIgbm90aGluZy5cbiAgICBjb25zdCBoYXNQYXJlbnRWYWx1ZSA9XG4gICAgICBjdHgucGFyZW50VmFsdWUgIT09IG51bGwgJiYgY3R4LnBhcmVudFZhbHVlICE9PSB1bmRlZmluZWQgJiYgY3R4LnBhcmVudFZhbHVlICE9PSAnJztcbiAgICBpZiAoY2ZnPy5wYXJlbnRGaWVsZCAmJiAhaGFzUGFyZW50VmFsdWUpIHJldHVybiBbXTtcblxuICAgIGNvbnN0IGxhbmcgPSBjdHgubGFuZyA/PyAnZW4nO1xuXG4gICAgLy8gV2hlbiB0aGUgY2FzY2FkZSBjYW4gYmUgcmVzb2x2ZWQgbG9jYWxseSAoYGxvb2t1cEZpbHRlcmAvYGxvb2t1cFBhdGhgKSwgZmV0Y2ggdGhlXG4gICAgLy8gdW5maWx0ZXJlZCBzZXQgb25jZSBhbmQgZmlsdGVyIHBlciBwYXJlbnQgYmVsb3cg4oCUIHN3aXRjaGluZyBwYXJlbnQgdGhlbiBjb3N0cyBub3RoaW5nLlxuICAgIC8vIE90aGVyd2lzZSB0aGUgbG9hZGVyIGlzIHRoZSBvbmx5IHRoaW5nIHRoYXQgY2FuIG5hcnJvdyB0aGUgbGlzdCwgc28gYHBhcmVudFZhbHVlYCBpc1xuICAgIC8vIHBhc3NlZCB0aHJvdWdoIGFuZCBiZWNvbWVzIHBhcnQgb2YgdGhlIGNhY2hlIGlkZW50aXR5IChvbmUgZW50cnkgcGVyIHBhcmVudCkuXG4gICAgY29uc3QgZmlsdGVyc0xvY2FsbHkgPSAhIShjZmc/Lmxvb2t1cEZpbHRlciB8fCBjZmc/Lmxvb2t1cFBhdGgpO1xuXG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IHRoaXMucmVmZXJlbmNlcy5sb2FkKHRoaXMuZW50aXR5S2V5Rm9yKGZpZWxkKSwge1xuICAgICAgLi4uY3R4LFxuICAgICAgcGFyZW50VmFsdWU6IGZpbHRlcnNMb2NhbGx5ID8gdW5kZWZpbmVkIDogY3R4LnBhcmVudFZhbHVlLFxuICAgICAgZmlsdGVyczogeyAuLi4oY2ZnPy5maWx0ZXJzID8/IHt9KSwgLi4uKGN0eC5maWx0ZXJzID8/IHt9KSB9LFxuICAgICAgZGlzcGxheUZpZWxkczogY2ZnPy5kaXNwbGF5RmllbGRzLFxuICAgICAgbGFuZyxcbiAgICB9KTtcblxuICAgIHJldHVybiBhcHBseUNhc2NhZGVGaWx0ZXIob3B0aW9ucywgY3R4LnBhcmVudFZhbHVlLCBjZmcsIGxhbmcpO1xuICB9XG5cbiAgLy8g4pSA4pSA4pSAIFByZWxvYWQg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgLyoqXG4gICAqIFdhcm0gdGhlIGNhY2hlIGZvciBldmVyeSBlbnRpdHkgYSBjb25maWcncyBjYXNjYWRlcyBkZXBlbmQgb24sIHNvIGNoYW5naW5nIGEgcGFyZW50XG4gICAqIHJlc29sdmVzIGZyb20gbWVtb3J5IGluc3RlYWQgb2YgYSByb3VuZC10cmlwLlxuICAgKlxuICAgKiBJZGVtcG90ZW50IHBlciBgZm9ybUNvbmZpZ0lkYDogY2FsbGluZyBpdCBhZ2FpbiByZXR1cm5zIHRoZSBpbi1mbGlnaHQgb3IgY29tcGxldGVkIHJ1blxuICAgKiByYXRoZXIgdGhhbiByZS1mZXRjaGluZy5cbiAgICovXG4gIGluaXRpYWxpemVDYXNjYWRlRGF0YShmb3JtQ29uZmlnSWQ6IHN0cmluZywgY29uZmlnOiBFbnRpdHlGb3JtQ29uZmlnLCBsYW5nID0gJ2VuJyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gdGhpcy5wcmVsb2Fkcy5nZXQoZm9ybUNvbmZpZ0lkKTtcbiAgICBpZiAoZXhpc3RpbmcpIHJldHVybiBleGlzdGluZztcblxuICAgIGNvbnN0IGZpZWxkcyA9IHRoaXMuY2FzY2FkZUZpZWxkcyhjb25maWcpO1xuICAgIGNvbnN0IHJ1biA9IFByb21pc2UuYWxsKFxuICAgICAgZmllbGRzLm1hcChmaWVsZCA9PlxuICAgICAgICB0aGlzLnJlZmVyZW5jZXMubG9hZCh0aGlzLmVudGl0eUtleUZvcihmaWVsZCksIHtcbiAgICAgICAgICBmaWx0ZXJzOiBmaWVsZC5lbnRpdHlSZWZlcmVuY2U/LmZpbHRlcnMsXG4gICAgICAgICAgZGlzcGxheUZpZWxkczogZmllbGQuZW50aXR5UmVmZXJlbmNlPy5kaXNwbGF5RmllbGRzLFxuICAgICAgICAgIGxhbmcsXG4gICAgICAgIH0pLFxuICAgICAgKSxcbiAgICApLnRoZW4oKCkgPT4gdW5kZWZpbmVkKTtcblxuICAgIHRoaXMucHJlbG9hZHMuc2V0KGZvcm1Db25maWdJZCwgcnVuKTtcbiAgICByZXR1cm4gcnVuO1xuICB9XG5cbiAgLyoqIFJlc29sdmVzIHRydWUgb25jZSBgaW5pdGlhbGl6ZUNhc2NhZGVEYXRhYCBmb3IgdGhpcyBjb25maWcgaGFzIGZpbmlzaGVkLiAqL1xuICBhc3luYyB3YWl0Rm9yRGF0YShmb3JtQ29uZmlnSWQ6IHN0cmluZyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IHJ1biA9IHRoaXMucHJlbG9hZHMuZ2V0KGZvcm1Db25maWdJZCk7XG4gICAgaWYgKCFydW4pIHJldHVybiBmYWxzZTtcbiAgICBhd2FpdCBydW47XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hpbGQgb3B0aW9ucyBmb3IgYSBwYXJlbnQgc2VsZWN0aW9uLCBmcm9tIGNhY2hlIG9ubHkg4oCUIG5vIGxvYWQgaXMgdHJpZ2dlcmVkLlxuICAgKiBSZXR1cm5zIGBbXWAgd2hlbiB0aGUgZW50aXR5IGhhcyBub3QgYmVlbiBwcmVsb2FkZWQuXG4gICAqL1xuICBnZXRDYWNoZWRDaGlsZE9wdGlvbnMoXG4gICAgZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnLFxuICAgIHBhcmVudFZhbHVlOiB1bmtub3duLFxuICAgIGxhbmcgPSAnZW4nLFxuICApOiBSZWZlcmVuY2VPcHRpb25bXSB7XG4gICAgY29uc3QgY2ZnID0gZmllbGQuZW50aXR5UmVmZXJlbmNlO1xuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMucmVmZXJlbmNlcy5wZWVrKHRoaXMuZW50aXR5S2V5Rm9yKGZpZWxkKSwge1xuICAgICAgZmlsdGVyczogY2ZnPy5maWx0ZXJzLFxuICAgICAgZGlzcGxheUZpZWxkczogY2ZnPy5kaXNwbGF5RmllbGRzLFxuICAgICAgbGFuZyxcbiAgICB9KTtcbiAgICBpZiAoIWNhY2hlZCkgcmV0dXJuIFtdO1xuICAgIHJldHVybiBhcHBseUNhc2NhZGVGaWx0ZXIoY2FjaGVkLCBwYXJlbnRWYWx1ZSwgY2ZnLCBsYW5nKTtcbiAgfVxuXG4gIC8qKiBGb3JnZXQgdGhlIHByZWxvYWQgZm9yIG9uZSBjb25maWcuIFRoZSBvcHRpb24gY2FjaGUgaXRzZWxmIGlzIHVudG91Y2hlZC4gKi9cbiAgY2xlYXJDYWNoZShmb3JtQ29uZmlnSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucHJlbG9hZHMuZGVsZXRlKGZvcm1Db25maWdJZCk7XG4gIH1cblxuICAvKiogRXZlcnkgZW50aXR5LXJlZiBmaWVsZCBpbiB0aGUgY29uZmlnIHRoYXQgcGFydGljaXBhdGVzIGluIGEgY2FzY2FkZS4gKi9cbiAgcHJpdmF0ZSBjYXNjYWRlRmllbGRzKGNvbmZpZzogRW50aXR5Rm9ybUNvbmZpZyk6IE5lc3RlZEZpZWxkQ29uZmlnW10ge1xuICAgIGNvbnN0IGZvdW5kOiBOZXN0ZWRGaWVsZENvbmZpZ1tdID0gW107XG4gICAgY29uc3Qgd2Fsa0ZpZWxkcyA9IChmaWVsZHM6IE5lc3RlZEZpZWxkQ29uZmlnW10gfCB1bmRlZmluZWQpID0+IHtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2YgZmllbGRzID8/IFtdKSB7XG4gICAgICAgIGNvbnN0IGNmZyA9IGZpZWxkLmVudGl0eVJlZmVyZW5jZTtcbiAgICAgICAgaWYgKGNmZz8uZW5hYmxlZCAmJiAoY2ZnLnBhcmVudEZpZWxkIHx8IGNmZy5sb29rdXBQYXRoIHx8IGNmZy5sb29rdXBGaWx0ZXIpKSB7XG4gICAgICAgICAgZm91bmQucHVzaChmaWVsZCk7XG4gICAgICAgIH1cbiAgICAgICAgd2Fsa0ZpZWxkcyhmaWVsZC5jaGlsZHJlbik7XG4gICAgICB9XG4gICAgfTtcbiAgICBjb25zdCB3YWxrVGFicyA9ICh0YWJzOiBOZXN0ZWRUYWJDb25maWdbXSB8IHVuZGVmaW5lZCkgPT4ge1xuICAgICAgZm9yIChjb25zdCB0YWIgb2YgdGFicyA/PyBbXSkge1xuICAgICAgICB3YWxrRmllbGRzKHRhYi5maWVsZHMpO1xuICAgICAgICB3YWxrVGFicyh0YWIuY2hpbGRyZW4pO1xuICAgICAgfVxuICAgIH07XG4gICAgd2Fsa1RhYnMoY29uZmlnPy50YWJzKTtcbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -3,7 +3,7 @@ import { ENTITY_REF_REGISTRY } from '../tokens/injection-tokens';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
5
5
|
* EntityRefRegistryService — resolves entity-ref option loader functions.
|
|
6
|
-
*
|
|
6
|
+
* Entity-ref options come ONLY from this registry.
|
|
7
7
|
* Never pass loaders via @Input() on field components.
|
|
8
8
|
*
|
|
9
9
|
* Consumers register loaders via provideNgxDynamicEntity({ entityRefs: { clients: () => [...] } }).
|
|
@@ -28,4 +28,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
28
28
|
type: Injectable,
|
|
29
29
|
args: [{ providedIn: 'root' }]
|
|
30
30
|
}] });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LXJlZi1yZWdpc3RyeS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9lbnRpdHktcmVmLXJlZ2lzdHJ5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRWpFOzs7Ozs7O0dBT0c7QUFFSCxNQUFNLE9BQU8sd0JBQXdCO0lBQ2xCLFFBQVEsR0FDdkIsTUFBTSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksSUFBSSxHQUFHLEVBQWlDLENBQUM7SUFFOUY7OztPQUdHO0lBQ0gsT0FBTyxDQUFDLFNBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxHQUFHLENBQUMsU0FBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUN0QyxDQUFDO3dHQWRVLHdCQUF3Qjs0R0FBeEIsd0JBQXdCLGNBRFgsTUFBTTs7NEZBQ25CLHdCQUF3QjtrQkFEcEMsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgRW50aXR5UmVmZXJlbmNlTG9hZGVyIH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgRU5USVRZX1JFRl9SRUdJU1RSWSB9IGZyb20gJy4uL3Rva2Vucy9pbmplY3Rpb24tdG9rZW5zJztcblxuLyoqXG4gKiBFbnRpdHlSZWZSZWdpc3RyeVNlcnZpY2Ug4oCUIHJlc29sdmVzIGVudGl0eS1yZWYgb3B0aW9uIGxvYWRlciBmdW5jdGlvbnMuXG4gKiBFbnRpdHktcmVmIG9wdGlvbnMgY29tZSBPTkxZIGZyb20gdGhpcyByZWdpc3RyeS5cbiAqIE5ldmVyIHBhc3MgbG9hZGVycyB2aWEgQElucHV0KCkgb24gZmllbGQgY29tcG9uZW50cy5cbiAqXG4gKiBDb25zdW1lcnMgcmVnaXN0ZXIgbG9hZGVycyB2aWEgcHJvdmlkZU5neER5bmFtaWNFbnRpdHkoeyBlbnRpdHlSZWZzOiB7IGNsaWVudHM6ICgpID0+IFsuLi5dIH0gfSkuXG4gKiBFbnRpdHlSZWZGaWVsZENvbXBvbmVudCBpbmplY3RzIHRoaXMgc2VydmljZSBhbmQgY2FsbHMgcmVzb2x2ZShmaWVsZC5jb21wb25lbnQgPz8gZmllbGQuaWQpLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIEVudGl0eVJlZlJlZ2lzdHJ5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnaXN0cnkgPVxuICAgIGluamVjdChFTlRJVFlfUkVGX1JFR0lTVFJZLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IG5ldyBNYXA8c3RyaW5nLCBFbnRpdHlSZWZlcmVuY2VMb2FkZXI+KCk7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgb3B0aW9uIGxvYWRlciBmb3IgYW4gZW50aXR5IGtleS5cbiAgICogQHJldHVybnMgVGhlIGxvYWRlciwgb3IgbnVsbCBpZiBub25lIGlzIHJlZ2lzdGVyZWQuXG4gICAqL1xuICByZXNvbHZlKGVudGl0eUtleTogc3RyaW5nKTogRW50aXR5UmVmZXJlbmNlTG9hZGVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucmVnaXN0cnkuZ2V0KGVudGl0eUtleSkgPz8gbnVsbDtcbiAgfVxuXG4gIGhhcyhlbnRpdHlLZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlZ2lzdHJ5LmhhcyhlbnRpdHlLZXkpO1xuICB9XG59XG4iXX0=
|
|
@@ -217,7 +217,7 @@ const hostLastConfig = new WeakMap();
|
|
|
217
217
|
* Point a choice component's `options` signal at the right source (parity plan §6.3).
|
|
218
218
|
*
|
|
219
219
|
* Called from the `field` / `language` input setters of `dropdown`, `radio` and `multiSelect` —
|
|
220
|
-
* the wiring is theirs, the decision is the service's, which is what keeps the
|
|
220
|
+
* the wiring is theirs, the decision is the service's, which is what keeps the field
|
|
221
221
|
* five-input contract intact: options are never pushed in as a sixth input.
|
|
222
222
|
*
|
|
223
223
|
* Setters rather than `ngOnChanges` on purpose. `ngOnChanges` only fires for inputs Angular
|
|
@@ -243,4 +243,4 @@ export function refreshChoiceOptions(host, lookups) {
|
|
|
243
243
|
host.options.set(options);
|
|
244
244
|
});
|
|
245
245
|
}
|
|
246
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXJlZ2lzdHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvb2t1cC1yZWdpc3RyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQVd4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUU3RCw4RkFBOEY7QUFDOUYsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBRWhCOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQUNmLFFBQVEsR0FDdkIsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUE0QixDQUFDO0lBRXJGLDJDQUEyQztJQUMxQixPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFDL0QsZ0dBQWdHO0lBQy9FLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztJQUMvRCx5Q0FBeUM7SUFDeEIsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFxQyxDQUFDO0lBQ3pFLGdGQUFnRjtJQUMvRCxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFcEQsR0FBRyxDQUFDLFFBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBZ0IsRUFBRSxJQUFJLEdBQUcsSUFBSTtRQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUUxQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNyQyxJQUFJLE1BQU07WUFBRSxPQUFPLE1BQU0sQ0FBQztRQUUxQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxJQUFJLE9BQU87WUFBRSxPQUFPLE9BQU8sQ0FBQztRQUU1QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzQyxJQUFJLE1BQU0sS0FBSyxTQUFTO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFcEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ2hELE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzFDLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDL0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzdDLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBRUgseUZBQXlGO1FBQ3pGLHFGQUFxRjtRQUNyRixNQUFNLE9BQU8sR0FBRyxJQUFJO2FBQ2pCLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFzQixDQUFDO2FBQ25DLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRTVDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoQyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsNkVBQTZFO0lBQzdFLElBQUksQ0FBQyxRQUFnQixFQUFFLElBQUksR0FBRyxJQUFJO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLFFBQWdCLEVBQUUsSUFBSSxHQUFHLElBQUk7UUFDckMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxRQUFRLENBQUMsUUFBNEIsRUFBRSxLQUFjLEVBQUUsSUFBSSxHQUFHLElBQUk7UUFDaEUsSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLEVBQUU7WUFBRSxPQUFPLFNBQVMsQ0FBQztRQUN6RixLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDakUsSUFBSSxHQUFHO2dCQUFFLE9BQU8sR0FBRyxDQUFDO1FBQ3RCLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQsZ0ZBQWdGO0lBRWhGLHFFQUFxRTtJQUNyRSxZQUFZLENBQUMsS0FBb0M7UUFDL0MsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDO0lBQ3JELENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsS0FBb0MsRUFBRSxJQUFJLEdBQUcsSUFBSTtRQUMxRCxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxNQUFNO1lBQUUsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQsaUVBQWlFO0lBQ2pFLGNBQWMsQ0FBQyxLQUFvQyxFQUFFLElBQUksR0FBRyxJQUFJO1FBQzlELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BGLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFNLENBQUMsUUFBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNDLENBQUM7SUFFRCx1RUFBdUU7SUFDdkUsVUFBVSxDQUFDLFFBQWdCO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLEdBQUcsUUFBUSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ25DLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDN0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztvQkFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDO1FBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztnQkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCwrRUFBK0U7SUFFdkUsUUFBUSxDQUFDLFFBQWdCLEVBQUUsSUFBWTtRQUM3QyxPQUFPLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRU8sUUFBUSxDQUFDLFFBQWdCLEVBQUUsSUFBWSxFQUFFLElBQVk7UUFDM0QsT0FBTyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCx3RkFBd0Y7SUFDaEYsY0FBYyxDQUFDLFFBQWdCLEVBQUUsSUFBWSxFQUFFLE9BQXlCO1FBQzlFLEtBQUssTUFBTSxNQUFNLElBQUksT0FBTyxFQUFFLENBQUM7WUFDN0IsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzQyxJQUFJLENBQUMsT0FBTztnQkFBRSxTQUFTO1lBQ3ZCLEtBQUssTUFBTSxJQUFJLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN6QyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFLENBQUM7b0JBQzVDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFDaEUsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELDhEQUE4RDtJQUN0RCxjQUFjLENBQUMsS0FBYyxFQUFFLElBQVk7UUFDakQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM5QixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWdDLENBQUMsQ0FBQyxNQUFNLENBQ2xFLENBQUMsQ0FBQyxFQUFlLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FDdEQsQ0FBQztZQUNGLE1BQU0sUUFBUSxHQUFHLFlBQVksQ0FBQyxLQUErQixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JFLE9BQU8sUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDakQsQ0FBQztRQUNELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBRUQsZ0ZBQWdGO0lBRXhFLE1BQU0sQ0FBQyxNQUF3QixFQUFFLElBQVk7UUFDbkQsSUFBSSxNQUF3QixDQUFDO1FBQzdCLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxPQUFPLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFFLE1BQTJCLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDMUYsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixzRkFBc0Y7WUFDdEYsdUNBQXVDO1lBQ3ZDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFTyxTQUFTLENBQUMsTUFBd0I7UUFDeEMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUFFLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRCxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNoQyw0RUFBNEU7WUFDNUUsT0FBTyxJQUFJLE9BQU8sQ0FBdUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQzNELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDcEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxFQUFjLEVBQUUsRUFBRTtvQkFDaEMsSUFBSSxPQUFPO3dCQUFFLE9BQU87b0JBQ3BCLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQ2YsRUFBRSxFQUFFLENBQUM7Z0JBQ1AsQ0FBQyxDQUFDO2dCQUNGLE1BQU0sQ0FBQyxTQUFTLENBQUM7b0JBQ2YsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7b0JBQ2pELEtBQUssRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3ZDLHlFQUF5RTtvQkFDekUsUUFBUSxFQUFFLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7aUJBQzFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUNELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUF1QyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVPLGNBQWMsQ0FBQyxLQUFjO1FBQ25DLE9BQU8sQ0FDTCxPQUFPLEtBQUssS0FBSyxRQUFRO1lBQ3pCLEtBQUssS0FBSyxJQUFJO1lBQ2QsT0FBUSxLQUE0QyxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQzlFLENBQUM7SUFDSixDQUFDO3dHQTFNVSxxQkFBcUI7NEdBQXJCLHFCQUFxQixjQURSLE1BQU07OzRGQUNuQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQXFObEMsTUFBTSxjQUFjLEdBQUcsSUFBSSxPQUFPLEVBQWtFLENBQUM7QUFFckc7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxvQkFBb0IsQ0FBQyxJQUFzQixFQUFFLE9BQThCO0lBQ3pGLE1BQU0sSUFBSSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3JFLE9BQU87SUFDVCxDQUFDO0lBQ0QsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFFckUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFBRSxPQUFPO0lBRTlDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO0lBQ3RDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDM0IsS0FBSyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNwRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUk7WUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIHR5cGUgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtcbiAgRHJvcGRvd25PcHRpb24sXG4gIExvb2t1cExpc3RMb2FkZXIsXG4gIExvb2t1cExpc3RSZXN1bHQsXG4gIExvb2t1cExpc3RTb3VyY2UsXG4gIExvb2t1cExpc3RWYWx1ZSxcbiAgTmVzdGVkRmllbGRDb25maWcsXG4gIFJhd0xvb2t1cExpc3RWYWx1ZSxcbiAgU3Vic2NyaWJhYmxlLFxufSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XG5pbXBvcnQgeyBsb29rdXBWYWx1ZXNUb09wdGlvbnMsIG5vcm1hbGl6ZUxvb2t1cFZhbHVlcywgcmVzb2x2ZUxhYmVsIH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgTE9PS1VQX1JFR0lTVFJZIH0gZnJvbSAnLi4vdG9rZW5zL2luamVjdGlvbi10b2tlbnMnO1xuXG4vKiogQ2FjaGUta2V5IGZpZWxkIHNlcGFyYXRvci4gS2VwdCBvdXQgb2YgdGVtcGxhdGUgbGl0ZXJhbHMgc28gaXQgc3RheXMgdmlzaWJsZSBpbiBzb3VyY2UuICovXG5jb25zdCBTRVAgPSAnfCc7XG5cbi8qKlxuICogTG9va3VwUmVnaXN0cnlTZXJ2aWNlIOKAlCB0aGUgY2FjaGUgaW4gZnJvbnQgb2YgY29uc3VtZXItcmVnaXN0ZXJlZCBtYXN0ZXIgbGlzdHMuXG4gKlxuICogVGhyZWUgbGF5ZXJzLCBkZWxpYmVyYXRlbHkgdGhlIHNhbWUgc2hhcGUgYXMgYEVudGl0eVJlZmVyZW5jZVNlcnZpY2VgLCBiZWNhdXNlIHRoZSBwcm9ibGVtIGlzXG4gKiB0aGUgc2FtZTogb25lIGxpc3QgaXMgdHlwaWNhbGx5IHVzZWQgYnkgbWFueSBmaWVsZHMgYWNyb3NzIG1hbnkgZW50aXRpZXMuXG4gKiAgMS4gKipvcHRpb25zKiog4oCUIHJlc29sdmVkIGBEcm9wZG93bk9wdGlvbltdYCBwZXIgKGxpc3QgbmFtZSwgbGFuZykuXG4gKiAgMi4gKippbi1mbGlnaHQqKiDigJQgdGhlIHBlbmRpbmcgUHJvbWlzZSwgc28gTiBmaWVsZHMgb24gb25lIGxpc3QgdHJpZ2dlciBvbmUgbG9hZCwgbm90IE4uXG4gKiAgMy4gKipsYWJlbHMqKiDigJQgc3luY2hyb25vdXMgdmFsdWUg4oaSIHRleHQgKHBhcml0eSBwbGFuIMKnNi4yKS4gVGhpcyBpcyBub3QgYSBuaWNldHk6IHNpbmNlXG4gKiAgICAgYHZpZXdNb2RlYCBkZWZhdWx0cyB0byB0cnVlIGEgcmVjb3JkIG9wZW5zIHJlYWQtb25seSwgc28gcmVuZGVyaW5nIGEgc3RvcmVkIHZhbHVlIGFzXG4gKiAgICAgdGV4dCBpcyB0aGUgKmZpcnN0KiB0aGluZyBhIGBsaXN0TmFtZWAgZmllbGQgaGFzIHRvIGRvLiBBbiBhc3luYy1vbmx5IHJlZ2lzdHJ5IHdvdWxkXG4gKiAgICAgcGFpbnQgdGhlIHJhdyBzdG9yZWQgdmFsdWUgYW5kIHRoZW4gZmxpcCwgb24gZXZlcnkgcmVjb3JkIG9wZW4uXG4gKlxuICogQSBmYWlsZWQgbG9hZCByZWplY3RzIGFuZCBjYWNoZXMgbm90aGluZywgc28gb25lIHRyYW5zaWVudCBlcnJvciBkb2VzIG5vdCBzZXJ2ZSBhbiBlbXB0eVxuICogbGlzdCBmb3JldmVyIOKAlCB0aGUgc2FtZSBmaXggbWFkZSBmb3IgZW50aXR5IHJlZmVyZW5jZXMgaW4gcGhhc2UgNS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb29rdXBSZWdpc3RyeVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5ID1cbiAgICBpbmplY3QoTE9PS1VQX1JFR0lTVFJZLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IG5ldyBNYXA8c3RyaW5nLCBMb29rdXBMaXN0U291cmNlPigpO1xuXG4gIC8qKiBgbGlzdE5hbWV8bGFuZ2AgLT4gcmVzb2x2ZWQgb3B0aW9ucy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zID0gbmV3IE1hcDxzdHJpbmcsIERyb3Bkb3duT3B0aW9uW10+KCk7XG4gIC8qKiBgbGlzdE5hbWV8bGFuZ2AgLT4gbm9ybWFsaXNlZCB2YWx1ZXMsIHNvIGEgY29uc3VtZXIgY2FuIHJlYWNoIGBjb2RlYCAvIGBpc1N5c3RlbURlZmluZWRgLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlcyA9IG5ldyBNYXA8c3RyaW5nLCBMb29rdXBMaXN0VmFsdWVbXT4oKTtcbiAgLyoqIExvYWRzIGluIHByb2dyZXNzLCBrZXllZCBhcyBhYm92ZS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpbkZsaWdodCA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPERyb3Bkb3duT3B0aW9uW10+PigpO1xuICAvKiogYGxpc3ROYW1lfGxhbmd8dGV4dGAgLT4gZGlzcGxheSB0ZXh0LCBmb3IgdGhlIHN5bmNocm9ub3VzIHJlYWQtb25seSBwYXRoLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGxhYmVscyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgaGFzKGxpc3ROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5oYXMobGlzdE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGEgbmFtZWQgbGlzdCwgZnJvbSBjYWNoZSB3aGVuIHByZXNlbnQuXG4gICAqIENvbmN1cnJlbnQgY2FsbGVycyB3aXRoIHRoZSBzYW1lIGtleSBzaGFyZSBvbmUgbG9hZC5cbiAgICovXG4gIGFzeW5jIGxvYWQobGlzdE5hbWU6IHN0cmluZywgbGFuZyA9ICdlbicpOiBQcm9taXNlPERyb3Bkb3duT3B0aW9uW10+IHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmNhY2hlS2V5KGxpc3ROYW1lLCBsYW5nKTtcblxuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMub3B0aW9ucy5nZXQoa2V5KTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgcGVuZGluZyA9IHRoaXMuaW5GbGlnaHQuZ2V0KGtleSk7XG4gICAgaWYgKHBlbmRpbmcpIHJldHVybiBwZW5kaW5nO1xuXG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5yZWdpc3RyeS5nZXQobGlzdE5hbWUpO1xuICAgIGlmIChzb3VyY2UgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgbG9hZCA9IHRoaXMuaW52b2tlKHNvdXJjZSwgbGFuZykudGhlbihyYXcgPT4ge1xuICAgICAgY29uc3QgdmFsdWVzID0gbm9ybWFsaXplTG9va3VwVmFsdWVzKHJhdyk7XG4gICAgICBjb25zdCBvcHRpb25zID0gbG9va3VwVmFsdWVzVG9PcHRpb25zKHZhbHVlcyk7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoa2V5LCB2YWx1ZXMpO1xuICAgICAgdGhpcy5vcHRpb25zLnNldChrZXksIG9wdGlvbnMpO1xuICAgICAgdGhpcy5yZW1lbWJlckxhYmVscyhsaXN0TmFtZSwgbGFuZywgb3B0aW9ucyk7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9KTtcblxuICAgIC8vIE9ubHkgdGhlIGAudGhlbmAgYWJvdmUgd3JpdGVzIHRvIHRoZSBjYWNoZSwgYW5kIGEgcmVqZWN0aW9uIHNraXBzIGl0OiB0aGUgY2FsbGVyIHN0aWxsXG4gICAgLy8gZ2V0cyBhbiBlbXB0eSBsaXN0LCBidXQgdGhlIG5leHQgY2FsbCByZXRyaWVzIGluc3RlYWQgb2YgcmVhZGluZyBhIHBvaXNvbmVkIGVudHJ5LlxuICAgIGNvbnN0IGd1YXJkZWQgPSBsb2FkXG4gICAgICAuY2F0Y2goKCkgPT4gW10gYXMgRHJvcGRvd25PcHRpb25bXSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMuaW5GbGlnaHQuZGVsZXRlKGtleSkpO1xuXG4gICAgdGhpcy5pbkZsaWdodC5zZXQoa2V5LCBndWFyZGVkKTtcbiAgICByZXR1cm4gZ3VhcmRlZDtcbiAgfVxuXG4gIC8qKiBDYWNoZWQgb3B0aW9ucyB3aXRob3V0IHRyaWdnZXJpbmcgYSBsb2FkLiBgdW5kZWZpbmVkYCB3aGVuIG5vdCBsb2FkZWQuICovXG4gIHBlZWsobGlzdE5hbWU6IHN0cmluZywgbGFuZyA9ICdlbicpOiBEcm9wZG93bk9wdGlvbltdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCh0aGlzLmNhY2hlS2V5KGxpc3ROYW1lLCBsYW5nKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FjaGVkIGxpc3QgdmFsdWVzLCBjYXJyeWluZyBgX2lkYCwgYGNvZGVgLCBgaXNTeXN0ZW1EZWZpbmVkYCBhbmQgYGZyb21gLlxuICAgKiBUaGUgbGlicmFyeSBuZXZlciByZWFkcyB0aG9zZTsgdGhpcyBpcyB0aGUgc2VhbSBmb3IgYSBjb25zdW1lciB0aGF0IG5lZWRzIHRoZW0uXG4gICAqL1xuICB2YWx1ZXNGb3IobGlzdE5hbWU6IHN0cmluZywgbGFuZyA9ICdlbicpOiBMb29rdXBMaXN0VmFsdWVbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmdldCh0aGlzLmNhY2hlS2V5KGxpc3ROYW1lLCBsYW5nKSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheSB0ZXh0IGZvciBhIHN0b3JlZCB2YWx1ZSwgc3luY2hyb25vdXNseS4gYHVuZGVmaW5lZGAgd2hlbiB0aGUgbGlzdCBoYXMgbm90IGxvYWRlZFxuICAgKiBvciBob2xkcyBubyBtYXRjaGluZyB2YWx1ZSDigJQgdGhlIGNhbGxlciBrZWVwcyBpdHMgb3duIGZhbGxiYWNrLCB3aGljaCBpcyB0aGUgc3RvcmVkIHRleHQuXG4gICAqXG4gICAqIEV2ZXJ5IGxhbmd1YWdlIG9mIGFuIG9wdGlvbiBpcyBpbmRleGVkLCBzbyBhIHJlY29yZCBzYXZlZCB1bmRlciBvbmUgbGFuZ3VhZ2UgcmVuZGVycyBpblxuICAgKiBhbm90aGVyOiBhIHZhbHVlIHN0b3JlZCBhcyBgJ0FrdGl2J2AgcmVzb2x2ZXMgdG8gYCdBY3RpdmUnYCB1bmRlciBgbGFuZzogJ2VuJ2AuXG4gICAqL1xuICBsYWJlbEZvcihsaXN0TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLCB2YWx1ZTogdW5rbm93biwgbGFuZyA9ICdlbicpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghbGlzdE5hbWUgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCB0ZXh0IG9mIHRoaXMuY2FuZGlkYXRlVGV4dHModmFsdWUsIGxhbmcpKSB7XG4gICAgICBjb25zdCBoaXQgPSB0aGlzLmxhYmVscy5nZXQodGhpcy5sYWJlbEtleShsaXN0TmFtZSwgbGFuZywgdGV4dCkpO1xuICAgICAgaWYgKGhpdCkgcmV0dXJuIGhpdDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBGaWVsZC1sZXZlbCByZXNvbHV0aW9uIOKAlCBpbmxpbmUgb3B0aW9ucyB3aW4sIGVsc2UgYGxpc3ROYW1lYCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICAvKiogVHJ1ZSB3aGVuIHRoaXMgZmllbGQncyBvcHRpb25zIGhhdmUgdG8gY29tZSBmcm9tIHRoZSByZWdpc3RyeS4gKi9cbiAgbmVlZHNSZXNvbHZlKGZpZWxkOiBOZXN0ZWRGaWVsZENvbmZpZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWZpZWxkPy5saXN0TmFtZSAmJiAhZmllbGQub3B0aW9ucz8ubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25zIHRvIHJlbmRlciByaWdodCBub3csIHdpdGhvdXQgYXdhaXRpbmc6IGlubGluZSBvcHRpb25zLCBlbHNlIHdoYXRldmVyIHRoZVxuICAgKiByZWdpc3RyeSBhbHJlYWR5IGhvbGRzLiBFbXB0eSBvbiBhIGNvbGQgbWlzcyDigJQgcGFpciB3aXRoIGByZXNvbHZlT3B0aW9uc2AuXG4gICAqL1xuICBvcHRpb25zRm9yKGZpZWxkOiBOZXN0ZWRGaWVsZENvbmZpZyB8IHVuZGVmaW5lZCwgbGFuZyA9ICdlbicpOiBEcm9wZG93bk9wdGlvbltdIHtcbiAgICBpZiAoIWZpZWxkKSByZXR1cm4gW107XG4gICAgaWYgKGZpZWxkLm9wdGlvbnM/Lmxlbmd0aCkgcmV0dXJuIGZpZWxkLm9wdGlvbnM7XG4gICAgaWYgKCFmaWVsZC5saXN0TmFtZSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiB0aGlzLnBlZWsoZmllbGQubGlzdE5hbWUsIGxhbmcpID8/IFtdO1xuICB9XG5cbiAgLyoqIFRoZSBvcHRpb25zIGZvciBhIGZpZWxkLCBsb2FkaW5nIHRoZSBuYW1lZCBsaXN0IGlmIG5lZWRlZC4gKi9cbiAgcmVzb2x2ZU9wdGlvbnMoZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnIHwgdW5kZWZpbmVkLCBsYW5nID0gJ2VuJyk6IFByb21pc2U8RHJvcGRvd25PcHRpb25bXT4ge1xuICAgIGlmICghdGhpcy5uZWVkc1Jlc29sdmUoZmllbGQpKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMub3B0aW9uc0ZvcihmaWVsZCwgbGFuZykpO1xuICAgIHJldHVybiB0aGlzLmxvYWQoZmllbGQhLmxpc3ROYW1lISwgbGFuZyk7XG4gIH1cblxuICAvKiogRHJvcCBldmVyeXRoaW5nIGNhY2hlZCBmb3Igb25lIGxpc3QsIGxlYXZpbmcgb3RoZXIgbGlzdHMgaW50YWN0LiAqL1xuICBpbnZhbGlkYXRlKGxpc3ROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVmaXggPSBgJHtsaXN0TmFtZX0ke1NFUH1gO1xuICAgIGZvciAoY29uc3QgbWFwIG9mIFt0aGlzLm9wdGlvbnMsIHRoaXMudmFsdWVzLCB0aGlzLmluRmxpZ2h0XSkge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgWy4uLm1hcC5rZXlzKCldKSB7XG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChwcmVmaXgpKSBtYXAuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIFsuLi50aGlzLmxhYmVscy5rZXlzKCldKSB7XG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgocHJlZml4KSkgdGhpcy5sYWJlbHMuZGVsZXRlKGtleSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb25zLmNsZWFyKCk7XG4gICAgdGhpcy52YWx1ZXMuY2xlYXIoKTtcbiAgICB0aGlzLmluRmxpZ2h0LmNsZWFyKCk7XG4gICAgdGhpcy5sYWJlbHMuY2xlYXIoKTtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBJbnRlcm5hbHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcHJpdmF0ZSBjYWNoZUtleShsaXN0TmFtZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBbbGlzdE5hbWUsIGxhbmddLmpvaW4oU0VQKTtcbiAgfVxuXG4gIHByaXZhdGUgbGFiZWxLZXkobGlzdE5hbWU6IHN0cmluZywgbGFuZzogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBbbGlzdE5hbWUsIGxhbmcsIHRleHRdLmpvaW4oU0VQKTtcbiAgfVxuXG4gIC8qKiBJbmRleCBhbiBvcHRpb24gdW5kZXIgZXZlcnkgbGFuZ3VhZ2UgaXQgY2Fycmllcywgc28gYW55IHN0b3JlZCBzcGVsbGluZyBmaW5kcyBpdC4gKi9cbiAgcHJpdmF0ZSByZW1lbWJlckxhYmVscyhsaXN0TmFtZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcsIG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICBjb25zdCBkaXNwbGF5ID0gcmVzb2x2ZUxhYmVsKG9wdGlvbiwgbGFuZyk7XG4gICAgICBpZiAoIWRpc3BsYXkpIGNvbnRpbnVlO1xuICAgICAgZm9yIChjb25zdCB0ZXh0IG9mIE9iamVjdC52YWx1ZXMob3B0aW9uKSkge1xuICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdzdHJpbmcnICYmIHRleHQgIT09ICcnKSB7XG4gICAgICAgICAgdGhpcy5sYWJlbHMuc2V0KHRoaXMubGFiZWxLZXkobGlzdE5hbWUsIGxhbmcsIHRleHQpLCBkaXNwbGF5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgdGV4dHMgYSBzdG9yZWQgdmFsdWUgY291bGQgaGF2ZSBiZWVuIGluZGV4ZWQgdW5kZXIuICovXG4gIHByaXZhdGUgY2FuZGlkYXRlVGV4dHModmFsdWU6IHVua25vd24sIGxhbmc6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgdGV4dHMgPSBPYmplY3QudmFsdWVzKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5maWx0ZXIoXG4gICAgICAgICh2KTogdiBpcyBzdHJpbmcgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYgIT09ICcnLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZUxhYmVsKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGxhbmcpO1xuICAgICAgcmV0dXJuIHJlc29sdmVkID8gW3Jlc29sdmVkLCAuLi50ZXh0c10gOiB0ZXh0cztcbiAgICB9XG4gICAgcmV0dXJuIFtTdHJpbmcodmFsdWUpXTtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBTb3VyY2UgY29lcmNpb24gKHZhbHVlcyB8IGxvYWRlciwgYXJyYXkgfCBQcm9taXNlIHwgT2JzZXJ2YWJsZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcHJpdmF0ZSBpbnZva2Uoc291cmNlOiBMb29rdXBMaXN0U291cmNlLCBsYW5nOiBzdHJpbmcpOiBQcm9taXNlPFJhd0xvb2t1cExpc3RWYWx1ZVtdPiB7XG4gICAgbGV0IHJlc3VsdDogTG9va3VwTGlzdFJlc3VsdDtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gdHlwZW9mIHNvdXJjZSA9PT0gJ2Z1bmN0aW9uJyA/IChzb3VyY2UgYXMgTG9va3VwTGlzdExvYWRlcikoeyBsYW5nIH0pIDogc291cmNlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gUmVqZWN0IHJhdGhlciB0aGFuIHJlc29sdmUgZW1wdHk6IGBsb2FkYCBtdXN0IGJlIGFibGUgdG8gdGVsbCBmYWlsdXJlIGZyb20gYW4gZW1wdHlcbiAgICAgIC8vIGxpc3QsIG9yIGl0IHdvdWxkIGNhY2hlIHRoZSBmYWlsdXJlLlxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZShyZXN1bHQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1Byb21pc2UocmVzdWx0OiBMb29rdXBMaXN0UmVzdWx0KTogUHJvbWlzZTxSYXdMb29rdXBMaXN0VmFsdWVbXT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICBpZiAodGhpcy5pc1N1YnNjcmliYWJsZShyZXN1bHQpKSB7XG4gICAgICAvLyBGaXJzdCBlbWlzc2lvbiB3aW5zLCBzbyBhIHN0cmVhbSB0aGF0IHN0YXlzIG9wZW4gc3RpbGwgcmVzb2x2ZXMgdGhlIGxvYWQuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8UmF3TG9va3VwTGlzdFZhbHVlW10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IHNldHRsZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc2V0dGxlID0gKGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgICAgaWYgKHNldHRsZWQpIHJldHVybjtcbiAgICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICBmbigpO1xuICAgICAgICB9O1xuICAgICAgICByZXN1bHQuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiB2YWx1ZSA9PiBzZXR0bGUoKCkgPT4gcmVzb2x2ZSh2YWx1ZSA/PyBbXSkpLFxuICAgICAgICAgIGVycm9yOiBlcnIgPT4gc2V0dGxlKCgpID0+IHJlamVjdChlcnIpKSxcbiAgICAgICAgICAvLyBDb21wbGV0aW5nIHdpdGhvdXQgZW1pdHRpbmcgaXMgYSBsZWdpdGltYXRlIGVtcHR5IGxpc3QsIGFuZCBpcyBjYWNoZWQuXG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHNldHRsZSgoKSA9PiByZXNvbHZlKFtdKSksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0IGFzIFByb21pc2U8UmF3TG9va3VwTGlzdFZhbHVlW10+KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTdWJzY3JpYmFibGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBTdWJzY3JpYmFibGU8UmF3TG9va3VwTGlzdFZhbHVlW10+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiAodmFsdWUgYXMgU3Vic2NyaWJhYmxlPFJhd0xvb2t1cExpc3RWYWx1ZVtdPikuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nXG4gICAgKTtcbiAgfVxufVxuXG4vKiogQSBjaG9pY2UgZmllbGQgY29tcG9uZW50LCBhcyBmYXIgYXMgb3B0aW9uIHJlc29sdXRpb24gaXMgY29uY2VybmVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaG9pY2VPcHRpb25Ib3N0IHtcbiAgcmVhZG9ubHkgZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBsYW5ndWFnZTogc3RyaW5nO1xuICByZWFkb25seSBvcHRpb25zOiBXcml0YWJsZVNpZ25hbDxEcm9wZG93bk9wdGlvbltdPjtcbn1cblxuY29uc3QgaG9zdExhc3RDb25maWcgPSBuZXcgV2Vha01hcDxDaG9pY2VPcHRpb25Ib3N0LCB7IGZpZWxkPzogTmVzdGVkRmllbGRDb25maWc7IGxhbmc/OiBzdHJpbmcgfT4oKTtcblxuLyoqXG4gKiBQb2ludCBhIGNob2ljZSBjb21wb25lbnQncyBgb3B0aW9uc2Agc2lnbmFsIGF0IHRoZSByaWdodCBzb3VyY2UgKHBhcml0eSBwbGFuIMKnNi4zKS5cbiAqXG4gKiBDYWxsZWQgZnJvbSB0aGUgYGZpZWxkYCAvIGBsYW5ndWFnZWAgaW5wdXQgc2V0dGVycyBvZiBgZHJvcGRvd25gLCBgcmFkaW9gIGFuZCBgbXVsdGlTZWxlY3RgIOKAlFxuICogdGhlIHdpcmluZyBpcyB0aGVpcnMsIHRoZSBkZWNpc2lvbiBpcyB0aGUgc2VydmljZSdzLCB3aGljaCBpcyB3aGF0IGtlZXBzIHRoZSBBRFItMDA4XG4gKiBmaXZlLWlucHV0IGNvbnRyYWN0IGludGFjdDogb3B0aW9ucyBhcmUgbmV2ZXIgcHVzaGVkIGluIGFzIGEgc2l4dGggaW5wdXQuXG4gKlxuICogU2V0dGVycyByYXRoZXIgdGhhbiBgbmdPbkNoYW5nZXNgIG9uIHB1cnBvc2UuIGBuZ09uQ2hhbmdlc2Agb25seSBmaXJlcyBmb3IgaW5wdXRzIEFuZ3VsYXJcbiAqIGl0c2VsZiBzZXRzLCBzbyBhIGNvbXBvbmVudCB3aG9zZSBgZmllbGRgIGlzIGFzc2lnbmVkIGRpcmVjdGx5IOKAlCB3aGljaCB0aGUgZmllbGQgc3BlY3MgZG8sXG4gKiBhbmQgYW55IGNvbnN1bWVyIGhvbGRpbmcgYSBgQ29tcG9uZW50UmVmYCBtYXkgZG8g4oCUIHdvdWxkIHJlbmRlciBubyBvcHRpb25zIGF0IGFsbC5cbiAqXG4gKiBQYWludHMgc3luY2hyb25vdXNseSBmaXJzdCAoaW5saW5lIG9wdGlvbnMsIG9yIGEgd2FybSBsaXN0KSwgdGhlbiBmaWxscyBpbiB3aGVuIGEgY29sZCBsaXN0XG4gKiBsYW5kcy4gVGhlIGxhdGUgcmVzdWx0IGlzIGRyb3BwZWQgaWYgdGhlIGZpZWxkIG9yIGxhbmd1YWdlIGNoYW5nZWQgd2hpbGUgaXQgd2FzIGluIGZsaWdodC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlZnJlc2hDaG9pY2VPcHRpb25zKGhvc3Q6IENob2ljZU9wdGlvbkhvc3QsIGxvb2t1cHM6IExvb2t1cFJlZ2lzdHJ5U2VydmljZSk6IHZvaWQge1xuICBjb25zdCBsYXN0ID0gaG9zdExhc3RDb25maWcuZ2V0KGhvc3QpO1xuICBpZiAobGFzdCAmJiBsYXN0LmZpZWxkID09PSBob3N0LmZpZWxkICYmIGxhc3QubGFuZyA9PT0gaG9zdC5sYW5ndWFnZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBob3N0TGFzdENvbmZpZy5zZXQoaG9zdCwgeyBmaWVsZDogaG9zdC5maWVsZCwgbGFuZzogaG9zdC5sYW5ndWFnZSB9KTtcblxuICBob3N0Lm9wdGlvbnMuc2V0KGxvb2t1cHMub3B0aW9uc0Zvcihob3N0LmZpZWxkLCBob3N0Lmxhbmd1YWdlKSk7XG4gIGlmICghbG9va3Vwcy5uZWVkc1Jlc29sdmUoaG9zdC5maWVsZCkpIHJldHVybjtcblxuICBjb25zdCBsaXN0TmFtZSA9IGhvc3QuZmllbGQ/Lmxpc3ROYW1lO1xuICBjb25zdCBsYW5nID0gaG9zdC5sYW5ndWFnZTtcbiAgdm9pZCBsb29rdXBzLnJlc29sdmVPcHRpb25zKGhvc3QuZmllbGQsIGhvc3QubGFuZ3VhZ2UpLnRoZW4ob3B0aW9ucyA9PiB7XG4gICAgaWYgKGhvc3QuZmllbGQ/Lmxpc3ROYW1lID09PSBsaXN0TmFtZSAmJiBob3N0Lmxhbmd1YWdlID09PSBsYW5nKSBob3N0Lm9wdGlvbnMuc2V0KG9wdGlvbnMpO1xuICB9KTtcbn1cbiJdfQ==
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXJlZ2lzdHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2xvb2t1cC1yZWdpc3RyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQVd4RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUU3RCw4RkFBOEY7QUFDOUYsTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDO0FBRWhCOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQUNmLFFBQVEsR0FDdkIsTUFBTSxDQUFDLGVBQWUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxJQUFJLElBQUksR0FBRyxFQUE0QixDQUFDO0lBRXJGLDJDQUEyQztJQUMxQixPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQTRCLENBQUM7SUFDL0QsZ0dBQWdHO0lBQy9FLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBNkIsQ0FBQztJQUMvRCx5Q0FBeUM7SUFDeEIsUUFBUSxHQUFHLElBQUksR0FBRyxFQUFxQyxDQUFDO0lBQ3pFLGdGQUFnRjtJQUMvRCxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFFcEQsR0FBRyxDQUFDLFFBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsUUFBZ0IsRUFBRSxJQUFJLEdBQUcsSUFBSTtRQUN0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEs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QUFPO0lBRTlDLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDO0lBQ3RDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDM0IsS0FBSyxPQUFPLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNwRSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUk7WUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBpbmplY3QsIHR5cGUgV3JpdGFibGVTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtcbiAgRHJvcGRvd25PcHRpb24sXG4gIExvb2t1cExpc3RMb2FkZXIsXG4gIExvb2t1cExpc3RSZXN1bHQsXG4gIExvb2t1cExpc3RTb3VyY2UsXG4gIExvb2t1cExpc3RWYWx1ZSxcbiAgTmVzdGVkRmllbGRDb25maWcsXG4gIFJhd0xvb2t1cExpc3RWYWx1ZSxcbiAgU3Vic2NyaWJhYmxlLFxufSBmcm9tICdAZHluYW1pYy1lbnRpdHkvY29yZSc7XG5pbXBvcnQgeyBsb29rdXBWYWx1ZXNUb09wdGlvbnMsIG5vcm1hbGl6ZUxvb2t1cFZhbHVlcywgcmVzb2x2ZUxhYmVsIH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgTE9PS1VQX1JFR0lTVFJZIH0gZnJvbSAnLi4vdG9rZW5zL2luamVjdGlvbi10b2tlbnMnO1xuXG4vKiogQ2FjaGUta2V5IGZpZWxkIHNlcGFyYXRvci4gS2VwdCBvdXQgb2YgdGVtcGxhdGUgbGl0ZXJhbHMgc28gaXQgc3RheXMgdmlzaWJsZSBpbiBzb3VyY2UuICovXG5jb25zdCBTRVAgPSAnfCc7XG5cbi8qKlxuICogTG9va3VwUmVnaXN0cnlTZXJ2aWNlIOKAlCB0aGUgY2FjaGUgaW4gZnJvbnQgb2YgY29uc3VtZXItcmVnaXN0ZXJlZCBtYXN0ZXIgbGlzdHMuXG4gKlxuICogVGhyZWUgbGF5ZXJzLCBkZWxpYmVyYXRlbHkgdGhlIHNhbWUgc2hhcGUgYXMgYEVudGl0eVJlZmVyZW5jZVNlcnZpY2VgLCBiZWNhdXNlIHRoZSBwcm9ibGVtIGlzXG4gKiB0aGUgc2FtZTogb25lIGxpc3QgaXMgdHlwaWNhbGx5IHVzZWQgYnkgbWFueSBmaWVsZHMgYWNyb3NzIG1hbnkgZW50aXRpZXMuXG4gKiAgMS4gKipvcHRpb25zKiog4oCUIHJlc29sdmVkIGBEcm9wZG93bk9wdGlvbltdYCBwZXIgKGxpc3QgbmFtZSwgbGFuZykuXG4gKiAgMi4gKippbi1mbGlnaHQqKiDigJQgdGhlIHBlbmRpbmcgUHJvbWlzZSwgc28gTiBmaWVsZHMgb24gb25lIGxpc3QgdHJpZ2dlciBvbmUgbG9hZCwgbm90IE4uXG4gKiAgMy4gKipsYWJlbHMqKiDigJQgc3luY2hyb25vdXMgdmFsdWUg4oaSIHRleHQgKHBhcml0eSBwbGFuIMKnNi4yKS4gVGhpcyBpcyBub3QgYSBuaWNldHk6IHNpbmNlXG4gKiAgICAgYHZpZXdNb2RlYCBkZWZhdWx0cyB0byB0cnVlIGEgcmVjb3JkIG9wZW5zIHJlYWQtb25seSwgc28gcmVuZGVyaW5nIGEgc3RvcmVkIHZhbHVlIGFzXG4gKiAgICAgdGV4dCBpcyB0aGUgKmZpcnN0KiB0aGluZyBhIGBsaXN0TmFtZWAgZmllbGQgaGFzIHRvIGRvLiBBbiBhc3luYy1vbmx5IHJlZ2lzdHJ5IHdvdWxkXG4gKiAgICAgcGFpbnQgdGhlIHJhdyBzdG9yZWQgdmFsdWUgYW5kIHRoZW4gZmxpcCwgb24gZXZlcnkgcmVjb3JkIG9wZW4uXG4gKlxuICogQSBmYWlsZWQgbG9hZCByZWplY3RzIGFuZCBjYWNoZXMgbm90aGluZywgc28gb25lIHRyYW5zaWVudCBlcnJvciBkb2VzIG5vdCBzZXJ2ZSBhbiBlbXB0eVxuICogbGlzdCBmb3JldmVyIOKAlCB0aGUgc2FtZSBmaXggbWFkZSBmb3IgZW50aXR5IHJlZmVyZW5jZXMgaW4gcGhhc2UgNS5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBMb29rdXBSZWdpc3RyeVNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lzdHJ5ID1cbiAgICBpbmplY3QoTE9PS1VQX1JFR0lTVFJZLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IG5ldyBNYXA8c3RyaW5nLCBMb29rdXBMaXN0U291cmNlPigpO1xuXG4gIC8qKiBgbGlzdE5hbWV8bGFuZ2AgLT4gcmVzb2x2ZWQgb3B0aW9ucy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvcHRpb25zID0gbmV3IE1hcDxzdHJpbmcsIERyb3Bkb3duT3B0aW9uW10+KCk7XG4gIC8qKiBgbGlzdE5hbWV8bGFuZ2AgLT4gbm9ybWFsaXNlZCB2YWx1ZXMsIHNvIGEgY29uc3VtZXIgY2FuIHJlYWNoIGBjb2RlYCAvIGBpc1N5c3RlbURlZmluZWRgLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHZhbHVlcyA9IG5ldyBNYXA8c3RyaW5nLCBMb29rdXBMaXN0VmFsdWVbXT4oKTtcbiAgLyoqIExvYWRzIGluIHByb2dyZXNzLCBrZXllZCBhcyBhYm92ZS4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBpbkZsaWdodCA9IG5ldyBNYXA8c3RyaW5nLCBQcm9taXNlPERyb3Bkb3duT3B0aW9uW10+PigpO1xuICAvKiogYGxpc3ROYW1lfGxhbmd8dGV4dGAgLT4gZGlzcGxheSB0ZXh0LCBmb3IgdGhlIHN5bmNocm9ub3VzIHJlYWQtb25seSBwYXRoLiAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGxhYmVscyA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG5cbiAgaGFzKGxpc3ROYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyeS5oYXMobGlzdE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIGEgbmFtZWQgbGlzdCwgZnJvbSBjYWNoZSB3aGVuIHByZXNlbnQuXG4gICAqIENvbmN1cnJlbnQgY2FsbGVycyB3aXRoIHRoZSBzYW1lIGtleSBzaGFyZSBvbmUgbG9hZC5cbiAgICovXG4gIGFzeW5jIGxvYWQobGlzdE5hbWU6IHN0cmluZywgbGFuZyA9ICdlbicpOiBQcm9taXNlPERyb3Bkb3duT3B0aW9uW10+IHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmNhY2hlS2V5KGxpc3ROYW1lLCBsYW5nKTtcblxuICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMub3B0aW9ucy5nZXQoa2V5KTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuXG4gICAgY29uc3QgcGVuZGluZyA9IHRoaXMuaW5GbGlnaHQuZ2V0KGtleSk7XG4gICAgaWYgKHBlbmRpbmcpIHJldHVybiBwZW5kaW5nO1xuXG4gICAgY29uc3Qgc291cmNlID0gdGhpcy5yZWdpc3RyeS5nZXQobGlzdE5hbWUpO1xuICAgIGlmIChzb3VyY2UgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3QgbG9hZCA9IHRoaXMuaW52b2tlKHNvdXJjZSwgbGFuZykudGhlbihyYXcgPT4ge1xuICAgICAgY29uc3QgdmFsdWVzID0gbm9ybWFsaXplTG9va3VwVmFsdWVzKHJhdyk7XG4gICAgICBjb25zdCBvcHRpb25zID0gbG9va3VwVmFsdWVzVG9PcHRpb25zKHZhbHVlcyk7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoa2V5LCB2YWx1ZXMpO1xuICAgICAgdGhpcy5vcHRpb25zLnNldChrZXksIG9wdGlvbnMpO1xuICAgICAgdGhpcy5yZW1lbWJlckxhYmVscyhsaXN0TmFtZSwgbGFuZywgb3B0aW9ucyk7XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9KTtcblxuICAgIC8vIE9ubHkgdGhlIGAudGhlbmAgYWJvdmUgd3JpdGVzIHRvIHRoZSBjYWNoZSwgYW5kIGEgcmVqZWN0aW9uIHNraXBzIGl0OiB0aGUgY2FsbGVyIHN0aWxsXG4gICAgLy8gZ2V0cyBhbiBlbXB0eSBsaXN0LCBidXQgdGhlIG5leHQgY2FsbCByZXRyaWVzIGluc3RlYWQgb2YgcmVhZGluZyBhIHBvaXNvbmVkIGVudHJ5LlxuICAgIGNvbnN0IGd1YXJkZWQgPSBsb2FkXG4gICAgICAuY2F0Y2goKCkgPT4gW10gYXMgRHJvcGRvd25PcHRpb25bXSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHRoaXMuaW5GbGlnaHQuZGVsZXRlKGtleSkpO1xuXG4gICAgdGhpcy5pbkZsaWdodC5zZXQoa2V5LCBndWFyZGVkKTtcbiAgICByZXR1cm4gZ3VhcmRlZDtcbiAgfVxuXG4gIC8qKiBDYWNoZWQgb3B0aW9ucyB3aXRob3V0IHRyaWdnZXJpbmcgYSBsb2FkLiBgdW5kZWZpbmVkYCB3aGVuIG5vdCBsb2FkZWQuICovXG4gIHBlZWsobGlzdE5hbWU6IHN0cmluZywgbGFuZyA9ICdlbicpOiBEcm9wZG93bk9wdGlvbltdIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCh0aGlzLmNhY2hlS2V5KGxpc3ROYW1lLCBsYW5nKSk7XG4gIH1cblxuICAvKipcbiAgICogQ2FjaGVkIGxpc3QgdmFsdWVzLCBjYXJyeWluZyBgX2lkYCwgYGNvZGVgLCBgaXNTeXN0ZW1EZWZpbmVkYCBhbmQgYGZyb21gLlxuICAgKiBUaGUgbGlicmFyeSBuZXZlciByZWFkcyB0aG9zZTsgdGhpcyBpcyB0aGUgc2VhbSBmb3IgYSBjb25zdW1lciB0aGF0IG5lZWRzIHRoZW0uXG4gICAqL1xuICB2YWx1ZXNGb3IobGlzdE5hbWU6IHN0cmluZywgbGFuZyA9ICdlbicpOiBMb29rdXBMaXN0VmFsdWVbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWVzLmdldCh0aGlzLmNhY2hlS2V5KGxpc3ROYW1lLCBsYW5nKSk7XG4gIH1cblxuICAvKipcbiAgICogRGlzcGxheSB0ZXh0IGZvciBhIHN0b3JlZCB2YWx1ZSwgc3luY2hyb25vdXNseS4gYHVuZGVmaW5lZGAgd2hlbiB0aGUgbGlzdCBoYXMgbm90IGxvYWRlZFxuICAgKiBvciBob2xkcyBubyBtYXRjaGluZyB2YWx1ZSDigJQgdGhlIGNhbGxlciBrZWVwcyBpdHMgb3duIGZhbGxiYWNrLCB3aGljaCBpcyB0aGUgc3RvcmVkIHRleHQuXG4gICAqXG4gICAqIEV2ZXJ5IGxhbmd1YWdlIG9mIGFuIG9wdGlvbiBpcyBpbmRleGVkLCBzbyBhIHJlY29yZCBzYXZlZCB1bmRlciBvbmUgbGFuZ3VhZ2UgcmVuZGVycyBpblxuICAgKiBhbm90aGVyOiBhIHZhbHVlIHN0b3JlZCBhcyBgJ0FrdGl2J2AgcmVzb2x2ZXMgdG8gYCdBY3RpdmUnYCB1bmRlciBgbGFuZzogJ2VuJ2AuXG4gICAqL1xuICBsYWJlbEZvcihsaXN0TmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLCB2YWx1ZTogdW5rbm93biwgbGFuZyA9ICdlbicpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGlmICghbGlzdE5hbWUgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgZm9yIChjb25zdCB0ZXh0IG9mIHRoaXMuY2FuZGlkYXRlVGV4dHModmFsdWUsIGxhbmcpKSB7XG4gICAgICBjb25zdCBoaXQgPSB0aGlzLmxhYmVscy5nZXQodGhpcy5sYWJlbEtleShsaXN0TmFtZSwgbGFuZywgdGV4dCkpO1xuICAgICAgaWYgKGhpdCkgcmV0dXJuIGhpdDtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBGaWVsZC1sZXZlbCByZXNvbHV0aW9uIOKAlCBpbmxpbmUgb3B0aW9ucyB3aW4sIGVsc2UgYGxpc3ROYW1lYCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIBcblxuICAvKiogVHJ1ZSB3aGVuIHRoaXMgZmllbGQncyBvcHRpb25zIGhhdmUgdG8gY29tZSBmcm9tIHRoZSByZWdpc3RyeS4gKi9cbiAgbmVlZHNSZXNvbHZlKGZpZWxkOiBOZXN0ZWRGaWVsZENvbmZpZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWZpZWxkPy5saXN0TmFtZSAmJiAhZmllbGQub3B0aW9ucz8ubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25zIHRvIHJlbmRlciByaWdodCBub3csIHdpdGhvdXQgYXdhaXRpbmc6IGlubGluZSBvcHRpb25zLCBlbHNlIHdoYXRldmVyIHRoZVxuICAgKiByZWdpc3RyeSBhbHJlYWR5IGhvbGRzLiBFbXB0eSBvbiBhIGNvbGQgbWlzcyDigJQgcGFpciB3aXRoIGByZXNvbHZlT3B0aW9uc2AuXG4gICAqL1xuICBvcHRpb25zRm9yKGZpZWxkOiBOZXN0ZWRGaWVsZENvbmZpZyB8IHVuZGVmaW5lZCwgbGFuZyA9ICdlbicpOiBEcm9wZG93bk9wdGlvbltdIHtcbiAgICBpZiAoIWZpZWxkKSByZXR1cm4gW107XG4gICAgaWYgKGZpZWxkLm9wdGlvbnM/Lmxlbmd0aCkgcmV0dXJuIGZpZWxkLm9wdGlvbnM7XG4gICAgaWYgKCFmaWVsZC5saXN0TmFtZSkgcmV0dXJuIFtdO1xuICAgIHJldHVybiB0aGlzLnBlZWsoZmllbGQubGlzdE5hbWUsIGxhbmcpID8/IFtdO1xuICB9XG5cbiAgLyoqIFRoZSBvcHRpb25zIGZvciBhIGZpZWxkLCBsb2FkaW5nIHRoZSBuYW1lZCBsaXN0IGlmIG5lZWRlZC4gKi9cbiAgcmVzb2x2ZU9wdGlvbnMoZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnIHwgdW5kZWZpbmVkLCBsYW5nID0gJ2VuJyk6IFByb21pc2U8RHJvcGRvd25PcHRpb25bXT4ge1xuICAgIGlmICghdGhpcy5uZWVkc1Jlc29sdmUoZmllbGQpKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMub3B0aW9uc0ZvcihmaWVsZCwgbGFuZykpO1xuICAgIHJldHVybiB0aGlzLmxvYWQoZmllbGQhLmxpc3ROYW1lISwgbGFuZyk7XG4gIH1cblxuICAvKiogRHJvcCBldmVyeXRoaW5nIGNhY2hlZCBmb3Igb25lIGxpc3QsIGxlYXZpbmcgb3RoZXIgbGlzdHMgaW50YWN0LiAqL1xuICBpbnZhbGlkYXRlKGxpc3ROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVmaXggPSBgJHtsaXN0TmFtZX0ke1NFUH1gO1xuICAgIGZvciAoY29uc3QgbWFwIG9mIFt0aGlzLm9wdGlvbnMsIHRoaXMudmFsdWVzLCB0aGlzLmluRmxpZ2h0XSkge1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgWy4uLm1hcC5rZXlzKCldKSB7XG4gICAgICAgIGlmIChrZXkuc3RhcnRzV2l0aChwcmVmaXgpKSBtYXAuZGVsZXRlKGtleSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIFsuLi50aGlzLmxhYmVscy5rZXlzKCldKSB7XG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgocHJlZml4KSkgdGhpcy5sYWJlbHMuZGVsZXRlKGtleSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXIoKTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb25zLmNsZWFyKCk7XG4gICAgdGhpcy52YWx1ZXMuY2xlYXIoKTtcbiAgICB0aGlzLmluRmxpZ2h0LmNsZWFyKCk7XG4gICAgdGhpcy5sYWJlbHMuY2xlYXIoKTtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBJbnRlcm5hbHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcHJpdmF0ZSBjYWNoZUtleShsaXN0TmFtZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBbbGlzdE5hbWUsIGxhbmddLmpvaW4oU0VQKTtcbiAgfVxuXG4gIHByaXZhdGUgbGFiZWxLZXkobGlzdE5hbWU6IHN0cmluZywgbGFuZzogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBbbGlzdE5hbWUsIGxhbmcsIHRleHRdLmpvaW4oU0VQKTtcbiAgfVxuXG4gIC8qKiBJbmRleCBhbiBvcHRpb24gdW5kZXIgZXZlcnkgbGFuZ3VhZ2UgaXQgY2Fycmllcywgc28gYW55IHN0b3JlZCBzcGVsbGluZyBmaW5kcyBpdC4gKi9cbiAgcHJpdmF0ZSByZW1lbWJlckxhYmVscyhsaXN0TmFtZTogc3RyaW5nLCBsYW5nOiBzdHJpbmcsIG9wdGlvbnM6IERyb3Bkb3duT3B0aW9uW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICBjb25zdCBkaXNwbGF5ID0gcmVzb2x2ZUxhYmVsKG9wdGlvbiwgbGFuZyk7XG4gICAgICBpZiAoIWRpc3BsYXkpIGNvbnRpbnVlO1xuICAgICAgZm9yIChjb25zdCB0ZXh0IG9mIE9iamVjdC52YWx1ZXMob3B0aW9uKSkge1xuICAgICAgICBpZiAodHlwZW9mIHRleHQgPT09ICdzdHJpbmcnICYmIHRleHQgIT09ICcnKSB7XG4gICAgICAgICAgdGhpcy5sYWJlbHMuc2V0KHRoaXMubGFiZWxLZXkobGlzdE5hbWUsIGxhbmcsIHRleHQpLCBkaXNwbGF5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBUaGUgdGV4dHMgYSBzdG9yZWQgdmFsdWUgY291bGQgaGF2ZSBiZWVuIGluZGV4ZWQgdW5kZXIuICovXG4gIHByaXZhdGUgY2FuZGlkYXRlVGV4dHModmFsdWU6IHVua25vd24sIGxhbmc6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgY29uc3QgdGV4dHMgPSBPYmplY3QudmFsdWVzKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KS5maWx0ZXIoXG4gICAgICAgICh2KTogdiBpcyBzdHJpbmcgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIHYgIT09ICcnLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHJlc29sdmVkID0gcmVzb2x2ZUxhYmVsKHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGxhbmcpO1xuICAgICAgcmV0dXJuIHJlc29sdmVkID8gW3Jlc29sdmVkLCAuLi50ZXh0c10gOiB0ZXh0cztcbiAgICB9XG4gICAgcmV0dXJuIFtTdHJpbmcodmFsdWUpXTtcbiAgfVxuXG4gIC8vIOKUgOKUgOKUgCBTb3VyY2UgY29lcmNpb24gKHZhbHVlcyB8IGxvYWRlciwgYXJyYXkgfCBQcm9taXNlIHwgT2JzZXJ2YWJsZSkg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAXG5cbiAgcHJpdmF0ZSBpbnZva2Uoc291cmNlOiBMb29rdXBMaXN0U291cmNlLCBsYW5nOiBzdHJpbmcpOiBQcm9taXNlPFJhd0xvb2t1cExpc3RWYWx1ZVtdPiB7XG4gICAgbGV0IHJlc3VsdDogTG9va3VwTGlzdFJlc3VsdDtcbiAgICB0cnkge1xuICAgICAgcmVzdWx0ID0gdHlwZW9mIHNvdXJjZSA9PT0gJ2Z1bmN0aW9uJyA/IChzb3VyY2UgYXMgTG9va3VwTGlzdExvYWRlcikoeyBsYW5nIH0pIDogc291cmNlO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gUmVqZWN0IHJhdGhlciB0aGFuIHJlc29sdmUgZW1wdHk6IGBsb2FkYCBtdXN0IGJlIGFibGUgdG8gdGVsbCBmYWlsdXJlIGZyb20gYW4gZW1wdHlcbiAgICAgIC8vIGxpc3QsIG9yIGl0IHdvdWxkIGNhY2hlIHRoZSBmYWlsdXJlLlxuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KGVycik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnRvUHJvbWlzZShyZXN1bHQpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1Byb21pc2UocmVzdWx0OiBMb29rdXBMaXN0UmVzdWx0KTogUHJvbWlzZTxSYXdMb29rdXBMaXN0VmFsdWVbXT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdCkpIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcbiAgICBpZiAodGhpcy5pc1N1YnNjcmliYWJsZShyZXN1bHQpKSB7XG4gICAgICAvLyBGaXJzdCBlbWlzc2lvbiB3aW5zLCBzbyBhIHN0cmVhbSB0aGF0IHN0YXlzIG9wZW4gc3RpbGwgcmVzb2x2ZXMgdGhlIGxvYWQuXG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8UmF3TG9va3VwTGlzdFZhbHVlW10+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgbGV0IHNldHRsZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3Qgc2V0dGxlID0gKGZuOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgICAgICAgaWYgKHNldHRsZWQpIHJldHVybjtcbiAgICAgICAgICBzZXR0bGVkID0gdHJ1ZTtcbiAgICAgICAgICBmbigpO1xuICAgICAgICB9O1xuICAgICAgICByZXN1bHQuc3Vic2NyaWJlKHtcbiAgICAgICAgICBuZXh0OiB2YWx1ZSA9PiBzZXR0bGUoKCkgPT4gcmVzb2x2ZSh2YWx1ZSA/PyBbXSkpLFxuICAgICAgICAgIGVycm9yOiBlcnIgPT4gc2V0dGxlKCgpID0+IHJlamVjdChlcnIpKSxcbiAgICAgICAgICAvLyBDb21wbGV0aW5nIHdpdGhvdXQgZW1pdHRpbmcgaXMgYSBsZWdpdGltYXRlIGVtcHR5IGxpc3QsIGFuZCBpcyBjYWNoZWQuXG4gICAgICAgICAgY29tcGxldGU6ICgpID0+IHNldHRsZSgoKSA9PiByZXNvbHZlKFtdKSksXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0IGFzIFByb21pc2U8UmF3TG9va3VwTGlzdFZhbHVlW10+KTtcbiAgfVxuXG4gIHByaXZhdGUgaXNTdWJzY3JpYmFibGUodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBTdWJzY3JpYmFibGU8UmF3TG9va3VwTGlzdFZhbHVlW10+IHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgdmFsdWUgIT09IG51bGwgJiZcbiAgICAgIHR5cGVvZiAodmFsdWUgYXMgU3Vic2NyaWJhYmxlPFJhd0xvb2t1cExpc3RWYWx1ZVtdPikuc3Vic2NyaWJlID09PSAnZnVuY3Rpb24nXG4gICAgKTtcbiAgfVxufVxuXG4vKiogQSBjaG9pY2UgZmllbGQgY29tcG9uZW50LCBhcyBmYXIgYXMgb3B0aW9uIHJlc29sdXRpb24gaXMgY29uY2VybmVkLiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaG9pY2VPcHRpb25Ib3N0IHtcbiAgcmVhZG9ubHkgZmllbGQ6IE5lc3RlZEZpZWxkQ29uZmlnIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSBsYW5ndWFnZTogc3RyaW5nO1xuICByZWFkb25seSBvcHRpb25zOiBXcml0YWJsZVNpZ25hbDxEcm9wZG93bk9wdGlvbltdPjtcbn1cblxuY29uc3QgaG9zdExhc3RDb25maWcgPSBuZXcgV2Vha01hcDxDaG9pY2VPcHRpb25Ib3N0LCB7IGZpZWxkPzogTmVzdGVkRmllbGRDb25maWc7IGxhbmc/OiBzdHJpbmcgfT4oKTtcblxuLyoqXG4gKiBQb2ludCBhIGNob2ljZSBjb21wb25lbnQncyBgb3B0aW9uc2Agc2lnbmFsIGF0IHRoZSByaWdodCBzb3VyY2UgKHBhcml0eSBwbGFuIMKnNi4zKS5cbiAqXG4gKiBDYWxsZWQgZnJvbSB0aGUgYGZpZWxkYCAvIGBsYW5ndWFnZWAgaW5wdXQgc2V0dGVycyBvZiBgZHJvcGRvd25gLCBgcmFkaW9gIGFuZCBgbXVsdGlTZWxlY3RgIOKAlFxuICogdGhlIHdpcmluZyBpcyB0aGVpcnMsIHRoZSBkZWNpc2lvbiBpcyB0aGUgc2VydmljZSdzLCB3aGljaCBpcyB3aGF0IGtlZXBzIHRoZSBmaWVsZFxuICogZml2ZS1pbnB1dCBjb250cmFjdCBpbnRhY3Q6IG9wdGlvbnMgYXJlIG5ldmVyIHB1c2hlZCBpbiBhcyBhIHNpeHRoIGlucHV0LlxuICpcbiAqIFNldHRlcnMgcmF0aGVyIHRoYW4gYG5nT25DaGFuZ2VzYCBvbiBwdXJwb3NlLiBgbmdPbkNoYW5nZXNgIG9ubHkgZmlyZXMgZm9yIGlucHV0cyBBbmd1bGFyXG4gKiBpdHNlbGYgc2V0cywgc28gYSBjb21wb25lbnQgd2hvc2UgYGZpZWxkYCBpcyBhc3NpZ25lZCBkaXJlY3RseSDigJQgd2hpY2ggdGhlIGZpZWxkIHNwZWNzIGRvLFxuICogYW5kIGFueSBjb25zdW1lciBob2xkaW5nIGEgYENvbXBvbmVudFJlZmAgbWF5IGRvIOKAlCB3b3VsZCByZW5kZXIgbm8gb3B0aW9ucyBhdCBhbGwuXG4gKlxuICogUGFpbnRzIHN5bmNocm9ub3VzbHkgZmlyc3QgKGlubGluZSBvcHRpb25zLCBvciBhIHdhcm0gbGlzdCksIHRoZW4gZmlsbHMgaW4gd2hlbiBhIGNvbGQgbGlzdFxuICogbGFuZHMuIFRoZSBsYXRlIHJlc3VsdCBpcyBkcm9wcGVkIGlmIHRoZSBmaWVsZCBvciBsYW5ndWFnZSBjaGFuZ2VkIHdoaWxlIGl0IHdhcyBpbiBmbGlnaHQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWZyZXNoQ2hvaWNlT3B0aW9ucyhob3N0OiBDaG9pY2VPcHRpb25Ib3N0LCBsb29rdXBzOiBMb29rdXBSZWdpc3RyeVNlcnZpY2UpOiB2b2lkIHtcbiAgY29uc3QgbGFzdCA9IGhvc3RMYXN0Q29uZmlnLmdldChob3N0KTtcbiAgaWYgKGxhc3QgJiYgbGFzdC5maWVsZCA9PT0gaG9zdC5maWVsZCAmJiBsYXN0LmxhbmcgPT09IGhvc3QubGFuZ3VhZ2UpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaG9zdExhc3RDb25maWcuc2V0KGhvc3QsIHsgZmllbGQ6IGhvc3QuZmllbGQsIGxhbmc6IGhvc3QubGFuZ3VhZ2UgfSk7XG5cbiAgaG9zdC5vcHRpb25zLnNldChsb29rdXBzLm9wdGlvbnNGb3IoaG9zdC5maWVsZCwgaG9zdC5sYW5ndWFnZSkpO1xuICBpZiAoIWxvb2t1cHMubmVlZHNSZXNvbHZlKGhvc3QuZmllbGQpKSByZXR1cm47XG5cbiAgY29uc3QgbGlzdE5hbWUgPSBob3N0LmZpZWxkPy5saXN0TmFtZTtcbiAgY29uc3QgbGFuZyA9IGhvc3QubGFuZ3VhZ2U7XG4gIHZvaWQgbG9va3Vwcy5yZXNvbHZlT3B0aW9ucyhob3N0LmZpZWxkLCBob3N0Lmxhbmd1YWdlKS50aGVuKG9wdGlvbnMgPT4ge1xuICAgIGlmIChob3N0LmZpZWxkPy5saXN0TmFtZSA9PT0gbGlzdE5hbWUgJiYgaG9zdC5sYW5ndWFnZSA9PT0gbGFuZykgaG9zdC5vcHRpb25zLnNldChvcHRpb25zKTtcbiAgfSk7XG59XG4iXX0=
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Injectable, inject } from '@angular/core';
|
|
2
|
+
import { VALIDATION_MESSAGES } from '../tokens/injection-tokens';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
/** The built-in English messages. Every key here can be overridden individually. */
|
|
5
|
+
export const DEFAULT_VALIDATION_MESSAGES = {
|
|
6
|
+
required: 'This field is required.',
|
|
7
|
+
requiredSelection: 'Please select an option.',
|
|
8
|
+
email: 'Please enter a valid email address.',
|
|
9
|
+
pattern: 'Invalid format.',
|
|
10
|
+
minlength: (_lang, err) => `Minimum ${err?.requiredLength} characters required.`,
|
|
11
|
+
maxlength: (_lang, err) => `Maximum ${err?.requiredLength} characters allowed.`,
|
|
12
|
+
min: (_lang, err) => `Value must be at least ${err?.min}.`,
|
|
13
|
+
max: (_lang, err) => `Value must not exceed ${err?.max}.`,
|
|
14
|
+
invalid: 'Invalid value.',
|
|
15
|
+
invalidNumber: 'Invalid number.',
|
|
16
|
+
invalidSelection: 'Invalid selection.',
|
|
17
|
+
};
|
|
18
|
+
export class ValidationMessagesService {
|
|
19
|
+
overrides = inject(VALIDATION_MESSAGES, { optional: true }) ?? {};
|
|
20
|
+
/**
|
|
21
|
+
* The message for the first error present, in the order the caller lists.
|
|
22
|
+
*
|
|
23
|
+
* Order is the caller's because it is field-specific: a dropdown wants
|
|
24
|
+
* `requiredSelection` where a text input wants `required`, and the first match wins so the
|
|
25
|
+
* most specific message is the one shown.
|
|
26
|
+
*/
|
|
27
|
+
resolve(errors, language, order, fallbackKey = 'invalid') {
|
|
28
|
+
if (!errors)
|
|
29
|
+
return '';
|
|
30
|
+
for (const entry of order) {
|
|
31
|
+
// A tuple maps an Angular error key to a different message key: a dropdown raises the
|
|
32
|
+
// standard `required` error but reads better as "Please select an option", and both
|
|
33
|
+
// messages stay independently overridable.
|
|
34
|
+
const [errorKey, messageKey] = typeof entry === 'string' ? [entry, entry] : entry;
|
|
35
|
+
// `errors[errorKey]` is usually an object of detail, but `required` is simply `true`.
|
|
36
|
+
if (errors[errorKey] === undefined)
|
|
37
|
+
continue;
|
|
38
|
+
return this.messageFor(messageKey, language, errors[errorKey]);
|
|
39
|
+
}
|
|
40
|
+
return this.messageFor(fallbackKey, language, null);
|
|
41
|
+
}
|
|
42
|
+
/** One message by key, honouring an override before the default. */
|
|
43
|
+
messageFor(key, language, error) {
|
|
44
|
+
const message = this.overrides[key] ?? DEFAULT_VALIDATION_MESSAGES[key];
|
|
45
|
+
if (message === undefined)
|
|
46
|
+
return '';
|
|
47
|
+
return typeof message === 'function' ? message(language, error) : message;
|
|
48
|
+
}
|
|
49
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidationMessagesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
50
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidationMessagesService, providedIn: 'root' });
|
|
51
|
+
}
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidationMessagesService, decorators: [{
|
|
53
|
+
type: Injectable,
|
|
54
|
+
args: [{ providedIn: 'root' }]
|
|
55
|
+
}] });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1tZXNzYWdlcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy92YWxpZGF0aW9uLW1lc3NhZ2VzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBMkJqRSxvRkFBb0Y7QUFDcEYsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQXNDO0lBQzVFLFFBQVEsRUFBRSx5QkFBeUI7SUFDbkMsaUJBQWlCLEVBQUUsMEJBQTBCO0lBQzdDLEtBQUssRUFBRSxxQ0FBcUM7SUFDNUMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxjQUFjLHVCQUF1QjtJQUNoRixTQUFTLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyxXQUFXLEdBQUcsRUFBRSxjQUFjLHNCQUFzQjtJQUMvRSxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQywwQkFBMEIsR0FBRyxFQUFFLEdBQUcsR0FBRztJQUMxRCxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQyx5QkFBeUIsR0FBRyxFQUFFLEdBQUcsR0FBRztJQUN6RCxPQUFPLEVBQUUsZ0JBQWdCO0lBQ3pCLGFBQWEsRUFBRSxpQkFBaUI7SUFDaEMsZ0JBQWdCLEVBQUUsb0JBQW9CO0NBQ3ZDLENBQUM7QUFHRixNQUFNLE9BQU8seUJBQXlCO0lBQ25CLFNBQVMsR0FBRyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFbkY7Ozs7OztPQU1HO0lBQ0gsT0FBTyxDQUNMLE1BQTJDLEVBQzNDLFFBQWdCLEVBQ2hCLEtBQTRFLEVBQzVFLFdBQVcsR0FBRyxTQUFTO1FBRXZCLElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFdkIsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUMxQixzRkFBc0Y7WUFDdEYsb0ZBQW9GO1lBQ3BGLDJDQUEyQztZQUMzQyxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNsRixzRkFBc0Y7WUFDdEYsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssU0FBUztnQkFBRSxTQUFTO1lBQzdDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsb0VBQW9FO0lBQ3BFLFVBQVUsQ0FBQyxHQUFXLEVBQUUsUUFBZ0IsRUFBRSxLQUFjO1FBQ3RELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksMkJBQTJCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEUsSUFBSSxPQUFPLEtBQUssU0FBUztZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3JDLE9BQU8sT0FBTyxPQUFPLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDNUUsQ0FBQzt3R0FuQ1UseUJBQXlCOzRHQUF6Qix5QkFBeUIsY0FEWixNQUFNOzs0RkFDbkIseUJBQXlCO2tCQURyQyxVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVkFMSURBVElPTl9NRVNTQUdFUyB9IGZyb20gJy4uL3Rva2Vucy9pbmplY3Rpb24tdG9rZW5zJztcblxuLyoqXG4gKiBSZXNvbHZlcyBhbiBBbmd1bGFyIGBWYWxpZGF0aW9uRXJyb3JzYCBvYmplY3QgdG8gdGhlIG1lc3NhZ2Ugc2hvd24gdW5kZXIgYSBmaWVsZC5cbiAqXG4gKiBUaGVzZSBzdHJpbmdzIHVzZWQgdG8gYmUgaGFyZGNvZGVkIEVuZ2xpc2ggbGl0ZXJhbHMgaW5zaWRlIGVhY2ggZmllbGQgY29tcG9uZW50LCBzbyBhXG4gKiBHZXJtYW4gZm9ybSBtZWFudCByZS1pbXBsZW1lbnRpbmcgZXZlcnkgZmllbGQgdHlwZSDigJQgdGhlIGxhYmVscyBob25vdXJlZCBgbGFuZ3VhZ2VgIHdoaWxlXG4gKiB0aGUgZXJyb3JzIHVuZGVybmVhdGggdGhlbSBkaWQgbm90LlxuICpcbiAqIEEgbWVzc2FnZSBpcyBhIHBsYWluIHN0cmluZywgb3IgYSBmdW5jdGlvbiB3aGVuIGl0IG5lZWRzIHRoZSBlcnJvcidzIG93biBkZXRhaWxcbiAqIChgbWlubGVuZ3RoLnJlcXVpcmVkTGVuZ3RoYCwgYG1pbi5taW5gLCBhbmQgc28gb24pLiBUaGUgYWN0aXZlIGBsYW5ndWFnZWAgaXMgcGFzc2VkXG4gKiB0aHJvdWdoLCBzbyBvbmUgcmVnaXN0cmF0aW9uIGNhbiBzZXJ2ZSBldmVyeSBsb2NhbGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogcHJvdmlkZU5neER5bmFtaWNFbnRpdHkoe1xuICogICB2YWxpZGF0aW9uTWVzc2FnZXM6IHtcbiAqICAgICByZXF1aXJlZDogbGFuZyA9PiAobGFuZyA9PT0gJ2RlJyA/ICdQZmxpY2h0ZmVsZC4nIDogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJyksXG4gKiAgICAgbWlubGVuZ3RoOiAobGFuZywgZXJyKSA9PiBgTWluZGVzdGVucyAke2VyclsncmVxdWlyZWRMZW5ndGgnXX0gWmVpY2hlbi5gLFxuICogICB9LFxuICogfSk7XG4gKiBgYGBcbiAqXG4gKiBVbnJlZ2lzdGVyZWQga2V5cyBmYWxsIGJhY2sgdG8gdGhlIGRlZmF1bHRzIGJlbG93LCBzbyBvdmVycmlkaW5nIG9uZSBtZXNzYWdlIGRvZXMgbm90XG4gKiBtZWFuIHN1cHBseWluZyB0aGVtIGFsbC5cbiAqL1xuZXhwb3J0IHR5cGUgVmFsaWRhdGlvbk1lc3NhZ2UgPSBzdHJpbmcgfCAoKGxhbmd1YWdlOiBzdHJpbmcsIGVycm9yOiBhbnkpID0+IHN0cmluZyk7XG5cbi8qKiBUaGUgYnVpbHQtaW4gRW5nbGlzaCBtZXNzYWdlcy4gRXZlcnkga2V5IGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gaW5kaXZpZHVhbGx5LiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVkFMSURBVElPTl9NRVNTQUdFUzogUmVjb3JkPHN0cmluZywgVmFsaWRhdGlvbk1lc3NhZ2U+ID0ge1xuICByZXF1aXJlZDogJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJyxcbiAgcmVxdWlyZWRTZWxlY3Rpb246ICdQbGVhc2Ugc2VsZWN0IGFuIG9wdGlvbi4nLFxuICBlbWFpbDogJ1BsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuJyxcbiAgcGF0dGVybjogJ0ludmFsaWQgZm9ybWF0LicsXG4gIG1pbmxlbmd0aDogKF9sYW5nLCBlcnIpID0+IGBNaW5pbXVtICR7ZXJyPy5yZXF1aXJlZExlbmd0aH0gY2hhcmFjdGVycyByZXF1aXJlZC5gLFxuICBtYXhsZW5ndGg6IChfbGFuZywgZXJyKSA9PiBgTWF4aW11bSAke2Vycj8ucmVxdWlyZWRMZW5ndGh9IGNoYXJhY3RlcnMgYWxsb3dlZC5gLFxuICBtaW46IChfbGFuZywgZXJyKSA9PiBgVmFsdWUgbXVzdCBiZSBhdCBsZWFzdCAke2Vycj8ubWlufS5gLFxuICBtYXg6IChfbGFuZywgZXJyKSA9PiBgVmFsdWUgbXVzdCBub3QgZXhjZWVkICR7ZXJyPy5tYXh9LmAsXG4gIGludmFsaWQ6ICdJbnZhbGlkIHZhbHVlLicsXG4gIGludmFsaWROdW1iZXI6ICdJbnZhbGlkIG51bWJlci4nLFxuICBpbnZhbGlkU2VsZWN0aW9uOiAnSW52YWxpZCBzZWxlY3Rpb24uJyxcbn07XG5cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgVmFsaWRhdGlvbk1lc3NhZ2VzU2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgb3ZlcnJpZGVzID0gaW5qZWN0KFZBTElEQVRJT05fTUVTU0FHRVMsIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8ge307XG5cbiAgLyoqXG4gICAqIFRoZSBtZXNzYWdlIGZvciB0aGUgZmlyc3QgZXJyb3IgcHJlc2VudCwgaW4gdGhlIG9yZGVyIHRoZSBjYWxsZXIgbGlzdHMuXG4gICAqXG4gICAqIE9yZGVyIGlzIHRoZSBjYWxsZXIncyBiZWNhdXNlIGl0IGlzIGZpZWxkLXNwZWNpZmljOiBhIGRyb3Bkb3duIHdhbnRzXG4gICAqIGByZXF1aXJlZFNlbGVjdGlvbmAgd2hlcmUgYSB0ZXh0IGlucHV0IHdhbnRzIGByZXF1aXJlZGAsIGFuZCB0aGUgZmlyc3QgbWF0Y2ggd2lucyBzbyB0aGVcbiAgICogbW9zdCBzcGVjaWZpYyBtZXNzYWdlIGlzIHRoZSBvbmUgc2hvd24uXG4gICAqL1xuICByZXNvbHZlKFxuICAgIGVycm9yczogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgfCB1bmRlZmluZWQsXG4gICAgbGFuZ3VhZ2U6IHN0cmluZyxcbiAgICBvcmRlcjogcmVhZG9ubHkgKHN0cmluZyB8IHJlYWRvbmx5IFtlcnJvcktleTogc3RyaW5nLCBtZXNzYWdlS2V5OiBzdHJpbmddKVtdLFxuICAgIGZhbGxiYWNrS2V5ID0gJ2ludmFsaWQnLFxuICApOiBzdHJpbmcge1xuICAgIGlmICghZXJyb3JzKSByZXR1cm4gJyc7XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIG9yZGVyKSB7XG4gICAgICAvLyBBIHR1cGxlIG1hcHMgYW4gQW5ndWxhciBlcnJvciBrZXkgdG8gYSBkaWZmZXJlbnQgbWVzc2FnZSBrZXk6IGEgZHJvcGRvd24gcmFpc2VzIHRoZVxuICAgICAgLy8gc3RhbmRhcmQgYHJlcXVpcmVkYCBlcnJvciBidXQgcmVhZHMgYmV0dGVyIGFzIFwiUGxlYXNlIHNlbGVjdCBhbiBvcHRpb25cIiwgYW5kIGJvdGhcbiAgICAgIC8vIG1lc3NhZ2VzIHN0YXkgaW5kZXBlbmRlbnRseSBvdmVycmlkYWJsZS5cbiAgICAgIGNvbnN0IFtlcnJvcktleSwgbWVzc2FnZUtleV0gPSB0eXBlb2YgZW50cnkgPT09ICdzdHJpbmcnID8gW2VudHJ5LCBlbnRyeV0gOiBlbnRyeTtcbiAgICAgIC8vIGBlcnJvcnNbZXJyb3JLZXldYCBpcyB1c3VhbGx5IGFuIG9iamVjdCBvZiBkZXRhaWwsIGJ1dCBgcmVxdWlyZWRgIGlzIHNpbXBseSBgdHJ1ZWAuXG4gICAgICBpZiAoZXJyb3JzW2Vycm9yS2V5XSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcbiAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VGb3IobWVzc2FnZUtleSwgbGFuZ3VhZ2UsIGVycm9yc1tlcnJvcktleV0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlRm9yKGZhbGxiYWNrS2V5LCBsYW5ndWFnZSwgbnVsbCk7XG4gIH1cblxuICAvKiogT25lIG1lc3NhZ2UgYnkga2V5LCBob25vdXJpbmcgYW4gb3ZlcnJpZGUgYmVmb3JlIHRoZSBkZWZhdWx0LiAqL1xuICBtZXNzYWdlRm9yKGtleTogc3RyaW5nLCBsYW5ndWFnZTogc3RyaW5nLCBlcnJvcjogdW5rbm93bik6IHN0cmluZyB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMub3ZlcnJpZGVzW2tleV0gPz8gREVGQVVMVF9WQUxJREFUSU9OX01FU1NBR0VTW2tleV07XG4gICAgaWYgKG1lc3NhZ2UgPT09IHVuZGVmaW5lZCkgcmV0dXJuICcnO1xuICAgIHJldHVybiB0eXBlb2YgbWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJyA/IG1lc3NhZ2UobGFuZ3VhZ2UsIGVycm9yKSA6IG1lc3NhZ2U7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Injectable, inject } from '@angular/core';
|
|
2
2
|
import { Validators } from '@angular/forms';
|
|
3
|
-
import { VALIDATOR_REGISTRY } from '../tokens/injection-tokens';
|
|
3
|
+
import { ASYNC_VALIDATOR_REGISTRY, VALIDATOR_REGISTRY } from '../tokens/injection-tokens';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
/**
|
|
6
6
|
* ValidatorRegistryService — resolves validator configs / key strings to Angular ValidatorFns.
|
|
7
7
|
*/
|
|
8
8
|
export class ValidatorRegistryService {
|
|
9
9
|
consumerRegistry = inject(VALIDATOR_REGISTRY, { optional: true }) ?? new Map();
|
|
10
|
+
asyncRegistry = inject(ASYNC_VALIDATOR_REGISTRY, { optional: true }) ?? new Map();
|
|
10
11
|
/**
|
|
11
12
|
* Resolve a validator key string to a ValidatorFn.
|
|
12
13
|
* Supports parameterized built-ins like 'min:0', 'maxLength:255'.
|
|
@@ -67,6 +68,27 @@ export class ValidatorRegistryService {
|
|
|
67
68
|
}
|
|
68
69
|
return fnList;
|
|
69
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Resolve the async validators a field names, in `validators.customAsync`.
|
|
73
|
+
*
|
|
74
|
+
* Async validators are deliberately a separate registry and a separate config key: Angular
|
|
75
|
+
* attaches them through `setAsyncValidators`, runs them only once the synchronous ones
|
|
76
|
+
* pass, and holds the control in `pending` until they settle. Mixing them into the
|
|
77
|
+
* synchronous list would silently never run them.
|
|
78
|
+
*
|
|
79
|
+
* An unknown name is skipped rather than throwing, matching the synchronous behaviour.
|
|
80
|
+
*/
|
|
81
|
+
resolveAsyncFromConfig(config) {
|
|
82
|
+
if (!config || Array.isArray(config))
|
|
83
|
+
return [];
|
|
84
|
+
const out = [];
|
|
85
|
+
for (const key of config.customAsync ?? []) {
|
|
86
|
+
const fn = this.asyncRegistry.get(key);
|
|
87
|
+
if (fn)
|
|
88
|
+
out.push(fn);
|
|
89
|
+
}
|
|
90
|
+
return out;
|
|
91
|
+
}
|
|
70
92
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidatorRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
71
93
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ValidatorRegistryService, providedIn: 'root' });
|
|
72
94
|
}
|
|
@@ -74,4 +96,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
74
96
|
type: Injectable,
|
|
75
97
|
args: [{ providedIn: 'root' }]
|
|
76
98
|
}] });
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLXJlZ2lzdHJ5LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL3ZhbGlkYXRvci1yZWdpc3RyeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBaUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0UsT0FBTyxFQUFFLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7O0FBRTFGOztHQUVHO0FBRUgsTUFBTSxPQUFPLHdCQUF3QjtJQUNsQixnQkFBZ0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBQy9FLGFBQWEsR0FBRyxNQUFNLENBQUMsd0JBQXdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRW5HOzs7T0FHRztJQUNILE9BQU8sQ0FBQyxZQUFvQjtRQUMxQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQztZQUM1QyxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELElBQUksWUFBWSxLQUFLLFVBQVU7WUFBRSxPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDNUQsSUFBSSxZQUFZLEtBQUssT0FBTztZQUFFLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQztRQUV0RCxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLFlBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDOUMsTUFB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QUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILHNCQUFzQixDQUFDLE1BQW1DO1FBQ3hELElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVoRCxNQUFNLEdBQUcsR0FBdUIsRUFBRSxDQUFDO1FBQ25DLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUMzQyxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLEVBQUU7Z0JBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2QixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO3dHQTdFVSx3QkFBd0I7NEdBQXhCLHdCQUF3QixjQURYLE1BQU07OzRGQUNuQix3QkFBd0I7a0JBRHBDLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBc3luY1ZhbGlkYXRvckZuLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB0eXBlIHsgRmllbGRWYWxpZGF0b3JzIH0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgQVNZTkNfVkFMSURBVE9SX1JFR0lTVFJZLCBWQUxJREFUT1JfUkVHSVNUUlkgfSBmcm9tICcuLi90b2tlbnMvaW5qZWN0aW9uLXRva2Vucyc7XG5cbi8qKlxuICogVmFsaWRhdG9yUmVnaXN0cnlTZXJ2aWNlIOKAlCByZXNvbHZlcyB2YWxpZGF0b3IgY29uZmlncyAvIGtleSBzdHJpbmdzIHRvIEFuZ3VsYXIgVmFsaWRhdG9yRm5zLlxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFZhbGlkYXRvclJlZ2lzdHJ5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY29uc3VtZXJSZWdpc3RyeSA9IGluamVjdChWQUxJREFUT1JfUkVHSVNUUlksIHsgb3B0aW9uYWw6IHRydWUgfSkgPz8gbmV3IE1hcCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IGFzeW5jUmVnaXN0cnkgPSBpbmplY3QoQVNZTkNfVkFMSURBVE9SX1JFR0lTVFJZLCB7IG9wdGlvbmFsOiB0cnVlIH0pID8/IG5ldyBNYXAoKTtcblxuICAvKipcbiAgICogUmVzb2x2ZSBhIHZhbGlkYXRvciBrZXkgc3RyaW5nIHRvIGEgVmFsaWRhdG9yRm4uXG4gICAqIFN1cHBvcnRzIHBhcmFtZXRlcml6ZWQgYnVpbHQtaW5zIGxpa2UgJ21pbjowJywgJ21heExlbmd0aDoyNTUnLlxuICAgKi9cbiAgcmVzb2x2ZSh2YWxpZGF0b3JLZXk6IHN0cmluZyk6IFZhbGlkYXRvckZuIHwgbnVsbCB7XG4gICAgaWYgKHRoaXMuY29uc3VtZXJSZWdpc3RyeS5oYXModmFsaWRhdG9yS2V5KSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29uc3VtZXJSZWdpc3RyeS5nZXQodmFsaWRhdG9yS2V5KTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdG9yS2V5ID09PSAncmVxdWlyZWQnKSByZXR1cm4gVmFsaWRhdG9ycy5yZXF1aXJlZDtcbiAgICBpZiAodmFsaWRhdG9yS2V5ID09PSAnZW1haWwnKSByZXR1cm4gVmFsaWRhdG9ycy5lbWFpbDtcblxuICAgIGNvbnN0IFtuYW1lLCBwYXJhbV0gPSB2YWxpZGF0b3JLZXkuc3BsaXQoJzonKTtcbiAgICBjb25zdCB2YWx1ZSA9IHBhcnNlRmxvYXQocGFyYW0pO1xuXG4gICAgaWYgKG5hbWUgPT09ICdtaW4nICYmICFpc05hTih2YWx1ZSkpIHJldHVybiBWYWxpZGF0b3JzLm1pbih2YWx1ZSk7XG4gICAgaWYgKG5hbWUgPT09ICdtYXgnICYmICFpc05hTih2YWx1ZSkpIHJldHVybiBWYWxpZGF0b3JzLm1heCh2YWx1ZSk7XG4gICAgaWYgKG5hbWUgPT09ICdtaW5MZW5ndGgnICYmICFpc05hTih2YWx1ZSkpIHJldHVybiBWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWx1ZSk7XG4gICAgaWYgKG5hbWUgPT09ICdtYXhMZW5ndGgnICYmICFpc05hTih2YWx1ZSkpIHJldHVybiBWYWxpZGF0b3JzLm1heExlbmd0aCh2YWx1ZSk7XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKiBSZXNvbHZlIG11bHRpcGxlIHZhbGlkYXRvciBrZXlzIGludG8gYSBWYWxpZGF0b3JGbltdICovXG4gIHJlc29sdmVBbGwodmFsaWRhdG9yS2V5czogc3RyaW5nW10gPSBbXSk6IFZhbGlkYXRvckZuW10ge1xuICAgIHJldHVybiB2YWxpZGF0b3JLZXlzLm1hcChrID0+IHRoaXMucmVzb2x2ZShrKSkuZmlsdGVyKCh2KTogdiBpcyBWYWxpZGF0b3JGbiA9PiB2ICE9PSBudWxsKTtcbiAgfVxuXG4gIC8qKiBSZXNvbHZlIGEgRmllbGRWYWxpZGF0b3JzIG9iamVjdCBvciBzdHJpbmdbXSBpbnRvIFZhbGlkYXRvckZuW10gKi9cbiAgcmVzb2x2ZUZyb21Db25maWcoY29uZmlnPzogRmllbGRWYWxpZGF0b3JzIHwgc3RyaW5nW10pOiBWYWxpZGF0b3JGbltdIHtcbiAgICBpZiAoIWNvbmZpZykgcmV0dXJuIFtdO1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbmZpZykpIHJldHVybiB0aGlzLnJlc29sdmVBbGwoY29uZmlnKTtcblxuICAgIGNvbnN0IGZuTGlzdDogVmFsaWRhdG9yRm5bXSA9IFtdO1xuICAgIGlmIChjb25maWcucmVxdWlyZWQpIGZuTGlzdC5wdXNoKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgIGlmIChjb25maWcubWluICE9PSB1bmRlZmluZWQpIGZuTGlzdC5wdXNoKFZhbGlkYXRvcnMubWluKGNvbmZpZy5taW4pKTtcbiAgICBpZiAoY29uZmlnLm1heCAhPT0gdW5kZWZpbmVkKSBmbkxpc3QucHVzaChWYWxpZGF0b3JzLm1heChjb25maWcubWF4KSk7XG4gICAgaWYgKGNvbmZpZy5taW5MZW5ndGggIT09IHVuZGVmaW5lZCkgZm5MaXN0LnB1c2goVmFsaWRhdG9ycy5taW5MZW5ndGgoY29uZmlnLm1pbkxlbmd0aCkpO1xuICAgIGlmIChjb25maWcubWF4TGVuZ3RoICE9PSB1bmRlZmluZWQpIGZuTGlzdC5wdXNoKFZhbGlkYXRvcnMubWF4TGVuZ3RoKGNvbmZpZy5tYXhMZW5ndGgpKTtcbiAgICBpZiAoY29uZmlnLnBhdHRlcm4pIGZuTGlzdC5wdXNoKFZhbGlkYXRvcnMucGF0dGVybihjb25maWcucGF0dGVybikpO1xuICAgIGlmIChjb25maWcuZW1haWwpIGZuTGlzdC5wdXNoKFZhbGlkYXRvcnMuZW1haWwpO1xuXG4gICAgLy8gTmFtZWQgdmFsaWRhdG9ycyBmcm9tIHRoZSBjb25zdW1lciByZWdpc3RyeS4gVGhpcyBicmFuY2ggcHJldmlvdXNseSBoYXJkY29kZWQgdGhlXG4gICAgLy8gYnVpbHQtaW5zIGFuZCBjb25zdWx0ZWQgdGhlIHJlZ2lzdHJ5IG9ubHkgZm9yIHRoZSBgc3RyaW5nW11gIGZvcm0gb2YgdGhpcyBjb25maWcsIHNvXG4gICAgLy8gYSB2YWxpZGF0b3IgdGhlIGNvbnN1bWVyIGhhZCByZWdpc3RlcmVkIGNvdWxkIG5vdCBiZSBuYW1lZCBmcm9tIGEgdHlwZWQgc2NoZW1hXG4gICAgLy8gd2l0aG91dCBjYXN0aW5nIGl0IHRvIGBhbnlgLlxuICAgIGZvciAoY29uc3Qga2V5IG9mIGNvbmZpZy5jdXN0b20gPz8gW10pIHtcbiAgICAgIGNvbnN0IGZuID0gdGhpcy5yZXNvbHZlKGtleSk7XG4gICAgICBpZiAoZm4pIGZuTGlzdC5wdXNoKGZuKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm5MaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc29sdmUgdGhlIGFzeW5jIHZhbGlkYXRvcnMgYSBmaWVsZCBuYW1lcywgaW4gYHZhbGlkYXRvcnMuY3VzdG9tQXN5bmNgLlxuICAgKlxuICAgKiBBc3luYyB2YWxpZGF0b3JzIGFyZSBkZWxpYmVyYXRlbHkgYSBzZXBhcmF0ZSByZWdpc3RyeSBhbmQgYSBzZXBhcmF0ZSBjb25maWcga2V5OiBBbmd1bGFyXG4gICAqIGF0dGFjaGVzIHRoZW0gdGhyb3VnaCBgc2V0QXN5bmNWYWxpZGF0b3JzYCwgcnVucyB0aGVtIG9ubHkgb25jZSB0aGUgc3luY2hyb25vdXMgb25lc1xuICAgKiBwYXNzLCBhbmQgaG9sZHMgdGhlIGNvbnRyb2wgaW4gYHBlbmRpbmdgIHVudGlsIHRoZXkgc2V0dGxlLiBNaXhpbmcgdGhlbSBpbnRvIHRoZVxuICAgKiBzeW5jaHJvbm91cyBsaXN0IHdvdWxkIHNpbGVudGx5IG5ldmVyIHJ1biB0aGVtLlxuICAgKlxuICAgKiBBbiB1bmtub3duIG5hbWUgaXMgc2tpcHBlZCByYXRoZXIgdGhhbiB0aHJvd2luZywgbWF0Y2hpbmcgdGhlIHN5bmNocm9ub3VzIGJlaGF2aW91ci5cbiAgICovXG4gIHJlc29sdmVBc3luY0Zyb21Db25maWcoY29uZmlnPzogRmllbGRWYWxpZGF0b3JzIHwgc3RyaW5nW10pOiBBc3luY1ZhbGlkYXRvckZuW10ge1xuICAgIGlmICghY29uZmlnIHx8IEFycmF5LmlzQXJyYXkoY29uZmlnKSkgcmV0dXJuIFtdO1xuXG4gICAgY29uc3Qgb3V0OiBBc3luY1ZhbGlkYXRvckZuW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBjb25maWcuY3VzdG9tQXN5bmMgPz8gW10pIHtcbiAgICAgIGNvbnN0IGZuID0gdGhpcy5hc3luY1JlZ2lzdHJ5LmdldChrZXkpO1xuICAgICAgaWYgKGZuKSBvdXQucHVzaChmbik7XG4gICAgfVxuICAgIHJldHVybiBvdXQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { InjectionToken } from '@angular/core';
|
|
2
2
|
import { InMemoryEntityRefCacheStore } from '../services/entity-ref-cache';
|
|
3
|
-
/** Roles that see XXXXXXXXX for masked fields
|
|
3
|
+
/** Roles that see XXXXXXXXX for masked fields. Presentational only — enforce authz server-side. */
|
|
4
4
|
export const MASKED_ROLES = new InjectionToken('MASKED_ROLES');
|
|
5
5
|
/**
|
|
6
6
|
* Consumer **overrides**: fieldType string → Angular component class.
|
|
@@ -57,8 +57,25 @@ export const LOOKUP_REGISTRY = new InjectionToken('LOOKUP_REGISTRY');
|
|
|
57
57
|
* })
|
|
58
58
|
*/
|
|
59
59
|
export const RECORD_MIGRATIONS = new InjectionToken('RECORD_MIGRATIONS');
|
|
60
|
+
/**
|
|
61
|
+
* Overrides for the messages shown under an invalid field, keyed by Angular error key
|
|
62
|
+
* (`required`, `minlength`, `pattern`, …) plus a few field-specific keys.
|
|
63
|
+
*
|
|
64
|
+
* The built-in messages are English literals. Registering here is what makes a non-English
|
|
65
|
+
* form possible without re-implementing every field component; unlisted keys keep their
|
|
66
|
+
* default, so overriding one does not mean supplying them all.
|
|
67
|
+
*/
|
|
68
|
+
export const VALIDATION_MESSAGES = new InjectionToken('VALIDATION_MESSAGES');
|
|
60
69
|
/** Registry: validator key → ValidatorFn */
|
|
61
70
|
export const VALIDATOR_REGISTRY = new InjectionToken('VALIDATOR_REGISTRY');
|
|
71
|
+
/**
|
|
72
|
+
* Registry: validator key → AsyncValidatorFn.
|
|
73
|
+
*
|
|
74
|
+
* Kept separate from VALIDATOR_REGISTRY because Angular applies the two differently: an async
|
|
75
|
+
* validator runs only once the synchronous ones pass, and puts the control into `pending`
|
|
76
|
+
* while it does. Name them from a schema with `validators: { customAsync: ['uniqueEmail'] }`.
|
|
77
|
+
*/
|
|
78
|
+
export const ASYNC_VALIDATOR_REGISTRY = new InjectionToken('ASYNC_VALIDATOR_REGISTRY');
|
|
62
79
|
/** Registry: hook key → async (data, context) => data */
|
|
63
80
|
export const HOOK_REGISTRY = new InjectionToken('HOOK_REGISTRY');
|
|
64
81
|
/**
|
|
@@ -96,10 +113,6 @@ export const UPLOAD_HANDLER = new InjectionToken('UPLOAD_HANDLER');
|
|
|
96
113
|
* { provide: ENTITY_REF_CACHE_STORE, useClass: SessionStorageRefCache }
|
|
97
114
|
*/
|
|
98
115
|
export const ENTITY_REF_CACHE_STORE = new InjectionToken('ENTITY_REF_CACHE_STORE', { providedIn: 'root', factory: () => new InMemoryEntityRefCacheStore() });
|
|
99
|
-
/**
|
|
100
|
-
* Consumer-provided predicate function to check whether user roles can edit system default tabs or fields.
|
|
101
|
-
* Defaults to allowing edits if not provided.
|
|
102
|
-
*/
|
|
103
116
|
/**
|
|
104
117
|
* Consumer-provided predicate function to check whether user roles can edit system default tabs or fields.
|
|
105
118
|
* Defaults to allowing edits if not provided.
|
|
@@ -110,4 +123,4 @@ export const SYSTEM_DEFAULT_CAN_EDIT = new InjectionToken('SYSTEM_DEFAULT_CAN_ED
|
|
|
110
123
|
* Enables cross-entity field referencing (`isReferenced`, `referencedEntityKey`, `referencedFieldId`, `hasDrift`).
|
|
111
124
|
*/
|
|
112
125
|
export const CONFIG_SOURCE = new InjectionToken('CONFIG_SOURCE');
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0aW9uLXRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdG9rZW5zL2luamVjdGlvbi10b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVMvQyxPQUFPLEVBQUUsMkJBQTJCLEVBQTRCLE1BQU0sOEJBQThCLENBQUM7QUFFckcsMkRBQTJEO0FBQzNELE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBVyxjQUFjLENBQUMsQ0FBQztBQUV6RTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBeUIscUJBQXFCLENBQUMsQ0FBQztBQUVyRzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsaUJBQWlCLENBQUMsQ0FBQztBQUVsRzs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDbkQscUJBQXFCLENBQ3RCLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQWdDLGlCQUFpQixDQUFDLENBQUM7QUFFcEc7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBb0IsbUJBQW1CLENBQUMsQ0FBQztBQUU1Riw0Q0FBNEM7QUFDNUMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQW1CLG9CQUFvQixDQUFDLENBQUM7QUFVN0YseURBQXlEO0FBQ3pELE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsZUFBZSxDQUFDLENBQUM7QUFFdEY7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQ3ZELHlCQUF5QixDQUMxQixDQUFDO0FBRUY7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQW9CLGdCQUFnQixDQUFDLENBQUM7QUFFdEY7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxjQUFjLENBQ3RELHdCQUF3QixFQUN4QixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksMkJBQTJCLEVBQUUsRUFBRSxDQUN6RSxDQUFDO0FBRUY7OztHQUdHO0FBQ0g7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxjQUFjLENBQ3ZELHlCQUF5QixDQUMxQixDQUFDO0FBTUY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLElBQUksY0FBYyxDQUFzQixlQUFlLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHtcbiAgQ29tbW9uTW9kdWxlRW50cnksXG4gIEVudGl0eVJlZmVyZW5jZUxvYWRlcixcbiAgRmlsZVVwbG9hZEhhbmRsZXIsXG4gIExvb2t1cExpc3RTb3VyY2UsXG4gIFJlY29yZE1pZ3JhdGlvbixcbn0gZnJvbSAnQGR5bmFtaWMtZW50aXR5L2NvcmUnO1xuaW1wb3J0IHsgSW5NZW1vcnlFbnRpdHlSZWZDYWNoZVN0b3JlLCB0eXBlIEVudGl0eVJlZkNhY2hlU3RvcmUgfSBmcm9tICcuLi9zZXJ2aWNlcy9lbnRpdHktcmVmLWNhY2hlJztcblxuLyoqIFJvbGVzIHRoYXQgc2VlIFhYWFhYWFhYWCBmb3IgbWFza2VkIGZpZWxkcyAoQURSLTAwMykgKi9cbmV4cG9ydCBjb25zdCBNQVNLRURfUk9MRVMgPSBuZXcgSW5qZWN0aW9uVG9rZW48c3RyaW5nW10+KCdNQVNLRURfUk9MRVMnKTtcblxuLyoqXG4gKiBDb25zdW1lciAqKm92ZXJyaWRlcyoqOiBmaWVsZFR5cGUgc3RyaW5nIOKGkiBBbmd1bGFyIGNvbXBvbmVudCBjbGFzcy5cbiAqIEhpZ2hlc3QgcHJpb3JpdHkg4oCUIGJlYXRzIGFueXRoaW5nIHJlZ2lzdGVyZWQgdGhyb3VnaCBgcHJvdmlkZUZpZWxkVHlwZXMoKWAuXG4gKi9cbmV4cG9ydCBjb25zdCBGSUVMRF9UWVBFX1JFR0lTVFJZID0gbmV3IEluamVjdGlvblRva2VuPE1hcDxzdHJpbmcsIFR5cGU8YW55Pj4+KCdGSUVMRF9UWVBFX1JFR0lTVFJZJyk7XG5cbi8qKlxuICogTXVsdGktcHJvdmlkZXIgb2YgZmllbGQtdHlwZSBzZXRzLCBjb250cmlidXRlZCBieSBgcHJvdmlkZUZpZWxkVHlwZXMoKWAgL1xuICogYHByb3ZpZGVCdWlsdEluRmllbGRUeXBlcygpYC4gTXVsdGkgc28gc2V2ZXJhbCBjYWxscyBjb21wb3NlIGluc3RlYWQgb2YgY2xvYmJlcmluZztcbiAqIGxhdGVyIHNldHMgd2luIG9uIGtleSBjb2xsaXNpb24uIFRoaXMgaXMgdGhlIHNlYW0gdGhhdCBrZWVwcyB1bnVzZWQgZmllbGQgY29tcG9uZW50c1xuICogb3V0IG9mIHRoZSBidW5kbGUg4oCUIG5vdGhpbmcgaXMgaW1wb3J0ZWQgdW50aWwgYSBzZXQgbmFtZXMgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBGSUVMRF9UWVBFX1NFVFMgPSBuZXcgSW5qZWN0aW9uVG9rZW48UmVjb3JkPHN0cmluZywgVHlwZTxhbnk+PltdPignRklFTERfVFlQRV9TRVRTJyk7XG5cbi8qKlxuICogUmVnaXN0cnk6IGVudGl0eSBrZXkg4oaSIG9wdGlvbiBsb2FkZXIuXG4gKlxuICogQSBsb2FkZXIgcmVjZWl2ZXMgYSBgUmVmZXJlbmNlTG9hZGVyQ29udGV4dGAgKGBwYXJlbnRWYWx1ZWAsIGBmaWx0ZXJzYCwgYGxhbmdgKSBhbmQgbWF5XG4gKiByZXR1cm4gYW4gYXJyYXksIGEgUHJvbWlzZSwgb3IgYW4gT2JzZXJ2YWJsZSBvZiBgUmVmZXJlbmNlT3B0aW9uW11gLiBgY3R4YCBpcyBvcHRpb25hbCxcbiAqIHNvIGEgemVyby1hcmcgbG9hZGVyIChgKCkgPT4gc3ZjLmxpc3QoKWApIGlzIHN0aWxsIGEgdmFsaWQgcmVnaXN0cmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgRU5USVRZX1JFRl9SRUdJU1RSWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNYXA8c3RyaW5nLCBFbnRpdHlSZWZlcmVuY2VMb2FkZXI+PihcbiAgJ0VOVElUWV9SRUZfUkVHSVNUUlknLFxuKTtcblxuLyoqXG4gKiBSZWdpc3RyeTogbGlzdCBuYW1lIOKGkiB0aGUgdmFsdWVzIG9mIGEgbmFtZWQgbWFzdGVyIGxpc3QgKGBmaWVsZC5saXN0TmFtZWApLlxuICpcbiAqIEEgc291cmNlIG1heSBiZSB0aGUgdmFsdWVzIHRoZW1zZWx2ZXMgKGFycmF5IC8gUHJvbWlzZSAvIE9ic2VydmFibGUpIG9yIGEgKipsb2FkZXIgZnVuY3Rpb24qKixcbiAqIHdoaWNoIGlzIHdoYXQgeW91IHdhbnQgZm9yIGFueXRoaW5nIGZldGNoZWQ6IGEgYmFyZSBQcm9taXNlIGlzIGNyZWF0ZWQgd2hlbiB0aGUgcHJvdmlkZXIgaXNcbiAqIGJ1aWx0LCBzbyBldmVyeSBsaXN0IHdvdWxkIGxvYWQgd2hldGhlciBvciBub3QgYSBmb3JtIHVzZXMgaXQuXG4gKlxuICogVmFsdWVzIGFyZSBub3JtYWxpc2VkIGJ5IGBub3JtYWxpemVMb29rdXBWYWx1ZXNgIOKAlCBiYXJlIHN0cmluZ3MgYW5kIGBMb2NhbGl6ZWRUZXh0YCBhcmVcbiAqIGFjY2VwdGVkIGFsb25nc2lkZSB0aGUgZnVsbCBgeyBjb2RlLCBuYW1lLCBzb3J0T3JkZXIgfWAgc2hhcGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIHByb3ZpZGVOZ3hEeW5hbWljRW50aXR5KHtcbiAqICAgbG9va3Vwczoge1xuICogICAgIGVtcGxveWVlU3RhdHVzOiAoKSA9PiBsaXN0U2VydmljZS5nZXRCeU5hbWUoJ2VtcGxveWVlU3RhdHVzJyksXG4gKiAgICAgZ3JhZGVzOiBbJ0p1bmlvcicsICdTZW5pb3InXSxcbiAqICAgfSxcbiAqIH0pXG4gKi9cbmV4cG9ydCBjb25zdCBMT09LVVBfUkVHSVNUUlkgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWFwPHN0cmluZywgTG9va3VwTGlzdFNvdXJjZT4+KCdMT09LVVBfUkVHSVNUUlknKTtcblxuLyoqXG4gKiBPcmRlcmVkIHN0ZXBzIHRoYXQgbW92ZSBhIHNhdmVkIHJlY29yZCBmb3J3YXJkIHdoZW4gYSBjb25maWcncyBgdmVyc2lvbmAgaW5jcmVhc2VzLlxuICpcbiAqIFdpdGhvdXQgdGhlc2UsIGBFbnRpdHlGb3JtQ29uZmlnLnZlcnNpb25gIGFuZCBgVmVyc2lvbmVkUmVjb3JkLl9jb25maWdWZXJzaW9uYCBhcmVcbiAqIGRlY2xhcmF0aW9ucyBub3RoaW5nIGFjdHMgb246IGEgc2NoZW1hIGNhbiBiZSBlZGl0ZWQgZnJlZWx5IHdoaWxlIHJlY29yZHMga2VlcCB0aGVpciBvbGRcbiAqIHNoYXBlLCBhbmQgbm90aGluZyByZWNvbmNpbGVzIHRoZSB0d28uIFJlZ2lzdGVyaW5nIG1pZ3JhdGlvbnMgbWFrZXMgdGhlIHZlcnNpb24gbnVtYmVyc1xuICogbWVhbiBzb21ldGhpbmcuXG4gKlxuICogQGV4YW1wbGVcbiAqIHByb3ZpZGVOZ3hEeW5hbWljRW50aXR5KHtcbiAqICAgbWlncmF0aW9uczogW1xuICogICAgIHsgZnJvbTogMSwgdG86IDIsIGRlc2NyaXB0aW9uOiAnc3BsaXQgbmFtZScsIG1pZ3JhdGU6IHIgPT4gKHsgLi4uciwgZmlyc3ROYW1lOiByWyduYW1lJ10gfSkgfSxcbiAqICAgXSxcbiAqIH0pXG4gKi9cbmV4cG9ydCBjb25zdCBSRUNPUkRfTUlHUkFUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxSZWNvcmRNaWdyYXRpb25bXT4oJ1JFQ09SRF9NSUdSQVRJT05TJyk7XG5cbi8qKiBSZWdpc3RyeTogdmFsaWRhdG9yIGtleSDihpIgVmFsaWRhdG9yRm4gKi9cbmV4cG9ydCBjb25zdCBWQUxJREFUT1JfUkVHSVNUUlkgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWFwPHN0cmluZywgYW55Pj4oJ1ZBTElEQVRPUl9SRUdJU1RSWScpO1xuXG4vKipcbiAqIEEgcmVnaXN0ZXJlZCBob29rOiByZWNlaXZlcyB0aGUgcGF5bG9hZCwgcmV0dXJucyBpdCAob3IgYSByZXBsYWNlbWVudCksIHN5bmMgb3IgYXN5bmMuXG4gKlxuICogU3BlbGxlZCBvdXQgcmF0aGVyIHRoYW4gdHlwZWQgYXMgYEZ1bmN0aW9uYCwgd2hpY2ggYWNjZXB0cyBjbGFzcyBkZWNsYXJhdGlvbnMgYW5kIGFueVxuICogYXJpdHkgYW5kIGdpdmVzIGEgY29uc3VtZXIgbm8gc2lnbmF0dXJlIHRvIHdyaXRlIGFnYWluc3QuXG4gKi9cbmV4cG9ydCB0eXBlIEhvb2tGbiA9IChkYXRhOiBhbnksIGNvbnRleHQ/OiB1bmtub3duKSA9PiB1bmtub3duIHwgUHJvbWlzZTx1bmtub3duPjtcblxuLyoqIFJlZ2lzdHJ5OiBob29rIGtleSDihpIgYXN5bmMgKGRhdGEsIGNvbnRleHQpID0+IGRhdGEgKi9cbmV4cG9ydCBjb25zdCBIT09LX1JFR0lTVFJZID0gbmV3IEluamVjdGlvblRva2VuPE1hcDxzdHJpbmcsIEhvb2tGbj4+KCdIT09LX1JFR0lTVFJZJyk7XG5cbi8qKlxuICogQ29uc3VtZXItcmVnaXN0ZXJlZCBsaXN0IG9mIGNvbW1vbiBtb2R1bGUgdGFicyAoZG9jdW1lbnRzLCBhdWRpdCwgdGFza3MsIGV0Yy4pLlxuICogVGhlIGxpYnJhcnkgc2hpcHMgbm8gYnVpbHQtaW4gaW1wbGVtZW50YXRpb25zLiBDb25zdW1lcnMgcHJvdmlkZSB0aGVpciBvd24gbGlzdFxuICogc28gdGhlIGJ1aWxkZXIncyBtb2R1bGUtcGlja2VyIGFuZCB0aGUgcmVuZGVyZXIncyB0YWIgc3dpdGNoZXIga25vdyB3aGF0J3MgYXZhaWxhYmxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBwcm92aWRlcnM6IFtcbiAqICAge1xuICogICAgIHByb3ZpZGU6IENPTU1PTl9NT0RVTEVTX1JFR0lTVFJZLFxuICogICAgIHVzZVZhbHVlOiBbXG4gKiAgICAgICB7IGlkOiAnZG9jdW1lbnRzJywgbGFiZWw6IHsgZW46ICdEb2N1bWVudHMnIH0sIGNvbXBvbmVudDogJ2FwcC1kb2N1bWVudHMtdmlldycgfSxcbiAqICAgICAgIHsgaWQ6ICdhdWRpdCcsICAgICBsYWJlbDogeyBlbjogJ0F1ZGl0IExvZycgIH0sIGNvbXBvbmVudDogJ2FwcC1hdWRpdCcgfSxcbiAqICAgICBdIHNhdGlzZmllcyBDb21tb25Nb2R1bGVFbnRyeVtdXG4gKiAgIH1cbiAqIF1cbiAqL1xuZXhwb3J0IGNvbnN0IENPTU1PTl9NT0RVTEVTX1JFR0lTVFJZID0gbmV3IEluamVjdGlvblRva2VuPENvbW1vbk1vZHVsZUVudHJ5W10+KFxuICAnQ09NTU9OX01PRFVMRVNfUkVHSVNUUlknLFxuKTtcblxuLyoqXG4gKiBDb25zdW1lci1wcm92aWRlZCBmaWxlL2ltYWdlIHVwbG9hZCBoYW5kbGVyLlxuICogV2hlbiBzdXBwbGllZCwgaW1hZ2UtZmllbGQgYW5kIGZpbGUtZmllbGQgY2FsbCBpdCB0byBwZXJzaXN0IHRoZSBGaWxlIGFuZCByZWNlaXZlIGEgc3RhYmxlXG4gKiBVUkwgYmFjay4gV2l0aG91dCBpdCB0aGUgZmllbGQgc3RvcmVzIGB7IGZpbGUsIG5hbWUsIHNpemUsIG1pbWVUeXBlIH1gIGZvciB0aGUgY29uc3VtZXIgdG9cbiAqIHVwbG9hZCBvbiBzdWJtaXQuIE1heSByZXR1cm4gdGhlIHJlc3VsdCBkaXJlY3RseSwgYXMgYSBQcm9taXNlLCBvciBhcyBhbiBPYnNlcnZhYmxlLlxuICpcbiAqIEBleGFtcGxlXG4gKiB7IHByb3ZpZGU6IFVQTE9BRF9IQU5ETEVSLCB1c2VGYWN0b3J5OiAoKSA9PiAoZmlsZTogRmlsZSkgPT4gbXlVcGxvYWRTZXJ2aWNlLnVwbG9hZChmaWxlKSB9XG4gKi9cbmV4cG9ydCBjb25zdCBVUExPQURfSEFORExFUiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxGaWxlVXBsb2FkSGFuZGxlcj4oJ1VQTE9BRF9IQU5ETEVSJyk7XG5cbi8qKlxuICogQmFja2luZyBzdG9yZSBmb3IgdGhlIGVudGl0eS1yZWZlcmVuY2Ugb3B0aW9ucyBjYWNoZS4gRGVmYXVsdHMgdG8gaW4tbWVtb3J5LlxuICogUHJvdmlkZSB5b3VyIG93biB0byBtYWtlIHRoZSBjYWNoZSBvdXRsaXZlIGEgcGFnZSByZWZyZXNoLlxuICpcbiAqIEBleGFtcGxlXG4gKiB7IHByb3ZpZGU6IEVOVElUWV9SRUZfQ0FDSEVfU1RPUkUsIHVzZUNsYXNzOiBTZXNzaW9uU3RvcmFnZVJlZkNhY2hlIH1cbiAqL1xuZXhwb3J0IGNvbnN0IEVOVElUWV9SRUZfQ0FDSEVfU1RPUkUgPSBuZXcgSW5qZWN0aW9uVG9rZW48RW50aXR5UmVmQ2FjaGVTdG9yZT4oXG4gICdFTlRJVFlfUkVGX0NBQ0hFX1NUT1JFJyxcbiAgeyBwcm92aWRlZEluOiAncm9vdCcsIGZhY3Rvcnk6ICgpID0+IG5ldyBJbk1lbW9yeUVudGl0eVJlZkNhY2hlU3RvcmUoKSB9LFxuKTtcblxuLyoqXG4gKiBDb25zdW1lci1wcm92aWRlZCBwcmVkaWNhdGUgZnVuY3Rpb24gdG8gY2hlY2sgd2hldGhlciB1c2VyIHJvbGVzIGNhbiBlZGl0IHN5c3RlbSBkZWZhdWx0IHRhYnMgb3IgZmllbGRzLlxuICogRGVmYXVsdHMgdG8gYWxsb3dpbmcgZWRpdHMgaWYgbm90IHByb3ZpZGVkLlxuICovXG4vKipcbiAqIENvbnN1bWVyLXByb3ZpZGVkIHByZWRpY2F0ZSBmdW5jdGlvbiB0byBjaGVjayB3aGV0aGVyIHVzZXIgcm9sZXMgY2FuIGVkaXQgc3lzdGVtIGRlZmF1bHQgdGFicyBvciBmaWVsZHMuXG4gKiBEZWZhdWx0cyB0byBhbGxvd2luZyBlZGl0cyBpZiBub3QgcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBTWVNURU1fREVGQVVMVF9DQU5fRURJVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjwocm9sZXM6IHN0cmluZ1tdKSA9PiBib29sZWFuPihcbiAgJ1NZU1RFTV9ERUZBVUxUX0NBTl9FRElUJyxcbik7XG5cbmV4cG9ydCB0eXBlIENvbmZpZ1NvdXJjZUhhbmRsZXIgPSAoXG4gIGVudGl0eUtleTogc3RyaW5nLFxuKSA9PiBhbnk7XG5cbi8qKlxuICogUmVnaXN0cnkvUmVzb2x2ZXIgZm9yIHJlc29sdmluZyBhbiBFbnRpdHlGb3JtQ29uZmlnIGJ5IGVudGl0eSBrZXkgYWNyb3NzIGVudGl0aWVzIChQaGFzZSA4KS5cbiAqIEVuYWJsZXMgY3Jvc3MtZW50aXR5IGZpZWxkIHJlZmVyZW5jaW5nIChgaXNSZWZlcmVuY2VkYCwgYHJlZmVyZW5jZWRFbnRpdHlLZXlgLCBgcmVmZXJlbmNlZEZpZWxkSWRgLCBgaGFzRHJpZnRgKS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTkZJR19TT1VSQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29uZmlnU291cmNlSGFuZGxlcj4oJ0NPTkZJR19TT1VSQ0UnKTtcblxuXG4iXX0=
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5qZWN0aW9uLXRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdG9rZW5zL2luamVjdGlvbi10b2tlbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVMvQyxPQUFPLEVBQUUsMkJBQTJCLEVBQTRCLE1BQU0sOEJBQThCLENBQUM7QUFFckcsbUdBQW1HO0FBQ25HLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxJQUFJLGNBQWMsQ0FBVyxjQUFjLENBQUMsQ0FBQztBQUV6RTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FBeUIscUJBQXFCLENBQUMsQ0FBQztBQUVyRzs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRyxJQUFJLGNBQWMsQ0FBOEIsaUJBQWlCLENBQUMsQ0FBQztBQUVsRzs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLGNBQWMsQ0FDbkQscUJBQXFCLENBQ3RCLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsSUFBSSxjQUFjLENBQWdDLGlCQUFpQixDQUFDLENBQUM7QUFFcEc7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGNBQWMsQ0FBb0IsbUJBQW1CLENBQUMsQ0FBQztBQUU1Rjs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQXNCLHFCQUFxQixDQUFDLENBQUM7QUFFbEcsNENBQTRDO0FBQzVDLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFtQixvQkFBb0IsQ0FBQyxDQUFDO0FBRTdGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHLElBQUksY0FBYyxDQUN4RCwwQkFBMEIsQ0FDM0IsQ0FBQztBQVVGLHlEQUF5RDtBQUN6RCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQXNCLGVBQWUsQ0FBQyxDQUFDO0FBRXRGOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUN2RCx5QkFBeUIsQ0FDMUIsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFvQixnQkFBZ0IsQ0FBQyxDQUFDO0FBRXRGOzs7Ozs7R0FNRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLElBQUksY0FBYyxDQUN0RCx3QkFBd0IsRUFDeEIsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLDJCQUEyQixFQUFFLEVBQUUsQ0FDekUsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLElBQUksY0FBYyxDQUN2RCx5QkFBeUIsQ0FDMUIsQ0FBQztBQU1GOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBc0IsZUFBZSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHR5cGUgeyBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbW1vbk1vZHVsZUVudHJ5LFxuICBFbnRpdHlSZWZlcmVuY2VMb2FkZXIsXG4gIEZpbGVVcGxvYWRIYW5kbGVyLFxuICBMb29rdXBMaXN0U291cmNlLFxuICBSZWNvcmRNaWdyYXRpb24sXG59IGZyb20gJ0BkeW5hbWljLWVudGl0eS9jb3JlJztcbmltcG9ydCB7IEluTWVtb3J5RW50aXR5UmVmQ2FjaGVTdG9yZSwgdHlwZSBFbnRpdHlSZWZDYWNoZVN0b3JlIH0gZnJvbSAnLi4vc2VydmljZXMvZW50aXR5LXJlZi1jYWNoZSc7XG5cbi8qKiBSb2xlcyB0aGF0IHNlZSBYWFhYWFhYWFggZm9yIG1hc2tlZCBmaWVsZHMuIFByZXNlbnRhdGlvbmFsIG9ubHkg4oCUIGVuZm9yY2UgYXV0aHogc2VydmVyLXNpZGUuICovXG5leHBvcnQgY29uc3QgTUFTS0VEX1JPTEVTID0gbmV3IEluamVjdGlvblRva2VuPHN0cmluZ1tdPignTUFTS0VEX1JPTEVTJyk7XG5cbi8qKlxuICogQ29uc3VtZXIgKipvdmVycmlkZXMqKjogZmllbGRUeXBlIHN0cmluZyDihpIgQW5ndWxhciBjb21wb25lbnQgY2xhc3MuXG4gKiBIaWdoZXN0IHByaW9yaXR5IOKAlCBiZWF0cyBhbnl0aGluZyByZWdpc3RlcmVkIHRocm91Z2ggYHByb3ZpZGVGaWVsZFR5cGVzKClgLlxuICovXG5leHBvcnQgY29uc3QgRklFTERfVFlQRV9SRUdJU1RSWSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNYXA8c3RyaW5nLCBUeXBlPGFueT4+PignRklFTERfVFlQRV9SRUdJU1RSWScpO1xuXG4vKipcbiAqIE11bHRpLXByb3ZpZGVyIG9mIGZpZWxkLXR5cGUgc2V0cywgY29udHJpYnV0ZWQgYnkgYHByb3ZpZGVGaWVsZFR5cGVzKClgIC9cbiAqIGBwcm92aWRlQnVpbHRJbkZpZWxkVHlwZXMoKWAuIE11bHRpIHNvIHNldmVyYWwgY2FsbHMgY29tcG9zZSBpbnN0ZWFkIG9mIGNsb2JiZXJpbmc7XG4gKiBsYXRlciBzZXRzIHdpbiBvbiBrZXkgY29sbGlzaW9uLiBUaGlzIGlzIHRoZSBzZWFtIHRoYXQga2VlcHMgdW51c2VkIGZpZWxkIGNvbXBvbmVudHNcbiAqIG91dCBvZiB0aGUgYnVuZGxlIOKAlCBub3RoaW5nIGlzIGltcG9ydGVkIHVudGlsIGEgc2V0IG5hbWVzIGl0LlxuICovXG5leHBvcnQgY29uc3QgRklFTERfVFlQRV9TRVRTID0gbmV3IEluamVjdGlvblRva2VuPFJlY29yZDxzdHJpbmcsIFR5cGU8YW55Pj5bXT4oJ0ZJRUxEX1RZUEVfU0VUUycpO1xuXG4vKipcbiAqIFJlZ2lzdHJ5OiBlbnRpdHkga2V5IOKGkiBvcHRpb24gbG9hZGVyLlxuICpcbiAqIEEgbG9hZGVyIHJlY2VpdmVzIGEgYFJlZmVyZW5jZUxvYWRlckNvbnRleHRgIChgcGFyZW50VmFsdWVgLCBgZmlsdGVyc2AsIGBsYW5nYCkgYW5kIG1heVxuICogcmV0dXJuIGFuIGFycmF5LCBhIFByb21pc2UsIG9yIGFuIE9ic2VydmFibGUgb2YgYFJlZmVyZW5jZU9wdGlvbltdYC4gYGN0eGAgaXMgb3B0aW9uYWwsXG4gKiBzbyBhIHplcm8tYXJnIGxvYWRlciAoYCgpID0+IHN2Yy5saXN0KClgKSBpcyBzdGlsbCBhIHZhbGlkIHJlZ2lzdHJhdGlvbi5cbiAqL1xuZXhwb3J0IGNvbnN0IEVOVElUWV9SRUZfUkVHSVNUUlkgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWFwPHN0cmluZywgRW50aXR5UmVmZXJlbmNlTG9hZGVyPj4oXG4gICdFTlRJVFlfUkVGX1JFR0lTVFJZJyxcbik7XG5cbi8qKlxuICogUmVnaXN0cnk6IGxpc3QgbmFtZSDihpIgdGhlIHZhbHVlcyBvZiBhIG5hbWVkIG1hc3RlciBsaXN0IChgZmllbGQubGlzdE5hbWVgKS5cbiAqXG4gKiBBIHNvdXJjZSBtYXkgYmUgdGhlIHZhbHVlcyB0aGVtc2VsdmVzIChhcnJheSAvIFByb21pc2UgLyBPYnNlcnZhYmxlKSBvciBhICoqbG9hZGVyIGZ1bmN0aW9uKiosXG4gKiB3aGljaCBpcyB3aGF0IHlvdSB3YW50IGZvciBhbnl0aGluZyBmZXRjaGVkOiBhIGJhcmUgUHJvbWlzZSBpcyBjcmVhdGVkIHdoZW4gdGhlIHByb3ZpZGVyIGlzXG4gKiBidWlsdCwgc28gZXZlcnkgbGlzdCB3b3VsZCBsb2FkIHdoZXRoZXIgb3Igbm90IGEgZm9ybSB1c2VzIGl0LlxuICpcbiAqIFZhbHVlcyBhcmUgbm9ybWFsaXNlZCBieSBgbm9ybWFsaXplTG9va3VwVmFsdWVzYCDigJQgYmFyZSBzdHJpbmdzIGFuZCBgTG9jYWxpemVkVGV4dGAgYXJlXG4gKiBhY2NlcHRlZCBhbG9uZ3NpZGUgdGhlIGZ1bGwgYHsgY29kZSwgbmFtZSwgc29ydE9yZGVyIH1gIHNoYXBlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBwcm92aWRlTmd4RHluYW1pY0VudGl0eSh7XG4gKiAgIGxvb2t1cHM6IHtcbiAqICAgICBlbXBsb3llZVN0YXR1czogKCkgPT4gbGlzdFNlcnZpY2UuZ2V0QnlOYW1lKCdlbXBsb3llZVN0YXR1cycpLFxuICogICAgIGdyYWRlczogWydKdW5pb3InLCAnU2VuaW9yJ10sXG4gKiAgIH0sXG4gKiB9KVxuICovXG5leHBvcnQgY29uc3QgTE9PS1VQX1JFR0lTVFJZID0gbmV3IEluamVjdGlvblRva2VuPE1hcDxzdHJpbmcsIExvb2t1cExpc3RTb3VyY2U+PignTE9PS1VQX1JFR0lTVFJZJyk7XG5cbi8qKlxuICogT3JkZXJlZCBzdGVwcyB0aGF0IG1vdmUgYSBzYXZlZCByZWNvcmQgZm9yd2FyZCB3aGVuIGEgY29uZmlnJ3MgYHZlcnNpb25gIGluY3JlYXNlcy5cbiAqXG4gKiBXaXRob3V0IHRoZXNlLCBgRW50aXR5Rm9ybUNvbmZpZy52ZXJzaW9uYCBhbmQgYFZlcnNpb25lZFJlY29yZC5fY29uZmlnVmVyc2lvbmAgYXJlXG4gKiBkZWNsYXJhdGlvbnMgbm90aGluZyBhY3RzIG9uOiBhIHNjaGVtYSBjYW4gYmUgZWRpdGVkIGZyZWVseSB3aGlsZSByZWNvcmRzIGtlZXAgdGhlaXIgb2xkXG4gKiBzaGFwZSwgYW5kIG5vdGhpbmcgcmVjb25jaWxlcyB0aGUgdHdvLiBSZWdpc3RlcmluZyBtaWdyYXRpb25zIG1ha2VzIHRoZSB2ZXJzaW9uIG51bWJlcnNcbiAqIG1lYW4gc29tZXRoaW5nLlxuICpcbiAqIEBleGFtcGxlXG4gKiBwcm92aWRlTmd4RHluYW1pY0VudGl0eSh7XG4gKiAgIG1pZ3JhdGlvbnM6IFtcbiAqICAgICB7IGZyb206IDEsIHRvOiAyLCBkZXNjcmlwdGlvbjogJ3NwbGl0IG5hbWUnLCBtaWdyYXRlOiByID0+ICh7IC4uLnIsIGZpcnN0TmFtZTogclsnbmFtZSddIH0pIH0sXG4gKiAgIF0sXG4gKiB9KVxuICovXG5leHBvcnQgY29uc3QgUkVDT1JEX01JR1JBVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48UmVjb3JkTWlncmF0aW9uW10+KCdSRUNPUkRfTUlHUkFUSU9OUycpO1xuXG4vKipcbiAqIE92ZXJyaWRlcyBmb3IgdGhlIG1lc3NhZ2VzIHNob3duIHVuZGVyIGFuIGludmFsaWQgZmllbGQsIGtleWVkIGJ5IEFuZ3VsYXIgZXJyb3Iga2V5XG4gKiAoYHJlcXVpcmVkYCwgYG1pbmxlbmd0aGAsIGBwYXR0ZXJuYCwg4oCmKSBwbHVzIGEgZmV3IGZpZWxkLXNwZWNpZmljIGtleXMuXG4gKlxuICogVGhlIGJ1aWx0LWluIG1lc3NhZ2VzIGFyZSBFbmdsaXNoIGxpdGVyYWxzLiBSZWdpc3RlcmluZyBoZXJlIGlzIHdoYXQgbWFrZXMgYSBub24tRW5nbGlzaFxuICogZm9ybSBwb3NzaWJsZSB3aXRob3V0IHJlLWltcGxlbWVudGluZyBldmVyeSBmaWVsZCBjb21wb25lbnQ7IHVubGlzdGVkIGtleXMga2VlcCB0aGVpclxuICogZGVmYXVsdCwgc28gb3ZlcnJpZGluZyBvbmUgZG9lcyBub3QgbWVhbiBzdXBwbHlpbmcgdGhlbSBhbGwuXG4gKi9cbmV4cG9ydCBjb25zdCBWQUxJREFUSU9OX01FU1NBR0VTID0gbmV3IEluamVjdGlvblRva2VuPFJlY29yZDxzdHJpbmcsIGFueT4+KCdWQUxJREFUSU9OX01FU1NBR0VTJyk7XG5cbi8qKiBSZWdpc3RyeTogdmFsaWRhdG9yIGtleSDihpIgVmFsaWRhdG9yRm4gKi9cbmV4cG9ydCBjb25zdCBWQUxJREFUT1JfUkVHSVNUUlkgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWFwPHN0cmluZywgYW55Pj4oJ1ZBTElEQVRPUl9SRUdJU1RSWScpO1xuXG4vKipcbiAqIFJlZ2lzdHJ5OiB2YWxpZGF0b3Iga2V5IOKGkiBBc3luY1ZhbGlkYXRvckZuLlxuICpcbiAqIEtlcHQgc2VwYXJhdGUgZnJvbSBWQUxJREFUT1JfUkVHSVNUUlkgYmVjYXVzZSBBbmd1bGFyIGFwcGxpZXMgdGhlIHR3byBkaWZmZXJlbnRseTogYW4gYXN5bmNcbiAqIHZhbGlkYXRvciBydW5zIG9ubHkgb25jZSB0aGUgc3luY2hyb25vdXMgb25lcyBwYXNzLCBhbmQgcHV0cyB0aGUgY29udHJvbCBpbnRvIGBwZW5kaW5nYFxuICogd2hpbGUgaXQgZG9lcy4gTmFtZSB0aGVtIGZyb20gYSBzY2hlbWEgd2l0aCBgdmFsaWRhdG9yczogeyBjdXN0b21Bc3luYzogWyd1bmlxdWVFbWFpbCddIH1gLlxuICovXG5leHBvcnQgY29uc3QgQVNZTkNfVkFMSURBVE9SX1JFR0lTVFJZID0gbmV3IEluamVjdGlvblRva2VuPE1hcDxzdHJpbmcsIGFueT4+KFxuICAnQVNZTkNfVkFMSURBVE9SX1JFR0lTVFJZJyxcbik7XG5cbi8qKlxuICogQSByZWdpc3RlcmVkIGhvb2s6IHJlY2VpdmVzIHRoZSBwYXlsb2FkLCByZXR1cm5zIGl0IChvciBhIHJlcGxhY2VtZW50KSwgc3luYyBvciBhc3luYy5cbiAqXG4gKiBTcGVsbGVkIG91dCByYXRoZXIgdGhhbiB0eXBlZCBhcyBgRnVuY3Rpb25gLCB3aGljaCBhY2NlcHRzIGNsYXNzIGRlY2xhcmF0aW9ucyBhbmQgYW55XG4gKiBhcml0eSBhbmQgZ2l2ZXMgYSBjb25zdW1lciBubyBzaWduYXR1cmUgdG8gd3JpdGUgYWdhaW5zdC5cbiAqL1xuZXhwb3J0IHR5cGUgSG9va0ZuID0gKGRhdGE6IGFueSwgY29udGV4dD86IHVua25vd24pID0+IHVua25vd24gfCBQcm9taXNlPHVua25vd24+O1xuXG4vKiogUmVnaXN0cnk6IGhvb2sga2V5IOKGkiBhc3luYyAoZGF0YSwgY29udGV4dCkgPT4gZGF0YSAqL1xuZXhwb3J0IGNvbnN0IEhPT0tfUkVHSVNUUlkgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWFwPHN0cmluZywgSG9va0ZuPj4oJ0hPT0tfUkVHSVNUUlknKTtcblxuLyoqXG4gKiBDb25zdW1lci1yZWdpc3RlcmVkIGxpc3Qgb2YgY29tbW9uIG1vZHVsZSB0YWJzIChkb2N1bWVudHMsIGF1ZGl0LCB0YXNrcywgZXRjLikuXG4gKiBUaGUgbGlicmFyeSBzaGlwcyBubyBidWlsdC1pbiBpbXBsZW1lbnRhdGlvbnMuIENvbnN1bWVycyBwcm92aWRlIHRoZWlyIG93biBsaXN0XG4gKiBzbyB0aGUgYnVpbGRlcidzIG1vZHVsZS1waWNrZXIgYW5kIHRoZSByZW5kZXJlcidzIHRhYiBzd2l0Y2hlciBrbm93IHdoYXQncyBhdmFpbGFibGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIHByb3ZpZGVyczogW1xuICogICB7XG4gKiAgICAgcHJvdmlkZTogQ09NTU9OX01PRFVMRVNfUkVHSVNUUlksXG4gKiAgICAgdXNlVmFsdWU6IFtcbiAqICAgICAgIHsgaWQ6ICdkb2N1bWVudHMnLCBsYWJlbDogeyBlbjogJ0RvY3VtZW50cycgfSwgY29tcG9uZW50OiAnYXBwLWRvY3VtZW50cy12aWV3JyB9LFxuICogICAgICAgeyBpZDogJ2F1ZGl0JywgICAgIGxhYmVsOiB7IGVuOiAnQXVkaXQgTG9nJyAgfSwgY29tcG9uZW50OiAnYXBwLWF1ZGl0JyB9LFxuICogICAgIF0gc2F0aXNmaWVzIENvbW1vbk1vZHVsZUVudHJ5W11cbiAqICAgfVxuICogXVxuICovXG5leHBvcnQgY29uc3QgQ09NTU9OX01PRFVMRVNfUkVHSVNUUlkgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tbW9uTW9kdWxlRW50cnlbXT4oXG4gICdDT01NT05fTU9EVUxFU19SRUdJU1RSWScsXG4pO1xuXG4vKipcbiAqIENvbnN1bWVyLXByb3ZpZGVkIGZpbGUvaW1hZ2UgdXBsb2FkIGhhbmRsZXIuXG4gKiBXaGVuIHN1cHBsaWVkLCBpbWFnZS1maWVsZCBhbmQgZmlsZS1maWVsZCBjYWxsIGl0IHRvIHBlcnNpc3QgdGhlIEZpbGUgYW5kIHJlY2VpdmUgYSBzdGFibGVcbiAqIFVSTCBiYWNrLiBXaXRob3V0IGl0IHRoZSBmaWVsZCBzdG9yZXMgYHsgZmlsZSwgbmFtZSwgc2l6ZSwgbWltZVR5cGUgfWAgZm9yIHRoZSBjb25zdW1lciB0b1xuICogdXBsb2FkIG9uIHN1Ym1pdC4gTWF5IHJldHVybiB0aGUgcmVzdWx0IGRpcmVjdGx5LCBhcyBhIFByb21pc2UsIG9yIGFzIGFuIE9ic2VydmFibGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIHsgcHJvdmlkZTogVVBMT0FEX0hBTkRMRVIsIHVzZUZhY3Rvcnk6ICgpID0+IChmaWxlOiBGaWxlKSA9PiBteVVwbG9hZFNlcnZpY2UudXBsb2FkKGZpbGUpIH1cbiAqL1xuZXhwb3J0IGNvbnN0IFVQTE9BRF9IQU5ETEVSID0gbmV3IEluamVjdGlvblRva2VuPEZpbGVVcGxvYWRIYW5kbGVyPignVVBMT0FEX0hBTkRMRVInKTtcblxuLyoqXG4gKiBCYWNraW5nIHN0b3JlIGZvciB0aGUgZW50aXR5LXJlZmVyZW5jZSBvcHRpb25zIGNhY2hlLiBEZWZhdWx0cyB0byBpbi1tZW1vcnkuXG4gKiBQcm92aWRlIHlvdXIgb3duIHRvIG1ha2UgdGhlIGNhY2hlIG91dGxpdmUgYSBwYWdlIHJlZnJlc2guXG4gKlxuICogQGV4YW1wbGVcbiAqIHsgcHJvdmlkZTogRU5USVRZX1JFRl9DQUNIRV9TVE9SRSwgdXNlQ2xhc3M6IFNlc3Npb25TdG9yYWdlUmVmQ2FjaGUgfVxuICovXG5leHBvcnQgY29uc3QgRU5USVRZX1JFRl9DQUNIRV9TVE9SRSA9IG5ldyBJbmplY3Rpb25Ub2tlbjxFbnRpdHlSZWZDYWNoZVN0b3JlPihcbiAgJ0VOVElUWV9SRUZfQ0FDSEVfU1RPUkUnLFxuICB7IHByb3ZpZGVkSW46ICdyb290JywgZmFjdG9yeTogKCkgPT4gbmV3IEluTWVtb3J5RW50aXR5UmVmQ2FjaGVTdG9yZSgpIH0sXG4pO1xuXG4vKipcbiAqIENvbnN1bWVyLXByb3ZpZGVkIHByZWRpY2F0ZSBmdW5jdGlvbiB0byBjaGVjayB3aGV0aGVyIHVzZXIgcm9sZXMgY2FuIGVkaXQgc3lzdGVtIGRlZmF1bHQgdGFicyBvciBmaWVsZHMuXG4gKiBEZWZhdWx0cyB0byBhbGxvd2luZyBlZGl0cyBpZiBub3QgcHJvdmlkZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBTWVNURU1fREVGQVVMVF9DQU5fRURJVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjwocm9sZXM6IHN0cmluZ1tdKSA9PiBib29sZWFuPihcbiAgJ1NZU1RFTV9ERUZBVUxUX0NBTl9FRElUJyxcbik7XG5cbmV4cG9ydCB0eXBlIENvbmZpZ1NvdXJjZUhhbmRsZXIgPSAoXG4gIGVudGl0eUtleTogc3RyaW5nLFxuKSA9PiBhbnk7XG5cbi8qKlxuICogUmVnaXN0cnkvUmVzb2x2ZXIgZm9yIHJlc29sdmluZyBhbiBFbnRpdHlGb3JtQ29uZmlnIGJ5IGVudGl0eSBrZXkgYWNyb3NzIGVudGl0aWVzIChQaGFzZSA4KS5cbiAqIEVuYWJsZXMgY3Jvc3MtZW50aXR5IGZpZWxkIHJlZmVyZW5jaW5nIChgaXNSZWZlcmVuY2VkYCwgYHJlZmVyZW5jZWRFbnRpdHlLZXlgLCBgcmVmZXJlbmNlZEZpZWxkSWRgLCBgaGFzRHJpZnRgKS5cbiAqL1xuZXhwb3J0IGNvbnN0IENPTkZJR19TT1VSQ0UgPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29uZmlnU291cmNlSGFuZGxlcj4oJ0NPTkZJR19TT1VSQ0UnKTtcblxuXG4iXX0=
|