angular-toolbox 0.11.3 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/esm2022/lib/core/bridge/app-bridge.mjs +3 -3
- package/esm2022/lib/core/error/app-bridge-error.mjs +3 -3
- package/esm2022/lib/core/error/http-mock-service-error.mjs +3 -3
- package/esm2022/lib/core/error/integrity-error.mjs +3 -3
- package/esm2022/lib/core/error/subscription-error.mjs +3 -3
- package/esm2022/lib/core/impl/lang/identifiable-component.mjs +3 -3
- package/esm2022/lib/core/impl/version/version.impl.mjs +3 -3
- package/esm2022/lib/framework/index.mjs +3 -1
- package/esm2022/lib/framework/logging/connector/console-log-connector.mjs +48 -0
- package/esm2022/lib/framework/logging/connector/default-log-connector.mjs +34 -0
- package/esm2022/lib/framework/logging/connector/html-log-connector.mjs +177 -0
- package/esm2022/lib/framework/logging/connector/index.mjs +4 -0
- package/esm2022/lib/framework/logging/impl/abstract-logger.mjs +100 -0
- package/esm2022/lib/framework/logging/impl/index.mjs +3 -0
- package/esm2022/lib/framework/logging/impl/log-impl.mjs +28 -0
- package/esm2022/lib/framework/logging/index.mjs +4 -0
- package/esm2022/lib/framework/logging/util/index.mjs +4 -0
- package/esm2022/lib/framework/logging/util/log.builder.mjs +28 -0
- package/esm2022/lib/framework/logging/util/log.constant.mjs +24 -0
- package/esm2022/lib/framework/logging/util/log.util.mjs +142 -0
- package/esm2022/lib/framework/mock/http/core/data-storage.mjs +1 -1
- package/esm2022/lib/framework/mock/http/core/response-delay.mjs +9 -0
- package/esm2022/lib/framework/mock/http/event/event-target.impl.mjs +15 -1
- package/esm2022/lib/framework/mock/http/logging/http-mock-logger.mjs +15 -0
- package/esm2022/lib/framework/mock/http/logging/http-mock-logging-metadata.builder.mjs +35 -0
- package/esm2022/lib/framework/mock/http/path-to-regexp/escape-to-regexp-string.mjs +3 -3
- package/esm2022/lib/framework/mock/http/path-to-regexp/model/lex-token.mjs +3 -3
- package/esm2022/lib/framework/mock/http/util/data-storage.builder.mjs +5 -3
- package/esm2022/lib/framework/mock/http/util/http-headers.util.mjs +18 -3
- package/esm2022/lib/framework/mock/http/util/http-mock-max-delay.mjs +12 -0
- package/esm2022/lib/framework/mock/http/util/http-mock-response-delay.util.mjs +33 -0
- package/esm2022/lib/framework/mock/http/util/http-mock-response.builder.mjs +45 -9
- package/esm2022/lib/framework/mock/http/util/index.mjs +2 -1
- package/esm2022/lib/framework/mock/http/xhr/delegate-xhr.mjs +75 -41
- package/esm2022/lib/framework/mock/http/xhr/http-mock-factory.impl.mjs +4 -3
- package/esm2022/lib/framework/mock/http/xhr/http-mock-factory.mjs +3 -2
- package/esm2022/lib/framework/mock/http/xhr/xhr-proxy-impl.mjs +7 -6
- package/esm2022/lib/framework/mock/http-monitoring-console/component/console-footer/console-footer.component.mjs +30 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/console-menu/console-menu.component.mjs +30 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/http-monitoring-console/http-monitoring-console.component.mjs +140 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/icon-renderer/icon-renderer.component.mjs +37 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer/json-viewer.component.mjs +34 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer-panel/json-viewer-panel.component.mjs +27 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/payload-renderer/payload-renderer.component.mjs +50 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/response-body-renderer/response-body-renderer.component.mjs +50 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/response-preview-renderer/response-preview-renderer.component.mjs +71 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/renderer/timing-renderer/timing-renderer.component.mjs +55 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/component/request-details/request-details.component.mjs +67 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/connector/http-monitoring-console-log-connector.mjs +52 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/index.mjs +2 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-action-type.mjs +14 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-action.mjs +9 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-console-json.mjs +9 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/atx-is-imported-log.mjs +10 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-body-dto.mjs +9 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-header-dto.mjs +9 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log-metadata.dto.mjs +9 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log.dto.mjs +9 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request-metadata.dto.ts.mjs +9 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request.dto.mjs +9 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-response.dto.mjs +9 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/business/io/hmfl.mjs +9 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/atx-log-io.service.mjs +77 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/body-converter.mjs +22 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/body-serializer.mjs +47 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/http-request-converter.mjs +44 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/http-response-converter.mjs +32 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/log-converter.mjs +31 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/log-headers-converter.mjs +35 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/log-message.util.mjs +19 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/log-metadata-converter.mjs +27 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/model/service/io/request-metadata-converter.mjs +29 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/console-body-type.mjs +18 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/console-type-class.mjs +17 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/data.util.mjs +75 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/size.util.mjs +35 -0
- package/esm2022/lib/framework/mock/http-monitoring-console/util/url.util.mjs +26 -0
- package/esm2022/lib/model/business/index.mjs +2 -1
- package/esm2022/lib/model/business/lang/app-bridge-command.mjs +3 -3
- package/esm2022/lib/model/business/lang/destroyable.mjs +3 -3
- package/esm2022/lib/model/business/lang/identifiable.mjs +3 -3
- package/esm2022/lib/model/business/logging/http-mock-logging-constant.enum.mjs +34 -0
- package/esm2022/lib/model/business/logging/index.mjs +6 -0
- package/esm2022/lib/model/business/logging/log-connector.mjs +9 -0
- package/esm2022/lib/model/business/logging/log-level.enum.mjs +35 -0
- package/esm2022/lib/model/business/logging/log.mjs +9 -0
- package/esm2022/lib/model/business/logging/logger.mjs +2 -0
- package/esm2022/lib/model/business/logging/transactional-logger.mjs +9 -0
- package/esm2022/lib/model/business/mock/http/fetch-client.mjs +7 -2
- package/esm2022/lib/model/business/mock/http/http-method-mock.mjs +1 -1
- package/esm2022/lib/model/business/mock/http/http-mock-request-metadata.mjs +9 -0
- package/esm2022/lib/model/business/mock/http/index.mjs +3 -1
- package/esm2022/lib/model/business/mock/http/logging/http-mock-logging-metadata.mjs +9 -0
- package/esm2022/lib/model/business/mock/http/logging/http-mock-logging-prefetch-metadata.mjs +9 -0
- package/esm2022/lib/model/business/mock/http/logging/index.mjs +3 -0
- package/esm2022/lib/model/service/index.mjs +3 -2
- package/esm2022/lib/model/service/logging/index.mjs +2 -0
- package/esm2022/lib/model/service/logging/logger-service.mjs +24 -0
- package/esm2022/lib/model/service/mock/http/index.mjs +3 -0
- package/esm2022/lib/model/service/mock/http/logging/http-mock-logging-service.mjs +110 -0
- package/esm2022/lib/model/service/mock/http/logging/index.mjs +2 -0
- package/esm2022/lib/model/service/ui/app-bridge.service.mjs +3 -3
- package/esm2022/lib/model/service/ui/dark-mode.service.mjs +3 -3
- package/esm2022/lib/model/service/version/angular-toolbox-version.service.mjs +4 -4
- package/esm2022/lib/util/default-scroll-behavior.mjs +3 -3
- package/fesm2022/angular-toolbox.mjs +3099 -988
- package/fesm2022/angular-toolbox.mjs.map +1 -1
- package/lib/core/bridge/app-bridge.d.ts +2 -2
- package/lib/core/error/app-bridge-error.d.ts +2 -2
- package/lib/core/error/http-mock-service-error.d.ts +2 -2
- package/lib/core/error/integrity-error.d.ts +2 -2
- package/lib/core/error/subscription-error.d.ts +2 -2
- package/lib/core/impl/lang/identifiable-component.d.ts +2 -2
- package/lib/core/impl/version/version.impl.d.ts +2 -2
- package/lib/framework/index.d.ts +2 -0
- package/lib/framework/logging/connector/console-log-connector.d.ts +34 -0
- package/lib/framework/logging/connector/default-log-connector.d.ts +34 -0
- package/lib/framework/logging/connector/html-log-connector.d.ts +72 -0
- package/lib/framework/logging/connector/index.d.ts +3 -0
- package/lib/framework/logging/impl/abstract-logger.d.ts +69 -0
- package/lib/framework/logging/impl/index.d.ts +2 -0
- package/lib/framework/logging/impl/log-impl.d.ts +42 -0
- package/lib/framework/logging/index.d.ts +3 -0
- package/lib/framework/logging/util/index.d.ts +3 -0
- package/lib/framework/logging/util/log.builder.d.ts +24 -0
- package/lib/framework/logging/util/log.constant.d.ts +23 -0
- package/lib/framework/logging/util/log.util.d.ts +48 -0
- package/lib/framework/mock/http/core/data-storage.d.ts +6 -1
- package/lib/framework/mock/http/core/response-delay.d.ts +23 -0
- package/lib/framework/mock/http/event/event-target.impl.d.ts +8 -0
- package/lib/framework/mock/http/logging/http-mock-logger.d.ts +14 -0
- package/lib/framework/mock/http/logging/http-mock-logging-metadata.builder.d.ts +20 -0
- package/lib/framework/mock/http/path-to-regexp/escape-to-regexp-string.d.ts +2 -2
- package/lib/framework/mock/http/path-to-regexp/model/lex-token.d.ts +2 -2
- package/lib/framework/mock/http/util/data-storage.builder.d.ts +3 -2
- package/lib/framework/mock/http/util/http-headers.util.d.ts +10 -0
- package/lib/framework/mock/http/util/http-mock-max-delay.d.ts +11 -0
- package/lib/framework/mock/http/util/http-mock-response-delay.util.d.ts +22 -0
- package/lib/framework/mock/http/util/http-mock-response.builder.d.ts +16 -0
- package/lib/framework/mock/http/util/index.d.ts +1 -0
- package/lib/framework/mock/http/xhr/delegate-xhr.d.ts +11 -4
- package/lib/framework/mock/http/xhr/http-mock-factory.impl.d.ts +3 -1
- package/lib/framework/mock/http/xhr/xhr-proxy-impl.d.ts +6 -5
- package/lib/framework/mock/http-monitoring-console/component/console-footer/console-footer.component.d.ts +8 -0
- package/lib/framework/mock/http-monitoring-console/component/console-menu/console-menu.component.d.ts +21 -0
- package/lib/framework/mock/http-monitoring-console/component/http-monitoring-console/http-monitoring-console.component.d.ts +42 -0
- package/lib/framework/mock/http-monitoring-console/component/renderer/icon-renderer/icon-renderer.component.d.ts +12 -0
- package/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer/json-viewer.component.d.ts +8 -0
- package/lib/framework/mock/http-monitoring-console/component/renderer/json-viewer-panel/json-viewer-panel.component.d.ts +7 -0
- package/lib/framework/mock/http-monitoring-console/component/renderer/payload-renderer/payload-renderer.component.d.ts +20 -0
- package/lib/framework/mock/http-monitoring-console/component/renderer/response-body-renderer/response-body-renderer.component.d.ts +20 -0
- package/lib/framework/mock/http-monitoring-console/component/renderer/response-preview-renderer/response-preview-renderer.component.d.ts +27 -0
- package/lib/framework/mock/http-monitoring-console/component/renderer/timing-renderer/timing-renderer.component.d.ts +13 -0
- package/lib/framework/mock/http-monitoring-console/component/request-details/request-details.component.d.ts +27 -0
- package/lib/framework/mock/http-monitoring-console/connector/http-monitoring-console-log-connector.d.ts +40 -0
- package/lib/framework/mock/http-monitoring-console/index.d.ts +1 -0
- package/lib/framework/mock/http-monitoring-console/model/business/atx-console-action-type.d.ts +12 -0
- package/lib/framework/mock/http-monitoring-console/model/business/atx-console-action.d.ts +12 -0
- package/lib/framework/mock/http-monitoring-console/model/business/atx-console-json.d.ts +14 -0
- package/lib/framework/mock/http-monitoring-console/model/business/atx-is-imported-log.d.ts +9 -0
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-body-dto.d.ts +11 -0
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-header-dto.d.ts +11 -0
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log-metadata.dto.d.ts +18 -0
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-log.dto.d.ts +23 -0
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request-metadata.dto.ts.d.ts +32 -0
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-request.dto.d.ts +18 -0
- package/lib/framework/mock/http-monitoring-console/model/business/io/atx-http-response.dto.d.ts +16 -0
- package/lib/framework/mock/http-monitoring-console/model/business/io/hmfl.d.ts +12 -0
- package/lib/framework/mock/http-monitoring-console/model/service/atx-log-io.service.d.ts +11 -0
- package/lib/framework/mock/http-monitoring-console/model/service/io/body-converter.d.ts +12 -0
- package/lib/framework/mock/http-monitoring-console/model/service/io/body-serializer.d.ts +13 -0
- package/lib/framework/mock/http-monitoring-console/model/service/io/http-request-converter.d.ts +13 -0
- package/lib/framework/mock/http-monitoring-console/model/service/io/http-response-converter.d.ts +13 -0
- package/lib/framework/mock/http-monitoring-console/model/service/io/log-converter.d.ts +13 -0
- package/lib/framework/mock/http-monitoring-console/model/service/io/log-headers-converter.d.ts +13 -0
- package/lib/framework/mock/http-monitoring-console/model/service/io/log-message.util.d.ts +12 -0
- package/lib/framework/mock/http-monitoring-console/model/service/io/log-metadata-converter.d.ts +13 -0
- package/lib/framework/mock/http-monitoring-console/model/service/io/request-metadata-converter.d.ts +13 -0
- package/lib/framework/mock/http-monitoring-console/util/console-body-type.d.ts +16 -0
- package/lib/framework/mock/http-monitoring-console/util/console-type-class.d.ts +15 -0
- package/lib/framework/mock/http-monitoring-console/util/data.util.d.ts +13 -0
- package/lib/framework/mock/http-monitoring-console/util/size.util.d.ts +11 -0
- package/lib/framework/mock/http-monitoring-console/util/url.util.d.ts +13 -0
- package/lib/model/business/index.d.ts +1 -0
- package/lib/model/business/lang/app-bridge-command.d.ts +2 -2
- package/lib/model/business/lang/destroyable.d.ts +2 -2
- package/lib/model/business/lang/identifiable.d.ts +2 -2
- package/lib/model/business/logging/http-mock-logging-constant.enum.d.ts +32 -0
- package/lib/model/business/logging/index.d.ts +5 -0
- package/lib/model/business/logging/log-connector.d.ts +36 -0
- package/lib/model/business/logging/log-level.enum.d.ts +33 -0
- package/lib/model/business/logging/log.d.ts +34 -0
- package/lib/model/business/logging/logger.d.ts +58 -0
- package/lib/model/business/logging/transactional-logger.d.ts +28 -0
- package/lib/model/business/mock/http/fetch-client.d.ts +1 -1
- package/lib/model/business/mock/http/http-method-mock.d.ts +1 -6
- package/lib/model/business/mock/http/http-mock-request-metadata.d.ts +33 -0
- package/lib/model/business/mock/http/index.d.ts +2 -0
- package/lib/model/business/mock/http/logging/http-mock-logging-metadata.d.ts +15 -0
- package/lib/model/business/mock/http/logging/http-mock-logging-prefetch-metadata.d.ts +16 -0
- package/lib/model/business/mock/http/logging/index.d.ts +2 -0
- package/lib/model/service/index.d.ts +2 -1
- package/lib/model/service/logging/index.d.ts +1 -0
- package/lib/model/service/logging/logger-service.d.ts +9 -0
- package/lib/model/service/mock/http/index.d.ts +2 -0
- package/lib/model/service/mock/http/logging/http-mock-logging-service.d.ts +78 -0
- package/lib/model/service/mock/http/logging/index.d.ts +1 -0
- package/lib/model/service/ui/dark-mode.service.d.ts +2 -2
- package/lib/util/default-scroll-behavior.d.ts +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright Pascal ECHEMANN. All Rights Reserved.
|
|
4
|
+
*
|
|
5
|
+
* Use of this source code is governed by an MIT-style license that can be found in
|
|
6
|
+
* the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
|
|
7
|
+
*/
|
|
8
|
+
import { HTTP_MOCK_MAX_DELAY } from "./http-mock-max-delay";
|
|
9
|
+
/**
|
|
10
|
+
* @private
|
|
11
|
+
* A utility for managing HTTP responses delay.
|
|
12
|
+
*/
|
|
13
|
+
export class HttpMockResponseDelayUtil {
|
|
14
|
+
/**
|
|
15
|
+
* @private
|
|
16
|
+
* A utility function that return a `ResponseDelay` object, depending on the timer parameters.
|
|
17
|
+
*
|
|
18
|
+
* @param timer The seed value used to create the `ResponseDelay` object.
|
|
19
|
+
* @returns A `ResponseDelay` object.
|
|
20
|
+
*/
|
|
21
|
+
static getResponseDelay(timer) {
|
|
22
|
+
let duration = timer;
|
|
23
|
+
if (timer < 0)
|
|
24
|
+
duration = 0;
|
|
25
|
+
if (timer > HTTP_MOCK_MAX_DELAY)
|
|
26
|
+
duration = HTTP_MOCK_MAX_DELAY;
|
|
27
|
+
return {
|
|
28
|
+
stalled: Math.random() * duration,
|
|
29
|
+
duration: duration
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NrLXJlc3BvbnNlLWRlbGF5LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3V0aWwvaHR0cC1tb2NrLXJlc3BvbnNlLWRlbGF5LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBR0gsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFNUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHlCQUF5QjtJQUVsQzs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsS0FBYTtRQUN4QyxJQUFJLFFBQVEsR0FBVyxLQUFLLENBQUM7UUFDN0IsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUFFLFFBQVEsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxLQUFLLEdBQUcsbUJBQW1CO1lBQUUsUUFBUSxHQUFHLG1CQUFtQixDQUFDO1FBQ2hFLE9BQU87WUFDSCxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLFFBQVE7WUFDakMsUUFBUSxFQUFFLFFBQVE7U0FDckIsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZVxyXG4gKiBDb3B5cmlnaHQgUGFzY2FsIEVDSEVNQU5OLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxyXG4gKlxyXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpblxyXG4gKiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vcGFzY2FsZWNoZW1hbm4uY29tL2FuZ3VsYXItdG9vbGJveC9yZXNvdXJjZXMvbGljZW5zZVxyXG4gKi9cclxuXHJcbmltcG9ydCB7IFJlc3BvbnNlRGVsYXkgfSBmcm9tIFwiLi4vY29yZS9yZXNwb25zZS1kZWxheVwiO1xyXG5pbXBvcnQgeyBIVFRQX01PQ0tfTUFYX0RFTEFZIH0gZnJvbSBcIi4vaHR0cC1tb2NrLW1heC1kZWxheVwiO1xyXG5cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqIEEgdXRpbGl0eSBmb3IgbWFuYWdpbmcgSFRUUCByZXNwb25zZXMgZGVsYXkuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgSHR0cE1vY2tSZXNwb25zZURlbGF5VXRpbCB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogQSB1dGlsaXR5IGZ1bmN0aW9uIHRoYXQgcmV0dXJuIGEgYFJlc3BvbnNlRGVsYXlgIG9iamVjdCwgZGVwZW5kaW5nIG9uIHRoZSB0aW1lciBwYXJhbWV0ZXJzLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gdGltZXIgVGhlIHNlZWQgdmFsdWUgdXNlZCB0byBjcmVhdGUgdGhlICBgUmVzcG9uc2VEZWxheWAgb2JqZWN0LlxyXG4gICAgICogQHJldHVybnMgQSBgUmVzcG9uc2VEZWxheWAgb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIGdldFJlc3BvbnNlRGVsYXkodGltZXI6IG51bWJlcik6IFJlc3BvbnNlRGVsYXkge1xyXG4gICAgICAgIGxldCBkdXJhdGlvbjogbnVtYmVyID0gdGltZXI7XHJcbiAgICAgICAgaWYgKHRpbWVyIDwgMCkgZHVyYXRpb24gPSAwO1xyXG4gICAgICAgIGlmICh0aW1lciA+IEhUVFBfTU9DS19NQVhfREVMQVkpIGR1cmF0aW9uID0gSFRUUF9NT0NLX01BWF9ERUxBWTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICBzdGFsbGVkOiBNYXRoLnJhbmRvbSgpICogZHVyYXRpb24sXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvblxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* the LICENSE file at https://pascalechemann.com/angular-toolbox/resources/license
|
|
7
7
|
*/
|
|
8
8
|
import { HttpStatusCode } from "@angular/common/http";
|
|
9
|
+
import { HttpHeadersUtil } from "./http-headers.util";
|
|
10
|
+
import { HTTP_MOCK_MAX_DELAY } from "./http-mock-max-delay";
|
|
9
11
|
/**
|
|
10
12
|
* @private
|
|
11
13
|
*/
|
|
@@ -49,6 +51,24 @@ export class HttpResponseMockBuilder {
|
|
|
49
51
|
this._response.headers = headers;
|
|
50
52
|
return this;
|
|
51
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Add the list of HTTP headers generated by the `HttpHeadersUtil.createDefaultRequestHeaders()`
|
|
56
|
+
* to the mock response.
|
|
57
|
+
*
|
|
58
|
+
* @returns A reference to this `HttpResponseMockBuilder` instance.
|
|
59
|
+
*/
|
|
60
|
+
defaultHeaders() {
|
|
61
|
+
const defaultHeaders = HttpHeadersUtil.createDefaultRequestHeaders();
|
|
62
|
+
let headers = this._response.headers;
|
|
63
|
+
if (headers) {
|
|
64
|
+
const keys = defaultHeaders.keys();
|
|
65
|
+
keys.forEach(key => headers?.append(key, defaultHeaders.get(key)));
|
|
66
|
+
}
|
|
67
|
+
else
|
|
68
|
+
headers = defaultHeaders;
|
|
69
|
+
this._response.headers = headers;
|
|
70
|
+
return this;
|
|
71
|
+
}
|
|
52
72
|
/**
|
|
53
73
|
* Sets the `status` property of the new `HttpResponseMock` instance with the specified `status` value.
|
|
54
74
|
*
|
|
@@ -83,15 +103,31 @@ export class HttpResponseMockBuilder {
|
|
|
83
103
|
return this;
|
|
84
104
|
}
|
|
85
105
|
/**
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* @param timer The value used to set the `delay` property of the new `HttpResponseMock` instance.
|
|
90
|
-
*
|
|
91
|
-
* @returns A reference to this `HttpResponseMockBuilder` instance.
|
|
106
|
+
* @private
|
|
107
|
+
* Overload implementation
|
|
92
108
|
*/
|
|
93
|
-
delay(
|
|
94
|
-
|
|
109
|
+
delay(...arg) {
|
|
110
|
+
if (arg.length <= 1) {
|
|
111
|
+
let timer = arg[0] || NaN;
|
|
112
|
+
if (isNaN(timer)) {
|
|
113
|
+
this._response.delay = HTTP_MOCK_MAX_DELAY - Math.random() * HTTP_MOCK_MAX_DELAY;
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
if (timer > HTTP_MOCK_MAX_DELAY) {
|
|
117
|
+
this._response.delay = HTTP_MOCK_MAX_DELAY;
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
|
+
if (timer < 0)
|
|
121
|
+
timer = 0;
|
|
122
|
+
this._response.delay = timer;
|
|
123
|
+
return this;
|
|
124
|
+
}
|
|
125
|
+
let min = arg[0], max = arg[1];
|
|
126
|
+
if (max > HTTP_MOCK_MAX_DELAY)
|
|
127
|
+
max = HTTP_MOCK_MAX_DELAY;
|
|
128
|
+
if (min < 0 || min > max)
|
|
129
|
+
min = 0;
|
|
130
|
+
this._response.delay = Math.floor(Math.random() * (max - min) + min);
|
|
95
131
|
return this;
|
|
96
132
|
}
|
|
97
133
|
/**
|
|
@@ -114,4 +150,4 @@ export class HttpResponseMockBuilder {
|
|
|
114
150
|
* @returns A new `HttpResponseMockBuilder` instance.
|
|
115
151
|
*/
|
|
116
152
|
export const httpResponseMock = () => new HttpResponseMockBuilder();
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NrLXJlc3BvbnNlLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3V0aWwvaHR0cC1tb2NrLXJlc3BvbnNlLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFlLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBR25FOztHQUVHO0FBQ0gsTUFBTSxFQUFFLEdBQVcsSUFBSSxDQUFDO0FBRXhCOztHQUVHO0FBQ0gsTUFBTSxPQUFPLHVCQUF1QjtJQUFwQztRQUVJOztXQUVHO1FBQ0ssY0FBUyxHQUFxQjtZQUNsQyxHQUFHLEVBQUUsSUFBSTtZQUNULElBQUksRUFBRSxJQUFJO1lBQ1YsTUFBTSxFQUFFLGNBQWMsQ0FBQyxFQUFFO1lBQ3pCLFVBQVUsRUFBRSxFQUFFO1lBQ2QsS0FBSyxFQUFFLElBQUk7WUFDWCxLQUFLLEVBQUUsQ0FBQztTQUNYLENBQUM7SUF3Rk4sQ0FBQztJQXRGRzs7Ozs7O09BTUc7SUFDSSxJQUFJLENBQUMsSUFBUztRQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDM0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE9BQU8sQ0FBQyxPQUFvQjtRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLE1BQU0sQ0FBQyxNQUFjO1FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUMvQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksVUFBVSxDQUFDLFVBQWtCO1FBQ2hDLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUN2QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksR0FBRyxDQUFDLEdBQWtCO1FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUN6QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUssQ0FBQyxRQUFnQixDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxRQUFRLENBQUMsUUFBOEIsSUFBSTtRQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDN0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7Q0FDSjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBZ0MsR0FBRSxFQUFFLENBQUMsSUFBSSx1QkFBdUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEh0dHBNb2NrRXJyb3IsIEh0dHBSZXNwb25zZU1vY2sgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxcIjtcclxuXHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgT0s6IHN0cmluZyA9IFwiT0tcIjtcclxuXHJcbi8qKlxyXG4gKiBBIHN0YXRlZnVsbCBidWlsZGVyIGZvciBjcmVhdGluZyBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlcy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9yZXNwb25zZTogSHR0cFJlc3BvbnNlTW9jayA9IHtcclxuICAgICAgICB1cmw6IG51bGwsXHJcbiAgICAgICAgYm9keTogbnVsbCxcclxuICAgICAgICBzdGF0dXM6IEh0dHBTdGF0dXNDb2RlLk9rLFxyXG4gICAgICAgIHN0YXR1c1RleHQ6IE9LLFxyXG4gICAgICAgIGVycm9yOiBudWxsLFxyXG4gICAgICAgIGRlbGF5OiAwXHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgYm9keSBwcm9wZXJ0eSBvZiB0aGUgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgYGJvZHlgIHZhbHVlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gYm9keSBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGJvZHkgcHJvcGVydHkgb2YgdGhlIG5ldyBgSHR0cFJlc3BvbnNlTW9ja2AgaW5zdGFuY2UuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoaXMgYEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyYCBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGJvZHkoYm9keTogYW55KTogSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXIge1xyXG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlLmJvZHkgPSBib2R5O1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgaGVhZGVycyBwcm9wZXJ0eSBvZiB0aGUgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgYGhlYWRlcnNgIHZhbHVlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gaGVhZGVycyBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGBoZWFkZXJzYCBwcm9wZXJ0eSBvZiB0aGUgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZS5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhpcyBgSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXJgIGluc3RhbmNlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGVhZGVycyhoZWFkZXJzOiBIdHRwSGVhZGVycyk6IEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyIHtcclxuICAgICAgICB0aGlzLl9yZXNwb25zZS5oZWFkZXJzID0gaGVhZGVycztcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGBzdGF0dXNgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBgc3RhdHVzYCB2YWx1ZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHN0YXR1cyBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGBzdGF0dXNgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGlzIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0dXMoc3RhdHVzOiBudW1iZXIpOiBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlciB7XHJcbiAgICAgICAgdGhpcy5fcmVzcG9uc2Uuc3RhdHVzID0gc3RhdHVzO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgYHN0YXR1c1RleHRgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBgc3RhdHVzVGV4dGAgdmFsdWUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBzdGF0dXNUZXh0IFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgYHN0YXR1c1RleHRgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGlzIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0dXNUZXh0KHN0YXR1c1RleHQ6IHN0cmluZyk6IEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyIHtcclxuICAgICAgICB0aGlzLl9yZXNwb25zZS5zdGF0dXNUZXh0ID0gc3RhdHVzVGV4dDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGB1cmxgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBgdXJsYCB2YWx1ZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHVybCBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGB1cmxgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGlzIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cmwodXJsOiBzdHJpbmcgfCBudWxsKTogSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXIge1xyXG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlLnVybCA9IHVybDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGBkZWxheWAgcHJvcGVydHkgb2YgdGhlIG5ldyBgSHR0cFJlc3BvbnNlTW9ja2AgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGB0aW1lcmAgZHVyYXRpb24uXHJcbiAgICAgKiBNYXhpbXVtIHZhbHVlIGlzIGAxMDAwMGAgbWlsaXNlY29uZHMgKDEwIHNlY29uZHMpLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gdGltZXIgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBgZGVsYXlgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGlzIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxheSh0aW1lcjogbnVtYmVyID0gMCk6IEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyIHtcclxuICAgICAgICB0aGlzLl9yZXNwb25zZS5kZWxheSA9IHRpbWVyO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmV0dXJucyBhIG5ldyBgSHR0cFJlc3BvbnNlTW9ja2AgaW5zdGFuY2UsIGJ1aWx0IGZyb20gdGhlIHByb3BlcnRpZXMgc3BlY2lmaWVkIHdpdGggdGhlXHJcbiAgICAgKiBgSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXJgIG1ldGhvZHMuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBlcnJvciBBbiBvcHRpb25hbCB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgYGVycm9yYCBwcm9wZXJ0eSBvZiB0aGUgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZS5cclxuICAgICAqICAgICAgICAgICAgICBUaGUgYGVycm9yYCBwYXJhbWV0ZXIgdmFsdWVzIHRha2UgcHJlY2VkZW5jZSBvdmVyIGFsbCBvdGhlciBwcm9wZXJ0aWVzIG9mIHRoZSBgSHR0cFJlc3BvbnNlTW9ja2BcclxuICAgICAqICAgICAgICAgICAgICBpbnN0YW5jZS5cclxuICAgICAqIEByZXR1cm5zIEEgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlc3BvbnNlKGVycm9yOiBIdHRwTW9ja0Vycm9yIHwgbnVsbCA9IG51bGwpOiBIdHRwUmVzcG9uc2VNb2NrIHtcclxuICAgICAgICB0aGlzLl9yZXNwb25zZS5lcnJvciA9IGVycm9yO1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNwb25zZTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEEgdXRpbGl0eSBmdW5jdGlvbiB1c2VkIHRvIGNyZWF0ZSBuZXcgXCJjaGFpbmFibGVcIiBgSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXJgIGluc3RhbmNlcy5cclxuICogXHJcbiAqIEByZXR1cm5zIEEgbmV3IGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAqL1xyXG5leHBvcnQgY29uc3QgaHR0cFJlc3BvbnNlTW9jazooKT0+IEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyID0gKCk9PiBuZXcgSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXIoKTsiXX0=
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NrLXJlc3BvbnNlLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3V0aWwvaHR0cC1tb2NrLXJlc3BvbnNlLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFlLGNBQWMsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRW5FLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RDs7R0FFRztBQUNILE1BQU0sRUFBRSxHQUFXLElBQUksQ0FBQztBQUV4Qjs7R0FFRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUFBcEM7UUFFSTs7V0FFRztRQUNLLGNBQVMsR0FBcUI7WUFDbEMsR0FBRyxFQUFFLElBQUk7WUFDVCxJQUFJLEVBQUUsSUFBSTtZQUNWLE1BQU0sRUFBRSxjQUFjLENBQUMsRUFBRTtZQUN6QixVQUFVLEVBQUUsRUFBRTtZQUNkLEtBQUssRUFBRSxJQUFJO1lBQ1gsS0FBSyxFQUFFLENBQUM7U0FDWCxDQUFDO0lBMElOLENBQUM7SUF4SUc7Ozs7OztPQU1HO0lBQ0ksSUFBSSxDQUFDLElBQVM7UUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQzNCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxPQUFPLENBQUMsT0FBb0I7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGNBQWM7UUFDakIsTUFBTSxjQUFjLEdBQWdCLGVB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TUFBTSxnQkFBZ0IsR0FBZ0MsR0FBRSxFQUFFLENBQUMsSUFBSSx1QkFBdUIsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IEh0dHBNb2NrRXJyb3IsIEh0dHBSZXNwb25zZU1vY2sgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxcIjtcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnNVdGlsIH0gZnJvbSBcIi4vaHR0cC1oZWFkZXJzLnV0aWxcIjtcclxuaW1wb3J0IHsgSFRUUF9NT0NLX01BWF9ERUxBWSB9IGZyb20gXCIuL2h0dHAtbW9jay1tYXgtZGVsYXlcIjtcclxuXHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgT0s6IHN0cmluZyA9IFwiT0tcIjtcclxuXHJcbi8qKlxyXG4gKiBBIHN0YXRlZnVsbCBidWlsZGVyIGZvciBjcmVhdGluZyBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlcy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9yZXNwb25zZTogSHR0cFJlc3BvbnNlTW9jayA9IHtcclxuICAgICAgICB1cmw6IG51bGwsXHJcbiAgICAgICAgYm9keTogbnVsbCxcclxuICAgICAgICBzdGF0dXM6IEh0dHBTdGF0dXNDb2RlLk9rLFxyXG4gICAgICAgIHN0YXR1c1RleHQ6IE9LLFxyXG4gICAgICAgIGVycm9yOiBudWxsLFxyXG4gICAgICAgIGRlbGF5OiAwXHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgYm9keSBwcm9wZXJ0eSBvZiB0aGUgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgYGJvZHlgIHZhbHVlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gYm9keSBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGJvZHkgcHJvcGVydHkgb2YgdGhlIG5ldyBgSHR0cFJlc3BvbnNlTW9ja2AgaW5zdGFuY2UuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoaXMgYEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyYCBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGJvZHkoYm9keTogYW55KTogSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXIge1xyXG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlLmJvZHkgPSBib2R5O1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgaGVhZGVycyBwcm9wZXJ0eSBvZiB0aGUgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgYGhlYWRlcnNgIHZhbHVlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gaGVhZGVycyBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGBoZWFkZXJzYCBwcm9wZXJ0eSBvZiB0aGUgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZS5cclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMgQSByZWZlcmVuY2UgdG8gdGhpcyBgSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXJgIGluc3RhbmNlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGVhZGVycyhoZWFkZXJzOiBIdHRwSGVhZGVycyk6IEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyIHtcclxuICAgICAgICB0aGlzLl9yZXNwb25zZS5oZWFkZXJzID0gaGVhZGVycztcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZCB0aGUgbGlzdCBvZiBIVFRQIGhlYWRlcnMgZ2VuZXJhdGVkIGJ5IHRoZSBgSHR0cEhlYWRlcnNVdGlsLmNyZWF0ZURlZmF1bHRSZXF1ZXN0SGVhZGVycygpYFxyXG4gICAgICogdG8gdGhlIG1vY2sgcmVzcG9uc2UuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIEEgcmVmZXJlbmNlIHRvIHRoaXMgYEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyYCBpbnN0YW5jZS5cclxuICAgICAqL1xyXG4gICAgcHVibGljIGRlZmF1bHRIZWFkZXJzKCk6IEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyIHtcclxuICAgICAgICBjb25zdCBkZWZhdWx0SGVhZGVyczogSHR0cEhlYWRlcnMgPSBIdHRwSGVhZGVyc1V0aWwuY3JlYXRlRGVmYXVsdFJlcXVlc3RIZWFkZXJzKCk7XHJcbiAgICAgICAgbGV0IGhlYWRlcnM6IEh0dHBIZWFkZXJzIHwgdW5kZWZpbmVkID0gdGhpcy5fcmVzcG9uc2UuaGVhZGVycztcclxuICAgICAgICBpZiAoaGVhZGVycykge1xyXG4gICAgICAgICAgICBjb25zdCBrZXlzOiBzdHJpbmdbXSA9IGRlZmF1bHRIZWFkZXJzLmtleXMoKTtcclxuICAgICAgICAgICAga2V5cy5mb3JFYWNoKGtleT0+IGhlYWRlcnM/LmFwcGVuZChrZXksIGRlZmF1bHRIZWFkZXJzLmdldChrZXkpIGFzIGFueSkpXHJcbiAgICAgICAgfSBlbHNlIGhlYWRlcnMgPSBkZWZhdWx0SGVhZGVycztcclxuICAgICAgICB0aGlzLl9yZXNwb25zZS5oZWFkZXJzID0gaGVhZGVycztcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGBzdGF0dXNgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBgc3RhdHVzYCB2YWx1ZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHN0YXR1cyBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGBzdGF0dXNgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGlzIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0dXMoc3RhdHVzOiBudW1iZXIpOiBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlciB7XHJcbiAgICAgICAgdGhpcy5fcmVzcG9uc2Uuc3RhdHVzID0gc3RhdHVzO1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgYHN0YXR1c1RleHRgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBgc3RhdHVzVGV4dGAgdmFsdWUuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSBzdGF0dXNUZXh0IFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgYHN0YXR1c1RleHRgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGlzIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0dXNUZXh0KHN0YXR1c1RleHQ6IHN0cmluZyk6IEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyIHtcclxuICAgICAgICB0aGlzLl9yZXNwb25zZS5zdGF0dXNUZXh0ID0gc3RhdHVzVGV4dDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGB1cmxgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlIHdpdGggdGhlIHNwZWNpZmllZCBgdXJsYCB2YWx1ZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHVybCBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGB1cmxgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGlzIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyB1cmwodXJsOiBzdHJpbmcgfCBudWxsKTogSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXIge1xyXG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlLnVybCA9IHVybDtcclxuICAgICAgICByZXR1cm4gdGhpcztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGBkZWxheWAgcHJvcGVydHkgb2YgdGhlIG5ldyBgSHR0cFJlc3BvbnNlTW9ja2AgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGB0aW1lcmAgZHVyYXRpb24uXHJcbiAgICAgKiBNYXhpbXVtIHZhbHVlIGlzIGAxMDAwMGAgbWlsaXNlY29uZHMgKDEwIHNlY29uZHMpLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gdGltZXIgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBgZGVsYXlgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGlzIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxheSh0aW1lcj86IG51bWJlcik6IEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyO1xyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIFNldHMgdGhlIGBkZWxheWAgcHJvcGVydHkgb2YgdGhlIG5ldyBgSHR0cFJlc3BvbnNlTW9ja2AgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGB0aW1lcmAgZHVyYXRpb24uXHJcbiAgICAgKiBNYXhpbXVtIHZhbHVlIGlzIGAxMDAwMGAgbWlsaXNlY29uZHMgKDEwIHNlY29uZHMpLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gdGltZXIgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBgZGVsYXlgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyBBIHJlZmVyZW5jZSB0byB0aGlzIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZWxheShtaW4/OiBudW1iZXIsIG1heD86IG51bWJlcik6IEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIE92ZXJsb2FkIGltcGxlbWVudGF0aW9uIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGVsYXkoLi4uYXJnOiBhbnkpOiBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlciB7XHJcbiAgICAgICAgaWYgKGFyZy5sZW5ndGggPD0gMSkge1xyXG4gICAgICAgICAgICBsZXQgdGltZXI6IG51bWJlciA9IGFyZ1swXSB8fCBOYU47XHJcbiAgICAgICAgICAgIGlmIChpc05hTih0aW1lcikpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3BvbnNlLmRlbGF5ID0gSFRUUF9NT0NLX01BWF9ERUxBWSAtIE1hdGgucmFuZG9tKCkgKiBIVFRQX01PQ0tfTUFYX0RFTEFZO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRpbWVyID4gSFRUUF9NT0NLX01BWF9ERUxBWSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVzcG9uc2UuZGVsYXkgPSBIVFRQX01PQ0tfTUFYX0RFTEFZO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHRpbWVyIDwgMCkgdGltZXIgPSAwO1xyXG4gICAgICAgICAgICB0aGlzLl9yZXNwb25zZS5kZWxheSA9IHRpbWVyO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcztcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG1pbjogbnVtYmVyID0gYXJnWzBdLCBtYXg6IG51bWJlciA9IGFyZ1sxXTtcclxuICAgICAgICBpZiAobWF4ID4gSFRUUF9NT0NLX01BWF9ERUxBWSkgbWF4ID0gSFRUUF9NT0NLX01BWF9ERUxBWTtcclxuICAgICAgICBpZiAobWluIDwgMCB8fCBtaW4gPiBtYXgpIG1pbiA9IDA7XHJcbiAgICAgICAgdGhpcy5fcmVzcG9uc2UuZGVsYXkgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pbik7XHJcbiAgICAgICAgcmV0dXJuIHRoaXM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGEgbmV3IGBIdHRwUmVzcG9uc2VNb2NrYCBpbnN0YW5jZSwgYnVpbHQgZnJvbSB0aGUgcHJvcGVydGllcyBzcGVjaWZpZWQgd2l0aCB0aGVcclxuICAgICAqIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgbWV0aG9kcy5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIGVycm9yIEFuIG9wdGlvbmFsIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBgZXJyb3JgIHByb3BlcnR5IG9mIHRoZSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICogICAgICAgICAgICAgIFRoZSBgZXJyb3JgIHBhcmFtZXRlciB2YWx1ZXMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgYWxsIG90aGVyIHByb3BlcnRpZXMgb2YgdGhlIGBIdHRwUmVzcG9uc2VNb2NrYFxyXG4gICAgICogICAgICAgICAgICAgIGluc3RhbmNlLlxyXG4gICAgICogQHJldHVybnMgQSBuZXcgYEh0dHBSZXNwb25zZU1vY2tgIGluc3RhbmNlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgcmVzcG9uc2UoZXJyb3I6IEh0dHBNb2NrRXJyb3IgfCBudWxsID0gbnVsbCk6IEh0dHBSZXNwb25zZU1vY2sge1xyXG4gICAgICAgIHRoaXMuX3Jlc3BvbnNlLmVycm9yID0gZXJyb3I7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc3BvbnNlO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogQSB1dGlsaXR5IGZ1bmN0aW9uIHVzZWQgdG8gY3JlYXRlIG5ldyBcImNoYWluYWJsZVwiIGBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcmAgaW5zdGFuY2VzLlxyXG4gKiBcclxuICogQHJldHVybnMgQSBuZXcgYEh0dHBSZXNwb25zZU1vY2tCdWlsZGVyYCBpbnN0YW5jZS5cclxuICovXHJcbmV4cG9ydCBjb25zdCBodHRwUmVzcG9uc2VNb2NrOigpPT4gSHR0cFJlc3BvbnNlTW9ja0J1aWxkZXIgPSAoKT0+IG5ldyBIdHRwUmVzcG9uc2VNb2NrQnVpbGRlcigpOyJdfQ==
|
|
@@ -2,4 +2,5 @@ export * from './http-mock-response.builder';
|
|
|
2
2
|
export * from './http-headers-mock.builder';
|
|
3
3
|
export * from './fetch-client.builder';
|
|
4
4
|
export * from './fetch-client-response-type.enum';
|
|
5
|
-
|
|
5
|
+
export * from './http-mock-max-delay';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3V0aWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9odHRwLW1vY2stcmVzcG9uc2UuYnVpbGRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vaHR0cC1oZWFkZXJzLW1vY2suYnVpbGRlcic7XHJcbmV4cG9ydCAqIGZyb20gJy4vZmV0Y2gtY2xpZW50LmJ1aWxkZXInO1xyXG5leHBvcnQgKiBmcm9tICcuL2ZldGNoLWNsaWVudC1yZXNwb25zZS10eXBlLmVudW0nO1xyXG5leHBvcnQgKiBmcm9tICcuL2h0dHAtbW9jay1tYXgtZGVsYXknOyJdfQ==
|
|
@@ -7,16 +7,13 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { HttpHeaders, HttpParams, HttpRequest, HttpStatusCode } from "@angular/common/http";
|
|
9
9
|
import { ProgressEventMock } from "../event/progress-event-mock";
|
|
10
|
-
import { EMPTY_STRING } from "../../../../util";
|
|
10
|
+
import { EMPTY_STRING, Uuid } from "../../../../util";
|
|
11
11
|
import { XhrBase } from "./xhr-base";
|
|
12
12
|
import { HttpHeadersUtil } from "../util/http-headers.util";
|
|
13
13
|
import { Observable, of } from "rxjs";
|
|
14
14
|
import { DataStorageBuilder } from "../util/data-storage.builder";
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
* The maximum value for a delayed HTTP response.
|
|
18
|
-
*/
|
|
19
|
-
const MAX_TIMER = 10000;
|
|
15
|
+
import { HttpMockLoggingMetadataBuilder } from "../logging/http-mock-logging-metadata.builder";
|
|
16
|
+
import { HttpMockResponseDelayUtil } from "../util/http-mock-response-delay.util";
|
|
20
17
|
/**
|
|
21
18
|
* @private
|
|
22
19
|
* Intenal "onreadystatechange" event.
|
|
@@ -115,7 +112,12 @@ export class DelegateXhr extends XhrBase {
|
|
|
115
112
|
* if no response has been received.
|
|
116
113
|
*/
|
|
117
114
|
getAllResponseHeaders() {
|
|
118
|
-
|
|
115
|
+
if (this._readyState < this.HEADERS_RECEIVED)
|
|
116
|
+
return null;
|
|
117
|
+
const respHeaders = this._dataStorage?.httpResponse.headers;
|
|
118
|
+
if (respHeaders)
|
|
119
|
+
return HttpHeadersUtil.stringify(respHeaders);
|
|
120
|
+
return null;
|
|
119
121
|
}
|
|
120
122
|
/**
|
|
121
123
|
* Sends the request to the server.
|
|
@@ -123,40 +125,45 @@ export class DelegateXhr extends XhrBase {
|
|
|
123
125
|
* @param body A body of data to be sent in the XHR request.
|
|
124
126
|
*/
|
|
125
127
|
send(body) {
|
|
128
|
+
const start = this.now();
|
|
126
129
|
const request = this.buildHttpRequest(body);
|
|
127
130
|
const rc = this._routeConfig;
|
|
128
131
|
const httpResponseMock = rc.methodConfig.data(request, rc.parameters);
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
+
const responseDelay = HttpMockResponseDelayUtil.getResponseDelay(httpResponseMock.delay || 0);
|
|
133
|
+
const timer = responseDelay.duration;
|
|
134
|
+
const requestMetadata = {
|
|
135
|
+
start: start,
|
|
136
|
+
stalled: responseDelay.stalled,
|
|
137
|
+
duration: timer,
|
|
138
|
+
url: new URL(this._url),
|
|
139
|
+
id: Uuid.build()
|
|
140
|
+
};
|
|
141
|
+
const prefetchMetadata = {
|
|
142
|
+
request: request,
|
|
143
|
+
requestMetadata: requestMetadata
|
|
144
|
+
};
|
|
145
|
+
this._logger.prefetch(prefetchMetadata);
|
|
132
146
|
this._loadSubscription = this.loadData(httpResponseMock).subscribe({
|
|
133
147
|
next: (data) => {
|
|
134
|
-
this.setDataStorage(httpResponseMock, data);
|
|
148
|
+
this.setDataStorage(httpResponseMock, requestMetadata, data);
|
|
135
149
|
const error = this._dataStorage.httpResponse.error;
|
|
136
150
|
setTimeout(() => {
|
|
137
151
|
this.setReadyState(this.HEADERS_RECEIVED);
|
|
138
152
|
if (error)
|
|
139
|
-
return this.onError(error);
|
|
153
|
+
return this.onError(request, error);
|
|
140
154
|
this.setReadyState(this.LOADING);
|
|
141
155
|
const response = this._dataStorage.httpResponse;
|
|
142
|
-
let headers = response.headers;
|
|
143
|
-
if (headers) {
|
|
144
|
-
this._headers.keys().forEach((key) => {
|
|
145
|
-
headers = headers.set(key, this._headers.get(key));
|
|
146
|
-
});
|
|
147
|
-
this._headers = headers;
|
|
148
|
-
}
|
|
149
156
|
if (!this._progressiveDownload) {
|
|
150
157
|
this._statusText = response.statusText || EMPTY_STRING;
|
|
151
158
|
this._status = response.status || 0;
|
|
152
|
-
return this.onLoadComplete();
|
|
159
|
+
return this.onLoadComplete(request);
|
|
153
160
|
}
|
|
154
|
-
this.doProgressiveDownload();
|
|
161
|
+
this.doProgressiveDownload(request);
|
|
155
162
|
}, timer);
|
|
156
163
|
},
|
|
157
164
|
error: (err) => {
|
|
158
|
-
this.setDataStorage(httpResponseMock);
|
|
159
|
-
this.onError(err);
|
|
165
|
+
this.setDataStorage(httpResponseMock, requestMetadata);
|
|
166
|
+
this.onError(request, err);
|
|
160
167
|
}
|
|
161
168
|
});
|
|
162
169
|
}
|
|
@@ -167,13 +174,14 @@ export class DelegateXhr extends XhrBase {
|
|
|
167
174
|
* @param value The value to set as the body of the header.
|
|
168
175
|
*/
|
|
169
176
|
setRequestHeader(name, value) {
|
|
170
|
-
this.
|
|
177
|
+
this._requestHeaders = this._requestHeaders.set(name, value);
|
|
171
178
|
}
|
|
172
179
|
/**
|
|
173
180
|
* @private
|
|
174
181
|
*/
|
|
175
|
-
constructor(routeConfig) {
|
|
182
|
+
constructor(routeConfig, _logger) {
|
|
176
183
|
super();
|
|
184
|
+
this._logger = _logger;
|
|
177
185
|
/**
|
|
178
186
|
* @private
|
|
179
187
|
* Indicates whether the progressive download is activated, or not.
|
|
@@ -196,7 +204,7 @@ export class DelegateXhr extends XhrBase {
|
|
|
196
204
|
*
|
|
197
205
|
* Internal storage for the HTTP request `headers`.
|
|
198
206
|
*/
|
|
199
|
-
this.
|
|
207
|
+
this._requestHeaders = null;
|
|
200
208
|
/**
|
|
201
209
|
* @private
|
|
202
210
|
*
|
|
@@ -218,12 +226,11 @@ export class DelegateXhr extends XhrBase {
|
|
|
218
226
|
*
|
|
219
227
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType
|
|
220
228
|
*/
|
|
221
|
-
this.responseType =
|
|
222
|
-
const methodConfig = routeConfig.methodConfig;
|
|
229
|
+
this.responseType = EMPTY_STRING;
|
|
223
230
|
this._routeConfig = routeConfig;
|
|
224
|
-
|
|
225
|
-
this.
|
|
226
|
-
this.
|
|
231
|
+
// routeConfig.methodConfig.downloadManager
|
|
232
|
+
this._progressiveDownload = false;
|
|
233
|
+
this._requestHeaders = new HttpHeaders();
|
|
227
234
|
}
|
|
228
235
|
/**
|
|
229
236
|
* @private
|
|
@@ -231,7 +238,7 @@ export class DelegateXhr extends XhrBase {
|
|
|
231
238
|
*/
|
|
232
239
|
destroy() {
|
|
233
240
|
this._routeConfig = null;
|
|
234
|
-
this.
|
|
241
|
+
this._requestHeaders = null;
|
|
235
242
|
this._dataStorage = null;
|
|
236
243
|
if (this._loadSubscription) {
|
|
237
244
|
this._loadSubscription.unsubscribe();
|
|
@@ -241,11 +248,11 @@ export class DelegateXhr extends XhrBase {
|
|
|
241
248
|
/**
|
|
242
249
|
* @private
|
|
243
250
|
*/
|
|
244
|
-
doProgressiveDownload() {
|
|
251
|
+
doProgressiveDownload(request) {
|
|
245
252
|
const total = this._dataStorage.total;
|
|
246
253
|
if (total <= 200) {
|
|
247
254
|
console.warn("[Angular Toolbox]: Body content is too small for emulating progressive download! Minimum size is 200 octets.");
|
|
248
|
-
return this.onLoadComplete();
|
|
255
|
+
return this.onLoadComplete(request);
|
|
249
256
|
}
|
|
250
257
|
// TODO: ameliorate the following process:
|
|
251
258
|
const self = this;
|
|
@@ -258,7 +265,7 @@ export class DelegateXhr extends XhrBase {
|
|
|
258
265
|
if (cursor > total) {
|
|
259
266
|
cursor = total;
|
|
260
267
|
clearInterval(idx);
|
|
261
|
-
self.onLoadComplete();
|
|
268
|
+
self.onLoadComplete(request);
|
|
262
269
|
}
|
|
263
270
|
else {
|
|
264
271
|
this._dataStorage.loaded = cursor;
|
|
@@ -266,22 +273,38 @@ export class DelegateXhr extends XhrBase {
|
|
|
266
273
|
}
|
|
267
274
|
}, 100);
|
|
268
275
|
}
|
|
276
|
+
finalizeRequestMetadata() {
|
|
277
|
+
const ds = this._dataStorage;
|
|
278
|
+
const metadata = ds.requestMetadata;
|
|
279
|
+
const duration = this.now() - metadata.start;
|
|
280
|
+
if (duration > metadata.duration)
|
|
281
|
+
metadata.duration = duration;
|
|
282
|
+
return metadata;
|
|
283
|
+
}
|
|
269
284
|
/**
|
|
270
285
|
* @private
|
|
271
286
|
*/
|
|
272
|
-
onLoadComplete() {
|
|
287
|
+
onLoadComplete(request) {
|
|
273
288
|
this._dataStorage.loaded = this._dataStorage.total;
|
|
274
289
|
this.setReadyState(this.DONE);
|
|
275
290
|
this.dispatchProgressEvent("load");
|
|
291
|
+
this._logger.info(this.buildMetadata(request));
|
|
276
292
|
}
|
|
277
293
|
/**
|
|
278
294
|
* @private
|
|
279
295
|
*/
|
|
280
|
-
onError(error) {
|
|
296
|
+
onError(request, error) {
|
|
281
297
|
this._status = error.status;
|
|
282
298
|
this._statusText = error.statusText;
|
|
283
299
|
this.setReadyState(this.DONE);
|
|
284
300
|
this.dispatchProgressEvent("error");
|
|
301
|
+
this._logger.error(this.buildMetadata(request));
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* @private
|
|
305
|
+
*/
|
|
306
|
+
buildMetadata(request) {
|
|
307
|
+
return HttpMockLoggingMetadataBuilder.build(this, request, this.finalizeRequestMetadata());
|
|
285
308
|
}
|
|
286
309
|
/**
|
|
287
310
|
* @private
|
|
@@ -321,8 +344,8 @@ export class DelegateXhr extends XhrBase {
|
|
|
321
344
|
/**
|
|
322
345
|
* @private
|
|
323
346
|
*/
|
|
324
|
-
setDataStorage(responseMock, data = null) {
|
|
325
|
-
this._dataStorage = DataStorageBuilder.buildDataStorage(responseMock, data);
|
|
347
|
+
setDataStorage(responseMock, requestMetadata, data = null) {
|
|
348
|
+
this._dataStorage = DataStorageBuilder.buildDataStorage(responseMock, data, requestMetadata);
|
|
326
349
|
}
|
|
327
350
|
/**
|
|
328
351
|
* @private
|
|
@@ -332,7 +355,18 @@ export class DelegateXhr extends XhrBase {
|
|
|
332
355
|
const it = this._routeConfig.searchParams.entries();
|
|
333
356
|
for (const pair of it)
|
|
334
357
|
params = params.set(pair[0], pair[1]);
|
|
335
|
-
|
|
358
|
+
const init = {
|
|
359
|
+
params: params,
|
|
360
|
+
headers: this._requestHeaders,
|
|
361
|
+
withCredentials: this.withCredentials,
|
|
362
|
+
responseType: this.responseType,
|
|
363
|
+
reportProgress: this.hasEventListener("progress")
|
|
364
|
+
// context, transferCache: not used by Angular at this level of API
|
|
365
|
+
};
|
|
366
|
+
return new HttpRequest(this._method, this._url, body, init);
|
|
367
|
+
}
|
|
368
|
+
now() {
|
|
369
|
+
return Date.now();
|
|
336
370
|
}
|
|
337
371
|
}
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGUteGhyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10b29sYm94L3NyYy9saWIvZnJhbWV3b3JrL21vY2svaHR0cC94aHIvZGVsZWdhdGUteGhyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU1RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNyQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFNUQsT0FBTyxFQUFFLFVBQVUsRUFBZ0IsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWxFOzs7R0FHRztBQUNILE1BQU0sU0FBUyxHQUFXLEtBQUssQ0FBQztBQUVoQzs7O0dBR0c7QUFDSCxNQUFNLHdCQUF3QixHQUFVLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFeEU7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFFaEU7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsT0FBTztJQW9FcEM7Ozs7T0FJRztJQUNILElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxNQUFN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O0lBQzFELENBQUM7SUFFRDs7T0FFRztJQUNLLFFBQVEsQ0FBQyxnQkFBa0M7UUFDL0MsTUFBTSxZQUFZLEdBQTBCLGdCQUFnQixDQUFDLElBQUksQ0FBQztRQUNsRSxPQUFPLENBQUMsWUFBWSxZQUFZLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjLENBQUMsWUFBOEIsRUFBRSxPQUFZLElBQUk7UUFDbkUsSUFBSSxDQUFDLFlBQVksR0FBSSxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUVEOztPQUVHO0lBQ0ssZ0JBQWdCLENBQUMsSUFBUztRQUM5QixJQUFJLE1BQU0sR0FBZSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQzFDLE1BQU0sRUFBRSxHQUF3QyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQW9CLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakcsS0FBSyxNQUFNLElBQUksSUFBSSxFQUFFO1lBQUUsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdELE9BQU8sSUFBSSxXQUFXLENBQU0sSUFBSSxDQUFDLE9BQWlCLEVBQUUsSUFBSSxDQUFDLElBQVcsRUFBRSxJQUFJLEVBQUUsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNwRyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW5cclxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcclxuICovXHJcblxyXG5pbXBvcnQgeyBIdHRwSGVhZGVycywgSHR0cFBhcmFtcywgSHR0cFJlcXVlc3QsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IFhoclByb3h5LCBIdHRwUmVzcG9uc2VNb2NrLCBIdHRwTWV0aG9kTW9jaywgSHR0cE1vY2tFcnJvciB9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbFwiO1xyXG5pbXBvcnQgeyBQcm9ncmVzc0V2ZW50TW9jayB9IGZyb20gXCIuLi9ldmVudC9wcm9ncmVzcy1ldmVudC1tb2NrXCI7XHJcbmltcG9ydCB7IEVNUFRZX1NUUklORyB9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlsXCI7XHJcbmltcG9ydCB7IFhockJhc2UgfSBmcm9tIFwiLi94aHItYmFzZVwiO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVyc1V0aWwgfSBmcm9tIFwiLi4vdXRpbC9odHRwLWhlYWRlcnMudXRpbFwiO1xyXG5pbXBvcnQgeyBSb3V0ZU1vY2tDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnL3JvdXRlLW1vY2stY29uZmlnXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBEYXRhU3RvcmFnZSB9IGZyb20gXCIuLi9jb3JlL2RhdGEtc3RvcmFnZVwiO1xyXG5pbXBvcnQgeyBEYXRhU3RvcmFnZUJ1aWxkZXIgfSBmcm9tIFwiLi4vdXRpbC9kYXRhLXN0b3JhZ2UuYnVpbGRlclwiO1xyXG5cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqIFRoZSBtYXhpbXVtIHZhbHVlIGZvciBhIGRlbGF5ZWQgSFRUUCByZXNwb25zZS5cclxuICovXHJcbmNvbnN0IE1BWF9USU1FUjogbnVtYmVyID0gMTAwMDA7XHJcblxyXG4vKipcclxuICogQHByaXZhdGVcclxuICogSW50ZW5hbCBcIm9ucmVhZHlzdGF0ZWNoYW5nZVwiIGV2ZW50LlxyXG4gKi9cclxuY29uc3QgUkVBRFlfU1RBVEVfQ0hBTkdFX0VWRU5UOiBFdmVudCA9IG5ldyBFdmVudChcIm9ucmVhZHlzdGF0ZWNoYW5nZVwiKTtcclxuXHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKi9cclxuY29uc3QgRVZUX1BST1BTX0NPTkZJRzogYW55ID0gIHsgd3JpdGFibGU6IGZhbHNlLCB2YWx1ZTogdGhpcyB9O1xyXG5cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqIEEgdXRpbGl0eSBjbGFzcyB1c2VkIGFzIGRlbGVnYXRlIG9mIGBYTUxIdHRwUmVxdWVzdGAgZnVuY3Rpb25hbGl0aWVzIHdoZW5cclxuICogYSBIVFRQIHJlcXVlc3QgaXMgaW50ZXJjZXB0ZWQgYnkgdGhlIE1vY2tpbmcgRnJhbWV3b3JrIC5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBEZWxlZ2F0ZVhociBleHRlbmRzIFhockJhc2UgaW1wbGVtZW50cyBYaHJQcm94eSB7XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBwcm9ncmVzc2l2ZSBkb3dubG9hZCBpcyBhY3RpdmF0ZWQsIG9yIG5vdC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfcHJvZ3Jlc3NpdmVEb3dubG9hZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFRoZSBjb25maWcgZm9yIHRoZSBpbnRlcmNlcHRlZCByb3V0ZS5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfcm91dGVDb25maWc6IFJvdXRlTW9ja0NvbmZpZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIEhUVFAgcmVzcG9uc2UgYGRhdGFgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9kYXRhU3RvcmFnZTogRGF0YVN0b3JhZ2UgPSBudWxsIGFzIGFueTsgXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBJbnRlcm5hbCBzdG9yYWdlIGZvciB0aGUgSFRUUCByZXF1ZXN0IGBtZXRob2RgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9tZXRob2Q6IHVua25vd247IFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFxyXG4gICAgICogSW50ZXJuYWwgc3RvcmFnZSBmb3IgdGhlIEhUVFAgcmVxdWVzdCBVUkwuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3VybDogdW5rbm93bjsgXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBJbnRlcm5hbCBzdG9yYWdlIGZvciB0aGUgSFRUUCByZXF1ZXN0IGByZWFkeVN0YXRlYC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfcmVhZHlTdGF0ZTogbnVtYmVyID0gdGhpcy5VTlNFTlQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBJbnRlcm5hbCBzdG9yYWdlIGZvciB0aGUgSFRUUCByZXF1ZXN0IGBoZWFkZXJzYC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfaGVhZGVyczogSHR0cEhlYWRlcnMgPSBudWxsIGFzIGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIHRoZSBIVFRQIHJlcXVlc3QgYHN0YXR1c2AuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3N0YXR1czogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIHRoZSBIVFRQIHJlcXVlc3QgYHN0YXR1c1RleHRgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zdGF0dXNUZXh0OiBzdHJpbmcgPSBFTVBUWV9TVFJJTkc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9sb2FkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHJlc3BvbnNlIGJvZHkgY29udGVudC5cclxuICAgICAqXHJcbiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9yZXNwb25zZVxyXG4gICAgICovXHJcbiAgICBnZXQgcmVzcG9uc2UoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVN0b3JhZ2U/LmRhdGEgfHwgbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIG51bWVyaWNhbCBIVFRQIHN0YXR1cyBjb2RlIG9mIHRoZSBgWE1MSHR0cFJlcXVlc3RgIHJlc3BvbnNlLlxyXG4gICAgICpcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3N0YXR1c1xyXG4gICAgICovXHJcbiAgICBnZXQgc3RhdHVzKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmVzcG9uc2Ugc3RhdHVzIG1lc3NhZ2UgYXMgcmV0dXJuZWQgYnkgdGhlIEhUVFAgc2VydmVyLlxyXG4gICAgICpcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3N0YXR1c1RleHRcclxuICAgICAqL1xyXG4gICAgZ2V0IHN0YXR1c1RleHQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzVGV4dDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHN0YXRlIHRoZSBgWE1MSHR0cFJlcXVlc3RgIGNsaWVudCBpcyBpbi5cclxuICAgICAqXHJcbiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9yZWFkeVN0YXRlXHJcbiAgICAgKi9cclxuICAgIGdldCByZWFkeVN0YXRlKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWR5U3RhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBzZXJpYWxpemVkIFVSTCBvZiB0aGUgcmVzcG9uc2Ugb3IgdGhlIGVtcHR5IHN0cmluZyBpZiB0aGUgVVJMIGlzIGBudWxsYC4gXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VVUkxcclxuICAgICAqL1xyXG4gICAgZ2V0IHJlc3BvbnNlVVJMKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VybCBhcyBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSB0ZXh0IHJlY2VpdmVkIGZyb20gYSBzZXJ2ZXIgZm9sbG93aW5nIGEgcmVxdWVzdCBiZWluZyBzZW50LlxyXG4gICAgICpcclxuICAgICAqIFRocm93cyBhbiBgSW52YWxpZFN0YXRlRXJyb3JgIERPTUV4Y2VwdGlvbiBpZiByZXNwb25zZVR5cGUgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcgb3IgXCJ0ZXh0XCIuXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VUZXh0XHJcbiAgICAgKi9cclxuICAgIGdldCByZXNwb25zZVRleHQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVN0b3JhZ2U/LnN0cmluZ2lmaWVkRGF0YSB8fCBFTVBUWV9TVFJJTkc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAgUmV0dXJucyBhbiBgWE1MSHR0cFJlcXVlc3RVcGxvYWRgIG9iamVjdCB0aGF0IGNhbiBiZSBvYnNlcnZlZCB0byBtb25pdG9yIGFuIHVwbG9hZCBwcm9ncmVzcy4gXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvdXBsb2FkXHJcbiAgICAgKi9cclxuICAgIGdldCB1cGxvYWQoKTogWE1MSHR0cFJlcXVlc3RVcGxvYWQge1xyXG4gICAgICAgIHJldHVybiBudWxsIGFzIGFueTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiAgUmV0dXJucyBhbiBhbiBlbnVtZXJhdGVkIHN0cmluZyB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mIGRhdGEgY29udGFpbmVkIGluIHRoZSByZXNwb25zZS4gXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VUeXBlXHJcbiAgICAgKi9cclxuICAgIHJlc3BvbnNlVHlwZTogWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgPSBcIlwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseS1jcmVhdGVkIHJlcXVlc3QsIG9yIHJlLWluaXRpYWxpemVzIGFuIGV4aXN0aW5nIG9uZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIG1ldGhvZCBUaGUgSFRUUCByZXF1ZXN0IG1ldGhvZCB0byB1c2UsIHN1Y2ggYXMgYFwiR0VUXCJgLCBgXCJQT1NUXCJgLCBgXCJQVVRcImAsIGBcIkRFTEVURVwiYCxcclxuICAgICAqICAgICAgICAgICAgICAgZXRjLiBJZ25vcmVkIGZvciBub24tSFRUUChTKSBVUkxzLlxyXG4gICAgICogQHBhcmFtIHVybCBBIHN0cmluZyBvciBhbnkgb3RoZXIgb2JqZWN0IHdpdGggYSBzdHJpbmdpZmllciDigJQgaW5jbHVkaW5nIGEgVVJMIG9iamVjdCDigJRcclxuICAgICAqICAgICAgICAgICAgdGhhdCBwcm92aWRlcyB0aGUgVVJMIG9mIHRoZSByZXNvdXJjZSB0byBzZW5kIHRoZSByZXF1ZXN0IHRvLlxyXG4gICAgICovXHJcbiAgICBvcGVuKG1ldGhvZDogc3RyaW5nLCB1cmw6IHN0cmluZyB8IFVSTCk6IHZvaWQ7XHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIG9wZW4obWV0aG9kOiBzdHJpbmcsIHVybDogc3RyaW5nIHwgVVJMLCBhc3luYzogYm9vbGVhbiwgdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBwYXNzd29yZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkO1xyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBvcGVuKG1ldGhvZDogdW5rbm93biwgdXJsOiB1bmtub3duLCBhc3luYz86IHVua25vd24sIHVzZXJuYW1lPzogdW5rbm93biwgcGFzc3dvcmQ/OiB1bmtub3duKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbWV0aG9kID0gbWV0aG9kO1xyXG4gICAgICAgIHRoaXMuX3VybCA9IHVybDtcclxuICAgICAgICB0aGlzLnNldFJlYWR5U3RhdGUodGhpcy5PUEVORUQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWJvcnRzIHRoZSByZXF1ZXN0IGlmIGl0IGhhcyBhbHJlYWR5IGJlZW4gc2VudC4gV2hlbiBhIHJlcXVlc3QgaXMgYWJvcnRlZCwgaXRzIGByZWFkeVN0YXRlYFxyXG4gICAgICogaXMgY2hhbmdlZCB0byBgWE1MSHR0cFJlcXVlc3QuVU5TRU5UYCBhbmQgdGhlIHJlcXVlc3Qgc3RhdHVzIGNvZGUgaXMgc2V0IHRvIGAwYC5cclxuICAgICAqL1xyXG4gICAgYWJvcnQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcmVhZHlTdGF0ZSA9IHRoaXMuVU5TRU5UO1xyXG4gICAgICAgIHRoaXMuX3N0YXR1cyA9IDA7XHJcbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoKFwiYWJvcnRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGFsbCB0aGUgcmVzcG9uc2UgaGVhZGVycywgc2VwYXJhdGVkIGJ5IENSTEYsIGFzIGEgc3RyaW5nLCBvciByZXR1cm5zIGBudWxsYFxyXG4gICAgICogaWYgbm8gcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIEFsbCB0aGUgcmVzcG9uc2UgaGVhZGVycywgc2VwYXJhdGVkIGJ5IENSTEYsIGFzIGEgc3RyaW5nLCBvciByZXR1cm5zIGBudWxsYFxyXG4gICAgICogICAgICAgICAgaWYgbm8gcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQuXHJcbiAgICAgKi9cclxuICAgIGdldEFsbFJlc3BvbnNlSGVhZGVycygpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhU3RvcmFnZSA/IEh0dHBIZWFkZXJzVXRpbC5zdHJpbmdpZnkodGhpcy5faGVhZGVycykgOiBFTVBUWV9TVFJJTkc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZW5kcyB0aGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gYm9keSBBIGJvZHkgb2YgZGF0YSB0byBiZSBzZW50IGluIHRoZSBYSFIgcmVxdWVzdC5cclxuICAgICAqL1xyXG4gICAgc2VuZChib2R5PzogRG9jdW1lbnQgfCBYTUxIdHRwUmVxdWVzdEJvZHlJbml0IHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4gPSB0aGlzLmJ1aWxkSHR0cFJlcXVlc3QoYm9keSk7XHJcbiAgICAgICAgY29uc3QgcmM6IFJvdXRlTW9ja0NvbmZpZyA9IHRoaXMuX3JvdXRlQ29uZmlnO1xyXG4gICAgICAgIGNvbnN0IGh0dHBSZXNwb25zZU1vY2s6IEh0dHBSZXNwb25zZU1vY2sgPSAocmMubWV0aG9kQ29uZmlnIGFzIGFueSkuZGF0YShyZXF1ZXN0LCByYy5wYXJhbWV0ZXJzKTtcclxuICAgICAgICBsZXQgdGltZXI6IG51bWJlciA9IGh0dHBSZXNwb25zZU1vY2suZGVsYXkgfHwgMDtcclxuICAgICAgICBpZiAodGltZXIgPiBNQVhfVElNRVIpIHRpbWVyID0gTUFYX1RJTUVSO1xyXG4gICAgICAgIHRoaXMuX2xvYWRTdWJzY3JpcHRpb24gPSB0aGlzLmxvYWREYXRhKGh0dHBSZXNwb25zZU1vY2spLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YVN0b3JhZ2UoaHR0cFJlc3BvbnNlTW9jaywgZGF0YSk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvcjogSHR0cE1vY2tFcnJvciB8IG51bGwgPSB0aGlzLl9kYXRhU3RvcmFnZS5odHRwUmVzcG9uc2UuZXJyb3I7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0UmVhZHlTdGF0ZSh0aGlzLkhFQURFUlNfUkVDRUlWRUQpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcikgcmV0dXJuIHRoaXMub25FcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZWFkeVN0YXRlKHRoaXMuTE9BRElORyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2U6IEh0dHBSZXNwb25zZU1vY2sgPSB0aGlzLl9kYXRhU3RvcmFnZS5odHRwUmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGhlYWRlcnM6IGFueSA9IHJlc3BvbnNlLmhlYWRlcnM7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faGVhZGVycy5rZXlzKCkuZm9yRWFjaCgoa2V5OiBzdHJpbmcpPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVycyA9IGhlYWRlcnMuc2V0KGtleSwgdGhpcy5faGVhZGVycy5nZXQoa2V5KSBhcyBhbnkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9oZWFkZXJzID0gaGVhZGVycztcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9wcm9ncmVzc2l2ZURvd25sb2FkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXR1c1RleHQgPSByZXNwb25zZS5zdGF0dXNUZXh0IHx8IEVNUFRZX1NUUklORztcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhdHVzID0gcmVzcG9uc2Uuc3RhdHVzIHx8IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLm9uTG9hZENvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9Qcm9ncmVzc2l2ZURvd25sb2FkKCk7XHJcbiAgICAgICAgICAgICAgICB9LCB0aW1lcik7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YVN0b3JhZ2UoaHR0cFJlc3BvbnNlTW9jayk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgLyoqXHJcbiAgICAgKiBTZXRzIHRoZSB2YWx1ZSBvZiBhbiBIVFRQIHJlcXVlc3QgaGVhZGVyLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgaGVhZGVyIHdob3NlIHZhbHVlIGlzIHRvIGJlIHNldC5cclxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0IGFzIHRoZSBib2R5IG9mIHRoZSBoZWFkZXIuXHJcbiAgICAgKi9cclxuICAgIHNldFJlcXVlc3RIZWFkZXIobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5faGVhZGVycyA9IHRoaXMuX2hlYWRlcnMuc2V0KG5hbWUsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlIFxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihyb3V0ZUNvbmZpZzogUm91dGVNb2NrQ29uZmlnKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICBjb25zdCBtZXRob2RDb25maWc6IEh0dHBNZXRob2RNb2NrID0gcm91dGVDb25maWcubWV0aG9kQ29uZmlnO1xyXG4gICAgICAgIHRoaXMuX3JvdXRlQ29uZmlnID0gcm91dGVDb25maWc7XHJcbiAgICAgICAgdGhpcy5fcHJvZ3Jlc3NpdmVEb3dubG9hZCA9IG1ldGhvZENvbmZpZy5wcm9ncmVzc2l2ZSB8fCBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlc3BvbnNlVHlwZSA9IG1ldGhvZENvbmZpZy5yZXNwb25zZVR5cGUgfHwgRU1QVFlfU1RSSU5HIGFzIGFueTtcclxuICAgICAgICB0aGlzLl9oZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGUgXHJcbiAgICAgKiBJbnRlcm5hbGx5IHVzZWQgYnkgdGhlIGZyYW1ld29yayB0byBkZWxldGUgYSBgRGVsZWdhdGVYaHJgIGluc3RhbmNlLlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yb3V0ZUNvbmZpZyA9IG51bGwgYXMgYW55O1xyXG4gICAgICAgIHRoaXMuX2hlYWRlcnMgPSBudWxsIGFzIGFueTtcclxuICAgICAgICB0aGlzLl9kYXRhU3RvcmFnZSA9IG51bGwgYXMgYW55O1xyXG4gICAgICAgIGlmICh0aGlzLl9sb2FkU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvYWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgdGhpcy5fbG9hZFN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGUgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZG9Qcm9ncmVzc2l2ZURvd25sb2FkKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHRvdGFsOiBudW1iZXIgPSB0aGlzLl9kYXRhU3RvcmFnZS50b3RhbDtcclxuICAgICAgICBpZiAodG90YWwgPD0gMjAwKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIltBbmd1bGFyIFRvb2xib3hdOiBCb2R5IGNvbnRlbnQgaXMgdG9vIHNtYWxsIGZvciBlbXVsYXRpbmcgcHJvZ3Jlc3NpdmUgZG93bmxvYWQhIE1pbmltdW0gc2l6ZSBpcyAyMDAgb2N0ZXRzLlwiKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMub25Mb2FkQ29tcGxldGUoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gVE9ETzogYW1lbGlvcmF0ZSB0aGUgZm9sbG93aW5nIHByb2Nlc3M6XHJcbiAgICAgICAgY29uc3Qgc2VsZjogRGVsZWdhdGVYaHIgPSB0aGlzO1xyXG4gICAgICAgIGNvbnN0IGNodW5ja1NpemU6IG51bWJlciA9IE1hdGguZmxvb3IodG90YWwgLyAxMCk7XHJcbiAgICAgICAgbGV0IGN1cnNvcjogbnVtYmVyID0gMDtcclxuICAgICAgICB0aGlzLl9zdGF0dXNUZXh0ID0gXCJQYXJ0aWFsIENvbnRlbnRcIjtcclxuICAgICAgICB0aGlzLl9zdGF0dXMgPSBIdHRwU3RhdHVzQ29kZS5QYXJ0aWFsQ29udGVudDtcclxuICAgICAgICBjb25zdCBpZHggPSBzZXRJbnRlcnZhbCgoKT0+IHtcclxuICAgICAgICAgICAgY3Vyc29yICs9IGNodW5ja1NpemU7XHJcbiAgICAgICAgICAgIGlmIChjdXJzb3IgPiB0b3RhbCkge1xyXG4gICAgICAgICAgICAgICAgY3Vyc29yID0gdG90YWw7XHJcbiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGlkeCk7XHJcbiAgICAgICAgICAgICAgICBzZWxmLm9uTG9hZENvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhU3RvcmFnZS5sb2FkZWQgPSBjdXJzb3I7XHJcbiAgICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoUHJvZ3Jlc3NFdmVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb25Mb2FkQ29tcGxldGUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fZGF0YVN0b3JhZ2UubG9hZGVkID0gdGhpcy5fZGF0YVN0b3JhZ2UudG90YWw7XHJcbiAgICAgICAgdGhpcy5zZXRSZWFkeVN0YXRlKHRoaXMuRE9ORSk7XHJcbiAgICAgICAgdGhpcy5kaXNwYXRjaFByb2dyZXNzRXZlbnQoXCJsb2FkXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBvbkVycm9yKGVycm9yOiBIdHRwTW9ja0Vycm9yKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fc3RhdHVzID0gZXJyb3Iuc3RhdHVzO1xyXG4gICAgICAgIHRoaXMuX3N0YXR1c1RleHQgPSBlcnJvci5zdGF0dXNUZXh0O1xyXG4gICAgICAgIHRoaXMuc2V0UmVhZHlTdGF0ZSh0aGlzLkRPTkUpO1xyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KFwiZXJyb3JcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGV2ZW50RGlzcGF0Y2godHlwZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgZXZlbnQ6IEV2ZW50ID0gbmV3IEV2ZW50KHR5cGUpO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldmVudCwgJ3RhcmdldCcsIEVWVF9QUk9QU19DT05GSUcpO1xyXG4gICAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShldmVudCwgJ2N1cnJlbnRUYXJnZXQnLCBFVlRfUFJPUFNfQ09ORklHKTtcclxuICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGUgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZGlzcGF0Y2hQcm9ncmVzc0V2ZW50KHR5cGU6IHN0cmluZyA9IFwicHJvZ3Jlc3NcIik6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGQ6IGFueSA9IHRoaXMuX2RhdGFTdG9yYWdlO1xyXG4gICAgICAgIGNvbnN0IGV2ZW50OiBQcm9ncmVzc0V2ZW50TW9jayA9IG5ldyBQcm9ncmVzc0V2ZW50TW9jayh0eXBlKTtcclxuICAgICAgICBldmVudC5sb2FkZWQgPSBkLmxvYWRlZDtcclxuICAgICAgICBldmVudC50b3RhbCA9IGQudG90YWw7XHJcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldFJlYWR5U3RhdGUoc3RhdGU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JlYWR5U3RhdGUgPSBzdGF0ZTtcclxuICAgICAgICBjb25zdCBldmVudDogYW55ID0gdGhpcy5vbnJlYWR5c3RhdGVjaGFuZ2U7XHJcbiAgICAgICAgaWYgKGV2ZW50KSBldmVudC5jYWxsKHRoaXMsIFJFQURZX1NUQVRFX0NIQU5HRV9FVkVOVCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBsb2FkRGF0YShodHRwUmVzcG9uc2VNb2NrOiBIdHRwUmVzcG9uc2VNb2NrKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCByZXNwb25zZUJvZHk6IGFueSB8IE9ic2VydmFibGU8YW55PiA9IGh0dHBSZXNwb25zZU1vY2suYm9keTtcclxuICAgICAgICByZXR1cm4gKHJlc3BvbnNlQm9keSBpbnN0YW5jZW9mIE9ic2VydmFibGUpID8gcmVzcG9uc2VCb2R5IDogb2YocmVzcG9uc2VCb2R5KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHNldERhdGFTdG9yYWdlKHJlc3BvbnNlTW9jazogSHR0cFJlc3BvbnNlTW9jaywgZGF0YTogYW55ID0gbnVsbCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2RhdGFTdG9yYWdlID0gIERhdGFTdG9yYWdlQnVpbGRlci5idWlsZERhdGFTdG9yYWdlKHJlc3BvbnNlTW9jaywgZGF0YSk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGUgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgYnVpbGRIdHRwUmVxdWVzdChib2R5OiBhbnkpOiBIdHRwUmVxdWVzdDxhbnk+IHtcclxuICAgICAgICBsZXQgcGFyYW1zOiBIdHRwUGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuICAgICAgICBjb25zdCBpdDogSXRlcmFibGVJdGVyYXRvcjxbc3RyaW5nLCBzdHJpbmddPiA9ICh0aGlzLl9yb3V0ZUNvbmZpZy5zZWFyY2hQYXJhbXMgYXMgYW55KS5lbnRyaWVzKCk7XHJcbiAgICAgICAgZm9yIChjb25zdCBwYWlyIG9mIGl0KSBwYXJhbXMgPSBwYXJhbXMuc2V0KHBhaXJbMF0sIHBhaXJbMV0pO1xyXG4gICAgICAgIHJldHVybiBuZXcgSHR0cFJlcXVlc3Q8YW55Pih0aGlzLl9tZXRob2QgYXMgc3RyaW5nLCB0aGlzLl91cmwgYXMgYW55LCBib2R5LCB7IHBhcmFtczogcGFyYW1zIH0pO1xyXG4gICAgfVxyXG59Il19
|
|
372
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZWdhdGUteGhyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci10b29sYm94L3NyYy9saWIvZnJhbWV3b3JrL21vY2svaHR0cC94aHIvZGVsZWdhdGUteGhyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU1RixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDckMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVELE9BQU8sRUFBRSxVQUFVLEVBQWdCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUMvRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUdsRjs7O0dBR0c7QUFDSCxNQUFNLHdCQUF3QixHQUFVLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUM7QUFFeEU7O0dBRUc7QUFDSCxNQUFNLGdCQUFnQixHQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFFaEU7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxXQUFZLFNBQVEsT0FBTztJQW9FcEM7Ozs7T0FJRztJQUNILElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBSSxXQUFXO1FBQ1gsT0FBTyxJQUFJLENBQUMsSUFBYyxDQUFDO0lBQy9CLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsZUFBZSxJQUFJLFlBQVksQ0FBQztJQUM5RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksTUFBTTtRQUNOLE9BQU8sSUFBVyxDQUFDO0lBQ3ZCLENBQUM7SUFzQkQ7O09BRUc7SUFDSCxJQUFJLENBQUMsTUFBZSxFQUFFLEdBQVksRUFBRSxLQUFlLEVBQUUsUUFBa0IsRUFBRSxRQUFrQjtRQUN2RixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztRQUN0QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMvQixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxxQkFBcUI7UUFDakIsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxnQkFBZ0I7WUFBRSxPQUFPLElBQUksQ0FBQztRQUMxRCxNQUFNLFdBQVcsR0FBNEIsSUFBSSxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDO1FBQ3JGLElBQUksV0FBVztZQUFFLE9BQU8sZUFBZSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMvRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQUksQ0FBQyxJQUEyRDtRQUM1RCxNQUFNLEtBQUssR0FBVyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDakMsTUFBTSxPQUFPLEdBQXFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5RCxNQUFNLEVBQUUsR0FBb0IsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM5QyxNQUFNLGdCQUFnQixHQUFzQixFQUFFLENBQUMsWUFBb0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNqRyxNQUFNLGFBQWEsR0FBa0IseUJBQXlCLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdHLE1BQU0sS0FBSyxHQUFXLGFBQWEsQ0FBQyxRQUFRLENBQUM7UUFDN0MsTUFBTSxlQUFlLEdBQTRCO1lBQzdDLEtBQUssRUFBRSxLQUFLO1lBQ1osT0FBTyxFQUFFLGFBQWEsQ0FBQyxPQUFPO1lBQzlCLFFBQVEsRUFBRSxLQUFLO1lBQ2YsR0FBRyxFQUFFLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFXLENBQUM7WUFDOUIsRUFBRSxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUU7U0FDbkIsQ0FBQztRQUNGLE1BQU0sZ0JBQWdCLEdBQW9DO1lBQ3RELE9BQU8sRUFBRSxPQUFPO1lBQ2hCLGVBQWUsRUFBRSxlQUFlO1NBQ25DLENBQUM7UUFDRixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsU0FBUyxDQUFDO1lBQy9ELElBQUksRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDN0QsTUFBTSxLQUFLLEdBQXlCLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQztnQkFDekUsVUFBVSxDQUFDLEdBQUUsRUFBRTtvQkFDWCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29CQUMxQyxJQUFJLEtBQUs7d0JBQUUsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztvQkFDL0MsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ2pDLE1BQU0sUUFBUSxHQUFxQixJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztvQkFDbEUsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO3dCQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxVQUFVLElBQUksWUFBWSxDQUFDO3dCQUN2RCxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDO3dCQUNwQyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3hDLENBQUM7b0JBQ0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN4QyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDZCxDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsR0FBUSxFQUFFLEVBQUU7Z0JBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUM7Z0JBQ3ZELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLENBQUM7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxnQkFBZ0IsQ0FBQyxJQUFZLEVBQUUsS0FBYTtRQUN4QyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLFdBQTRCLEVBQ3BCLE9BQStCO1FBQy9DLEtBQUssRUFBRSxDQUFDO1FBRFEsWUFBTyxHQUFQLE9BQU8sQ0FBd0I7UUF0UG5EOzs7V0FHRztRQUNLLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQVE5Qzs7OztXQUlHO1FBQ0ssaUJBQVksR0FBZ0IsSUFBVyxDQUFDO1FBZ0JoRDs7OztXQUlHO1FBQ0ssZ0JBQVcsR0FBVyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBRTFDOzs7O1dBSUc7UUFDSyxvQkFBZSxHQUFnQixJQUFXLENBQUM7UUFFbkQ7Ozs7V0FJRztRQUNLLFlBQU8sR0FBVyxDQUFDLENBQUM7UUFFNUI7Ozs7V0FJRztRQUNLLGdCQUFXLEdBQVcsWUFBWSxDQUFDO1FBRTNDOztXQUVHO1FBQ0ssc0JBQWlCLEdBQXdCLElBQUksQ0FBQztRQW1FdEQ7Ozs7V0FJRztRQUNILGlCQUFZLEdBQStCLFlBQW1CLENBQUM7UUFnSDNELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ2hDLDJDQUEyQztRQUMzQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksT0FBTztRQUNWLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBVyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBVyxDQUFDO1FBQ25DLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBVyxDQUFDO1FBQ2hDLElBQUksSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDekIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNLLHFCQUFxQixDQUFDLE9BQXlCO1FBQ25ELE1BQU0sS0FBSyxHQUFXLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQzlDLElBQUksS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLElBQUksQ0FBQyw4R0FBOEcsQ0FBQyxDQUFDO1lBQzdILE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsMENBQTBDO1FBQzFDLE1BQU0sSUFBSSxHQUFnQixJQUFJLENBQUM7UUFDL0IsTUFBTSxVQUFVLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDbEQsSUFBSSxNQUFNLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLEdBQUcsaUJBQWlCLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU8sR0FBRyxjQUFjLENBQUMsY0FBYyxDQUFDO1FBQzdDLE1BQU0sR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFFLEVBQUU7WUFDeEIsTUFBTSxJQUFJLFVBQVUsQ0FBQztZQUNyQixJQUFJLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztnQkFDakIsTUFBTSxHQUFHLEtBQUssQ0FBQztnQkFDZixhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDakMsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztnQkFDbEMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDakMsQ0FBQztRQUNMLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNaLENBQUM7SUFFTyx1QkFBdUI7UUFDM0IsTUFBTSxFQUFFLEdBQWdCLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDMUMsTUFBTSxRQUFRLEdBQTRCLEVBQUUsQ0FBQyxlQUFlLENBQUM7UUFDN0QsTUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDckQsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVE7WUFBRSxRQUFRLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUMvRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxjQUFjLENBQUMsT0FBeUI7UUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUM7UUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxPQUFPLENBQUMsT0FBeUIsRUFBRSxLQUFvQjtRQUMzRCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYSxDQUFDLE9BQXlCO1FBQzNDLE9BQU8sOEJBQThCLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhLENBQUMsSUFBWTtRQUM5QixNQUFNLEtBQUssR0FBVSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUN6RCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRDs7T0FFRztJQUNLLHFCQUFxQixDQUFDLE9BQWUsVUFBVTtRQUNuRCxNQUFNLENBQUMsR0FBUSxJQUFJLENBQUMsWUFBWSxDQUFDO1FBQ2pDLE1BQU0sS0FBSyxHQUFzQixJQUFJLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdELEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN4QixLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSyxhQUFhLENBQUMsS0FBYTtRQUMvQixJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN6QixNQUFNLEtBQUssR0FBUSxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFDM0MsSUFBSSxLQUFLO1lBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxRQUFRLENBQUMsZ0JBQWtDO1FBQy9DLE1BQU0sWUFBWSxHQUEwQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7UUFDbEUsT0FBTyxDQUFDLFlBQVksWUFBWSxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbEYsQ0FBQztJQUVEOztPQUVHO0lBQ0ssY0FBYyxDQUFDLFlBQThCLEVBQUUsZUFBd0MsRUFBRSxPQUFZLElBQUk7UUFDN0csSUFBSSxDQUFDLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFFRDs7T0FFRztJQUNLLGdCQUFnQixDQUFDLElBQVM7UUFDOUIsSUFBSSxNQUFNLEdBQWUsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUMxQyxNQUFNLEVBQUUsR0FBd0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFvQixDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pHLEtBQUssTUFBTSxJQUFJLElBQUksRUFBRTtZQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RCxNQUFNLElBQUksR0FBUTtZQUNkLE1BQU0sRUFBRSxNQUFNO1lBQ2QsT0FBTyxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQzdCLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsY0FBYyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLENBQUM7WUFDakQsbUVBQW1FO1NBQ3RFLENBQUM7UUFDRixPQUFPLElBQUksV0FBVyxDQUFNLElBQUksQ0FBQyxPQUFpQixFQUFFLElBQUksQ0FBQyxJQUFXLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RGLENBQUM7SUFFTyxHQUFHO1FBQ1AsT0FBTyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsIEh0dHBSZXF1ZXN0LCBIdHRwU3RhdHVzQ29kZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBYaHJQcm94eSwgSHR0cFJlc3BvbnNlTW9jaywgSHR0cE1ldGhvZE1vY2ssIEh0dHBNb2NrRXJyb3IsIEh0dHBNb2NrTG9nZ2luZ1NlcnZpY2UsIEh0dHBNb2NrUmVxdWVzdE1ldGFkYXRhLCBIdHRwTW9ja0xvZ2dpbmdNZXRhZGF0YSwgSHR0cE1vY2tMb2dnaW5nUHJlZmV0Y2hNZXRhZGF0YSB9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbFwiO1xyXG5pbXBvcnQgeyBQcm9ncmVzc0V2ZW50TW9jayB9IGZyb20gXCIuLi9ldmVudC9wcm9ncmVzcy1ldmVudC1tb2NrXCI7XHJcbmltcG9ydCB7IEVNUFRZX1NUUklORywgVXVpZCB9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlsXCI7XHJcbmltcG9ydCB7IFhockJhc2UgfSBmcm9tIFwiLi94aHItYmFzZVwiO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVyc1V0aWwgfSBmcm9tIFwiLi4vdXRpbC9odHRwLWhlYWRlcnMudXRpbFwiO1xyXG5pbXBvcnQgeyBSb3V0ZU1vY2tDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnL3JvdXRlLW1vY2stY29uZmlnXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbiwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBEYXRhU3RvcmFnZSB9IGZyb20gXCIuLi9jb3JlL2RhdGEtc3RvcmFnZVwiO1xyXG5pbXBvcnQgeyBEYXRhU3RvcmFnZUJ1aWxkZXIgfSBmcm9tIFwiLi4vdXRpbC9kYXRhLXN0b3JhZ2UuYnVpbGRlclwiO1xyXG5pbXBvcnQgeyBIdHRwTW9ja0xvZ2dpbmdNZXRhZGF0YUJ1aWxkZXIgfSBmcm9tIFwiLi4vbG9nZ2luZy9odHRwLW1vY2stbG9nZ2luZy1tZXRhZGF0YS5idWlsZGVyXCI7XHJcbmltcG9ydCB7IEh0dHBNb2NrUmVzcG9uc2VEZWxheVV0aWwgfSBmcm9tIFwiLi4vdXRpbC9odHRwLW1vY2stcmVzcG9uc2UtZGVsYXkudXRpbFwiO1xyXG5pbXBvcnQgeyBSZXNwb25zZURlbGF5IH0gZnJvbSBcIi4uL2NvcmUvcmVzcG9uc2UtZGVsYXlcIjtcclxuXHJcbi8qKlxyXG4gKiBAcHJpdmF0ZVxyXG4gKiBJbnRlbmFsIFwib25yZWFkeXN0YXRlY2hhbmdlXCIgZXZlbnQuXHJcbiAqL1xyXG5jb25zdCBSRUFEWV9TVEFURV9DSEFOR0VfRVZFTlQ6IEV2ZW50ID0gbmV3IEV2ZW50KFwib25yZWFkeXN0YXRlY2hhbmdlXCIpO1xyXG5cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqL1xyXG5jb25zdCBFVlRfUFJPUFNfQ09ORklHOiBhbnkgPSAgeyB3cml0YWJsZTogZmFsc2UsIHZhbHVlOiB0aGlzIH07XHJcblxyXG4vKipcclxuICogQHByaXZhdGVcclxuICogQSB1dGlsaXR5IGNsYXNzIHVzZWQgYXMgZGVsZWdhdGUgb2YgYFhNTEh0dHBSZXF1ZXN0YCBmdW5jdGlvbmFsaXRpZXMgd2hlblxyXG4gKiBhIEhUVFAgcmVxdWVzdCBpcyBpbnRlcmNlcHRlZCBieSB0aGUgTW9ja2luZyBGcmFtZXdvcmsgLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIERlbGVnYXRlWGhyIGV4dGVuZHMgWGhyQmFzZSBpbXBsZW1lbnRzIFhoclByb3h5IHtcclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByb2dyZXNzaXZlIGRvd25sb2FkIGlzIGFjdGl2YXRlZCwgb3Igbm90LlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9wcm9ncmVzc2l2ZURvd25sb2FkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogVGhlIGNvbmZpZyBmb3IgdGhlIGludGVyY2VwdGVkIHJvdXRlLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9yb3V0ZUNvbmZpZzogUm91dGVNb2NrQ29uZmlnO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqIFxyXG4gICAgICogSW50ZXJuYWwgc3RvcmFnZSBmb3IgSFRUUCByZXNwb25zZSBgZGF0YWAuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX2RhdGFTdG9yYWdlOiBEYXRhU3RvcmFnZSA9IG51bGwgYXMgYW55OyBcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIHRoZSBIVFRQIHJlcXVlc3QgYG1ldGhvZGAuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX21ldGhvZDogdW5rbm93bjsgXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICogXHJcbiAgICAgKiBJbnRlcm5hbCBzdG9yYWdlIGZvciB0aGUgSFRUUCByZXF1ZXN0IFVSTC5cclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfdXJsOiB1bmtub3duOyBcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIHRoZSBIVFRQIHJlcXVlc3QgYHJlYWR5U3RhdGVgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9yZWFkeVN0YXRlOiBudW1iZXIgPSB0aGlzLlVOU0VOVDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIHRoZSBIVFRQIHJlcXVlc3QgYGhlYWRlcnNgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9yZXF1ZXN0SGVhZGVyczogSHR0cEhlYWRlcnMgPSBudWxsIGFzIGFueTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIHRoZSBIVFRQIHJlcXVlc3QgYHN0YXR1c2AuXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgX3N0YXR1czogbnVtYmVyID0gMDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKiBcclxuICAgICAqIEludGVybmFsIHN0b3JhZ2UgZm9yIHRoZSBIVFRQIHJlcXVlc3QgYHN0YXR1c1RleHRgLlxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zdGF0dXNUZXh0OiBzdHJpbmcgPSBFTVBUWV9TVFJJTkc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9sb2FkU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHJlc3BvbnNlIGJvZHkgY29udGVudC5cclxuICAgICAqXHJcbiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9yZXNwb25zZVxyXG4gICAgICovXHJcbiAgICBnZXQgcmVzcG9uc2UoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVN0b3JhZ2U/LmRhdGEgfHwgbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIG51bWVyaWNhbCBIVFRQIHN0YXR1cyBjb2RlIG9mIHRoZSBgWE1MSHR0cFJlcXVlc3RgIHJlc3BvbnNlLlxyXG4gICAgICpcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3N0YXR1c1xyXG4gICAgICovXHJcbiAgICBnZXQgc3RhdHVzKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N0YXR1cztcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgYSBzdHJpbmcgY29udGFpbmluZyB0aGUgcmVzcG9uc2Ugc3RhdHVzIG1lc3NhZ2UgYXMgcmV0dXJuZWQgYnkgdGhlIEhUVFAgc2VydmVyLlxyXG4gICAgICpcclxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L3N0YXR1c1RleHRcclxuICAgICAqL1xyXG4gICAgZ2V0IHN0YXR1c1RleHQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fc3RhdHVzVGV4dDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIHN0YXRlIHRoZSBgWE1MSHR0cFJlcXVlc3RgIGNsaWVudCBpcyBpbi5cclxuICAgICAqXHJcbiAgICAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9yZWFkeVN0YXRlXHJcbiAgICAgKi9cclxuICAgIGdldCByZWFkeVN0YXRlKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWR5U3RhdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBzZXJpYWxpemVkIFVSTCBvZiB0aGUgcmVzcG9uc2Ugb3IgdGhlIGVtcHR5IHN0cmluZyBpZiB0aGUgVVJMIGlzIGBudWxsYC4gXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VVUkxcclxuICAgICAqL1xyXG4gICAgZ2V0IHJlc3BvbnNlVVJMKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX3VybCBhcyBzdHJpbmc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSB0ZXh0IHJlY2VpdmVkIGZyb20gYSBzZXJ2ZXIgZm9sbG93aW5nIGEgcmVxdWVzdCBiZWluZyBzZW50LlxyXG4gICAgICpcclxuICAgICAqIFRocm93cyBhbiBgSW52YWxpZFN0YXRlRXJyb3JgIERPTUV4Y2VwdGlvbiBpZiByZXNwb25zZVR5cGUgaXMgbm90IHRoZSBlbXB0eSBzdHJpbmcgb3IgXCJ0ZXh0XCIuXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VUZXh0XHJcbiAgICAgKi9cclxuICAgIGdldCByZXNwb25zZVRleHQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVN0b3JhZ2U/LnN0cmluZ2lmaWVkRGF0YSB8fCBFTVBUWV9TVFJJTkc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiAgUmV0dXJucyBhbiBgWE1MSHR0cFJlcXVlc3RVcGxvYWRgIG9iamVjdCB0aGF0IGNhbiBiZSBvYnNlcnZlZCB0byBtb25pdG9yIGFuIHVwbG9hZCBwcm9ncmVzcy4gXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvdXBsb2FkXHJcbiAgICAgKi9cclxuICAgIGdldCB1cGxvYWQoKTogWE1MSHR0cFJlcXVlc3RVcGxvYWQge1xyXG4gICAgICAgIHJldHVybiBudWxsIGFzIGFueTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiAgUmV0dXJucyBhbiBhbiBlbnVtZXJhdGVkIHN0cmluZyB2YWx1ZSBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mIGRhdGEgY29udGFpbmVkIGluIHRoZSByZXNwb25zZS4gXHJcbiAgICAgKlxyXG4gICAgICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3QvcmVzcG9uc2VUeXBlXHJcbiAgICAgKi9cclxuICAgIHJlc3BvbnNlVHlwZTogWE1MSHR0cFJlcXVlc3RSZXNwb25zZVR5cGUgPSBFTVBUWV9TVFJJTkcgYXMgYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW5pdGlhbGl6ZXMgYSBuZXdseS1jcmVhdGVkIHJlcXVlc3QsIG9yIHJlLWluaXRpYWxpemVzIGFuIGV4aXN0aW5nIG9uZS5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIG1ldGhvZCBUaGUgSFRUUCByZXF1ZXN0IG1ldGhvZCB0byB1c2UsIHN1Y2ggYXMgYFwiR0VUXCJgLCBgXCJQT1NUXCJgLCBgXCJQVVRcImAsIGBcIkRFTEVURVwiYCxcclxuICAgICAqICAgICAgICAgICAgICAgZXRjLiBJZ25vcmVkIGZvciBub24tSFRUUChTKSBVUkxzLlxyXG4gICAgICogQHBhcmFtIHVybCBBIHN0cmluZyBvciBhbnkgb3RoZXIgb2JqZWN0IHdpdGggYSBzdHJpbmdpZmllciDigJQgaW5jbHVkaW5nIGEgVVJMIG9iamVjdCDigJRcclxuICAgICAqICAgICAgICAgICAgdGhhdCBwcm92aWRlcyB0aGUgVVJMIG9mIHRoZSByZXNvdXJjZSB0byBzZW5kIHRoZSByZXF1ZXN0IHRvLlxyXG4gICAgICovXHJcbiAgICBvcGVuKG1ldGhvZDogc3RyaW5nLCB1cmw6IHN0cmluZyB8IFVSTCk6IHZvaWQ7XHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIG9wZW4obWV0aG9kOiBzdHJpbmcsIHVybDogc3RyaW5nIHwgVVJMLCBhc3luYzogYm9vbGVhbiwgdXNlcm5hbWU/OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBwYXNzd29yZD86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB2b2lkO1xyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBvcGVuKG1ldGhvZDogdW5rbm93biwgdXJsOiB1bmtub3duLCBhc3luYz86IHVua25vd24sIHVzZXJuYW1lPzogdW5rbm93biwgcGFzc3dvcmQ/OiB1bmtub3duKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fbWV0aG9kID0gbWV0aG9kO1xyXG4gICAgICAgIHRoaXMuX3VybCA9IHVybDtcclxuICAgICAgICB0aGlzLnNldFJlYWR5U3RhdGUodGhpcy5PUEVORUQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWJvcnRzIHRoZSByZXF1ZXN0IGlmIGl0IGhhcyBhbHJlYWR5IGJlZW4gc2VudC4gV2hlbiBhIHJlcXVlc3QgaXMgYWJvcnRlZCwgaXRzIGByZWFkeVN0YXRlYFxyXG4gICAgICogaXMgY2hhbmdlZCB0byBgWE1MSHR0cFJlcXVlc3QuVU5TRU5UYCBhbmQgdGhlIHJlcXVlc3Qgc3RhdHVzIGNvZGUgaXMgc2V0IHRvIGAwYC5cclxuICAgICAqL1xyXG4gICAgYWJvcnQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fcmVhZHlTdGF0ZSA9IHRoaXMuVU5TRU5UO1xyXG4gICAgICAgIHRoaXMuX3N0YXR1cyA9IDA7XHJcbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoKFwiYWJvcnRcIik7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIGFsbCB0aGUgcmVzcG9uc2UgaGVhZGVycywgc2VwYXJhdGVkIGJ5IENSTEYsIGFzIGEgc3RyaW5nLCBvciByZXR1cm5zIGBudWxsYFxyXG4gICAgICogaWYgbm8gcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQuXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIEFsbCB0aGUgcmVzcG9uc2UgaGVhZGVycywgc2VwYXJhdGVkIGJ5IENSTEYsIGFzIGEgc3RyaW5nLCBvciByZXR1cm5zIGBudWxsYFxyXG4gICAgICogICAgICAgICAgaWYgbm8gcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQuXHJcbiAgICAgKi9cclxuICAgIGdldEFsbFJlc3BvbnNlSGVhZGVycygpOiBhbnkge1xyXG4gICAgICAgIGlmICh0aGlzLl9yZWFkeVN0YXRlIDwgdGhpcy5IRUFERVJTX1JFQ0VJVkVEKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBjb25zdCByZXNwSGVhZGVyczogSHR0cEhlYWRlcnMgfCB1bmRlZmluZWQgPSB0aGlzLl9kYXRhU3RvcmFnZT8uaHR0cFJlc3BvbnNlLmhlYWRlcnM7XHJcbiAgICAgICAgaWYgKHJlc3BIZWFkZXJzKSByZXR1cm4gSHR0cEhlYWRlcnNVdGlsLnN0cmluZ2lmeShyZXNwSGVhZGVycyk7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBTZW5kcyB0aGUgcmVxdWVzdCB0byB0aGUgc2VydmVyLlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0gYm9keSBBIGJvZHkgb2YgZGF0YSB0byBiZSBzZW50IGluIHRoZSBYSFIgcmVxdWVzdC5cclxuICAgICAqL1xyXG4gICAgc2VuZChib2R5PzogRG9jdW1lbnQgfCBYTUxIdHRwUmVxdWVzdEJvZHlJbml0IHwgbnVsbCB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHN0YXJ0OiBudW1iZXIgPSB0aGlzLm5vdygpO1xyXG4gICAgICAgIGNvbnN0IHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4gPSB0aGlzLmJ1aWxkSHR0cFJlcXVlc3QoYm9keSk7XHJcbiAgICAgICAgY29uc3QgcmM6IFJvdXRlTW9ja0NvbmZpZyA9IHRoaXMuX3JvdXRlQ29uZmlnO1xyXG4gICAgICAgIGNvbnN0IGh0dHBSZXNwb25zZU1vY2s6IEh0dHBSZXNwb25zZU1vY2sgPSAocmMubWV0aG9kQ29uZmlnIGFzIGFueSkuZGF0YShyZXF1ZXN0LCByYy5wYXJhbWV0ZXJzKTtcclxuICAgICAgICBjb25zdCByZXNwb25zZURlbGF5OiBSZXNwb25zZURlbGF5ID0gSHR0cE1vY2tSZXNwb25zZURlbGF5VXRpbC5nZXRSZXNwb25zZURlbGF5KGh0dHBSZXNwb25zZU1vY2suZGVsYXkgfHwgMCk7XHJcbiAgICAgICAgY29uc3QgdGltZXI6IG51bWJlciA9IHJlc3BvbnNlRGVsYXkuZHVyYXRpb247XHJcbiAgICAgICAgY29uc3QgcmVxdWVzdE1ldGFkYXRhOiBIdHRwTW9ja1JlcXVlc3RNZXRhZGF0YSA9IHtcclxuICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LFxyXG4gICAgICAgICAgICBzdGFsbGVkOiByZXNwb25zZURlbGF5LnN0YWxsZWQsXHJcbiAgICAgICAgICAgIGR1cmF0aW9uOiB0aW1lcixcclxuICAgICAgICAgICAgdXJsOiBuZXcgVVJMKHRoaXMuX3VybCBhcyBhbnkpLFxyXG4gICAgICAgICAgICBpZDogVXVpZC5idWlsZCgpXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBwcmVmZXRjaE1ldGFkYXRhOiBIdHRwTW9ja0xvZ2dpbmdQcmVmZXRjaE1ldGFkYXRhID0ge1xyXG4gICAgICAgICAgICByZXF1ZXN0OiByZXF1ZXN0LFxyXG4gICAgICAgICAgICByZXF1ZXN0TWV0YWRhdGE6IHJlcXVlc3RNZXRhZGF0YVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5fbG9nZ2VyLnByZWZldGNoKHByZWZldGNoTWV0YWRhdGEpO1xyXG4gICAgICAgIHRoaXMuX2xvYWRTdWJzY3JpcHRpb24gPSB0aGlzLmxvYWREYXRhKGh0dHBSZXNwb25zZU1vY2spLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0YVN0b3JhZ2UoaHR0cFJlc3BvbnNlTW9jaywgcmVxdWVzdE1ldGFkYXRhLCBkYXRhKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yOiBIdHRwTW9ja0Vycm9yIHwgbnVsbCA9IHRoaXMuX2RhdGFTdG9yYWdlLmh0dHBSZXNwb25zZS5lcnJvcjtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRSZWFkeVN0YXRlKHRoaXMuSEVBREVSU19SRUNFSVZFRCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yKSByZXR1cm4gdGhpcy5vbkVycm9yKHJlcXVlc3QsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFJlYWR5U3RhdGUodGhpcy5MT0FESU5HKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXNwb25zZTogSHR0cFJlc3BvbnNlTW9jayA9IHRoaXMuX2RhdGFTdG9yYWdlLmh0dHBSZXNwb25zZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3Byb2dyZXNzaXZlRG93bmxvYWQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhdHVzVGV4dCA9IHJlc3BvbnNlLnN0YXR1c1RleHQgfHwgRU1QVFlfU1RSSU5HO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0dXMgPSByZXNwb25zZS5zdGF0dXMgfHwgMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMub25Mb2FkQ29tcGxldGUocmVxdWVzdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZG9Qcm9ncmVzc2l2ZURvd25sb2FkKHJlcXVlc3QpO1xyXG4gICAgICAgICAgICAgICAgfSwgdGltZXIpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGFTdG9yYWdlKGh0dHBSZXNwb25zZU1vY2ssIHJlcXVlc3RNZXRhZGF0YSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uRXJyb3IocmVxdWVzdCwgZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2V0cyB0aGUgdmFsdWUgb2YgYW4gSFRUUCByZXF1ZXN0IGhlYWRlci5cclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIGhlYWRlciB3aG9zZSB2YWx1ZSBpcyB0byBiZSBzZXQuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldCBhcyB0aGUgYm9keSBvZiB0aGUgaGVhZGVyLlxyXG4gICAgICovXHJcbiAgICBzZXRSZXF1ZXN0SGVhZGVyKG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JlcXVlc3RIZWFkZXJzID0gdGhpcy5fcmVxdWVzdEhlYWRlcnMuc2V0KG5hbWUsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlIFxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihyb3V0ZUNvbmZpZzogUm91dGVNb2NrQ29uZmlnLFxyXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nZ2VyOiBIdHRwTW9ja0xvZ2dpbmdTZXJ2aWNlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLl9yb3V0ZUNvbmZpZyA9IHJvdXRlQ29uZmlnO1xyXG4gICAgICAgIC8vIHJvdXRlQ29uZmlnLm1ldGhvZENvbmZpZy5kb3dubG9hZE1hbmFnZXJcclxuICAgICAgICB0aGlzLl9wcm9ncmVzc2l2ZURvd25sb2FkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZSBcclxuICAgICAqIEludGVybmFsbHkgdXNlZCBieSB0aGUgZnJhbWV3b3JrIHRvIGRlbGV0ZSBhIGBEZWxlZ2F0ZVhocmAgaW5zdGFuY2UuXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3JvdXRlQ29uZmlnID0gbnVsbCBhcyBhbnk7XHJcbiAgICAgICAgdGhpcy5fcmVxdWVzdEhlYWRlcnMgPSBudWxsIGFzIGFueTtcclxuICAgICAgICB0aGlzLl9kYXRhU3RvcmFnZSA9IG51bGwgYXMgYW55O1xyXG4gICAgICAgIGlmICh0aGlzLl9sb2FkU3Vic2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2xvYWRTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgICAgICAgICAgdGhpcy5fbG9hZFN1YnNjcmlwdGlvbiA9IG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGUgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgZG9Qcm9ncmVzc2l2ZURvd25sb2FkKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB0b3RhbDogbnVtYmVyID0gdGhpcy5fZGF0YVN0b3JhZ2UudG90YWw7XHJcbiAgICAgICAgaWYgKHRvdGFsIDw9IDIwMCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJbQW5ndWxhciBUb29sYm94XTogQm9keSBjb250ZW50IGlzIHRvbyBzbWFsbCBmb3IgZW11bGF0aW5nIHByb2dyZXNzaXZlIGRvd25sb2FkISBNaW5pbXVtIHNpemUgaXMgMjAwIG9jdGV0cy5cIik7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9uTG9hZENvbXBsZXRlKHJlcXVlc3QpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBUT0RPOiBhbWVsaW9yYXRlIHRoZSBmb2xsb3dpbmcgcHJvY2VzczpcclxuICAgICAgICBjb25zdCBzZWxmOiBEZWxlZ2F0ZVhociA9IHRoaXM7XHJcbiAgICAgICAgY29uc3QgY2h1bmNrU2l6ZTogbnVtYmVyID0gTWF0aC5mbG9vcih0b3RhbCAvIDEwKTtcclxuICAgICAgICBsZXQgY3Vyc29yOiBudW1iZXIgPSAwO1xyXG4gICAgICAgIHRoaXMuX3N0YXR1c1RleHQgPSBcIlBhcnRpYWwgQ29udGVudFwiO1xyXG4gICAgICAgIHRoaXMuX3N0YXR1cyA9IEh0dHBTdGF0dXNDb2RlLlBhcnRpYWxDb250ZW50O1xyXG4gICAgICAgIGNvbnN0IGlkeCA9IHNldEludGVydmFsKCgpPT4ge1xyXG4gICAgICAgICAgICBjdXJzb3IgKz0gY2h1bmNrU2l6ZTtcclxuICAgICAgICAgICAgaWYgKGN1cnNvciA+IHRvdGFsKSB7XHJcbiAgICAgICAgICAgICAgICBjdXJzb3IgPSB0b3RhbDtcclxuICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaWR4KTtcclxuICAgICAgICAgICAgICAgIHNlbGYub25Mb2FkQ29tcGxldGUocmVxdWVzdCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9kYXRhU3RvcmFnZS5sb2FkZWQgPSBjdXJzb3I7XHJcbiAgICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoUHJvZ3Jlc3NFdmVudCgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZpbmFsaXplUmVxdWVzdE1ldGFkYXRhKCk6IEh0dHBNb2NrUmVxdWVzdE1ldGFkYXRhIHtcclxuICAgICAgICBjb25zdCBkczogRGF0YVN0b3JhZ2UgPSB0aGlzLl9kYXRhU3RvcmFnZTtcclxuICAgICAgICBjb25zdCBtZXRhZGF0YTogSHR0cE1vY2tSZXF1ZXN0TWV0YWRhdGEgPSBkcy5yZXF1ZXN0TWV0YWRhdGE7XHJcbiAgICAgICAgY29uc3QgZHVyYXRpb246IG51bWJlciA9IHRoaXMubm93KCkgLSBtZXRhZGF0YS5zdGFydDtcclxuICAgICAgICBpZiAoZHVyYXRpb24gPiBtZXRhZGF0YS5kdXJhdGlvbikgbWV0YWRhdGEuZHVyYXRpb24gPSBkdXJhdGlvbjtcclxuICAgICAgICByZXR1cm4gbWV0YWRhdGE7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIG9uTG9hZENvbXBsZXRlKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9kYXRhU3RvcmFnZS5sb2FkZWQgPSB0aGlzLl9kYXRhU3RvcmFnZS50b3RhbDtcclxuICAgICAgICB0aGlzLnNldFJlYWR5U3RhdGUodGhpcy5ET05FKTtcclxuICAgICAgICB0aGlzLmRpc3BhdGNoUHJvZ3Jlc3NFdmVudChcImxvYWRcIik7XHJcbiAgICAgICAgdGhpcy5fbG9nZ2VyLmluZm8odGhpcy5idWlsZE1ldGFkYXRhKHJlcXVlc3QpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgb25FcnJvcihyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBlcnJvcjogSHR0cE1vY2tFcnJvcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX3N0YXR1cyA9IGVycm9yLnN0YXR1cztcclxuICAgICAgICB0aGlzLl9zdGF0dXNUZXh0ID0gZXJyb3Iuc3RhdHVzVGV4dDtcclxuICAgICAgICB0aGlzLnNldFJlYWR5U3RhdGUodGhpcy5ET05FKTtcclxuICAgICAgICB0aGlzLmRpc3BhdGNoUHJvZ3Jlc3NFdmVudChcImVycm9yXCIpO1xyXG4gICAgICAgIHRoaXMuX2xvZ2dlci5lcnJvcih0aGlzLmJ1aWxkTWV0YWRhdGEocmVxdWVzdCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBidWlsZE1ldGFkYXRhKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4pOiBIdHRwTW9ja0xvZ2dpbmdNZXRhZGF0YSB7XHJcbiAgICAgICAgcmV0dXJuIEh0dHBNb2NrTG9nZ2luZ01ldGFkYXRhQnVpbGRlci5idWlsZCh0aGlzLCByZXF1ZXN0LCB0aGlzLmZpbmFsaXplUmVxdWVzdE1ldGFkYXRhKCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGVcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBldmVudERpc3BhdGNoKHR5cGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50OiBFdmVudCA9IG5ldyBFdmVudCh0eXBlKTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICd0YXJnZXQnLCBFVlRfUFJPUFNfQ09ORklHKTtcclxuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXZlbnQsICdjdXJyZW50VGFyZ2V0JywgRVZUX1BST1BTX0NPTkZJRyk7XHJcbiAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBwcml2YXRlIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIGRpc3BhdGNoUHJvZ3Jlc3NFdmVudCh0eXBlOiBzdHJpbmcgPSBcInByb2dyZXNzXCIpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkOiBhbnkgPSB0aGlzLl9kYXRhU3RvcmFnZTtcclxuICAgICAgICBjb25zdCBldmVudDogUHJvZ3Jlc3NFdmVudE1vY2sgPSBuZXcgUHJvZ3Jlc3NFdmVudE1vY2sodHlwZSk7XHJcbiAgICAgICAgZXZlbnQubG9hZGVkID0gZC5sb2FkZWQ7XHJcbiAgICAgICAgZXZlbnQudG90YWwgPSBkLnRvdGFsO1xyXG4gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChldmVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXRSZWFkeVN0YXRlKHN0YXRlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9yZWFkeVN0YXRlID0gc3RhdGU7XHJcbiAgICAgICAgY29uc3QgZXZlbnQ6IGFueSA9IHRoaXMub25yZWFkeXN0YXRlY2hhbmdlO1xyXG4gICAgICAgIGlmIChldmVudCkgZXZlbnQuY2FsbCh0aGlzLCBSRUFEWV9TVEFURV9DSEFOR0VfRVZFTlQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHByaXZhdGUgXHJcbiAgICAgKi9cclxuICAgIHByaXZhdGUgbG9hZERhdGEoaHR0cFJlc3BvbnNlTW9jazogSHR0cFJlc3BvbnNlTW9jayk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgcmVzcG9uc2VCb2R5OiBhbnkgfCBPYnNlcnZhYmxlPGFueT4gPSBodHRwUmVzcG9uc2VNb2NrLmJvZHk7XHJcbiAgICAgICAgcmV0dXJuIChyZXNwb25zZUJvZHkgaW5zdGFuY2VvZiBPYnNlcnZhYmxlKSA/IHJlc3BvbnNlQm9keSA6IG9mKHJlc3BvbnNlQm9keSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBzZXREYXRhU3RvcmFnZShyZXNwb25zZU1vY2s6IEh0dHBSZXNwb25zZU1vY2ssIHJlcXVlc3RNZXRhZGF0YTogSHR0cE1vY2tSZXF1ZXN0TWV0YWRhdGEsIGRhdGE6IGFueSA9IG51bGwpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9kYXRhU3RvcmFnZSA9IERhdGFTdG9yYWdlQnVpbGRlci5idWlsZERhdGFTdG9yYWdlKHJlc3BvbnNlTW9jaywgZGF0YSwgcmVxdWVzdE1ldGFkYXRhKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBidWlsZEh0dHBSZXF1ZXN0KGJvZHk6IGFueSk6IEh0dHBSZXF1ZXN0PGFueT4ge1xyXG4gICAgICAgIGxldCBwYXJhbXM6IEh0dHBQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgICAgIGNvbnN0IGl0OiBJdGVyYWJsZUl0ZXJhdG9yPFtzdHJpbmcsIHN0cmluZ10+ID0gKHRoaXMuX3JvdXRlQ29uZmlnLnNlYXJjaFBhcmFtcyBhcyBhbnkpLmVudHJpZXMoKTtcclxuICAgICAgICBmb3IgKGNvbnN0IHBhaXIgb2YgaXQpIHBhcmFtcyA9IHBhcmFtcy5zZXQocGFpclswXSwgcGFpclsxXSk7XHJcbiAgICAgICAgY29uc3QgaW5pdDogYW55ID0ge1xyXG4gICAgICAgICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgICAgICAgICAgaGVhZGVyczogdGhpcy5fcmVxdWVzdEhlYWRlcnMsXHJcbiAgICAgICAgICAgIHdpdGhDcmVkZW50aWFsczogdGhpcy53aXRoQ3JlZGVudGlhbHMsXHJcbiAgICAgICAgICAgIHJlc3BvbnNlVHlwZTogdGhpcy5yZXNwb25zZVR5cGUsXHJcbiAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiB0aGlzLmhhc0V2ZW50TGlzdGVuZXIoXCJwcm9ncmVzc1wiKVxyXG4gICAgICAgICAgICAvLyBjb250ZXh0LCB0cmFuc2ZlckNhY2hlOiBub3QgdXNlZCBieSBBbmd1bGFyIGF0IHRoaXMgbGV2ZWwgb2YgQVBJXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gbmV3IEh0dHBSZXF1ZXN0PGFueT4odGhpcy5fbWV0aG9kIGFzIHN0cmluZywgdGhpcy5fdXJsIGFzIGFueSwgYm9keSwgaW5pdCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBub3coKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gRGF0ZS5ub3coKTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -15,15 +15,16 @@ export class XhrProxyFactoryImpl extends XhrFactory {
|
|
|
15
15
|
/**
|
|
16
16
|
* @private
|
|
17
17
|
*/
|
|
18
|
-
constructor(_httpMockService) {
|
|
18
|
+
constructor(_httpMockService, _logger) {
|
|
19
19
|
super();
|
|
20
20
|
this._httpMockService = _httpMockService;
|
|
21
|
+
this._logger = _logger;
|
|
21
22
|
}
|
|
22
23
|
/**
|
|
23
24
|
* @private
|
|
24
25
|
*/
|
|
25
26
|
build() {
|
|
26
|
-
return new XhrProxyImpl(this._httpMockService);
|
|
27
|
+
return new XhrProxyImpl(this._httpMockService, this._logger);
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
30
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NrLWZhY3RvcnkuaW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItdG9vbGJveC9zcmMvbGliL2ZyYW1ld29yay9tb2NrL2h0dHAveGhyL2h0dHAtbW9jay1mYWN0b3J5LmltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdoRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsVUFBVTtJQUUvQzs7T0FFRztJQUNILFlBQW9CLGdCQUFpQyxFQUNqQyxPQUErQjtRQUMvQyxLQUFLLEVBQUUsQ0FBQztRQUZRLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBaUI7UUFDakMsWUFBTyxHQUFQLE9BQU8sQ0FBd0I7SUFFbkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSztRQUNSLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNqRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IFBhc2NhbCBFQ0hFTUFOTi4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW5cclxuICogdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL3Bhc2NhbGVjaGVtYW5uLmNvbS9hbmd1bGFyLXRvb2xib3gvcmVzb3VyY2VzL2xpY2Vuc2VcclxuICovXHJcblxyXG5pbXBvcnQgeyBYaHJGYWN0b3J5IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5pbXBvcnQgeyBIdHRwTW9ja1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWwvc2VydmljZS9tb2NrL2h0dHAvaHR0cC1tb2NrLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgWGhyUHJveHlJbXBsIH0gZnJvbSBcIi4veGhyLXByb3h5LWltcGxcIjtcclxuaW1wb3J0IHsgSHR0cE1vY2tMb2dnaW5nU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9tb2RlbFwiO1xyXG5cclxuLyoqXHJcbiAqIEBwcml2YXRlXHJcbiAqIFRoZSBjb25jcmV0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYFhockZhY3RvcnlgIGludGVyZmFjZS5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBYaHJQcm94eUZhY3RvcnlJbXBsIGV4dGVuZHMgWGhyRmFjdG9yeSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9odHRwTW9ja1NlcnZpY2U6IEh0dHBNb2NrU2VydmljZSxcclxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2xvZ2dlcjogSHR0cE1vY2tMb2dnaW5nU2VydmljZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAcHJpdmF0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYnVpbGQoKTogWE1MSHR0cFJlcXVlc3Qge1xyXG4gICAgICAgIHJldHVybiBuZXcgWGhyUHJveHlJbXBsKHRoaXMuX2h0dHBNb2NrU2VydmljZSwgdGhpcy5fbG9nZ2VyKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -8,12 +8,13 @@
|
|
|
8
8
|
import { inject } from "@angular/core";
|
|
9
9
|
import { HttpMockService } from "../../../../model/service/mock/http/http-mock.service";
|
|
10
10
|
import { XhrProxyFactoryImpl } from "./http-mock-factory.impl";
|
|
11
|
+
import { HttpMockLoggingService } from "../../../../model";
|
|
11
12
|
/**
|
|
12
13
|
* A factory function that creates and returns a new `XhrFactory` object.
|
|
13
14
|
*
|
|
14
15
|
* @returns A new `XhrFactory` object.
|
|
15
16
|
*/
|
|
16
17
|
export const httpMockFactory = () => {
|
|
17
|
-
return new XhrProxyFactoryImpl(inject(HttpMockService));
|
|
18
|
+
return new XhrProxyFactoryImpl(inject(HttpMockService), inject(HttpMockLoggingService));
|
|
18
19
|
};
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1tb2NrLWZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLXRvb2xib3gvc3JjL2xpYi9mcmFtZXdvcmsvbW9jay9odHRwL3hoci9odHRwLW1vY2stZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUzRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLEdBQUUsRUFBRTtJQUMvQixPQUFPLElBQUksbUJBQW1CLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUM7QUFDNUYsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIEBsaWNlbnNlXHJcbiAqIENvcHlyaWdodCBQYXNjYWwgRUNIRU1BTk4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXHJcbiAqXHJcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluXHJcbiAqIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9wYXNjYWxlY2hlbWFubi5jb20vYW5ndWxhci10b29sYm94L3Jlc291cmNlcy9saWNlbnNlXHJcbiAqL1xyXG5cclxuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSHR0cE1vY2tTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL21vZGVsL3NlcnZpY2UvbW9jay9odHRwL2h0dHAtbW9jay5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFhoclByb3h5RmFjdG9yeUltcGwgfSBmcm9tIFwiLi9odHRwLW1vY2stZmFjdG9yeS5pbXBsXCI7XHJcbmltcG9ydCB7IEh0dHBNb2NrTG9nZ2luZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vbW9kZWxcIjtcclxuXHJcbi8qKlxyXG4gKiBBIGZhY3RvcnkgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIGFuZCByZXR1cm5zIGEgbmV3IGBYaHJGYWN0b3J5YCBvYmplY3QuXHJcbiAqIFxyXG4gKiBAcmV0dXJucyBBIG5ldyBgWGhyRmFjdG9yeWAgb2JqZWN0LlxyXG4gKi9cclxuZXhwb3J0IGNvbnN0IGh0dHBNb2NrRmFjdG9yeSA9ICgpPT4ge1xyXG4gICAgcmV0dXJuIG5ldyBYaHJQcm94eUZhY3RvcnlJbXBsKGluamVjdChIdHRwTW9ja1NlcnZpY2UpLCBpbmplY3QoSHR0cE1vY2tMb2dnaW5nU2VydmljZSkpO1xyXG59XHJcbiJdfQ==
|