@angular/material 12.0.0-rc.0 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/bundles/material-chips.umd.js.map +1 -1
  2. package/bundles/material-core.umd.js +27 -30
  3. package/bundles/material-core.umd.js.map +1 -1
  4. package/bundles/material-datepicker-testing.umd.js +5 -5
  5. package/bundles/material-datepicker-testing.umd.js.map +1 -1
  6. package/bundles/material-datepicker.umd.js +57 -7
  7. package/bundles/material-datepicker.umd.js.map +1 -1
  8. package/bundles/material-form-field-testing.umd.js +16 -8
  9. package/bundles/material-form-field-testing.umd.js.map +1 -1
  10. package/bundles/material-menu.umd.js.map +1 -1
  11. package/bundles/material-paginator.umd.js +1 -0
  12. package/bundles/material-paginator.umd.js.map +1 -1
  13. package/bundles/material-table-testing.umd.js +103 -143
  14. package/bundles/material-table-testing.umd.js.map +1 -1
  15. package/bundles/material-tabs.umd.js +8 -1
  16. package/bundles/material-tabs.umd.js.map +1 -1
  17. package/bundles/material-tree.umd.js +1 -3
  18. package/bundles/material-tree.umd.js.map +1 -1
  19. package/chips/chip.d.ts +2 -1
  20. package/chips/index.metadata.json +1 -1
  21. package/core/common-behaviors/color.d.ts +3 -3
  22. package/core/common-behaviors/constructor.d.ts +1 -3
  23. package/core/common-behaviors/disable-ripple.d.ts +2 -2
  24. package/core/common-behaviors/disabled.d.ts +3 -3
  25. package/core/common-behaviors/error-state.d.ts +3 -3
  26. package/core/common-behaviors/tabindex.d.ts +1 -1
  27. package/core/index.metadata.json +1 -1
  28. package/core/ripple/ripple-renderer.d.ts +2 -0
  29. package/core/ripple/ripple.d.ts +2 -0
  30. package/datepicker/date-range-input-parts.d.ts +2 -0
  31. package/datepicker/date-range-input.d.ts +6 -1
  32. package/datepicker/date-selection-model.d.ts +2 -0
  33. package/datepicker/datepicker-base.d.ts +1 -0
  34. package/datepicker/datepicker-input.d.ts +4 -2
  35. package/datepicker/index.metadata.json +1 -1
  36. package/datepicker/testing/datepicker-input-harness-base.d.ts +3 -2
  37. package/esm2015/chips/chip.js +1 -1
  38. package/esm2015/core/common-behaviors/color.js +1 -2
  39. package/esm2015/core/common-behaviors/common-module.js +1 -1
  40. package/esm2015/core/common-behaviors/constructor.js +1 -1
  41. package/esm2015/core/common-behaviors/disable-ripple.js +3 -8
  42. package/esm2015/core/common-behaviors/disabled.js +1 -2
  43. package/esm2015/core/common-behaviors/error-state.js +1 -5
  44. package/esm2015/core/common-behaviors/tabindex.js +3 -10
  45. package/esm2015/core/ripple/ripple-renderer.js +9 -1
  46. package/esm2015/core/ripple/ripple.js +8 -1
  47. package/esm2015/core/version.js +1 -1
  48. package/esm2015/datepicker/date-range-input-parts.js +23 -1
  49. package/esm2015/datepicker/date-range-input.js +18 -3
  50. package/esm2015/datepicker/date-selection-model.js +3 -2
  51. package/esm2015/datepicker/datepicker-base.js +8 -3
  52. package/esm2015/datepicker/datepicker-input.js +8 -1
  53. package/esm2015/datepicker/datepicker-toggle.js +1 -1
  54. package/esm2015/datepicker/testing/datepicker-input-harness-base.js +4 -3
  55. package/esm2015/form-field/testing/form-field-harness.js +12 -3
  56. package/esm2015/menu/menu-trigger.js +1 -1
  57. package/esm2015/menu/menu.js +1 -1
  58. package/esm2015/paginator/paginator.js +2 -1
  59. package/esm2015/table/testing/cell-harness.js +9 -9
  60. package/esm2015/table/testing/row-harness.js +38 -70
  61. package/esm2015/table/testing/table-harness.js +23 -15
  62. package/esm2015/tabs/paginated-tab-header.js +2 -2
  63. package/esm2015/tabs/tab-group.js +8 -1
  64. package/esm2015/tree/data-source/nested-data-source.js +2 -4
  65. package/fesm2015/chips.js.map +1 -1
  66. package/fesm2015/core.js +21 -24
  67. package/fesm2015/core.js.map +1 -1
  68. package/fesm2015/datepicker/testing.js +2 -1
  69. package/fesm2015/datepicker/testing.js.map +1 -1
  70. package/fesm2015/datepicker.js +55 -5
  71. package/fesm2015/datepicker.js.map +1 -1
  72. package/fesm2015/form-field/testing.js +11 -2
  73. package/fesm2015/form-field/testing.js.map +1 -1
  74. package/fesm2015/menu.js.map +1 -1
  75. package/fesm2015/paginator.js +1 -0
  76. package/fesm2015/paginator.js.map +1 -1
  77. package/fesm2015/table/testing.js +66 -90
  78. package/fesm2015/table/testing.js.map +1 -1
  79. package/fesm2015/tabs.js +8 -1
  80. package/fesm2015/tabs.js.map +1 -1
  81. package/fesm2015/tree.js +1 -3
  82. package/fesm2015/tree.js.map +1 -1
  83. package/form-field/testing/form-field-harness.d.ts +6 -1
  84. package/package.json +6 -6
  85. package/paginator/index.metadata.json +1 -1
  86. package/prebuilt-themes/deeppurple-amber.css +1 -1
  87. package/prebuilt-themes/indigo-pink.css +1 -1
  88. package/prebuilt-themes/pink-bluegrey.css +1 -1
  89. package/prebuilt-themes/purple-green.css +1 -1
  90. package/schematics/collection.json +0 -6
  91. package/schematics/ng-add/index.js +2 -2
  92. package/schematics/ng-update/index.js +3 -1
  93. package/schematics/{ng-generate/theming-api → ng-update/migrations/theming-api-v12}/config.d.ts +6 -0
  94. package/schematics/ng-update/migrations/theming-api-v12/config.js +206 -0
  95. package/schematics/{ng-generate/theming-api → ng-update/migrations/theming-api-v12}/migration.d.ts +0 -0
  96. package/schematics/ng-update/migrations/theming-api-v12/migration.js +234 -0
  97. package/schematics/ng-update/migrations/theming-api-v12/theming-api-migration.d.ts +18 -0
  98. package/schematics/ng-update/migrations/theming-api-v12/theming-api-migration.js +45 -0
  99. package/table/testing/cell-harness.d.ts +2 -1
  100. package/table/testing/row-harness.d.ts +21 -22
  101. package/table/testing/table-harness.d.ts +32 -13
  102. package/tabs/_tabs-theme.scss +5 -2
  103. package/tabs/index.metadata.json +1 -1
  104. package/schematics/ng-generate/theming-api/config.js +0 -183
  105. package/schematics/ng-generate/theming-api/index.d.ts +0 -10
  106. package/schematics/ng-generate/theming-api/index.js +0 -26
  107. package/schematics/ng-generate/theming-api/migration.js +0 -223
  108. package/schematics/ng-generate/theming-api/schema.d.ts +0 -9
  109. package/schematics/ng-generate/theming-api/schema.js +0 -10
  110. package/schematics/ng-generate/theming-api/schema.json +0 -7
@@ -1,183 +0,0 @@
1
- "use strict";
2
- /**
3
- * @license
4
- * Copyright Google LLC All Rights Reserved.
5
- *
6
- * Use of this source code is governed by an MIT-style license that can be
7
- * found in the LICENSE file at https://angular.io/license
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.removedMaterialVariables = exports.cdkMixins = exports.cdkVariables = exports.materialVariables = exports.materialFunctions = exports.materialMixins = void 0;
11
- /** Mapping of Material mixins that should be renamed. */
12
- exports.materialMixins = {
13
- 'mat-core': 'core',
14
- 'mat-core-color': 'core-color',
15
- 'mat-core-theme': 'core-theme',
16
- 'angular-material-theme': 'all-component-themes',
17
- 'angular-material-typography': 'all-component-typographies',
18
- 'angular-material-color': 'all-component-colors',
19
- 'mat-base-typography': 'typography-hierarchy',
20
- 'mat-typography-level-to-styles': 'typography-level',
21
- 'mat-elevation': 'elevation',
22
- 'mat-overridable-elevation': 'overridable-elevation',
23
- 'mat-elevation-transition': 'elevation-transition',
24
- 'mat-ripple': 'ripple',
25
- 'mat-ripple-color': 'ripple-color',
26
- 'mat-ripple-theme': 'ripple-theme',
27
- 'mat-strong-focus-indicators': 'strong-focus-indicators',
28
- 'mat-strong-focus-indicators-color': 'strong-focus-indicators-color',
29
- 'mat-strong-focus-indicators-theme': 'strong-focus-indicators-theme',
30
- 'mat-font-shorthand': 'font-shorthand',
31
- // The expansion panel is a special case, because the package is called `expansion`, but the
32
- // mixins were prefixed with `expansion-panel`. This was corrected by the Sass module migration.
33
- 'mat-expansion-panel-theme': 'expansion-theme',
34
- 'mat-expansion-panel-color': 'expansion-color',
35
- 'mat-expansion-panel-typography': 'expansion-typography',
36
- };
37
- // The component themes all follow the same pattern so we can spare ourselves some typing.
38
- [
39
- 'option', 'optgroup', 'pseudo-checkbox', 'autocomplete', 'badge', 'bottom-sheet', 'button',
40
- 'button-toggle', 'card', 'checkbox', 'chips', 'divider', 'table', 'datepicker', 'dialog',
41
- 'grid-list', 'icon', 'input', 'list', 'menu', 'paginator', 'progress-bar', 'progress-spinner',
42
- 'radio', 'select', 'sidenav', 'slide-toggle', 'slider', 'stepper', 'sort', 'tabs', 'toolbar',
43
- 'tooltip', 'snack-bar', 'form-field', 'tree'
44
- ].forEach(name => {
45
- exports.materialMixins[`mat-${name}-theme`] = `${name}-theme`;
46
- exports.materialMixins[`mat-${name}-color`] = `${name}-color`;
47
- exports.materialMixins[`mat-${name}-typography`] = `${name}-typography`;
48
- });
49
- /** Mapping of Material functions that should be renamed. */
50
- exports.materialFunctions = {
51
- 'mat-color': 'get-color-from-palette',
52
- 'mat-contrast': 'get-contrast-color-from-palette',
53
- 'mat-palette': 'define-palette',
54
- 'mat-dark-theme': 'define-dark-theme',
55
- 'mat-light-theme': 'define-light-theme',
56
- 'mat-typography-level': 'define-typography-level',
57
- 'mat-typography-config': 'define-typography-config',
58
- 'mat-font-size': 'font-size',
59
- 'mat-line-height': 'line-height',
60
- 'mat-font-weight': 'font-weight',
61
- 'mat-letter-spacing': 'letter-spacing',
62
- 'mat-font-family': 'font-family',
63
- };
64
- /** Mapping of Material variables that should be renamed. */
65
- exports.materialVariables = {
66
- 'mat-light-theme-background': 'light-theme-background-palette',
67
- 'mat-dark-theme-background': 'dark-theme-background-palette',
68
- 'mat-light-theme-foreground': 'light-theme-foreground-palette',
69
- 'mat-dark-theme-foreground': 'dark-theme-foreground-palette',
70
- };
71
- // The palettes all follow the same pattern.
72
- [
73
- 'red', 'pink', 'indigo', 'purple', 'deep-purple', 'blue', 'light-blue', 'cyan', 'teal', 'green',
74
- 'light-green', 'lime', 'yellow', 'amber', 'orange', 'deep-orange', 'brown', 'grey', 'gray',
75
- 'blue-grey', 'blue-gray'
76
- ].forEach(name => exports.materialVariables[`mat-${name}`] = `${name}-palette`);
77
- /** Mapping of CDK variables that should be renamed. */
78
- exports.cdkVariables = {
79
- 'cdk-z-index-overlay-container': 'overlay-container-z-index',
80
- 'cdk-z-index-overlay': 'overlay-z-index',
81
- 'cdk-z-index-overlay-backdrop': 'overlay-backdrop-z-index',
82
- 'cdk-overlay-dark-backdrop-background': 'overlay-backdrop-color',
83
- };
84
- /** Mapping of CDK mixins that should be renamed. */
85
- exports.cdkMixins = {
86
- 'cdk-overlay': 'overlay',
87
- 'cdk-a11y': 'a11y-visually-hidden',
88
- 'cdk-high-contrast': 'high-contrast',
89
- 'cdk-text-field-autofill-color': 'text-field-autofill-color',
90
- // This one was split up into two mixins which is trickier to
91
- // migrate so for now we forward to the deprecated variant.
92
- 'cdk-text-field': 'text-field',
93
- };
94
- /**
95
- * Material variables that have been removed from the public API
96
- * and which should be replaced with their values.
97
- */
98
- exports.removedMaterialVariables = {
99
- // Note: there's also a usage of a variable called `$pi`, but the name is short enough that
100
- // it matches things like `$mat-pink`. Don't migrate it since it's unlikely to be used.
101
- 'mat-xsmall': `'max-width: 599px'`,
102
- 'mat-small': `'max-width: 959px'`,
103
- 'mat-toggle-padding': '8px',
104
- 'mat-toggle-size': '20px',
105
- 'mat-linear-out-slow-in-timing-function': 'cubic-bezier(0, 0, 0.2, 0.1)',
106
- 'mat-fast-out-slow-in-timing-function': 'cubic-bezier(0.4, 0, 0.2, 1)',
107
- 'mat-fast-out-linear-in-timing-function': 'cubic-bezier(0.4, 0, 1, 1)',
108
- 'mat-elevation-transition-duration': '280ms',
109
- 'mat-elevation-transition-timing-function': 'cubic-bezier(0.4, 0, 0.2, 1)',
110
- 'mat-elevation-color': '#000',
111
- 'mat-elevation-opacity': '1',
112
- 'mat-elevation-prefix': `'mat-elevation-z'`,
113
- 'mat-ripple-color-opacity': '0.1',
114
- 'mat-badge-font-size': '12px',
115
- 'mat-badge-font-weight': '600',
116
- 'mat-badge-default-size': '22px',
117
- 'mat-badge-small-size': '16px',
118
- 'mat-badge-large-size': '28px',
119
- 'mat-button-toggle-standard-height': '48px',
120
- 'mat-button-toggle-standard-minimum-height': '24px',
121
- 'mat-button-toggle-standard-maximum-height': '48px',
122
- 'mat-chip-remove-font-size': '18px',
123
- 'mat-datepicker-selected-today-box-shadow-width': '1px',
124
- 'mat-datepicker-selected-fade-amount': '0.6',
125
- 'mat-datepicker-range-fade-amount': '0.2',
126
- 'mat-datepicker-today-fade-amount': '0.2',
127
- 'mat-calendar-body-font-size': '13px',
128
- 'mat-calendar-weekday-table-font-size': '11px',
129
- 'mat-expansion-panel-header-collapsed-height': '48px',
130
- 'mat-expansion-panel-header-collapsed-minimum-height': '36px',
131
- 'mat-expansion-panel-header-collapsed-maximum-height': '48px',
132
- 'mat-expansion-panel-header-expanded-height': '64px',
133
- 'mat-expansion-panel-header-expanded-minimum-height': '48px',
134
- 'mat-expansion-panel-header-expanded-maximum-height': '64px',
135
- 'mat-expansion-panel-header-transition': '225ms cubic-bezier(0.4, 0, 0.2, 1)',
136
- 'mat-paginator-height': '56px',
137
- 'mat-paginator-minimum-height': '40px',
138
- 'mat-paginator-maximum-height': '56px',
139
- 'mat-stepper-header-height': '72px',
140
- 'mat-stepper-header-minimum-height': '42px',
141
- 'mat-stepper-header-maximum-height': '72px',
142
- 'mat-stepper-label-header-height': '24px',
143
- 'mat-stepper-label-position-bottom-top-gap': '16px',
144
- 'mat-stepper-label-min-width': '50px',
145
- 'mat-vertical-stepper-content-margin': '36px',
146
- 'mat-stepper-side-gap': '24px',
147
- 'mat-stepper-line-width': '1px',
148
- 'mat-stepper-line-gap': '8px',
149
- 'mat-step-sub-label-font-size': '12px',
150
- 'mat-step-header-icon-size': '16px',
151
- 'mat-toolbar-minimum-height': '44px',
152
- 'mat-toolbar-height-desktop': '64px',
153
- 'mat-toolbar-maximum-height-desktop': '64px',
154
- 'mat-toolbar-minimum-height-desktop': '44px',
155
- 'mat-toolbar-height-mobile': '56px',
156
- 'mat-toolbar-maximum-height-mobile': '56px',
157
- 'mat-toolbar-minimum-height-mobile': '44px',
158
- 'mat-tooltip-target-height': '22px',
159
- 'mat-tooltip-font-size': '10px',
160
- 'mat-tooltip-vertical-padding': '6px',
161
- 'mat-tooltip-handset-target-height': '30px',
162
- 'mat-tooltip-handset-font-size': '14px',
163
- 'mat-tooltip-handset-vertical-padding': '8px',
164
- 'mat-tree-node-height': '48px',
165
- 'mat-tree-node-minimum-height': '24px',
166
- 'mat-tree-node-maximum-height': '48px',
167
- 'z-index-fab': '20',
168
- 'z-index-drawer': '100',
169
- 'ease-in-out-curve-function': 'cubic-bezier(0.35, 0, 0.25, 1)',
170
- 'swift-ease-out-duration': '400ms',
171
- 'swift-ease-out-timing-function': 'cubic-bezier(0.25, 0.8, 0.25, 1)',
172
- 'swift-ease-out': 'all 400ms cubic-bezier(0.25, 0.8, 0.25, 1)',
173
- 'swift-ease-in-duration': '300ms',
174
- 'swift-ease-in-timing-function': 'cubic-bezier(0.55, 0, 0.55, 0.2)',
175
- 'swift-ease-in': 'all 300ms cubic-bezier(0.55, 0, 0.55, 0.2)',
176
- 'swift-ease-in-out-duration': '500ms',
177
- 'swift-ease-in-out-timing-function': 'cubic-bezier(0.35, 0, 0.25, 1)',
178
- 'swift-ease-in-out': 'all 500ms cubic-bezier(0.35, 0, 0.25, 1)',
179
- 'swift-linear-duration': '80ms',
180
- 'swift-linear-timing-function': 'linear',
181
- 'swift-linear': 'all 80ms linear'
182
- };
183
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctZ2VuZXJhdGUvdGhlbWluZy1hcGkvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILHlEQUF5RDtBQUM1QyxRQUFBLGNBQWMsR0FBMkI7SUFDcEQsVUFBVSxFQUFFLE1BQU07SUFDbEIsZ0JBQWdCLEVBQUUsWUFBWTtJQUM5QixnQkFBZ0IsRUFBRSxZQUFZO0lBQzlCLHdCQUF3QixFQUFFLHNCQUFzQjtJQUNoRCw2QkFBNkIsRUFBRSw0QkFBNEI7SUFDM0Qsd0JBQXdCLEVBQUUsc0JBQXNCO0lBQ2hELHFCQUFxQixFQUFFLHNCQUFzQjtJQUM3QyxnQ0FBZ0MsRUFBRSxrQkFBa0I7SUFDcEQsZUFBZSxFQUFFLFdBQVc7SUFDNUIsMkJBQTJCLEVBQUUsdUJBQXVCO0lBQ3BELDBCQUEwQixFQUFFLHNCQUFzQjtJQUNsRCxZQUFZLEVBQUUsUUFBUTtJQUN0QixrQkFBa0IsRUFBRSxjQUFjO0lBQ2xDLGtCQUFrQixFQUFFLGNBQWM7SUFDbEMsNkJBQTZCLEVBQUUseUJBQXlCO0lBQ3hELG1DQUFtQyxFQUFFLCtCQUErQjtJQUNwRSxtQ0FBbUMsRUFBRSwrQkFBK0I7SUFDcEUsb0JBQW9CLEVBQUUsZ0JBQWdCO0lBQ3RDLDRGQUE0RjtJQUM1RixnR0FBZ0c7SUFDaEcsMkJBQTJCLEVBQUUsaUJBQWlCO0lBQzlDLDJCQUEyQixFQUFFLGlCQUFpQjtJQUM5QyxnQ0FBZ0MsRUFBRSxzQkFBc0I7Q0FDekQsQ0FBQztBQUVGLDBGQUEwRjtBQUMxRjtJQUNFLFFBQVEsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUTtJQUMxRixlQUFlLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsU0FB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bnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbi8qKiBNYXBwaW5nIG9mIE1hdGVyaWFsIG1peGlucyB0aGF0IHNob3VsZCBiZSByZW5hbWVkLiAqL1xuZXhwb3J0IGNvbnN0IG1hdGVyaWFsTWl4aW5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnbWF0LWNvcmUnOiAnY29yZScsXG4gICdtYXQtY29yZS1jb2xvcic6ICdjb3JlLWNvbG9yJyxcbiAgJ21hdC1jb3JlLXRoZW1lJzogJ2NvcmUtdGhlbWUnLFxuICAnYW5ndWxhci1tYXRlcmlhbC10aGVtZSc6ICdhbGwtY29tcG9uZW50LXRoZW1lcycsXG4gICdhbmd1bGFyLW1hdGVyaWFsLXR5cG9ncmFwaHknOiAnYWxsLWNvbXBvbmVudC10eXBvZ3JhcGhpZXMnLFxuICAnYW5ndWxhci1tYXRlcmlhbC1jb2xvcic6ICdhbGwtY29tcG9uZW50LWNvbG9ycycsXG4gICdtYXQtYmFzZS10eXBvZ3JhcGh5JzogJ3R5cG9ncmFwaHktaGllcmFyY2h5JyxcbiAgJ21hdC10eXBvZ3JhcGh5LWxldmVsLXRvLXN0eWxlcyc6ICd0eXBvZ3JhcGh5LWxldmVsJyxcbiAgJ21hdC1lbGV2YXRpb24nOiAnZWxldmF0aW9uJyxcbiAgJ21hdC1vdmVycmlkYWJsZS1lbGV2YXRpb24nOiAnb3ZlcnJpZGFibGUtZWxldmF0aW9uJyxcbiAgJ21hdC1lbGV2YXRpb24tdHJhbnNpdGlvbic6ICdlbGV2YXRpb24tdHJhbnNpdGlvbicsXG4gICdtYXQtcmlwcGxlJzogJ3JpcHBsZScsXG4gICdtYXQtcmlwcGxlLWNvbG9yJzogJ3JpcHBsZS1jb2xvcicsXG4gICdtYXQtcmlwcGxlLXRoZW1lJzogJ3JpcHBsZS10aGVtZScsXG4gICdtYXQtc3Ryb25nLWZvY3VzLWluZGljYXRvcnMnOiAnc3Ryb25nLWZvY3VzLWluZGljYXRvcnMnLFxuICAnbWF0LXN0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLWNvbG9yJzogJ3N0cm9uZy1mb2N1cy1pbmRpY2F0b3JzLWNvbG9yJyxcbiAgJ21hdC1zdHJvbmctZm9jdXMtaW5kaWNhdG9ycy10aGVtZSc6ICdzdHJvbmctZm9jdXMtaW5kaWNhdG9ycy10aGVtZScsXG4gICdtYXQtZm9udC1zaG9ydGhhbmQnOiAnZm9udC1zaG9ydGhhbmQnLFxuICAvLyBUaGUgZXhwYW5zaW9uIHBhbmVsIGlzIGEgc3BlY2lhbCBjYXNlLCBiZWNhdXNlIHRoZSBwYWNrYWdlIGlzIGNhbGxlZCBgZXhwYW5zaW9uYCwgYnV0IHRoZVxuICAvLyBtaXhpbnMgd2VyZSBwcmVmaXhlZCB3aXRoIGBleHBhbnNpb24tcGFuZWxgLiBUaGlzIHdhcyBjb3JyZWN0ZWQgYnkgdGhlIFNhc3MgbW9kdWxlIG1pZ3JhdGlvbi5cbiAgJ21hdC1leHBhbnNpb24tcGFuZWwtdGhlbWUnOiAnZXhwYW5zaW9uLXRoZW1lJyxcbiAgJ21hdC1leHBhbnNpb24tcGFuZWwtY29sb3InOiAnZXhwYW5zaW9uLWNvbG9yJyxcbiAgJ21hdC1leHBhbnNpb24tcGFuZWwtdHlwb2dyYXBoeSc6ICdleHBhbnNpb24tdHlwb2dyYXBoeScsXG59O1xuXG4vLyBUaGUgY29tcG9uZW50IHRoZW1lcyBhbGwgZm9sbG93IHRoZSBzYW1lIHBhdHRlcm4gc28gd2UgY2FuIHNwYXJlIG91cnNlbHZlcyBzb21lIHR5cGluZy5cbltcbiAgJ29wdGlvbicsICdvcHRncm91cCcsICdwc2V1ZG8tY2hlY2tib3gnLCAnYXV0b2NvbXBsZXRlJywgJ2JhZGdlJywgJ2JvdHRvbS1zaGVldCcsICdidXR0b24nLFxuICAnYnV0dG9uLXRvZ2dsZScsICdjYXJkJywgJ2NoZWNrYm94JywgJ2NoaXBzJywgJ2RpdmlkZXInLCAndGFibGUnLCAnZGF0ZXBpY2tlcicsICdkaWFsb2cnLFxuICAnZ3JpZC1saXN0JywgJ2ljb24nLCAnaW5wdXQnLCAnbGlzdCcsICdtZW51JywgJ3BhZ2luYXRvcicsICdwcm9ncmVzcy1iYXInLCAncHJvZ3Jlc3Mtc3Bpbm5lcicsXG4gICdyYWRpbycsICdzZWxlY3QnLCAnc2lkZW5hdicsICdzbGlkZS10b2dnbGUnLCAnc2xpZGVyJywgJ3N0ZXBwZXInLCAnc29ydCcsICd0YWJzJywgJ3Rvb2xiYXInLFxuICAndG9vbHRpcCcsICdzbmFjay1iYXInLCAnZm9ybS1maWVsZCcsICd0cmVlJ1xuXS5mb3JFYWNoKG5hbWUgPT4ge1xuICBtYXRlcmlhbE1peGluc1tgbWF0LSR7bmFtZX0tdGhlbWVgXSA9IGAke25hbWV9LXRoZW1lYDtcbiAgbWF0ZXJpYWxNaXhpbnNbYG1hdC0ke25hbWV9LWNvbG9yYF0gPSBgJHtuYW1lfS1jb2xvcmA7XG4gIG1hdGVyaWFsTWl4aW5zW2BtYXQtJHtuYW1lfS10eXBvZ3JhcGh5YF0gPSBgJHtuYW1lfS10eXBvZ3JhcGh5YDtcbn0pO1xuXG4vKiogTWFwcGluZyBvZiBNYXRlcmlhbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgcmVuYW1lZC4gKi9cbmV4cG9ydCBjb25zdCBtYXRlcmlhbEZ1bmN0aW9uczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgJ21hdC1jb2xvcic6ICdnZXQtY29sb3ItZnJvbS1wYWxldHRlJyxcbiAgJ21hdC1jb250cmFzdCc6ICdnZXQtY29udHJhc3QtY29sb3ItZnJvbS1wYWxldHRlJyxcbiAgJ21hdC1wYWxldHRlJzogJ2RlZmluZS1wYWxldHRlJyxcbiAgJ21hdC1kYXJrLXRoZW1lJzogJ2RlZmluZS1kYXJrLXRoZW1lJyxcbiAgJ21hdC1saWdodC10aGVtZSc6ICdkZWZpbmUtbGlnaHQtdGhlbWUnLFxuICAnbWF0LXR5cG9ncmFwaHktbGV2ZWwnOiAnZGVmaW5lLXR5cG9ncmFwaHktbGV2ZWwnLFxuICAnbWF0LXR5cG9ncmFwaHktY29uZmlnJzogJ2RlZmluZS10eXBvZ3JhcGh5LWNvbmZpZycsXG4gICdtYXQtZm9udC1zaXplJzogJ2ZvbnQtc2l6ZScsXG4gICdtYXQtbGluZS1oZWlnaHQnOiAnbGluZS1oZWlnaHQnLFxuICAnbWF0LWZvbnQtd2VpZ2h0JzogJ2ZvbnQtd2VpZ2h0JyxcbiAgJ21hdC1sZXR0ZXItc3BhY2luZyc6ICdsZXR0ZXItc3BhY2luZycsXG4gICdtYXQtZm9udC1mYW1pbHknOiAnZm9udC1mYW1pbHknLFxufTtcblxuLyoqIE1hcHBpbmcgb2YgTWF0ZXJpYWwgdmFyaWFibGVzIHRoYXQgc2hvdWxkIGJlIHJlbmFtZWQuICovXG5leHBvcnQgY29uc3QgbWF0ZXJpYWxWYXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICdtYXQtbGlnaHQtdGhlbWUtYmFja2dyb3VuZCc6ICdsaWdodC10aGVtZS1iYWNrZ3JvdW5kLXBhbGV0dGUnLFxuICAnbWF0LWRhcmstdGhlbWUtYmFja2dyb3VuZCc6ICdkYXJrLXRoZW1lLWJhY2tncm91bmQtcGFsZXR0ZScsXG4gICdtYXQtbGlnaHQtdGhlbWUtZm9yZWdyb3VuZCc6ICdsaWdodC10aGVtZS1mb3JlZ3JvdW5kLXBhbGV0dGUnLFxuICAnbWF0LWRhcmstdGhlbWUtZm9yZWdyb3VuZCc6ICdkYXJrLXRoZW1lLWZvcmVncm91bmQtcGFsZXR0ZScsXG59O1xuXG4vLyBUaGUgcGFsZXR0ZXMgYWxsIGZvbGxvdyB0aGUgc2FtZSBwYXR0ZXJuLlxuW1xuICAncmVkJywgJ3BpbmsnLCAnaW5kaWdvJywgJ3B1cnBsZScsICdkZWVwLXB1cnBsZScsICdibHVlJywgJ2xpZ2h0LWJsdWUnLCAnY3lhbicsICd0ZWFsJywgJ2dyZWVuJyxcbiAgJ2xpZ2h0LWdyZWVuJywgJ2xpbWUnLCAneWVsbG93JywgJ2FtYmVyJywgJ29yYW5nZScsICdkZWVwLW9yYW5nZScsICdicm93bicsICdncmV5JywgJ2dyYXknLFxuICAnYmx1ZS1ncmV5JywgJ2JsdWUtZ3JheSdcbl0uZm9yRWFjaChuYW1lID0+IG1hdGVyaWFsVmFyaWFibGVzW2BtYXQtJHtuYW1lfWBdID0gYCR7bmFtZX0tcGFsZXR0ZWApO1xuXG4vKiogTWFwcGluZyBvZiBDREsgdmFyaWFibGVzIHRoYXQgc2hvdWxkIGJlIHJlbmFtZWQuICovXG5leHBvcnQgY29uc3QgY2RrVmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnY2RrLXotaW5kZXgtb3ZlcmxheS1jb250YWluZXInOiAnb3ZlcmxheS1jb250YWluZXItei1pbmRleCcsXG4gICdjZGstei1pbmRleC1vdmVybGF5JzogJ292ZXJsYXktei1pbmRleCcsXG4gICdjZGstei1pbmRleC1vdmVybGF5LWJhY2tkcm9wJzogJ292ZXJsYXktYmFja2Ryb3Atei1pbmRleCcsXG4gICdjZGstb3ZlcmxheS1kYXJrLWJhY2tkcm9wLWJhY2tncm91bmQnOiAnb3ZlcmxheS1iYWNrZHJvcC1jb2xvcicsXG59O1xuXG4vKiogTWFwcGluZyBvZiBDREsgbWl4aW5zIHRoYXQgc2hvdWxkIGJlIHJlbmFtZWQuICovXG5leHBvcnQgY29uc3QgY2RrTWl4aW5zOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAnY2RrLW92ZXJsYXknOiAnb3ZlcmxheScsXG4gICdjZGstYTExeSc6ICdhMTF5LXZpc3VhbGx5LWhpZGRlbicsXG4gICdjZGstaGlnaC1jb250cmFzdCc6ICdoaWdoLWNvbnRyYXN0JyxcbiAgJ2Nkay10ZXh0LWZpZWxkLWF1dG9maWxsLWNvbG9yJzogJ3RleHQtZmllbGQtYXV0b2ZpbGwtY29sb3InLFxuICAvLyBUaGlzIG9uZSB3YXMgc3BsaXQgdXAgaW50byB0d28gbWl4aW5zIHdoaWNoIGlzIHRyaWNraWVyIHRvXG4gIC8vIG1pZ3JhdGUgc28gZm9yIG5vdyB3ZSBmb3J3YXJkIHRvIHRoZSBkZXByZWNhdGVkIHZhcmlhbnQuXG4gICdjZGstdGV4dC1maWVsZCc6ICd0ZXh0LWZpZWxkJyxcbn07XG5cbi8qKlxuICogTWF0ZXJpYWwgdmFyaWFibGVzIHRoYXQgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgcHVibGljIEFQSVxuICogYW5kIHdoaWNoIHNob3VsZCBiZSByZXBsYWNlZCB3aXRoIHRoZWlyIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IHJlbW92ZWRNYXRlcmlhbFZhcmlhYmxlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgLy8gTm90ZTogdGhlcmUncyBhbHNvIGEgdXNhZ2Ugb2YgYSB2YXJpYWJsZSBjYWxsZWQgYCRwaWAsIGJ1dCB0aGUgbmFtZSBpcyBzaG9ydCBlbm91Z2ggdGhhdFxuICAvLyBpdCBtYXRjaGVzIHRoaW5ncyBsaWtlIGAkbWF0LXBpbmtgLiBEb24ndCBtaWdyYXRlIGl0IHNpbmNlIGl0J3MgdW5saWtlbHkgdG8gYmUgdXNlZC5cbiAgJ21hdC14c21hbGwnOiBgJ21heC13aWR0aDogNTk5cHgnYCxcbiAgJ21hdC1zbWFsbCc6IGAnbWF4LXdpZHRoOiA5NTlweCdgLFxuICAnbWF0LXRvZ2dsZS1wYWRkaW5nJzogJzhweCcsXG4gICdtYXQtdG9nZ2xlLXNpemUnOiAnMjBweCcsXG4gICdtYXQtbGluZWFyLW91dC1zbG93LWluLXRpbWluZy1mdW5jdGlvbic6ICdjdWJpYy1iZXppZXIoMCwgMCwgMC4yLCAwLjEpJyxcbiAgJ21hdC1mYXN0LW91dC1zbG93LWluLXRpbWluZy1mdW5jdGlvbic6ICdjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJyxcbiAgJ21hdC1mYXN0LW91dC1saW5lYXItaW4tdGltaW5nLWZ1bmN0aW9uJzogJ2N1YmljLWJlemllcigwLjQsIDAsIDEsIDEpJyxcbiAgJ21hdC1lbGV2YXRpb24tdHJhbnNpdGlvbi1kdXJhdGlvbic6ICcyODBtcycsXG4gICdtYXQtZWxldmF0aW9uLXRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uJzogJ2N1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknLFxuICAnbWF0LWVsZXZhdGlvbi1jb2xvcic6ICcjMDAwJyxcbiAgJ21hdC1lbGV2YXRpb24tb3BhY2l0eSc6ICcxJyxcbiAgJ21hdC1lbGV2YXRpb24tcHJlZml4JzogYCdtYXQtZWxldmF0aW9uLXonYCxcbiAgJ21hdC1yaXBwbGUtY29sb3Itb3BhY2l0eSc6ICcwLjEnLFxuICAnbWF0LWJhZGdlLWZvbnQtc2l6ZSc6ICcxMnB4JyxcbiAgJ21hdC1iYWRnZS1mb250LXdlaWdodCc6ICc2MDAnLFxuICAnbWF0LWJhZGdlLWRlZmF1bHQtc2l6ZSc6ICcyMnB4JyxcbiAgJ21hdC1iYWRnZS1zbWFsbC1zaXplJzogJzE2cHgnLFxuICAnbWF0LWJhZGdlLWxhcmdlLXNpemUnOiAnMjhweCcsXG4gICdtYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFyZC1oZWlnaHQnOiAnNDhweCcsXG4gICdtYXQtYnV0dG9uLXRvZ2dsZS1zdGFuZGFyZC1taW5pbXVtLWhlaWdodCc6ICcyNHB4JyxcbiAgJ21hdC1idXR0b24tdG9nZ2xlLXN0YW5kYXJkLW1heGltdW0taGVpZ2h0JzogJzQ4cHgnLFxuICAnbWF0LWNoaXAtcmVtb3ZlLWZvbnQtc2l6ZSc6ICcxOHB4JyxcbiAgJ21hdC1kYXRlcGlja2VyLXNlbGVjdGVkLXRvZGF5LWJveC1zaGFkb3ctd2lkdGgnOiAnMXB4JyxcbiAgJ21hdC1kYXRlcGlja2VyLXNlbGVjdGVkLWZhZGUtYW1vdW50JzogJzAuNicsXG4gICdtYXQtZGF0ZXBpY2tlci1yYW5nZS1mYWRlLWFtb3VudCc6ICcwLjInLFxuICAnbWF0LWRhdGVwaWNrZXItdG9kYXktZmFkZS1hbW91bnQnOiAnMC4yJyxcbiAgJ21hdC1jYWxlbmRhci1ib2R5LWZvbnQtc2l6ZSc6ICcxM3B4JyxcbiAgJ21hdC1jYWxlbmRhci13ZWVrZGF5LXRhYmxlLWZvbnQtc2l6ZSc6ICcxMXB4JyxcbiAgJ21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWNvbGxhcHNlZC1oZWlnaHQnOiAnNDhweCcsXG4gICdtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1jb2xsYXBzZWQtbWluaW11bS1oZWlnaHQnOiAnMzZweCcsXG4gICdtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1jb2xsYXBzZWQtbWF4aW11bS1oZWlnaHQnOiAnNDhweCcsXG4gICdtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1leHBhbmRlZC1oZWlnaHQnOiAnNjRweCcsXG4gICdtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlci1leHBhbmRlZC1taW5pbXVtLWhlaWdodCc6ICc0OHB4JyxcbiAgJ21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyLWV4cGFuZGVkLW1heGltdW0taGVpZ2h0JzogJzY0cHgnLFxuICAnbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXItdHJhbnNpdGlvbic6ICcyMjVtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJyxcbiAgJ21hdC1wYWdpbmF0b3ItaGVpZ2h0JzogJzU2cHgnLFxuICAnbWF0LXBhZ2luYXRvci1taW5pbXVtLWhlaWdodCc6ICc0MHB4JyxcbiAgJ21hdC1wYWdpbmF0b3ItbWF4aW11bS1oZWlnaHQnOiAnNTZweCcsXG4gICdtYXQtc3RlcHBlci1oZWFkZXItaGVpZ2h0JzogJzcycHgnLFxuICAnbWF0LXN0ZXBwZXItaGVhZGVyLW1pbmltdW0taGVpZ2h0JzogJzQycHgnLFxuICAnbWF0LXN0ZXBwZXItaGVhZGVyLW1heGltdW0taGVpZ2h0JzogJzcycHgnLFxuICAnbWF0LXN0ZXBwZXItbGFiZWwtaGVhZGVyLWhlaWdodCc6ICcyNHB4JyxcbiAgJ21hdC1zdGVwcGVyLWxhYmVsLXBvc2l0aW9uLWJvdHRvbS10b3AtZ2FwJzogJzE2cHgnLFxuICAnbWF0LXN0ZXBwZXItbGFiZWwtbWluLXdpZHRoJzogJzUwcHgnLFxuICAnbWF0LXZlcnRpY2FsLXN0ZXBwZXItY29udGVudC1tYXJnaW4nOiAnMzZweCcsXG4gICdtYXQtc3RlcHBlci1zaWRlLWdhcCc6ICcyNHB4JyxcbiAgJ21hdC1zdGVwcGVyLWxpbmUtd2lkdGgnOiAnMXB4JyxcbiAgJ21hdC1zdGVwcGVyLWxpbmUtZ2FwJzogJzhweCcsXG4gICdtYXQtc3RlcC1zdWItbGFiZWwtZm9udC1zaXplJzogJzEycHgnLFxuICAnbWF0LXN0ZXAtaGVhZGVyLWljb24tc2l6ZSc6ICcxNnB4JyxcbiAgJ21hdC10b29sYmFyLW1pbmltdW0taGVpZ2h0JzogJzQ0cHgnLFxuICAnbWF0LXRvb2xiYXItaGVpZ2h0LWRlc2t0b3AnOiAnNjRweCcsXG4gICdtYXQtdG9vbGJhci1tYXhpbXVtLWhlaWdodC1kZXNrdG9wJzogJzY0cHgnLFxuICAnbWF0LXRvb2xiYXItbWluaW11bS1oZWlnaHQtZGVza3RvcCc6ICc0NHB4JyxcbiAgJ21hdC10b29sYmFyLWhlaWdodC1tb2JpbGUnOiAnNTZweCcsXG4gICdtYXQtdG9vbGJhci1tYXhpbXVtLWhlaWdodC1tb2JpbGUnOiAnNTZweCcsXG4gICdtYXQtdG9vbGJhci1taW5pbXVtLWhlaWdodC1tb2JpbGUnOiAnNDRweCcsXG4gICdtYXQtdG9vbHRpcC10YXJnZXQtaGVpZ2h0JzogJzIycHgnLFxuICAnbWF0LXRvb2x0aXAtZm9udC1zaXplJzogJzEwcHgnLFxuICAnbWF0LXRvb2x0aXAtdmVydGljYWwtcGFkZGluZyc6ICc2cHgnLFxuICAnbWF0LXRvb2x0aXAtaGFuZHNldC10YXJnZXQtaGVpZ2h0JzogJzMwcHgnLFxuICAnbWF0LXRvb2x0aXAtaGFuZHNldC1mb250LXNpemUnOiAnMTRweCcsXG4gICdtYXQtdG9vbHRpcC1oYW5kc2V0LXZlcnRpY2FsLXBhZGRpbmcnOiAnOHB4JyxcbiAgJ21hdC10cmVlLW5vZGUtaGVpZ2h0JzogJzQ4cHgnLFxuICAnbWF0LXRyZWUtbm9kZS1taW5pbXVtLWhlaWdodCc6ICcyNHB4JyxcbiAgJ21hdC10cmVlLW5vZGUtbWF4aW11bS1oZWlnaHQnOiAnNDhweCcsXG4gICd6LWluZGV4LWZhYic6ICcyMCcsXG4gICd6LWluZGV4LWRyYXdlcic6ICcxMDAnLFxuICAnZWFzZS1pbi1vdXQtY3VydmUtZnVuY3Rpb24nOiAnY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpJyxcbiAgJ3N3aWZ0LWVhc2Utb3V0LWR1cmF0aW9uJzogJzQwMG1zJyxcbiAgJ3N3aWZ0LWVhc2Utb3V0LXRpbWluZy1mdW5jdGlvbic6ICdjdWJpYy1iZXppZXIoMC4yNSwgMC44LCAwLjI1LCAxKScsXG4gICdzd2lmdC1lYXNlLW91dCc6ICdhbGwgNDAwbXMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuOCwgMC4yNSwgMSknLFxuICAnc3dpZnQtZWFzZS1pbi1kdXJhdGlvbic6ICczMDBtcycsXG4gICdzd2lmdC1lYXNlLWluLXRpbWluZy1mdW5jdGlvbic6ICdjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKScsXG4gICdzd2lmdC1lYXNlLWluJzogJ2FsbCAzMDBtcyBjdWJpYy1iZXppZXIoMC41NSwgMCwgMC41NSwgMC4yKScsXG4gICdzd2lmdC1lYXNlLWluLW91dC1kdXJhdGlvbic6ICc1MDBtcycsXG4gICdzd2lmdC1lYXNlLWluLW91dC10aW1pbmctZnVuY3Rpb24nOiAnY3ViaWMtYmV6aWVyKDAuMzUsIDAsIDAuMjUsIDEpJyxcbiAgJ3N3aWZ0LWVhc2UtaW4tb3V0JzogJ2FsbCA1MDBtcyBjdWJpYy1iZXppZXIoMC4zNSwgMCwgMC4yNSwgMSknLFxuICAnc3dpZnQtbGluZWFyLWR1cmF0aW9uJzogJzgwbXMnLFxuICAnc3dpZnQtbGluZWFyLXRpbWluZy1mdW5jdGlvbic6ICdsaW5lYXInLFxuICAnc3dpZnQtbGluZWFyJzogJ2FsbCA4MG1zIGxpbmVhcidcbn07XG4iXX0=
@@ -1,10 +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 { Rule } from '@angular-devkit/schematics';
9
- import { Schema } from './schema';
10
- export default function (_options: Schema): Rule;
@@ -1,26 +0,0 @@
1
- "use strict";
2
- /**
3
- * @license
4
- * Copyright Google LLC All Rights Reserved.
5
- *
6
- * Use of this source code is governed by an MIT-style license that can be
7
- * found in the LICENSE file at https://angular.io/license
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- const core_1 = require("@angular-devkit/core");
11
- const migration_1 = require("./migration");
12
- function default_1(_options) {
13
- return (tree) => {
14
- tree.visit((path, entry) => {
15
- if (core_1.extname(path) === '.scss') {
16
- const content = entry === null || entry === void 0 ? void 0 : entry.content.toString();
17
- const migratedContent = content ? migration_1.migrateFileContent(content, '~@angular/material/', '~@angular/cdk/', '~@angular/material', '~@angular/cdk') : content;
18
- if (migratedContent && migratedContent !== content) {
19
- tree.overwrite(path, migratedContent);
20
- }
21
- }
22
- });
23
- };
24
- }
25
- exports.default = default_1;
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvc2NoZW1hdGljcy9uZy1nZW5lcmF0ZS90aGVtaW5nLWFwaS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7OztHQU1HOztBQUVILCtDQUE2QztBQUc3QywyQ0FBK0M7QUFFL0MsbUJBQXdCLFFBQWdCO0lBQ3RDLE9BQU8sQ0FBQyxJQUFVLEVBQUUsRUFBRTtRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3pCLElBQUksY0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLE9BQU8sRUFBRTtnQkFDN0IsTUFBTSxPQUFPLEdBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyw4QkFBa0IsQ0FBQyxPQUFPLEVBQzFELHFCQUFxQixFQUFFLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBRTVGLElBQUksZUFBZSxJQUFJLGVBQWUsS0FBSyxPQUFPLEVBQUU7b0JBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO2lCQUN2QzthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUM7QUFDSixDQUFDO0FBZEQsNEJBY0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtleHRuYW1lfSBmcm9tICdAYW5ndWxhci1kZXZraXQvY29yZSc7XG5pbXBvcnQge1J1bGUsIFRyZWV9IGZyb20gJ0Bhbmd1bGFyLWRldmtpdC9zY2hlbWF0aWNzJztcbmltcG9ydCB7U2NoZW1hfSBmcm9tICcuL3NjaGVtYSc7XG5pbXBvcnQge21pZ3JhdGVGaWxlQ29udGVudH0gZnJvbSAnLi9taWdyYXRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihfb3B0aW9uczogU2NoZW1hKTogUnVsZSB7XG4gIHJldHVybiAodHJlZTogVHJlZSkgPT4ge1xuICAgIHRyZWUudmlzaXQoKHBhdGgsIGVudHJ5KSA9PiB7XG4gICAgICBpZiAoZXh0bmFtZShwYXRoKSA9PT0gJy5zY3NzJykge1xuICAgICAgICBjb25zdCBjb250ZW50ID0gZW50cnk/LmNvbnRlbnQudG9TdHJpbmcoKTtcbiAgICAgICAgY29uc3QgbWlncmF0ZWRDb250ZW50ID0gY29udGVudCA/IG1pZ3JhdGVGaWxlQ29udGVudChjb250ZW50LFxuICAgICAgICAgICd+QGFuZ3VsYXIvbWF0ZXJpYWwvJywgJ35AYW5ndWxhci9jZGsvJywgJ35AYW5ndWxhci9tYXRlcmlhbCcsICd+QGFuZ3VsYXIvY2RrJykgOiBjb250ZW50O1xuXG4gICAgICAgIGlmIChtaWdyYXRlZENvbnRlbnQgJiYgbWlncmF0ZWRDb250ZW50ICE9PSBjb250ZW50KSB7XG4gICAgICAgICAgdHJlZS5vdmVyd3JpdGUocGF0aCwgbWlncmF0ZWRDb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xufVxuIl19
@@ -1,223 +0,0 @@
1
- "use strict";
2
- /**
3
- * @license
4
- * Copyright Google LLC All Rights Reserved.
5
- *
6
- * Use of this source code is governed by an MIT-style license that can be
7
- * found in the LICENSE file at https://angular.io/license
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.migrateFileContent = void 0;
11
- const config_1 = require("./config");
12
- /**
13
- * Migrates the content of a file to the new theming API. Note that this migration is using plain
14
- * string manipulation, rather than the AST from PostCSS and the schematics string manipulation
15
- * APIs, because it allows us to run it inside g3 and to avoid introducing new dependencies.
16
- * @param content Content of the file.
17
- * @param oldMaterialPrefix Prefix with which the old Material imports should start.
18
- * Has to end with a slash. E.g. if `@import '~@angular/material/theming'` should be
19
- * matched, the prefix would be `~@angular/material/`.
20
- * @param oldCdkPrefix Prefix with which the old CDK imports should start.
21
- * Has to end with a slash. E.g. if `@import '~@angular/cdk/overlay'` should be
22
- * matched, the prefix would be `~@angular/cdk/`.
23
- * @param newMaterialImportPath New import to the Material theming API (e.g. `~@angular/material`).
24
- * @param newCdkImportPath New import to the CDK Sass APIs (e.g. `~@angular/cdk`).
25
- */
26
- function migrateFileContent(content, oldMaterialPrefix, oldCdkPrefix, newMaterialImportPath, newCdkImportPath) {
27
- const materialResults = detectImports(content, oldMaterialPrefix);
28
- const cdkResults = detectImports(content, oldCdkPrefix);
29
- // If there are no imports, we don't need to go further.
30
- if (materialResults.imports.length > 0 || cdkResults.imports.length > 0) {
31
- const initialContent = content;
32
- content = migrateMaterialSymbols(content, newMaterialImportPath, materialResults.namespaces);
33
- content = migrateCdkSymbols(content, newCdkImportPath, cdkResults.namespaces);
34
- // Only drop the imports if any of the symbols were used within the file.
35
- if (content !== initialContent) {
36
- content = removeStrings(content, materialResults.imports);
37
- content = removeStrings(content, cdkResults.imports);
38
- content = content.replace(/^\s+/, '');
39
- content = replaceRemovedVariables(content, config_1.removedMaterialVariables);
40
- }
41
- }
42
- return content;
43
- }
44
- exports.migrateFileContent = migrateFileContent;
45
- /**
46
- * Counts the number of imports with a specific prefix and extracts their namespaces.
47
- * @param content File content in which to look for imports.
48
- * @param prefix Prefix that the imports should start with.
49
- */
50
- function detectImports(content, prefix) {
51
- if (prefix[prefix.length - 1] !== '/') {
52
- // Some of the logic further down makes assumptions about the import depth.
53
- throw Error(`Prefix "${prefix}" has to end in a slash.`);
54
- }
55
- // List of `@use` namespaces from which Angular CDK/Material APIs may be referenced.
56
- // Since we know that the library doesn't have any name collisions, we can treat all of these
57
- // namespaces as equivalent.
58
- const namespaces = [];
59
- const imports = [];
60
- const pattern = new RegExp(`@(import|use) +['"]${escapeRegExp(prefix)}.*['"].*;?\n`, 'g');
61
- let match = null;
62
- while (match = pattern.exec(content)) {
63
- const [fullImport, type] = match;
64
- if (type === 'use') {
65
- const namespace = extractNamespaceFromUseStatement(fullImport);
66
- if (namespaces.indexOf(namespace) === -1) {
67
- namespaces.push(namespace);
68
- }
69
- }
70
- imports.push(fullImport);
71
- }
72
- return { imports, namespaces };
73
- }
74
- /** Migrates the Material symbls in a file. */
75
- function migrateMaterialSymbols(content, importPath, namespaces) {
76
- const initialContent = content;
77
- const namespace = 'mat';
78
- // Migrate the mixins.
79
- content = renameSymbols(content, config_1.materialMixins, namespaces, mixinKeyFormatter, getMixinValueFormatter(namespace));
80
- // Migrate the functions.
81
- content = renameSymbols(content, config_1.materialFunctions, namespaces, functionKeyFormatter, getFunctionValueFormatter(namespace));
82
- // Migrate the variables.
83
- content = renameSymbols(content, config_1.materialVariables, namespaces, variableKeyFormatter, getVariableValueFormatter(namespace));
84
- if (content !== initialContent) {
85
- // Add an import to the new API only if any of the APIs were being used.
86
- content = insertUseStatement(content, importPath, namespace);
87
- }
88
- return content;
89
- }
90
- /** Migrates the CDK symbols in a file. */
91
- function migrateCdkSymbols(content, importPath, namespaces) {
92
- const initialContent = content;
93
- const namespace = 'cdk';
94
- // Migrate the mixins.
95
- content = renameSymbols(content, config_1.cdkMixins, namespaces, mixinKeyFormatter, getMixinValueFormatter(namespace));
96
- // Migrate the variables.
97
- content = renameSymbols(content, config_1.cdkVariables, namespaces, variableKeyFormatter, getVariableValueFormatter(namespace));
98
- // Previously the CDK symbols were exposed through `material/theming`, but now we have a
99
- // dedicated entrypoint for the CDK. Only add an import for it if any of the symbols are used.
100
- if (content !== initialContent) {
101
- content = insertUseStatement(content, importPath, namespace);
102
- }
103
- return content;
104
- }
105
- /**
106
- * Renames all Sass symbols in a file based on a pre-defined mapping.
107
- * @param content Content of a file to be migrated.
108
- * @param mapping Mapping between symbol names and their replacements.
109
- * @param getKeyPattern Function used to turn each of the keys into a regex.
110
- * @param formatValue Formats the value that will replace any matches of the pattern returned by
111
- * `getKeyPattern`.
112
- */
113
- function renameSymbols(content, mapping, namespaces, getKeyPattern, formatValue) {
114
- // The null at the end is so that we make one last pass to cover non-namespaced symbols.
115
- [...namespaces.slice().sort(sortLengthDescending), null].forEach(namespace => {
116
- // Migrate the longest keys first so that our regex-based replacements don't accidentally
117
- // capture keys that contain other keys. E.g. `$mat-blue` is contained within `$mat-blue-grey`.
118
- Object.keys(mapping).sort(sortLengthDescending).forEach(key => {
119
- const pattern = getKeyPattern(namespace, key);
120
- // Sanity check since non-global regexes will only replace the first match.
121
- if (pattern.flags.indexOf('g') === -1) {
122
- throw Error('Replacement pattern must be global.');
123
- }
124
- content = content.replace(pattern, formatValue(mapping[key]));
125
- });
126
- });
127
- return content;
128
- }
129
- /** Inserts an `@use` statement in a string. */
130
- function insertUseStatement(content, importPath, namespace) {
131
- // Sass has a limitation that all `@use` declarations have to come before `@import` so we have
132
- // to find the first import and insert before it. Technically we can get away with always
133
- // inserting at 0, but the file may start with something like a license header.
134
- const newImportIndex = Math.max(0, content.indexOf('@import '));
135
- return content.slice(0, newImportIndex) + `@use '${importPath}' as ${namespace};\n` +
136
- content.slice(newImportIndex);
137
- }
138
- /** Formats a migration key as a Sass mixin invocation. */
139
- function mixinKeyFormatter(namespace, name) {
140
- // Note that adding a `(` at the end of the pattern would be more accurate, but mixin
141
- // invocations don't necessarily have to include the parantheses. We could add `[(;]`,
142
- // but then we won't know which character to include in the replacement string.
143
- return new RegExp(`@include +${escapeRegExp((namespace ? namespace + '.' : '') + name)}`, 'g');
144
- }
145
- /** Returns a function that can be used to format a Sass mixin replacement. */
146
- function getMixinValueFormatter(namespace) {
147
- // Note that adding a `(` at the end of the pattern would be more accurate,
148
- // but mixin invocations don't necessarily have to include the parantheses.
149
- return name => `@include ${namespace}.${name}`;
150
- }
151
- /** Formats a migration key as a Sass function invocation. */
152
- function functionKeyFormatter(namespace, name) {
153
- return new RegExp(escapeRegExp(`${namespace ? namespace + '.' : ''}${name}(`), 'g');
154
- }
155
- /** Returns a function that can be used to format a Sass function replacement. */
156
- function getFunctionValueFormatter(namespace) {
157
- return name => `${namespace}.${name}(`;
158
- }
159
- /** Formats a migration key as a Sass variable. */
160
- function variableKeyFormatter(namespace, name) {
161
- return new RegExp(escapeRegExp(`${namespace ? namespace + '.' : ''}$${name}`), 'g');
162
- }
163
- /** Returns a function that can be used to format a Sass variable replacement. */
164
- function getVariableValueFormatter(namespace) {
165
- return name => `${namespace}.$${name}`;
166
- }
167
- /** Escapes special regex characters in a string. */
168
- function escapeRegExp(str) {
169
- return str.replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
170
- }
171
- /** Used with `Array.prototype.sort` to order strings in descending length. */
172
- function sortLengthDescending(a, b) {
173
- return b.length - a.length;
174
- }
175
- /** Removes all strings from another string. */
176
- function removeStrings(content, toRemove) {
177
- return toRemove.reduce((accumulator, current) => accumulator.replace(current, ''), content);
178
- }
179
- /** Parses out the namespace from a Sass `@use` statement. */
180
- function extractNamespaceFromUseStatement(fullImport) {
181
- const closeQuoteIndex = Math.max(fullImport.lastIndexOf(`"`), fullImport.lastIndexOf(`'`));
182
- if (closeQuoteIndex > -1) {
183
- const asExpression = 'as ';
184
- const asIndex = fullImport.indexOf(asExpression, closeQuoteIndex);
185
- // If we found an ` as ` expression, we consider the rest of the text as the namespace.
186
- if (asIndex > -1) {
187
- return fullImport.slice(asIndex + asExpression.length).split(';')[0].trim();
188
- }
189
- // Otherwise the namespace is the name of the file that is being imported.
190
- const lastSlashIndex = fullImport.lastIndexOf('/', closeQuoteIndex);
191
- if (lastSlashIndex > -1) {
192
- const fileName = fullImport.slice(lastSlashIndex + 1, closeQuoteIndex)
193
- // Sass allows for leading underscores to be omitted and it technically supports .scss.
194
- .replace(/^_|(\.import)?\.scss$|\.import$/g, '');
195
- // Sass ignores `/index` and infers the namespace as the next segment in the path.
196
- if (fileName === 'index') {
197
- const nextSlashIndex = fullImport.lastIndexOf('/', lastSlashIndex - 1);
198
- if (nextSlashIndex > -1) {
199
- return fullImport.slice(nextSlashIndex + 1, lastSlashIndex);
200
- }
201
- }
202
- else {
203
- return fileName;
204
- }
205
- }
206
- }
207
- throw Error(`Could not extract namespace from import "${fullImport}".`);
208
- }
209
- /**
210
- * Replaces variables that have been removed with their values.
211
- * @param content Content of the file to be migrated.
212
- * @param variables Mapping between variable names and their values.
213
- */
214
- function replaceRemovedVariables(content, variables) {
215
- Object.keys(variables).sort(sortLengthDescending).forEach(variableName => {
216
- // Note that the pattern uses a negative lookahead to exclude
217
- // variable assignments, because they can't be migrated.
218
- const regex = new RegExp(`\\$${escapeRegExp(variableName)}(?!\\s+:|:)`, 'g');
219
- content = content.replace(regex, variables[variableName]);
220
- });
221
- return content;
222
- }
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctZ2VuZXJhdGUvdGhlbWluZy1hcGkvbWlncmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILHFDQU9rQjtBQUVsQjs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQUMsT0FBZSxFQUNmLGlCQUF5QixFQUN6QixZQUFvQixFQUNwQixxQkFBNkIsRUFDN0IsZ0JBQXdCO0lBQ3pELE1BQU0sZUFBZSxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztJQUNsRSxNQUFNLFVBQVUsR0FBRyxhQUFhLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRXhELHdEQUF3RDtJQUN4RCxJQUFJLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDdkUsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO1FBQy9CLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQzdGLE9BQU8sR0FBRyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTlFLHlFQUF5RTtRQUN6RSxJQUFJLE9BQU8sS0FBSyxjQUFjLEVBQUU7WUFDOUIsT0FBTyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFELE9BQU8sR0FBRyxhQUFhLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyRCxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8s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LENBQUMsQ0FBQztpQkFDN0Q7YUFDRjtpQkFBTTtnQkFDTCxPQUFPLFFBQVEsQ0FBQzthQUNqQjtTQUNGO0tBQ0Y7SUFFRCxNQUFNLEtBQUssQ0FBQyw0Q0FBNEMsVUFBVSxJQUFJLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsdUJBQXVCLENBQUMsT0FBZSxFQUFFLFNBQWlDO0lBQ2pGLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1FBQ3ZFLDZEQUE2RDtRQUM3RCx3REFBd0Q7UUFDeEQsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxZQUFZLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM3RSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7XG4gIG1hdGVyaWFsTWl4aW5zLFxuICBtYXRlcmlhbEZ1bmN0aW9ucyxcbiAgbWF0ZXJpYWxWYXJpYWJsZXMsXG4gIGNka01peGlucyxcbiAgY2RrVmFyaWFibGVzLFxuICByZW1vdmVkTWF0ZXJpYWxWYXJpYWJsZXNcbn0gZnJvbSAnLi9jb25maWcnO1xuXG4vKipcbiAqIE1pZ3JhdGVzIHRoZSBjb250ZW50IG9mIGEgZmlsZSB0byB0aGUgbmV3IHRoZW1pbmcgQVBJLiBOb3RlIHRoYXQgdGhpcyBtaWdyYXRpb24gaXMgdXNpbmcgcGxhaW5cbiAqIHN0cmluZyBtYW5pcHVsYXRpb24sIHJhdGhlciB0aGFuIHRoZSBBU1QgZnJvbSBQb3N0Q1NTIGFuZCB0aGUgc2NoZW1hdGljcyBzdHJpbmcgbWFuaXB1bGF0aW9uXG4gKiBBUElzLCBiZWNhdXNlIGl0IGFsbG93cyB1cyB0byBydW4gaXQgaW5zaWRlIGczIGFuZCB0byBhdm9pZCBpbnRyb2R1Y2luZyBuZXcgZGVwZW5kZW5jaWVzLlxuICogQHBhcmFtIGNvbnRlbnQgQ29udGVudCBvZiB0aGUgZmlsZS5cbiAqIEBwYXJhbSBvbGRNYXRlcmlhbFByZWZpeCBQcmVmaXggd2l0aCB3aGljaCB0aGUgb2xkIE1hdGVyaWFsIGltcG9ydHMgc2hvdWxkIHN0YXJ0LlxuICogICBIYXMgdG8gZW5kIHdpdGggYSBzbGFzaC4gRS5nLiBpZiBgQGltcG9ydCAnfkBhbmd1bGFyL21hdGVyaWFsL3RoZW1pbmcnYCBzaG91bGQgYmVcbiAqICAgbWF0Y2hlZCwgdGhlIHByZWZpeCB3b3VsZCBiZSBgfkBhbmd1bGFyL21hdGVyaWFsL2AuXG4gKiBAcGFyYW0gb2xkQ2RrUHJlZml4IFByZWZpeCB3aXRoIHdoaWNoIHRoZSBvbGQgQ0RLIGltcG9ydHMgc2hvdWxkIHN0YXJ0LlxuICogICBIYXMgdG8gZW5kIHdpdGggYSBzbGFzaC4gRS5nLiBpZiBgQGltcG9ydCAnfkBhbmd1bGFyL2Nkay9vdmVybGF5J2Agc2hvdWxkIGJlXG4gKiAgIG1hdGNoZWQsIHRoZSBwcmVmaXggd291bGQgYmUgYH5AYW5ndWxhci9jZGsvYC5cbiAqIEBwYXJhbSBuZXdNYXRlcmlhbEltcG9ydFBhdGggTmV3IGltcG9ydCB0byB0aGUgTWF0ZXJpYWwgdGhlbWluZyBBUEkgKGUuZy4gYH5AYW5ndWxhci9tYXRlcmlhbGApLlxuICogQHBhcmFtIG5ld0Nka0ltcG9ydFBhdGggTmV3IGltcG9ydCB0byB0aGUgQ0RLIFNhc3MgQVBJcyAoZS5nLiBgfkBhbmd1bGFyL2Nka2ApLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbWlncmF0ZUZpbGVDb250ZW50KGNvbnRlbnQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkTWF0ZXJpYWxQcmVmaXg6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkQ2RrUHJlZml4OiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld01hdGVyaWFsSW1wb3J0UGF0aDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdDZGtJbXBvcnRQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBtYXRlcmlhbFJlc3VsdHMgPSBkZXRlY3RJbXBvcnRzKGNvbnRlbnQsIG9sZE1hdGVyaWFsUHJlZml4KTtcbiAgY29uc3QgY2RrUmVzdWx0cyA9IGRldGVjdEltcG9ydHMoY29udGVudCwgb2xkQ2RrUHJlZml4KTtcblxuICAvLyBJZiB0aGVyZSBhcmUgbm8gaW1wb3J0cywgd2UgZG9uJ3QgbmVlZCB0byBnbyBmdXJ0aGVyLlxuICBpZiAobWF0ZXJpYWxSZXN1bHRzLmltcG9ydHMubGVuZ3RoID4gMCB8fCBjZGtSZXN1bHRzLmltcG9ydHMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGluaXRpYWxDb250ZW50ID0gY29udGVudDtcbiAgICBjb250ZW50ID0gbWlncmF0ZU1hdGVyaWFsU3ltYm9scyhjb250ZW50LCBuZXdNYXRlcmlhbEltcG9ydFBhdGgsIG1hdGVyaWFsUmVzdWx0cy5uYW1lc3BhY2VzKTtcbiAgICBjb250ZW50ID0gbWlncmF0ZUNka1N5bWJvbHMoY29udGVudCwgbmV3Q2RrSW1wb3J0UGF0aCwgY2RrUmVzdWx0cy5uYW1lc3BhY2VzKTtcblxuICAgIC8vIE9ubHkgZHJvcCB0aGUgaW1wb3J0cyBpZiBhbnkgb2YgdGhlIHN5bWJvbHMgd2VyZSB1c2VkIHdpdGhpbiB0aGUgZmlsZS5cbiAgICBpZiAoY29udGVudCAhPT0gaW5pdGlhbENvbnRlbnQpIHtcbiAgICAgIGNvbnRlbnQgPSByZW1vdmVTdHJpbmdzKGNvbnRlbnQsIG1hdGVyaWFsUmVzdWx0cy5pbXBvcnRzKTtcbiAgICAgIGNvbnRlbnQgPSByZW1vdmVTdHJpbmdzKGNvbnRlbnQsIGNka1Jlc3VsdHMuaW1wb3J0cyk7XG4gICAgICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKC9eXFxzKy8sICcnKTtcbiAgICAgIGNvbnRlbnQgPSByZXBsYWNlUmVtb3ZlZFZhcmlhYmxlcyhjb250ZW50LCByZW1vdmVkTWF0ZXJpYWxWYXJpYWJsZXMpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIENvdW50cyB0aGUgbnVtYmVyIG9mIGltcG9ydHMgd2l0aCBhIHNwZWNpZmljIHByZWZpeCBhbmQgZXh0cmFjdHMgdGhlaXIgbmFtZXNwYWNlcy5cbiAqIEBwYXJhbSBjb250ZW50IEZpbGUgY29udGVudCBpbiB3aGljaCB0byBsb29rIGZvciBpbXBvcnRzLlxuICogQHBhcmFtIHByZWZpeCBQcmVmaXggdGhhdCB0aGUgaW1wb3J0cyBzaG91bGQgc3RhcnQgd2l0aC5cbiAqL1xuZnVuY3Rpb24gZGV0ZWN0SW1wb3J0cyhjb250ZW50OiBzdHJpbmcsIHByZWZpeDogc3RyaW5nKToge2ltcG9ydHM6IHN0cmluZ1tdLCBuYW1lc3BhY2VzOiBzdHJpbmdbXX0ge1xuICBpZiAocHJlZml4W3ByZWZpeC5sZW5ndGggLSAxXSAhPT0gJy8nKSB7XG4gICAgLy8gU29tZSBvZiB0aGUgbG9naWMgZnVydGhlciBkb3duIG1ha2VzIGFzc3VtcHRpb25zIGFib3V0IHRoZSBpbXBvcnQgZGVwdGguXG4gICAgdGhyb3cgRXJyb3IoYFByZWZpeCBcIiR7cHJlZml4fVwiIGhhcyB0byBlbmQgaW4gYSBzbGFzaC5gKTtcbiAgfVxuXG4gIC8vIExpc3Qgb2YgYEB1c2VgIG5hbWVzcGFjZXMgZnJvbSB3aGljaCBBbmd1bGFyIENESy9NYXRlcmlhbCBBUElzIG1heSBiZSByZWZlcmVuY2VkLlxuICAvLyBTaW5jZSB3ZSBrbm93IHRoYXQgdGhlIGxpYnJhcnkgZG9lc24ndCBoYXZlIGFueSBuYW1lIGNvbGxpc2lvbnMsIHdlIGNhbiB0cmVhdCBhbGwgb2YgdGhlc2VcbiAgLy8gbmFtZXNwYWNlcyBhcyBlcXVpdmFsZW50LlxuICBjb25zdCBuYW1lc3BhY2VzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBpbXBvcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBjb25zdCBwYXR0ZXJuID0gbmV3IFJlZ0V4cChgQChpbXBvcnR8dXNlKSArWydcIl0ke2VzY2FwZVJlZ0V4cChwcmVmaXgpfS4qWydcIl0uKjs/XFxuYCwgJ2cnKTtcbiAgbGV0IG1hdGNoOiBSZWdFeHBFeGVjQXJyYXkgfCBudWxsID0gbnVsbDtcblxuICB3aGlsZSAobWF0Y2ggPSBwYXR0ZXJuLmV4ZWMoY29udGVudCkpIHtcbiAgICBjb25zdCBbZnVsbEltcG9ydCwgdHlwZV0gPSBtYXRjaDtcblxuICAgIGlmICh0eXBlID09PSAndXNlJykge1xuICAgICAgY29uc3QgbmFtZXNwYWNlID0gZXh0cmFjdE5hbWVzcGFjZUZyb21Vc2VTdGF0ZW1lbnQoZnVsbEltcG9ydCk7XG5cbiAgICAgIGlmIChuYW1lc3BhY2VzLmluZGV4T2YobmFtZXNwYWNlKSA9PT0gLTEpIHtcbiAgICAgICAgbmFtZXNwYWNlcy5wdXNoKG5hbWVzcGFjZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW1wb3J0cy5wdXNoKGZ1bGxJbXBvcnQpO1xuICB9XG5cbiAgcmV0dXJuIHtpbXBvcnRzLCBuYW1lc3BhY2VzfTtcbn1cblxuLyoqIE1pZ3JhdGVzIHRoZSBNYXRlcmlhbCBzeW1ibHMgaW4gYSBmaWxlLiAqL1xuZnVuY3Rpb24gbWlncmF0ZU1hdGVyaWFsU3ltYm9scyhjb250ZW50OiBzdHJpbmcsIGltcG9ydFBhdGg6IHN0cmluZywgbmFtZXNwYWNlczogc3RyaW5nW10pOiBzdHJpbmcge1xuICBjb25zdCBpbml0aWFsQ29udGVudCA9IGNvbnRlbnQ7XG4gIGNvbnN0IG5hbWVzcGFjZSA9ICdtYXQnO1xuXG4gIC8vIE1pZ3JhdGUgdGhlIG1peGlucy5cbiAgY29udGVudCA9IHJlbmFtZVN5bWJvbHMoY29udGVudCwgbWF0ZXJpYWxNaXhpbnMsIG5hbWVzcGFjZXMsIG1peGluS2V5Rm9ybWF0dGVyLFxuICAgIGdldE1peGluVmFsdWVGb3JtYXR0ZXIobmFtZXNwYWNlKSk7XG5cbiAgLy8gTWlncmF0ZSB0aGUgZnVuY3Rpb25zLlxuICBjb250ZW50ID0gcmVuYW1lU3ltYm9scyhjb250ZW50LCBtYXRlcmlhbEZ1bmN0aW9ucywgbmFtZXNwYWNlcywgZnVuY3Rpb25LZXlGb3JtYXR0ZXIsXG4gICAgZ2V0RnVuY3Rpb25WYWx1ZUZvcm1hdHRlcihuYW1lc3BhY2UpKTtcblxuICAvLyBNaWdyYXRlIHRoZSB2YXJpYWJsZXMuXG4gIGNvbnRlbnQgPSByZW5hbWVTeW1ib2xzKGNvbnRlbnQsIG1hdGVyaWFsVmFyaWFibGVzLCBuYW1lc3BhY2VzLCB2YXJpYWJsZUtleUZvcm1hdHRlcixcbiAgICBnZXRWYXJpYWJsZVZhbHVlRm9ybWF0dGVyKG5hbWVzcGFjZSkpO1xuXG4gIGlmIChjb250ZW50ICE9PSBpbml0aWFsQ29udGVudCkge1xuICAgIC8vIEFkZCBhbiBpbXBvcnQgdG8gdGhlIG5ldyBBUEkgb25seSBpZiBhbnkgb2YgdGhlIEFQSXMgd2VyZSBiZWluZyB1c2VkLlxuICAgIGNvbnRlbnQgPSBpbnNlcnRVc2VTdGF0ZW1lbnQoY29udGVudCwgaW1wb3J0UGF0aCwgbmFtZXNwYWNlKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKiogTWlncmF0ZXMgdGhlIENESyBzeW1ib2xzIGluIGEgZmlsZS4gKi9cbmZ1bmN0aW9uIG1pZ3JhdGVDZGtTeW1ib2xzKGNvbnRlbnQ6IHN0cmluZywgaW1wb3J0UGF0aDogc3RyaW5nLCBuYW1lc3BhY2VzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIGNvbnN0IGluaXRpYWxDb250ZW50ID0gY29udGVudDtcbiAgY29uc3QgbmFtZXNwYWNlID0gJ2Nkayc7XG5cbiAgLy8gTWlncmF0ZSB0aGUgbWl4aW5zLlxuICBjb250ZW50ID0gcmVuYW1lU3ltYm9scyhjb250ZW50LCBjZGtNaXhpbnMsIG5hbWVzcGFjZXMsIG1peGluS2V5Rm9ybWF0dGVyLFxuICAgIGdldE1peGluVmFsdWVGb3JtYXR0ZXIobmFtZXNwYWNlKSk7XG5cbiAgLy8gTWlncmF0ZSB0aGUgdmFyaWFibGVzLlxuICBjb250ZW50ID0gcmVuYW1lU3ltYm9scyhjb250ZW50LCBjZGtWYXJpYWJsZXMsIG5hbWVzcGFjZXMsIHZhcmlhYmxlS2V5Rm9ybWF0dGVyLFxuICAgIGdldFZhcmlhYmxlVmFsdWVGb3JtYXR0ZXIobmFtZXNwYWNlKSk7XG5cbiAgLy8gUHJldmlvdXNseSB0aGUgQ0RLIHN5bWJvbHMgd2VyZSBleHBvc2VkIHRocm91Z2ggYG1hdGVyaWFsL3RoZW1pbmdgLCBidXQgbm93IHdlIGhhdmUgYVxuICAvLyBkZWRpY2F0ZWQgZW50cnlwb2ludCBmb3IgdGhlIENESy4gT25seSBhZGQgYW4gaW1wb3J0IGZvciBpdCBpZiBhbnkgb2YgdGhlIHN5bWJvbHMgYXJlIHVzZWQuXG4gIGlmIChjb250ZW50ICE9PSBpbml0aWFsQ29udGVudCkge1xuICAgIGNvbnRlbnQgPSBpbnNlcnRVc2VTdGF0ZW1lbnQoY29udGVudCwgaW1wb3J0UGF0aCwgbmFtZXNwYWNlKTtcbiAgfVxuXG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vKipcbiAqIFJlbmFtZXMgYWxsIFNhc3Mgc3ltYm9scyBpbiBhIGZpbGUgYmFzZWQgb24gYSBwcmUtZGVmaW5lZCBtYXBwaW5nLlxuICogQHBhcmFtIGNvbnRlbnQgQ29udGVudCBvZiBhIGZpbGUgdG8gYmUgbWlncmF0ZWQuXG4gKiBAcGFyYW0gbWFwcGluZyBNYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCB0aGVpciByZXBsYWNlbWVudHMuXG4gKiBAcGFyYW0gZ2V0S2V5UGF0dGVybiBGdW5jdGlvbiB1c2VkIHRvIHR1cm4gZWFjaCBvZiB0aGUga2V5cyBpbnRvIGEgcmVnZXguXG4gKiBAcGFyYW0gZm9ybWF0VmFsdWUgRm9ybWF0cyB0aGUgdmFsdWUgdGhhdCB3aWxsIHJlcGxhY2UgYW55IG1hdGNoZXMgb2YgdGhlIHBhdHRlcm4gcmV0dXJuZWQgYnlcbiAqICBgZ2V0S2V5UGF0dGVybmAuXG4gKi9cbmZ1bmN0aW9uIHJlbmFtZVN5bWJvbHMoY29udGVudDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2VzOiBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgZ2V0S2V5UGF0dGVybjogKG5hbWVzcGFjZTogc3RyaW5nfG51bGwsIGtleTogc3RyaW5nKSA9PiBSZWdFeHAsXG4gICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdFZhbHVlOiAoa2V5OiBzdHJpbmcpID0+IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFRoZSBudWxsIGF0IHRoZSBlbmQgaXMgc28gdGhhdCB3ZSBtYWtlIG9uZSBsYXN0IHBhc3MgdG8gY292ZXIgbm9uLW5hbWVzcGFjZWQgc3ltYm9scy5cbiAgWy4uLm5hbWVzcGFjZXMuc2xpY2UoKS5zb3J0KHNvcnRMZW5ndGhEZXNjZW5kaW5nKSwgbnVsbF0uZm9yRWFjaChuYW1lc3BhY2UgPT4ge1xuICAgIC8vIE1pZ3JhdGUgdGhlIGxvbmdlc3Qga2V5cyBmaXJzdCBzbyB0aGF0IG91ciByZWdleC1iYXNlZCByZXBsYWNlbWVudHMgZG9uJ3QgYWNjaWRlbnRhbGx5XG4gICAgLy8gY2FwdHVyZSBrZXlzIHRoYXQgY29udGFpbiBvdGhlciBrZXlzLiBFLmcuIGAkbWF0LWJsdWVgIGlzIGNvbnRhaW5lZCB3aXRoaW4gYCRtYXQtYmx1ZS1ncmV5YC5cbiAgICBPYmplY3Qua2V5cyhtYXBwaW5nKS5zb3J0KHNvcnRMZW5ndGhEZXNjZW5kaW5nKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICBjb25zdCBwYXR0ZXJuID0gZ2V0S2V5UGF0dGVybihuYW1lc3BhY2UsIGtleSk7XG5cbiAgICAgIC8vIFNhbml0eSBjaGVjayBzaW5jZSBub24tZ2xvYmFsIHJlZ2V4ZXMgd2lsbCBvbmx5IHJlcGxhY2UgdGhlIGZpcnN0IG1hdGNoLlxuICAgICAgaWYgKHBhdHRlcm4uZmxhZ3MuaW5kZXhPZignZycpID09PSAtMSkge1xuICAgICAgICB0aHJvdyBFcnJvcignUmVwbGFjZW1lbnQgcGF0dGVybiBtdXN0IGJlIGdsb2JhbC4nKTtcbiAgICAgIH1cblxuICAgICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShwYXR0ZXJuLCBmb3JtYXRWYWx1ZShtYXBwaW5nW2tleV0pKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbi8qKiBJbnNlcnRzIGFuIGBAdXNlYCBzdGF0ZW1lbnQgaW4gYSBzdHJpbmcuICovXG5mdW5jdGlvbiBpbnNlcnRVc2VTdGF0ZW1lbnQoY29udGVudDogc3RyaW5nLCBpbXBvcnRQYXRoOiBzdHJpbmcsIG5hbWVzcGFjZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gU2FzcyBoYXMgYSBsaW1pdGF0aW9uIHRoYXQgYWxsIGBAdXNlYCBkZWNsYXJhdGlvbnMgaGF2ZSB0byBjb21lIGJlZm9yZSBgQGltcG9ydGAgc28gd2UgaGF2ZVxuICAvLyB0byBmaW5kIHRoZSBmaXJzdCBpbXBvcnQgYW5kIGluc2VydCBiZWZvcmUgaXQuIFRlY2huaWNhbGx5IHdlIGNhbiBnZXQgYXdheSB3aXRoIGFsd2F5c1xuICAvLyBpbnNlcnRpbmcgYXQgMCwgYnV0IHRoZSBmaWxlIG1heSBzdGFydCB3aXRoIHNvbWV0aGluZyBsaWtlIGEgbGljZW5zZSBoZWFkZXIuXG4gIGNvbnN0IG5ld0ltcG9ydEluZGV4ID0gTWF0aC5tYXgoMCwgY29udGVudC5pbmRleE9mKCdAaW1wb3J0ICcpKTtcbiAgcmV0dXJuIGNvbnRlbnQuc2xpY2UoMCwgbmV3SW1wb3J0SW5kZXgpICsgYEB1c2UgJyR7aW1wb3J0UGF0aH0nIGFzICR7bmFtZXNwYWNlfTtcXG5gICtcbiAgICAgICAgIGNvbnRlbnQuc2xpY2UobmV3SW1wb3J0SW5kZXgpO1xufVxuXG4vKiogRm9ybWF0cyBhIG1pZ3JhdGlvbiBrZXkgYXMgYSBTYXNzIG1peGluIGludm9jYXRpb24uICovXG5mdW5jdGlvbiBtaXhpbktleUZvcm1hdHRlcihuYW1lc3BhY2U6IHN0cmluZ3xudWxsLCBuYW1lOiBzdHJpbmcpOiBSZWdFeHAge1xuICAvLyBOb3RlIHRoYXQgYWRkaW5nIGEgYChgIGF0IHRoZSBlbmQgb2YgdGhlIHBhdHRlcm4gd291bGQgYmUgbW9yZSBhY2N1cmF0ZSwgYnV0IG1peGluXG4gIC8vIGludm9jYXRpb25zIGRvbid0IG5lY2Vzc2FyaWx5IGhhdmUgdG8gaW5jbHVkZSB0aGUgcGFyYW50aGVzZXMuIFdlIGNvdWxkIGFkZCBgWyg7XWAsXG4gIC8vIGJ1dCB0aGVuIHdlIHdvbid0IGtub3cgd2hpY2ggY2hhcmFjdGVyIHRvIGluY2x1ZGUgaW4gdGhlIHJlcGxhY2VtZW50IHN0cmluZy5cbiAgcmV0dXJuIG5ldyBSZWdFeHAoYEBpbmNsdWRlICske2VzY2FwZVJlZ0V4cCgobmFtZXNwYWNlID8gbmFtZXNwYWNlICsgJy4nIDogJycpICsgbmFtZSl9YCwgJ2cnKTtcbn1cblxuLyoqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGZvcm1hdCBhIFNhc3MgbWl4aW4gcmVwbGFjZW1lbnQuICovXG5mdW5jdGlvbiBnZXRNaXhpblZhbHVlRm9ybWF0dGVyKG5hbWVzcGFjZTogc3RyaW5nKTogKG5hbWU6IHN0cmluZykgPT4gc3RyaW5nIHtcbiAgLy8gTm90ZSB0aGF0IGFkZGluZyBhIGAoYCBhdCB0aGUgZW5kIG9mIHRoZSBwYXR0ZXJuIHdvdWxkIGJlIG1vcmUgYWNjdXJhdGUsXG4gIC8vIGJ1dCBtaXhpbiBpbnZvY2F0aW9ucyBkb24ndCBuZWNlc3NhcmlseSBoYXZlIHRvIGluY2x1ZGUgdGhlIHBhcmFudGhlc2VzLlxuICByZXR1cm4gbmFtZSA9PiBgQGluY2x1ZGUgJHtuYW1lc3BhY2V9LiR7bmFtZX1gO1xufVxuXG4vKiogRm9ybWF0cyBhIG1pZ3JhdGlvbiBrZXkgYXMgYSBTYXNzIGZ1bmN0aW9uIGludm9jYXRpb24uICovXG5mdW5jdGlvbiBmdW5jdGlvbktleUZvcm1hdHRlcihuYW1lc3BhY2U6IHN0cmluZ3xudWxsLCBuYW1lOiBzdHJpbmcpOiBSZWdFeHAge1xuICByZXR1cm4gbmV3IFJlZ0V4cChlc2NhcGVSZWdFeHAoYCR7bmFtZXNwYWNlID8gbmFtZXNwYWNlICsgJy4nIDogJyd9JHtuYW1lfShgKSwgJ2cnKTtcbn1cblxuLyoqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGZvcm1hdCBhIFNhc3MgZnVuY3Rpb24gcmVwbGFjZW1lbnQuICovXG5mdW5jdGlvbiBnZXRGdW5jdGlvblZhbHVlRm9ybWF0dGVyKG5hbWVzcGFjZTogc3RyaW5nKTogKG5hbWU6IHN0cmluZykgPT4gc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWUgPT4gYCR7bmFtZXNwYWNlfS4ke25hbWV9KGA7XG59XG5cbi8qKiBGb3JtYXRzIGEgbWlncmF0aW9uIGtleSBhcyBhIFNhc3MgdmFyaWFibGUuICovXG5mdW5jdGlvbiB2YXJpYWJsZUtleUZvcm1hdHRlcihuYW1lc3BhY2U6IHN0cmluZ3xudWxsLCBuYW1lOiBzdHJpbmcpOiBSZWdFeHAge1xuICByZXR1cm4gbmV3IFJlZ0V4cChlc2NhcGVSZWdFeHAoYCR7bmFtZXNwYWNlID8gbmFtZXNwYWNlICsgJy4nIDogJyd9JCR7bmFtZX1gKSwgJ2cnKTtcbn1cblxuLyoqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGZvcm1hdCBhIFNhc3MgdmFyaWFibGUgcmVwbGFjZW1lbnQuICovXG5mdW5jdGlvbiBnZXRWYXJpYWJsZVZhbHVlRm9ybWF0dGVyKG5hbWVzcGFjZTogc3RyaW5nKTogKG5hbWU6IHN0cmluZykgPT4gc3RyaW5nIHtcbiAgcmV0dXJuIG5hbWUgPT4gYCR7bmFtZXNwYWNlfS4kJHtuYW1lfWA7XG59XG5cbi8qKiBFc2NhcGVzIHNwZWNpYWwgcmVnZXggY2hhcmFjdGVycyBpbiBhIHN0cmluZy4gKi9cbmZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvKFsuKis/Xj0hOiR7fSgpfFtcXF1cXC9cXFxcXSkvZywgJ1xcXFwkMScpO1xufVxuXG4vKiogVXNlZCB3aXRoIGBBcnJheS5wcm90b3R5cGUuc29ydGAgdG8gb3JkZXIgc3RyaW5ncyBpbiBkZXNjZW5kaW5nIGxlbmd0aC4gKi9cbmZ1bmN0aW9uIHNvcnRMZW5ndGhEZXNjZW5kaW5nKGE6IHN0cmluZywgYjogc3RyaW5nKSB7XG4gIHJldHVybiBiLmxlbmd0aCAtIGEubGVuZ3RoO1xufVxuXG4vKiogUmVtb3ZlcyBhbGwgc3RyaW5ncyBmcm9tIGFub3RoZXIgc3RyaW5nLiAqL1xuZnVuY3Rpb24gcmVtb3ZlU3RyaW5ncyhjb250ZW50OiBzdHJpbmcsIHRvUmVtb3ZlOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gIHJldHVybiB0b1JlbW92ZS5yZWR1Y2UoKGFjY3VtdWxhdG9yLCBjdXJyZW50KSA9PiBhY2N1bXVsYXRvci5yZXBsYWNlKGN1cnJlbnQsICcnKSwgY29udGVudCk7XG59XG5cbi8qKiBQYXJzZXMgb3V0IHRoZSBuYW1lc3BhY2UgZnJvbSBhIFNhc3MgYEB1c2VgIHN0YXRlbWVudC4gKi9cbmZ1bmN0aW9uIGV4dHJhY3ROYW1lc3BhY2VGcm9tVXNlU3RhdGVtZW50KGZ1bGxJbXBvcnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IGNsb3NlUXVvdGVJbmRleCA9IE1hdGgubWF4KGZ1bGxJbXBvcnQubGFzdEluZGV4T2YoYFwiYCksIGZ1bGxJbXBvcnQubGFzdEluZGV4T2YoYCdgKSk7XG5cbiAgaWYgKGNsb3NlUXVvdGVJbmRleCA+IC0xKSB7XG4gICAgY29uc3QgYXNFeHByZXNzaW9uID0gJ2FzICc7XG4gICAgY29uc3QgYXNJbmRleCA9IGZ1bGxJbXBvcnQuaW5kZXhPZihhc0V4cHJlc3Npb24sIGNsb3NlUXVvdGVJbmRleCk7XG5cbiAgICAvLyBJZiB3ZSBmb3VuZCBhbiBgIGFzIGAgZXhwcmVzc2lvbiwgd2UgY29uc2lkZXIgdGhlIHJlc3Qgb2YgdGhlIHRleHQgYXMgdGhlIG5hbWVzcGFjZS5cbiAgICBpZiAoYXNJbmRleCA+IC0xKSB7XG4gICAgICByZXR1cm4gZnVsbEltcG9ydC5zbGljZShhc0luZGV4ICsgYXNFeHByZXNzaW9uLmxlbmd0aCkuc3BsaXQoJzsnKVswXS50cmltKCk7XG4gICAgfVxuXG4gICAgLy8gT3RoZXJ3aXNlIHRoZSBuYW1lc3BhY2UgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdGhhdCBpcyBiZWluZyBpbXBvcnRlZC5cbiAgICBjb25zdCBsYXN0U2xhc2hJbmRleCA9IGZ1bGxJbXBvcnQubGFzdEluZGV4T2YoJy8nLCBjbG9zZVF1b3RlSW5kZXgpO1xuXG4gICAgaWYgKGxhc3RTbGFzaEluZGV4ID4gLTEpIHtcbiAgICAgIGNvbnN0IGZpbGVOYW1lID0gZnVsbEltcG9ydC5zbGljZShsYXN0U2xhc2hJbmRleCArIDEsIGNsb3NlUXVvdGVJbmRleClcbiAgICAgICAgLy8gU2FzcyBhbGxvd3MgZm9yIGxlYWRpbmcgdW5kZXJzY29yZXMgdG8gYmUgb21pdHRlZCBhbmQgaXQgdGVjaG5pY2FsbHkgc3VwcG9ydHMgLnNjc3MuXG4gICAgICAgIC5yZXBsYWNlKC9eX3woXFwuaW1wb3J0KT9cXC5zY3NzJHxcXC5pbXBvcnQkL2csICcnKTtcblxuICAgICAgLy8gU2FzcyBpZ25vcmVzIGAvaW5kZXhgIGFuZCBpbmZlcnMgdGhlIG5hbWVzcGFjZSBhcyB0aGUgbmV4dCBzZWdtZW50IGluIHRoZSBwYXRoLlxuICAgICAgaWYgKGZpbGVOYW1lID09PSAnaW5kZXgnKSB7XG4gICAgICAgIGNvbnN0IG5leHRTbGFzaEluZGV4ID0gZnVsbEltcG9ydC5sYXN0SW5kZXhPZignLycsIGxhc3RTbGFzaEluZGV4IC0gMSk7XG5cbiAgICAgICAgaWYgKG5leHRTbGFzaEluZGV4ID4gLTEpIHtcbiAgICAgICAgICByZXR1cm4gZnVsbEltcG9ydC5zbGljZShuZXh0U2xhc2hJbmRleCArIDEsIGxhc3RTbGFzaEluZGV4KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGZpbGVOYW1lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRocm93IEVycm9yKGBDb3VsZCBub3QgZXh0cmFjdCBuYW1lc3BhY2UgZnJvbSBpbXBvcnQgXCIke2Z1bGxJbXBvcnR9XCIuYCk7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgdmFyaWFibGVzIHRoYXQgaGF2ZSBiZWVuIHJlbW92ZWQgd2l0aCB0aGVpciB2YWx1ZXMuXG4gKiBAcGFyYW0gY29udGVudCBDb250ZW50IG9mIHRoZSBmaWxlIHRvIGJlIG1pZ3JhdGVkLlxuICogQHBhcmFtIHZhcmlhYmxlcyBNYXBwaW5nIGJldHdlZW4gdmFyaWFibGUgbmFtZXMgYW5kIHRoZWlyIHZhbHVlcy5cbiAqL1xuZnVuY3Rpb24gcmVwbGFjZVJlbW92ZWRWYXJpYWJsZXMoY29udGVudDogc3RyaW5nLCB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xuICBPYmplY3Qua2V5cyh2YXJpYWJsZXMpLnNvcnQoc29ydExlbmd0aERlc2NlbmRpbmcpLmZvckVhY2godmFyaWFibGVOYW1lID0+IHtcbiAgICAvLyBOb3RlIHRoYXQgdGhlIHBhdHRlcm4gdXNlcyBhIG5lZ2F0aXZlIGxvb2thaGVhZCB0byBleGNsdWRlXG4gICAgLy8gdmFyaWFibGUgYXNzaWdubWVudHMsIGJlY2F1c2UgdGhleSBjYW4ndCBiZSBtaWdyYXRlZC5cbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoYFxcXFwkJHtlc2NhcGVSZWdFeHAodmFyaWFibGVOYW1lKX0oPyFcXFxccys6fDopYCwgJ2cnKTtcbiAgICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKHJlZ2V4LCB2YXJpYWJsZXNbdmFyaWFibGVOYW1lXSk7XG4gIH0pO1xuXG4gIHJldHVybiBjb250ZW50O1xufVxuIl19
@@ -1,9 +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 interface Schema {
9
- }
@@ -1,10 +0,0 @@
1
- "use strict";
2
- /**
3
- * @license
4
- * Copyright Google LLC All Rights Reserved.
5
- *
6
- * Use of this source code is governed by an MIT-style license that can be
7
- * found in the LICENSE file at https://angular.io/license
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctZ2VuZXJhdGUvdGhlbWluZy1hcGkvc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBTY2hlbWEge31cbiJdfQ==
@@ -1,7 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema",
3
- "$id": "SchematicsMaterialThemingApi",
4
- "title": "Material Theming API migration",
5
- "type": "object",
6
- "properties": {}
7
- }