@quadrel-enterprise-ui/framework 18.19.1 → 18.19.2
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/esm2022/lib/notifications/notification/notification.component.mjs +37 -1
- package/esm2022/lib/notifications/services/notifications-http-interceptor.service.mjs +39 -7
- package/esm2022/lib/qd-ui.module.mjs +5 -4
- package/fesm2022/quadrel-ui-qd-ui.mjs +77 -8
- package/fesm2022/quadrel-ui-qd-ui.mjs.map +1 -1
- package/lib/notifications/notification/notification.component.d.ts +36 -0
- package/lib/notifications/services/notifications-http-interceptor.service.d.ts +5 -2
- package/lib/qd-ui.module.d.ts +1 -1
- package/package.json +1 -1
|
@@ -99,6 +99,42 @@ import * as i5 from "@ngx-translate/core";
|
|
|
99
99
|
* }
|
|
100
100
|
* ```
|
|
101
101
|
*
|
|
102
|
+
* ### Whitelisting HTTP status codes
|
|
103
|
+
*
|
|
104
|
+
* In some cases, you might want to prevent certain HTTP status codes from triggering error notifications. For example, a 304 Not Modified response is not actually an error and should not display an error notification. The **QdUiModule** allows you to whitelist specific HTTP status codes.
|
|
105
|
+
*
|
|
106
|
+
* To whitelist HTTP status codes, pass an array of status codes as the third parameter to the **QdUiModule.forRoot** method:
|
|
107
|
+
*
|
|
108
|
+
* ```typescript
|
|
109
|
+
* import { HttpStatusCode } from '@angular/common/http';
|
|
110
|
+
*
|
|
111
|
+
* imports: [
|
|
112
|
+
* ...
|
|
113
|
+
* QdUiModule.forRoot(
|
|
114
|
+
* appEnvironment,
|
|
115
|
+
* ErrorCodes,
|
|
116
|
+
* [HttpStatusCode.NotModified, HttpStatusCode.NoContent] // Whitelist 304 Not Modified and 204 No Content
|
|
117
|
+
* ),
|
|
118
|
+
* ...
|
|
119
|
+
* ]
|
|
120
|
+
* ```
|
|
121
|
+
*
|
|
122
|
+
* When a response with a whitelisted status code is received, no error notification will be displayed, even if it would normally be treated as an error by the HTTP client.
|
|
123
|
+
*
|
|
124
|
+
* ### Blacklisting HTTP status codes
|
|
125
|
+
*
|
|
126
|
+
* For critical errors, notifications are always shown, even if the status code is whitelisted. The **QdUiModule** implements a fixed blacklist that takes precedence over the whitelist.
|
|
127
|
+
*
|
|
128
|
+
* The following status codes are permanently blacklisted:
|
|
129
|
+
* - 401 Unauthorized
|
|
130
|
+
* - 402 Payment Required
|
|
131
|
+
* - 403 Forbidden
|
|
132
|
+
* - All 5xx server error codes (500-511)
|
|
133
|
+
*
|
|
134
|
+
* These critical errors will always show notifications, even if they are included in the whitelist.
|
|
135
|
+
*
|
|
136
|
+
* **Important**: The blacklist has higher precedence than the whitelist. If a status code appears in both the whitelist and the blacklist, it will be treated as blacklisted, and an error notification will be shown.
|
|
137
|
+
*
|
|
102
138
|
* ### Component:
|
|
103
139
|
*
|
|
104
140
|
* ```typescript
|
|
@@ -508,4 +544,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
508
544
|
type: HostBinding,
|
|
509
545
|
args: ['attr.class']
|
|
510
546
|
}] } });
|
|
511
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztBQUVqRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWliRztBQU9ILE1BQU0sT0FBTyx1QkFBdUI7SUFvQmY7SUFDQTtJQUNUO0lBckJWOztPQUVHO0lBQ00sSUFBSSxHQUF1QixVQUFVLENBQUM7SUFFL0M7O09BRUc7SUFDTSxZQUFZLENBQWlCO0lBRXRDLElBQStCLGFBQWE7UUFDMUMsT0FBTyxtQ0FBbUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxZQUNtQixtQkFBMkMsRUFDM0MsZUFBa0MsRUFDM0MsT0FBbUI7UUFGVix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBQzNDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUMzQyxZQUFPLEdBQVAsT0FBTyxDQUFZO0lBQzFCLENBQUM7SUFFSixPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPO1FBQ0wsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN2QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyx3QkFBd0IsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3RCxDQUFDO3VHQXhEVSx1QkFBdUI7MkZBQXZCLHVCQUF1QixnTkM5YnBDLGdpQkFVQTs7MkZEb2JhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxpQkFBaUIsUUFHckIsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7b0pBTXpCLElBQUk7c0JBQVosS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQUV5QixhQUFhO3NCQUEzQyxXQUFXO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtc3RyaWN0LWlnbm9yZVxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFFkTm90aWZpY2F0aW9uLCBRZE5vdGlmaWNhdGlvblR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgUWROb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbnMtc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IFFkU25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XG5cbi8qKlxuICogICoqUWROb3RpZmljYXRpb24qKiBkaXNwbGF5cyBhIHNpbmdsZSBub3RpZmljYXRpb24gaXRlbSB3aXRoaW4gYSAqKlFkTm90aWZpY2F0aW9ucyoqIGNvbnRhaW5lci5cbiAqXG4gKiAjIE5vdGlmaWNhdGlvbnMgU2VydmljZVxuICpcbiAqIFRoZSAqKk5vdGlmaWNhdGlvbnMgU2VydmljZSoqIGNhbiBiZSB1c2VkIHRvIGNhdGNoIGVycm9ycyBmcm9tIHRoZSBiYWNrZW5kLiBJbiBhZGRpdGlvbiwgdGhpcyBzZXJ2aWNlIHByb3ZpZGVzIHNldmVyYWwgbWV0aG9kcyB0byBkaXNwbGF5IG1lc3NhZ2VzLlxuICpcbiAqICMjIE5vdGlmaWNhdGlvbiBmcm9tIEJhY2tlbmRcbiAqXG4gKiBUaGUgKipRZFVpTW9kdWxlKiogcHJvdmlkZXMgYW4gSFRUUCBpbnRlcmNlcHRvciB0aGF0IGRpc3BsYXlzIHJlcXVlc3QgZXJyb3JzIGFzIHNuYWNrYmFyIG5vdGlmaWNhdGlvbnMuIFRvIGdldCB0aGUgcHJvcGVyIG5vdGlmaWNhdGlvbiBtZXNzYWdlcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgYmFja2VuZCBlcnJvcnMsIHBsZWFzZSBjb21wbHkgd2l0aCB0aGVzZSBjb252ZW50aW9ucy5cbiAqXG4gKiAjIyMgRXhhbXBsZSBvZiBhIHJlc3BvbnNlIG9iamVjdFxuICpcbiAqIFRoZSBiYWNrZW5kIHNlcnZpY2UgcmVzcG9uc2UgaGFzIHRvIGNvbnRhaW4gYW4gZXJyb3JDb2RlIGZpZWxkLiBUaGlzIGVycm9yIGNvZGUgd2lsbCBiZSBtYXBwZWQgdG8gZ2V0IHRoZSB0cmFuc2xhdGlvbiBmb3IgdGhlIG5vdGlmaWNhdGlvbiBtZXNzYWdlLlxuICpcbiAqIGBgYGpzb25cbiAqIHtcbiAqICAgXCJlcnJvckNvZGVcIjogXCJUUkFOU1BPUlRfQ09DS1BJVF9QRVJTSVNURU5DRV9FUlJPUlwiLFxuICogICBcImVycm9yTWVzc2FnZVwiOiBcIlRSQU5TUE9SVF9DT0NLUElUX1BFUlNJU1RFTkNFX0VSUk9SOiBDb3VsZCBub3QgZmluZCBEZWNsYXJhdGlvbiB3aWggaWQ6IGI3OGUwNzM0LWFlMWItNDM0ZS1iNDRkLWI0ODc5N2Y1Njk2ZFwiXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgRGVmaW5lIEVycm9yIENvZGVzIGluIHRoZSBRZFVpTW9kdWxlXG4gKlxuICogVGhlICoqUWRVaU1vZHVsZSoqIGV4cGVjdHMgYW4gZW51bSB3aXRoIGVycm9yIGNvZGVzIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyLiBGb3IgdGhlc2UgZ2l2ZW4gZXJyb3IgY29kZXMgeW91IGNhbiBkZWZpbmUgc3BlY2lmaWMgbm90aWZpY2F0aW9uIG1lc3NhZ2VzLlxuICpcbiAqIFRoaXMgaXMgYW4gZXhhbXBsZSBjb25maWd1cmF0aW9uIG9mIHRoZSAqKlFkVWlNb2R1bGUqKiBpbiB0aGUgKiphcHAubW9kdWxlLnRzKiouXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogZW51bSBFcnJvckNvZGVzIHtcbiAqICAgVFJBTlNQT1JUX0NPQ0tQSVRfUEVSU0lTVEVOQ0VfRVJST1IsXG4gKiAgIFRSQU5TUE9SVF9DT0NLUElUX1ZBTElEQVRJT05fRVJST1JcbiAqIH1cbiAqIGBgYFxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydHM6IFtcbiAqICAgLi4uXG4gKiAgIFFkVWlNb2R1bGUuZm9yUm9vdChhcHBFbnZpcm9ubWVudCwgRXJyb3JDb2RlcyksXG4gKiAgIC4uLlxuICogXVxuICogYGBgXG4gKlxuICogIyMjIFRyYW5zbGF0aW9uczpcbiAqXG4gKiBZb3UgY2FuIGRlZmluZSB0aGUgc3BlY2lmaWMgYmFja2VuZCBlcnJvciBub3RpZmljYXRpb24gbWVzc2FnZXMgZm9yIHRoZSByZXNwZWN0aXZlIGVycm9yIGNvZGVzIHVuZGVyIGBcIkVSUk9SXCJgIGluIHRoZSB0cmFuc2xhdGlvbiBmaWxlcy5cbiAqXG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIC4uLlxuICpcbiAqICAgXCJFUlJPUlwiOiB7XG4gKiAgICAgXCJUUkFOU1BPUlRfQ09DS1BJVF9QRVJTSVNURU5DRV9FUlJPUlwiOiBcIkluIGRlciBEYXRlbmJhbmsgaXN0IGVpbiBGZWhsZXIgYXVmZ2V0cmV0ZW5cIixcbiAqICAgICBcIlRSQU5TUE9SVF9DT0NLUElUX1ZBTElEQVRJT05fRVJST1JcIjogXCJVbmfDvGx0aWdlIEVpbmdhYmVcIlxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgRGVmYXVsdCBlcnJvciBtZXNzYWdlc1xuICpcbiAqIEEgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGlzIHNob3duIGlmIG5vIGVycm9yIGNvZGUgaXMgZ2l2ZW4gaW4gdGhlIGJhY2tlbmQgcmVzcG9uc2Ugb3IgdGhlIGVycm9yIGNvZGUgaXMgbm90IGRlZmluZWQgaW4gdGhlIGBFcnJvckNvZGVzYCBlbnVtIHRoYXQgeW91IHBhc3MgdG8gdGhlICoqUWRVaU1vZHVsZSoqLlxuICpcbiAqIFRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2VzIHlvdSBoYXZlIHRvIGFkZCB0aGUgY29ycmVzcG9uZGluZyBIVFRQIGVycm9yIGNvZGUgaW4gdGhlIGBFcnJvckNvZGVzYCBlbnVtLiBUaGVuIHlvdSBjYW4gZGVmaW5lIGEgY3VzdG9tIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSBpbiB0aGUgdHJhbnNsYXRpb24gZmlsZXMuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogZW51bSBFcnJvckNvZGVzIHtcbiAqICAgLi4uLFxuICogICBIVFRQX0JBRF9SRVFVRVNULFxuICogICBIVFRQX1VOQVVUSE9SSVpFRCxcbiAqICAgSFRUUF9GT1JCSURERU4sXG4gKiAgIEhUVFBfTk9UX0ZPVU5ELFxuICogICBIVFRQX1NFUlZFUl9FUlJPUixcbiAqICAgSFRUUF9VTktOT1dOX0VSUk9SXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIC4uLlxuICpcbiAqICAgXCJFUlJPUlwiOiB7XG4gKiAgICAgXCJIVFRQX0JBRF9SRVFVRVNUXCI6IFwiVGhpcyBpcyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIGZvciBhIHJlc3BvbnNlIHdpdGggdGhlIEhUVFAgc3RhdHVzIGNvZGUgNDAwLlwiLFxuICogICAgIFwiSFRUUF9VTkFVVEhPUklaRURcIjogXCJUaGlzIGlzIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2UgZm9yIGEgcmVzcG9uc2Ugd2l0aCB0aGUgSFRUUCBzdGF0dXMgY29kZSA0MDEuXCIsXG4gKiAgICAgXCJIVFRQX0ZPUkJJRERFTlwiOiBcIlRoaXMgaXMgYSBjdXN0b20gZXJyb3IgbWVzc2FnZSBmb3IgYSByZXNwb25zZSB3aXRoIHRoZSBIVFRQIHN0YXR1cyBjb2RlIDQwMy5cIixcbiAqICAgICBcIkhUVFBfTk9UX0ZPVU5EXCI6IFwiVGhpcyBpcyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIGZvciBhIHJlc3BvbnNlIHdpdGggdGhlIEhUVFAgc3RhdHVzIGNvZGUgNDA0LlwiLFxuICogICAgIFwiSFRUUF9TRVJWRVJfRVJST1JcIjogXCJUaGlzIGlzIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2UgZm9yIGEgcmVzcG9uc2Ugd2l0aCBzb21lIHNlcnZlciBlcnJvciAoSFRUUCBzdGF0dXMgY29kZSA1eHgpLlwiLFxuICogICAgIFwiSFRUUF9VTktOT1dOX0VSUk9SXCI6IFwiVGhpcyBpcyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIGZvciBhbGwgb3RoZXIgZXJyb3JzLlwiXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyBDb21wb25lbnQ6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgTXlOb3RpZmljYXRpb25Db21wb25lbnQge1xuICogICBkYXRhO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuICpcbiAqICAgcHJpdmF0ZSBzZXREYXRhKGRhdGEpIHtcbiAqICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICogICB9XG4gKlxuICogICBwdWJsaWMgY2FsbEFwaUVuZFBvaW50KCkge1xuICogICAgIC8vIFRoaXMgd2F5IHlvdSBjYW4gZGlzcGxheSB0aGUgY29udGVudCBpbiB0aGUgZnJvbnRlbmQuXG4gKiAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoJ3JvdXRlL3RvL2VuZHBvaW50Jykuc3Vic2NyaWJlKHtcbiAqICAgICAgIG5leHQ6IHJlcyA9PiB0aGlzLnNldERhdGEocmVzKSxcbiAqICAgICAgIGVycm9yOiBlcnIgPT4gdGhpcy5zZXREYXRhKGVycilcbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhlIGVycm9ycyBhcmUgcmVuZGVyZWQgaW50byBhIGNvbnRhaW5lciwgd2hpY2ggYnkgZGVmYXVsdCBoYXMgdGhlIGF0dHJpYnV0ZSBgY29udGV4dD1cInFkUGFuZWxcImAuXG4gKlxuICogYGBgaHRtbFxuICogPCEtLSBMYW5kaW5nIHBhZCBmb3Igbm90aWZpY2F0aW9ucyAtLT5cbiAqIDxxZC1ub3RpZmljYXRpb25zPjwvcWQtbm90aWZpY2F0aW9ucz5cbiAqIGBgYFxuICpcbiAqICMjIE5vdGlmaWNhdGlvbnMgdmlhIHNlcnZpY2VcbiAqXG4gKiAjIyMgSW50ZXJmYWNlczpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcmZhY2UgUWROb3RpZmljYXRpb24ge1xuICogICB1dWlkPzogc3RyaW5nO1xuICogICBjb250ZXh0Pzogc3RyaW5nO1xuICogICB0eXBlOiBRZE5vdGlmaWNhdGlvblR5cGU7XG4gKiAgIGkxOG46IFFkTm90aWZpY2F0aW9uVHJhbnNsYXRpb247XG4gKiAgIHRpdGxlPzogUWROb3RpZmljYXRpb25UaXRsZTtcbiAqICAgZGF0ZT86IERhdGU7XG4gKiAgIGxpZmVUaW1lPzogbnVtYmVyO1xuICogICBkaXNhYmxlQ2xvc2U/OiBib29sZWFuO1xuICogICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbiAqICAgc2hvd0FzU25hY2tiYXI/OiBib29sZWFuO1xuICogICBzbmFja2Jhck9wdGlvbnM/OiBRZFNuYWNrYmFyTm90aWZpY2F0aW9uT3B0aW9ucztcbiAqICAgc2hvd0FzT3NOb3RpZmljYXRpb24/OiBib29sZWFuO1xuICogICBvc05vdGlmaWNhdGlvbk9wdGlvbnM/OiBRZE9zTm90aWZpY2F0aW9uT3B0aW9ucztcbiAqIH1cbiAqXG4gKiB0eXBlIFFkTm90aWZpY2F0aW9uVHlwZSA9ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdjcml0aWNhbCcgfCAnc3VjY2Vzcyc7XG4gKlxuICogdHlwZSBRZE5vdGlmaWNhdGlvblRyYW5zbGF0aW9uID0gc3RyaW5nO1xuICogdHlwZSBRZE5vdGlmaWNhdGlvblRpdGxlID0geyBpMThuOiBzdHJpbmcgfTtcbiAqXG4gKiB0eXBlIFFkTm90aWZpY2F0aW9ucyA9IFFkTm90aWZpY2F0aW9uW107XG4gKlxuICogaW50ZXJmYWNlIFFkU25hY2tiYXJOb3RpZmljYXRpb25PcHRpb25zIHtcbiAqICAgbGlmZVRpbWU/OiBudW1iZXI7XG4gKiAgIGRpc2FibGVDbG9zZT86IGJvb2xlYW47XG4gKiAgIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICogfVxuICpcbiAqIGludGVyZmFjZSBRZE9zTm90aWZpY2F0aW9uT3B0aW9ucyB7XG4gKiAgIHNpbGVudD86IGJvb2xlYW47XG4gKiAgIGxpZmVUaW1lPzogbnVtYmVyO1xuICogICBvbkNsb3NlPzogKGV2ZW50KSA9PiB2b2lkO1xuICogICBvbkNsaWNrPzogKGV2ZW50KSA9PiB2b2lkO1xuICogfVxuICogYGBgXG4gKlxuICogVGhlIE5vdGlmaWNhdGlvbnMgU2VydmljZSBwcm92aWRlcyBzb21lIG1ldGhvZHMgdG8gZGlzcGxheSB0aGVtIGluIHRoZSBmcm9udGVuZC5cbiAqXG4gKiAjIyMgQ29tcG9uZW50XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgTXlOb3RpZmljYXRpb25Db21wb25lbnQge1xuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlKSB7fVxuICpcbiAqICAgcHVibGljIGFkZChjb250ZXh0OiBzdHJpbmcsIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24pOiB2b2lkIHtcbiAqICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmFkZChjb250ZXh0LCBub3RpZmljYXRpb24pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgVHlwZSBRZE5vdGlmaWNhdGlvbiAoU2Vjb25kIHBhcmFtIG9mIHRoZSBhZGQgbWV0aG9kKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBRZE5vdGlmaWNhdGlvbiB7XG4gKiAgIC4uLlxuICpcbiAqICAgdHlwZTogUWROb3RpZmljYXRpb25UeXBlO1xuICogICBpMThuOiBzdHJpbmc7XG4gKiAgIGxpZmVUaW1lPzogbnVtYmVyO1xuICogfVxuICpcbiAqIHR5cGUgUWROb3RpZmljYXRpb25zID0gUWROb3RpZmljYXRpb25bXTtcbiAqIGBgYFxuICpcbiAqICMjIyBUeXBlIFFkTm90aWZpY2F0aW9uVHlwZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHR5cGUgUWROb3RpZmljYXRpb25UeXBlID0gJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2NyaXRpY2FsJyB8ICdzdWNjZXNzJztcbiAqIGBgYFxuICpcbiAqICMjIyBUZW1wbGF0ZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gKGNsaWNrKT1cImFkZCgncWRQYW5lbCcsIHsgdHlwZTogJ2NyaXRpY2FsJywgaTE4bjogJ2kxOG4uZXJyb3IuY3JpdGljYWwnIH0pXCI+QWRkIE5vdGlmaWNhdGlvbjwvYnV0dG9uPlxuICogYGBgXG4gKlxuICogIyMjIFRlbXBsYXRlIGZvciBkaXNwbGF5aW5nIG5vdGlmaWNhdGlvbnMgLSBmb3IgaW5zdGFuY2UgaW4gdGhlIEluZm8gUGFuZWxcbiAqXG4gKiBgYGBodG1sXG4gKiA8cWQtbm90aWZpY2F0aW9ucz48L3FkLW5vdGlmaWNhdGlvbnM+XG4gKiBgYGBcbiAqXG4gKiAjIyBOb3RpZmljYXRpb25zIGFzIGEgc25hY2tiYXJcbiAqXG4gKiBZb3UgY2FuIGFsc28gZGlzcGxheSB0aGUgbm90aWZpY2F0aW9ucyBhcyBhIHNuYWNrIGJhci4gVGhleSBhcmUgdGhlbiBvbiB0b3Agb2YgdGhlIGxheW91dCBzeXN0ZW0uIFdoYXQgeW91IG5lZWQgdG8gZG8gaXMgdG8gcGxhY2UgdGhlIGRpcmVjdGl2ZSBgcWRTbmFja2Jhckxpc3RlbmVyYCB0aGVyZS4gQWxzbywganVzdCBhZGQgdGhlIGBzaG93QXNTbmFja2JhcmAgcGFyYW1ldGVyIHRvIHRoZSBtZXRob2QgY2FsbC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1jb250YWluZXIgcWRTbmFja2Jhckxpc3RlbmVyPiBNeSBDb250YWluZXIgQ29udGVudCA8L3FkLWNvbnRhaW5lcj5cbiAqXG4gKiA8YnV0dG9uIChjbGljayk9XCJhZGROb3RpZmljYXRpb24oJ3FkUGFuZWwnLCB7IHR5cGU6ICdjcml0aWNhbCcsIGkxOG46ICdpMThuLmVycm9yLmNyaXRpY2FsJywgc2hvd0FzU25hY2tiYXI6IHRydWUgfSlcIj5cbiAqICAgQWRkIE5vdGlmaWNhdGlvblxuICogPC9idXR0b24+XG4gKiBgYGBcbiAqXG4gKiBBbGwgbm90aWZpY2F0aW9ucyBhcmUgbm93IGRpc3BsYXllZCBieSB0aGUgZGlyZWN0aXZlIGNvbnRhaW5lZCBpbiB0aGUgYHFkLWNvbnRhaW5lcmAuIEFsc28sIGFsbCBub3RpZmljYXRpb25zIGZyb20gdGhlIGJhY2tlbmQgYXJlIGRpc3BsYXllZCB0aGVyZS5cbiAqXG4gKiAqKlJlY29tbWVuZGF0aW9uIG9mIHRoZSBRdWFkcmVsIFRlYW0qKjogUGxhY2UgdGhlIGBxZFNuYWNrYmFyTGlzdGVuZXJgIGRpcmVjdGx5IG9uIHRvcCBvZiB0aGUgbGF5b3V0IHN5c3RlbSAtIHNvIGZvciBleGFtcGxlIGluIHRoZSAqKkFwcENvbXBvbmVudCoqLlxuICpcbiAqICMjIyBPcHRpb25zXG4gKlxuICogWW91IGNhbiBhbHNvIHBhc3MgYSBjb25maWd1cmF0aW9uIG9iamVjdCBpbiB0aGUgYHNuYWNrYmFyT3B0aW9uc2AgcGFyYW1ldGVyIHRvIGN1c3RvbWl6ZSB0aGUgc25hY2tiYXIgbm90aWZpY2F0aW9uIG9yIHRvIHNldCBhbiBgb25DbG9zZWAgaGFuZGxlci5cbiAqIFdoZW4geW91IGNsb3NlIHRoZSBtYWluIG5vdGlmaWNhdGlvbiwgdGhlIHNuYWNrYmFyIG5vdGlmaWNhdGlvbiB3aWxsIGJlIGNsb3NlZCBhdXRvbWF0aWNhbGx5LiBUaGUgc25hY2tiYXIgbm90aWZpY2F0aW9uIGNhbiBiZSBjbG9zZWQgZm9yIGl0c2VsZiBhbG9uZS5cbiAqXG4gKiBJbiB0aGUgYHNuYWNrYmFyT3B0aW9uc2AgY29uZmlndXJhdGlvbiBvYmplY3QgeW91IGNhbiBvdmVycmlkZSB0aGUgcHJvcGVydGllcyBgZGlzYWJsZUNsb3NlYCBhbmQgYGxpZmVUaW1lYC4gV2hlbiB0aGUgbWFpbiBub3RpZmljYXRpb24gaXMgY2xvc2VkLFxuICogdGhlIHNuYWNrYmFyIG5vdGlmaWNhdGlvbiB3aWxsIGFsc28gYmUgY2xvc2VkLiBTbyB0aGUgbGlmZSB0aW1lIG9mIHRoZSBzbmFja2JhciBub3RpZmljYXRpb24gb25seSBjYW4gYmUgc2hvcnRlci5cbiAqXG4gKiAjIyBPUyBOb3RpZmljYXRpb25zXG4gKlxuICogVG8gYnJpbmcgYSBub3RpZmljYXRpb24gdG8gdGhlIGZvcmVncm91bmQsIGV2ZW4gaWYgdGhlIGFwcGxpY2F0aW9uIHdpbmRvdyBpcyBub3QgaW4gZm9jdXMsIHlvdSBjYW4gYWxzbyBwdXNoIHRoZSBub3RpZmljYXRpb24gYXMgYW4gT1MgTm90aWZpY2F0aW9uLlxuICogVGhlbiB0aGUgbm90aWZpY2F0aW9uIHdpbGwgYWxzbyBiZSBwdXNoZWQgdGhyb3VnaCB0aGUgTm90aWZpY2F0aW9uIGJyb3dzZXIgQVBJIGFuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gKGUuZy4gV2luZG93cy9MaW51eCkuXG4gKiBJbiB0aGUgZnV0dXJlLCB0aGUgT1MgTm90aWZpY2F0aW9ucyB3aWxsIGFsc28gYmUgcHVzaGVkIGFzIHNtYXJ0cGhvbmUgc3lzdGVtIG5vdGlmaWNhdGlvbnMuIEN1cnJlbnRseSwgb25seSBkZXNrdG9wIG5vdGlmaWNhdGlvbnMgYXJlIHN1cHBvcnRlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gKGNsaWNrKT1cImFkZE5vdGlmaWNhdGlvbigncWRQYW5lbCcsIHsgdHlwZTogJ2NyaXRpY2FsJywgaTE4bjogJ2kxOG4uZXJyb3IuY3JpdGljYWwnLCBzaG93QXNPc05vdGlmaWNhdGlvbjogdHJ1ZSB9KVwiPlxuICogICBBZGQgTm90aWZpY2F0aW9uXG4gKiA8L2J1dHRvbj5cbiAqIGBgYFxuICpcbiAqICMjIyBPcHRpb25zXG4gKlxuICogWW91IGNhbiBhbHNvIHBhc3MgYSBjb25maWd1cmF0aW9uIG9iamVjdCBpbiB0aGUgYG9zTm90aWZpY2F0aW9uT3B0aW9uc2AgcGFyYW1ldGVyIHRvIGN1c3RvbWl6ZSB0aGUgT1Mgbm90aWZpY2F0aW9uIG9yIHRvIHNldCBgb25DbGlja2AgYW5kIGBvbkNsb3NlYCBoYW5kbGVycy5cbiAqIFdoZW4geW91IGNsb3NlIHRoZSBtYWluIG5vdGlmaWNhdGlvbiwgdGhlIE9TIG5vdGlmaWNhdGlvbiB3aWxsIGJlIGNsb3NlZCBhdXRvbWF0aWNhbGx5LiBUaGUgT1Mgbm90aWZpY2F0aW9uIGNhbiBiZSBjbG9zZWQgZm9yIGl0c2VsZiBhbG9uZS5cbiAqXG4gKiBJbiB0aGUgYG9zTm90aWZpY2F0aW9uT3B0aW9uc2AgY29uZmlndXJhdGlvbiBvYmplY3QgeW91IGNhbiBvdmVycmlkZSB0aGUgcHJvcGVydGllcyBgZGlzYWJsZUNsb3NlYCBhbmQgYGxpZmVUaW1lYC4gV2hlbiB0aGUgbWFpbiBub3RpZmljYXRpb24gaXMgY2xvc2VkLFxuICogdGhlIE9TIG5vdGlmaWNhdGlvbiB3aWxsIGFsc28gYmUgY2xvc2VkLiBTbyB0aGUgbGlmZSB0aW1lIG9mIHRoZSBPUyBub3RpZmljYXRpb24gb25seSBjYW4gYmUgc2hvcnRlci5cbiAqXG4gKiAjIyMgRGVlcCBsaW5rc1xuICpcbiAqIFRvIG9wZW4gYSBkZWVwIGxpbmsgd2hlbiB0aGUgT1Mgbm90aWZpY2F0aW9uIGlzIGNsaWNrZWQsIHVzZSB0aGUgZm9sbG93aW5nIGNvZGUgZm9yIHRoZSBjbGljayBoYW5kbGVyOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gKiB3aW5kb3cub3BlbignaHR0cHM6Ly95b3VyL2RlZXAvbGluaycpO1xuICogYGBgXG4gKlxuICogIyMgTm90aWZpY2F0aW9ucyB2aWEgc2VydmljZSAobXVsdGlwbGUgaW5zdGFuY2VzKVxuICpcbiAqICMjIyBPYmplY3Qgb2YgbXVsdGlwbGUgbm90aWZpY2F0aW9uc1xuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IEJVTEs6IFFkTm90aWZpY2F0aW9ucyA9IFtcbiAqICAge1xuICogICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgaTE4bjogJ2kxOG4uZXJyb3IuMSdcbiAqICAgfSxcbiAqICAge1xuICogICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgaTE4bjogJ2kxOG4uZXJyb3IuMidcbiAqICAgfVxuICogXTtcbiAqIGBgYFxuICpcbiAqICMjIyBDb21wb25lbnRcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBNeU5vdGlmaWNhdGlvbkNvbXBvbmVudCB7XG4gKiAgIGJ1bGs6IFFkTm90aWZpY2F0aW9ucyA9IEJVTEs7XG4gKlxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBwdWJsaWMgbW9kYWxTZXJ2aWNlOiBRZE1vZGFsU2VydmljZSkge31cbiAqXG4gKiAgIG9wZW5Ob3RpZmljYXRpb25Nb2RhbChtcm4pIHtcbiAqICAgICAvLyBNUk4gcmVwcmVzZW50cyBhIHVuaXF1ZSBjb250ZXh0XG4gKiAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihNeU5vdGlmaWNhdGlvbk1vZGFsQ29tcG9uZW50LCB7IGRhdGE6IHsgbXJuIH0gfSk7XG4gKlxuICogICAgIC8vIEFkZHMgdGhlIG5vdGlmaWNhdGlvbnMgd2hlbiBvcGVuaW5nXG4gKiAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5hZGRCdWxrKG1ybiwgdGhpcy5idWxrKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogIyMjIFRlbXBsYXRlXG4gKlxuICogYGBgaHRtbFxuICogPG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCI+XG4gKiAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibXJuXCI+XG4gKiAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImNlbnRlclwiPk1ybi48L21hdC1oZWFkZXItY2VsbD5cbiAqICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGNsYXNzPVwiY2VudGVyXCI+XG4gKiAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5Ob3RpZmljYXRpb25Nb2RhbChlbGVtZW50Lm1ybilcIj5cbiAqICAgICAgICAgPCEtLSBNUk4gcmVwcmVzZW50cyBhIHVuaXF1ZSBjb250ZXh0IC0tPlxuICogICAgICAgICB7eyBlbGVtZW50Lm1ybiB9fVxuICogICAgICAgPC9idXR0b24+XG4gKiAgICAgPC9tYXQtY2VsbD5cbiAqICAgPC9uZy1jb250YWluZXI+XG4gKiA8L21hdC10YWJsZT5cbiAqIGBgYFxuICpcbiAqICMjIE5vdGlmaWNhdGlvbiBFdmVudHNcbiAqXG4gKiBZb3UgY2FuIGRlZmluZSBhbiBgb25DbG9zZWAgY2FsbGJhY2sgZm9yIGVhY2ggbm90aWZpY2F0aW9uIHR5cGUuIFdoZW4gdGhlIG1haW4gbm90aWZpY2F0aW9uIGlzIGNsb3NlZCwgdGhlblxuICogdGhlIGNvcnJlc3BvbmRpbmcgc25hY2tiYXIgbm90aWZpY2F0aW9uIGFuZCBPUyBub3RpZmljYXRpb24gd2lsbCBhbHNvIGJlIGNsb3NlZCBhbmQgYWxsIGV2ZW50cyB3aWxsIGJlIGZpcmVkLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIE15Tm90aWZpY2F0aW9uQ29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBub3RpZmljYXRpb25zU2VydmljZTogUWROb3RpZmljYXRpb25zU2VydmljZSkge31cbiAqXG4gKiAgIHNob3dOb3RpZmljYXRpb24oKTogdm9pZCB7XG4gKiAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5hZGQoXG4gKiAgICAgICAncWRQYW5lbCcsXG4gKiAgICAgICB7XG4gKiAgICAgICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgICAgIGkxOG46ICdpMThuLmVycm9yLmNyaXRpY2FsJyxcbiAqICAgICAgICAgb25DbG9zZTogKCkgPT4gY29uc29sZS5sb2coJ05vdGlmaWNhdGlvbiBjbG9zZWQuJyksXG4gKiAgICAgICAgIHNob3dBc1NuYWNrYmFyOiB0cnVlLFxuICogICAgICAgICBzbmFja2Jhck9wdGlvbnM6IHtcbiAqICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiBjb25zb2xlLmxvZygnU25hY2tiYXIgTm90aWZpY2F0aW9uIGNsb3NlZC4nKVxuICogICAgICAgICB9XG4gKiAgICAgICAgIHNob3dBc09zTm90aWZpY2F0aW9uOiB0cnVlLFxuICogICAgICAgICBvc05vdGlmaWNhdGlvbk9wdGlvbnM6IHtcbiAqICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiBjb25zb2xlLmxvZygnT1MgTm90aWZpY2F0aW9uIGNsb3NlZC4nKVxuICogICAgICAgICB9XG4gKiAgICAgICB9XG4gKiAgICAgKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogRXNwZWNpYWxseSBmb3IgdGhlIE9TIG5vdGlmaWNhdGlvbiBhbiBgb25DbGlja2AgaGFuZGxlciBjYW4gYmUgZGVmaW5lZC4gV2l0aCB0aGUgb25DbGljayBoYW5kbGVyIGl0J3MgYWxzbyBwb3NzaWJsZVxuICogdG8gZGVmaW5lIGEgZGVlcCBsaW5rIHRoYXQgd2lsbCBiZSBvcGVuZWQgb24gY2xpY2sgd2l0aCB0aGUgZm9sbG93aW5nIGNvZGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5hZGQoXG4gKiAgICdxZFBhbmVsJyxcbiAqICAge1xuICogICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgaTE4bjogJ2kxOG4uZXJyb3IuY3JpdGljYWwnLFxuICogICAgIHNob3dBc09zTm90aWZpY2F0aW9uOiB0cnVlLFxuICogICAgIG9zTm90aWZpY2F0aW9uT3B0aW9uczoge1xuICogICAgICAgb25DbGljazogKGV2ZW50KSA9PiB7XG4gKiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gKiAgICAgICAgIHdpbmRvdy5vcGVuKCdodHRwczovL3lvdXIvZGVlcC9saW5rJyk7XG4gKiAgICAgICB9XG4gKiAgICAgfVxuICogICB9XG4gKiApO1xuICogYGBgXG4gKlxuICogIyMgSW5saW5lIE5vdGlmaWNhdGlvbnNcbiAqXG4gKiBOb3RpZmljYXRpb25zIGNhbiBhbHNvIGJlIGluc2VydGVkIGRpcmVjdGx5IGludG8gdGhlIHRlbXBsYXRlLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1ub3RpZmljYXRpb24gW3R5cGVdPVwidHlwZVwiIFtub3RpZmljYXRpb25dPVwibm90aWZpY2F0aW9uXCI+XG4gKiAgIDxxZC1ub3RpZmljYXRpb24tY29udGVudD4gdGVzdCBub3RpZmljYXRpb24gY29udGVudCA8L3FkLW5vdGlmaWNhdGlvbi1jb250ZW50PlxuICogPC9xZC1ub3RpZmljYXRpb24+XG4gKiBgYGBcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBUaGUgdHlwZSBjYW4gYmUgZGVmaW5lZCB3aXRoIHRoZSB0eXBlIGlucHV0XG4gKiB0eXBlID0gJ2NyaXRpY2FsJztcbiAqXG4gKiAvLyAuLi4gb3IgaW4gdGhlIG5vdGlmaWNhdGlvbiBjb25maWdcbiAqIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24gPSB7XG4gKiAgIHR5cGU6ICdjcml0aWNhbCdcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoZSBjb250ZW50IGNhbiBhbHNvIGJlIGRlZmluZWQgaW4gdGhlIGNvbmZpZy4gVGhlbiB5b3UgZG9uJ3QgaGF2ZSB0byBwdXQgYSBgcWQtbm90aWZpY2F0aW9uLWNvbnRlbnRgXG4gKiBlbGVtZW50IGludG8gdGhlIGBxZC1ub3RpZmljYXRpb25gLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1ub3RpZmljYXRpb24gW25vdGlmaWNhdGlvbl09XCJub3RpZmljYXRpb25cIj48L3FkLW5vdGlmaWNhdGlvbj5cbiAqIGBgYFxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24gPSB7XG4gKiAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgIGkxOG46ICdpMThuLmVycm9yLmNyaXRpY2FsJ1xuICogfVxuICogYGBgXG4gKlxuICogIyMgTXVsdGlsaW5lIE5vdGlmaWNhdGlvbnNcbiAqXG4gKiBUbyBjcmVhdGUgYSBtdWx0aWxpbmUgbm90aWZpY2F0aW9uIHlvdSBzaW1wbHkgY2FuIGluc2VydCBgXFxuYCBpbiB0aGUgaTE4biB0cmFuc2xhdGlvbiB0ZXh0LiBMaW5lIGJyZWFrcyAoYFxcbmApIGFyZVxuICogbm90IGNvbnNpZGVyZWQgaWYgeW91IHVzZSB0aGUgYDxxZC1ub3RpZmljYXRpb24tY29udGVudD5gIHZhcmlhbnQuIExpbmUgYnJlYWtzIG9ubHkgd29yayBpZiB5b3UgZGVmaW5lIHRoZVxuICogaTE4biBrZXkgaW4gdGhlIG5vdGlmaWNhdGlvbiBjb25maWcuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBub3RpZmljYXRpb246IFFkTm90aWZpY2F0aW9uID0ge1xuICogICB0eXBlOiAnd2FybmluZycsXG4gKiAgIGkxOG46ICdpMThuLm5jdHMuZGVjbGFyYXRpb24uZGV0YWlsSW52ZW50b3J5UmVzdWx0Lm5vdGlmaWNhdGlvbi50cmFuc2l0RGVhZGxpbmVFeHBpcmVkJ1xuICogfVxuICogYGBgXG4gKlxuICogYGBganNvblxuICoge1xuICogICAuLi5cbiAqXG4gKiAgIFwiaTE4bi5uY3RzLmRlY2xhcmF0aW9uLmRldGFpbEludmVudG9yeVJlc3VsdC5ub3RpZmljYXRpb24udHJhbnNpdERlYWRsaW5lRXhwaXJlZFwiOiBcIlRoZSBpbnZlbnRvcnkgcmVzdWx0IG11c3QgYmUgY2hlY2tlZCBhbmQgdGhlIGNvbnRyb2wgcmVzdWx0IHJlY29yZGVkLiBcXG5BdHRlbnRpb246IFRoZSB0cmFuc2l0IHBlcmlvZCBoYXMgZXhwaXJlZCB1cG9uIGFycml2YWwgYXQgdGhlIEF1dGhvcml6ZWQgUGxhY2VcIixcbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyBOb3RpZmljYXRpb25zIFNlcnZpY2VcbiAqXG4gKiB8IE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJhbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZWZhdWx0IHxcbiAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfFxuICogfCBnZXROb3RpZmljYXRpb25zRm9yQ29udGV4dCgpIHwgY29udGV4dDogc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmV0dXJucyBub3RpZmljYXRpb24gc3RyZWFtIGZvciBjb250ZXh0LiAgICAgICAgIHwgLSAgICAgICB8XG4gKiB8IGFkZCgpICAgICAgICAgICAgICAgICAgICAgICAgfCBjb250ZXh0OiBzdHJpbmcsIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24gICAgICAgICAgfCBBZGRzIGEgc2luZ2xlIG5vdGlmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgfCAtICAgICAgIHxcbiAqIHwgYWRkQnVsaygpICAgICAgICAgICAgICAgICAgICB8IGNvbnRleHQ6IHN0cmluZywgbm90aWZpY2F0aW9uczogUWROb3RpZmljYXRpb25zICAgICAgICB8IEFkZHMgbXVsdGlwbGUgbm90aWZpY2F0aW9ucy4gICAgICAgICAgICAgICAgICAgICB8IC0gICAgICAgfFxuICogfCByZW1vdmUoKSAgICAgICAgICAgICAgICAgICAgIHwgY29udGV4dDogc3RyaW5nLCBpZDogc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVtb3ZlcyBzcGVjaWZpYyBub3RpZmljYXRpb24uICAgICAgICAgICAgICAgICAgIHwgLSAgICAgICB8XG4gKiB8IHJlbW92ZUFsbCgpICAgICAgICAgICAgICAgICAgfCBjb250ZXh0OiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZW1vdmVzIGFsbCBub3RpZmljYXRpb25zIGluIGNvbnRleHQuICAgICAgICAgICAgfCAtICAgICAgIHxcbiAqIHwgcmVzZXQoKSAgICAgICAgICAgICAgICAgICAgICB8IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENsZWFyIGFsbCBub3RpZmljYXRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICB8IC0gICAgICAgfFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1ub3RpZmljYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdxZC1ub3RpZmljYXRpb24nIH1cbn0pXG5leHBvcnQgY2xhc3MgUWROb3RpZmljYXRpb25Db21wb25lbnQge1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgdHlwZSBvZiB0aGlzIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6IFFkTm90aWZpY2F0aW9uVHlwZSA9ICdjcml0aWNhbCc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb2YgYSBub3RpZmljYXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBub3RpZmljYXRpb246IFFkTm90aWZpY2F0aW9uO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5jbGFzcycpIGdldCB0eXBlQ2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBxZC1ub3RpZmljYXRpb24gcWQtbm90aWZpY2F0aW9uLSR7dGhpcy5nZXRUeXBlKCl9YDtcbiAgfVxuXG4gIGdldCBjbG9zZWFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uID8gIXRoaXMubm90aWZpY2F0aW9uLmRpc2FibGVDbG9zZSA6IHRydWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U6IFFkTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzbmFja2JhclNlcnZpY2U6IFFkU25hY2tiYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgZ2V0VHlwZSgpOiBRZE5vdGlmaWNhdGlvblR5cGUge1xuICAgIHJldHVybiB0aGlzLm5vdGlmaWNhdGlvbj8udHlwZSB8fCB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRJY29uKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLmdldFR5cGUoKSkge1xuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIHJldHVybiAnY2hlY2tDaXJjbGVTb2xpZCc7XG4gICAgICBjYXNlICdpbmZvJzpcbiAgICAgICAgcmV0dXJuICdjaGVja0NpcmNsZVNvbGlkJztcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ3dhcm5pbmdIZXhGaWxsZWQnO1xuICAgICAgY2FzZSAnY3JpdGljYWwnOlxuICAgICAgICByZXR1cm4gJ2V4Y2xhbWF0aW9uQ2lyY2xlU29saWQnO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc05vdGlmaWNhdGlvbkluU25hY2tiYXIoKSkge1xuICAgICAgdGhpcy5zbmFja2JhclNlcnZpY2UuY2xvc2UodGhpcy5ub3RpZmljYXRpb24udXVpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5yZW1vdmUodGhpcy5ub3RpZmljYXRpb24uY29udGV4dCwgdGhpcy5ub3RpZmljYXRpb24udXVpZCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTGlua0NsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uLmxpbmsuaGFuZGxlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc05vdGlmaWNhdGlvbkluU25hY2tiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgncWQtc25hY2tiYXInKTtcbiAgfVxufVxuIiwiPHFkLWljb24gKm5nSWY9XCJjbG9zZWFibGVcIiBbaWNvbl09XCIndGltZXNMYXJnZSdcIiBjbGFzcz1cImNsb3NlclwiIChjbGljayk9XCJyZW1vdmUoKVwiPjwvcWQtaWNvbj5cbjxxZC1pY29uIFtpY29uXT1cInRoaXMuZ2V0SWNvbigpXCIgY2xhc3M9XCJpY29uXCI+PC9xZC1pY29uPlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJxZC1ub3RpZmljYXRpb24tY29udGVudFwiPjwvbmctY29udGVudD5cblxuPGRpdiBjbGFzcz1cInRpdGxlXCIgKm5nSWY9XCJub3RpZmljYXRpb24/LnRpdGxlXCI+e3sgbm90aWZpY2F0aW9uLnRpdGxlLmkxOG4gfCB0cmFuc2xhdGUgfX08L2Rpdj5cbjxkaXYgY2xhc3M9XCJtZXNzYWdlXCI+XG4gIDxzcGFuPnt7IG5vdGlmaWNhdGlvbj8uaTE4biB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPGEgY2xhc3M9XCJsaW5rXCIgKm5nSWY9XCJub3RpZmljYXRpb24/LmxpbmtcIiAoY2xpY2spPVwiaGFuZGxlTGlua0NsaWNrKClcIj57eyBub3RpZmljYXRpb24ubGluay5pMThuIHwgdHJhbnNsYXRlIH19PC9hPlxuPC9kaXY+XG4iXX0=
|
|
547
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9ub3RpZmljYXRpb25zL25vdGlmaWNhdGlvbi9ub3RpZmljYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9uL25vdGlmaWNhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNuRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7Ozs7OztBQUVqRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFkRztBQU9ILE1BQU0sT0FBTyx1QkFBdUI7SUFvQmY7SUFDQTtJQUNUO0lBckJWOztPQUVHO0lBQ00sSUFBSSxHQUF1QixVQUFVLENBQUM7SUFFL0M7O09BRUc7SUFDTSxZQUFZLENBQWlCO0lBRXRDLElBQStCLGFBQWE7UUFDMUMsT0FBTyxtQ0FBbUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDN0QsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3BFLENBQUM7SUFFRCxZQUNtQixtQkFBMkMsRUFDM0MsZUFBa0MsRUFDM0MsT0FBbUI7UUFGVix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXdCO1FBQzNDLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUMzQyxZQUFPLEdBQVAsT0FBTyxDQUFZO0lBQzFCLENBQUM7SUFFSixPQUFPO1FBQ0wsT0FBTyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPO1FBQ0wsUUFBUSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUN2QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixLQUFLLE1BQU07Z0JBQ1QsT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxrQkFBa0IsQ0FBQztZQUM1QixLQUFLLFVBQVU7Z0JBQ2IsT0FBTyx3QkFBd0IsQ0FBQztRQUNwQyxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU07UUFDSixJQUFJLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyRixDQUFDO0lBQ0gsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRU8sd0JBQXdCO1FBQzlCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUM3RCxDQUFDO3VHQXhEVSx1QkFBdUI7MkZBQXZCLHVCQUF1QixnTkNsZXBDLGdpQkFVQTs7MkZEd2RhLHVCQUF1QjtrQkFObkMsU0FBUzsrQkFDRSxpQkFBaUIsUUFHckIsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUU7b0pBTXpCLElBQUk7c0JBQVosS0FBSztnQkFLRyxZQUFZO3NCQUFwQixLQUFLO2dCQUV5QixhQUFhO3NCQUEzQyxXQUFXO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtc3RyaWN0LWlnbm9yZVxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFFkTm90aWZpY2F0aW9uLCBRZE5vdGlmaWNhdGlvblR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL25vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgUWROb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbnMtc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IFFkU25hY2tiYXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc25hY2tiYXIuc2VydmljZSc7XG5cbi8qKlxuICogICoqUWROb3RpZmljYXRpb24qKiBkaXNwbGF5cyBhIHNpbmdsZSBub3RpZmljYXRpb24gaXRlbSB3aXRoaW4gYSAqKlFkTm90aWZpY2F0aW9ucyoqIGNvbnRhaW5lci5cbiAqXG4gKiAjIE5vdGlmaWNhdGlvbnMgU2VydmljZVxuICpcbiAqIFRoZSAqKk5vdGlmaWNhdGlvbnMgU2VydmljZSoqIGNhbiBiZSB1c2VkIHRvIGNhdGNoIGVycm9ycyBmcm9tIHRoZSBiYWNrZW5kLiBJbiBhZGRpdGlvbiwgdGhpcyBzZXJ2aWNlIHByb3ZpZGVzIHNldmVyYWwgbWV0aG9kcyB0byBkaXNwbGF5IG1lc3NhZ2VzLlxuICpcbiAqICMjIE5vdGlmaWNhdGlvbiBmcm9tIEJhY2tlbmRcbiAqXG4gKiBUaGUgKipRZFVpTW9kdWxlKiogcHJvdmlkZXMgYW4gSFRUUCBpbnRlcmNlcHRvciB0aGF0IGRpc3BsYXlzIHJlcXVlc3QgZXJyb3JzIGFzIHNuYWNrYmFyIG5vdGlmaWNhdGlvbnMuIFRvIGdldCB0aGUgcHJvcGVyIG5vdGlmaWNhdGlvbiBtZXNzYWdlcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgYmFja2VuZCBlcnJvcnMsIHBsZWFzZSBjb21wbHkgd2l0aCB0aGVzZSBjb252ZW50aW9ucy5cbiAqXG4gKiAjIyMgRXhhbXBsZSBvZiBhIHJlc3BvbnNlIG9iamVjdFxuICpcbiAqIFRoZSBiYWNrZW5kIHNlcnZpY2UgcmVzcG9uc2UgaGFzIHRvIGNvbnRhaW4gYW4gZXJyb3JDb2RlIGZpZWxkLiBUaGlzIGVycm9yIGNvZGUgd2lsbCBiZSBtYXBwZWQgdG8gZ2V0IHRoZSB0cmFuc2xhdGlvbiBmb3IgdGhlIG5vdGlmaWNhdGlvbiBtZXNzYWdlLlxuICpcbiAqIGBgYGpzb25cbiAqIHtcbiAqICAgXCJlcnJvckNvZGVcIjogXCJUUkFOU1BPUlRfQ09DS1BJVF9QRVJTSVNURU5DRV9FUlJPUlwiLFxuICogICBcImVycm9yTWVzc2FnZVwiOiBcIlRSQU5TUE9SVF9DT0NLUElUX1BFUlNJU1RFTkNFX0VSUk9SOiBDb3VsZCBub3QgZmluZCBEZWNsYXJhdGlvbiB3aWggaWQ6IGI3OGUwNzM0LWFlMWItNDM0ZS1iNDRkLWI0ODc5N2Y1Njk2ZFwiXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgRGVmaW5lIEVycm9yIENvZGVzIGluIHRoZSBRZFVpTW9kdWxlXG4gKlxuICogVGhlICoqUWRVaU1vZHVsZSoqIGV4cGVjdHMgYW4gZW51bSB3aXRoIGVycm9yIGNvZGVzIGFzIHRoZSBzZWNvbmQgcGFyYW1ldGVyLiBGb3IgdGhlc2UgZ2l2ZW4gZXJyb3IgY29kZXMgeW91IGNhbiBkZWZpbmUgc3BlY2lmaWMgbm90aWZpY2F0aW9uIG1lc3NhZ2VzLlxuICpcbiAqIFRoaXMgaXMgYW4gZXhhbXBsZSBjb25maWd1cmF0aW9uIG9mIHRoZSAqKlFkVWlNb2R1bGUqKiBpbiB0aGUgKiphcHAubW9kdWxlLnRzKiouXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogZW51bSBFcnJvckNvZGVzIHtcbiAqICAgVFJBTlNQT1JUX0NPQ0tQSVRfUEVSU0lTVEVOQ0VfRVJST1IsXG4gKiAgIFRSQU5TUE9SVF9DT0NLUElUX1ZBTElEQVRJT05fRVJST1JcbiAqIH1cbiAqIGBgYFxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGltcG9ydHM6IFtcbiAqICAgLi4uXG4gKiAgIFFkVWlNb2R1bGUuZm9yUm9vdChhcHBFbnZpcm9ubWVudCwgRXJyb3JDb2RlcyksXG4gKiAgIC4uLlxuICogXVxuICogYGBgXG4gKlxuICogIyMjIFRyYW5zbGF0aW9uczpcbiAqXG4gKiBZb3UgY2FuIGRlZmluZSB0aGUgc3BlY2lmaWMgYmFja2VuZCBlcnJvciBub3RpZmljYXRpb24gbWVzc2FnZXMgZm9yIHRoZSByZXNwZWN0aXZlIGVycm9yIGNvZGVzIHVuZGVyIGBcIkVSUk9SXCJgIGluIHRoZSB0cmFuc2xhdGlvbiBmaWxlcy5cbiAqXG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIC4uLlxuICpcbiAqICAgXCJFUlJPUlwiOiB7XG4gKiAgICAgXCJUUkFOU1BPUlRfQ09DS1BJVF9QRVJTSVNURU5DRV9FUlJPUlwiOiBcIkluIGRlciBEYXRlbmJhbmsgaXN0IGVpbiBGZWhsZXIgYXVmZ2V0cmV0ZW5cIixcbiAqICAgICBcIlRSQU5TUE9SVF9DT0NLUElUX1ZBTElEQVRJT05fRVJST1JcIjogXCJVbmfDvGx0aWdlIEVpbmdhYmVcIlxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgRGVmYXVsdCBlcnJvciBtZXNzYWdlc1xuICpcbiAqIEEgZGVmYXVsdCBlcnJvciBtZXNzYWdlIGlzIHNob3duIGlmIG5vIGVycm9yIGNvZGUgaXMgZ2l2ZW4gaW4gdGhlIGJhY2tlbmQgcmVzcG9uc2Ugb3IgdGhlIGVycm9yIGNvZGUgaXMgbm90IGRlZmluZWQgaW4gdGhlIGBFcnJvckNvZGVzYCBlbnVtIHRoYXQgeW91IHBhc3MgdG8gdGhlICoqUWRVaU1vZHVsZSoqLlxuICpcbiAqIFRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGVycm9yIG1lc3NhZ2VzIHlvdSBoYXZlIHRvIGFkZCB0aGUgY29ycmVzcG9uZGluZyBIVFRQIGVycm9yIGNvZGUgaW4gdGhlIGBFcnJvckNvZGVzYCBlbnVtLiBUaGVuIHlvdSBjYW4gZGVmaW5lIGEgY3VzdG9tIGRlZmF1bHQgZXJyb3IgbWVzc2FnZSBpbiB0aGUgdHJhbnNsYXRpb24gZmlsZXMuXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogZW51bSBFcnJvckNvZGVzIHtcbiAqICAgLi4uLFxuICogICBIVFRQX0JBRF9SRVFVRVNULFxuICogICBIVFRQX1VOQVVUSE9SSVpFRCxcbiAqICAgSFRUUF9GT1JCSURERU4sXG4gKiAgIEhUVFBfTk9UX0ZPVU5ELFxuICogICBIVFRQX1NFUlZFUl9FUlJPUixcbiAqICAgSFRUUF9VTktOT1dOX0VSUk9SXG4gKiB9XG4gKiBgYGBcbiAqXG4gKiBgYGBqc29uXG4gKiB7XG4gKiAgIC4uLlxuICpcbiAqICAgXCJFUlJPUlwiOiB7XG4gKiAgICAgXCJIVFRQX0JBRF9SRVFVRVNUXCI6IFwiVGhpcyBpcyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIGZvciBhIHJlc3BvbnNlIHdpdGggdGhlIEhUVFAgc3RhdHVzIGNvZGUgNDAwLlwiLFxuICogICAgIFwiSFRUUF9VTkFVVEhPUklaRURcIjogXCJUaGlzIGlzIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2UgZm9yIGEgcmVzcG9uc2Ugd2l0aCB0aGUgSFRUUCBzdGF0dXMgY29kZSA0MDEuXCIsXG4gKiAgICAgXCJIVFRQX0ZPUkJJRERFTlwiOiBcIlRoaXMgaXMgYSBjdXN0b20gZXJyb3IgbWVzc2FnZSBmb3IgYSByZXNwb25zZSB3aXRoIHRoZSBIVFRQIHN0YXR1cyBjb2RlIDQwMy5cIixcbiAqICAgICBcIkhUVFBfTk9UX0ZPVU5EXCI6IFwiVGhpcyBpcyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIGZvciBhIHJlc3BvbnNlIHdpdGggdGhlIEhUVFAgc3RhdHVzIGNvZGUgNDA0LlwiLFxuICogICAgIFwiSFRUUF9TRVJWRVJfRVJST1JcIjogXCJUaGlzIGlzIGEgY3VzdG9tIGVycm9yIG1lc3NhZ2UgZm9yIGEgcmVzcG9uc2Ugd2l0aCBzb21lIHNlcnZlciBlcnJvciAoSFRUUCBzdGF0dXMgY29kZSA1eHgpLlwiLFxuICogICAgIFwiSFRUUF9VTktOT1dOX0VSUk9SXCI6IFwiVGhpcyBpcyBhIGN1c3RvbSBlcnJvciBtZXNzYWdlIGZvciBhbGwgb3RoZXIgZXJyb3JzLlwiXG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyBXaGl0ZWxpc3RpbmcgSFRUUCBzdGF0dXMgY29kZXNcbiAqXG4gKiBJbiBzb21lIGNhc2VzLCB5b3UgbWlnaHQgd2FudCB0byBwcmV2ZW50IGNlcnRhaW4gSFRUUCBzdGF0dXMgY29kZXMgZnJvbSB0cmlnZ2VyaW5nIGVycm9yIG5vdGlmaWNhdGlvbnMuIEZvciBleGFtcGxlLCBhIDMwNCBOb3QgTW9kaWZpZWQgcmVzcG9uc2UgaXMgbm90IGFjdHVhbGx5IGFuIGVycm9yIGFuZCBzaG91bGQgbm90IGRpc3BsYXkgYW4gZXJyb3Igbm90aWZpY2F0aW9uLiBUaGUgKipRZFVpTW9kdWxlKiogYWxsb3dzIHlvdSB0byB3aGl0ZWxpc3Qgc3BlY2lmaWMgSFRUUCBzdGF0dXMgY29kZXMuXG4gKlxuICogVG8gd2hpdGVsaXN0IEhUVFAgc3RhdHVzIGNvZGVzLCBwYXNzIGFuIGFycmF5IG9mIHN0YXR1cyBjb2RlcyBhcyB0aGUgdGhpcmQgcGFyYW1ldGVyIHRvIHRoZSAqKlFkVWlNb2R1bGUuZm9yUm9vdCoqIG1ldGhvZDpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBIdHRwU3RhdHVzQ29kZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbiAqXG4gKiBpbXBvcnRzOiBbXG4gKiAgIC4uLlxuICogICBRZFVpTW9kdWxlLmZvclJvb3QoXG4gKiAgICAgYXBwRW52aXJvbm1lbnQsXG4gKiAgICAgRXJyb3JDb2RlcyxcbiAqICAgICBbSHR0cFN0YXR1c0NvZGUuTm90TW9kaWZpZWQsIEh0dHBTdGF0dXNDb2RlLk5vQ29udGVudF0gLy8gV2hpdGVsaXN0IDMwNCBOb3QgTW9kaWZpZWQgYW5kIDIwNCBObyBDb250ZW50XG4gKiAgICksXG4gKiAgIC4uLlxuICogXVxuICogYGBgXG4gKlxuICogV2hlbiBhIHJlc3BvbnNlIHdpdGggYSB3aGl0ZWxpc3RlZCBzdGF0dXMgY29kZSBpcyByZWNlaXZlZCwgbm8gZXJyb3Igbm90aWZpY2F0aW9uIHdpbGwgYmUgZGlzcGxheWVkLCBldmVuIGlmIGl0IHdvdWxkIG5vcm1hbGx5IGJlIHRyZWF0ZWQgYXMgYW4gZXJyb3IgYnkgdGhlIEhUVFAgY2xpZW50LlxuICpcbiAqICMjIyBCbGFja2xpc3RpbmcgSFRUUCBzdGF0dXMgY29kZXNcbiAqXG4gKiBGb3IgY3JpdGljYWwgZXJyb3JzLCBub3RpZmljYXRpb25zIGFyZSBhbHdheXMgc2hvd24sIGV2ZW4gaWYgdGhlIHN0YXR1cyBjb2RlIGlzIHdoaXRlbGlzdGVkLiBUaGUgKipRZFVpTW9kdWxlKiogaW1wbGVtZW50cyBhIGZpeGVkIGJsYWNrbGlzdCB0aGF0IHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGUgd2hpdGVsaXN0LlxuICpcbiAqIFRoZSBmb2xsb3dpbmcgc3RhdHVzIGNvZGVzIGFyZSBwZXJtYW5lbnRseSBibGFja2xpc3RlZDpcbiAqIC0gNDAxIFVuYXV0aG9yaXplZFxuICogLSA0MDIgUGF5bWVudCBSZXF1aXJlZFxuICogLSA0MDMgRm9yYmlkZGVuXG4gKiAtIEFsbCA1eHggc2VydmVyIGVycm9yIGNvZGVzICg1MDAtNTExKVxuICpcbiAqIFRoZXNlIGNyaXRpY2FsIGVycm9ycyB3aWxsIGFsd2F5cyBzaG93IG5vdGlmaWNhdGlvbnMsIGV2ZW4gaWYgdGhleSBhcmUgaW5jbHVkZWQgaW4gdGhlIHdoaXRlbGlzdC5cbiAqXG4gKiAqKkltcG9ydGFudCoqOiBUaGUgYmxhY2tsaXN0IGhhcyBoaWdoZXIgcHJlY2VkZW5jZSB0aGFuIHRoZSB3aGl0ZWxpc3QuIElmIGEgc3RhdHVzIGNvZGUgYXBwZWFycyBpbiBib3RoIHRoZSB3aGl0ZWxpc3QgYW5kIHRoZSBibGFja2xpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBibGFja2xpc3RlZCwgYW5kIGFuIGVycm9yIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHNob3duLlxuICpcbiAqICMjIyBDb21wb25lbnQ6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgTXlOb3RpZmljYXRpb25Db21wb25lbnQge1xuICogICBkYXRhO1xuICpcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50KSB7fVxuICpcbiAqICAgcHJpdmF0ZSBzZXREYXRhKGRhdGEpIHtcbiAqICAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICogICB9XG4gKlxuICogICBwdWJsaWMgY2FsbEFwaUVuZFBvaW50KCkge1xuICogICAgIC8vIFRoaXMgd2F5IHlvdSBjYW4gZGlzcGxheSB0aGUgY29udGVudCBpbiB0aGUgZnJvbnRlbmQuXG4gKiAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoJ3JvdXRlL3RvL2VuZHBvaW50Jykuc3Vic2NyaWJlKHtcbiAqICAgICAgIG5leHQ6IHJlcyA9PiB0aGlzLnNldERhdGEocmVzKSxcbiAqICAgICAgIGVycm9yOiBlcnIgPT4gdGhpcy5zZXREYXRhKGVycilcbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogVGhlIGVycm9ycyBhcmUgcmVuZGVyZWQgaW50byBhIGNvbnRhaW5lciwgd2hpY2ggYnkgZGVmYXVsdCBoYXMgdGhlIGF0dHJpYnV0ZSBgY29udGV4dD1cInFkUGFuZWxcImAuXG4gKlxuICogYGBgaHRtbFxuICogPCEtLSBMYW5kaW5nIHBhZCBmb3Igbm90aWZpY2F0aW9ucyAtLT5cbiAqIDxxZC1ub3RpZmljYXRpb25zPjwvcWQtbm90aWZpY2F0aW9ucz5cbiAqIGBgYFxuICpcbiAqICMjIE5vdGlmaWNhdGlvbnMgdmlhIHNlcnZpY2VcbiAqXG4gKiAjIyMgSW50ZXJmYWNlczpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbnRlcmZhY2UgUWROb3RpZmljYXRpb24ge1xuICogICB1dWlkPzogc3RyaW5nO1xuICogICBjb250ZXh0Pzogc3RyaW5nO1xuICogICB0eXBlOiBRZE5vdGlmaWNhdGlvblR5cGU7XG4gKiAgIGkxOG46IFFkTm90aWZpY2F0aW9uVHJhbnNsYXRpb247XG4gKiAgIHRpdGxlPzogUWROb3RpZmljYXRpb25UaXRsZTtcbiAqICAgZGF0ZT86IERhdGU7XG4gKiAgIGxpZmVUaW1lPzogbnVtYmVyO1xuICogICBkaXNhYmxlQ2xvc2U/OiBib29sZWFuO1xuICogICBvbkNsb3NlPzogKCkgPT4gdm9pZDtcbiAqICAgc2hvd0FzU25hY2tiYXI/OiBib29sZWFuO1xuICogICBzbmFja2Jhck9wdGlvbnM/OiBRZFNuYWNrYmFyTm90aWZpY2F0aW9uT3B0aW9ucztcbiAqICAgc2hvd0FzT3NOb3RpZmljYXRpb24/OiBib29sZWFuO1xuICogICBvc05vdGlmaWNhdGlvbk9wdGlvbnM/OiBRZE9zTm90aWZpY2F0aW9uT3B0aW9ucztcbiAqIH1cbiAqXG4gKiB0eXBlIFFkTm90aWZpY2F0aW9uVHlwZSA9ICdpbmZvJyB8ICd3YXJuaW5nJyB8ICdjcml0aWNhbCcgfCAnc3VjY2Vzcyc7XG4gKlxuICogdHlwZSBRZE5vdGlmaWNhdGlvblRyYW5zbGF0aW9uID0gc3RyaW5nO1xuICogdHlwZSBRZE5vdGlmaWNhdGlvblRpdGxlID0geyBpMThuOiBzdHJpbmcgfTtcbiAqXG4gKiB0eXBlIFFkTm90aWZpY2F0aW9ucyA9IFFkTm90aWZpY2F0aW9uW107XG4gKlxuICogaW50ZXJmYWNlIFFkU25hY2tiYXJOb3RpZmljYXRpb25PcHRpb25zIHtcbiAqICAgbGlmZVRpbWU/OiBudW1iZXI7XG4gKiAgIGRpc2FibGVDbG9zZT86IGJvb2xlYW47XG4gKiAgIG9uQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICogfVxuICpcbiAqIGludGVyZmFjZSBRZE9zTm90aWZpY2F0aW9uT3B0aW9ucyB7XG4gKiAgIHNpbGVudD86IGJvb2xlYW47XG4gKiAgIGxpZmVUaW1lPzogbnVtYmVyO1xuICogICBvbkNsb3NlPzogKGV2ZW50KSA9PiB2b2lkO1xuICogICBvbkNsaWNrPzogKGV2ZW50KSA9PiB2b2lkO1xuICogfVxuICogYGBgXG4gKlxuICogVGhlIE5vdGlmaWNhdGlvbnMgU2VydmljZSBwcm92aWRlcyBzb21lIG1ldGhvZHMgdG8gZGlzcGxheSB0aGVtIGluIHRoZSBmcm9udGVuZC5cbiAqXG4gKiAjIyMgQ29tcG9uZW50XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgTXlOb3RpZmljYXRpb25Db21wb25lbnQge1xuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlKSB7fVxuICpcbiAqICAgcHVibGljIGFkZChjb250ZXh0OiBzdHJpbmcsIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24pOiB2b2lkIHtcbiAqICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmFkZChjb250ZXh0LCBub3RpZmljYXRpb24pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMgVHlwZSBRZE5vdGlmaWNhdGlvbiAoU2Vjb25kIHBhcmFtIG9mIHRoZSBhZGQgbWV0aG9kKVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGludGVyZmFjZSBRZE5vdGlmaWNhdGlvbiB7XG4gKiAgIC4uLlxuICpcbiAqICAgdHlwZTogUWROb3RpZmljYXRpb25UeXBlO1xuICogICBpMThuOiBzdHJpbmc7XG4gKiAgIGxpZmVUaW1lPzogbnVtYmVyO1xuICogfVxuICpcbiAqIHR5cGUgUWROb3RpZmljYXRpb25zID0gUWROb3RpZmljYXRpb25bXTtcbiAqIGBgYFxuICpcbiAqICMjIyBUeXBlIFFkTm90aWZpY2F0aW9uVHlwZVxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHR5cGUgUWROb3RpZmljYXRpb25UeXBlID0gJ2luZm8nIHwgJ3dhcm5pbmcnIHwgJ2NyaXRpY2FsJyB8ICdzdWNjZXNzJztcbiAqIGBgYFxuICpcbiAqICMjIyBUZW1wbGF0ZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gKGNsaWNrKT1cImFkZCgncWRQYW5lbCcsIHsgdHlwZTogJ2NyaXRpY2FsJywgaTE4bjogJ2kxOG4uZXJyb3IuY3JpdGljYWwnIH0pXCI+QWRkIE5vdGlmaWNhdGlvbjwvYnV0dG9uPlxuICogYGBgXG4gKlxuICogIyMjIFRlbXBsYXRlIGZvciBkaXNwbGF5aW5nIG5vdGlmaWNhdGlvbnMgLSBmb3IgaW5zdGFuY2UgaW4gdGhlIEluZm8gUGFuZWxcbiAqXG4gKiBgYGBodG1sXG4gKiA8cWQtbm90aWZpY2F0aW9ucz48L3FkLW5vdGlmaWNhdGlvbnM+XG4gKiBgYGBcbiAqXG4gKiAjIyBOb3RpZmljYXRpb25zIGFzIGEgc25hY2tiYXJcbiAqXG4gKiBZb3UgY2FuIGFsc28gZGlzcGxheSB0aGUgbm90aWZpY2F0aW9ucyBhcyBhIHNuYWNrIGJhci4gVGhleSBhcmUgdGhlbiBvbiB0b3Agb2YgdGhlIGxheW91dCBzeXN0ZW0uIFdoYXQgeW91IG5lZWQgdG8gZG8gaXMgdG8gcGxhY2UgdGhlIGRpcmVjdGl2ZSBgcWRTbmFja2Jhckxpc3RlbmVyYCB0aGVyZS4gQWxzbywganVzdCBhZGQgdGhlIGBzaG93QXNTbmFja2JhcmAgcGFyYW1ldGVyIHRvIHRoZSBtZXRob2QgY2FsbC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1jb250YWluZXIgcWRTbmFja2Jhckxpc3RlbmVyPiBNeSBDb250YWluZXIgQ29udGVudCA8L3FkLWNvbnRhaW5lcj5cbiAqXG4gKiA8YnV0dG9uIChjbGljayk9XCJhZGROb3RpZmljYXRpb24oJ3FkUGFuZWwnLCB7IHR5cGU6ICdjcml0aWNhbCcsIGkxOG46ICdpMThuLmVycm9yLmNyaXRpY2FsJywgc2hvd0FzU25hY2tiYXI6IHRydWUgfSlcIj5cbiAqICAgQWRkIE5vdGlmaWNhdGlvblxuICogPC9idXR0b24+XG4gKiBgYGBcbiAqXG4gKiBBbGwgbm90aWZpY2F0aW9ucyBhcmUgbm93IGRpc3BsYXllZCBieSB0aGUgZGlyZWN0aXZlIGNvbnRhaW5lZCBpbiB0aGUgYHFkLWNvbnRhaW5lcmAuIEFsc28sIGFsbCBub3RpZmljYXRpb25zIGZyb20gdGhlIGJhY2tlbmQgYXJlIGRpc3BsYXllZCB0aGVyZS5cbiAqXG4gKiAqKlJlY29tbWVuZGF0aW9uIG9mIHRoZSBRdWFkcmVsIFRlYW0qKjogUGxhY2UgdGhlIGBxZFNuYWNrYmFyTGlzdGVuZXJgIGRpcmVjdGx5IG9uIHRvcCBvZiB0aGUgbGF5b3V0IHN5c3RlbSAtIHNvIGZvciBleGFtcGxlIGluIHRoZSAqKkFwcENvbXBvbmVudCoqLlxuICpcbiAqICMjIyBPcHRpb25zXG4gKlxuICogWW91IGNhbiBhbHNvIHBhc3MgYSBjb25maWd1cmF0aW9uIG9iamVjdCBpbiB0aGUgYHNuYWNrYmFyT3B0aW9uc2AgcGFyYW1ldGVyIHRvIGN1c3RvbWl6ZSB0aGUgc25hY2tiYXIgbm90aWZpY2F0aW9uIG9yIHRvIHNldCBhbiBgb25DbG9zZWAgaGFuZGxlci5cbiAqIFdoZW4geW91IGNsb3NlIHRoZSBtYWluIG5vdGlmaWNhdGlvbiwgdGhlIHNuYWNrYmFyIG5vdGlmaWNhdGlvbiB3aWxsIGJlIGNsb3NlZCBhdXRvbWF0aWNhbGx5LiBUaGUgc25hY2tiYXIgbm90aWZpY2F0aW9uIGNhbiBiZSBjbG9zZWQgZm9yIGl0c2VsZiBhbG9uZS5cbiAqXG4gKiBJbiB0aGUgYHNuYWNrYmFyT3B0aW9uc2AgY29uZmlndXJhdGlvbiBvYmplY3QgeW91IGNhbiBvdmVycmlkZSB0aGUgcHJvcGVydGllcyBgZGlzYWJsZUNsb3NlYCBhbmQgYGxpZmVUaW1lYC4gV2hlbiB0aGUgbWFpbiBub3RpZmljYXRpb24gaXMgY2xvc2VkLFxuICogdGhlIHNuYWNrYmFyIG5vdGlmaWNhdGlvbiB3aWxsIGFsc28gYmUgY2xvc2VkLiBTbyB0aGUgbGlmZSB0aW1lIG9mIHRoZSBzbmFja2JhciBub3RpZmljYXRpb24gb25seSBjYW4gYmUgc2hvcnRlci5cbiAqXG4gKiAjIyBPUyBOb3RpZmljYXRpb25zXG4gKlxuICogVG8gYnJpbmcgYSBub3RpZmljYXRpb24gdG8gdGhlIGZvcmVncm91bmQsIGV2ZW4gaWYgdGhlIGFwcGxpY2F0aW9uIHdpbmRvdyBpcyBub3QgaW4gZm9jdXMsIHlvdSBjYW4gYWxzbyBwdXNoIHRoZSBub3RpZmljYXRpb24gYXMgYW4gT1MgTm90aWZpY2F0aW9uLlxuICogVGhlbiB0aGUgbm90aWZpY2F0aW9uIHdpbGwgYWxzbyBiZSBwdXNoZWQgdGhyb3VnaCB0aGUgTm90aWZpY2F0aW9uIGJyb3dzZXIgQVBJIGFuZCB3aWxsIGJlIGRpc3BsYXllZCBvbiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0gKGUuZy4gV2luZG93cy9MaW51eCkuXG4gKiBJbiB0aGUgZnV0dXJlLCB0aGUgT1MgTm90aWZpY2F0aW9ucyB3aWxsIGFsc28gYmUgcHVzaGVkIGFzIHNtYXJ0cGhvbmUgc3lzdGVtIG5vdGlmaWNhdGlvbnMuIEN1cnJlbnRseSwgb25seSBkZXNrdG9wIG5vdGlmaWNhdGlvbnMgYXJlIHN1cHBvcnRlZC5cbiAqXG4gKiAjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGh0bWxcbiAqIDxidXR0b24gKGNsaWNrKT1cImFkZE5vdGlmaWNhdGlvbigncWRQYW5lbCcsIHsgdHlwZTogJ2NyaXRpY2FsJywgaTE4bjogJ2kxOG4uZXJyb3IuY3JpdGljYWwnLCBzaG93QXNPc05vdGlmaWNhdGlvbjogdHJ1ZSB9KVwiPlxuICogICBBZGQgTm90aWZpY2F0aW9uXG4gKiA8L2J1dHRvbj5cbiAqIGBgYFxuICpcbiAqICMjIyBPcHRpb25zXG4gKlxuICogWW91IGNhbiBhbHNvIHBhc3MgYSBjb25maWd1cmF0aW9uIG9iamVjdCBpbiB0aGUgYG9zTm90aWZpY2F0aW9uT3B0aW9uc2AgcGFyYW1ldGVyIHRvIGN1c3RvbWl6ZSB0aGUgT1Mgbm90aWZpY2F0aW9uIG9yIHRvIHNldCBgb25DbGlja2AgYW5kIGBvbkNsb3NlYCBoYW5kbGVycy5cbiAqIFdoZW4geW91IGNsb3NlIHRoZSBtYWluIG5vdGlmaWNhdGlvbiwgdGhlIE9TIG5vdGlmaWNhdGlvbiB3aWxsIGJlIGNsb3NlZCBhdXRvbWF0aWNhbGx5LiBUaGUgT1Mgbm90aWZpY2F0aW9uIGNhbiBiZSBjbG9zZWQgZm9yIGl0c2VsZiBhbG9uZS5cbiAqXG4gKiBJbiB0aGUgYG9zTm90aWZpY2F0aW9uT3B0aW9uc2AgY29uZmlndXJhdGlvbiBvYmplY3QgeW91IGNhbiBvdmVycmlkZSB0aGUgcHJvcGVydGllcyBgZGlzYWJsZUNsb3NlYCBhbmQgYGxpZmVUaW1lYC4gV2hlbiB0aGUgbWFpbiBub3RpZmljYXRpb24gaXMgY2xvc2VkLFxuICogdGhlIE9TIG5vdGlmaWNhdGlvbiB3aWxsIGFsc28gYmUgY2xvc2VkLiBTbyB0aGUgbGlmZSB0aW1lIG9mIHRoZSBPUyBub3RpZmljYXRpb24gb25seSBjYW4gYmUgc2hvcnRlci5cbiAqXG4gKiAjIyMgRGVlcCBsaW5rc1xuICpcbiAqIFRvIG9wZW4gYSBkZWVwIGxpbmsgd2hlbiB0aGUgT1Mgbm90aWZpY2F0aW9uIGlzIGNsaWNrZWQsIHVzZSB0aGUgZm9sbG93aW5nIGNvZGUgZm9yIHRoZSBjbGljayBoYW5kbGVyOlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gKiB3aW5kb3cub3BlbignaHR0cHM6Ly95b3VyL2RlZXAvbGluaycpO1xuICogYGBgXG4gKlxuICogIyMgTm90aWZpY2F0aW9ucyB2aWEgc2VydmljZSAobXVsdGlwbGUgaW5zdGFuY2VzKVxuICpcbiAqICMjIyBPYmplY3Qgb2YgbXVsdGlwbGUgbm90aWZpY2F0aW9uc1xuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IEJVTEs6IFFkTm90aWZpY2F0aW9ucyA9IFtcbiAqICAge1xuICogICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgaTE4bjogJ2kxOG4uZXJyb3IuMSdcbiAqICAgfSxcbiAqICAge1xuICogICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgaTE4bjogJ2kxOG4uZXJyb3IuMidcbiAqICAgfVxuICogXTtcbiAqIGBgYFxuICpcbiAqICMjIyBDb21wb25lbnRcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBNeU5vdGlmaWNhdGlvbkNvbXBvbmVudCB7XG4gKiAgIGJ1bGs6IFFkTm90aWZpY2F0aW9ucyA9IEJVTEs7XG4gKlxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5vdGlmaWNhdGlvbnNTZXJ2aWNlOiBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlLCBwdWJsaWMgbW9kYWxTZXJ2aWNlOiBRZE1vZGFsU2VydmljZSkge31cbiAqXG4gKiAgIG9wZW5Ob3RpZmljYXRpb25Nb2RhbChtcm4pIHtcbiAqICAgICAvLyBNUk4gcmVwcmVzZW50cyBhIHVuaXF1ZSBjb250ZXh0XG4gKiAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihNeU5vdGlmaWNhdGlvbk1vZGFsQ29tcG9uZW50LCB7IGRhdGE6IHsgbXJuIH0gfSk7XG4gKlxuICogICAgIC8vIEFkZHMgdGhlIG5vdGlmaWNhdGlvbnMgd2hlbiBvcGVuaW5nXG4gKiAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5hZGRCdWxrKG1ybiwgdGhpcy5idWxrKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogIyMjIFRlbXBsYXRlXG4gKlxuICogYGBgaHRtbFxuICogPG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCI+XG4gKiAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwibXJuXCI+XG4gKiAgICAgPG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBjbGFzcz1cImNlbnRlclwiPk1ybi48L21hdC1oZWFkZXItY2VsbD5cbiAqICAgICA8bWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiIGNsYXNzPVwiY2VudGVyXCI+XG4gKiAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5Ob3RpZmljYXRpb25Nb2RhbChlbGVtZW50Lm1ybilcIj5cbiAqICAgICAgICAgPCEtLSBNUk4gcmVwcmVzZW50cyBhIHVuaXF1ZSBjb250ZXh0IC0tPlxuICogICAgICAgICB7eyBlbGVtZW50Lm1ybiB9fVxuICogICAgICAgPC9idXR0b24+XG4gKiAgICAgPC9tYXQtY2VsbD5cbiAqICAgPC9uZy1jb250YWluZXI+XG4gKiA8L21hdC10YWJsZT5cbiAqIGBgYFxuICpcbiAqICMjIE5vdGlmaWNhdGlvbiBFdmVudHNcbiAqXG4gKiBZb3UgY2FuIGRlZmluZSBhbiBgb25DbG9zZWAgY2FsbGJhY2sgZm9yIGVhY2ggbm90aWZpY2F0aW9uIHR5cGUuIFdoZW4gdGhlIG1haW4gbm90aWZpY2F0aW9uIGlzIGNsb3NlZCwgdGhlblxuICogdGhlIGNvcnJlc3BvbmRpbmcgc25hY2tiYXIgbm90aWZpY2F0aW9uIGFuZCBPUyBub3RpZmljYXRpb24gd2lsbCBhbHNvIGJlIGNsb3NlZCBhbmQgYWxsIGV2ZW50cyB3aWxsIGJlIGZpcmVkLlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNsYXNzIE15Tm90aWZpY2F0aW9uQ29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IocHJpdmF0ZSBub3RpZmljYXRpb25zU2VydmljZTogUWROb3RpZmljYXRpb25zU2VydmljZSkge31cbiAqXG4gKiAgIHNob3dOb3RpZmljYXRpb24oKTogdm9pZCB7XG4gKiAgICAgdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5hZGQoXG4gKiAgICAgICAncWRQYW5lbCcsXG4gKiAgICAgICB7XG4gKiAgICAgICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgICAgIGkxOG46ICdpMThuLmVycm9yLmNyaXRpY2FsJyxcbiAqICAgICAgICAgb25DbG9zZTogKCkgPT4gY29uc29sZS5sb2coJ05vdGlmaWNhdGlvbiBjbG9zZWQuJyksXG4gKiAgICAgICAgIHNob3dBc1NuYWNrYmFyOiB0cnVlLFxuICogICAgICAgICBzbmFja2Jhck9wdGlvbnM6IHtcbiAqICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiBjb25zb2xlLmxvZygnU25hY2tiYXIgTm90aWZpY2F0aW9uIGNsb3NlZC4nKVxuICogICAgICAgICB9XG4gKiAgICAgICAgIHNob3dBc09zTm90aWZpY2F0aW9uOiB0cnVlLFxuICogICAgICAgICBvc05vdGlmaWNhdGlvbk9wdGlvbnM6IHtcbiAqICAgICAgICAgICBvbkNsb3NlOiAoKSA9PiBjb25zb2xlLmxvZygnT1MgTm90aWZpY2F0aW9uIGNsb3NlZC4nKVxuICogICAgICAgICB9XG4gKiAgICAgICB9XG4gKiAgICAgKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogRXNwZWNpYWxseSBmb3IgdGhlIE9TIG5vdGlmaWNhdGlvbiBhbiBgb25DbGlja2AgaGFuZGxlciBjYW4gYmUgZGVmaW5lZC4gV2l0aCB0aGUgb25DbGljayBoYW5kbGVyIGl0J3MgYWxzbyBwb3NzaWJsZVxuICogdG8gZGVmaW5lIGEgZGVlcCBsaW5rIHRoYXQgd2lsbCBiZSBvcGVuZWQgb24gY2xpY2sgd2l0aCB0aGUgZm9sbG93aW5nIGNvZGU6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogdGhpcy5ub3RpZmljYXRpb25zU2VydmljZS5hZGQoXG4gKiAgICdxZFBhbmVsJyxcbiAqICAge1xuICogICAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgICAgaTE4bjogJ2kxOG4uZXJyb3IuY3JpdGljYWwnLFxuICogICAgIHNob3dBc09zTm90aWZpY2F0aW9uOiB0cnVlLFxuICogICAgIG9zTm90aWZpY2F0aW9uT3B0aW9uczoge1xuICogICAgICAgb25DbGljazogKGV2ZW50KSA9PiB7XG4gKiAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gKiAgICAgICAgIHdpbmRvdy5vcGVuKCdodHRwczovL3lvdXIvZGVlcC9saW5rJyk7XG4gKiAgICAgICB9XG4gKiAgICAgfVxuICogICB9XG4gKiApO1xuICogYGBgXG4gKlxuICogIyMgSW5saW5lIE5vdGlmaWNhdGlvbnNcbiAqXG4gKiBOb3RpZmljYXRpb25zIGNhbiBhbHNvIGJlIGluc2VydGVkIGRpcmVjdGx5IGludG8gdGhlIHRlbXBsYXRlLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1ub3RpZmljYXRpb24gW3R5cGVdPVwidHlwZVwiIFtub3RpZmljYXRpb25dPVwibm90aWZpY2F0aW9uXCI+XG4gKiAgIDxxZC1ub3RpZmljYXRpb24tY29udGVudD4gdGVzdCBub3RpZmljYXRpb24gY29udGVudCA8L3FkLW5vdGlmaWNhdGlvbi1jb250ZW50PlxuICogPC9xZC1ub3RpZmljYXRpb24+XG4gKiBgYGBcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBUaGUgdHlwZSBjYW4gYmUgZGVmaW5lZCB3aXRoIHRoZSB0eXBlIGlucHV0XG4gKiB0eXBlID0gJ2NyaXRpY2FsJztcbiAqXG4gKiAvLyAuLi4gb3IgaW4gdGhlIG5vdGlmaWNhdGlvbiBjb25maWdcbiAqIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24gPSB7XG4gKiAgIHR5cGU6ICdjcml0aWNhbCdcbiAqIH1cbiAqIGBgYFxuICpcbiAqIFRoZSBjb250ZW50IGNhbiBhbHNvIGJlIGRlZmluZWQgaW4gdGhlIGNvbmZpZy4gVGhlbiB5b3UgZG9uJ3QgaGF2ZSB0byBwdXQgYSBgcWQtbm90aWZpY2F0aW9uLWNvbnRlbnRgXG4gKiBlbGVtZW50IGludG8gdGhlIGBxZC1ub3RpZmljYXRpb25gLlxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1ub3RpZmljYXRpb24gW25vdGlmaWNhdGlvbl09XCJub3RpZmljYXRpb25cIj48L3FkLW5vdGlmaWNhdGlvbj5cbiAqIGBgYFxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24gPSB7XG4gKiAgIHR5cGU6ICdjcml0aWNhbCcsXG4gKiAgIGkxOG46ICdpMThuLmVycm9yLmNyaXRpY2FsJ1xuICogfVxuICogYGBgXG4gKlxuICogIyMgTXVsdGlsaW5lIE5vdGlmaWNhdGlvbnNcbiAqXG4gKiBUbyBjcmVhdGUgYSBtdWx0aWxpbmUgbm90aWZpY2F0aW9uIHlvdSBzaW1wbHkgY2FuIGluc2VydCBgXFxuYCBpbiB0aGUgaTE4biB0cmFuc2xhdGlvbiB0ZXh0LiBMaW5lIGJyZWFrcyAoYFxcbmApIGFyZVxuICogbm90IGNvbnNpZGVyZWQgaWYgeW91IHVzZSB0aGUgYDxxZC1ub3RpZmljYXRpb24tY29udGVudD5gIHZhcmlhbnQuIExpbmUgYnJlYWtzIG9ubHkgd29yayBpZiB5b3UgZGVmaW5lIHRoZVxuICogaTE4biBrZXkgaW4gdGhlIG5vdGlmaWNhdGlvbiBjb25maWcuXG4gKlxuICogIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBub3RpZmljYXRpb246IFFkTm90aWZpY2F0aW9uID0ge1xuICogICB0eXBlOiAnd2FybmluZycsXG4gKiAgIGkxOG46ICdpMThuLm5jdHMuZGVjbGFyYXRpb24uZGV0YWlsSW52ZW50b3J5UmVzdWx0Lm5vdGlmaWNhdGlvbi50cmFuc2l0RGVhZGxpbmVFeHBpcmVkJ1xuICogfVxuICogYGBgXG4gKlxuICogYGBganNvblxuICoge1xuICogICAuLi5cbiAqXG4gKiAgIFwiaTE4bi5uY3RzLmRlY2xhcmF0aW9uLmRldGFpbEludmVudG9yeVJlc3VsdC5ub3RpZmljYXRpb24udHJhbnNpdERlYWRsaW5lRXhwaXJlZFwiOiBcIlRoZSBpbnZlbnRvcnkgcmVzdWx0IG11c3QgYmUgY2hlY2tlZCBhbmQgdGhlIGNvbnRyb2wgcmVzdWx0IHJlY29yZGVkLiBcXG5BdHRlbnRpb246IFRoZSB0cmFuc2l0IHBlcmlvZCBoYXMgZXhwaXJlZCB1cG9uIGFycml2YWwgYXQgdGhlIEF1dGhvcml6ZWQgUGxhY2VcIixcbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyBOb3RpZmljYXRpb25zIFNlcnZpY2VcbiAqXG4gKiB8IE1ldGhvZCAgICAgICAgICAgICAgICAgICAgICAgfCBQYXJhbXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZWZhdWx0IHxcbiAqIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB8IC0tLS0tLS0gfFxuICogfCBnZXROb3RpZmljYXRpb25zRm9yQ29udGV4dCgpIHwgY29udGV4dDogc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmV0dXJucyBub3RpZmljYXRpb24gc3RyZWFtIGZvciBjb250ZXh0LiAgICAgICAgIHwgLSAgICAgICB8XG4gKiB8IGFkZCgpICAgICAgICAgICAgICAgICAgICAgICAgfCBjb250ZXh0OiBzdHJpbmcsIG5vdGlmaWNhdGlvbjogUWROb3RpZmljYXRpb24gICAgICAgICAgfCBBZGRzIGEgc2luZ2xlIG5vdGlmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgfCAtICAgICAgIHxcbiAqIHwgYWRkQnVsaygpICAgICAgICAgICAgICAgICAgICB8IGNvbnRleHQ6IHN0cmluZywgbm90aWZpY2F0aW9uczogUWROb3RpZmljYXRpb25zICAgICAgICB8IEFkZHMgbXVsdGlwbGUgbm90aWZpY2F0aW9ucy4gICAgICAgICAgICAgICAgICAgICB8IC0gICAgICAgfFxuICogfCByZW1vdmUoKSAgICAgICAgICAgICAgICAgICAgIHwgY29udGV4dDogc3RyaW5nLCBpZDogc3RyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUmVtb3ZlcyBzcGVjaWZpYyBub3RpZmljYXRpb24uICAgICAgICAgICAgICAgICAgIHwgLSAgICAgICB8XG4gKiB8IHJlbW92ZUFsbCgpICAgICAgICAgICAgICAgICAgfCBjb250ZXh0OiBzdHJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSZW1vdmVzIGFsbCBub3RpZmljYXRpb25zIGluIGNvbnRleHQuICAgICAgICAgICAgfCAtICAgICAgIHxcbiAqIHwgcmVzZXQoKSAgICAgICAgICAgICAgICAgICAgICB8IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENsZWFyIGFsbCBub3RpZmljYXRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICB8IC0gICAgICAgfFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1ub3RpZmljYXRpb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm90aWZpY2F0aW9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIGhvc3Q6IHsgY2xhc3M6ICdxZC1ub3RpZmljYXRpb24nIH1cbn0pXG5leHBvcnQgY2xhc3MgUWROb3RpZmljYXRpb25Db21wb25lbnQge1xuICAvKipcbiAgICogRGVmaW5lcyB0aGUgdHlwZSBvZiB0aGlzIG5vdGlmaWNhdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6IFFkTm90aWZpY2F0aW9uVHlwZSA9ICdjcml0aWNhbCc7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gb2YgYSBub3RpZmljYXRpb24uXG4gICAqL1xuICBASW5wdXQoKSBub3RpZmljYXRpb246IFFkTm90aWZpY2F0aW9uO1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5jbGFzcycpIGdldCB0eXBlQ2xhc3NOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBxZC1ub3RpZmljYXRpb24gcWQtbm90aWZpY2F0aW9uLSR7dGhpcy5nZXRUeXBlKCl9YDtcbiAgfVxuXG4gIGdldCBjbG9zZWFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubm90aWZpY2F0aW9uID8gIXRoaXMubm90aWZpY2F0aW9uLmRpc2FibGVDbG9zZSA6IHRydWU7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U6IFFkTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBzbmFja2JhclNlcnZpY2U6IFFkU25hY2tiYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZlxuICApIHt9XG5cbiAgZ2V0VHlwZSgpOiBRZE5vdGlmaWNhdGlvblR5cGUge1xuICAgIHJldHVybiB0aGlzLm5vdGlmaWNhdGlvbj8udHlwZSB8fCB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRJY29uKCk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLmdldFR5cGUoKSkge1xuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIHJldHVybiAnY2hlY2tDaXJjbGVTb2xpZCc7XG4gICAgICBjYXNlICdpbmZvJzpcbiAgICAgICAgcmV0dXJuICdjaGVja0NpcmNsZVNvbGlkJztcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ3dhcm5pbmdIZXhGaWxsZWQnO1xuICAgICAgY2FzZSAnY3JpdGljYWwnOlxuICAgICAgICByZXR1cm4gJ2V4Y2xhbWF0aW9uQ2lyY2xlU29saWQnO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc05vdGlmaWNhdGlvbkluU25hY2tiYXIoKSkge1xuICAgICAgdGhpcy5zbmFja2JhclNlcnZpY2UuY2xvc2UodGhpcy5ub3RpZmljYXRpb24udXVpZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5yZW1vdmUodGhpcy5ub3RpZmljYXRpb24uY29udGV4dCwgdGhpcy5ub3RpZmljYXRpb24udXVpZCk7XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlTGlua0NsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMubm90aWZpY2F0aW9uLmxpbmsuaGFuZGxlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc05vdGlmaWNhdGlvbkluU25hY2tiYXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuY2xvc2VzdCgncWQtc25hY2tiYXInKTtcbiAgfVxufVxuIiwiPHFkLWljb24gKm5nSWY9XCJjbG9zZWFibGVcIiBbaWNvbl09XCIndGltZXNMYXJnZSdcIiBjbGFzcz1cImNsb3NlclwiIChjbGljayk9XCJyZW1vdmUoKVwiPjwvcWQtaWNvbj5cbjxxZC1pY29uIFtpY29uXT1cInRoaXMuZ2V0SWNvbigpXCIgY2xhc3M9XCJpY29uXCI+PC9xZC1pY29uPlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJxZC1ub3RpZmljYXRpb24tY29udGVudFwiPjwvbmctY29udGVudD5cblxuPGRpdiBjbGFzcz1cInRpdGxlXCIgKm5nSWY9XCJub3RpZmljYXRpb24/LnRpdGxlXCI+e3sgbm90aWZpY2F0aW9uLnRpdGxlLmkxOG4gfCB0cmFuc2xhdGUgfX08L2Rpdj5cbjxkaXYgY2xhc3M9XCJtZXNzYWdlXCI+XG4gIDxzcGFuPnt7IG5vdGlmaWNhdGlvbj8uaTE4biB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgPGEgY2xhc3M9XCJsaW5rXCIgKm5nSWY9XCJub3RpZmljYXRpb24/LmxpbmtcIiAoY2xpY2spPVwiaGFuZGxlTGlua0NsaWNrKClcIj57eyBub3RpZmljYXRpb24ubGluay5pMThuIHwgdHJhbnNsYXRlIH19PC9hPlxuPC9kaXY+XG4iXX0=
|
|
@@ -10,27 +10,54 @@ import { QdNotificationsService } from './notifications-service.service';
|
|
|
10
10
|
import * as i0 from "@angular/core";
|
|
11
11
|
import * as i1 from "./notifications-service.service";
|
|
12
12
|
export const BACKEND_ERROR_CODES = new InjectionToken('BACKEND_ERROR_CODES');
|
|
13
|
+
export const WHITELIST_ERROR_CODES = new InjectionToken('WHITELIST_ERROR_CODES');
|
|
13
14
|
/**
|
|
14
15
|
* The QdNotificationsHttpInterceptorService is an Angular HTTP interceptor that captures error responses from HTTP requests and generates notifications for backend errors. This Service not only intercepts error responses, but it also handles specific error codes and translates them into appropriate error messages for display.
|
|
15
16
|
*/
|
|
16
17
|
export class QdNotificationsHttpInterceptorService {
|
|
17
18
|
appEnvironment;
|
|
18
19
|
backendErrorCodes;
|
|
20
|
+
whitelistErrorCodes;
|
|
19
21
|
notificationService;
|
|
20
|
-
|
|
22
|
+
blacklistErrorCodes;
|
|
23
|
+
constructor(appEnvironment, backendErrorCodes, whitelistErrorCodes, notificationService) {
|
|
21
24
|
this.appEnvironment = appEnvironment;
|
|
22
25
|
this.backendErrorCodes = backendErrorCodes;
|
|
26
|
+
this.whitelistErrorCodes = whitelistErrorCodes;
|
|
23
27
|
this.notificationService = notificationService;
|
|
24
28
|
this.backendErrorCodes = this.backendErrorCodes || {};
|
|
29
|
+
this.whitelistErrorCodes = this.whitelistErrorCodes || [];
|
|
30
|
+
this.blacklistErrorCodes = [
|
|
31
|
+
// 401, 402, 403
|
|
32
|
+
HttpStatusCode.Unauthorized,
|
|
33
|
+
HttpStatusCode.PaymentRequired,
|
|
34
|
+
HttpStatusCode.Forbidden,
|
|
35
|
+
// All 5xx codes
|
|
36
|
+
HttpStatusCode.InternalServerError,
|
|
37
|
+
HttpStatusCode.NotImplemented,
|
|
38
|
+
HttpStatusCode.BadGateway,
|
|
39
|
+
HttpStatusCode.ServiceUnavailable,
|
|
40
|
+
HttpStatusCode.GatewayTimeout,
|
|
41
|
+
HttpStatusCode.HttpVersionNotSupported,
|
|
42
|
+
HttpStatusCode.VariantAlsoNegotiates,
|
|
43
|
+
HttpStatusCode.InsufficientStorage,
|
|
44
|
+
HttpStatusCode.LoopDetected,
|
|
45
|
+
HttpStatusCode.NotExtended,
|
|
46
|
+
HttpStatusCode.NetworkAuthenticationRequired
|
|
47
|
+
];
|
|
25
48
|
}
|
|
26
49
|
intercept(request, next) {
|
|
27
50
|
if (this.appEnvironment.disableBackendNotifications)
|
|
28
51
|
return next.handle(request);
|
|
29
52
|
return next.handle(request).pipe(catchError((error) => {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
53
|
+
const isBlacklisted = this.blacklistErrorCodes.includes(error.status);
|
|
54
|
+
const shouldShowNotification = isBlacklisted || !this.whitelistErrorCodes.includes(error.status);
|
|
55
|
+
if (shouldShowNotification) {
|
|
56
|
+
let i18n = this.getErrorTranslationKeyForHttpStatus(error.status);
|
|
57
|
+
if (error.error?.errorCode && error.error.errorCode in this.backendErrorCodes)
|
|
58
|
+
i18n = 'ERROR.' + error.error.errorCode;
|
|
59
|
+
this.notificationService.add('qdPanel', { type: 'critical', i18n, showAsSnackbar: true });
|
|
60
|
+
}
|
|
34
61
|
return throwError(() => error);
|
|
35
62
|
}));
|
|
36
63
|
}
|
|
@@ -57,7 +84,7 @@ export class QdNotificationsHttpInterceptorService {
|
|
|
57
84
|
return 'UnknownError';
|
|
58
85
|
}
|
|
59
86
|
}
|
|
60
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdNotificationsHttpInterceptorService, deps: [{ token: APP_ENVIRONMENT, optional: true }, { token: BACKEND_ERROR_CODES, optional: true }, { token: i1.QdNotificationsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
87
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdNotificationsHttpInterceptorService, deps: [{ token: APP_ENVIRONMENT, optional: true }, { token: BACKEND_ERROR_CODES, optional: true }, { token: WHITELIST_ERROR_CODES, optional: true }, { token: i1.QdNotificationsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
61
88
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdNotificationsHttpInterceptorService, providedIn: 'root' });
|
|
62
89
|
}
|
|
63
90
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdNotificationsHttpInterceptorService, decorators: [{
|
|
@@ -75,5 +102,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
75
102
|
}, {
|
|
76
103
|
type: Inject,
|
|
77
104
|
args: [BACKEND_ERROR_CODES]
|
|
105
|
+
}] }, { type: undefined, decorators: [{
|
|
106
|
+
type: Optional
|
|
107
|
+
}, {
|
|
108
|
+
type: Inject,
|
|
109
|
+
args: [WHITELIST_ERROR_CODES]
|
|
78
110
|
}] }, { type: i1.QdNotificationsService }] });
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1odHRwLWludGVyY2VwdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkLXVpL3NyYy9saWIvbm90aWZpY2F0aW9ucy9zZXJ2aWNlcy9ub3RpZmljYXRpb25zLWh0dHAtaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBTUwsY0FBYyxFQUNmLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFFekUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUU3RTs7R0FFRztBQUlILE1BQU0sT0FBTyxxQ0FBcUM7SUFFUTtJQUNJO0lBQzFDO0lBSGxCLFlBQ3dELGNBQWdDLEVBQzVCLGlCQUFpQixFQUMzRCxtQkFBMkM7UUFGTCxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDNUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFBO1FBQzNELHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBd0I7UUFFM0QsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7SUFDeEQsQ0FBQztJQUVELFNBQVMsQ0FBQyxPQUF5QixFQUFFLElBQWlCO1FBQ3BELElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQywyQkFBMkI7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFFakYsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDOUIsVUFBVSxDQUFDLENBQUMsS0FBd0IsRUFBRSxFQUFFO1lBQ3RDLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFbEUsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLFNBQVMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsaUJBQWlCO2dCQUMzRSxJQUFJLEdBQUcsUUFBUSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBRTFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFFMUYsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTyxtQ0FBbUMsQ0FBQyxjQUE4QjtRQUN4RSxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFNUQsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQztZQUNsRSxDQUFDLENBQUMsY0FBYyxZQUFZLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDN0MsQ0FBQyxDQUFDLDhCQUE4QixVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQ3JGLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxjQUE4QjtRQUNyRCxRQUFRLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLEtBQUssY0FBYyxDQUFDLFVBQVU7Z0JBQzVCLE9BQU8sWUFBWSxDQUFDO1lBQ3RCLEtBQUssY0FBYyxDQUFDLFlBQVk7Z0JBQzlCLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLEtBQUssY0FBYyxDQUFDLFNBQVM7Z0JBQzNCLE9BQU8sV0FBVyxDQUFDO1lBQ3JCLEtBQUssY0FBYyxDQUFDLFFBQVE7Z0JBQzFCLE9BQU8sVUFBVSxDQUFDO1lBQ3BCO2dCQUNFLElBQUksY0FBYyxJQUFJLEdBQUcsRUFBRSxDQUFDO29CQUMxQixPQUFPLGFBQWEsQ0FBQztnQkFDdkIsQ0FBQztnQkFDRCxPQUFPLGNBQWMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQzt1R0FsRFUscUNBQXFDLGtCQUUxQixlQUFlLDZCQUNmLG1CQUFtQjsyR0FIOUIscUNBQXFDLGNBRnBDLE1BQU07OzJGQUVQLHFDQUFxQztrQkFIakQsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQUdJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZTs7MEJBQ2xDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLXN0cmljdC1pZ25vcmVcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cEV2ZW50LFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwUmVxdWVzdCxcbiAgSHR0cFN0YXR1c0NvZGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNvbnN0YW50Q2FzZSB9IGZyb20gJy4uLy4uL2NvcmUvdG9vbHMvY29uc3RhbnRDYXNlLnRvb2xzJztcbmltcG9ydCB7IGxvd2VyRmlyc3QgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBBUFBfRU5WSVJPTk1FTlQgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2FwcC1lbnZpcm9tZW50LnRva2VuJztcbmltcG9ydCB7IFFkQXBwRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2FwcC1lbnZpcm9tZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb25zLXNlcnZpY2Uuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBCQUNLRU5EX0VSUk9SX0NPREVTID0gbmV3IEluamVjdGlvblRva2VuKCdCQUNLRU5EX0VSUk9SX0NPREVTJyk7XG5cbi8qKlxuICogVGhlIFFkTm90aWZpY2F0aW9uc0h0dHBJbnRlcmNlcHRvclNlcnZpY2UgaXMgYW4gQW5ndWxhciBIVFRQIGludGVyY2VwdG9yIHRoYXQgY2FwdHVyZXMgZXJyb3IgcmVzcG9uc2VzIGZyb20gSFRUUCByZXF1ZXN0cyBhbmQgZ2VuZXJhdGVzIG5vdGlmaWNhdGlvbnMgZm9yIGJhY2tlbmQgZXJyb3JzLiBUaGlzIFNlcnZpY2Ugbm90IG9ubHkgaW50ZXJjZXB0cyBlcnJvciByZXNwb25zZXMsIGJ1dCBpdCBhbHNvIGhhbmRsZXMgc3BlY2lmaWMgZXJyb3IgY29kZXMgYW5kIHRyYW5zbGF0ZXMgdGhlbSBpbnRvIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2VzIGZvciBkaXNwbGF5LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBRZE5vdGlmaWNhdGlvbnNIdHRwSW50ZXJjZXB0b3JTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChBUFBfRU5WSVJPTk1FTlQpIHByaXZhdGUgcmVhZG9ubHkgYXBwRW52aXJvbm1lbnQ6IFFkQXBwRW52aXJvbm1lbnQsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChCQUNLRU5EX0VSUk9SX0NPREVTKSBwcml2YXRlIHJlYWRvbmx5IGJhY2tlbmRFcnJvckNvZGVzLFxuICAgIHB1YmxpYyByZWFkb25seSBub3RpZmljYXRpb25TZXJ2aWNlOiBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuYmFja2VuZEVycm9yQ29kZXMgPSB0aGlzLmJhY2tlbmRFcnJvckNvZGVzIHx8IHt9O1xuICB9XG5cbiAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIGlmICh0aGlzLmFwcEVudmlyb25tZW50LmRpc2FibGVCYWNrZW5kTm90aWZpY2F0aW9ucykgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpO1xuXG4gICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcXVlc3QpLnBpcGUoXG4gICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgbGV0IGkxOG4gPSB0aGlzLmdldEVycm9yVHJhbnNsYXRpb25LZXlGb3JIdHRwU3RhdHVzKGVycm9yLnN0YXR1cyk7XG5cbiAgICAgICAgaWYgKGVycm9yLmVycm9yPy5lcnJvckNvZGUgJiYgZXJyb3IuZXJyb3IuZXJyb3JDb2RlIGluIHRoaXMuYmFja2VuZEVycm9yQ29kZXMpXG4gICAgICAgICAgaTE4biA9ICdFUlJPUi4nICsgZXJyb3IuZXJyb3IuZXJyb3JDb2RlO1xuXG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5hZGQoJ3FkUGFuZWwnLCB7IHR5cGU6ICdjcml0aWNhbCcsIGkxOG4sIHNob3dBc1NuYWNrYmFyOiB0cnVlIH0pO1xuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXJyb3JUcmFuc2xhdGlvbktleUZvckh0dHBTdGF0dXMoaHR0cFN0YXR1c0NvZGU6IEh0dHBTdGF0dXNDb2RlKTogc3RyaW5nIHtcbiAgICBjb25zdCBodHRwRXJyb3JOYW1lID0gdGhpcy5nZXRIdHRwRXJyb3JOYW1lKGh0dHBTdGF0dXNDb2RlKTtcblxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRFcnJvckNvZGVzW2BIVFRQXyR7Y29uc3RhbnRDYXNlKGh0dHBFcnJvck5hbWUpfWBdXG4gICAgICA/IGBFcnJvci5IVFRQXyR7Y29uc3RhbnRDYXNlKGh0dHBFcnJvck5hbWUpfWBcbiAgICAgIDogYGkxOG4ucWQubm90aWZpY2F0aW9uLmVycm9yLiR7bG93ZXJGaXJzdChodHRwRXJyb3JOYW1lKS5yZXBsYWNlKCdFcnJvcicsICcnKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIdHRwRXJyb3JOYW1lKGh0dHBTdGF0dXNDb2RlOiBIdHRwU3RhdHVzQ29kZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChodHRwU3RhdHVzQ29kZSkge1xuICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5CYWRSZXF1ZXN0OlxuICAgICAgICByZXR1cm4gJ0JhZFJlcXVlc3QnO1xuICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIHJldHVybiAnVW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuRm9yYmlkZGVuOlxuICAgICAgICByZXR1cm4gJ0ZvcmJpZGRlbic7XG4gICAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEZvdW5kOlxuICAgICAgICByZXR1cm4gJ05vdEZvdW5kJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChodHRwU3RhdHVzQ29kZSA+PSA1MDApIHtcbiAgICAgICAgICByZXR1cm4gJ1NlcnZlckVycm9yJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1Vua25vd25FcnJvcic7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
111
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy1odHRwLWludGVyY2VwdG9yLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3FkLXVpL3NyYy9saWIvbm90aWZpY2F0aW9ucy9zZXJ2aWNlcy9ub3RpZmljYXRpb25zLWh0dHAtaW50ZXJjZXB0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxvQkFBb0I7QUFDcEIsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RSxPQUFPLEVBTUwsY0FBYyxFQUNmLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFjLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBRXhFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7QUFFekUsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxjQUFjLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUM3RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBVyx1QkFBdUIsQ0FBQyxDQUFDO0FBRTNGOztHQUVHO0FBSUgsTUFBTSxPQUFPLHFDQUFxQztJQUlRO0lBQ0k7SUFDRTtJQUM1QztJQU5ELG1CQUFtQixDQUFXO0lBRS9DLFlBQ3dELGNBQWdDLEVBQzVCLGlCQUFpQixFQUNmLG1CQUE2QixFQUN6RSxtQkFBMkM7UUFITCxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDNUIsc0JBQWlC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QUM7WUFDdEIsS0FBSyxjQUFjLENBQUMsWUFBWTtnQkFDOUIsT0FBTyxjQUFjLENBQUM7WUFDeEIsS0FBSyxjQUFjLENBQUMsU0FBUztnQkFDM0IsT0FBTyxXQUFXLENBQUM7WUFDckIsS0FBSyxjQUFjLENBQUMsUUFBUTtnQkFDMUIsT0FBTyxVQUFVLENBQUM7WUFDcEI7Z0JBQ0UsSUFBSSxjQUFjLElBQUksR0FBRyxFQUFFLENBQUM7b0JBQzFCLE9BQU8sYUFBYSxDQUFDO2dCQUN2QixDQUFDO2dCQUNELE9BQU8sY0FBYyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO3VHQTlFVSxxQ0FBcUMsa0JBSTFCLGVBQWUsNkJBQ2YsbUJBQW1CLDZCQUNuQixxQkFBcUI7MkdBTmhDLHFDQUFxQyxjQUZwQyxNQUFNOzsyRkFFUCxxQ0FBcUM7a0JBSGpELFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFLSSxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGVBQWU7OzBCQUNsQyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQ3RDLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLXN0cmljdC1pZ25vcmVcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0aW9uVG9rZW4sIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwRXJyb3JSZXNwb25zZSxcbiAgSHR0cEV2ZW50LFxuICBIdHRwSGFuZGxlcixcbiAgSHR0cEludGVyY2VwdG9yLFxuICBIdHRwUmVxdWVzdCxcbiAgSHR0cFN0YXR1c0NvZGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGNvbnN0YW50Q2FzZSB9IGZyb20gJy4uLy4uL2NvcmUvdG9vbHMvY29uc3RhbnRDYXNlLnRvb2xzJztcbmltcG9ydCB7IGxvd2VyRmlyc3QgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBBUFBfRU5WSVJPTk1FTlQgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2FwcC1lbnZpcm9tZW50LnRva2VuJztcbmltcG9ydCB7IFFkQXBwRW52aXJvbm1lbnQgfSBmcm9tICcuLi8uLi9jb3JlL21vZGVsL2FwcC1lbnZpcm9tZW50LmludGVyZmFjZSc7XG5pbXBvcnQgeyBRZE5vdGlmaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb25zLXNlcnZpY2Uuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBCQUNLRU5EX0VSUk9SX0NPREVTID0gbmV3IEluamVjdGlvblRva2VuKCdCQUNLRU5EX0VSUk9SX0NPREVTJyk7XG5leHBvcnQgY29uc3QgV0hJVEVMSVNUX0VSUk9SX0NPREVTID0gbmV3IEluamVjdGlvblRva2VuPG51bWJlcltdPignV0hJVEVMSVNUX0VSUk9SX0NPREVTJyk7XG5cbi8qKlxuICogVGhlIFFkTm90aWZpY2F0aW9uc0h0dHBJbnRlcmNlcHRvclNlcnZpY2UgaXMgYW4gQW5ndWxhciBIVFRQIGludGVyY2VwdG9yIHRoYXQgY2FwdHVyZXMgZXJyb3IgcmVzcG9uc2VzIGZyb20gSFRUUCByZXF1ZXN0cyBhbmQgZ2VuZXJhdGVzIG5vdGlmaWNhdGlvbnMgZm9yIGJhY2tlbmQgZXJyb3JzLiBUaGlzIFNlcnZpY2Ugbm90IG9ubHkgaW50ZXJjZXB0cyBlcnJvciByZXNwb25zZXMsIGJ1dCBpdCBhbHNvIGhhbmRsZXMgc3BlY2lmaWMgZXJyb3IgY29kZXMgYW5kIHRyYW5zbGF0ZXMgdGhlbSBpbnRvIGFwcHJvcHJpYXRlIGVycm9yIG1lc3NhZ2VzIGZvciBkaXNwbGF5LlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBRZE5vdGlmaWNhdGlvbnNIdHRwSW50ZXJjZXB0b3JTZXJ2aWNlIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcbiAgcHJpdmF0ZSByZWFkb25seSBibGFja2xpc3RFcnJvckNvZGVzOiBudW1iZXJbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFQUF9FTlZJUk9OTUVOVCkgcHJpdmF0ZSByZWFkb25seSBhcHBFbnZpcm9ubWVudDogUWRBcHBFbnZpcm9ubWVudCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEJBQ0tFTkRfRVJST1JfQ09ERVMpIHByaXZhdGUgcmVhZG9ubHkgYmFja2VuZEVycm9yQ29kZXMsXG4gICAgQE9wdGlvbmFsKCkgQEluamVjdChXSElURUxJU1RfRVJST1JfQ09ERVMpIHByaXZhdGUgcmVhZG9ubHkgd2hpdGVsaXN0RXJyb3JDb2RlczogbnVtYmVyW10sXG4gICAgcHVibGljIHJlYWRvbmx5IG5vdGlmaWNhdGlvblNlcnZpY2U6IFFkTm90aWZpY2F0aW9uc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5iYWNrZW5kRXJyb3JDb2RlcyA9IHRoaXMuYmFja2VuZEVycm9yQ29kZXMgfHwge307XG4gICAgdGhpcy53aGl0ZWxpc3RFcnJvckNvZGVzID0gdGhpcy53aGl0ZWxpc3RFcnJvckNvZGVzIHx8IFtdO1xuXG4gICAgdGhpcy5ibGFja2xpc3RFcnJvckNvZGVzID0gW1xuICAgICAgLy8gNDAxLCA0MDIsIDQwM1xuICAgICAgSHR0cFN0YXR1c0NvZGUuVW5hdXRob3JpemVkLFxuICAgICAgSHR0cFN0YXR1c0NvZGUuUGF5bWVudFJlcXVpcmVkLFxuICAgICAgSHR0cFN0YXR1c0NvZGUuRm9yYmlkZGVuLFxuICAgICAgLy8gQWxsIDV4eCBjb2Rlc1xuICAgICAgSHR0cFN0YXR1c0NvZGUuSW50ZXJuYWxTZXJ2ZXJFcnJvcixcbiAgICAgIEh0dHBTdGF0dXNDb2RlLk5vdEltcGxlbWVudGVkLFxuICAgICAgSHR0cFN0YXR1c0NvZGUuQmFkR2F0ZXdheSxcbiAgICAgIEh0dHBTdGF0dXNDb2RlLlNlcnZpY2VVbmF2YWlsYWJsZSxcbiAgICAgIEh0dHBTdGF0dXNDb2RlLkdhdGV3YXlUaW1lb3V0LFxuICAgICAgSHR0cFN0YXR1c0NvZGUuSHR0cFZlcnNpb25Ob3RTdXBwb3J0ZWQsXG4gICAgICBIdHRwU3RhdHVzQ29kZS5WYXJpYW50QWxzb05lZ290aWF0ZXMsXG4gICAgICBIdHRwU3RhdHVzQ29kZS5JbnN1ZmZpY2llbnRTdG9yYWdlLFxuICAgICAgSHR0cFN0YXR1c0NvZGUuTG9vcERldGVjdGVkLFxuICAgICAgSHR0cFN0YXR1c0NvZGUuTm90RXh0ZW5kZWQsXG4gICAgICBIdHRwU3RhdHVzQ29kZS5OZXR3b3JrQXV0aGVudGljYXRpb25SZXF1aXJlZFxuICAgIF07XG4gIH1cblxuICBpbnRlcmNlcHQocmVxdWVzdDogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgaWYgKHRoaXMuYXBwRW52aXJvbm1lbnQuZGlzYWJsZUJhY2tlbmROb3RpZmljYXRpb25zKSByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCk7XG5cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgIGNhdGNoRXJyb3IoKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xuICAgICAgICBjb25zdCBpc0JsYWNrbGlzdGVkID0gdGhpcy5ibGFja2xpc3RFcnJvckNvZGVzLmluY2x1ZGVzKGVycm9yLnN0YXR1cyk7XG4gICAgICAgIGNvbnN0IHNob3VsZFNob3dOb3RpZmljYXRpb24gPSBpc0JsYWNrbGlzdGVkIHx8ICF0aGlzLndoaXRlbGlzdEVycm9yQ29kZXMuaW5jbHVkZXMoZXJyb3Iuc3RhdHVzKTtcblxuICAgICAgICBpZiAoc2hvdWxkU2hvd05vdGlmaWNhdGlvbikge1xuICAgICAgICAgIGxldCBpMThuID0gdGhpcy5nZXRFcnJvclRyYW5zbGF0aW9uS2V5Rm9ySHR0cFN0YXR1cyhlcnJvci5zdGF0dXMpO1xuXG4gICAgICAgICAgaWYgKGVycm9yLmVycm9yPy5lcnJvckNvZGUgJiYgZXJyb3IuZXJyb3IuZXJyb3JDb2RlIGluIHRoaXMuYmFja2VuZEVycm9yQ29kZXMpXG4gICAgICAgICAgICBpMThuID0gJ0VSUk9SLicgKyBlcnJvci5lcnJvci5lcnJvckNvZGU7XG5cbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkKCdxZFBhbmVsJywgeyB0eXBlOiAnY3JpdGljYWwnLCBpMThuLCBzaG93QXNTbmFja2JhcjogdHJ1ZSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RXJyb3JUcmFuc2xhdGlvbktleUZvckh0dHBTdGF0dXMoaHR0cFN0YXR1c0NvZGU6IEh0dHBTdGF0dXNDb2RlKTogc3RyaW5nIHtcbiAgICBjb25zdCBodHRwRXJyb3JOYW1lID0gdGhpcy5nZXRIdHRwRXJyb3JOYW1lKGh0dHBTdGF0dXNDb2RlKTtcblxuICAgIHJldHVybiB0aGlzLmJhY2tlbmRFcnJvckNvZGVzW2BIVFRQXyR7Y29uc3RhbnRDYXNlKGh0dHBFcnJvck5hbWUpfWBdXG4gICAgICA/IGBFcnJvci5IVFRQXyR7Y29uc3RhbnRDYXNlKGh0dHBFcnJvck5hbWUpfWBcbiAgICAgIDogYGkxOG4ucWQubm90aWZpY2F0aW9uLmVycm9yLiR7bG93ZXJGaXJzdChodHRwRXJyb3JOYW1lKS5yZXBsYWNlKCdFcnJvcicsICcnKX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRIdHRwRXJyb3JOYW1lKGh0dHBTdGF0dXNDb2RlOiBIdHRwU3RhdHVzQ29kZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChodHRwU3RhdHVzQ29kZSkge1xuICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5CYWRSZXF1ZXN0OlxuICAgICAgICByZXR1cm4gJ0JhZFJlcXVlc3QnO1xuICAgICAgY2FzZSBIdHRwU3RhdHVzQ29kZS5VbmF1dGhvcml6ZWQ6XG4gICAgICAgIHJldHVybiAnVW5hdXRob3JpemVkJztcbiAgICAgIGNhc2UgSHR0cFN0YXR1c0NvZGUuRm9yYmlkZGVuOlxuICAgICAgICByZXR1cm4gJ0ZvcmJpZGRlbic7XG4gICAgICBjYXNlIEh0dHBTdGF0dXNDb2RlLk5vdEZvdW5kOlxuICAgICAgICByZXR1cm4gJ05vdEZvdW5kJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChodHRwU3RhdHVzQ29kZSA+PSA1MDApIHtcbiAgICAgICAgICByZXR1cm4gJ1NlcnZlckVycm9yJztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gJ1Vua25vd25FcnJvcic7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HTTP_INTERCEPTORS } from '@angular/common/http';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
|
-
import { BACKEND_ERROR_CODES, QdNotificationsHttpInterceptorService } from './notifications/services/notifications-http-interceptor.service';
|
|
3
|
+
import { BACKEND_ERROR_CODES, WHITELIST_ERROR_CODES, QdNotificationsHttpInterceptorService } from './notifications/services/notifications-http-interceptor.service';
|
|
4
4
|
import { APP_ENVIRONMENT } from './core/model/app-enviroment.token';
|
|
5
5
|
import { QdButtonModule } from './button/button.module';
|
|
6
6
|
import { QdChipModule } from './chips/chips.module';
|
|
@@ -83,12 +83,13 @@ const QD_UI_MODULES = [
|
|
|
83
83
|
QdTreeModule
|
|
84
84
|
];
|
|
85
85
|
export class QdUiModule {
|
|
86
|
-
static forRoot(config, backendErrorCodes = {}) {
|
|
86
|
+
static forRoot(config, backendErrorCodes = {}, whitelistErrorCodes = []) {
|
|
87
87
|
return {
|
|
88
88
|
ngModule: QdUiModule,
|
|
89
89
|
providers: [
|
|
90
90
|
{ provide: APP_ENVIRONMENT, useValue: config },
|
|
91
|
-
{ provide: BACKEND_ERROR_CODES, useValue: backendErrorCodes }
|
|
91
|
+
{ provide: BACKEND_ERROR_CODES, useValue: backendErrorCodes },
|
|
92
|
+
{ provide: WHITELIST_ERROR_CODES, useValue: whitelistErrorCodes }
|
|
92
93
|
]
|
|
93
94
|
};
|
|
94
95
|
}
|
|
@@ -229,4 +230,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
229
230
|
]
|
|
230
231
|
}]
|
|
231
232
|
}] });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWQtdWkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL3FkLXVpLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHFDQUFxQyxFQUN0QyxNQUFNLGlFQUFpRSxDQUFDO0FBR3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVwRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xE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WUFDWixtQkFBbUI7WUFDbkIsYUFBYTtZQUNiLFlBQVk7d0dBZUQsVUFBVSxhQVRWO1lBQ1QscUJBQXFCO1lBQ3JCO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFFBQVEsRUFBRSxxQ0FBcUM7Z0JBQy9DLEtBQUssRUFBRSxJQUFJO2FBQ1o7U0FDRixZQVRTLGFBQWEsRUF6Q3ZCLGNBQWM7WUFDZCxZQUFZO1lBQ1osZ0JBQWdCO1lBQ2hCLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsbUJBQW1CO1lBQ25CLFlBQVk7WUFDWixjQUFjO1lBQ2QscUJBQXFCO1lBQ3JCLGNBQWM7WUFDZCxZQUFZO1lBQ1osWUFBWTtZQUNaLFlBQVk7WUFDWixhQUFhO1lBQ2IsY0FBYztZQUNkLFlBQVk7WUFDWixvQkFBb0I7WUFDcEIsdUJBQXVCO1lBQ3ZCLHFCQUFxQjtZQUNyQixZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLGdCQUFnQjtZQUNoQixvQkFBb0I7WUFDcEIsbUJBQW1CO1lBQ25CLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsY0FBYztZQUNkLGVBQWU7WUFDZixhQUFhO1lBQ2IsZUFBZTtZQUNmLHVCQUF1QjtZQUN2QixlQUFlO1lBQ2YsY0FBYztZQUNkLGFBQWE7WUFDYixZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLGFBQWE7WUFDYixZQUFZOzsyRkFlRCxVQUFVO2tCQVp0QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDeEIsT0FBTyxFQUFFLGFBQWE7b0JBQ3RCLFNBQVMsRUFBRTt3QkFDVCxxQkFBcUI7d0JBQ3JCOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFFBQVEsRUFBRSxxQ0FBcUM7NEJBQy9DLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSFRUUF9JTlRFUkNFUFRPUlMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBCQUNLRU5EX0VSUk9SX0NPREVTLFxuICBRZE5vdGlmaWNhdGlvbnNIdHRwSW50ZXJjZXB0b3JTZXJ2aWNlXG59IGZyb20gJy4vbm90aWZpY2F0aW9ucy9zZXJ2aWNlcy9ub3RpZmljYXRpb25zLWh0dHAtaW50ZXJjZXB0b3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IFFkQXBwRW52aXJvbm1lbnQgfSBmcm9tICcuL2NvcmUvbW9kZWwvYXBwLWVudmlyb21lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFQUF9FTlZJUk9OTUVOVCB9IGZyb20gJy4vY29yZS9tb2RlbC9hcHAtZW52aXJvbWVudC50b2tlbic7XG5cbmltcG9ydCB7IFFkQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi9idXR0b24vYnV0dG9uLm1vZHVsZSc7XG5pbXBvcnQgeyBRZENoaXBNb2R1bGUgfSBmcm9tICcuL2NoaXBzL2NoaXBzLm1vZHVsZSc7XG5pbXBvcnQgeyBRZENvbW1lbnRzTW9kdWxlIH0gZnJvbSAnLi9jb21tZW50cy9jb21tZW50cy5tb2R1bGUnO1xuaW1wb3J0IHsgUWRDb250YWN0Q2FyZE1vZHVsZSB9IGZyb20gJy4vY29udGFjdC1jYXJkL2NvbnRhY3QtY2FyZC5tb2R1bGUnO1xuaW1wb3J0IHsgUWRDb250YWluZXJNb2R1bGUgfSBmcm9tICcuL2NvbnRhaW5lci9jb250YWluZXIubW9kdWxlJztcbmltcG9ydCB7IFFkQ29udGVudEdyaWRNb2R1bGUgfSBmcm9tICcuL2NvbnRlbnQtZ3JpZC9jb250ZW50LWdyaWQubW9kdWxlJztcbmltcG9ydCB7IFFkQ29yZU1vZHVsZSB9IGZyb20gJy4vY29yZS9jb3JlLm1vZHVsZSc7XG5pbXBvcnQgeyBRZERpYWxvZ01vZHVsZSB9IGZyb20gJy4vZGlhbG9nL2RpYWxvZy5tb2R1bGUnO1xuaW1wb3J0IHsgUWRGaWxlQ29sbGVjdG9yTW9kdWxlIH0gZnJvbSAnLi9maWxlLWNvbGxlY3Rvci9maWxlLWNvbGxlY3Rvci5tb2R1bGUnO1xuaW1wb3J0IHsgUWRGaWx0ZXJNb2R1bGUgfSBmcm9tICcuL2ZpbHRlci9maWx0ZXIubW9kdWxlJztcbmltcG9ydCB7IFFkRm9ybU1vZHVsZSB9IGZyb20gJy4vZm9ybXMvcWQtZm9ybS5tb2R1bGUnO1xuaW1wb3J0IHsgUWRHcmlkTW9kdWxlIH0gZnJvbSAnLi9ncmlkL2dyaWQubW9kdWxlJztcbmltcG9ydCB7IFFkSWNvbk1vZHVsZSB9IGZyb20gJy4vaWNvbi9pY29uLm1vZHVsZSc7XG5pbXBvcnQgeyBRZEltYWdlTW9kdWxlIH0gZnJvbSAnLi9pbWFnZS9pbWFnZS5tb2R1bGUnO1xuaW1wb3J0IHsgUWRMYXlvdXRNb2R1bGUgfSBmcm9tICcuL2xheW91dC9sYXlvdXQubW9kdWxlJztcbmltcG9ydCB7IFFkTGlzdE1vZHVsZSB9IGZyb20gJy4vbGlzdHMvbGlzdC5tb2R1bGUnO1xuaW1wb3J0IHsgUWRNYXN0ZXJMYXlvdXRNb2R1bGUgfSBmcm9tICcuL21hc3Rlci1sYXlvdXQvbWFzdGVyLWxheW91dC5tb2R1bGUnO1xuaW1wb3J0IHsgUWRNYXN0ZXJMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi9tYXN0ZXItbGF5b3V0L3NlcnZpY2UvbWFzdGVyLWxheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7IFFkTmF2aWdhdGlvblRpbGVzTW9kdWxlIH0gZnJvbSAnLi9uYXZpZ2F0aW9uLXRpbGVzL25hdmlnYXRpb24tdGlsZXMubW9kdWxlJztcbmltcG9ydCB7IFFkTm90aWZpY2F0aW9uc01vZHVsZSB9IGZyb20gJy4vbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLm1vZHVsZSc7XG5pbXBvcnQgeyBRZFBhZ2VNb2R1bGUgfSBmcm9tICcuL3BhZ2UvcGFnZS5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYWdlU3RlcHBlck1vZHVsZSB9IGZyb20gJy4vcGFnZS1zdGVwcGVyL3BhZ2Utc3RlcHBlci5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYWdlVGFic01vZHVsZSB9IGZyb20gJy4vcGFnZS10YWJzL3BhZ2UtdGFicy5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQbGFjZUhvbGRlck1vZHVsZSB9IGZyb20gJy4vcGxhY2UtaG9sZGVyL3BsYWNlLWhvbGRlci5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJy4vcHJvZ3Jlc3MtYmFyL3Byb2dyZXNzLWJhci5tb2R1bGUnO1xuaW1wb3J0IHsgUWRRdWlja0VkaXRNb2R1bGUgfSBmcm9tICcuL3F1aWNrLWVkaXQvcXVpY2stZWRpdC5tb2R1bGUnO1xuaW1wb3J0IHsgUWRTZWFyY2hNb2R1bGUgfSBmcm9tICcuL3NlYXJjaC9zZWFyY2gubW9kdWxlJztcbmltcG9ydCB7IFFkU2VjdGlvbk1vZHVsZSB9IGZyb20gJy4vc2VjdGlvbi9zZWN0aW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBRZFNoZWxsTW9kdWxlIH0gZnJvbSAnLi9zaGVsbC9zaGVsbC5tb2R1bGUnO1xuaW1wb3J0IHsgUWRTcGlubmVyTW9kdWxlIH0gZnJvbSAnLi9zcGlubmVyL3NwaW5uZXIubW9kdWxlJztcbmltcG9ydCB7IFFkU3RhdHVzSW5kaWNhdG9yTW9kdWxlIH0gZnJvbSAnLi9zdGF0dXMtaW5kaWNhdG9yL3N0YXR1cy1pbmRpY2F0b3IubW9kdWxlJztcbmltcG9ydCB7IFFkU3RlcHBlck1vZHVsZSB9IGZyb20gJy4vbmF2aWdhdGlvbi9zdGVwcGVyL3N0ZXBwZXIubW9kdWxlJztcbmltcG9ydCB7IFFkVGFiQmFyTW9kdWxlIH0gZnJvbSAnLi9uYXZpZ2F0aW9uL3RhYi1iYXIvdGFiLWJhci5tb2R1bGUnO1xuaW1wb3J0IHsgUWRUYWJsZU1vZHVsZSB9IGZyb20gJy4vdGFibGUvdGFibGUubW9kdWxlJztcbmltcG9ydCB7IFFkVGFic01vZHVsZSB9IGZyb20gJy4vbmF2aWdhdGlvbi90YWJzL3RhYnMubW9kdWxlJztcbmltcG9ydCB7IFFkVGV4dFNlY3Rpb25Nb2R1bGUgfSBmcm9tICcuL3RleHQtc2VjdGlvbi90ZXh0LXNlY3Rpb24ubW9kdWxlJztcbmltcG9ydCB7IFFkVGlsZXNNb2R1bGUgfSBmcm9tICcuL3RpbGVzL3RpbGVzLm1vZHVsZSc7XG5pbXBvcnQgeyBRZFRyZWVNb2R1bGUgfSBmcm9tICcuL3RyZWUvdHJlZS5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYW5lbFNlY3Rpb25Nb2R1bGUgfSBmcm9tICcuL3BhbmVsLXNlY3Rpb24vcGFuZWwtc2VjdGlvbi5tb2R1bGUnO1xuXG5jb25zdCBRRF9VSV9NT0RVTEVTID0gW1xuICBRZEJ1dHRvbk1vZHVsZSxcbiAgUWRDaGlwTW9kdWxlLFxuICBRZENvbW1lbnRzTW9kdWxlLFxuICBRZENvbnRhY3RDYXJkTW9kdWxlLFxuICBRZENvbnRhaW5lck1vZHVsZSxcbiAgUWRDb250ZW50R3JpZE1vZHVsZSxcbiAgUWRDb3JlTW9kdWxlLFxuICBRZERpYWxvZ01vZHVsZSxcbiAgUWRGaWxlQ29sbGVjdG9yTW9kdWxlLFxuICBRZEZpbHRlck1vZHVsZSxcbiAgUWRGb3JtTW9kdWxlLFxuICBRZEdyaWRNb2R1bGUsXG4gIFFkSWNvbk1vZHVsZSxcbiAgUWRJbWFnZU1vZHVsZSxcbiAgUWRMYXlvdXRNb2R1bGUsXG4gIFFkTGlzdE1vZHVsZSxcbiAgUWRNYXN0ZXJMYXlvdXRNb2R1bGUsXG4gIFFkTmF2aWdhdGlvblRpbGVzTW9kdWxlLFxuICBRZE5vdGlmaWNhdGlvbnNNb2R1bGUsXG4gIFFkUGFnZU1vZHVsZSxcbiAgUWRQYWdlU3RlcHBlck1vZHVsZSxcbiAgUWRQYWdlVGFic01vZHVsZSxcbiAgUWRQYW5lbFNlY3Rpb25Nb2R1bGUsXG4gIFFkUGxhY2VIb2xkZXJNb2R1bGUsXG4gIFFkUHJvZ3Jlc3NCYXJNb2R1bGUsXG4gIFFkUXVpY2tFZGl0TW9kdWxlLFxuICBRZFNlYXJjaE1vZHVsZSxcbiAgUWRTZWN0aW9uTW9kdWxlLFxuICBRZFNoZWxsTW9kdWxlLFxuICBRZFNwaW5uZXJNb2R1bGUsXG4gIFFkU3RhdHVzSW5kaWNhdG9yTW9kdWxlLFxuICBRZFN0ZXBwZXJNb2R1bGUsXG4gIFFkVGFiQmFyTW9kdWxlLFxuICBRZFRhYmxlTW9kdWxlLFxuICBRZFRhYnNNb2R1bGUsXG4gIFFkVGV4dFNlY3Rpb25Nb2R1bGUsXG4gIFFkVGlsZXNNb2R1bGUsXG4gIFFkVHJlZU1vZHVsZVxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1FEX1VJX01PRFVMRVNdLFxuICBleHBvcnRzOiBRRF9VSV9NT0RVTEVTLFxuICBwcm92aWRlcnM6IFtcbiAgICBRZE1hc3RlckxheW91dFNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgICB1c2VDbGFzczogUWROb3RpZmljYXRpb25zSHR0cEludGVyY2VwdG9yU2VydmljZSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFFkVWlNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IFFkQXBwRW52aXJvbm1lbnQsIGJhY2tlbmRFcnJvckNvZGVzID0ge30pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFFkVWlNb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IFFkVWlNb2R1bGUsXG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgeyBwcm92aWRlOiBBUFBfRU5WSVJPTk1FTlQsIHVzZVZhbHVlOiBjb25maWcgfSxcbiAgICAgICAgeyBwcm92aWRlOiBCQUNLRU5EX0VSUk9SX0NPREVTLCB1c2VWYWx1ZTogYmFja2VuZEVycm9yQ29kZXMgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
233
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWQtdWkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL3FkLXVpLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU5RCxPQUFPLEVBQ0wsbUJBQW1CLEVBQ25CLHFCQUFxQixFQUNyQixxQ0FBcUMsRUFDdEMsTUFBTSxpRUFBaUUsQ0FBQztBQUd6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFcEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN6RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFB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ImltcG9ydCB7IEhUVFBfSU5URVJDRVBUT1JTIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQkFDS0VORF9FUlJPUl9DT0RFUyxcbiAgV0hJVEVMSVNUX0VSUk9SX0NPREVTLFxuICBRZE5vdGlmaWNhdGlvbnNIdHRwSW50ZXJjZXB0b3JTZXJ2aWNlXG59IGZyb20gJy4vbm90aWZpY2F0aW9ucy9zZXJ2aWNlcy9ub3RpZmljYXRpb25zLWh0dHAtaW50ZXJjZXB0b3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IFFkQXBwRW52aXJvbm1lbnQgfSBmcm9tICcuL2NvcmUvbW9kZWwvYXBwLWVudmlyb21lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFQUF9FTlZJUk9OTUVOVCB9IGZyb20gJy4vY29yZS9tb2RlbC9hcHAtZW52aXJvbWVudC50b2tlbic7XG5cbmltcG9ydCB7IFFkQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi9idXR0b24vYnV0dG9uLm1vZHVsZSc7XG5pbXBvcnQgeyBRZENoaXBNb2R1bGUgfSBmcm9tICcuL2NoaXBzL2NoaXBzLm1vZHVsZSc7XG5pbXBvcnQgeyBRZENvbW1lbnRzTW9kdWxlIH0gZnJvbSAnLi9jb21tZW50cy9jb21tZW50cy5tb2R1bGUnO1xuaW1wb3J0IHsgUWRDb250YWN0Q2FyZE1vZHVsZSB9IGZyb20gJy4vY29udGFjdC1jYXJkL2NvbnRhY3QtY2FyZC5tb2R1bGUnO1xuaW1wb3J0IHsgUWRDb250YWluZXJNb2R1bGUgfSBmcm9tICcuL2NvbnRhaW5lci9jb250YWluZXIubW9kdWxlJztcbmltcG9ydCB7IFFkQ29udGVudEdyaWRNb2R1bGUgfSBmcm9tICcuL2NvbnRlbnQtZ3JpZC9jb250ZW50LWdyaWQubW9kdWxlJztcbmltcG9ydCB7IFFkQ29yZU1vZHVsZSB9IGZyb20gJy4vY29yZS9jb3JlLm1vZHVsZSc7XG5pbXBvcnQgeyBRZERpYWxvZ01vZHVsZSB9IGZyb20gJy4vZGlhbG9nL2RpYWxvZy5tb2R1bGUnO1xuaW1wb3J0IHsgUWRGaWxlQ29sbGVjdG9yTW9kdWxlIH0gZnJvbSAnLi9maWxlLWNvbGxlY3Rvci9maWxlLWNvbGxlY3Rvci5tb2R1bGUnO1xuaW1wb3J0IHsgUWRGaWx0ZXJNb2R1bGUgfSBmcm9tICcuL2ZpbHRlci9maWx0ZXIubW9kdWxlJztcbmltcG9ydCB7IFFkRm9ybU1vZHVsZSB9IGZyb20gJy4vZm9ybXMvcWQtZm9ybS5tb2R1bGUnO1xuaW1wb3J0IHsgUWRHcmlkTW9kdWxlIH0gZnJvbSAnLi9ncmlkL2dyaWQubW9kdWxlJztcbmltcG9ydCB7IFFkSWNvbk1vZHVsZSB9IGZyb20gJy4vaWNvbi9pY29uLm1vZHVsZSc7XG5pbXBvcnQgeyBRZEltYWdlTW9kdWxlIH0gZnJvbSAnLi9pbWFnZS9pbWFnZS5tb2R1bGUnO1xuaW1wb3J0IHsgUWRMYXlvdXRNb2R1bGUgfSBmcm9tICcuL2xheW91dC9sYXlvdXQubW9kdWxlJztcbmltcG9ydCB7IFFkTGlzdE1vZHVsZSB9IGZyb20gJy4vbGlzdHMvbGlzdC5tb2R1bGUnO1xuaW1wb3J0IHsgUWRNYXN0ZXJMYXlvdXRNb2R1bGUgfSBmcm9tICcuL21hc3Rlci1sYXlvdXQvbWFzdGVyLWxheW91dC5tb2R1bGUnO1xuaW1wb3J0IHsgUWRNYXN0ZXJMYXlvdXRTZXJ2aWNlIH0gZnJvbSAnLi9tYXN0ZXItbGF5b3V0L3NlcnZpY2UvbWFzdGVyLWxheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7IFFkTmF2aWdhdGlvblRpbGVzTW9kdWxlIH0gZnJvbSAnLi9uYXZpZ2F0aW9uLXRpbGVzL25hdmlnYXRpb24tdGlsZXMubW9kdWxlJztcbmltcG9ydCB7IFFkTm90aWZpY2F0aW9uc01vZHVsZSB9IGZyb20gJy4vbm90aWZpY2F0aW9ucy9ub3RpZmljYXRpb25zLm1vZHVsZSc7XG5pbXBvcnQgeyBRZFBhZ2VNb2R1bGUgfSBmcm9tICcuL3BhZ2UvcGFnZS5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYWdlU3RlcHBlck1vZHVsZSB9IGZyb20gJy4vcGFnZS1zdGVwcGVyL3BhZ2Utc3RlcHBlci5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYWdlVGFic01vZHVsZSB9IGZyb20gJy4vcGFnZS10YWJzL3BhZ2UtdGFicy5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQbGFjZUhvbGRlck1vZHVsZSB9IGZyb20gJy4vcGxhY2UtaG9sZGVyL3BsYWNlLWhvbGRlci5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gJy4vcHJvZ3Jlc3MtYmFyL3Byb2dyZXNzLWJhci5tb2R1bGUnO1xuaW1wb3J0IHsgUWRRdWlja0VkaXRNb2R1bGUgfSBmcm9tICcuL3F1aWNrLWVkaXQvcXVpY2stZWRpdC5tb2R1bGUnO1xuaW1wb3J0IHsgUWRTZWFyY2hNb2R1bGUgfSBmcm9tICcuL3NlYXJjaC9zZWFyY2gubW9kdWxlJztcbmltcG9ydCB7IFFkU2VjdGlvbk1vZHVsZSB9IGZyb20gJy4vc2VjdGlvbi9zZWN0aW9uLm1vZHVsZSc7XG5pbXBvcnQgeyBRZFNoZWxsTW9kdWxlIH0gZnJvbSAnLi9zaGVsbC9zaGVsbC5tb2R1bGUnO1xuaW1wb3J0IHsgUWRTcGlubmVyTW9kdWxlIH0gZnJvbSAnLi9zcGlubmVyL3NwaW5uZXIubW9kdWxlJztcbmltcG9ydCB7IFFkU3RhdHVzSW5kaWNhdG9yTW9kdWxlIH0gZnJvbSAnLi9zdGF0dXMtaW5kaWNhdG9yL3N0YXR1cy1pbmRpY2F0b3IubW9kdWxlJztcbmltcG9ydCB7IFFkU3RlcHBlck1vZHVsZSB9IGZyb20gJy4vbmF2aWdhdGlvbi9zdGVwcGVyL3N0ZXBwZXIubW9kdWxlJztcbmltcG9ydCB7IFFkVGFiQmFyTW9kdWxlIH0gZnJvbSAnLi9uYXZpZ2F0aW9uL3RhYi1iYXIvdGFiLWJhci5tb2R1bGUnO1xuaW1wb3J0IHsgUWRUYWJsZU1vZHVsZSB9IGZyb20gJy4vdGFibGUvdGFibGUubW9kdWxlJztcbmltcG9ydCB7IFFkVGFic01vZHVsZSB9IGZyb20gJy4vbmF2aWdhdGlvbi90YWJzL3RhYnMubW9kdWxlJztcbmltcG9ydCB7IFFkVGV4dFNlY3Rpb25Nb2R1bGUgfSBmcm9tICcuL3RleHQtc2VjdGlvbi90ZXh0LXNlY3Rpb24ubW9kdWxlJztcbmltcG9ydCB7IFFkVGlsZXNNb2R1bGUgfSBmcm9tICcuL3RpbGVzL3RpbGVzLm1vZHVsZSc7XG5pbXBvcnQgeyBRZFRyZWVNb2R1bGUgfSBmcm9tICcuL3RyZWUvdHJlZS5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYW5lbFNlY3Rpb25Nb2R1bGUgfSBmcm9tICcuL3BhbmVsLXNlY3Rpb24vcGFuZWwtc2VjdGlvbi5tb2R1bGUnO1xuXG5jb25zdCBRRF9VSV9NT0RVTEVTID0gW1xuICBRZEJ1dHRvbk1vZHVsZSxcbiAgUWRDaGlwTW9kdWxlLFxuICBRZENvbW1lbnRzTW9kdWxlLFxuICBRZENvbnRhY3RDYXJkTW9kdWxlLFxuICBRZENvbnRhaW5lck1vZHVsZSxcbiAgUWRDb250ZW50R3JpZE1vZHVsZSxcbiAgUWRDb3JlTW9kdWxlLFxuICBRZERpYWxvZ01vZHVsZSxcbiAgUWRGaWxlQ29sbGVjdG9yTW9kdWxlLFxuICBRZEZpbHRlck1vZHVsZSxcbiAgUWRGb3JtTW9kdWxlLFxuICBRZEdyaWRNb2R1bGUsXG4gIFFkSWNvbk1vZHVsZSxcbiAgUWRJbWFnZU1vZHVsZSxcbiAgUWRMYXlvdXRNb2R1bGUsXG4gIFFkTGlzdE1vZHVsZSxcbiAgUWRNYXN0ZXJMYXlvdXRNb2R1bGUsXG4gIFFkTmF2aWdhdGlvblRpbGVzTW9kdWxlLFxuICBRZE5vdGlmaWNhdGlvbnNNb2R1bGUsXG4gIFFkUGFnZU1vZHVsZSxcbiAgUWRQYWdlU3RlcHBlck1vZHVsZSxcbiAgUWRQYWdlVGFic01vZHVsZSxcbiAgUWRQYW5lbFNlY3Rpb25Nb2R1bGUsXG4gIFFkUGxhY2VIb2xkZXJNb2R1bGUsXG4gIFFkUHJvZ3Jlc3NCYXJNb2R1bGUsXG4gIFFkUXVpY2tFZGl0TW9kdWxlLFxuICBRZFNlYXJjaE1vZHVsZSxcbiAgUWRTZWN0aW9uTW9kdWxlLFxuICBRZFNoZWxsTW9kdWxlLFxuICBRZFNwaW5uZXJNb2R1bGUsXG4gIFFkU3RhdHVzSW5kaWNhdG9yTW9kdWxlLFxuICBRZFN0ZXBwZXJNb2R1bGUsXG4gIFFkVGFiQmFyTW9kdWxlLFxuICBRZFRhYmxlTW9kdWxlLFxuICBRZFRhYnNNb2R1bGUsXG4gIFFkVGV4dFNlY3Rpb25Nb2R1bGUsXG4gIFFkVGlsZXNNb2R1bGUsXG4gIFFkVHJlZU1vZHVsZVxuXTtcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1FEX1VJX01PRFVMRVNdLFxuICBleHBvcnRzOiBRRF9VSV9NT0RVTEVTLFxuICBwcm92aWRlcnM6IFtcbiAgICBRZE1hc3RlckxheW91dFNlcnZpY2UsXG4gICAge1xuICAgICAgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsXG4gICAgICB1c2VDbGFzczogUWROb3RpZmljYXRpb25zSHR0cEludGVyY2VwdG9yU2VydmljZSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFFkVWlNb2R1bGUge1xuICBzdGF0aWMgZm9yUm9vdChcbiAgICBjb25maWc6IFFkQXBwRW52aXJvbm1lbnQsXG4gICAgYmFja2VuZEVycm9yQ29kZXMgPSB7fSxcbiAgICB3aGl0ZWxpc3RFcnJvckNvZGVzOiBudW1iZXJbXSA9IFtdXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8UWRVaU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogUWRVaU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IEFQUF9FTlZJUk9OTUVOVCwgdXNlVmFsdWU6IGNvbmZpZyB9LFxuICAgICAgICB7IHByb3ZpZGU6IEJBQ0tFTkRfRVJST1JfQ09ERVMsIHVzZVZhbHVlOiBiYWNrZW5kRXJyb3JDb2RlcyB9LFxuICAgICAgICB7IHByb3ZpZGU6IFdISVRFTElTVF9FUlJPUl9DT0RFUywgdXNlVmFsdWU6IHdoaXRlbGlzdEVycm9yQ29kZXMgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1700,27 +1700,54 @@ const APP_ENVIRONMENT = new InjectionToken('APP_ENVIRONMENT');
|
|
|
1700
1700
|
|
|
1701
1701
|
// @ts-strict-ignore
|
|
1702
1702
|
const BACKEND_ERROR_CODES = new InjectionToken('BACKEND_ERROR_CODES');
|
|
1703
|
+
const WHITELIST_ERROR_CODES = new InjectionToken('WHITELIST_ERROR_CODES');
|
|
1703
1704
|
/**
|
|
1704
1705
|
* The QdNotificationsHttpInterceptorService is an Angular HTTP interceptor that captures error responses from HTTP requests and generates notifications for backend errors. This Service not only intercepts error responses, but it also handles specific error codes and translates them into appropriate error messages for display.
|
|
1705
1706
|
*/
|
|
1706
1707
|
class QdNotificationsHttpInterceptorService {
|
|
1707
1708
|
appEnvironment;
|
|
1708
1709
|
backendErrorCodes;
|
|
1710
|
+
whitelistErrorCodes;
|
|
1709
1711
|
notificationService;
|
|
1710
|
-
|
|
1712
|
+
blacklistErrorCodes;
|
|
1713
|
+
constructor(appEnvironment, backendErrorCodes, whitelistErrorCodes, notificationService) {
|
|
1711
1714
|
this.appEnvironment = appEnvironment;
|
|
1712
1715
|
this.backendErrorCodes = backendErrorCodes;
|
|
1716
|
+
this.whitelistErrorCodes = whitelistErrorCodes;
|
|
1713
1717
|
this.notificationService = notificationService;
|
|
1714
1718
|
this.backendErrorCodes = this.backendErrorCodes || {};
|
|
1719
|
+
this.whitelistErrorCodes = this.whitelistErrorCodes || [];
|
|
1720
|
+
this.blacklistErrorCodes = [
|
|
1721
|
+
// 401, 402, 403
|
|
1722
|
+
HttpStatusCode.Unauthorized,
|
|
1723
|
+
HttpStatusCode.PaymentRequired,
|
|
1724
|
+
HttpStatusCode.Forbidden,
|
|
1725
|
+
// All 5xx codes
|
|
1726
|
+
HttpStatusCode.InternalServerError,
|
|
1727
|
+
HttpStatusCode.NotImplemented,
|
|
1728
|
+
HttpStatusCode.BadGateway,
|
|
1729
|
+
HttpStatusCode.ServiceUnavailable,
|
|
1730
|
+
HttpStatusCode.GatewayTimeout,
|
|
1731
|
+
HttpStatusCode.HttpVersionNotSupported,
|
|
1732
|
+
HttpStatusCode.VariantAlsoNegotiates,
|
|
1733
|
+
HttpStatusCode.InsufficientStorage,
|
|
1734
|
+
HttpStatusCode.LoopDetected,
|
|
1735
|
+
HttpStatusCode.NotExtended,
|
|
1736
|
+
HttpStatusCode.NetworkAuthenticationRequired
|
|
1737
|
+
];
|
|
1715
1738
|
}
|
|
1716
1739
|
intercept(request, next) {
|
|
1717
1740
|
if (this.appEnvironment.disableBackendNotifications)
|
|
1718
1741
|
return next.handle(request);
|
|
1719
1742
|
return next.handle(request).pipe(catchError((error) => {
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1743
|
+
const isBlacklisted = this.blacklistErrorCodes.includes(error.status);
|
|
1744
|
+
const shouldShowNotification = isBlacklisted || !this.whitelistErrorCodes.includes(error.status);
|
|
1745
|
+
if (shouldShowNotification) {
|
|
1746
|
+
let i18n = this.getErrorTranslationKeyForHttpStatus(error.status);
|
|
1747
|
+
if (error.error?.errorCode && error.error.errorCode in this.backendErrorCodes)
|
|
1748
|
+
i18n = 'ERROR.' + error.error.errorCode;
|
|
1749
|
+
this.notificationService.add('qdPanel', { type: 'critical', i18n, showAsSnackbar: true });
|
|
1750
|
+
}
|
|
1724
1751
|
return throwError(() => error);
|
|
1725
1752
|
}));
|
|
1726
1753
|
}
|
|
@@ -1747,7 +1774,7 @@ class QdNotificationsHttpInterceptorService {
|
|
|
1747
1774
|
return 'UnknownError';
|
|
1748
1775
|
}
|
|
1749
1776
|
}
|
|
1750
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdNotificationsHttpInterceptorService, deps: [{ token: APP_ENVIRONMENT, optional: true }, { token: BACKEND_ERROR_CODES, optional: true }, { token: QdNotificationsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1777
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdNotificationsHttpInterceptorService, deps: [{ token: APP_ENVIRONMENT, optional: true }, { token: BACKEND_ERROR_CODES, optional: true }, { token: WHITELIST_ERROR_CODES, optional: true }, { token: QdNotificationsService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1751
1778
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdNotificationsHttpInterceptorService, providedIn: 'root' });
|
|
1752
1779
|
}
|
|
1753
1780
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdNotificationsHttpInterceptorService, decorators: [{
|
|
@@ -1765,6 +1792,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
1765
1792
|
}, {
|
|
1766
1793
|
type: Inject,
|
|
1767
1794
|
args: [BACKEND_ERROR_CODES]
|
|
1795
|
+
}] }, { type: undefined, decorators: [{
|
|
1796
|
+
type: Optional
|
|
1797
|
+
}, {
|
|
1798
|
+
type: Inject,
|
|
1799
|
+
args: [WHITELIST_ERROR_CODES]
|
|
1768
1800
|
}] }, { type: QdNotificationsService }] });
|
|
1769
1801
|
|
|
1770
1802
|
// @ts-strict-ignore
|
|
@@ -16961,6 +16993,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
16961
16993
|
* }
|
|
16962
16994
|
* ```
|
|
16963
16995
|
*
|
|
16996
|
+
* ### Whitelisting HTTP status codes
|
|
16997
|
+
*
|
|
16998
|
+
* In some cases, you might want to prevent certain HTTP status codes from triggering error notifications. For example, a 304 Not Modified response is not actually an error and should not display an error notification. The **QdUiModule** allows you to whitelist specific HTTP status codes.
|
|
16999
|
+
*
|
|
17000
|
+
* To whitelist HTTP status codes, pass an array of status codes as the third parameter to the **QdUiModule.forRoot** method:
|
|
17001
|
+
*
|
|
17002
|
+
* ```typescript
|
|
17003
|
+
* import { HttpStatusCode } from '@angular/common/http';
|
|
17004
|
+
*
|
|
17005
|
+
* imports: [
|
|
17006
|
+
* ...
|
|
17007
|
+
* QdUiModule.forRoot(
|
|
17008
|
+
* appEnvironment,
|
|
17009
|
+
* ErrorCodes,
|
|
17010
|
+
* [HttpStatusCode.NotModified, HttpStatusCode.NoContent] // Whitelist 304 Not Modified and 204 No Content
|
|
17011
|
+
* ),
|
|
17012
|
+
* ...
|
|
17013
|
+
* ]
|
|
17014
|
+
* ```
|
|
17015
|
+
*
|
|
17016
|
+
* When a response with a whitelisted status code is received, no error notification will be displayed, even if it would normally be treated as an error by the HTTP client.
|
|
17017
|
+
*
|
|
17018
|
+
* ### Blacklisting HTTP status codes
|
|
17019
|
+
*
|
|
17020
|
+
* For critical errors, notifications are always shown, even if the status code is whitelisted. The **QdUiModule** implements a fixed blacklist that takes precedence over the whitelist.
|
|
17021
|
+
*
|
|
17022
|
+
* The following status codes are permanently blacklisted:
|
|
17023
|
+
* - 401 Unauthorized
|
|
17024
|
+
* - 402 Payment Required
|
|
17025
|
+
* - 403 Forbidden
|
|
17026
|
+
* - All 5xx server error codes (500-511)
|
|
17027
|
+
*
|
|
17028
|
+
* These critical errors will always show notifications, even if they are included in the whitelist.
|
|
17029
|
+
*
|
|
17030
|
+
* **Important**: The blacklist has higher precedence than the whitelist. If a status code appears in both the whitelist and the blacklist, it will be treated as blacklisted, and an error notification will be shown.
|
|
17031
|
+
*
|
|
16964
17032
|
* ### Component:
|
|
16965
17033
|
*
|
|
16966
17034
|
* ```typescript
|
|
@@ -37736,12 +37804,13 @@ const QD_UI_MODULES = [
|
|
|
37736
37804
|
QdTreeModule
|
|
37737
37805
|
];
|
|
37738
37806
|
class QdUiModule {
|
|
37739
|
-
static forRoot(config, backendErrorCodes = {}) {
|
|
37807
|
+
static forRoot(config, backendErrorCodes = {}, whitelistErrorCodes = []) {
|
|
37740
37808
|
return {
|
|
37741
37809
|
ngModule: QdUiModule,
|
|
37742
37810
|
providers: [
|
|
37743
37811
|
{ provide: APP_ENVIRONMENT, useValue: config },
|
|
37744
|
-
{ provide: BACKEND_ERROR_CODES, useValue: backendErrorCodes }
|
|
37812
|
+
{ provide: BACKEND_ERROR_CODES, useValue: backendErrorCodes },
|
|
37813
|
+
{ provide: WHITELIST_ERROR_CODES, useValue: whitelistErrorCodes }
|
|
37745
37814
|
]
|
|
37746
37815
|
};
|
|
37747
37816
|
}
|