@angular/platform-browser 19.0.0-next.1 → 19.0.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/animations/async/index.d.ts +10 -1
  2. package/animations/index.d.ts +1 -1
  3. package/fesm2022/animations/async.mjs +25 -9
  4. package/fesm2022/animations/async.mjs.map +1 -1
  5. package/fesm2022/animations.mjs +12 -12
  6. package/fesm2022/platform-browser.mjs +49 -49
  7. package/fesm2022/platform-browser.mjs.map +1 -1
  8. package/fesm2022/testing.mjs +5 -5
  9. package/index.d.ts +1 -1
  10. package/package.json +4 -12
  11. package/testing/index.d.ts +1 -1
  12. package/esm2022/animations/animations.mjs +0 -5
  13. package/esm2022/animations/async/async.mjs +0 -5
  14. package/esm2022/animations/async/index.mjs +0 -13
  15. package/esm2022/animations/async/public_api.mjs +0 -14
  16. package/esm2022/animations/async/src/async-animations.mjs +0 -15
  17. package/esm2022/animations/async/src/async_animation_renderer.mjs +0 -207
  18. package/esm2022/animations/async/src/private_export.mjs +0 -9
  19. package/esm2022/animations/async/src/providers.mjs +0 -55
  20. package/esm2022/animations/index.mjs +0 -13
  21. package/esm2022/animations/public_api.mjs +0 -14
  22. package/esm2022/animations/src/animations.mjs +0 -16
  23. package/esm2022/animations/src/module.mjs +0 -123
  24. package/esm2022/animations/src/private_export.mjs +0 -9
  25. package/esm2022/animations/src/providers.mjs +0 -66
  26. package/esm2022/index.mjs +0 -13
  27. package/esm2022/platform-browser.mjs +0 -5
  28. package/esm2022/public_api.mjs +0 -15
  29. package/esm2022/src/browser/browser_adapter.mjs +0 -86
  30. package/esm2022/src/browser/generic_browser_adapter.mjs +0 -21
  31. package/esm2022/src/browser/meta.mjs +0 -176
  32. package/esm2022/src/browser/testability.mjs +0 -57
  33. package/esm2022/src/browser/title.mjs +0 -48
  34. package/esm2022/src/browser/tools/common_tools.mjs +0 -63
  35. package/esm2022/src/browser/tools/tools.mjs +0 -36
  36. package/esm2022/src/browser/xhr.mjs +0 -16
  37. package/esm2022/src/browser.mjs +0 -241
  38. package/esm2022/src/dom/debug/by.mjs +0 -61
  39. package/esm2022/src/dom/dom_renderer.mjs +0 -381
  40. package/esm2022/src/dom/events/dom_events.mjs +0 -37
  41. package/esm2022/src/dom/events/event_delegation.mjs +0 -37
  42. package/esm2022/src/dom/events/event_manager.mjs +0 -91
  43. package/esm2022/src/dom/events/hammer_gestures.mjs +0 -266
  44. package/esm2022/src/dom/events/key_events.mjs +0 -183
  45. package/esm2022/src/dom/shared_styles_host.mjs +0 -161
  46. package/esm2022/src/dom/util.mjs +0 -26
  47. package/esm2022/src/errors.mjs +0 -2
  48. package/esm2022/src/hydration.mjs +0 -183
  49. package/esm2022/src/platform-browser.mjs +0 -20
  50. package/esm2022/src/private_export.mjs +0 -18
  51. package/esm2022/src/security/dom_sanitization_service.mjs +0 -119
  52. package/esm2022/src/version.mjs +0 -18
  53. package/esm2022/testing/index.mjs +0 -13
  54. package/esm2022/testing/public_api.mjs +0 -15
  55. package/esm2022/testing/src/browser.mjs +0 -52
  56. package/esm2022/testing/src/browser_util.mjs +0 -130
  57. package/esm2022/testing/src/matchers.mjs +0 -146
  58. package/esm2022/testing/src/testing.mjs +0 -14
  59. package/esm2022/testing/testing.mjs +0 -5
@@ -1,161 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { DOCUMENT, isPlatformServer } from '@angular/common';
9
- import { APP_ID, CSP_NONCE, Inject, Injectable, Optional, PLATFORM_ID, } from '@angular/core';
10
- import * as i0 from "@angular/core";
11
- /** The style elements attribute name used to set value of `APP_ID` token. */
12
- const APP_ID_ATTRIBUTE_NAME = 'ng-app-id';
13
- export class SharedStylesHost {
14
- constructor(doc, appId, nonce, platformId = {}) {
15
- this.doc = doc;
16
- this.appId = appId;
17
- this.nonce = nonce;
18
- this.platformId = platformId;
19
- // Maps all registered host nodes to a list of style nodes that have been added to the host node.
20
- this.styleRef = new Map();
21
- this.hostNodes = new Set();
22
- this.styleNodesInDOM = this.collectServerRenderedStyles();
23
- this.platformIsServer = isPlatformServer(platformId);
24
- this.resetHostNodes();
25
- }
26
- addStyles(styles) {
27
- for (const style of styles) {
28
- const usageCount = this.changeUsageCount(style, 1);
29
- if (usageCount === 1) {
30
- this.onStyleAdded(style);
31
- }
32
- }
33
- }
34
- removeStyles(styles) {
35
- for (const style of styles) {
36
- const usageCount = this.changeUsageCount(style, -1);
37
- if (usageCount <= 0) {
38
- this.onStyleRemoved(style);
39
- }
40
- }
41
- }
42
- ngOnDestroy() {
43
- const styleNodesInDOM = this.styleNodesInDOM;
44
- if (styleNodesInDOM) {
45
- styleNodesInDOM.forEach((node) => node.remove());
46
- styleNodesInDOM.clear();
47
- }
48
- for (const style of this.getAllStyles()) {
49
- this.onStyleRemoved(style);
50
- }
51
- this.resetHostNodes();
52
- }
53
- addHost(hostNode) {
54
- this.hostNodes.add(hostNode);
55
- for (const style of this.getAllStyles()) {
56
- this.addStyleToHost(hostNode, style);
57
- }
58
- }
59
- removeHost(hostNode) {
60
- this.hostNodes.delete(hostNode);
61
- }
62
- getAllStyles() {
63
- return this.styleRef.keys();
64
- }
65
- onStyleAdded(style) {
66
- for (const host of this.hostNodes) {
67
- this.addStyleToHost(host, style);
68
- }
69
- }
70
- onStyleRemoved(style) {
71
- const styleRef = this.styleRef;
72
- styleRef.get(style)?.elements?.forEach((node) => node.remove());
73
- styleRef.delete(style);
74
- }
75
- collectServerRenderedStyles() {
76
- const styles = this.doc.head?.querySelectorAll(`style[${APP_ID_ATTRIBUTE_NAME}="${this.appId}"]`);
77
- if (styles?.length) {
78
- const styleMap = new Map();
79
- styles.forEach((style) => {
80
- if (style.textContent != null) {
81
- styleMap.set(style.textContent, style);
82
- }
83
- });
84
- return styleMap;
85
- }
86
- return null;
87
- }
88
- changeUsageCount(style, delta) {
89
- const map = this.styleRef;
90
- if (map.has(style)) {
91
- const styleRefValue = map.get(style);
92
- styleRefValue.usage += delta;
93
- return styleRefValue.usage;
94
- }
95
- map.set(style, { usage: delta, elements: [] });
96
- return delta;
97
- }
98
- getStyleElement(host, style) {
99
- const styleNodesInDOM = this.styleNodesInDOM;
100
- const styleEl = styleNodesInDOM?.get(style);
101
- if (styleEl?.parentNode === host) {
102
- // `styleNodesInDOM` cannot be undefined due to the above `styleNodesInDOM?.get`.
103
- styleNodesInDOM.delete(style);
104
- styleEl.removeAttribute(APP_ID_ATTRIBUTE_NAME);
105
- if (typeof ngDevMode === 'undefined' || ngDevMode) {
106
- // This attribute is solely used for debugging purposes.
107
- styleEl.setAttribute('ng-style-reused', '');
108
- }
109
- return styleEl;
110
- }
111
- else {
112
- const styleEl = this.doc.createElement('style');
113
- if (this.nonce) {
114
- styleEl.setAttribute('nonce', this.nonce);
115
- }
116
- styleEl.textContent = style;
117
- if (this.platformIsServer) {
118
- styleEl.setAttribute(APP_ID_ATTRIBUTE_NAME, this.appId);
119
- }
120
- host.appendChild(styleEl);
121
- return styleEl;
122
- }
123
- }
124
- addStyleToHost(host, style) {
125
- const styleEl = this.getStyleElement(host, style);
126
- const styleRef = this.styleRef;
127
- const styleElRef = styleRef.get(style)?.elements;
128
- if (styleElRef) {
129
- styleElRef.push(styleEl);
130
- }
131
- else {
132
- styleRef.set(style, { elements: [styleEl], usage: 1 });
133
- }
134
- }
135
- resetHostNodes() {
136
- const hostNodes = this.hostNodes;
137
- hostNodes.clear();
138
- // Re-add the head element back since this is the default host.
139
- hostNodes.add(this.doc.head);
140
- }
141
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: SharedStylesHost, deps: [{ token: DOCUMENT }, { token: APP_ID }, { token: CSP_NONCE, optional: true }, { token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
142
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: SharedStylesHost }); }
143
- }
144
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: SharedStylesHost, decorators: [{
145
- type: Injectable
146
- }], ctorParameters: () => [{ type: Document, decorators: [{
147
- type: Inject,
148
- args: [DOCUMENT]
149
- }] }, { type: undefined, decorators: [{
150
- type: Inject,
151
- args: [APP_ID]
152
- }] }, { type: undefined, decorators: [{
153
- type: Inject,
154
- args: [CSP_NONCE]
155
- }, {
156
- type: Optional
157
- }] }, { type: undefined, decorators: [{
158
- type: Inject,
159
- args: [PLATFORM_ID]
160
- }] }] });
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhcmVkX3N0eWxlc19ob3N0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0tYnJvd3Nlci9zcmMvZG9tL3NoYXJlZF9zdHlsZXNfaG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0QsT0FBTyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsTUFBTSxFQUNOLFVBQVUsRUFFVixRQUFRLEVBQ1IsV0FBVyxHQUNaLE1BQU0sZUFBZSxDQUFDOztBQUV2Qiw2RUFBNkU7QUFDN0UsTUFBTSxxQkFBcUIsR0FBRyxXQUFXLENBQUM7QUFHMUMsTUFBTSxPQUFPLGdCQUFnQjtJQWEzQixZQUNxQyxHQUFhLEVBQ2YsS0FBYSxFQUNQLEtBQXFCLEVBQzlCLGFBQXFCLEVBQUU7UUFIbEIsUUFBRyxHQUFILEdBQUcsQ0FBVTtRQUNmLFVBQUssR0FBTCxLQUFLLENBQVE7UUFDUCxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUFhO1FBaEJ2RCxpR0FBaUc7UUFDaEYsYUFBUSxHQUFHLElBQUksR0FBRyxFQU1oQyxDQUFDO1FBQ2EsY0FBUyxHQUFHLElBQUksR0FBRyxFQUFRLENBQUM7UUFVM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsQ0FBQztRQUMxRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTLENBQUMsTUFBZ0I7UUFDeEIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMzQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBRW5ELElBQUksVUFBVSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFnQjtRQUMzQixLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzNCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVwRCxJQUFJLFVBQVUsSUFBSSxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM3QyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BCLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ2pELGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUMxQixDQUFDO1FBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUN4QyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxRQUFjO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdCLEtBQUssTUFBTSxLQUFLLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsUUFBYztRQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRU8sWUFBWTtRQUNsQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFhO1FBQ2hDLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLEtBQWE7UUFDbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMvQixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxnQkFBZ0IsQ0FDNUMsU0FBUyxxQkFBcUIsS0FBSyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQ2xELENBQUM7UUFFRixJQUFJLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNuQixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBNEIsQ0FBQztZQUVyRCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ3ZCLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFDOUIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFFSCxPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsS0FBYSxFQUFFLEtBQWE7UUFDbkQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUMxQixJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQixNQUFNLGFBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBRSxDQUFDO1lBQ3RDLGFBQWEsQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDO1lBRTdCLE9BQU8sYUFBYSxDQUFDLEtBQUssQ0FBQztRQUM3QixDQUFDO1FBRUQsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLEVBQUMsQ0FBQyxDQUFDO1FBQzdDLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLGVBQWUsQ0FBQyxJQUFVLEVBQUUsS0FBYTtRQUMvQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzdDLE1BQU0sT0FBTyxHQUFHLGVBQWUsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUMsSUFBSSxPQUFPLEVBQUUsVUFBVSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2pDLGlGQUFpRjtZQUNqRixlQUFnQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUvQixPQUFPLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLENBQUM7WUFFL0MsSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQ2xELHdEQUF3RDtnQkFDeEQsT0FBTyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM5QyxDQUFDO1lBRUQsT0FBTyxPQUFPLENBQUM7UUFDakIsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUVoRCxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDZixPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUMsQ0FBQztZQUVELE9BQU8sQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1lBRTVCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzFCLE9BQU8sQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFELENBQUM7WUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBRTFCLE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLElBQVUsRUFBRSxLQUFhO1FBQzlDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ2xELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDL0IsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxRQUFRLENBQUM7UUFDakQsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNmLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0IsQ0FBQzthQUFNLENBQUM7WUFDTixRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFDLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYztRQUNwQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2pDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNsQiwrREFBK0Q7UUFDL0QsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7eUhBektVLGdCQUFnQixrQkFjakIsUUFBUSxhQUNSLE1BQU0sYUFDTixTQUFTLDZCQUNULFdBQVc7NkhBakJWLGdCQUFnQjs7c0dBQWhCLGdCQUFnQjtrQkFENUIsVUFBVTs7MEJBZU4sTUFBTTsyQkFBQyxRQUFROzswQkFDZixNQUFNOzJCQUFDLE1BQU07OzBCQUNiLE1BQU07MkJBQUMsU0FBUzs7MEJBQUcsUUFBUTs7MEJBQzNCLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0RPQ1VNRU5ULCBpc1BsYXRmb3JtU2VydmVyfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQVBQX0lELFxuICBDU1BfTk9OQ0UsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgUExBVEZPUk1fSUQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKiogVGhlIHN0eWxlIGVsZW1lbnRzIGF0dHJpYnV0ZSBuYW1lIHVzZWQgdG8gc2V0IHZhbHVlIG9mIGBBUFBfSURgIHRva2VuLiAqL1xuY29uc3QgQVBQX0lEX0FUVFJJQlVURV9OQU1FID0gJ25nLWFwcC1pZCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTaGFyZWRTdHlsZXNIb3N0IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgLy8gTWFwcyBhbGwgcmVnaXN0ZXJlZCBob3N0IG5vZGVzIHRvIGEgbGlzdCBvZiBzdHlsZSBub2RlcyB0aGF0IGhhdmUgYmVlbiBhZGRlZCB0byB0aGUgaG9zdCBub2RlLlxuICBwcml2YXRlIHJlYWRvbmx5IHN0eWxlUmVmID0gbmV3IE1hcDxcbiAgICBzdHJpbmcgLyoqIFN0eWxlIHN0cmluZyAqLyxcbiAgICB7XG4gICAgICBlbGVtZW50czogSFRNTFN0eWxlRWxlbWVudFtdO1xuICAgICAgdXNhZ2U6IG51bWJlcjtcbiAgICB9XG4gID4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBob3N0Tm9kZXMgPSBuZXcgU2V0PE5vZGU+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3R5bGVOb2Rlc0luRE9NOiBNYXA8c3RyaW5nLCBIVE1MU3R5bGVFbGVtZW50PiB8IG51bGw7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm1Jc1NlcnZlcjogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIHJlYWRvbmx5IGRvYzogRG9jdW1lbnQsXG4gICAgQEluamVjdChBUFBfSUQpIHByaXZhdGUgcmVhZG9ubHkgYXBwSWQ6IHN0cmluZyxcbiAgICBASW5qZWN0KENTUF9OT05DRSkgQE9wdGlvbmFsKCkgcHJpdmF0ZSBub25jZT86IHN0cmluZyB8IG51bGwsXG4gICAgQEluamVjdChQTEFURk9STV9JRCkgcmVhZG9ubHkgcGxhdGZvcm1JZDogb2JqZWN0ID0ge30sXG4gICkge1xuICAgIHRoaXMuc3R5bGVOb2Rlc0luRE9NID0gdGhpcy5jb2xsZWN0U2VydmVyUmVuZGVyZWRTdHlsZXMoKTtcbiAgICB0aGlzLnBsYXRmb3JtSXNTZXJ2ZXIgPSBpc1BsYXRmb3JtU2VydmVyKHBsYXRmb3JtSWQpO1xuICAgIHRoaXMucmVzZXRIb3N0Tm9kZXMoKTtcbiAgfVxuXG4gIGFkZFN0eWxlcyhzdHlsZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdHlsZSBvZiBzdHlsZXMpIHtcbiAgICAgIGNvbnN0IHVzYWdlQ291bnQgPSB0aGlzLmNoYW5nZVVzYWdlQ291bnQoc3R5bGUsIDEpO1xuXG4gICAgICBpZiAodXNhZ2VDb3VudCA9PT0gMSkge1xuICAgICAgICB0aGlzLm9uU3R5bGVBZGRlZChzdHlsZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlU3R5bGVzKHN0eWxlczogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHN0eWxlIG9mIHN0eWxlcykge1xuICAgICAgY29uc3QgdXNhZ2VDb3VudCA9IHRoaXMuY2hhbmdlVXNhZ2VDb3VudChzdHlsZSwgLTEpO1xuXG4gICAgICBpZiAodXNhZ2VDb3VudCA8PSAwKSB7XG4gICAgICAgIHRoaXMub25TdHlsZVJlbW92ZWQoc3R5bGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGNvbnN0IHN0eWxlTm9kZXNJbkRPTSA9IHRoaXMuc3R5bGVOb2Rlc0luRE9NO1xuICAgIGlmIChzdHlsZU5vZGVzSW5ET00pIHtcbiAgICAgIHN0eWxlTm9kZXNJbkRPTS5mb3JFYWNoKChub2RlKSA9PiBub2RlLnJlbW92ZSgpKTtcbiAgICAgIHN0eWxlTm9kZXNJbkRPTS5jbGVhcigpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc3R5bGUgb2YgdGhpcy5nZXRBbGxTdHlsZXMoKSkge1xuICAgICAgdGhpcy5vblN0eWxlUmVtb3ZlZChzdHlsZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNldEhvc3ROb2RlcygpO1xuICB9XG5cbiAgYWRkSG9zdChob3N0Tm9kZTogTm9kZSk6IHZvaWQge1xuICAgIHRoaXMuaG9zdE5vZGVzLmFkZChob3N0Tm9kZSk7XG5cbiAgICBmb3IgKGNvbnN0IHN0eWxlIG9mIHRoaXMuZ2V0QWxsU3R5bGVzKCkpIHtcbiAgICAgIHRoaXMuYWRkU3R5bGVUb0hvc3QoaG9zdE5vZGUsIHN0eWxlKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVIb3N0KGhvc3ROb2RlOiBOb2RlKTogdm9pZCB7XG4gICAgdGhpcy5ob3N0Tm9kZXMuZGVsZXRlKGhvc3ROb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0QWxsU3R5bGVzKCk6IEl0ZXJhYmxlSXRlcmF0b3I8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGVSZWYua2V5cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBvblN0eWxlQWRkZWQoc3R5bGU6IHN0cmluZyk6IHZvaWQge1xuICAgIGZvciAoY29uc3QgaG9zdCBvZiB0aGlzLmhvc3ROb2Rlcykge1xuICAgICAgdGhpcy5hZGRTdHlsZVRvSG9zdChob3N0LCBzdHlsZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBvblN0eWxlUmVtb3ZlZChzdHlsZTogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3Qgc3R5bGVSZWYgPSB0aGlzLnN0eWxlUmVmO1xuICAgIHN0eWxlUmVmLmdldChzdHlsZSk/LmVsZW1lbnRzPy5mb3JFYWNoKChub2RlKSA9PiBub2RlLnJlbW92ZSgpKTtcbiAgICBzdHlsZVJlZi5kZWxldGUoc3R5bGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xsZWN0U2VydmVyUmVuZGVyZWRTdHlsZXMoKTogTWFwPHN0cmluZywgSFRNTFN0eWxlRWxlbWVudD4gfCBudWxsIHtcbiAgICBjb25zdCBzdHlsZXMgPSB0aGlzLmRvYy5oZWFkPy5xdWVyeVNlbGVjdG9yQWxsPEhUTUxTdHlsZUVsZW1lbnQ+KFxuICAgICAgYHN0eWxlWyR7QVBQX0lEX0FUVFJJQlVURV9OQU1FfT1cIiR7dGhpcy5hcHBJZH1cIl1gLFxuICAgICk7XG5cbiAgICBpZiAoc3R5bGVzPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHN0eWxlTWFwID0gbmV3IE1hcDxzdHJpbmcsIEhUTUxTdHlsZUVsZW1lbnQ+KCk7XG5cbiAgICAgIHN0eWxlcy5mb3JFYWNoKChzdHlsZSkgPT4ge1xuICAgICAgICBpZiAoc3R5bGUudGV4dENvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIHN0eWxlTWFwLnNldChzdHlsZS50ZXh0Q29udGVudCwgc3R5bGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHN0eWxlTWFwO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGFuZ2VVc2FnZUNvdW50KHN0eWxlOiBzdHJpbmcsIGRlbHRhOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGNvbnN0IG1hcCA9IHRoaXMuc3R5bGVSZWY7XG4gICAgaWYgKG1hcC5oYXMoc3R5bGUpKSB7XG4gICAgICBjb25zdCBzdHlsZVJlZlZhbHVlID0gbWFwLmdldChzdHlsZSkhO1xuICAgICAgc3R5bGVSZWZWYWx1ZS51c2FnZSArPSBkZWx0YTtcblxuICAgICAgcmV0dXJuIHN0eWxlUmVmVmFsdWUudXNhZ2U7XG4gICAgfVxuXG4gICAgbWFwLnNldChzdHlsZSwge3VzYWdlOiBkZWx0YSwgZWxlbWVudHM6IFtdfSk7XG4gICAgcmV0dXJuIGRlbHRhO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdHlsZUVsZW1lbnQoaG9zdDogTm9kZSwgc3R5bGU6IHN0cmluZyk6IEhUTUxTdHlsZUVsZW1lbnQge1xuICAgIGNvbnN0IHN0eWxlTm9kZXNJbkRPTSA9IHRoaXMuc3R5bGVOb2Rlc0luRE9NO1xuICAgIGNvbnN0IHN0eWxlRWwgPSBzdHlsZU5vZGVzSW5ET00/LmdldChzdHlsZSk7XG4gICAgaWYgKHN0eWxlRWw/LnBhcmVudE5vZGUgPT09IGhvc3QpIHtcbiAgICAgIC8vIGBzdHlsZU5vZGVzSW5ET01gIGNhbm5vdCBiZSB1bmRlZmluZWQgZHVlIHRvIHRoZSBhYm92ZSBgc3R5bGVOb2Rlc0luRE9NPy5nZXRgLlxuICAgICAgc3R5bGVOb2Rlc0luRE9NIS5kZWxldGUoc3R5bGUpO1xuXG4gICAgICBzdHlsZUVsLnJlbW92ZUF0dHJpYnV0ZShBUFBfSURfQVRUUklCVVRFX05BTUUpO1xuXG4gICAgICBpZiAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSB7XG4gICAgICAgIC8vIFRoaXMgYXR0cmlidXRlIGlzIHNvbGVseSB1c2VkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuXG4gICAgICAgIHN0eWxlRWwuc2V0QXR0cmlidXRlKCduZy1zdHlsZS1yZXVzZWQnLCAnJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzdHlsZUVsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdHlsZUVsID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcblxuICAgICAgaWYgKHRoaXMubm9uY2UpIHtcbiAgICAgICAgc3R5bGVFbC5zZXRBdHRyaWJ1dGUoJ25vbmNlJywgdGhpcy5ub25jZSk7XG4gICAgICB9XG5cbiAgICAgIHN0eWxlRWwudGV4dENvbnRlbnQgPSBzdHlsZTtcblxuICAgICAgaWYgKHRoaXMucGxhdGZvcm1Jc1NlcnZlcikge1xuICAgICAgICBzdHlsZUVsLnNldEF0dHJpYnV0ZShBUFBfSURfQVRUUklCVVRFX05BTUUsIHRoaXMuYXBwSWQpO1xuICAgICAgfVxuXG4gICAgICBob3N0LmFwcGVuZENoaWxkKHN0eWxlRWwpO1xuXG4gICAgICByZXR1cm4gc3R5bGVFbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFN0eWxlVG9Ib3N0KGhvc3Q6IE5vZGUsIHN0eWxlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBzdHlsZUVsID0gdGhpcy5nZXRTdHlsZUVsZW1lbnQoaG9zdCwgc3R5bGUpO1xuICAgIGNvbnN0IHN0eWxlUmVmID0gdGhpcy5zdHlsZVJlZjtcbiAgICBjb25zdCBzdHlsZUVsUmVmID0gc3R5bGVSZWYuZ2V0KHN0eWxlKT8uZWxlbWVudHM7XG4gICAgaWYgKHN0eWxlRWxSZWYpIHtcbiAgICAgIHN0eWxlRWxSZWYucHVzaChzdHlsZUVsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3R5bGVSZWYuc2V0KHN0eWxlLCB7ZWxlbWVudHM6IFtzdHlsZUVsXSwgdXNhZ2U6IDF9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc2V0SG9zdE5vZGVzKCk6IHZvaWQge1xuICAgIGNvbnN0IGhvc3ROb2RlcyA9IHRoaXMuaG9zdE5vZGVzO1xuICAgIGhvc3ROb2Rlcy5jbGVhcigpO1xuICAgIC8vIFJlLWFkZCB0aGUgaGVhZCBlbGVtZW50IGJhY2sgc2luY2UgdGhpcyBpcyB0aGUgZGVmYXVsdCBob3N0LlxuICAgIGhvc3ROb2Rlcy5hZGQodGhpcy5kb2MuaGVhZCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,26 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { ɵglobal as global } from '@angular/core';
9
- /**
10
- * Exports the value under a given `name` in the global property `ng`. For example `ng.probe` if
11
- * `name` is `'probe'`.
12
- * @param name Name under which it will be exported. Keep in mind this will be a property of the
13
- * global `ng` object.
14
- * @param value The value to export.
15
- */
16
- export function exportNgVar(name, value) {
17
- if (typeof COMPILED === 'undefined' || !COMPILED) {
18
- // Note: we can't export `ng` when using closure enhanced optimization as:
19
- // - closure declares globals itself for minified names, which sometimes clobber our `ng` global
20
- // - we can't declare a closure extern as the namespace `ng` is already used within Google
21
- // for typings for angularJS (via `goog.provide('ng....')`).
22
- const ng = (global['ng'] = global['ng'] || {});
23
- ng[name] = value;
24
- }
25
- }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtLWJyb3dzZXIvc3JjL2RvbS91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxPQUFPLElBQUksTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRWhEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxXQUFXLENBQUMsSUFBWSxFQUFFLEtBQVU7SUFDbEQsSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqRCwwRUFBMEU7UUFDMUUsZ0dBQWdHO1FBQ2hHLDBGQUEwRjtRQUMxRiw4REFBOEQ7UUFDOUQsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUksTUFBTSxDQUFDLElBQUksQ0FBc0MsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNyRixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ25CLENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7ybVnbG9iYWwgYXMgZ2xvYmFsfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBFeHBvcnRzIHRoZSB2YWx1ZSB1bmRlciBhIGdpdmVuIGBuYW1lYCBpbiB0aGUgZ2xvYmFsIHByb3BlcnR5IGBuZ2AuIEZvciBleGFtcGxlIGBuZy5wcm9iZWAgaWZcbiAqIGBuYW1lYCBpcyBgJ3Byb2JlJ2AuXG4gKiBAcGFyYW0gbmFtZSBOYW1lIHVuZGVyIHdoaWNoIGl0IHdpbGwgYmUgZXhwb3J0ZWQuIEtlZXAgaW4gbWluZCB0aGlzIHdpbGwgYmUgYSBwcm9wZXJ0eSBvZiB0aGVcbiAqIGdsb2JhbCBgbmdgIG9iamVjdC5cbiAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gZXhwb3J0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0TmdWYXIobmFtZTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gIGlmICh0eXBlb2YgQ09NUElMRUQgPT09ICd1bmRlZmluZWQnIHx8ICFDT01QSUxFRCkge1xuICAgIC8vIE5vdGU6IHdlIGNhbid0IGV4cG9ydCBgbmdgIHdoZW4gdXNpbmcgY2xvc3VyZSBlbmhhbmNlZCBvcHRpbWl6YXRpb24gYXM6XG4gICAgLy8gLSBjbG9zdXJlIGRlY2xhcmVzIGdsb2JhbHMgaXRzZWxmIGZvciBtaW5pZmllZCBuYW1lcywgd2hpY2ggc29tZXRpbWVzIGNsb2JiZXIgb3VyIGBuZ2AgZ2xvYmFsXG4gICAgLy8gLSB3ZSBjYW4ndCBkZWNsYXJlIGEgY2xvc3VyZSBleHRlcm4gYXMgdGhlIG5hbWVzcGFjZSBgbmdgIGlzIGFscmVhZHkgdXNlZCB3aXRoaW4gR29vZ2xlXG4gICAgLy8gICBmb3IgdHlwaW5ncyBmb3IgYW5ndWxhckpTICh2aWEgYGdvb2cucHJvdmlkZSgnbmcuLi4uJylgKS5cbiAgICBjb25zdCBuZyA9IChnbG9iYWxbJ25nJ10gPSAoZ2xvYmFsWyduZyddIGFzIHtba2V5OiBzdHJpbmddOiBhbnl9IHwgdW5kZWZpbmVkKSB8fCB7fSk7XG4gICAgbmdbbmFtZV0gPSB2YWx1ZTtcbiAgfVxufVxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0tYnJvd3Nlci9zcmMvZXJyb3JzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbi8qKlxuICogVGhlIGxpc3Qgb2YgZXJyb3IgY29kZXMgdXNlZCBpbiBydW50aW1lIGNvZGUgb2YgdGhlIGBwbGF0Zm9ybS1icm93c2VyYCBwYWNrYWdlLlxuICogUmVzZXJ2ZWQgZXJyb3IgY29kZSByYW5nZTogNTAwMC01NTAwLlxuICovXG5leHBvcnQgY29uc3QgZW51bSBSdW50aW1lRXJyb3JDb2RlIHtcbiAgLy8gSHlkcmF0aW9uIEVycm9yc1xuICBVTlNVUFBPUlRFRF9aT05FSlNfSU5TVEFOQ0UgPSAtNTAwMCxcblxuICAvLyBtaXNjIGVycm9ycyAoNTEwMC01MjAwIHJhbmdlKVxuICBCUk9XU0VSX01PRFVMRV9BTFJFQURZX0xPQURFRCA9IDUxMDAsXG4gIE5PX1BMVUdJTl9GT1JfRVZFTlQgPSA1MTAxLFxuICBVTlNVUFBPUlRFRF9FVkVOVF9UQVJHRVQgPSA1MTAyLFxuICBURVNUQUJJTElUWV9OT1RfRk9VTkQgPSA1MTAzLFxuICBST09UX05PREVfTk9UX0ZPVU5EID0gLTUxMDQsXG4gIFVORVhQRUNURURfU1lOVEhFVElDX1BST1BFUlRZID0gNTEwNSxcblxuICAvLyBTYW5pdGl6YXRpb24tcmVsYXRlZCBlcnJvcnMgKDUyMDAtNTMwMCByYW5nZSlcbiAgU0FOSVRJWkFUSU9OX1VOU0FGRV9TQ1JJUFQgPSA1MjAwLFxuICBTQU5JVElaQVRJT05fVU5TQUZFX1JFU09VUkNFX1VSTCA9IDUyMDEsXG4gIFNBTklUSVpBVElPTl9VTkVYUEVDVEVEX0NUWCA9IDUyMDIsXG5cbiAgLy8gQW5pbWF0aW9ucyByZWxhdGVkIGVycm9ycyAoNTMwMC01NDAwIHJhbmdlKVxuICBBTklNQVRJT05fUkVOREVSRVJfQVNZTkNfTE9BRElOR19GQUlMVVJFID0gNTMwMCxcbn1cbiJdfQ==
@@ -1,183 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { ɵwithHttpTransferCache } from '@angular/common/http';
9
- import { ENVIRONMENT_INITIALIZER, inject, makeEnvironmentProviders, NgZone, ɵConsole as Console, ɵformatRuntimeError as formatRuntimeError, ɵwithDomHydration as withDomHydration, ɵwithEventReplay, ɵwithI18nSupport, } from '@angular/core';
10
- /**
11
- * The list of features as an enum to uniquely type each `HydrationFeature`.
12
- * @see {@link HydrationFeature}
13
- *
14
- * @publicApi
15
- */
16
- export var HydrationFeatureKind;
17
- (function (HydrationFeatureKind) {
18
- HydrationFeatureKind[HydrationFeatureKind["NoHttpTransferCache"] = 0] = "NoHttpTransferCache";
19
- HydrationFeatureKind[HydrationFeatureKind["HttpTransferCacheOptions"] = 1] = "HttpTransferCacheOptions";
20
- HydrationFeatureKind[HydrationFeatureKind["I18nSupport"] = 2] = "I18nSupport";
21
- HydrationFeatureKind[HydrationFeatureKind["EventReplay"] = 3] = "EventReplay";
22
- })(HydrationFeatureKind || (HydrationFeatureKind = {}));
23
- /**
24
- * Helper function to create an object that represents a Hydration feature.
25
- */
26
- function hydrationFeature(ɵkind, ɵproviders = [], ɵoptions = {}) {
27
- return { ɵkind, ɵproviders };
28
- }
29
- /**
30
- * Disables HTTP transfer cache. Effectively causes HTTP requests to be performed twice: once on the
31
- * server and other one on the browser.
32
- *
33
- * @publicApi
34
- */
35
- export function withNoHttpTransferCache() {
36
- // This feature has no providers and acts as a flag that turns off
37
- // HTTP transfer cache (which otherwise is turned on by default).
38
- return hydrationFeature(HydrationFeatureKind.NoHttpTransferCache);
39
- }
40
- /**
41
- * The function accepts a an object, which allows to configure cache parameters,
42
- * such as which headers should be included (no headers are included by default),
43
- * wether POST requests should be cached or a callback function to determine if a
44
- * particular request should be cached.
45
- *
46
- * @publicApi
47
- */
48
- export function withHttpTransferCacheOptions(options) {
49
- // This feature has no providers and acts as a flag to pass options to the HTTP transfer cache.
50
- return hydrationFeature(HydrationFeatureKind.HttpTransferCacheOptions, ɵwithHttpTransferCache(options));
51
- }
52
- /**
53
- * Enables support for hydrating i18n blocks.
54
- *
55
- * @developerPreview
56
- * @publicApi
57
- */
58
- export function withI18nSupport() {
59
- return hydrationFeature(HydrationFeatureKind.I18nSupport, ɵwithI18nSupport());
60
- }
61
- /**
62
- * Enables support for replaying user events (e.g. `click`s) that happened on a page
63
- * before hydration logic has completed. Once an application is hydrated, all captured
64
- * events are replayed and relevant event listeners are executed.
65
- *
66
- * @usageNotes
67
- *
68
- * Basic example of how you can enable event replay in your application when
69
- * `bootstrapApplication` function is used:
70
- * ```
71
- * bootstrapApplication(AppComponent, {
72
- * providers: [provideClientHydration(withEventReplay())]
73
- * });
74
- * ```
75
- * @developerPreview
76
- * @publicApi
77
- * @see {@link provideClientHydration}
78
- */
79
- export function withEventReplay() {
80
- return hydrationFeature(HydrationFeatureKind.EventReplay, ɵwithEventReplay());
81
- }
82
- /**
83
- * Returns an `ENVIRONMENT_INITIALIZER` token setup with a function
84
- * that verifies whether compatible ZoneJS was used in an application
85
- * and logs a warning in a console if it's not the case.
86
- */
87
- function provideZoneJsCompatibilityDetector() {
88
- return [
89
- {
90
- provide: ENVIRONMENT_INITIALIZER,
91
- useValue: () => {
92
- const ngZone = inject(NgZone);
93
- // Checking `ngZone instanceof NgZone` would be insufficient here,
94
- // because custom implementations might use NgZone as a base class.
95
- if (ngZone.constructor !== NgZone) {
96
- const console = inject(Console);
97
- const message = formatRuntimeError(-5000 /* RuntimeErrorCode.UNSUPPORTED_ZONEJS_INSTANCE */, 'Angular detected that hydration was enabled for an application ' +
98
- 'that uses a custom or a noop Zone.js implementation. ' +
99
- 'This is not yet a fully supported configuration.');
100
- // tslint:disable-next-line:no-console
101
- console.warn(message);
102
- }
103
- },
104
- multi: true,
105
- },
106
- ];
107
- }
108
- /**
109
- * Sets up providers necessary to enable hydration functionality for the application.
110
- *
111
- * By default, the function enables the recommended set of features for the optimal
112
- * performance for most of the applications. It includes the following features:
113
- *
114
- * * Reconciling DOM hydration. Learn more about it [here](guide/hydration).
115
- * * [`HttpClient`](api/common/http/HttpClient) response caching while running on the server and
116
- * transferring this cache to the client to avoid extra HTTP requests. Learn more about data caching
117
- * [here](guide/ssr#caching-data-when-using-httpclient).
118
- *
119
- * These functions allow you to disable some of the default features or enable new ones:
120
- *
121
- * * {@link withNoHttpTransferCache} to disable HTTP transfer cache
122
- * * {@link withHttpTransferCacheOptions} to configure some HTTP transfer cache options
123
- * * {@link withI18nSupport} to enable hydration support for i18n blocks
124
- * * {@link withEventReplay} to enable support for replaying user events
125
- *
126
- * @usageNotes
127
- *
128
- * Basic example of how you can enable hydration in your application when
129
- * `bootstrapApplication` function is used:
130
- * ```
131
- * bootstrapApplication(AppComponent, {
132
- * providers: [provideClientHydration()]
133
- * });
134
- * ```
135
- *
136
- * Alternatively if you are using NgModules, you would add `provideClientHydration`
137
- * to your root app module's provider list.
138
- * ```
139
- * @NgModule({
140
- * declarations: [RootCmp],
141
- * bootstrap: [RootCmp],
142
- * providers: [provideClientHydration()],
143
- * })
144
- * export class AppModule {}
145
- * ```
146
- *
147
- * @see {@link withNoHttpTransferCache}
148
- * @see {@link withHttpTransferCacheOptions}
149
- * @see {@link withI18nSupport}
150
- * @see {@link withEventReplay}
151
- *
152
- * @param features Optional features to configure additional router behaviors.
153
- * @returns A set of providers to enable hydration.
154
- *
155
- * @publicApi
156
- */
157
- export function provideClientHydration(...features) {
158
- const providers = [];
159
- const featuresKind = new Set();
160
- const hasHttpTransferCacheOptions = featuresKind.has(HydrationFeatureKind.HttpTransferCacheOptions);
161
- for (const { ɵproviders, ɵkind } of features) {
162
- featuresKind.add(ɵkind);
163
- if (ɵproviders.length) {
164
- providers.push(ɵproviders);
165
- }
166
- }
167
- if (typeof ngDevMode !== 'undefined' &&
168
- ngDevMode &&
169
- featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) &&
170
- hasHttpTransferCacheOptions) {
171
- // TODO: Make this a runtime error
172
- throw new Error('Configuration error: found both withHttpTransferCacheOptions() and withNoHttpTransferCache() in the same call to provideClientHydration(), which is a contradiction.');
173
- }
174
- return makeEnvironmentProviders([
175
- typeof ngDevMode !== 'undefined' && ngDevMode ? provideZoneJsCompatibilityDetector() : [],
176
- withDomHydration(),
177
- featuresKind.has(HydrationFeatureKind.NoHttpTransferCache) || hasHttpTransferCacheOptions
178
- ? []
179
- : ɵwithHttpTransferCache({}),
180
- providers,
181
- ]);
182
- }
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHlkcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0tYnJvd3Nlci9zcmMvaHlkcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBMkIsc0JBQXNCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RixPQUFPLEVBQ0wsdUJBQXVCLEVBRXZCLE1BQU0sRUFDTix3QkFBd0IsRUFDeEIsTUFBTSxFQUVOLFFBQVEsSUFBSSxPQUFPLEVBQ25CLG1CQUFtQixJQUFJLGtCQUFrQixFQUN6QyxpQkFBaUIsSUFBSSxnQkFBZ0IsRUFDckMsZ0JBQWdCLEVBQ2hCLGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUl2Qjs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBTixJQUFZLG9CQUtYO0FBTEQsV0FBWSxvQkFBb0I7SUFDOUIsNkZBQW1CLENBQUE7SUFDbkIsdUdBQXdCLENBQUE7SUFDeEIsNkVBQVcsQ0FBQTtJQUNYLDZFQUFXLENBQUE7QUFDYixDQUFDLEVBTFcsb0JBQW9CLEtBQXBCLG9CQUFvQixRQUsvQjtBQVlEOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FDdkIsS0FBa0IsRUFDbEIsYUFBeUIsRUFBRSxFQUMzQixXQUFvQixFQUFFO0lBRXRCLE9BQU8sRUFBQyxLQUFLLEVBQUUsVUFBVSxFQUFDLENBQUM7QUFDN0IsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsTUFBTSxVQUFVLHVCQUF1QjtJQUNyQyxrRUFBa0U7SUFDbEUsaUVBQWlFO0lBQ2pFLE9BQU8sZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsbUJBQW1CLENBQUMsQ0FBQztBQUNwRSxDQUFDO0FBRUQ7Ozs7Ozs7R0FPRztBQUNILE1BQU0sVUFBVSw0QkFBNEIsQ0FDMUMsT0FBaUM7SUFFakMsK0ZBQStGO0lBQy9GLE9BQU8sZ0JBQWdCLENBQ3JCLG9CQUFvQixDQUFDLHdCQUF3QixFQUM3QyxzQkFBc0IsQ0FBQyxPQUFPLENBQUMsQ0FDaEMsQ0FBQztBQUNKLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sVUFBVSxlQUFlO0lBQzdCLE9BQU8sZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsV0FBVyxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxVQUFVLGVBQWU7SUFDN0IsT0FBTyxnQkFBZ0IsQ0FBQyxvQkFBb0IsQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxrQ0FBa0M7SUFDekMsT0FBTztRQUNMO1lBQ0UsT0FBTyxFQUFFLHVCQUF1QjtZQUNoQyxRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDOUIsa0VBQWtFO2dCQUNsRSxtRUFBbUU7Z0JBQ25FLElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxNQUFNLEVBQUUsQ0FBQztvQkFDbEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUNoQyxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsMkRBRWhDLGlFQUFpRTt3QkFDL0QsdURBQXVEO3dCQUN2RCxrREFBa0QsQ0FDckQsQ0FBQztvQkFDRixzQ0FBc0M7b0JBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3hCLENBQUM7WUFDSCxDQUFDO1lBQ0QsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWdERztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsR0FBRyxRQUFrRDtJQUVyRCxNQUFNLFNBQVMsR0FBZSxFQUFFLENBQUM7SUFDakMsTUFBTSxZQUFZLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7SUFDckQsTUFBTSwyQkFBMkIsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUNsRCxvQkFBb0IsQ0FBQyx3QkFBd0IsQ0FDOUMsQ0FBQztJQUVGLEtBQUssTUFBTSxFQUFDLFVBQVUsRUFBRSxLQUFLLEVBQUMsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUMzQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RCLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxJQUNFLE9BQU8sU0FBUyxLQUFLLFdBQVc7UUFDaEMsU0FBUztRQUNULFlBQVksQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsbUJBQW1CLENBQUM7UUFDMUQsMkJBQTJCLEVBQzNCLENBQUM7UUFDRCxrQ0FBa0M7UUFDbEMsTUFBTSxJQUFJLEtBQUssQ0FDYixzS0FBc0ssQ0FDdkssQ0FBQztJQUNKLENBQUM7SUFFRCxPQUFPLHdCQUF3QixDQUFDO1FBQzlCLE9BQU8sU0FBUyxLQUFLLFdBQVcsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLGtDQUFrQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFDekYsZ0JBQWdCLEVBQUU7UUFDbEIsWUFBWSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLDJCQUEyQjtZQUN2RixDQUFDLENBQUMsRUFBRTtZQUNKLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7UUFDOUIsU0FBUztLQUNWLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtIdHRwVHJhbnNmZXJDYWNoZU9wdGlvbnMsIMm1d2l0aEh0dHBUcmFuc2ZlckNhY2hlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUixcbiAgRW52aXJvbm1lbnRQcm92aWRlcnMsXG4gIGluamVjdCxcbiAgbWFrZUVudmlyb25tZW50UHJvdmlkZXJzLFxuICBOZ1pvbmUsXG4gIFByb3ZpZGVyLFxuICDJtUNvbnNvbGUgYXMgQ29uc29sZSxcbiAgybVmb3JtYXRSdW50aW1lRXJyb3IgYXMgZm9ybWF0UnVudGltZUVycm9yLFxuICDJtXdpdGhEb21IeWRyYXRpb24gYXMgd2l0aERvbUh5ZHJhdGlvbixcbiAgybV3aXRoRXZlbnRSZXBsYXksXG4gIMm1d2l0aEkxOG5TdXBwb3J0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtSdW50aW1lRXJyb3JDb2RlfSBmcm9tICcuL2Vycm9ycyc7XG5cbi8qKlxuICogVGhlIGxpc3Qgb2YgZmVhdHVyZXMgYXMgYW4gZW51bSB0byB1bmlxdWVseSB0eXBlIGVhY2ggYEh5ZHJhdGlvbkZlYXR1cmVgLlxuICogQHNlZSB7QGxpbmsgSHlkcmF0aW9uRmVhdHVyZX1cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBlbnVtIEh5ZHJhdGlvbkZlYXR1cmVLaW5kIHtcbiAgTm9IdHRwVHJhbnNmZXJDYWNoZSxcbiAgSHR0cFRyYW5zZmVyQ2FjaGVPcHRpb25zLFxuICBJMThuU3VwcG9ydCxcbiAgRXZlbnRSZXBsYXksXG59XG5cbi8qKlxuICogSGVscGVyIHR5cGUgdG8gcmVwcmVzZW50IGEgSHlkcmF0aW9uIGZlYXR1cmUuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEh5ZHJhdGlvbkZlYXR1cmU8RmVhdHVyZUtpbmQgZXh0ZW5kcyBIeWRyYXRpb25GZWF0dXJlS2luZD4ge1xuICDJtWtpbmQ6IEZlYXR1cmVLaW5kO1xuICDJtXByb3ZpZGVyczogUHJvdmlkZXJbXTtcbn1cblxuLyoqXG4gKiBIZWxwZXIgZnVuY3Rpb24gdG8gY3JlYXRlIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgYSBIeWRyYXRpb24gZmVhdHVyZS5cbiAqL1xuZnVuY3Rpb24gaHlkcmF0aW9uRmVhdHVyZTxGZWF0dXJlS2luZCBleHRlbmRzIEh5ZHJhdGlvbkZlYXR1cmVLaW5kPihcbiAgybVraW5kOiBGZWF0dXJlS2luZCxcbiAgybVwcm92aWRlcnM6IFByb3ZpZGVyW10gPSBbXSxcbiAgybVvcHRpb25zOiB1bmtub3duID0ge30sXG4pOiBIeWRyYXRpb25GZWF0dXJlPEZlYXR1cmVLaW5kPiB7XG4gIHJldHVybiB7ybVraW5kLCDJtXByb3ZpZGVyc307XG59XG5cbi8qKlxuICogRGlzYWJsZXMgSFRUUCB0cmFuc2ZlciBjYWNoZS4gRWZmZWN0aXZlbHkgY2F1c2VzIEhUVFAgcmVxdWVzdHMgdG8gYmUgcGVyZm9ybWVkIHR3aWNlOiBvbmNlIG9uIHRoZVxuICogc2VydmVyIGFuZCBvdGhlciBvbmUgb24gdGhlIGJyb3dzZXIuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aE5vSHR0cFRyYW5zZmVyQ2FjaGUoKTogSHlkcmF0aW9uRmVhdHVyZTxIeWRyYXRpb25GZWF0dXJlS2luZC5Ob0h0dHBUcmFuc2ZlckNhY2hlPiB7XG4gIC8vIFRoaXMgZmVhdHVyZSBoYXMgbm8gcHJvdmlkZXJzIGFuZCBhY3RzIGFzIGEgZmxhZyB0aGF0IHR1cm5zIG9mZlxuICAvLyBIVFRQIHRyYW5zZmVyIGNhY2hlICh3aGljaCBvdGhlcndpc2UgaXMgdHVybmVkIG9uIGJ5IGRlZmF1bHQpLlxuICByZXR1cm4gaHlkcmF0aW9uRmVhdHVyZShIeWRyYXRpb25GZWF0dXJlS2luZC5Ob0h0dHBUcmFuc2ZlckNhY2hlKTtcbn1cblxuLyoqXG4gKiBUaGUgZnVuY3Rpb24gYWNjZXB0cyBhIGFuIG9iamVjdCwgd2hpY2ggYWxsb3dzIHRvIGNvbmZpZ3VyZSBjYWNoZSBwYXJhbWV0ZXJzLFxuICogc3VjaCBhcyB3aGljaCBoZWFkZXJzIHNob3VsZCBiZSBpbmNsdWRlZCAobm8gaGVhZGVycyBhcmUgaW5jbHVkZWQgYnkgZGVmYXVsdCksXG4gKiB3ZXRoZXIgUE9TVCByZXF1ZXN0cyBzaG91bGQgYmUgY2FjaGVkIG9yIGEgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIGlmIGFcbiAqIHBhcnRpY3VsYXIgcmVxdWVzdCBzaG91bGQgYmUgY2FjaGVkLlxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhIdHRwVHJhbnNmZXJDYWNoZU9wdGlvbnMoXG4gIG9wdGlvbnM6IEh0dHBUcmFuc2ZlckNhY2hlT3B0aW9ucyxcbik6IEh5ZHJhdGlvbkZlYXR1cmU8SHlkcmF0aW9uRmVhdHVyZUtpbmQuSHR0cFRyYW5zZmVyQ2FjaGVPcHRpb25zPiB7XG4gIC8vIFRoaXMgZmVhdHVyZSBoYXMgbm8gcHJvdmlkZXJzIGFuZCBhY3RzIGFzIGEgZmxhZyB0byBwYXNzIG9wdGlvbnMgdG8gdGhlIEhUVFAgdHJhbnNmZXIgY2FjaGUuXG4gIHJldHVybiBoeWRyYXRpb25GZWF0dXJlKFxuICAgIEh5ZHJhdGlvbkZlYXR1cmVLaW5kLkh0dHBUcmFuc2ZlckNhY2hlT3B0aW9ucyxcbiAgICDJtXdpdGhIdHRwVHJhbnNmZXJDYWNoZShvcHRpb25zKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBFbmFibGVzIHN1cHBvcnQgZm9yIGh5ZHJhdGluZyBpMThuIGJsb2Nrcy5cbiAqXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgZnVuY3Rpb24gd2l0aEkxOG5TdXBwb3J0KCk6IEh5ZHJhdGlvbkZlYXR1cmU8SHlkcmF0aW9uRmVhdHVyZUtpbmQuSTE4blN1cHBvcnQ+IHtcbiAgcmV0dXJuIGh5ZHJhdGlvbkZlYXR1cmUoSHlkcmF0aW9uRmVhdHVyZUtpbmQuSTE4blN1cHBvcnQsIMm1d2l0aEkxOG5TdXBwb3J0KCkpO1xufVxuXG4vKipcbiAqIEVuYWJsZXMgc3VwcG9ydCBmb3IgcmVwbGF5aW5nIHVzZXIgZXZlbnRzIChlLmcuIGBjbGlja2BzKSB0aGF0IGhhcHBlbmVkIG9uIGEgcGFnZVxuICogYmVmb3JlIGh5ZHJhdGlvbiBsb2dpYyBoYXMgY29tcGxldGVkLiBPbmNlIGFuIGFwcGxpY2F0aW9uIGlzIGh5ZHJhdGVkLCBhbGwgY2FwdHVyZWRcbiAqIGV2ZW50cyBhcmUgcmVwbGF5ZWQgYW5kIHJlbGV2YW50IGV2ZW50IGxpc3RlbmVycyBhcmUgZXhlY3V0ZWQuXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqXG4gKiBCYXNpYyBleGFtcGxlIG9mIGhvdyB5b3UgY2FuIGVuYWJsZSBldmVudCByZXBsYXkgaW4geW91ciBhcHBsaWNhdGlvbiB3aGVuXG4gKiBgYm9vdHN0cmFwQXBwbGljYXRpb25gIGZ1bmN0aW9uIGlzIHVzZWQ6XG4gKiBgYGBcbiAqIGJvb3RzdHJhcEFwcGxpY2F0aW9uKEFwcENvbXBvbmVudCwge1xuICogICBwcm92aWRlcnM6IFtwcm92aWRlQ2xpZW50SHlkcmF0aW9uKHdpdGhFdmVudFJlcGxheSgpKV1cbiAqIH0pO1xuICogYGBgXG4gKiBAZGV2ZWxvcGVyUHJldmlld1xuICogQHB1YmxpY0FwaVxuICogQHNlZSB7QGxpbmsgcHJvdmlkZUNsaWVudEh5ZHJhdGlvbn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhFdmVudFJlcGxheSgpOiBIeWRyYXRpb25GZWF0dXJlPEh5ZHJhdGlvbkZlYXR1cmVLaW5kLkV2ZW50UmVwbGF5PiB7XG4gIHJldHVybiBoeWRyYXRpb25GZWF0dXJlKEh5ZHJhdGlvbkZlYXR1cmVLaW5kLkV2ZW50UmVwbGF5LCDJtXdpdGhFdmVudFJlcGxheSgpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGBFTlZJUk9OTUVOVF9JTklUSUFMSVpFUmAgdG9rZW4gc2V0dXAgd2l0aCBhIGZ1bmN0aW9uXG4gKiB0aGF0IHZlcmlmaWVzIHdoZXRoZXIgY29tcGF0aWJsZSBab25lSlMgd2FzIHVzZWQgaW4gYW4gYXBwbGljYXRpb25cbiAqIGFuZCBsb2dzIGEgd2FybmluZyBpbiBhIGNvbnNvbGUgaWYgaXQncyBub3QgdGhlIGNhc2UuXG4gKi9cbmZ1bmN0aW9uIHByb3ZpZGVab25lSnNDb21wYXRpYmlsaXR5RGV0ZWN0b3IoKTogUHJvdmlkZXJbXSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogRU5WSVJPTk1FTlRfSU5JVElBTElaRVIsXG4gICAgICB1c2VWYWx1ZTogKCkgPT4ge1xuICAgICAgICBjb25zdCBuZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcbiAgICAgICAgLy8gQ2hlY2tpbmcgYG5nWm9uZSBpbnN0YW5jZW9mIE5nWm9uZWAgd291bGQgYmUgaW5zdWZmaWNpZW50IGhlcmUsXG4gICAgICAgIC8vIGJlY2F1c2UgY3VzdG9tIGltcGxlbWVudGF0aW9ucyBtaWdodCB1c2UgTmdab25lIGFzIGEgYmFzZSBjbGFzcy5cbiAgICAgICAgaWYgKG5nWm9uZS5jb25zdHJ1Y3RvciAhPT0gTmdab25lKSB7XG4gICAgICAgICAgY29uc3QgY29uc29sZSA9IGluamVjdChDb25zb2xlKTtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID0gZm9ybWF0UnVudGltZUVycm9yKFxuICAgICAgICAgICAgUnVudGltZUVycm9yQ29kZS5VTlNVUFBPUlRFRF9aT05FSlNfSU5TVEFOQ0UsXG4gICAgICAgICAgICAnQW5ndWxhciBkZXRlY3RlZCB0aGF0IGh5ZHJhdGlvbiB3YXMgZW5hYmxlZCBmb3IgYW4gYXBwbGljYXRpb24gJyArXG4gICAgICAgICAgICAgICd0aGF0IHVzZXMgYSBjdXN0b20gb3IgYSBub29wIFpvbmUuanMgaW1wbGVtZW50YXRpb24uICcgK1xuICAgICAgICAgICAgICAnVGhpcyBpcyBub3QgeWV0IGEgZnVsbHkgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24uJyxcbiAgICAgICAgICApO1xuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1jb25zb2xlXG4gICAgICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgbXVsdGk6IHRydWUsXG4gICAgfSxcbiAgXTtcbn1cblxuLyoqXG4gKiBTZXRzIHVwIHByb3ZpZGVycyBuZWNlc3NhcnkgdG8gZW5hYmxlIGh5ZHJhdGlvbiBmdW5jdGlvbmFsaXR5IGZvciB0aGUgYXBwbGljYXRpb24uXG4gKlxuICogQnkgZGVmYXVsdCwgdGhlIGZ1bmN0aW9uIGVuYWJsZXMgdGhlIHJlY29tbWVuZGVkIHNldCBvZiBmZWF0dXJlcyBmb3IgdGhlIG9wdGltYWxcbiAqIHBlcmZvcm1hbmNlIGZvciBtb3N0IG9mIHRoZSBhcHBsaWNhdGlvbnMuIEl0IGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6XG4gKlxuICogKiBSZWNvbmNpbGluZyBET00gaHlkcmF0aW9uLiBMZWFybiBtb3JlIGFib3V0IGl0IFtoZXJlXShndWlkZS9oeWRyYXRpb24pLlxuICogKiBbYEh0dHBDbGllbnRgXShhcGkvY29tbW9uL2h0dHAvSHR0cENsaWVudCkgcmVzcG9uc2UgY2FjaGluZyB3aGlsZSBydW5uaW5nIG9uIHRoZSBzZXJ2ZXIgYW5kXG4gKiB0cmFuc2ZlcnJpbmcgdGhpcyBjYWNoZSB0byB0aGUgY2xpZW50IHRvIGF2b2lkIGV4dHJhIEhUVFAgcmVxdWVzdHMuIExlYXJuIG1vcmUgYWJvdXQgZGF0YSBjYWNoaW5nXG4gKiBbaGVyZV0oZ3VpZGUvc3NyI2NhY2hpbmctZGF0YS13aGVuLXVzaW5nLWh0dHBjbGllbnQpLlxuICpcbiAqIFRoZXNlIGZ1bmN0aW9ucyBhbGxvdyB5b3UgdG8gZGlzYWJsZSBzb21lIG9mIHRoZSBkZWZhdWx0IGZlYXR1cmVzIG9yIGVuYWJsZSBuZXcgb25lczpcbiAqXG4gKiAqIHtAbGluayB3aXRoTm9IdHRwVHJhbnNmZXJDYWNoZX0gdG8gZGlzYWJsZSBIVFRQIHRyYW5zZmVyIGNhY2hlXG4gKiAqIHtAbGluayB3aXRoSHR0cFRyYW5zZmVyQ2FjaGVPcHRpb25zfSB0byBjb25maWd1cmUgc29tZSBIVFRQIHRyYW5zZmVyIGNhY2hlIG9wdGlvbnNcbiAqICoge0BsaW5rIHdpdGhJMThuU3VwcG9ydH0gdG8gZW5hYmxlIGh5ZHJhdGlvbiBzdXBwb3J0IGZvciBpMThuIGJsb2Nrc1xuICogKiB7QGxpbmsgd2l0aEV2ZW50UmVwbGF5fSB0byBlbmFibGUgc3VwcG9ydCBmb3IgcmVwbGF5aW5nIHVzZXIgZXZlbnRzXG4gKlxuICogQHVzYWdlTm90ZXNcbiAqXG4gKiBCYXNpYyBleGFtcGxlIG9mIGhvdyB5b3UgY2FuIGVuYWJsZSBoeWRyYXRpb24gaW4geW91ciBhcHBsaWNhdGlvbiB3aGVuXG4gKiBgYm9vdHN0cmFwQXBwbGljYXRpb25gIGZ1bmN0aW9uIGlzIHVzZWQ6XG4gKiBgYGBcbiAqIGJvb3RzdHJhcEFwcGxpY2F0aW9uKEFwcENvbXBvbmVudCwge1xuICogICBwcm92aWRlcnM6IFtwcm92aWRlQ2xpZW50SHlkcmF0aW9uKCldXG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIEFsdGVybmF0aXZlbHkgaWYgeW91IGFyZSB1c2luZyBOZ01vZHVsZXMsIHlvdSB3b3VsZCBhZGQgYHByb3ZpZGVDbGllbnRIeWRyYXRpb25gXG4gKiB0byB5b3VyIHJvb3QgYXBwIG1vZHVsZSdzIHByb3ZpZGVyIGxpc3QuXG4gKiBgYGBcbiAqIEBOZ01vZHVsZSh7XG4gKiAgIGRlY2xhcmF0aW9uczogW1Jvb3RDbXBdLFxuICogICBib290c3RyYXA6IFtSb290Q21wXSxcbiAqICAgcHJvdmlkZXJzOiBbcHJvdmlkZUNsaWVudEh5ZHJhdGlvbigpXSxcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQXBwTW9kdWxlIHt9XG4gKiBgYGBcbiAqXG4gKiBAc2VlIHtAbGluayB3aXRoTm9IdHRwVHJhbnNmZXJDYWNoZX1cbiAqIEBzZWUge0BsaW5rIHdpdGhIdHRwVHJhbnNmZXJDYWNoZU9wdGlvbnN9XG4gKiBAc2VlIHtAbGluayB3aXRoSTE4blN1cHBvcnR9XG4gKiBAc2VlIHtAbGluayB3aXRoRXZlbnRSZXBsYXl9XG4gKlxuICogQHBhcmFtIGZlYXR1cmVzIE9wdGlvbmFsIGZlYXR1cmVzIHRvIGNvbmZpZ3VyZSBhZGRpdGlvbmFsIHJvdXRlciBiZWhhdmlvcnMuXG4gKiBAcmV0dXJucyBBIHNldCBvZiBwcm92aWRlcnMgdG8gZW5hYmxlIGh5ZHJhdGlvbi5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlQ2xpZW50SHlkcmF0aW9uKFxuICAuLi5mZWF0dXJlczogSHlkcmF0aW9uRmVhdHVyZTxIeWRyYXRpb25GZWF0dXJlS2luZD5bXVxuKTogRW52aXJvbm1lbnRQcm92aWRlcnMge1xuICBjb25zdCBwcm92aWRlcnM6IFByb3ZpZGVyW10gPSBbXTtcbiAgY29uc3QgZmVhdHVyZXNLaW5kID0gbmV3IFNldDxIeWRyYXRpb25GZWF0dXJlS2luZD4oKTtcbiAgY29uc3QgaGFzSHR0cFRyYW5zZmVyQ2FjaGVPcHRpb25zID0gZmVhdHVyZXNLaW5kLmhhcyhcbiAgICBIeWRyYXRpb25GZWF0dXJlS2luZC5IdHRwVHJhbnNmZXJDYWNoZU9wdGlvbnMsXG4gICk7XG5cbiAgZm9yIChjb25zdCB7ybVwcm92aWRlcnMsIMm1a2luZH0gb2YgZmVhdHVyZXMpIHtcbiAgICBmZWF0dXJlc0tpbmQuYWRkKMm1a2luZCk7XG5cbiAgICBpZiAoybVwcm92aWRlcnMubGVuZ3RoKSB7XG4gICAgICBwcm92aWRlcnMucHVzaCjJtXByb3ZpZGVycyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKFxuICAgIHR5cGVvZiBuZ0Rldk1vZGUgIT09ICd1bmRlZmluZWQnICYmXG4gICAgbmdEZXZNb2RlICYmXG4gICAgZmVhdHVyZXNLaW5kLmhhcyhIeWRyYXRpb25GZWF0dXJlS2luZC5Ob0h0dHBUcmFuc2ZlckNhY2hlKSAmJlxuICAgIGhhc0h0dHBUcmFuc2ZlckNhY2hlT3B0aW9uc1xuICApIHtcbiAgICAvLyBUT0RPOiBNYWtlIHRoaXMgYSBydW50aW1lIGVycm9yXG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ0NvbmZpZ3VyYXRpb24gZXJyb3I6IGZvdW5kIGJvdGggd2l0aEh0dHBUcmFuc2ZlckNhY2hlT3B0aW9ucygpIGFuZCB3aXRoTm9IdHRwVHJhbnNmZXJDYWNoZSgpIGluIHRoZSBzYW1lIGNhbGwgdG8gcHJvdmlkZUNsaWVudEh5ZHJhdGlvbigpLCB3aGljaCBpcyBhIGNvbnRyYWRpY3Rpb24uJyxcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG1ha2VFbnZpcm9ubWVudFByb3ZpZGVycyhbXG4gICAgdHlwZW9mIG5nRGV2TW9kZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbmdEZXZNb2RlID8gcHJvdmlkZVpvbmVKc0NvbXBhdGliaWxpdHlEZXRlY3RvcigpIDogW10sXG4gICAgd2l0aERvbUh5ZHJhdGlvbigpLFxuICAgIGZlYXR1cmVzS2luZC5oYXMoSHlkcmF0aW9uRmVhdHVyZUtpbmQuTm9IdHRwVHJhbnNmZXJDYWNoZSkgfHwgaGFzSHR0cFRyYW5zZmVyQ2FjaGVPcHRpb25zXG4gICAgICA/IFtdXG4gICAgICA6IMm1d2l0aEh0dHBUcmFuc2ZlckNhY2hlKHt9KSxcbiAgICBwcm92aWRlcnMsXG4gIF0pO1xufVxuIl19
@@ -1,20 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export { bootstrapApplication, BrowserModule, createApplication, platformBrowser, provideProtractorTestingSupport, } from './browser';
9
- export { Meta } from './browser/meta';
10
- export { Title } from './browser/title';
11
- export { disableDebugTools, enableDebugTools } from './browser/tools/tools';
12
- export { By } from './dom/debug/by';
13
- export { REMOVE_STYLES_ON_COMPONENT_DESTROY } from './dom/dom_renderer';
14
- export { EVENT_MANAGER_PLUGINS, EventManager, EventManagerPlugin } from './dom/events/event_manager';
15
- export { HAMMER_GESTURE_CONFIG, HAMMER_LOADER, HammerGestureConfig, HammerModule, } from './dom/events/hammer_gestures';
16
- export { DomSanitizer, } from './security/dom_sanitization_service';
17
- export { HydrationFeatureKind, provideClientHydration, withEventReplay, withHttpTransferCacheOptions, withI18nSupport, withNoHttpTransferCache, } from './hydration';
18
- export * from './private_export';
19
- export { VERSION } from './version';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0tYnJvd3Nlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYXRmb3JtLWJyb3dzZXIvc3JjL3BsYXRmb3JtLWJyb3dzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUVMLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsaUJBQWlCLEVBQ2pCLGVBQWUsRUFDZiwrQkFBK0IsR0FDaEMsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFDLElBQUksRUFBaUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDdEMsT0FBTyxFQUFDLGlCQUFpQixFQUFFLGdCQUFnQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFDLEVBQUUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xDLE9BQU8sRUFBQyxrQ0FBa0MsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxxQkFBcUIsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUNuRyxPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixtQkFBbUIsRUFFbkIsWUFBWSxHQUNiLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUNMLFlBQVksR0FPYixNQUFNLHFDQUFxQyxDQUFDO0FBQzdDLE9BQU8sRUFFTCxvQkFBb0IsRUFDcEIsc0JBQXNCLEVBQ3RCLGVBQWUsRUFDZiw0QkFBNEIsRUFDNUIsZUFBZSxFQUNmLHVCQUF1QixHQUN4QixNQUFNLGFBQWEsQ0FBQztBQUVyQixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0IHtcbiAgQXBwbGljYXRpb25Db25maWcsXG4gIGJvb3RzdHJhcEFwcGxpY2F0aW9uLFxuICBCcm93c2VyTW9kdWxlLFxuICBjcmVhdGVBcHBsaWNhdGlvbixcbiAgcGxhdGZvcm1Ccm93c2VyLFxuICBwcm92aWRlUHJvdHJhY3RvclRlc3RpbmdTdXBwb3J0LFxufSBmcm9tICcuL2Jyb3dzZXInO1xuZXhwb3J0IHtNZXRhLCBNZXRhRGVmaW5pdGlvbn0gZnJvbSAnLi9icm93c2VyL21ldGEnO1xuZXhwb3J0IHtUaXRsZX0gZnJvbSAnLi9icm93c2VyL3RpdGxlJztcbmV4cG9ydCB7ZGlzYWJsZURlYnVnVG9vbHMsIGVuYWJsZURlYnVnVG9vbHN9IGZyb20gJy4vYnJvd3Nlci90b29scy90b29scyc7XG5leHBvcnQge0J5fSBmcm9tICcuL2RvbS9kZWJ1Zy9ieSc7XG5leHBvcnQge1JFTU9WRV9TVFlMRVNfT05fQ09NUE9ORU5UX0RFU1RST1l9IGZyb20gJy4vZG9tL2RvbV9yZW5kZXJlcic7XG5leHBvcnQge0VWRU5UX01BTkFHRVJfUExVR0lOUywgRXZlbnRNYW5hZ2VyLCBFdmVudE1hbmFnZXJQbHVnaW59IGZyb20gJy4vZG9tL2V2ZW50cy9ldmVudF9tYW5hZ2VyJztcbmV4cG9ydCB7XG4gIEhBTU1FUl9HRVNUVVJFX0NPTkZJRyxcbiAgSEFNTUVSX0xPQURFUixcbiAgSGFtbWVyR2VzdHVyZUNvbmZpZyxcbiAgSGFtbWVyTG9hZGVyLFxuICBIYW1tZXJNb2R1bGUsXG59IGZyb20gJy4vZG9tL2V2ZW50cy9oYW1tZXJfZ2VzdHVyZXMnO1xuZXhwb3J0IHtcbiAgRG9tU2FuaXRpemVyLFxuICBTYWZlSHRtbCxcbiAgU2FmZVJlc291cmNlVXJsLFxuICBTYWZlU2NyaXB0LFxuICBTYWZlU3R5bGUsXG4gIFNhZmVVcmwsXG4gIFNhZmVWYWx1ZSxcbn0gZnJvbSAnLi9zZWN1cml0eS9kb21fc2FuaXRpemF0aW9uX3NlcnZpY2UnO1xuZXhwb3J0IHtcbiAgSHlkcmF0aW9uRmVhdHVyZSxcbiAgSHlkcmF0aW9uRmVhdHVyZUtpbmQsXG4gIHByb3ZpZGVDbGllbnRIeWRyYXRpb24sXG4gIHdpdGhFdmVudFJlcGxheSxcbiAgd2l0aEh0dHBUcmFuc2ZlckNhY2hlT3B0aW9ucyxcbiAgd2l0aEkxOG5TdXBwb3J0LFxuICB3aXRoTm9IdHRwVHJhbnNmZXJDYWNoZSxcbn0gZnJvbSAnLi9oeWRyYXRpb24nO1xuXG5leHBvcnQgKiBmcm9tICcuL3ByaXZhdGVfZXhwb3J0JztcbmV4cG9ydCB7VkVSU0lPTn0gZnJvbSAnLi92ZXJzaW9uJztcbiJdfQ==
@@ -1,18 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- export { ɵgetDOM } from '@angular/common';
9
- export { initDomAdapter as ɵinitDomAdapter, INTERNAL_BROWSER_PLATFORM_PROVIDERS as ɵINTERNAL_BROWSER_PLATFORM_PROVIDERS, } from './browser';
10
- export { BrowserDomAdapter as ɵBrowserDomAdapter } from './browser/browser_adapter';
11
- export { BrowserGetTestability as ɵBrowserGetTestability } from './browser/testability';
12
- export { DomRendererFactory2 as ɵDomRendererFactory2 } from './dom/dom_renderer';
13
- export { DomEventsPlugin as ɵDomEventsPlugin } from './dom/events/dom_events';
14
- export { HammerGesturesPlugin as ɵHammerGesturesPlugin } from './dom/events/hammer_gestures';
15
- export { KeyEventsPlugin as ɵKeyEventsPlugin } from './dom/events/key_events';
16
- export { SharedStylesHost as ɵSharedStylesHost } from './dom/shared_styles_host';
17
- export { DomSanitizerImpl as ɵDomSanitizerImpl } from './security/dom_sanitization_service';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpdmF0ZV9leHBvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9wbGF0Zm9ybS1icm93c2VyL3NyYy9wcml2YXRlX2V4cG9ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUNMLGNBQWMsSUFBSSxlQUFlLEVBQ2pDLG1DQUFtQyxJQUFJLG9DQUFvQyxHQUM1RSxNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQUMsaUJBQWlCLElBQUksa0JBQWtCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRixPQUFPLEVBQUMscUJBQXFCLElBQUksc0JBQXNCLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN0RixPQUFPLEVBQUMsbUJBQW1CLElBQUksb0JBQW9CLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUMvRSxPQUFPLEVBQUMsZUFBZSxJQUFJLGdCQUFnQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDNUUsT0FBTyxFQUFDLG9CQUFvQixJQUFJLHFCQUFxQixFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDM0YsT0FBTyxFQUFDLGVBQWUsSUFBSSxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzVFLE9BQU8sRUFBQyxnQkFBZ0IsSUFBSSxpQkFBaUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBRS9FLE9BQU8sRUFBQyxnQkFBZ0IsSUFBSSxpQkFBaUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmV4cG9ydCB7ybVnZXRET019IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5leHBvcnQge1xuICBpbml0RG9tQWRhcHRlciBhcyDJtWluaXREb21BZGFwdGVyLFxuICBJTlRFUk5BTF9CUk9XU0VSX1BMQVRGT1JNX1BST1ZJREVSUyBhcyDJtUlOVEVSTkFMX0JST1dTRVJfUExBVEZPUk1fUFJPVklERVJTLFxufSBmcm9tICcuL2Jyb3dzZXInO1xuZXhwb3J0IHtCcm93c2VyRG9tQWRhcHRlciBhcyDJtUJyb3dzZXJEb21BZGFwdGVyfSBmcm9tICcuL2Jyb3dzZXIvYnJvd3Nlcl9hZGFwdGVyJztcbmV4cG9ydCB7QnJvd3NlckdldFRlc3RhYmlsaXR5IGFzIMm1QnJvd3NlckdldFRlc3RhYmlsaXR5fSBmcm9tICcuL2Jyb3dzZXIvdGVzdGFiaWxpdHknO1xuZXhwb3J0IHtEb21SZW5kZXJlckZhY3RvcnkyIGFzIMm1RG9tUmVuZGVyZXJGYWN0b3J5Mn0gZnJvbSAnLi9kb20vZG9tX3JlbmRlcmVyJztcbmV4cG9ydCB7RG9tRXZlbnRzUGx1Z2luIGFzIMm1RG9tRXZlbnRzUGx1Z2lufSBmcm9tICcuL2RvbS9ldmVudHMvZG9tX2V2ZW50cyc7XG5leHBvcnQge0hhbW1lckdlc3R1cmVzUGx1Z2luIGFzIMm1SGFtbWVyR2VzdHVyZXNQbHVnaW59IGZyb20gJy4vZG9tL2V2ZW50cy9oYW1tZXJfZ2VzdHVyZXMnO1xuZXhwb3J0IHtLZXlFdmVudHNQbHVnaW4gYXMgybVLZXlFdmVudHNQbHVnaW59IGZyb20gJy4vZG9tL2V2ZW50cy9rZXlfZXZlbnRzJztcbmV4cG9ydCB7U2hhcmVkU3R5bGVzSG9zdCBhcyDJtVNoYXJlZFN0eWxlc0hvc3R9IGZyb20gJy4vZG9tL3NoYXJlZF9zdHlsZXNfaG9zdCc7XG5leHBvcnQge1J1bnRpbWVFcnJvckNvZGUgYXMgybVSdW50aW1lRXJyb3JDb2RlfSBmcm9tICcuL2Vycm9ycyc7XG5leHBvcnQge0RvbVNhbml0aXplckltcGwgYXMgybVEb21TYW5pdGl6ZXJJbXBsfSBmcm9tICcuL3NlY3VyaXR5L2RvbV9zYW5pdGl6YXRpb25fc2VydmljZSc7XG4iXX0=
@@ -1,119 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright Google LLC All Rights Reserved.
4
- *
5
- * Use of this source code is governed by an MIT-style license that can be
6
- * found in the LICENSE file at https://angular.io/license
7
- */
8
- import { DOCUMENT } from '@angular/common';
9
- import { forwardRef, Inject, Injectable, SecurityContext, ɵ_sanitizeHtml as _sanitizeHtml, ɵ_sanitizeUrl as _sanitizeUrl, ɵallowSanitizationBypassAndThrow as allowSanitizationBypassOrThrow, ɵbypassSanitizationTrustHtml as bypassSanitizationTrustHtml, ɵbypassSanitizationTrustResourceUrl as bypassSanitizationTrustResourceUrl, ɵbypassSanitizationTrustScript as bypassSanitizationTrustScript, ɵbypassSanitizationTrustStyle as bypassSanitizationTrustStyle, ɵbypassSanitizationTrustUrl as bypassSanitizationTrustUrl, ɵRuntimeError as RuntimeError, ɵunwrapSafeValue as unwrapSafeValue, ɵXSS_SECURITY_URL as XSS_SECURITY_URL, } from '@angular/core';
10
- import * as i0 from "@angular/core";
11
- export { SecurityContext };
12
- /**
13
- * DomSanitizer helps preventing Cross Site Scripting Security bugs (XSS) by sanitizing
14
- * values to be safe to use in the different DOM contexts.
15
- *
16
- * For example, when binding a URL in an `<a [href]="someValue">` hyperlink, `someValue` will be
17
- * sanitized so that an attacker cannot inject e.g. a `javascript:` URL that would execute code on
18
- * the website.
19
- *
20
- * In specific situations, it might be necessary to disable sanitization, for example if the
21
- * application genuinely needs to produce a `javascript:` style link with a dynamic value in it.
22
- * Users can bypass security by constructing a value with one of the `bypassSecurityTrust...`
23
- * methods, and then binding to that value from the template.
24
- *
25
- * These situations should be very rare, and extraordinary care must be taken to avoid creating a
26
- * Cross Site Scripting (XSS) security bug!
27
- *
28
- * When using `bypassSecurityTrust...`, make sure to call the method as early as possible and as
29
- * close as possible to the source of the value, to make it easy to verify no security bug is
30
- * created by its use.
31
- *
32
- * It is not required (and not recommended) to bypass security if the value is safe, e.g. a URL that
33
- * does not start with a suspicious protocol, or an HTML snippet that does not contain dangerous
34
- * code. The sanitizer leaves safe values intact.
35
- *
36
- * @security Calling any of the `bypassSecurityTrust...` APIs disables Angular's built-in
37
- * sanitization for the value passed in. Carefully check and audit all values and code paths going
38
- * into this call. Make sure any user data is appropriately escaped for this security context.
39
- * For more detail, see the [Security Guide](https://g.co/ng/security).
40
- *
41
- * @publicApi
42
- */
43
- export class DomSanitizer {
44
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomSanitizer, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
45
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomSanitizer, providedIn: 'root', useExisting: i0.forwardRef(() => DomSanitizerImpl) }); }
46
- }
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomSanitizer, decorators: [{
48
- type: Injectable,
49
- args: [{ providedIn: 'root', useExisting: forwardRef(() => DomSanitizerImpl) }]
50
- }] });
51
- export class DomSanitizerImpl extends DomSanitizer {
52
- constructor(_doc) {
53
- super();
54
- this._doc = _doc;
55
- }
56
- sanitize(ctx, value) {
57
- if (value == null)
58
- return null;
59
- switch (ctx) {
60
- case SecurityContext.NONE:
61
- return value;
62
- case SecurityContext.HTML:
63
- if (allowSanitizationBypassOrThrow(value, "HTML" /* BypassType.Html */)) {
64
- return unwrapSafeValue(value);
65
- }
66
- return _sanitizeHtml(this._doc, String(value)).toString();
67
- case SecurityContext.STYLE:
68
- if (allowSanitizationBypassOrThrow(value, "Style" /* BypassType.Style */)) {
69
- return unwrapSafeValue(value);
70
- }
71
- return value;
72
- case SecurityContext.SCRIPT:
73
- if (allowSanitizationBypassOrThrow(value, "Script" /* BypassType.Script */)) {
74
- return unwrapSafeValue(value);
75
- }
76
- throw new RuntimeError(5200 /* RuntimeErrorCode.SANITIZATION_UNSAFE_SCRIPT */, (typeof ngDevMode === 'undefined' || ngDevMode) &&
77
- 'unsafe value used in a script context');
78
- case SecurityContext.URL:
79
- if (allowSanitizationBypassOrThrow(value, "URL" /* BypassType.Url */)) {
80
- return unwrapSafeValue(value);
81
- }
82
- return _sanitizeUrl(String(value));
83
- case SecurityContext.RESOURCE_URL:
84
- if (allowSanitizationBypassOrThrow(value, "ResourceURL" /* BypassType.ResourceUrl */)) {
85
- return unwrapSafeValue(value);
86
- }
87
- throw new RuntimeError(5201 /* RuntimeErrorCode.SANITIZATION_UNSAFE_RESOURCE_URL */, (typeof ngDevMode === 'undefined' || ngDevMode) &&
88
- `unsafe value used in a resource URL context (see ${XSS_SECURITY_URL})`);
89
- default:
90
- throw new RuntimeError(5202 /* RuntimeErrorCode.SANITIZATION_UNEXPECTED_CTX */, (typeof ngDevMode === 'undefined' || ngDevMode) &&
91
- `Unexpected SecurityContext ${ctx} (see ${XSS_SECURITY_URL})`);
92
- }
93
- }
94
- bypassSecurityTrustHtml(value) {
95
- return bypassSanitizationTrustHtml(value);
96
- }
97
- bypassSecurityTrustStyle(value) {
98
- return bypassSanitizationTrustStyle(value);
99
- }
100
- bypassSecurityTrustScript(value) {
101
- return bypassSanitizationTrustScript(value);
102
- }
103
- bypassSecurityTrustUrl(value) {
104
- return bypassSanitizationTrustUrl(value);
105
- }
106
- bypassSecurityTrustResourceUrl(value) {
107
- return bypassSanitizationTrustResourceUrl(value);
108
- }
109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomSanitizerImpl, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
110
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomSanitizerImpl, providedIn: 'root' }); }
111
- }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0-next.1", ngImport: i0, type: DomSanitizerImpl, decorators: [{
113
- type: Injectable,
114
- args: [{ providedIn: 'root' }]
115
- }], ctorParameters: () => [{ type: undefined, decorators: [{
116
- type: Inject,
117
- args: [DOCUMENT]
118
- }] }] });
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tX3Nhbml0aXphdGlvbl9zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhdGZvcm0tYnJvd3Nlci9zcmMvc2VjdXJpdHkvZG9tX3Nhbml0aXphdGlvbl9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQ0wsVUFBVSxFQUNWLE1BQU0sRUFDTixVQUFVLEVBRVYsZUFBZSxFQUNmLGNBQWMsSUFBSSxhQUFhLEVBQy9CLGFBQWEsSUFBSSxZQUFZLEVBQzdCLGdDQUFnQyxJQUFJLDhCQUE4QixFQUNsRSw0QkFBNEIsSUFBSSwyQkFBMkIsRUFDM0QsbUNBQW1DLElBQUksa0NBQWtDLEVBQ3pFLDhCQUE4QixJQUFJLDZCQUE2QixFQUMvRCw2QkFBNkIsSUFBSSw0QkFBNEIsRUFDN0QsMkJBQTJCLElBQUksMEJBQTBCLEVBRXpELGFBQWEsSUFBSSxZQUFZLEVBQzdCLGdCQUFnQixJQUFJLGVBQWUsRUFDbkMsaUJBQWlCLElBQUksZ0JBQWdCLEdBQ3RDLE1BQU0sZUFBZSxDQUFDOztBQUl2QixPQUFPLEVBQUMsZUFBZSxFQUFDLENBQUM7QUE0Q3pCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0E4Qkc7QUFFSCxNQUFNLE9BQWdCLFlBQVk7eUhBQVosWUFBWTs2SEFBWixZQUFZLGNBRFQsTUFBTSxtQ0FBZ0MsZ0JBQWdCOztzR0FDekQsWUFBWTtrQkFEakMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFDOztBQTJEakYsTUFBTSxPQUFPLGdCQUFpQixTQUFRLFlBQVk7SUFDaEQsWUFBc0MsSUFBUztRQUM3QyxLQUFLLEVBQUUsQ0FB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biAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIGZvcndhcmRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgU2FuaXRpemVyLFxuICBTZWN1cml0eUNvbnRleHQsXG4gIMm1X3Nhbml0aXplSHRtbCBhcyBfc2FuaXRpemVIdG1sLFxuICDJtV9zYW5pdGl6ZVVybCBhcyBfc2FuaXRpemVVcmwsXG4gIMm1YWxsb3dTYW5pdGl6YXRpb25CeXBhc3NBbmRUaHJvdyBhcyBhbGxvd1Nhbml0aXphdGlvbkJ5cGFzc09yVGhyb3csXG4gIMm1YnlwYXNzU2FuaXRpemF0aW9uVHJ1c3RIdG1sIGFzIGJ5cGFzc1Nhbml0aXphdGlvblRydXN0SHRtbCxcbiAgybVieXBhc3NTYW5pdGl6YXRpb25UcnVzdFJlc291cmNlVXJsIGFzIGJ5cGFzc1Nhbml0aXphdGlvblRydXN0UmVzb3VyY2VVcmwsXG4gIMm1YnlwYXNzU2FuaXRpemF0aW9uVHJ1c3RTY3JpcHQgYXMgYnlwYXNzU2FuaXRpemF0aW9uVHJ1c3RTY3JpcHQsXG4gIMm1YnlwYXNzU2FuaXRpemF0aW9uVHJ1c3RTdHlsZSBhcyBieXBhc3NTYW5pdGl6YXRpb25UcnVzdFN0eWxlLFxuICDJtWJ5cGFzc1Nhbml0aXphdGlvblRydXN0VXJsIGFzIGJ5cGFzc1Nhbml0aXphdGlvblRydXN0VXJsLFxuICDJtUJ5cGFzc1R5cGUgYXMgQnlwYXNzVHlwZSxcbiAgybVSdW50aW1lRXJyb3IgYXMgUnVudGltZUVycm9yLFxuICDJtXVud3JhcFNhZmVWYWx1ZSBhcyB1bndyYXBTYWZlVmFsdWUsXG4gIMm1WFNTX1NFQ1VSSVRZX1VSTCBhcyBYU1NfU0VDVVJJVFlfVVJMLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtSdW50aW1lRXJyb3JDb2RlfSBmcm9tICcuLi9lcnJvcnMnO1xuXG5leHBvcnQge1NlY3VyaXR5Q29udGV4dH07XG5cbi8qKlxuICogTWFya2VyIGludGVyZmFjZSBmb3IgYSB2YWx1ZSB0aGF0J3Mgc2FmZSB0byB1c2UgaW4gYSBwYXJ0aWN1bGFyIGNvbnRleHQuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVWYWx1ZSB7fVxuXG4vKipcbiAqIE1hcmtlciBpbnRlcmZhY2UgZm9yIGEgdmFsdWUgdGhhdCdzIHNhZmUgdG8gdXNlIGFzIEhUTUwuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVIdG1sIGV4dGVuZHMgU2FmZVZhbHVlIHt9XG5cbi8qKlxuICogTWFya2VyIGludGVyZmFjZSBmb3IgYSB2YWx1ZSB0aGF0J3Mgc2FmZSB0byB1c2UgYXMgc3R5bGUgKENTUykuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVTdHlsZSBleHRlbmRzIFNhZmVWYWx1ZSB7fVxuXG4vKipcbiAqIE1hcmtlciBpbnRlcmZhY2UgZm9yIGEgdmFsdWUgdGhhdCdzIHNhZmUgdG8gdXNlIGFzIEphdmFTY3JpcHQuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVTY3JpcHQgZXh0ZW5kcyBTYWZlVmFsdWUge31cblxuLyoqXG4gKiBNYXJrZXIgaW50ZXJmYWNlIGZvciBhIHZhbHVlIHRoYXQncyBzYWZlIHRvIHVzZSBhcyBhIFVSTCBsaW5raW5nIHRvIGEgZG9jdW1lbnQuXG4gKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNhZmVVcmwgZXh0ZW5kcyBTYWZlVmFsdWUge31cblxuLyoqXG4gKiBNYXJrZXIgaW50ZXJmYWNlIGZvciBhIHZhbHVlIHRoYXQncyBzYWZlIHRvIHVzZSBhcyBhIFVSTCB0byBsb2FkIGV4ZWN1dGFibGUgY29kZSBmcm9tLlxuICpcbiAqIEBwdWJsaWNBcGlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYWZlUmVzb3VyY2VVcmwgZXh0ZW5kcyBTYWZlVmFsdWUge31cblxuLyoqXG4gKiBEb21TYW5pdGl6ZXIgaGVscHMgcHJldmVudGluZyBDcm9zcyBTaXRlIFNjcmlwdGluZyBTZWN1cml0eSBidWdzIChYU1MpIGJ5IHNhbml0aXppbmdcbiAqIHZhbHVlcyB0byBiZSBzYWZlIHRvIHVzZSBpbiB0aGUgZGlmZmVyZW50IERPTSBjb250ZXh0cy5cbiAqXG4gKiBGb3IgZXhhbXBsZSwgd2hlbiBiaW5kaW5nIGEgVVJMIGluIGFuIGA8YSBbaHJlZl09XCJzb21lVmFsdWVcIj5gIGh5cGVybGluaywgYHNvbWVWYWx1ZWAgd2lsbCBiZVxuICogc2FuaXRpemVkIHNvIHRoYXQgYW4gYXR0YWNrZXIgY2Fubm90IGluamVjdCBlLmcuIGEgYGphdmFzY3JpcHQ6YCBVUkwgdGhhdCB3b3VsZCBleGVjdXRlIGNvZGUgb25cbiAqIHRoZSB3ZWJzaXRlLlxuICpcbiAqIEluIHNwZWNpZmljIHNpdHVhdGlvbnMsIGl0IG1pZ2h0IGJlIG5lY2Vzc2FyeSB0byBkaXNhYmxlIHNhbml0aXphdGlvbiwgZm9yIGV4YW1wbGUgaWYgdGhlXG4gKiBhcHBsaWNhdGlvbiBnZW51aW5lbHkgbmVlZHMgdG8gcHJvZHVjZSBhIGBqYXZhc2NyaXB0OmAgc3R5bGUgbGluayB3aXRoIGEgZHluYW1pYyB2YWx1ZSBpbiBpdC5cbiAqIFVzZXJzIGNhbiBieXBhc3Mgc2VjdXJpdHkgYnkgY29uc3RydWN0aW5nIGEgdmFsdWUgd2l0aCBvbmUgb2YgdGhlIGBieXBhc3NTZWN1cml0eVRydXN0Li4uYFxuICogbWV0aG9kcywgYW5kIHRoZW4gYmluZGluZyB0byB0aGF0IHZhbHVlIGZyb20gdGhlIHRlbXBsYXRlLlxuICpcbiAqIFRoZXNlIHNpdHVhdGlvbnMgc2hvdWxkIGJlIHZlcnkgcmFyZSwgYW5kIGV4dHJhb3JkaW5hcnkgY2FyZSBtdXN0IGJlIHRha2VuIHRvIGF2b2lkIGNyZWF0aW5nIGFcbiAqIENyb3NzIFNpdGUgU2NyaXB0aW5nIChYU1MpIHNlY3VyaXR5IGJ1ZyFcbiAqXG4gKiBXaGVuIHVzaW5nIGBieXBhc3NTZWN1cml0eVRydXN0Li4uYCwgbWFrZSBzdXJlIHRvIGNhbGwgdGhlIG1ldGhvZCBhcyBlYXJseSBhcyBwb3NzaWJsZSBhbmQgYXNcbiAqIGNsb3NlIGFzIHBvc3NpYmxlIHRvIHRoZSBzb3VyY2Ugb2YgdGhlIHZhbHVlLCB0byBtYWtlIGl0IGVhc3kgdG8gdmVyaWZ5IG5vIHNlY3VyaXR5IGJ1ZyBpc1xuICogY3JlYXRlZCBieSBpdHMgdXNlLlxuICpcbiAqIEl0IGlzIG5vdCByZXF1aXJlZCAoYW5kIG5vdCByZWNvbW1lbmRlZCkgdG8gYnlwYXNzIHNlY3VyaXR5IGlmIHRoZSB2YWx1ZSBpcyBzYWZlLCBlLmcuIGEgVVJMIHRoYXRcbiAqIGRvZXMgbm90IHN0YXJ0IHdpdGggYSBzdXNwaWNpb3VzIHByb3RvY29sLCBvciBhbiBIVE1MIHNuaXBwZXQgdGhhdCBkb2VzIG5vdCBjb250YWluIGRhbmdlcm91c1xuICogY29kZS4gVGhlIHNhbml0aXplciBsZWF2ZXMgc2FmZSB2YWx1ZXMgaW50YWN0LlxuICpcbiAqIEBzZWN1cml0eSBDYWxsaW5nIGFueSBvZiB0aGUgYGJ5cGFzc1NlY3VyaXR5VHJ1c3QuLi5gIEFQSXMgZGlzYWJsZXMgQW5ndWxhcidzIGJ1aWx0LWluXG4gKiBzYW5pdGl6YXRpb24gZm9yIHRoZSB2YWx1ZSBwYXNzZWQgaW4uIENhcmVmdWxseSBjaGVjayBhbmQgYXVkaXQgYWxsIHZhbHVlcyBhbmQgY29kZSBwYXRocyBnb2luZ1xuICogaW50byB0aGlzIGNhbGwuIE1ha2Ugc3VyZSBhbnkgdXNlciBkYXRhIGlzIGFwcHJvcHJpYXRlbHkgZXNjYXBlZCBmb3IgdGhpcyBzZWN1cml0eSBjb250ZXh0LlxuICogRm9yIG1vcmUgZGV0YWlsLCBzZWUgdGhlIFtTZWN1cml0eSBHdWlkZV0oaHR0cHM6Ly9nLmNvL25nL3NlY3VyaXR5KS5cbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCcsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IERvbVNhbml0aXplckltcGwpfSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEb21TYW5pdGl6ZXIgaW1wbGVtZW50cyBTYW5pdGl6ZXIge1xuICAvKipcbiAgICogR2V0cyBhIHNhZmUgdmFsdWUgZnJvbSBlaXRoZXIgYSBrbm93biBzYWZlIHZhbHVlIG9yIGEgdmFsdWUgd2l0aCB1bmtub3duIHNhZmV0eS5cbiAgICpcbiAgICogSWYgdGhlIGdpdmVuIHZhbHVlIGlzIGFscmVhZHkgYSBgU2FmZVZhbHVlYCwgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgdW53cmFwcGVkIHZhbHVlLlxuICAgKiBJZiB0aGUgc2VjdXJpdHkgY29udGV4dCBpcyBIVE1MIGFuZCB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBwbGFpbiBzdHJpbmcsIHRoaXMgbWV0aG9kXG4gICAqIHNhbml0aXplcyB0aGUgc3RyaW5nLCByZW1vdmluZyBhbnkgcG90ZW50aWFsbHkgdW5zYWZlIGNvbnRlbnQuXG4gICAqIEZvciBhbnkgb3RoZXIgc2VjdXJpdHkgY29udGV4dCwgdGhpcyBtZXRob2QgdGhyb3dzIGFuIGVycm9yIGlmIHByb3ZpZGVkXG4gICAqIHdpdGggYSBwbGFpbiBzdHJpbmcuXG4gICAqL1xuICBhYnN0cmFjdCBzYW5pdGl6ZShjb250ZXh0OiBTZWN1cml0eUNvbnRleHQsIHZhbHVlOiBTYWZlVmFsdWUgfCBzdHJpbmcgfCBudWxsKTogc3RyaW5nIHwgbnVsbDtcblxuICAvKipcbiAgICogQnlwYXNzIHNlY3VyaXR5IGFuZCB0cnVzdCB0aGUgZ2l2ZW4gdmFsdWUgdG8gYmUgc2FmZSBIVE1MLiBPbmx5IHVzZSB0aGlzIHdoZW4gdGhlIGJvdW5kIEhUTUxcbiAgICogaXMgdW5zYWZlIChlLmcuIGNvbnRhaW5zIGA8c2NyaXB0PmAgdGFncykgYW5kIHRoZSBjb2RlIHNob3VsZCBiZSBleGVjdXRlZC4gVGhlIHNhbml0aXplciB3aWxsXG4gICAqIGxlYXZlIHNhZmUgSFRNTCBpbnRhY3QsIHNvIGluIG1vc3Qgc2l0dWF0aW9ucyB0aGlzIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWQuXG4gICAqXG4gICAqICoqV0FSTklORzoqKiBjYWxsaW5nIHRoaXMgbWV0aG9kIHdpdGggdW50cnVzdGVkIHVzZXIgZGF0YSBleHBvc2VzIHlvdXIgYXBwbGljYXRpb24gdG8gWFNTXG4gICAqIHNlY3VyaXR5IHJpc2tzIVxuICAgKi9cbiAgYWJzdHJhY3QgYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodmFsdWU6IHN0cmluZyk6IFNhZmVIdG1sO1xuXG4gIC8qKlxuICAgKiBCeXBhc3Mgc2VjdXJpdHkgYW5kIHRydXN0IHRoZSBnaXZlbiB2YWx1ZSB0byBiZSBzYWZlIHN0eWxlIHZhbHVlIChDU1MpLlxuICAgKlxuICAgKiAqKldBUk5JTkc6KiogY2FsbGluZyB0aGlzIG1ldGhvZCB3aXRoIHVudHJ1c3RlZCB1c2VyIGRhdGEgZXhwb3NlcyB5b3VyIGFwcGxpY2F0aW9uIHRvIFhTU1xuICAgKiBzZWN1cml0eSByaXNrcyFcbiAgICovXG4gIGFic3RyYWN0IGJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSh2YWx1ZTogc3RyaW5nKTogU2FmZVN0eWxlO1xuXG4gIC8qKlxuICAgKiBCeXBhc3Mgc2VjdXJpdHkgYW5kIHRydXN0IHRoZSBnaXZlbiB2YWx1ZSB0byBiZSBzYWZlIEphdmFTY3JpcHQuXG4gICAqXG4gICAqICoqV0FSTklORzoqKiBjYWxsaW5nIHRoaXMgbWV0aG9kIHdpdGggdW50cnVzdGVkIHVzZXIgZGF0YSBleHBvc2VzIHlvdXIgYXBwbGljYXRpb24gdG8gWFNTXG4gICAqIHNlY3VyaXR5IHJpc2tzIVxuICAgKi9cbiAgYWJzdHJhY3QgYnlwYXNzU2VjdXJpdHlUcnVzdFNjcmlwdCh2YWx1ZTogc3RyaW5nKTogU2FmZVNjcmlwdDtcblxuICAvKipcbiAgICogQnlwYXNzIHNlY3VyaXR5IGFuZCB0cnVzdCB0aGUgZ2l2ZW4gdmFsdWUgdG8gYmUgYSBzYWZlIHN0eWxlIFVSTCwgaS5lLiBhIHZhbHVlIHRoYXQgY2FuIGJlIHVzZWRcbiAgICogaW4gaHlwZXJsaW5rcyBvciBgPGltZyBzcmM+YC5cbiAgICpcbiAgICogKipXQVJOSU5HOioqIGNhbGxpbmcgdGhpcyBtZXRob2Qgd2l0aCB1bnRydXN0ZWQgdXNlciBkYXRhIGV4cG9zZXMgeW91ciBhcHBsaWNhdGlvbiB0byBYU1NcbiAgICogc2VjdXJpdHkgcmlza3MhXG4gICAqL1xuICBhYnN0cmFjdCBieXBhc3NTZWN1cml0eVRydXN0VXJsKHZhbHVlOiBzdHJpbmcpOiBTYWZlVXJsO1xuXG4gIC8qKlxuICAgKiBCeXBhc3Mgc2VjdXJpdHkgYW5kIHRydXN0IHRoZSBnaXZlbiB2YWx1ZSB0byBiZSBhIHNhZmUgcmVzb3VyY2UgVVJMLCBpLmUuIGEgbG9jYXRpb24gdGhhdCBtYXlcbiAgICogYmUgdXNlZCB0byBsb2FkIGV4ZWN1dGFibGUgY29kZSBmcm9tLCBsaWtlIGA8c2NyaXB0IHNyYz5gLCBvciBgPGlmcmFtZSBzcmM+YC5cbiAgICpcbiAgICogKipXQVJOSU5HOioqIGNhbGxpbmcgdGhpcyBtZXRob2Qgd2l0aCB1bnRydXN0ZWQgdXNlciBkYXRhIGV4cG9zZXMgeW91ciBhcHBsaWNhdGlvbiB0byBYU1NcbiAgICogc2VjdXJpdHkgcmlza3MhXG4gICAqL1xuICBhYnN0cmFjdCBieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwodmFsdWU6IHN0cmluZyk6IFNhZmVSZXNvdXJjZVVybDtcbn1cblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgRG9tU2FuaXRpemVySW1wbCBleHRlbmRzIERvbVNhbml0aXplciB7XG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvYzogYW55KSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG92ZXJyaWRlIHNhbml0aXplKGN0eDogU2VjdXJpdHlDb250ZXh0LCB2YWx1ZTogU2FmZVZhbHVlIHwgc3RyaW5nIHwgbnVsbCk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICBzd2l0Y2ggKGN0eCkge1xuICAgICAgY2FzZSBTZWN1cml0eUNvbnRleHQuTk9ORTpcbiAgICAgICAgcmV0dXJuIHZhbHVlIGFzIHN0cmluZztcbiAgICAgIGNhc2UgU2VjdXJpdHlDb250ZXh0LkhUTUw6XG4gICAgICAgIGlmIChhbGxvd1Nhbml0aXphdGlvbkJ5cGFzc09yVGhyb3codmFsdWUsIEJ5cGFzc1R5cGUuSHRtbCkpIHtcbiAgICAgICAgICByZXR1cm4gdW53cmFwU2FmZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gX3Nhbml0aXplSHRtbCh0aGlzLl9kb2MsIFN0cmluZyh2YWx1ZSkpLnRvU3RyaW5nKCk7XG4gICAgICBjYXNlIFNlY3VyaXR5Q29udGV4dC5TVFlMRTpcbiAgICAgICAgaWYgKGFsbG93U2FuaXRpemF0aW9uQnlwYXNzT3JUaHJvdyh2YWx1ZSwgQnlwYXNzVHlwZS5TdHlsZSkpIHtcbiAgICAgICAgICByZXR1cm4gdW53cmFwU2FmZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsdWUgYXMgc3RyaW5nO1xuICAgICAgY2FzZSBTZWN1cml0eUNvbnRleHQuU0NSSVBUOlxuICAgICAgICBpZiAoYWxsb3dTYW5pdGl6YXRpb25CeXBhc3NPclRocm93KHZhbHVlLCBCeXBhc3NUeXBlLlNjcmlwdCkpIHtcbiAgICAgICAgICByZXR1cm4gdW53cmFwU2FmZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgUnVudGltZUVycm9yKFxuICAgICAgICAgIFJ1bnRpbWVFcnJvckNvZGUuU0FOSVRJWkFUSU9OX1VOU0FGRV9TQ1JJUFQsXG4gICAgICAgICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiZcbiAgICAgICAgICAgICd1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHNjcmlwdCBjb250ZXh0JyxcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgU2VjdXJpdHlDb250ZXh0LlVSTDpcbiAgICAgICAgaWYgKGFsbG93U2FuaXRpemF0aW9uQnlwYXNzT3JUaHJvdyh2YWx1ZSwgQnlwYXNzVHlwZS5VcmwpKSB7XG4gICAgICAgICAgcmV0dXJuIHVud3JhcFNhZmVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIF9zYW5pdGl6ZVVybChTdHJpbmcodmFsdWUpKTtcbiAgICAgIGNhc2UgU2VjdXJpdHlDb250ZXh0LlJFU09VUkNFX1VSTDpcbiAgICAgICAgaWYgKGFsbG93U2FuaXRpemF0aW9uQnlwYXNzT3JUaHJvdyh2YWx1ZSwgQnlwYXNzVHlwZS5SZXNvdXJjZVVybCkpIHtcbiAgICAgICAgICByZXR1cm4gdW53cmFwU2FmZVZhbHVlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgUnVudGltZUVycm9yKFxuICAgICAgICAgIFJ1bnRpbWVFcnJvckNvZGUuU0FOSVRJWkFUSU9OX1VOU0FGRV9SRVNPVVJDRV9VUkwsXG4gICAgICAgICAgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiZcbiAgICAgICAgICAgIGB1bnNhZmUgdmFsdWUgdXNlZCBpbiBhIHJlc291cmNlIFVSTCBjb250ZXh0IChzZWUgJHtYU1NfU0VDVVJJVFlfVVJMfSlgLFxuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFcnJvcihcbiAgICAgICAgICBSdW50aW1lRXJyb3JDb2RlLlNBTklUSVpBVElPTl9VTkVYUEVDVEVEX0NUWCxcbiAgICAgICAgICAodHlwZW9mIG5nRGV2TW9kZSA9PT0gJ3VuZGVmaW5lZCcgfHwgbmdEZXZNb2RlKSAmJlxuICAgICAgICAgICAgYFVuZXhwZWN0ZWQgU2VjdXJpdHlDb250ZXh0ICR7Y3R4fSAoc2VlICR7WFNTX1NFQ1VSSVRZX1VSTH0pYCxcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBvdmVycmlkZSBieXBhc3NTZWN1cml0eVRydXN0SHRtbCh2YWx1ZTogc3RyaW5nKTogU2FmZUh0bWwge1xuICAgIHJldHVybiBieXBhc3NTYW5pdGl6YXRpb25UcnVzdEh0bWwodmFsdWUpO1xuICB9XG4gIG92ZXJyaWRlIGJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSh2YWx1ZTogc3RyaW5nKTogU2FmZVN0eWxlIHtcbiAgICByZXR1cm4gYnlwYXNzU2FuaXRpemF0aW9uVHJ1c3RTdHlsZSh2YWx1ZSk7XG4gIH1cbiAgb3ZlcnJpZGUgYnlwYXNzU2VjdXJpdHlUcnVzdFNjcmlwdCh2YWx1ZTogc3RyaW5nKTogU2FmZVNjcmlwdCB7XG4gICAgcmV0dXJuIGJ5cGFzc1Nhbml0aXphdGlvblRydXN0U2NyaXB0KHZhbHVlKTtcbiAgfVxuICBvdmVycmlkZSBieXBhc3NTZWN1cml0eVRydXN0VXJsKHZhbHVlOiBzdHJpbmcpOiBTYWZlVXJsIHtcbiAgICByZXR1cm4gYnlwYXNzU2FuaXRpemF0aW9uVHJ1c3RVcmwodmFsdWUpO1xuICB9XG4gIG92ZXJyaWRlIGJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh2YWx1ZTogc3RyaW5nKTogU2FmZVJlc291cmNlVXJsIHtcbiAgICByZXR1cm4gYnlwYXNzU2FuaXRpemF0aW9uVHJ1c3RSZXNvdXJjZVVybCh2YWx1ZSk7XG4gIH1cbn1cbiJdfQ==