@angular/material 12.0.0 → 12.0.4

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 (208) hide show
  1. package/_index.scss +2 -1
  2. package/_theming.scss +39 -4
  3. package/autocomplete/_autocomplete-legacy-index.scss +2 -0
  4. package/autocomplete/autocomplete.d.ts +4 -2
  5. package/autocomplete/index.metadata.json +1 -1
  6. package/badge/_badge-legacy-index.scss +3 -0
  7. package/bottom-sheet/_bottom-sheet-legacy-index.scss +2 -0
  8. package/bottom-sheet/bottom-sheet-container.d.ts +0 -2
  9. package/bottom-sheet/index.metadata.json +1 -1
  10. package/bundles/material-autocomplete.umd.js.map +1 -1
  11. package/bundles/material-bottom-sheet.umd.js +7 -15
  12. package/bundles/material-bottom-sheet.umd.js.map +1 -1
  13. package/bundles/material-button-toggle.umd.js.map +1 -1
  14. package/bundles/material-checkbox.umd.js +1 -1
  15. package/bundles/material-checkbox.umd.js.map +1 -1
  16. package/bundles/material-core.umd.js +2 -2
  17. package/bundles/material-core.umd.js.map +1 -1
  18. package/bundles/material-datepicker.umd.js +17 -19
  19. package/bundles/material-datepicker.umd.js.map +1 -1
  20. package/bundles/material-dialog.umd.js +11 -19
  21. package/bundles/material-dialog.umd.js.map +1 -1
  22. package/bundles/material-input.umd.js +8 -2
  23. package/bundles/material-input.umd.js.map +1 -1
  24. package/bundles/material-radio.umd.js +4 -4
  25. package/bundles/material-radio.umd.js.map +1 -1
  26. package/bundles/material-slide-toggle.umd.js +4 -4
  27. package/bundles/material-slide-toggle.umd.js.map +1 -1
  28. package/bundles/material-sort.umd.js +7 -1
  29. package/bundles/material-sort.umd.js.map +1 -1
  30. package/bundles/material-stepper.umd.js +2 -2
  31. package/bundles/material-stepper.umd.js.map +1 -1
  32. package/bundles/material-table.umd.js.map +1 -1
  33. package/bundles/material-tabs.umd.js +4 -2
  34. package/bundles/material-tabs.umd.js.map +1 -1
  35. package/bundles/material-tooltip.umd.js +19 -15
  36. package/bundles/material-tooltip.umd.js.map +1 -1
  37. package/button/_button-legacy-index.scss +19 -0
  38. package/button-toggle/_button-toggle-legacy-index.scss +2 -0
  39. package/button-toggle/button-toggle.d.ts +4 -0
  40. package/button-toggle/index.metadata.json +1 -1
  41. package/card/_card-legacy-index.scss +2 -0
  42. package/checkbox/_checkbox-legacy-index.scss +2 -0
  43. package/checkbox/checkbox-config.d.ts +2 -0
  44. package/checkbox/index.metadata.json +1 -1
  45. package/chips/_chips-legacy-index.scss +6 -0
  46. package/core/_core-legacy-index.scss +17 -0
  47. package/core/color/_color-legacy-index.scss +1 -0
  48. package/core/density/private/_density-legacy-index.scss +5 -0
  49. package/core/focus-indicators/_focus-indicators-legacy-index.scss +5 -0
  50. package/core/focus-indicators/_focus-indicators.import.scss +1 -1
  51. package/core/focus-indicators/_focus-indicators.scss +4 -0
  52. package/core/index.metadata.json +1 -1
  53. package/core/option/_option-legacy-index.scss +5 -0
  54. package/core/ripple/_ripple-legacy-index.scss +3 -0
  55. package/core/ripple/ripple.d.ts +8 -6
  56. package/core/selection/pseudo-checkbox/_pseudo-checkbox-legacy-index.scss +2 -0
  57. package/core/style/_style-legacy-index.scss +24 -0
  58. package/core/theming/_theming-legacy-index.scss +22 -0
  59. package/core/theming/_theming.scss +45 -22
  60. package/core/typography/_typography-legacy-index.scss +18 -0
  61. package/core/typography/_typography-utils.scss +27 -8
  62. package/core/typography/_typography.scss +36 -7
  63. package/datepicker/_datepicker-legacy-index.scss +9 -0
  64. package/datepicker/calendar.d.ts +2 -4
  65. package/datepicker/datepicker-base.d.ts +6 -2
  66. package/datepicker/index.metadata.json +1 -1
  67. package/dialog/_dialog-legacy-index.scss +2 -0
  68. package/dialog/dialog-container.d.ts +0 -2
  69. package/dialog/index.metadata.json +1 -1
  70. package/divider/_divider-legacy-index.scss +3 -0
  71. package/esm2015/autocomplete/autocomplete.js +1 -1
  72. package/esm2015/bottom-sheet/bottom-sheet-container.js +5 -12
  73. package/esm2015/button-toggle/button-toggle.js +1 -1
  74. package/esm2015/checkbox/checkbox-config.js +1 -1
  75. package/esm2015/checkbox/checkbox.js +2 -2
  76. package/esm2015/core/common-behaviors/common-module.js +1 -1
  77. package/esm2015/core/ripple/ripple.js +1 -1
  78. package/esm2015/core/version.js +1 -1
  79. package/esm2015/datepicker/calendar.js +3 -5
  80. package/esm2015/datepicker/date-range-input-parts.js +3 -2
  81. package/esm2015/datepicker/datepicker-base.js +9 -9
  82. package/esm2015/datepicker/datepicker-intl.js +3 -3
  83. package/esm2015/dialog/dialog-container.js +5 -12
  84. package/esm2015/input/input.js +10 -4
  85. package/esm2015/radio/radio.js +5 -5
  86. package/esm2015/slide-toggle/slide-toggle.js +5 -5
  87. package/esm2015/sort/sort-header.js +8 -2
  88. package/esm2015/stepper/step-header.js +3 -3
  89. package/esm2015/table/table-data-source.js +1 -1
  90. package/esm2015/tabs/tab-group.js +4 -2
  91. package/esm2015/tabs/tab.js +3 -3
  92. package/esm2015/tooltip/tooltip.js +12 -8
  93. package/expansion/_expansion-legacy-index.scss +3 -0
  94. package/fesm2015/autocomplete.js.map +1 -1
  95. package/fesm2015/bottom-sheet.js +4 -11
  96. package/fesm2015/bottom-sheet.js.map +1 -1
  97. package/fesm2015/button-toggle.js.map +1 -1
  98. package/fesm2015/checkbox.js +1 -1
  99. package/fesm2015/checkbox.js.map +1 -1
  100. package/fesm2015/core.js +2 -2
  101. package/fesm2015/core.js.map +1 -1
  102. package/fesm2015/datepicker.js +14 -15
  103. package/fesm2015/datepicker.js.map +1 -1
  104. package/fesm2015/dialog.js +4 -11
  105. package/fesm2015/dialog.js.map +1 -1
  106. package/fesm2015/input.js +9 -3
  107. package/fesm2015/input.js.map +1 -1
  108. package/fesm2015/radio.js +4 -4
  109. package/fesm2015/radio.js.map +1 -1
  110. package/fesm2015/slide-toggle.js +4 -4
  111. package/fesm2015/slide-toggle.js.map +1 -1
  112. package/fesm2015/sort.js +7 -1
  113. package/fesm2015/sort.js.map +1 -1
  114. package/fesm2015/stepper.js +2 -2
  115. package/fesm2015/stepper.js.map +1 -1
  116. package/fesm2015/table.js.map +1 -1
  117. package/fesm2015/tabs.js +4 -2
  118. package/fesm2015/tabs.js.map +1 -1
  119. package/fesm2015/tooltip.js +11 -7
  120. package/fesm2015/tooltip.js.map +1 -1
  121. package/form-field/_form-field-legacy-index.scss +24 -0
  122. package/grid-list/_grid-list-legacy-index.scss +2 -0
  123. package/icon/_icon-legacy-index.scss +2 -0
  124. package/input/_input-legacy-index.scss +2 -0
  125. package/input/index.metadata.json +1 -1
  126. package/list/_list-legacy-index.scss +2 -0
  127. package/menu/_menu-legacy-index.scss +2 -0
  128. package/package.json +2 -2
  129. package/paginator/_paginator-legacy-index.scss +2 -0
  130. package/progress-bar/_progress-bar-legacy-index.scss +2 -0
  131. package/progress-spinner/_progress-spinner-legacy-index.scss +2 -0
  132. package/radio/_radio-legacy-index.scss +2 -0
  133. package/radio/index.metadata.json +1 -1
  134. package/radio/radio.d.ts +3 -2
  135. package/schematics/ng-add/fonts/material-fonts.mjs +46 -0
  136. package/schematics/ng-add/index.js +1 -1
  137. package/schematics/ng-add/index.mjs +55 -0
  138. package/schematics/ng-add/package-config.mjs +47 -0
  139. package/schematics/ng-add/schema.mjs +10 -0
  140. package/schematics/ng-add/setup-project.mjs +121 -0
  141. package/schematics/ng-add/theming/create-custom-theme.mjs +51 -0
  142. package/schematics/ng-add/theming/theming.mjs +165 -0
  143. package/schematics/ng-generate/address-form/index.mjs +49 -0
  144. package/schematics/ng-generate/address-form/schema.mjs +10 -0
  145. package/schematics/ng-generate/dashboard/index.mjs +49 -0
  146. package/schematics/ng-generate/dashboard/schema.mjs +10 -0
  147. package/schematics/ng-generate/navigation/index.mjs +49 -0
  148. package/schematics/ng-generate/navigation/schema.mjs +10 -0
  149. package/schematics/ng-generate/table/index.mjs +46 -0
  150. package/schematics/ng-generate/table/schema.mjs +10 -0
  151. package/schematics/ng-generate/tree/index.mjs +46 -0
  152. package/schematics/ng-generate/tree/schema.mjs +10 -0
  153. package/schematics/ng-update/data/attribute-selectors.mjs +12 -0
  154. package/schematics/ng-update/data/class-names.mjs +32 -0
  155. package/schematics/ng-update/data/constructor-checks.mjs +143 -0
  156. package/schematics/ng-update/data/css-selectors.mjs +46 -0
  157. package/schematics/ng-update/data/element-selectors.mjs +18 -0
  158. package/schematics/ng-update/data/index.mjs +29 -0
  159. package/schematics/ng-update/data/input-names.mjs +76 -0
  160. package/schematics/ng-update/data/method-call-checks.mjs +22 -0
  161. package/schematics/ng-update/data/output-names.mjs +101 -0
  162. package/schematics/ng-update/data/property-names.mjs +173 -0
  163. package/schematics/ng-update/index.mjs +78 -0
  164. package/schematics/ng-update/migrations/hammer-gestures-v9/find-hammer-script-tags.mjs +42 -0
  165. package/schematics/ng-update/migrations/hammer-gestures-v9/find-main-module.mjs +32 -0
  166. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.js +3 -3
  167. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-gestures-migration.mjs +778 -0
  168. package/schematics/ng-update/migrations/hammer-gestures-v9/hammer-template-check.mjs +56 -0
  169. package/schematics/ng-update/migrations/hammer-gestures-v9/import-manager.mjs +370 -0
  170. package/schematics/ng-update/migrations/hammer-gestures-v9/remove-array-element.mjs +66 -0
  171. package/schematics/ng-update/migrations/hammer-gestures-v9/remove-element-from-html.mjs +28 -0
  172. package/schematics/ng-update/migrations/misc-checks/misc-class-inheritance.mjs +48 -0
  173. package/schematics/ng-update/migrations/misc-checks/misc-class-names.mjs +43 -0
  174. package/schematics/ng-update/migrations/misc-checks/misc-imports.mjs +54 -0
  175. package/schematics/ng-update/migrations/misc-checks/misc-property-names.mjs +47 -0
  176. package/schematics/ng-update/migrations/misc-checks/misc-template.mjs +60 -0
  177. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor-migration.mjs +138 -0
  178. package/schematics/ng-update/migrations/misc-ripples-v7/ripple-speed-factor.mjs +30 -0
  179. package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.js +6 -2
  180. package/schematics/ng-update/migrations/package-imports-v8/secondary-entry-points-migration.mjs +173 -0
  181. package/schematics/ng-update/migrations/theming-api-v12/config.mjs +206 -0
  182. package/schematics/ng-update/migrations/theming-api-v12/migration.js +6 -1
  183. package/schematics/ng-update/migrations/theming-api-v12/migration.mjs +239 -0
  184. package/schematics/ng-update/migrations/theming-api-v12/theming-api-migration.mjs +45 -0
  185. package/schematics/ng-update/typescript/module-specifiers.mjs +35 -0
  186. package/schematics/ng-update/upgrade-data.mjs +24 -0
  187. package/schematics/paths.mjs +16 -0
  188. package/schematics/schematics.externs.js +0 -0
  189. package/select/_select-legacy-index.scss +2 -0
  190. package/sidenav/_sidenav-legacy-index.scss +2 -0
  191. package/slide-toggle/_slide-toggle-legacy-index.scss +3 -0
  192. package/slide-toggle/index.metadata.json +1 -1
  193. package/slide-toggle/slide-toggle.d.ts +3 -2
  194. package/slider/_slider-legacy-index.scss +2 -0
  195. package/snack-bar/_snack-bar-legacy-index.scss +2 -0
  196. package/sort/_sort-legacy-index.scss +2 -0
  197. package/sort/sort-header.d.ts +1 -1
  198. package/stepper/_stepper-legacy-index.scss +7 -0
  199. package/stepper/index.metadata.json +1 -1
  200. package/table/_table-legacy-index.scss +3 -0
  201. package/table/index.metadata.json +1 -1
  202. package/table/table-data-source.d.ts +17 -5
  203. package/tabs/_tabs-legacy-index.scss +6 -0
  204. package/tabs/index.metadata.json +1 -1
  205. package/toolbar/_toolbar-legacy-index.scss +4 -0
  206. package/tooltip/_tooltip-legacy-index.scss +3 -0
  207. package/tooltip/index.metadata.json +1 -1
  208. package/tree/_tree-legacy-index.scss +2 -0
@@ -0,0 +1,48 @@
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.MiscClassInheritanceMigration = void 0;
11
+ const schematics_1 = require("@angular/cdk/schematics");
12
+ const ts = require("typescript");
13
+ /**
14
+ * Migration that checks for classes that extend Angular Material classes which
15
+ * have changed their API.
16
+ */
17
+ class MiscClassInheritanceMigration extends schematics_1.Migration {
18
+ constructor() {
19
+ super(...arguments);
20
+ // Only enable this rule if the migration targets version 6. The rule
21
+ // currently only includes migrations for V6 deprecations.
22
+ this.enabled = this.targetVersion === schematics_1.TargetVersion.V6;
23
+ }
24
+ visitNode(node) {
25
+ if (ts.isClassDeclaration(node)) {
26
+ this._visitClassDeclaration(node);
27
+ }
28
+ }
29
+ _visitClassDeclaration(node) {
30
+ const baseTypes = schematics_1.determineBaseTypes(node);
31
+ const className = node.name ? node.name.text : '{unknown-name}';
32
+ if (!baseTypes) {
33
+ return;
34
+ }
35
+ // Migration for: https://github.com/angular/components/pull/10293 (v6)
36
+ if (baseTypes.includes('MatFormFieldControl')) {
37
+ const hasFloatLabelMember = node.members.filter(member => member.name)
38
+ .find(member => member.name.getText() === 'shouldLabelFloat');
39
+ if (!hasFloatLabelMember) {
40
+ this.createFailureAtNode(node, `Found class "${className}" which extends ` +
41
+ `"${'MatFormFieldControl'}". This class must define ` +
42
+ `"${'shouldLabelFloat'}" which is now a required property.`);
43
+ }
44
+ }
45
+ }
46
+ }
47
+ exports.MiscClassInheritanceMigration = MiscClassInheritanceMigration;
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy1jbGFzcy1pbmhlcml0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9zY2hlbWF0aWNzL25nLXVwZGF0ZS9taWdyYXRpb25zL21pc2MtY2hlY2tzL21pc2MtY2xhc3MtaW5oZXJpdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsd0RBQXFGO0FBQ3JGLGlDQUFpQztBQUVqQzs7O0dBR0c7QUFDSCxNQUFhLDZCQUE4QixTQUFRLHNCQUFlO0lBQWxFOztRQUVFLHFFQUFxRTtRQUNyRSwwREFBMEQ7UUFDMUQsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEtBQUssMEJBQWEsQ0FBQyxFQUFFLENBQUM7SUErQnBELENBQUM7SUE3QkMsU0FBUyxDQUFDLElBQWE7UUFDckIsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVPLHNCQUFzQixDQUFDLElBQXlCO1FBQ3RELE1BQU0sU0FBUyxHQUFHLCtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUVoRSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2QsT0FBTztTQUNSO1FBRUQsdUVBQXVFO1FBQ3ZFLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO1lBQzdDLE1BQU0sbUJBQW1CLEdBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztpQkFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxrQkFBa0IsQ0FBQyxDQUFDO1lBRXZFLElBQUksQ0FBQyxtQkFBbUIsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLG1CQUFtQixDQUNwQixJQUFJLEVBQ0osZ0JBQWdCLFNBQVMsa0JBQWtCO29CQUN2QyxJQUFJLHFCQUFxQiw0QkFBNEI7b0JBQ3JELElBQUksa0JBQWtCLHFDQUFxQyxDQUFDLENBQUM7YUFDdEU7U0FDRjtJQUNILENBQUM7Q0FDRjtBQW5DRCxzRUFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtkZXRlcm1pbmVCYXNlVHlwZXMsIE1pZ3JhdGlvbiwgVGFyZ2V0VmVyc2lvbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3NjaGVtYXRpY3MnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbi8qKlxuICogTWlncmF0aW9uIHRoYXQgY2hlY2tzIGZvciBjbGFzc2VzIHRoYXQgZXh0ZW5kIEFuZ3VsYXIgTWF0ZXJpYWwgY2xhc3NlcyB3aGljaFxuICogaGF2ZSBjaGFuZ2VkIHRoZWlyIEFQSS5cbiAqL1xuZXhwb3J0IGNsYXNzIE1pc2NDbGFzc0luaGVyaXRhbmNlTWlncmF0aW9uIGV4dGVuZHMgTWlncmF0aW9uPG51bGw+IHtcblxuICAvLyBPbmx5IGVuYWJsZSB0aGlzIHJ1bGUgaWYgdGhlIG1pZ3JhdGlvbiB0YXJnZXRzIHZlcnNpb24gNi4gVGhlIHJ1bGVcbiAgLy8gY3VycmVudGx5IG9ubHkgaW5jbHVkZXMgbWlncmF0aW9ucyBmb3IgVjYgZGVwcmVjYXRpb25zLlxuICBlbmFibGVkID0gdGhpcy50YXJnZXRWZXJzaW9uID09PSBUYXJnZXRWZXJzaW9uLlY2O1xuXG4gIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgaWYgKHRzLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgdGhpcy5fdmlzaXRDbGFzc0RlY2xhcmF0aW9uKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2l0Q2xhc3NEZWNsYXJhdGlvbihub2RlOiB0cy5DbGFzc0RlY2xhcmF0aW9uKSB7XG4gICAgY29uc3QgYmFzZVR5cGVzID0gZGV0ZXJtaW5lQmFzZVR5cGVzKG5vZGUpO1xuICAgIGNvbnN0IGNsYXNzTmFtZSA9IG5vZGUubmFtZSA/IG5vZGUubmFtZS50ZXh0IDogJ3t1bmtub3duLW5hbWV9JztcblxuICAgIGlmICghYmFzZVR5cGVzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTWlncmF0aW9uIGZvcjogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9wdWxsLzEwMjkzICh2NilcbiAgICBpZiAoYmFzZVR5cGVzLmluY2x1ZGVzKCdNYXRGb3JtRmllbGRDb250cm9sJykpIHtcbiAgICAgIGNvbnN0IGhhc0Zsb2F0TGFiZWxNZW1iZXIgPVxuICAgICAgICAgIG5vZGUubWVtYmVycy5maWx0ZXIobWVtYmVyID0+IG1lbWJlci5uYW1lKVxuICAgICAgICAgICAgICAuZmluZChtZW1iZXIgPT4gbWVtYmVyLm5hbWUhLmdldFRleHQoKSA9PT0gJ3Nob3VsZExhYmVsRmxvYXQnKTtcblxuICAgICAgaWYgKCFoYXNGbG9hdExhYmVsTWVtYmVyKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRmFpbHVyZUF0Tm9kZShcbiAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICBgRm91bmQgY2xhc3MgXCIke2NsYXNzTmFtZX1cIiB3aGljaCBleHRlbmRzIGAgK1xuICAgICAgICAgICAgICAgIGBcIiR7J01hdEZvcm1GaWVsZENvbnRyb2wnfVwiLiBUaGlzIGNsYXNzIG11c3QgZGVmaW5lIGAgK1xuICAgICAgICAgICAgICAgIGBcIiR7J3Nob3VsZExhYmVsRmxvYXQnfVwiIHdoaWNoIGlzIG5vdyBhIHJlcXVpcmVkIHByb3BlcnR5LmApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,43 @@
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.MiscClassNamesMigration = void 0;
11
+ const schematics_1 = require("@angular/cdk/schematics");
12
+ const ts = require("typescript");
13
+ /**
14
+ * Migration that looks for class name identifiers that have been removed but
15
+ * cannot be automatically migrated.
16
+ */
17
+ class MiscClassNamesMigration extends schematics_1.Migration {
18
+ constructor() {
19
+ super(...arguments);
20
+ // Only enable this rule if the migration targets version 6. The rule
21
+ // currently only includes migrations for V6 deprecations.
22
+ this.enabled = this.targetVersion === schematics_1.TargetVersion.V6;
23
+ }
24
+ visitNode(node) {
25
+ if (ts.isIdentifier(node)) {
26
+ this._visitIdentifier(node);
27
+ }
28
+ }
29
+ _visitIdentifier(identifier) {
30
+ // Migration for: https://github.com/angular/components/pull/10279 (v6)
31
+ if (identifier.getText() === 'MatDrawerToggleResult') {
32
+ this.createFailureAtNode(identifier, `Found "MatDrawerToggleResult" which has changed from a class type to a string ` +
33
+ `literal type. Your code may need to be updated.`);
34
+ }
35
+ // Migration for: https://github.com/angular/components/pull/10398 (v6)
36
+ if (identifier.getText() === 'MatListOptionChange') {
37
+ this.createFailureAtNode(identifier, `Found usage of "MatListOptionChange" which has been removed. Please listen for ` +
38
+ `"selectionChange" on "MatSelectionList" instead.`);
39
+ }
40
+ }
41
+ }
42
+ exports.MiscClassNamesMigration = MiscClassNamesMigration;
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy1jbGFzcy1uYW1lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9zY2hlbWF0aWNzL25nLXVwZGF0ZS9taWdyYXRpb25zL21pc2MtY2hlY2tzL21pc2MtY2xhc3MtbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsd0RBQWlFO0FBQ2pFLGlDQUFpQztBQUVqQzs7O0dBR0c7QUFDSCxNQUFhLHVCQUF3QixTQUFRLHNCQUFlO0lBQTVEOztRQUVFLHFFQUFxRTtRQUNyRSwwREFBMEQ7UUFDMUQsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEtBQUssMEJBQWEsQ0FBQyxFQUFFLENBQUM7SUF5QnBELENBQUM7SUF2QkMsU0FBUyxDQUFDLElBQWE7UUFDckIsSUFBSSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM3QjtJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxVQUF5QjtRQUNoRCx1RUFBdUU7UUFDdkUsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssdUJBQXVCLEVBQUU7WUFDcEQsSUFBSSxDQUFDLG1CQUFtQixDQUNwQixVQUFVLEVBQ1YsZ0ZBQWdGO2dCQUM1RSxpREFBaUQsQ0FBQyxDQUFDO1NBQzVEO1FBRUQsdUVBQXVFO1FBQ3ZFLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxLQUFLLHFCQUFxQixFQUFFO1lBQ2xELElBQUksQ0FBQyxtQkFBbUIsQ0FDcEIsVUFBVSxFQUNWLGlGQUFpRjtnQkFDN0Usa0RBQWtELENBQUMsQ0FBQztTQUM3RDtJQUNILENBQUM7Q0FDRjtBQTdCRCwwREE2QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtNaWdyYXRpb24sIFRhcmdldFZlcnNpb259IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY2hlbWF0aWNzJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIE1pZ3JhdGlvbiB0aGF0IGxvb2tzIGZvciBjbGFzcyBuYW1lIGlkZW50aWZpZXJzIHRoYXQgaGF2ZSBiZWVuIHJlbW92ZWQgYnV0XG4gKiBjYW5ub3QgYmUgYXV0b21hdGljYWxseSBtaWdyYXRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1pc2NDbGFzc05hbWVzTWlncmF0aW9uIGV4dGVuZHMgTWlncmF0aW9uPG51bGw+IHtcblxuICAvLyBPbmx5IGVuYWJsZSB0aGlzIHJ1bGUgaWYgdGhlIG1pZ3JhdGlvbiB0YXJnZXRzIHZlcnNpb24gNi4gVGhlIHJ1bGVcbiAgLy8gY3VycmVudGx5IG9ubHkgaW5jbHVkZXMgbWlncmF0aW9ucyBmb3IgVjYgZGVwcmVjYXRpb25zLlxuICBlbmFibGVkID0gdGhpcy50YXJnZXRWZXJzaW9uID09PSBUYXJnZXRWZXJzaW9uLlY2O1xuXG4gIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgaWYgKHRzLmlzSWRlbnRpZmllcihub2RlKSkge1xuICAgICAgdGhpcy5fdmlzaXRJZGVudGlmaWVyKG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3Zpc2l0SWRlbnRpZmllcihpZGVudGlmaWVyOiB0cy5JZGVudGlmaWVyKSB7XG4gICAgLy8gTWlncmF0aW9uIGZvcjogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9wdWxsLzEwMjc5ICh2NilcbiAgICBpZiAoaWRlbnRpZmllci5nZXRUZXh0KCkgPT09ICdNYXREcmF3ZXJUb2dnbGVSZXN1bHQnKSB7XG4gICAgICB0aGlzLmNyZWF0ZUZhaWx1cmVBdE5vZGUoXG4gICAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgICBgRm91bmQgXCJNYXREcmF3ZXJUb2dnbGVSZXN1bHRcIiB3aGljaCBoYXMgY2hhbmdlZCBmcm9tIGEgY2xhc3MgdHlwZSB0byBhIHN0cmluZyBgICtcbiAgICAgICAgICAgICAgYGxpdGVyYWwgdHlwZS4gWW91ciBjb2RlIG1heSBuZWVkIHRvIGJlIHVwZGF0ZWQuYCk7XG4gICAgfVxuXG4gICAgLy8gTWlncmF0aW9uIGZvcjogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9wdWxsLzEwMzk4ICh2NilcbiAgICBpZiAoaWRlbnRpZmllci5nZXRUZXh0KCkgPT09ICdNYXRMaXN0T3B0aW9uQ2hhbmdlJykge1xuICAgICAgdGhpcy5jcmVhdGVGYWlsdXJlQXROb2RlKFxuICAgICAgICAgIGlkZW50aWZpZXIsXG4gICAgICAgICAgYEZvdW5kIHVzYWdlIG9mIFwiTWF0TGlzdE9wdGlvbkNoYW5nZVwiIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQuIFBsZWFzZSBsaXN0ZW4gZm9yIGAgK1xuICAgICAgICAgICAgICBgXCJzZWxlY3Rpb25DaGFuZ2VcIiBvbiBcIk1hdFNlbGVjdGlvbkxpc3RcIiBpbnN0ZWFkLmApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,54 @@
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.MiscImportsMigration = void 0;
11
+ const schematics_1 = require("@angular/cdk/schematics");
12
+ const ts = require("typescript");
13
+ /**
14
+ * Migration that detects import declarations that refer to outdated identifiers from
15
+ * Angular Material which cannot be updated automatically.
16
+ */
17
+ class MiscImportsMigration extends schematics_1.Migration {
18
+ constructor() {
19
+ super(...arguments);
20
+ // Only enable this rule if the migration targets version 6. The rule
21
+ // currently only includes migrations for V6 deprecations.
22
+ this.enabled = this.targetVersion === schematics_1.TargetVersion.V6;
23
+ }
24
+ visitNode(node) {
25
+ if (ts.isImportDeclaration(node)) {
26
+ this._visitImportDeclaration(node);
27
+ }
28
+ }
29
+ _visitImportDeclaration(node) {
30
+ if (!schematics_1.isMaterialImportDeclaration(node) || !node.importClause ||
31
+ !node.importClause.namedBindings) {
32
+ return;
33
+ }
34
+ const namedBindings = node.importClause.namedBindings;
35
+ if (ts.isNamedImports(namedBindings)) {
36
+ // Migration for: https://github.com/angular/components/pull/10405 (v6)
37
+ this._checkAnimationConstants(namedBindings);
38
+ }
39
+ }
40
+ /**
41
+ * Checks for named imports that refer to the deleted animation constants.
42
+ * https://github.com/angular/components/commit/9f3bf274c4f15f0b0fbd8ab7dbf1a453076e66d9
43
+ */
44
+ _checkAnimationConstants(namedImports) {
45
+ namedImports.elements.filter(element => ts.isIdentifier(element.name)).forEach(element => {
46
+ const importName = element.name.text;
47
+ if (importName === 'SHOW_ANIMATION' || importName === 'HIDE_ANIMATION') {
48
+ this.createFailureAtNode(element, `Found deprecated symbol "${importName}" which has been removed`);
49
+ }
50
+ });
51
+ }
52
+ }
53
+ exports.MiscImportsMigration = MiscImportsMigration;
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy1pbXBvcnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsL3NjaGVtYXRpY3MvbmctdXBkYXRlL21pZ3JhdGlvbnMvbWlzYy1jaGVja3MvbWlzYy1pbXBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILHdEQUE4RjtBQUM5RixpQ0FBaUM7QUFFakM7OztHQUdHO0FBQ0gsTUFBYSxvQkFBcUIsU0FBUSxzQkFBZTtJQUF6RDs7UUFFRSxxRUFBcUU7UUFDckUsMERBQTBEO1FBQzFELFlBQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxLQUFLLDBCQUFhLENBQUMsRUFBRSxDQUFDO0lBb0NwRCxDQUFDO0lBbENDLFNBQVMsQ0FBQyxJQUFhO1FBQ3JCLElBQUksRUFBRSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ2hDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQztJQUNILENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxJQUEwQjtRQUN4RCxJQUFJLENBQUMsd0NBQTJCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtZQUN4RCxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFO1lBQ3BDLE9BQU87U0FDUjtRQUVELE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDO1FBRXRELElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsRUFBRTtZQUNwQyx1RUFBdUU7WUFDdkUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGFBQWEsQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLHdCQUF3QixDQUFDLFlBQTZCO1FBQzVELFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdkYsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFFckMsSUFBSSxVQUFVLEtBQUssZ0JBQWdCLElBQUksVUFBVSxLQUFLLGdCQUFnQixFQUFFO2dCQUN0RSxJQUFJLENBQUMsbUJBQW1CLENBQ3BCLE9BQU8sRUFBRSw0QkFBNEIsVUFBVSwwQkFBMEIsQ0FBQyxDQUFDO2FBQ2hGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF4Q0Qsb0RBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7aXNNYXRlcmlhbEltcG9ydERlY2xhcmF0aW9uLCBNaWdyYXRpb24sIFRhcmdldFZlcnNpb259IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY2hlbWF0aWNzJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIE1pZ3JhdGlvbiB0aGF0IGRldGVjdHMgaW1wb3J0IGRlY2xhcmF0aW9ucyB0aGF0IHJlZmVyIHRvIG91dGRhdGVkIGlkZW50aWZpZXJzIGZyb21cbiAqIEFuZ3VsYXIgTWF0ZXJpYWwgd2hpY2ggY2Fubm90IGJlIHVwZGF0ZWQgYXV0b21hdGljYWxseS5cbiAqL1xuZXhwb3J0IGNsYXNzIE1pc2NJbXBvcnRzTWlncmF0aW9uIGV4dGVuZHMgTWlncmF0aW9uPG51bGw+IHtcblxuICAvLyBPbmx5IGVuYWJsZSB0aGlzIHJ1bGUgaWYgdGhlIG1pZ3JhdGlvbiB0YXJnZXRzIHZlcnNpb24gNi4gVGhlIHJ1bGVcbiAgLy8gY3VycmVudGx5IG9ubHkgaW5jbHVkZXMgbWlncmF0aW9ucyBmb3IgVjYgZGVwcmVjYXRpb25zLlxuICBlbmFibGVkID0gdGhpcy50YXJnZXRWZXJzaW9uID09PSBUYXJnZXRWZXJzaW9uLlY2O1xuXG4gIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgaWYgKHRzLmlzSW1wb3J0RGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgIHRoaXMuX3Zpc2l0SW1wb3J0RGVjbGFyYXRpb24obm9kZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdmlzaXRJbXBvcnREZWNsYXJhdGlvbihub2RlOiB0cy5JbXBvcnREZWNsYXJhdGlvbikge1xuICAgIGlmICghaXNNYXRlcmlhbEltcG9ydERlY2xhcmF0aW9uKG5vZGUpIHx8ICFub2RlLmltcG9ydENsYXVzZSB8fFxuICAgICAgICAhbm9kZS5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5hbWVkQmluZGluZ3MgPSBub2RlLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzO1xuXG4gICAgaWYgKHRzLmlzTmFtZWRJbXBvcnRzKG5hbWVkQmluZGluZ3MpKSB7XG4gICAgICAvLyBNaWdyYXRpb24gZm9yOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL3B1bGwvMTA0MDUgKHY2KVxuICAgICAgdGhpcy5fY2hlY2tBbmltYXRpb25Db25zdGFudHMobmFtZWRCaW5kaW5ncyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBmb3IgbmFtZWQgaW1wb3J0cyB0aGF0IHJlZmVyIHRvIHRoZSBkZWxldGVkIGFuaW1hdGlvbiBjb25zdGFudHMuXG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvY29tbWl0LzlmM2JmMjc0YzRmMTVmMGIwZmJkOGFiN2RiZjFhNDUzMDc2ZTY2ZDlcbiAgICovXG4gIHByaXZhdGUgX2NoZWNrQW5pbWF0aW9uQ29uc3RhbnRzKG5hbWVkSW1wb3J0czogdHMuTmFtZWRJbXBvcnRzKSB7XG4gICAgbmFtZWRJbXBvcnRzLmVsZW1lbnRzLmZpbHRlcihlbGVtZW50ID0+IHRzLmlzSWRlbnRpZmllcihlbGVtZW50Lm5hbWUpKS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgY29uc3QgaW1wb3J0TmFtZSA9IGVsZW1lbnQubmFtZS50ZXh0O1xuXG4gICAgICBpZiAoaW1wb3J0TmFtZSA9PT0gJ1NIT1dfQU5JTUFUSU9OJyB8fCBpbXBvcnROYW1lID09PSAnSElERV9BTklNQVRJT04nKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRmFpbHVyZUF0Tm9kZShcbiAgICAgICAgICAgIGVsZW1lbnQsIGBGb3VuZCBkZXByZWNhdGVkIHN5bWJvbCBcIiR7aW1wb3J0TmFtZX1cIiB3aGljaCBoYXMgYmVlbiByZW1vdmVkYCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,47 @@
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.MiscPropertyNamesMigration = void 0;
11
+ const schematics_1 = require("@angular/cdk/schematics");
12
+ const ts = require("typescript");
13
+ /**
14
+ * Migration that walks through every property access expression and and reports a failure if
15
+ * a given property name no longer exists but cannot be automatically migrated.
16
+ */
17
+ class MiscPropertyNamesMigration extends schematics_1.Migration {
18
+ constructor() {
19
+ super(...arguments);
20
+ // Only enable this rule if the migration targets version 6. The rule
21
+ // currently only includes migrations for V6 deprecations.
22
+ this.enabled = this.targetVersion === schematics_1.TargetVersion.V6;
23
+ }
24
+ visitNode(node) {
25
+ if (ts.isPropertyAccessExpression(node)) {
26
+ this._visitPropertyAccessExpression(node);
27
+ }
28
+ }
29
+ _visitPropertyAccessExpression(node) {
30
+ const hostType = this.typeChecker.getTypeAtLocation(node.expression);
31
+ const typeName = hostType && hostType.symbol && hostType.symbol.getName();
32
+ // Migration for: https://github.com/angular/components/pull/10398 (v6)
33
+ if (typeName === 'MatListOption' && node.name.text === 'selectionChange') {
34
+ this.createFailureAtNode(node, `Found deprecated property "selectionChange" of ` +
35
+ `class "MatListOption". Use the "selectionChange" property on the ` +
36
+ `parent "MatSelectionList" instead.`);
37
+ }
38
+ // Migration for: https://github.com/angular/components/pull/10413 (v6)
39
+ if (typeName === 'MatDatepicker' && node.name.text === 'selectedChanged') {
40
+ this.createFailureAtNode(node, `Found deprecated property "selectedChanged" of ` +
41
+ `class "MatDatepicker". Use the "dateChange" or "dateInput" methods ` +
42
+ `on "MatDatepickerInput" instead.`);
43
+ }
44
+ }
45
+ }
46
+ exports.MiscPropertyNamesMigration = MiscPropertyNamesMigration;
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy1wcm9wZXJ0eS1uYW1lcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9zY2hlbWF0aWNzL25nLXVwZGF0ZS9taWdyYXRpb25zL21pc2MtY2hlY2tzL21pc2MtcHJvcGVydHktbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsd0RBQWlFO0FBQ2pFLGlDQUFpQztBQUVqQzs7O0dBR0c7QUFDSCxNQUFhLDBCQUEyQixTQUFRLHNCQUFlO0lBQS9EOztRQUVFLHFFQUFxRTtRQUNyRSwwREFBMEQ7UUFDMUQsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEtBQUssMEJBQWEsQ0FBQyxFQUFFLENBQUM7SUE4QnBELENBQUM7SUE1QkMsU0FBUyxDQUFDLElBQWE7UUFDckIsSUFBSSxFQUFFLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdkMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVPLDhCQUE4QixDQUFDLElBQWlDO1FBQ3RFLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3JFLE1BQU0sUUFBUSxHQUFHLFFBQVEsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFFBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFMUUsdUVBQXVFO1FBQ3ZFLElBQUksUUFBUSxLQUFLLGVBQWUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxpQkFBaUIsRUFBRTtZQUN4RSxJQUFJLENBQUMsbUJBQW1CLENBQ3BCLElBQUksRUFDSixpREFBaUQ7Z0JBQzdDLG1FQUFtRTtnQkFDbkUsb0NBQW9DLENBQUMsQ0FBQztTQUMvQztRQUVELHVFQUF1RTtRQUN2RSxJQUFJLFFBQVEsS0FBSyxlQUFlLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssaUJBQWlCLEVBQUU7WUFDeEUsSUFBSSxDQUFDLG1CQUFtQixDQUNwQixJQUFJLEVBQ0osaURBQWlEO2dCQUM3QyxxRUFBcUU7Z0JBQ3JFLGtDQUFrQyxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDO0NBQ0Y7QUFsQ0QsZ0VBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7TWlncmF0aW9uLCBUYXJnZXRWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcblxuLyoqXG4gKiBNaWdyYXRpb24gdGhhdCB3YWxrcyB0aHJvdWdoIGV2ZXJ5IHByb3BlcnR5IGFjY2VzcyBleHByZXNzaW9uIGFuZCBhbmQgcmVwb3J0cyBhIGZhaWx1cmUgaWZcbiAqIGEgZ2l2ZW4gcHJvcGVydHkgbmFtZSBubyBsb25nZXIgZXhpc3RzIGJ1dCBjYW5ub3QgYmUgYXV0b21hdGljYWxseSBtaWdyYXRlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIE1pc2NQcm9wZXJ0eU5hbWVzTWlncmF0aW9uIGV4dGVuZHMgTWlncmF0aW9uPG51bGw+IHtcblxuICAvLyBPbmx5IGVuYWJsZSB0aGlzIHJ1bGUgaWYgdGhlIG1pZ3JhdGlvbiB0YXJnZXRzIHZlcnNpb24gNi4gVGhlIHJ1bGVcbiAgLy8gY3VycmVudGx5IG9ubHkgaW5jbHVkZXMgbWlncmF0aW9ucyBmb3IgVjYgZGVwcmVjYXRpb25zLlxuICBlbmFibGVkID0gdGhpcy50YXJnZXRWZXJzaW9uID09PSBUYXJnZXRWZXJzaW9uLlY2O1xuXG4gIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgaWYgKHRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKG5vZGUpKSB7XG4gICAgICB0aGlzLl92aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihub2RlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF92aXNpdFByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbihub2RlOiB0cy5Qcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24pIHtcbiAgICBjb25zdCBob3N0VHlwZSA9IHRoaXMudHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24obm9kZS5leHByZXNzaW9uKTtcbiAgICBjb25zdCB0eXBlTmFtZSA9IGhvc3RUeXBlICYmIGhvc3RUeXBlLnN5bWJvbCAmJiBob3N0VHlwZS5zeW1ib2wuZ2V0TmFtZSgpO1xuXG4gICAgLy8gTWlncmF0aW9uIGZvcjogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9wdWxsLzEwMzk4ICh2NilcbiAgICBpZiAodHlwZU5hbWUgPT09ICdNYXRMaXN0T3B0aW9uJyAmJiBub2RlLm5hbWUudGV4dCA9PT0gJ3NlbGVjdGlvbkNoYW5nZScpIHtcbiAgICAgIHRoaXMuY3JlYXRlRmFpbHVyZUF0Tm9kZShcbiAgICAgICAgICBub2RlLFxuICAgICAgICAgIGBGb3VuZCBkZXByZWNhdGVkIHByb3BlcnR5IFwic2VsZWN0aW9uQ2hhbmdlXCIgb2YgYCArXG4gICAgICAgICAgICAgIGBjbGFzcyBcIk1hdExpc3RPcHRpb25cIi4gVXNlIHRoZSBcInNlbGVjdGlvbkNoYW5nZVwiIHByb3BlcnR5IG9uIHRoZSBgICtcbiAgICAgICAgICAgICAgYHBhcmVudCBcIk1hdFNlbGVjdGlvbkxpc3RcIiBpbnN0ZWFkLmApO1xuICAgIH1cblxuICAgIC8vIE1pZ3JhdGlvbiBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvcHVsbC8xMDQxMyAodjYpXG4gICAgaWYgKHR5cGVOYW1lID09PSAnTWF0RGF0ZXBpY2tlcicgJiYgbm9kZS5uYW1lLnRleHQgPT09ICdzZWxlY3RlZENoYW5nZWQnKSB7XG4gICAgICB0aGlzLmNyZWF0ZUZhaWx1cmVBdE5vZGUoXG4gICAgICAgICAgbm9kZSxcbiAgICAgICAgICBgRm91bmQgZGVwcmVjYXRlZCBwcm9wZXJ0eSBcInNlbGVjdGVkQ2hhbmdlZFwiIG9mIGAgK1xuICAgICAgICAgICAgICBgY2xhc3MgXCJNYXREYXRlcGlja2VyXCIuIFVzZSB0aGUgXCJkYXRlQ2hhbmdlXCIgb3IgXCJkYXRlSW5wdXRcIiBtZXRob2RzIGAgK1xuICAgICAgICAgICAgICBgb24gXCJNYXREYXRlcGlja2VySW5wdXRcIiBpbnN0ZWFkLmApO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,60 @@
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.MiscTemplateMigration = void 0;
11
+ const schematics_1 = require("@angular/cdk/schematics");
12
+ /**
13
+ * Migration that walks through every inline or external template and reports if there
14
+ * are outdated usages of the Angular Material API that needs to be updated manually.
15
+ */
16
+ class MiscTemplateMigration extends schematics_1.Migration {
17
+ constructor() {
18
+ super(...arguments);
19
+ // Only enable this rule if the migration targets version 6. The rule
20
+ // currently only includes migrations for V6 deprecations.
21
+ this.enabled = this.targetVersion === schematics_1.TargetVersion.V6;
22
+ }
23
+ visitTemplate(template) {
24
+ // Migration for: https://github.com/angular/components/pull/10398 (v6)
25
+ schematics_1.findOutputsOnElementWithTag(template.content, 'selectionChange', [
26
+ 'mat-list-option'
27
+ ]).forEach(offset => {
28
+ this.failures.push({
29
+ filePath: template.filePath,
30
+ position: template.getCharacterAndLineOfPosition(template.start + offset),
31
+ message: `Found deprecated "selectionChange" output binding on "mat-list-option". ` +
32
+ `Use "selectionChange" on "mat-selection-list" instead.`
33
+ });
34
+ });
35
+ // Migration for: https://github.com/angular/components/pull/10413 (v6)
36
+ schematics_1.findOutputsOnElementWithTag(template.content, 'selectedChanged', [
37
+ 'mat-datepicker'
38
+ ]).forEach(offset => {
39
+ this.failures.push({
40
+ filePath: template.filePath,
41
+ position: template.getCharacterAndLineOfPosition(template.start + offset),
42
+ message: `Found deprecated "selectedChanged" output binding on "mat-datepicker". ` +
43
+ `Use "dateChange" or "dateInput" on "<input [matDatepicker]>" instead.`
44
+ });
45
+ });
46
+ // Migration for: https://github.com/angular/components/commit/f0bf6e7 (v6)
47
+ schematics_1.findInputsOnElementWithTag(template.content, 'selected', [
48
+ 'mat-button-toggle-group'
49
+ ]).forEach(offset => {
50
+ this.failures.push({
51
+ filePath: template.filePath,
52
+ position: template.getCharacterAndLineOfPosition(template.start + offset),
53
+ message: `Found deprecated "selected" input binding on "mat-radio-button-group". ` +
54
+ `Use "value" instead.`
55
+ });
56
+ });
57
+ }
58
+ }
59
+ exports.MiscTemplateMigration = MiscTemplateMigration;
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzYy10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9zY2hlbWF0aWNzL25nLXVwZGF0ZS9taWdyYXRpb25zL21pc2MtY2hlY2tzL21pc2MtdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsd0RBTWlDO0FBRWpDOzs7R0FHRztBQUNILE1BQWEscUJBQXNCLFNBQVEsc0JBQWU7SUFBMUQ7O1FBRUUscUVBQXFFO1FBQ3JFLDBEQUEwRDtRQUMxRCxZQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsS0FBSywwQkFBYSxDQUFDLEVBQUUsQ0FBQztJQXdDcEQsQ0FBQztJQXRDQyxhQUFhLENBQUMsUUFBMEI7UUFFdEMsdUVBQXVFO1FBQ3ZFLHdDQUEyQixDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUU7WUFDL0QsaUJBQWlCO1NBQ2xCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2pCLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtnQkFDM0IsUUFBUSxFQUFFLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDekUsT0FBTyxFQUFFLDBFQUEwRTtvQkFDL0Usd0RBQXdEO2FBQzdELENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsdUVBQXVFO1FBQ3ZFLHdDQUEyQixDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUU7WUFDL0QsZ0JBQWdCO1NBQ2pCLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ2pCLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtnQkFDM0IsUUFBUSxFQUFFLFFBQVEsQ0FBQyw2QkFBNkIsQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQztnQkFDekUsT0FBTyxFQUFFLHlFQUF5RTtvQkFDOUUsdUVBQXVFO2FBQzVFLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsMkVBQTJFO1FBQzNFLHVDQUEwQixDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFO1lBQ3ZELHlCQUF5QjtTQUMxQixDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUNqQixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7Z0JBQzNCLFFBQVEsRUFBRSxRQUFRLENBQUMsNkJBQTZCLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7Z0JBQ3pFLE9BQU8sRUFBRSx5RUFBeUU7b0JBQzlFLHNCQUFzQjthQUMzQixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTVDRCxzREE0Q0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtcbiAgZmluZElucHV0c09uRWxlbWVudFdpdGhUYWcsXG4gIGZpbmRPdXRwdXRzT25FbGVtZW50V2l0aFRhZyxcbiAgTWlncmF0aW9uLFxuICBSZXNvbHZlZFJlc291cmNlLFxuICBUYXJnZXRWZXJzaW9uLFxufSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5cbi8qKlxuICogTWlncmF0aW9uIHRoYXQgd2Fsa3MgdGhyb3VnaCBldmVyeSBpbmxpbmUgb3IgZXh0ZXJuYWwgdGVtcGxhdGUgYW5kIHJlcG9ydHMgaWYgdGhlcmVcbiAqIGFyZSBvdXRkYXRlZCB1c2FnZXMgb2YgdGhlIEFuZ3VsYXIgTWF0ZXJpYWwgQVBJIHRoYXQgbmVlZHMgdG8gYmUgdXBkYXRlZCBtYW51YWxseS5cbiAqL1xuZXhwb3J0IGNsYXNzIE1pc2NUZW1wbGF0ZU1pZ3JhdGlvbiBleHRlbmRzIE1pZ3JhdGlvbjxudWxsPiB7XG5cbiAgLy8gT25seSBlbmFibGUgdGhpcyBydWxlIGlmIHRoZSBtaWdyYXRpb24gdGFyZ2V0cyB2ZXJzaW9uIDYuIFRoZSBydWxlXG4gIC8vIGN1cnJlbnRseSBvbmx5IGluY2x1ZGVzIG1pZ3JhdGlvbnMgZm9yIFY2IGRlcHJlY2F0aW9ucy5cbiAgZW5hYmxlZCA9IHRoaXMudGFyZ2V0VmVyc2lvbiA9PT0gVGFyZ2V0VmVyc2lvbi5WNjtcblxuICB2aXNpdFRlbXBsYXRlKHRlbXBsYXRlOiBSZXNvbHZlZFJlc291cmNlKTogdm9pZCB7XG5cbiAgICAvLyBNaWdyYXRpb24gZm9yOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL3B1bGwvMTAzOTggKHY2KVxuICAgIGZpbmRPdXRwdXRzT25FbGVtZW50V2l0aFRhZyh0ZW1wbGF0ZS5jb250ZW50LCAnc2VsZWN0aW9uQ2hhbmdlJywgW1xuICAgICAgJ21hdC1saXN0LW9wdGlvbidcbiAgICBdKS5mb3JFYWNoKG9mZnNldCA9PiB7XG4gICAgICB0aGlzLmZhaWx1cmVzLnB1c2goe1xuICAgICAgICBmaWxlUGF0aDogdGVtcGxhdGUuZmlsZVBhdGgsXG4gICAgICAgIHBvc2l0aW9uOiB0ZW1wbGF0ZS5nZXRDaGFyYWN0ZXJBbmRMaW5lT2ZQb3NpdGlvbih0ZW1wbGF0ZS5zdGFydCArIG9mZnNldCksXG4gICAgICAgIG1lc3NhZ2U6IGBGb3VuZCBkZXByZWNhdGVkIFwic2VsZWN0aW9uQ2hhbmdlXCIgb3V0cHV0IGJpbmRpbmcgb24gXCJtYXQtbGlzdC1vcHRpb25cIi4gYCArXG4gICAgICAgICAgICBgVXNlIFwic2VsZWN0aW9uQ2hhbmdlXCIgb24gXCJtYXQtc2VsZWN0aW9uLWxpc3RcIiBpbnN0ZWFkLmBcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gTWlncmF0aW9uIGZvcjogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9wdWxsLzEwNDEzICh2NilcbiAgICBmaW5kT3V0cHV0c09uRWxlbWVudFdpdGhUYWcodGVtcGxhdGUuY29udGVudCwgJ3NlbGVjdGVkQ2hhbmdlZCcsIFtcbiAgICAgICdtYXQtZGF0ZXBpY2tlcidcbiAgICBdKS5mb3JFYWNoKG9mZnNldCA9PiB7XG4gICAgICB0aGlzLmZhaWx1cmVzLnB1c2goe1xuICAgICAgICBmaWxlUGF0aDogdGVtcGxhdGUuZmlsZVBhdGgsXG4gICAgICAgIHBvc2l0aW9uOiB0ZW1wbGF0ZS5nZXRDaGFyYWN0ZXJBbmRMaW5lT2ZQb3NpdGlvbih0ZW1wbGF0ZS5zdGFydCArIG9mZnNldCksXG4gICAgICAgIG1lc3NhZ2U6IGBGb3VuZCBkZXByZWNhdGVkIFwic2VsZWN0ZWRDaGFuZ2VkXCIgb3V0cHV0IGJpbmRpbmcgb24gXCJtYXQtZGF0ZXBpY2tlclwiLiBgICtcbiAgICAgICAgICAgIGBVc2UgXCJkYXRlQ2hhbmdlXCIgb3IgXCJkYXRlSW5wdXRcIiBvbiBcIjxpbnB1dCBbbWF0RGF0ZXBpY2tlcl0+XCIgaW5zdGVhZC5gXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8vIE1pZ3JhdGlvbiBmb3I6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvY29tbWl0L2YwYmY2ZTcgKHY2KVxuICAgIGZpbmRJbnB1dHNPbkVsZW1lbnRXaXRoVGFnKHRlbXBsYXRlLmNvbnRlbnQsICdzZWxlY3RlZCcsIFtcbiAgICAgICdtYXQtYnV0dG9uLXRvZ2dsZS1ncm91cCdcbiAgICBdKS5mb3JFYWNoKG9mZnNldCA9PiB7XG4gICAgICB0aGlzLmZhaWx1cmVzLnB1c2goe1xuICAgICAgICBmaWxlUGF0aDogdGVtcGxhdGUuZmlsZVBhdGgsXG4gICAgICAgIHBvc2l0aW9uOiB0ZW1wbGF0ZS5nZXRDaGFyYWN0ZXJBbmRMaW5lT2ZQb3NpdGlvbih0ZW1wbGF0ZS5zdGFydCArIG9mZnNldCksXG4gICAgICAgIG1lc3NhZ2U6IGBGb3VuZCBkZXByZWNhdGVkIFwic2VsZWN0ZWRcIiBpbnB1dCBiaW5kaW5nIG9uIFwibWF0LXJhZGlvLWJ1dHRvbi1ncm91cFwiLiBgICtcbiAgICAgICAgICAgIGBVc2UgXCJ2YWx1ZVwiIGluc3RlYWQuYFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,138 @@
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.RippleSpeedFactorMigration = void 0;
11
+ const schematics_1 = require("@angular/cdk/schematics");
12
+ const ts = require("typescript");
13
+ const ripple_speed_factor_1 = require("./ripple-speed-factor");
14
+ /** Regular expression that matches [matRippleSpeedFactor]="$NUMBER" in templates. */
15
+ const speedFactorNumberRegex = /\[matRippleSpeedFactor]="(\d+(?:\.\d+)?)"/g;
16
+ /** Regular expression that matches [matRippleSpeedFactor]="$NOT_A_NUMBER" in templates. */
17
+ const speedFactorNotParseable = /\[matRippleSpeedFactor]="(?!\d+(?:\.\d+)?")(.*)"/g;
18
+ /**
19
+ * Note that will be added whenever a speed factor expression has been converted to calculate
20
+ * the according duration. This note should encourage people to clean up their code by switching
21
+ * away from the speed factors to explicit durations.
22
+ */
23
+ const removeNote = `TODO: Cleanup duration calculation.`;
24
+ /**
25
+ * Migration that walks through every property assignment and switches the global `baseSpeedFactor`
26
+ * ripple option to the new global animation config. Also updates every class member assignment
27
+ * that refers to MatRipple#speedFactor.
28
+ */
29
+ class RippleSpeedFactorMigration extends schematics_1.Migration {
30
+ constructor() {
31
+ super(...arguments);
32
+ // Only enable this rule if the migration targets version 7 as the ripple
33
+ // speed factor has been removed in that version.
34
+ this.enabled = this.targetVersion === schematics_1.TargetVersion.V7;
35
+ }
36
+ visitNode(node) {
37
+ if (ts.isBinaryExpression(node)) {
38
+ this._visitBinaryExpression(node);
39
+ }
40
+ else if (ts.isPropertyAssignment(node)) {
41
+ this._visitPropertyAssignment(node);
42
+ }
43
+ }
44
+ visitTemplate(template) {
45
+ let match;
46
+ while ((match = speedFactorNumberRegex.exec(template.content)) !== null) {
47
+ const newEnterDuration = ripple_speed_factor_1.convertSpeedFactorToDuration(parseFloat(match[1]));
48
+ this._replaceText(template.filePath, template.start + match.index, match[0].length, `[matRippleAnimation]="{enterDuration: ${newEnterDuration}}"`);
49
+ }
50
+ while ((match = speedFactorNotParseable.exec(template.content)) !== null) {
51
+ const newDurationExpression = ripple_speed_factor_1.createSpeedFactorConvertExpression(match[1]);
52
+ this._replaceText(template.filePath, template.start + match.index, match[0].length, `[matRippleAnimation]="{enterDuration: (${newDurationExpression})}"`);
53
+ }
54
+ }
55
+ /** Switches binary expressions (e.g. myRipple.speedFactor = 0.5) to the new animation config. */
56
+ _visitBinaryExpression(expression) {
57
+ if (!ts.isPropertyAccessExpression(expression.left)) {
58
+ return;
59
+ }
60
+ // Left side expression consists of target object and property name (e.g. myInstance.val)
61
+ const leftExpression = expression.left;
62
+ const targetTypeNode = this.typeChecker.getTypeAtLocation(leftExpression.expression);
63
+ if (!targetTypeNode.symbol) {
64
+ return;
65
+ }
66
+ const targetTypeName = targetTypeNode.symbol.getName();
67
+ const propertyName = leftExpression.name.getText();
68
+ const filePath = this.fileSystem.resolve(leftExpression.getSourceFile().fileName);
69
+ if (targetTypeName === 'MatRipple' && propertyName === 'speedFactor') {
70
+ if (ts.isNumericLiteral(expression.right)) {
71
+ const numericValue = parseFloat(expression.right.text);
72
+ const newEnterDurationValue = ripple_speed_factor_1.convertSpeedFactorToDuration(numericValue);
73
+ // Replace the `speedFactor` property name with `animation`.
74
+ this._replaceText(filePath, leftExpression.name.getStart(), leftExpression.name.getWidth(), 'animation');
75
+ // Replace the value assignment with the new animation config.
76
+ this._replaceText(filePath, expression.right.getStart(), expression.right.getWidth(), `{enterDuration: ${newEnterDurationValue}}`);
77
+ }
78
+ else {
79
+ // Handle the right expression differently if the previous speed factor value can't
80
+ // be resolved statically. In that case, we just create a TypeScript expression that
81
+ // calculates the explicit duration based on the non-static speed factor expression.
82
+ const newExpression = ripple_speed_factor_1.createSpeedFactorConvertExpression(expression.right.getText());
83
+ // Replace the `speedFactor` property name with `animation`.
84
+ this._replaceText(filePath, leftExpression.name.getStart(), leftExpression.name.getWidth(), 'animation');
85
+ // Replace the value assignment with the new animation config and remove TODO.
86
+ this._replaceText(filePath, expression.right.getStart(), expression.right.getWidth(), `/** ${removeNote} */ {enterDuration: ${newExpression}}`);
87
+ }
88
+ }
89
+ }
90
+ /**
91
+ * Switches the global option `baseSpeedFactor` to the new animation config. For this
92
+ * we assume that the `baseSpeedFactor` is not used in combination with individual
93
+ * speed factors.
94
+ */
95
+ _visitPropertyAssignment(assignment) {
96
+ // For switching the `baseSpeedFactor` global option we expect the property assignment
97
+ // to be inside of a normal object literal. Custom ripple global options cannot be
98
+ // witched automatically.
99
+ if (!ts.isObjectLiteralExpression(assignment.parent)) {
100
+ return;
101
+ }
102
+ // The assignment consists of a name (key) and initializer (value).
103
+ if (assignment.name.getText() !== 'baseSpeedFactor') {
104
+ return;
105
+ }
106
+ // We could technically lazily check for the MAT_RIPPLE_GLOBAL_OPTIONS injection token to
107
+ // be present, but it's not right to assume that everyone sets the ripple global options
108
+ // immediately in the provider object (e.g. it can happen that someone just imports the
109
+ // config from a separate file).
110
+ const { initializer, name } = assignment;
111
+ const filePath = this.fileSystem.resolve(assignment.getSourceFile().fileName);
112
+ if (ts.isNumericLiteral(initializer)) {
113
+ const numericValue = parseFloat(initializer.text);
114
+ const newEnterDurationValue = ripple_speed_factor_1.convertSpeedFactorToDuration(numericValue);
115
+ // Replace the `baseSpeedFactor` property name with `animation`.
116
+ this._replaceText(filePath, name.getStart(), name.getWidth(), 'animation');
117
+ // Replace the value assignment initializer with the new animation config.
118
+ this._replaceText(filePath, initializer.getStart(), initializer.getWidth(), `{enterDuration: ${newEnterDurationValue}}`);
119
+ }
120
+ else {
121
+ // Handle the right expression differently if the previous speed factor value can't
122
+ // be resolved statically. In that case, we just create a TypeScript expression that
123
+ // calculates the explicit duration based on the non-static speed factor expression.
124
+ const newExpression = ripple_speed_factor_1.createSpeedFactorConvertExpression(initializer.getText());
125
+ // Replace the `baseSpeedFactor` property name with `animation`.
126
+ this._replaceText(filePath, name.getStart(), name.getWidth(), 'animation');
127
+ // Replace the value assignment with the new animation config and remove TODO.
128
+ this._replaceText(filePath, initializer.getStart(), initializer.getWidth(), `/** ${removeNote} */ {enterDuration: ${newExpression}}`);
129
+ }
130
+ }
131
+ _replaceText(filePath, start, width, newText) {
132
+ const recorder = this.fileSystem.edit(filePath);
133
+ recorder.remove(start, width);
134
+ recorder.insertRight(start, newText);
135
+ }
136
+ }
137
+ exports.RippleSpeedFactorMigration = RippleSpeedFactorMigration;
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLXNwZWVkLWZhY3Rvci1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvc2NoZW1hdGljcy9uZy11cGRhdGUvbWlncmF0aW9ucy9taXNjLXJpcHBsZXMtdjcvcmlwcGxlLXNwZWVkLWZhY3Rvci1taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsd0RBS2lDO0FBQ2pDLGlDQUFpQztBQUNqQywrREFHK0I7QUFFL0IscUZBQXFGO0FBQ3JGLE1BQU0sc0JBQXNCLEdBQUcsNENBQTRDLENBQUM7QUFFNUUsMkZBQTJGO0FBQzNGLE1BQU0sdUJBQXVCLEdBQUcsbURBQW1ELENBQUM7QUFFcEY7Ozs7R0FJRztBQUNILE1BQU0sVUFBVSxHQUFHLHFDQUFxQyxDQUFDO0FBRXpEOzs7O0dBSUc7QUFDSCxNQUFhLDBCQUEyQixTQUFRLHNCQUFlO0lBQS9EOztRQUVFLHlFQUF5RTtRQUN6RSxpREFBaUQ7UUFDakQsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLEtBQUssMEJBQWEsQ0FBQyxFQUFFLENBQUM7SUF1SXBELENBQUM7SUFySUMsU0FBUyxDQUFDLElBQWE7UUFDckIsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25DO2FBQU0sSUFBSSxFQUFFLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxRQUEwQjtRQUN0QyxJQUFJLEtBQTRCLENBQUM7UUFFakMsT0FBTyxDQUFDLEtBQUssR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8s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SUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzNFLDBFQUEwRTtZQUMxRSxJQUFJLENBQUMsWUFBWSxDQUNiLFFBQVEsRUFBRSxXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUN4RCxtQkFBbUIscUJBQXFCLEdBQUcsQ0FBQyxDQUFDO1NBQ2xEO2FBQU07WUFDTCxtRkFBbUY7WUFDbkYsb0ZBQW9GO1lBQ3BGLG9GQUFvRjtZQUNwRixNQUFNLGFBQWEsR0FBRyx3REFBa0MsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUVoRixnRUFBZ0U7WUFDaEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUUzRSw4RUFBOEU7WUFDOUUsSUFBSSxDQUFDLFlBQVksQ0FDYixRQUFRLEVBQUUsV0FBVyxDQUFDLFFBQVEsRUFBRSxFQUFFLFdBQVcsQ0FBQyxRQUFRLEVBQUUsRUFDeEQsT0FBTyxVQUFVLHVCQUF1QixhQUFhLEdBQUcsQ0FBQyxDQUFDO1NBQy9EO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxRQUF1QixFQUFFLEtBQWEsRUFBRSxLQUFhLEVBQUUsT0FBZTtRQUN6RixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM5QixRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0NBQ0Y7QUEzSUQsZ0VBMklDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7XG4gIE1pZ3JhdGlvbixcbiAgUmVzb2x2ZWRSZXNvdXJjZSxcbiAgVGFyZ2V0VmVyc2lvbixcbiAgV29ya3NwYWNlUGF0aFxufSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7XG4gIGNvbnZlcnRTcGVlZEZhY3RvclRvRHVyYXRpb24sXG4gIGNyZWF0ZVNwZWVkRmFjdG9yQ29udmVydEV4cHJlc3Npb24sXG59IGZyb20gJy4vcmlwcGxlLXNwZWVkLWZhY3Rvcic7XG5cbi8qKiBSZWd1bGFyIGV4cHJlc3Npb24gdGhhdCBtYXRjaGVzIFttYXRSaXBwbGVTcGVlZEZhY3Rvcl09XCIkTlVNQkVSXCIgaW4gdGVtcGxhdGVzLiAqL1xuY29uc3Qgc3BlZWRGYWN0b3JOdW1iZXJSZWdleCA9IC9cXFttYXRSaXBwbGVTcGVlZEZhY3Rvcl09XCIoXFxkKyg/OlxcLlxcZCspPylcIi9nO1xuXG4vKiogUmVndWxhciBleHByZXNzaW9uIHRoYXQgbWF0Y2hlcyBbbWF0UmlwcGxlU3BlZWRGYWN0b3JdPVwiJE5PVF9BX05VTUJFUlwiIGluIHRlbXBsYXRlcy4gKi9cbmNvbnN0IHNwZWVkRmFjdG9yTm90UGFyc2VhYmxlID0gL1xcW21hdFJpcHBsZVNwZWVkRmFjdG9yXT1cIig/IVxcZCsoPzpcXC5cXGQrKT9cIikoLiopXCIvZztcblxuLyoqXG4gKiBOb3RlIHRoYXQgd2lsbCBiZSBhZGRlZCB3aGVuZXZlciBhIHNwZWVkIGZhY3RvciBleHByZXNzaW9uIGhhcyBiZWVuIGNvbnZlcnRlZCB0byBjYWxjdWxhdGVcbiAqIHRoZSBhY2NvcmRpbmcgZHVyYXRpb24uIFRoaXMgbm90ZSBzaG91bGQgZW5jb3VyYWdlIHBlb3BsZSB0byBjbGVhbiB1cCB0aGVpciBjb2RlIGJ5IHN3aXRjaGluZ1xuICogYXdheSBmcm9tIHRoZSBzcGVlZCBmYWN0b3JzIHRvIGV4cGxpY2l0IGR1cmF0aW9ucy5cbiAqL1xuY29uc3QgcmVtb3ZlTm90ZSA9IGBUT0RPOiBDbGVhbnVwIGR1cmF0aW9uIGNhbGN1bGF0aW9uLmA7XG5cbi8qKlxuICogTWlncmF0aW9uIHRoYXQgd2Fsa3MgdGhyb3VnaCBldmVyeSBwcm9wZXJ0eSBhc3NpZ25tZW50IGFuZCBzd2l0Y2hlcyB0aGUgZ2xvYmFsIGBiYXNlU3BlZWRGYWN0b3JgXG4gKiByaXBwbGUgb3B0aW9uIHRvIHRoZSBuZXcgZ2xvYmFsIGFuaW1hdGlvbiBjb25maWcuIEFsc28gdXBkYXRlcyBldmVyeSBjbGFzcyBtZW1iZXIgYXNzaWdubWVudFxuICogdGhhdCByZWZlcnMgdG8gTWF0UmlwcGxlI3NwZWVkRmFjdG9yLlxuICovXG5leHBvcnQgY2xhc3MgUmlwcGxlU3BlZWRGYWN0b3JNaWdyYXRpb24gZXh0ZW5kcyBNaWdyYXRpb248bnVsbD4ge1xuXG4gIC8vIE9ubHkgZW5hYmxlIHRoaXMgcnVsZSBpZiB0aGUgbWlncmF0aW9uIHRhcmdldHMgdmVyc2lvbiA3IGFzIHRoZSByaXBwbGVcbiAgLy8gc3BlZWQgZmFjdG9yIGhhcyBiZWVuIHJlbW92ZWQgaW4gdGhhdCB2ZXJzaW9uLlxuICBlbmFibGVkID0gdGhpcy50YXJnZXRWZXJzaW9uID09PSBUYXJnZXRWZXJzaW9uLlY3O1xuXG4gIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgaWYgKHRzLmlzQmluYXJ5RXhwcmVzc2lvbihub2RlKSkge1xuICAgICAgdGhpcy5fdmlzaXRCaW5hcnlFeHByZXNzaW9uKG5vZGUpO1xuICAgIH0gZWxzZSBpZiAodHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQobm9kZSkpIHtcbiAgICAgIHRoaXMuX3Zpc2l0UHJvcGVydHlBc3NpZ25tZW50KG5vZGUpO1xuICAgIH1cbiAgfVxuXG4gIHZpc2l0VGVtcGxhdGUodGVtcGxhdGU6IFJlc29sdmVkUmVzb3VyY2UpOiB2b2lkIHtcbiAgICBsZXQgbWF0Y2g6IFJlZ0V4cE1hdGNoQXJyYXl8bnVsbDtcblxuICAgIHdoaWxlICgobWF0Y2ggPSBzcGVlZEZhY3Rvck51bWJlclJlZ2V4LmV4ZWModGVtcGxhdGUuY29udGVudCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBuZXdFbnRlckR1cmF0aW9uID0gY29udmVydFNwZWVkRmFjdG9yVG9EdXJhdGlvbihwYXJzZUZsb2F0KG1hdGNoWzFdKSk7XG5cbiAgICAgIHRoaXMuX3JlcGxhY2VUZXh0KFxuICAgICAgICAgIHRlbXBsYXRlLmZpbGVQYXRoLCB0ZW1wbGF0ZS5zdGFydCArIG1hdGNoLmluZGV4ISwgbWF0Y2hbMF0ubGVuZ3RoLFxuICAgICAgICAgIGBbbWF0UmlwcGxlQW5pbWF0aW9uXT1cIntlbnRlckR1cmF0aW9uOiAke25ld0VudGVyRHVyYXRpb259fVwiYCk7XG4gICAgfVxuXG4gICAgd2hpbGUgKChtYXRjaCA9IHNwZWVkRmFjdG9yTm90UGFyc2VhYmxlLmV4ZWModGVtcGxhdGUuY29udGVudCkpICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBuZXdEdXJhdGlvbkV4cHJlc3Npb24gPSBjcmVhdGVTcGVlZEZhY3RvckNvbnZlcnRFeHByZXNzaW9uKG1hdGNoWzFdKTtcbiAgICAgIHRoaXMuX3JlcGxhY2VUZXh0KFxuICAgICAgICAgIHRlbXBsYXRlLmZpbGVQYXRoLCB0ZW1wbGF0ZS5zdGFydCArIG1hdGNoLmluZGV4ISwgbWF0Y2hbMF0ubGVuZ3RoLFxuICAgICAgICAgIGBbbWF0UmlwcGxlQW5pbWF0aW9uXT1cIntlbnRlckR1cmF0aW9uOiAoJHtuZXdEdXJhdGlvbkV4cHJlc3Npb259KX1cImApO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBTd2l0Y2hlcyBiaW5hcnkgZXhwcmVzc2lvbnMgKGUuZy4gbXlSaXBwbGUuc3BlZWRGYWN0b3IgPSAwLjUpIHRvIHRoZSBuZXcgYW5pbWF0aW9uIGNvbmZpZy4gKi9cbiAgcHJpdmF0ZSBfdmlzaXRCaW5hcnlFeHByZXNzaW9uKGV4cHJlc3Npb246IHRzLkJpbmFyeUV4cHJlc3Npb24pIHtcbiAgICBpZiAoIXRzLmlzUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uKGV4cHJlc3Npb24ubGVmdCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBMZWZ0IHNpZGUgZXhwcmVzc2lvbiBjb25zaXN0cyBvZiB0YXJnZXQgb2JqZWN0IGFuZCBwcm9wZXJ0eSBuYW1lIChlLmcuIG15SW5zdGFuY2UudmFsKVxuICAgIGNvbnN0IGxlZnRFeHByZXNzaW9uID0gZXhwcmVzc2lvbi5sZWZ0IGFzIHRzLlByb3BlcnR5QWNjZXNzRXhwcmVzc2lvbjtcbiAgICBjb25zdCB0YXJnZXRUeXBlTm9kZSA9IHRoaXMudHlwZUNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24obGVmdEV4cHJlc3Npb24uZXhwcmVzc2lvbik7XG5cbiAgICBpZiAoIXRhcmdldFR5cGVOb2RlLnN5bWJvbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldFR5cGVOYW1lID0gdGFyZ2V0VHlwZU5vZGUuc3ltYm9sLmdldE5hbWUoKTtcbiAgICBjb25zdCBwcm9wZXJ0eU5hbWUgPSBsZWZ0RXhwcmVzc2lvbi5uYW1lLmdldFRleHQoKTtcbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZmlsZVN5c3RlbS5yZXNvbHZlKGxlZnRFeHByZXNzaW9uLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZSk7XG5cbiAgICBpZiAodGFyZ2V0VHlwZU5hbWUgPT09ICdNYXRSaXBwbGUnICYmIHByb3BlcnR5TmFtZSA9PT0gJ3NwZWVkRmFjdG9yJykge1xuICAgICAgaWYgKHRzLmlzTnVtZXJpY0xpdGVyYWwoZXhwcmVzc2lvbi5yaWdodCkpIHtcbiAgICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlID0gcGFyc2VGbG9hdChleHByZXNzaW9uLnJpZ2h0LnRleHQpO1xuICAgICAgICBjb25zdCBuZXdFbnRlckR1cmF0aW9uVmFsdWUgPSBjb252ZXJ0U3BlZWRGYWN0b3JUb0R1cmF0aW9uKG51bWVyaWNWYWx1ZSk7XG5cbiAgICAgICAgLy8gUmVwbGFjZSB0aGUgYHNwZWVkRmFjdG9yYCBwcm9wZXJ0eSBuYW1lIHdpdGggYGFuaW1hdGlvbmAuXG4gICAgICAgIHRoaXMuX3JlcGxhY2VUZXh0KFxuICAgICAgICAgICAgZmlsZVBhdGgsIGxlZnRFeHByZXNzaW9uLm5hbWUuZ2V0U3RhcnQoKSwgbGVmdEV4cHJlc3Npb24ubmFtZS5nZXRXaWR0aCgpLCAnYW5pbWF0aW9uJyk7XG5cbiAgICAgICAgLy8gUmVwbGFjZSB0aGUgdmFsdWUgYXNzaWdubWVudCB3aXRoIHRoZSBuZXcgYW5pbWF0aW9uIGNvbmZpZy5cbiAgICAgICAgdGhpcy5fcmVwbGFjZVRleHQoXG4gICAgICAgICAgICBmaWxlUGF0aCwgZXhwcmVzc2lvbi5yaWdodC5nZXRTdGFydCgpLCBleHByZXNzaW9uLnJpZ2h0LmdldFdpZHRoKCksXG4gICAgICAgICAgICBge2VudGVyRHVyYXRpb246ICR7bmV3RW50ZXJEdXJhdGlvblZhbHVlfX1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEhhbmRsZSB0aGUgcmlnaHQgZXhwcmVzc2lvbiBkaWZmZXJlbnRseSBpZiB0aGUgcHJldmlvdXMgc3BlZWQgZmFjdG9yIHZhbHVlIGNhbid0XG4gICAgICAgIC8vIGJlIHJlc29sdmVkIHN0YXRpY2FsbHkuIEluIHRoYXQgY2FzZSwgd2UganVzdCBjcmVhdGUgYSBUeXBlU2NyaXB0IGV4cHJlc3Npb24gdGhhdFxuICAgICAgICAvLyBjYWxjdWxhdGVzIHRoZSBleHBsaWNpdCBkdXJhdGlvbiBiYXNlZCBvbiB0aGUgbm9uLXN0YXRpYyBzcGVlZCBmYWN0b3IgZXhwcmVzc2lvbi5cbiAgICAgICAgY29uc3QgbmV3RXhwcmVzc2lvbiA9IGNyZWF0ZVNwZWVkRmFjdG9yQ29udmVydEV4cHJlc3Npb24oZXhwcmVzc2lvbi5yaWdodC5nZXRUZXh0KCkpO1xuXG4gICAgICAgIC8vIFJlcGxhY2UgdGhlIGBzcGVlZEZhY3RvcmAgcHJvcGVydHkgbmFtZSB3aXRoIGBhbmltYXRpb25gLlxuICAgICAgICB0aGlzLl9yZXBsYWNlVGV4dChcbiAgICAgICAgICAgIGZpbGVQYXRoLCBsZWZ0RXhwcmVzc2lvbi5uYW1lLmdldFN0YXJ0KCksIGxlZnRFeHByZXNzaW9uLm5hbWUuZ2V0V2lkdGgoKSwgJ2FuaW1hdGlvbicpO1xuXG4gICAgICAgIC8vIFJlcGxhY2UgdGhlIHZhbHVlIGFzc2lnbm1lbnQgd2l0aCB0aGUgbmV3IGFuaW1hdGlvbiBjb25maWcgYW5kIHJlbW92ZSBUT0RPLlxuICAgICAgICB0aGlzLl9yZXBsYWNlVGV4dChcbiAgICAgICAgICAgIGZpbGVQYXRoLCBleHByZXNzaW9uLnJpZ2h0LmdldFN0YXJ0KCksIGV4cHJlc3Npb24ucmlnaHQuZ2V0V2lkdGgoKSxcbiAgICAgICAgICAgIGAvKiogJHtyZW1vdmVOb3RlfSAqLyB7ZW50ZXJEdXJhdGlvbjogJHtuZXdFeHByZXNzaW9ufX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3dpdGNoZXMgdGhlIGdsb2JhbCBvcHRpb24gYGJhc2VTcGVlZEZhY3RvcmAgdG8gdGhlIG5ldyBhbmltYXRpb24gY29uZmlnLiBGb3IgdGhpc1xuICAgKiB3ZSBhc3N1bWUgdGhhdCB0aGUgYGJhc2VTcGVlZEZhY3RvcmAgaXMgbm90IHVzZWQgaW4gY29tYmluYXRpb24gd2l0aCBpbmRpdmlkdWFsXG4gICAqIHNwZWVkIGZhY3RvcnMuXG4gICAqL1xuICBwcml2YXRlIF92aXNpdFByb3BlcnR5QXNzaWdubWVudChhc3NpZ25tZW50OiB0cy5Qcm9wZXJ0eUFzc2lnbm1lbnQpIHtcbiAgICAvLyBGb3Igc3dpdGNoaW5nIHRoZSBgYmFzZVNwZWVkRmFjdG9yYCBnbG9iYWwgb3B0aW9uIHdlIGV4cGVjdCB0aGUgcHJvcGVydHkgYXNzaWdubWVudFxuICAgIC8vIHRvIGJlIGluc2lkZSBvZiBhIG5vcm1hbCBvYmplY3QgbGl0ZXJhbC4gQ3VzdG9tIHJpcHBsZSBnbG9iYWwgb3B0aW9ucyBjYW5ub3QgYmVcbiAgICAvLyB3aXRjaGVkIGF1dG9tYXRpY2FsbHkuXG4gICAgaWYgKCF0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKGFzc2lnbm1lbnQucGFyZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFRoZSBhc3NpZ25tZW50IGNvbnNpc3RzIG9mIGEgbmFtZSAoa2V5KSBhbmQgaW5pdGlhbGl6ZXIgKHZhbHVlKS5cbiAgICBpZiAoYXNzaWdubWVudC5uYW1lLmdldFRleHQoKSAhPT0gJ2Jhc2VTcGVlZEZhY3RvcicpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBXZSBjb3VsZCB0ZWNobmljYWxseSBsYXppbHkgY2hlY2sgZm9yIHRoZSBNQVRfUklQUExFX0dMT0JBTF9PUFRJT05TIGluamVjdGlvbiB0b2tlbiB0b1xuICAgIC8vIGJlIHByZXNlbnQsIGJ1dCBpdCdzIG5vdCByaWdodCB0byBhc3N1bWUgdGhhdCBldmVyeW9uZSBzZXRzIHRoZSByaXBwbGUgZ2xvYmFsIG9wdGlvbnNcbiAgICAvLyBpbW1lZGlhdGVseSBpbiB0aGUgcHJvdmlkZXIgb2JqZWN0IChlLmcuIGl0IGNhbiBoYXBwZW4gdGhhdCBzb21lb25lIGp1c3QgaW1wb3J0cyB0aGVcbiAgICAvLyBjb25maWcgZnJvbSBhIHNlcGFyYXRlIGZpbGUpLlxuXG4gICAgY29uc3Qge2luaXRpYWxpemVyLCBuYW1lfSA9IGFzc2lnbm1lbnQ7XG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmZpbGVTeXN0ZW0ucmVzb2x2ZShhc3NpZ25tZW50LmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZSk7XG5cbiAgICBpZiAodHMuaXNOdW1lcmljTGl0ZXJhbChpbml0aWFsaXplcikpIHtcbiAgICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IHBhcnNlRmxvYXQoaW5pdGlhbGl6ZXIudGV4dCk7XG4gICAgICBjb25zdCBuZXdFbnRlckR1cmF0aW9uVmFsdWUgPSBjb252ZXJ0U3BlZWRGYWN0b3JUb0R1cmF0aW9uKG51bWVyaWNWYWx1ZSk7XG5cbiAgICAgIC8vIFJlcGxhY2UgdGhlIGBiYXNlU3BlZWRGYWN0b3JgIHByb3BlcnR5IG5hbWUgd2l0aCBgYW5pbWF0aW9uYC5cbiAgICAgIHRoaXMuX3JlcGxhY2VUZXh0KGZpbGVQYXRoLCBuYW1lLmdldFN0YXJ0KCksIG5hbWUuZ2V0V2lkdGgoKSwgJ2FuaW1hdGlvbicpO1xuICAgICAgLy8gUmVwbGFjZSB0aGUgdmFsdWUgYXNzaWdubWVudCBpbml0aWFsaXplciB3aXRoIHRoZSBuZXcgYW5pbWF0aW9uIGNvbmZpZy5cbiAgICAgIHRoaXMuX3JlcGxhY2VUZXh0KFxuICAgICAgICAgIGZpbGVQYXRoLCBpbml0aWFsaXplci5nZXRTdGFydCgpLCBpbml0aWFsaXplci5nZXRXaWR0aCgpLFxuICAgICAgICAgIGB7ZW50ZXJEdXJhdGlvbjogJHtuZXdFbnRlckR1cmF0aW9uVmFsdWV9fWApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBIYW5kbGUgdGhlIHJpZ2h0IGV4cHJlc3Npb24gZGlmZmVyZW50bHkgaWYgdGhlIHByZXZpb3VzIHNwZWVkIGZhY3RvciB2YWx1ZSBjYW4ndFxuICAgICAgLy8gYmUgcmVzb2x2ZWQgc3RhdGljYWxseS4gSW4gdGhhdCBjYXNlLCB3ZSBqdXN0IGNyZWF0ZSBhIFR5cGVTY3JpcHQgZXhwcmVzc2lvbiB0aGF0XG4gICAgICAvLyBjYWxjdWxhdGVzIHRoZSBleHBsaWNpdCBkdXJhdGlvbiBiYXNlZCBvbiB0aGUgbm9uLXN0YXRpYyBzcGVlZCBmYWN0b3IgZXhwcmVzc2lvbi5cbiAgICAgIGNvbnN0IG5ld0V4cHJlc3Npb24gPSBjcmVhdGVTcGVlZEZhY3RvckNvbnZlcnRFeHByZXNzaW9uKGluaXRpYWxpemVyLmdldFRleHQoKSk7XG5cbiAgICAgIC8vIFJlcGxhY2UgdGhlIGBiYXNlU3BlZWRGYWN0b3JgIHByb3BlcnR5IG5hbWUgd2l0aCBgYW5pbWF0aW9uYC5cbiAgICAgIHRoaXMuX3JlcGxhY2VUZXh0KGZpbGVQYXRoLCBuYW1lLmdldFN0YXJ0KCksIG5hbWUuZ2V0V2lkdGgoKSwgJ2FuaW1hdGlvbicpO1xuXG4gICAgICAvLyBSZXBsYWNlIHRoZSB2YWx1ZSBhc3NpZ25tZW50IHdpdGggdGhlIG5ldyBhbmltYXRpb24gY29uZmlnIGFuZCByZW1vdmUgVE9ETy5cbiAgICAgIHRoaXMuX3JlcGxhY2VUZXh0KFxuICAgICAgICAgIGZpbGVQYXRoLCBpbml0aWFsaXplci5nZXRTdGFydCgpLCBpbml0aWFsaXplci5nZXRXaWR0aCgpLFxuICAgICAgICAgIGAvKiogJHtyZW1vdmVOb3RlfSAqLyB7ZW50ZXJEdXJhdGlvbjogJHtuZXdFeHByZXNzaW9ufX1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9yZXBsYWNlVGV4dChmaWxlUGF0aDogV29ya3NwYWNlUGF0aCwgc3RhcnQ6IG51bWJlciwgd2lkdGg6IG51bWJlciwgbmV3VGV4dDogc3RyaW5nKSB7XG4gICAgY29uc3QgcmVjb3JkZXIgPSB0aGlzLmZpbGVTeXN0ZW0uZWRpdChmaWxlUGF0aCk7XG4gICAgcmVjb3JkZXIucmVtb3ZlKHN0YXJ0LCB3aWR0aCk7XG4gICAgcmVjb3JkZXIuaW5zZXJ0UmlnaHQoc3RhcnQsIG5ld1RleHQpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,30 @@
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.createSpeedFactorConvertExpression = exports.convertSpeedFactorToDuration = void 0;
11
+ /** Converts the specified speed factor into the exact static enter duration. */
12
+ function convertSpeedFactorToDuration(factor) {
13
+ // Based on the numeric speed factor value that only affected the `enterDuration` we can
14
+ // now calculate the exact `enterDuration`. 450ms is the enter duration without factor.
15
+ return 450 / (factor || 1);
16
+ }
17
+ exports.convertSpeedFactorToDuration = convertSpeedFactorToDuration;
18
+ /**
19
+ * Creates a runtime TypeScript expression that can be used in order to calculate the duration
20
+ * from the speed factor expression that couldn't be statically analyzed.
21
+ *
22
+ * @param speedFactorValue Speed factor expression that couldn't be statically analyzed.
23
+ */
24
+ function createSpeedFactorConvertExpression(speedFactorValue) {
25
+ // To be sure that the speed factor value expression is calculated properly, we need to add
26
+ // the according parenthesis.
27
+ return `450 / (${speedFactorValue})`;
28
+ }
29
+ exports.createSpeedFactorConvertExpression = createSpeedFactorConvertExpression;
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmlwcGxlLXNwZWVkLWZhY3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC9zY2hlbWF0aWNzL25nLXVwZGF0ZS9taWdyYXRpb25zL21pc2MtcmlwcGxlcy12Ny9yaXBwbGUtc3BlZWQtZmFjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7Ozs7O0dBTUc7OztBQUVILGdGQUFnRjtBQUNoRixTQUFnQiw0QkFBNEIsQ0FBQyxNQUFjO0lBQ3pELHdGQUF3RjtJQUN4Rix1RkFBdUY7SUFDdkYsT0FBTyxHQUFHLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUpELG9FQUlDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixrQ0FBa0MsQ0FBQyxnQkFBd0I7SUFDekUsMkZBQTJGO0lBQzNGLDZCQUE2QjtJQUM3QixPQUFPLFVBQVUsZ0JBQWdCLEdBQUcsQ0FBQztBQUN2QyxDQUFDO0FBSkQsZ0ZBSUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLyoqIENvbnZlcnRzIHRoZSBzcGVjaWZpZWQgc3BlZWQgZmFjdG9yIGludG8gdGhlIGV4YWN0IHN0YXRpYyBlbnRlciBkdXJhdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0U3BlZWRGYWN0b3JUb0R1cmF0aW9uKGZhY3RvcjogbnVtYmVyKSB7XG4gIC8vIEJhc2VkIG9uIHRoZSBudW1lcmljIHNwZWVkIGZhY3RvciB2YWx1ZSB0aGF0IG9ubHkgYWZmZWN0ZWQgdGhlIGBlbnRlckR1cmF0aW9uYCB3ZSBjYW5cbiAgLy8gbm93IGNhbGN1bGF0ZSB0aGUgZXhhY3QgYGVudGVyRHVyYXRpb25gLiA0NTBtcyBpcyB0aGUgZW50ZXIgZHVyYXRpb24gd2l0aG91dCBmYWN0b3IuXG4gIHJldHVybiA0NTAgLyAoZmFjdG9yIHx8IDEpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBydW50aW1lIFR5cGVTY3JpcHQgZXhwcmVzc2lvbiB0aGF0IGNhbiBiZSB1c2VkIGluIG9yZGVyIHRvIGNhbGN1bGF0ZSB0aGUgZHVyYXRpb25cbiAqIGZyb20gdGhlIHNwZWVkIGZhY3RvciBleHByZXNzaW9uIHRoYXQgY291bGRuJ3QgYmUgc3RhdGljYWxseSBhbmFseXplZC5cbiAqXG4gKiBAcGFyYW0gc3BlZWRGYWN0b3JWYWx1ZSBTcGVlZCBmYWN0b3IgZXhwcmVzc2lvbiB0aGF0IGNvdWxkbid0IGJlIHN0YXRpY2FsbHkgYW5hbHl6ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTcGVlZEZhY3RvckNvbnZlcnRFeHByZXNzaW9uKHNwZWVkRmFjdG9yVmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIC8vIFRvIGJlIHN1cmUgdGhhdCB0aGUgc3BlZWQgZmFjdG9yIHZhbHVlIGV4cHJlc3Npb24gaXMgY2FsY3VsYXRlZCBwcm9wZXJseSwgd2UgbmVlZCB0byBhZGRcbiAgLy8gdGhlIGFjY29yZGluZyBwYXJlbnRoZXNpcy5cbiAgcmV0dXJuIGA0NTAgLyAoJHtzcGVlZEZhY3RvclZhbHVlfSlgO1xufVxuIl19
@@ -144,6 +144,7 @@ function getDeclarationSymbolOfNode(node, checker) {
144
144
  }
145
145
  /** Tries to resolve the name of the Material module that a node is imported from. */
146
146
  function resolveModuleName(node, typeChecker) {
147
+ var _a;
147
148
  // Get the symbol for the named binding element. Note that we cannot determine the
148
149
  // value declaration based on the type of the element as types are not necessarily
149
150
  // specific to a given secondary entry-point (e.g. exports with the type of "string")
@@ -158,7 +159,10 @@ function resolveModuleName(node, typeChecker) {
158
159
  // The filename for the source file of the node that contains the
159
160
  // first declaration of the symbol. All symbol declarations must be
160
161
  // part of a defining node, so parent can be asserted to be defined.
161
- const resolvedNode = symbol.valueDeclaration || symbol.declarations[0];
162
+ const resolvedNode = symbol.valueDeclaration || ((_a = symbol.declarations) === null || _a === void 0 ? void 0 : _a[0]);
163
+ if (resolvedNode === undefined) {
164
+ return null;
165
+ }
162
166
  const sourceFile = resolvedNode.getSourceFile().fileName;
163
167
  // File the module the symbol belongs to from a regex match of the
164
168
  // filename. This will always match since only "@angular/material"
@@ -166,4 +170,4 @@ function resolveModuleName(node, typeChecker) {
166
170
  const matches = sourceFile.match(ANGULAR_MATERIAL_FILEPATH_REGEX);
167
171
  return matches ? matches[1] : null;
168
172
  }
169
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vjb25kYXJ5LWVudHJ5LXBvaW50cy1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvc2NoZW1hdGljcy9uZy11cGRhdGUvbWlncmF0aW9ucy9wYWNrYWdlLWltcG9ydHMtdjgvc2Vjb25kYXJ5LWVudHJ5LXBvaW50cy1taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsd0RBQWlFO0FBQ2pFLGlDQUFpQztBQUNqQyx1RkFBd0Y7QUFFeEYsTUFBTSwyQkFBMkIsR0FBRyxvREFBb0Q7SUFDcEYsNERBQTRELENBQUM7QUFFakUsTUFBTSxtQ0FBbUMsR0FBRyw4Q0FBOEM7SUFDdEYsNERBQTRELENBQUM7QUFFakU7OztHQUdHO0FBQ0gsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLDJDQUF1QixTQUFTLENBQUMsQ0FBQztBQUV4Rjs7O0dBR0c7QUFDSCxNQUFNLG9CQUFvQixHQUE2QixPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUUxRjs7O0dBR0c7QUFDSCxNQUFhLDZCQUE4QixTQUFRLHNCQUFlO0lBQWxFOztRQUNFLFlBQU8sR0FBRyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFN0Isd0VBQXdFO1FBQ3hFLHNFQUFzRTtRQUN0RSxZQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsS0FBSywwQkFBYSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLDBCQUFhLENBQUMsRUFBRSxDQUFDO0lBdUcvRixDQUFDO0lBckdDLFNBQVMsQ0FBQyxXQUFvQjtRQUM1QixvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUM7WUFDcEMsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ3hE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RTtJQUNsRSxrRUFBa0U7SUFDbEUseUJBQXlCO0lBQ3pCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNsRSxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7QUFDckMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge01pZ3JhdGlvbiwgVGFyZ2V0VmVyc2lvbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL3NjaGVtYXRpY3MnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQge21hdGVyaWFsTW9kdWxlU3BlY2lmaWVyfSBmcm9tICcuLi8uLi8uLi9uZy11cGRhdGUvdHlwZXNjcmlwdC9tb2R1bGUtc3BlY2lmaWVycyc7XG5cbmNvbnN0IE9OTFlfU1VCUEFDS0FHRV9GQUlMVVJFX1NUUiA9IGBJbXBvcnRpbmcgZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsXCIgaXMgZGVwcmVjYXRlZC4gYCArXG4gICAgYEluc3RlYWQgaW1wb3J0IGZyb20gdGhlIGVudHJ5LXBvaW50IHRoZSBzeW1ib2wgYmVsb25ncyB0by5gO1xuXG5jb25zdCBOT19JTVBPUlRfTkFNRURfU1lNQk9MU19GQUlMVVJFX1NUUiA9IGBJbXBvcnRzIGZyb20gQW5ndWxhciBNYXRlcmlhbCBzaG91bGQgaW1wb3J0IGAgK1xuICAgIGBzcGVjaWZpYyBzeW1ib2xzIHJhdGhlciB0aGFuIGltcG9ydGluZyB0aGUgZW50aXJlIGxpYnJhcnkuYDtcblxuLyoqXG4gKiBSZWdleCBmb3IgdGVzdGluZyBmaWxlIHBhdGhzIGFnYWluc3QgdG8gZGV0ZXJtaW5lIGlmIHRoZSBmaWxlIGlzIGZyb20gdGhlXG4gKiBBbmd1bGFyIE1hdGVyaWFsIGxpYnJhcnkuXG4gKi9cbmNvbnN0IEFOR1VMQVJfTUFURVJJQUxfRklMRVBBVEhfUkVHRVggPSBuZXcgUmVnRXhwKGAke21hdGVyaWFsTW9kdWxlU3BlY2lmaWVyfS8oLio/KS9gKTtcblxuLyoqXG4gKiBNYXBwaW5nIG9mIE1hdGVyaWFsIHN5bWJvbCBuYW1lcyB0byB0aGVpciBtb2R1bGUgbmFtZXMuIFVzZWQgYXMgYSBmYWxsYmFjayBpZlxuICogd2UgZGlkbid0IG1hbmFnZSB0byByZXNvbHZlIHRoZSBtb2R1bGUgbmFtZSBvZiBhIHN5bWJvbCB1c2luZyB0aGUgdHlwZSBjaGVja2VyLlxuICovXG5jb25zdCBFTlRSWV9QT0lOVF9NQVBQSU5HUzoge1tuYW1lOiBzdHJpbmddOiBzdHJpbmd9ID0gcmVxdWlyZSgnLi9tYXRlcmlhbC1zeW1ib2xzLmpzb24nKTtcblxuLyoqXG4gKiBNaWdyYXRpb24gdGhhdCB1cGRhdGVzIGltcG9ydHMgd2hpY2ggcmVmZXIgdG8gdGhlIHByaW1hcnkgQW5ndWxhciBNYXRlcmlhbFxuICogZW50cnktcG9pbnQgdG8gdXNlIHRoZSBhcHByb3ByaWF0ZSBzZWNvbmRhcnkgZW50cnkgcG9pbnRzIChlLmcuIEBhbmd1bGFyL21hdGVyaWFsL2J1dHRvbikuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWNvbmRhcnlFbnRyeVBvaW50c01pZ3JhdGlvbiBleHRlbmRzIE1pZ3JhdGlvbjxudWxsPiB7XG4gIHByaW50ZXIgPSB0cy5jcmVhdGVQcmludGVyKCk7XG5cbiAgLy8gT25seSBlbmFibGUgdGhpcyBydWxlIGlmIHRoZSBtaWdyYXRpb24gdGFyZ2V0cyB2ZXJzaW9uIDguIFRoZSBwcmltYXJ5XG4gIC8vIGVudHJ5LXBvaW50IG9mIE1hdGVyaWFsIGhhcyBiZWVuIG1hcmtlZCBhcyBkZXByZWNhdGVkIGluIHZlcnNpb24gOC5cbiAgZW5hYmxlZCA9IHRoaXMudGFyZ2V0VmVyc2lvbiA9PT0gVGFyZ2V0VmVyc2lvbi5WOCB8fCB0aGlzLnRhcmdldFZlcnNpb24gPT09IFRhcmdldFZlcnNpb24uVjk7XG5cbiAgdmlzaXROb2RlKGRlY2xhcmF0aW9uOiB0cy5Ob2RlKTogdm9pZCB7XG4gICAgLy8gT25seSBsb29rIGF0IGltcG9ydCBkZWNsYXJhdGlvbnMuXG4gICAgaWYgKCF0cy5pc0ltcG9ydERlY2xhcmF0aW9uKGRlY2xhcmF0aW9uKSB8fFxuICAgICAgICAhdHMuaXNTdHJpbmdMaXRlcmFsTGlrZShkZWNsYXJhdGlvbi5tb2R1bGVTcGVjaWZpZXIpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaW1wb3J0TG9jYXRpb24gPSBkZWNsYXJhdGlvbi5tb2R1bGVTcGVjaWZpZXIudGV4dDtcbiAgICAvLyBJZiB0aGUgaW1wb3J0IG1vZHVsZSBpcyBub3QgQGFuZ3VsYXIvbWF0ZXJpYWwsIHNraXAgdGhlIGNoZWNrLlxuICAgIGlmIChpbXBvcnRMb2NhdGlvbiAhPT0gbWF0ZXJpYWxNb2R1bGVTcGVjaWZpZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBubyBpbXBvcnQgY2xhdXNlIGlzIGZvdW5kLCBvciBub3RoaW5nIGlzIG5hbWVkIGFzIGEgYmluZGluZyBpbiB0aGVcbiAgICAvLyBpbXBvcnQsIGFkZCBmYWlsdXJlIHNheWluZyB0byBpbXBvcnQgc3ltYm9scyBpbiBjbGF1c2UuXG4gICAgaWYgKCFkZWNsYXJhdGlvbi5pbXBvcnRDbGF1c2UgfHwgIWRlY2xhcmF0aW9uLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzKSB7XG4gICAgICB0aGlzLmNyZWF0ZUZhaWx1cmVBdE5vZGUoZGVjbGFyYXRpb24sIE5PX0lNUE9SVF9OQU1FRF9TWU1CT0xTX0ZBSUxVUkVfU1RSKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBBbGwgbmFtZWQgYmluZGluZ3MgaW4gaW1wb3J0IGNsYXVzZXMgbXVzdCBiZSBuYW1lZCBzeW1ib2xzLCBvdGhlcndpc2UgYWRkXG4gICAgLy8gZmFpbHVyZSBzYXlpbmcgdG8gaW1wb3J0IHN5bWJvbHMgaW4gY2xhdXNlLlxuICAgIGlmICghdHMuaXNOYW1lZEltcG9ydHMoZGVjbGFyYXRpb24uaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MpKSB7XG4gICAgICB0aGlzLmNyZWF0ZUZhaWx1cmVBdE5vZGUoZGVjbGFyYXRpb24sIE5PX0lNUE9SVF9OQU1FRF9TWU1CT0xTX0ZBSUxVUkVfU1RSKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBJZiBubyBzeW1ib2xzIGFyZSBpbiB0aGUgbmFtZWQgYmluZGluZ3MgdGhlbiBhZGQgZmFpbHVyZSBzYXlpbmcgdG9cbiAgICAvLyBpbXBvcnQgc3ltYm9scyBpbiBjbGF1c2UuXG4gICAgaWYgKCFkZWNsYXJhdGlvbi5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncy5lbGVtZW50cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY3JlYXRlRmFpbHVyZUF0Tm9kZShkZWNsYXJhdGlvbiwgTk9fSU1QT1JUX05BTUVEX1NZTUJPTFNfRkFJTFVSRV9TVFIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFdoZXRoZXIgdGhlIGV4aXN0aW5nIGltcG9ydCBkZWNsYXJhdGlvbiBpcyB1c2luZyBhIHNpbmdsZSBxdW90ZSBtb2R1bGUgc3BlY2lmaWVyLlxuICAgIGNvbnN0IHNpbmdsZVF1b3RlSW1wb3J0ID0gZGVjbGFyYXRpb24ubW9kdWxlU3BlY2lmaWVyLmdldFRleHQoKVswXSA9PT0gYCdgO1xuXG4gICAgLy8gTWFwIHdoaWNoIGNvbnNpc3RzIG9mIHNlY29uZGFyeSBlbnRyeS1wb2ludHMgYW5kIGltcG9ydCBzcGVjaWZpZXJzIHdoaWNoIGFyZSB1c2VkXG4gICAgLy8gd2l0aGluIHRoZSBjdXJyZW50IGltcG9ydCBkZWNsYXJhdGlvbi5cbiAgICBjb25zdCBpbXBvcnRNYXAgPSBuZXcgTWFwPHN0cmluZywgdHMuSW1wb3J0U3BlY2lmaWVyW10+KCk7XG5cbiAgICAvLyBEZXRlcm1pbmUgdGhlIHN1YnBhY2thZ2UgZWFjaCBzeW1ib2wgaW4gdGhlIG5hbWVkQmluZGluZyBjb21lcyBmcm9tLlxuICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBkZWNsYXJhdGlvbi5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncy5lbGVtZW50cykge1xuICAgICAgY29uc3QgZWxlbWVudE5hbWUgPSBlbGVtZW50LnByb3BlcnR5TmFtZSA/IGVsZW1lbnQucHJvcGVydHlOYW1lIDogZWxlbWVudC5uYW1lO1xuXG4gICAgICAvLyBUcnkgdG8gcmVzb2x2ZSB0aGUgbW9kdWxlIG5hbWUgdmlhIHRoZSB0eXBlIGNoZWNrZXIsIGFuZCBpZiBpdCBmYWlscywgZmFsbCBiYWNrIHRvXG4gICAgICAvLyByZXNvbHZpbmcgaXQgZnJvbSBvdXIgbGlzdCBvZiBzeW1ib2wgdG8gZW50cnkgcG9pbnQgbWFwcGluZ3MuIFVzaW5nIHRoZSB0eXBlIGNoZWNrZXIgaXNcbiAgICAgIC8vIG1vcmUgYWNjdXJhdGUgYW5kIGRvZXNuJ3QgcmVxdWlyZSB1cyB0byBrZWVwIGEgbGlzdCBvZiBzeW1ib2xzLCBidXQgaXQgd29uJ3Qgd29yayBpZlxuICAgICAgLy8gdGhlIHN5bWJvbHMgZG9uJ3QgZXhpc3QgYW55bW9yZSAoZS5nLiBhZnRlciB3ZSByZW1vdmUgdGhlIHRvcC1sZXZlbCBAYW5ndWxhci9tYXRlcmlhbCkuXG4gICAgICBjb25zdCBtb2R1bGVOYW1lID0gcmVzb2x2ZU1vZHVsZU5hbWUoZWxlbWVudE5hbWUsIHRoaXMudHlwZUNoZWNrZXIpIHx8XG4gICAgICAgICAgRU5UUllfUE9JTlRfTUFQUElOR1NbZWxlbWVudE5hbWUudGV4dF0gfHwgbnVsbDtcblxuICAgICAgaWYgKCFtb2R1bGVOYW1lKSB7XG4gICAgICAgIHRoaXMuY3JlYXRlRmFpbHVyZUF0Tm9kZShcbiAgICAgICAgICBlbGVtZW50LCBgXCIke2VsZW1lbnQuZ2V0VGV4dCgpfVwiIHdhcyBub3QgZm91bmQgaW4gdGhlIE1hdGVyaWFsIGxpYnJhcnkuYCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgICAvLyBUaGUgbW9kdWxlIG5hbWUgd2hlcmUgdGhlIHN5bWJvbCBpcyBkZWZpbmVkIGUuZy4gY2FyZCwgZGlhbG9nLiBUaGVcbiAgICAgICAgLy8gZmlyc3QgY2FwdHVyZSBncm91cCBpcyBjb250YWlucyB0aGUgbW9kdWxlIG5hbWUuXG4gICAgICAgIGlmIChpbXBvcnRNYXAuaGFzKG1vZHVsZU5hbWUpKSB7XG4gICAgICAgICAgaW1wb3J0TWFwLmdldChtb2R1bGVOYW1lKSEucHVzaChlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbXBvcnRNYXAuc2V0KG1vZHVsZU5hbWUsIFtlbGVtZW50XSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUcmFuc2Zvcm1zIHRoZSBpbXBvcnQgZGVjbGFyYXRpb24gaW50byBtdWx0aXBsZSBpbXBvcnQgZGVjbGFyYXRpb25zIHRoYXQgaW1wb3J0XG4gICAgLy8gdGhlIGdpdmVuIHN5bWJvbHMgZnJvbSB0aGUgaW5kaXZpZHVhbCBzZWNvbmRhcnkgZW50cnktcG9pbnRzLiBGb3IgZXhhbXBsZTpcbiAgICAvLyBpbXBvcnQge01hdENhcmRNb2R1bGUsIE1hdENhcmRUaXRsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG4gICAgLy8gaW1wb3J0IHtNYXRSYWRpb01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuICAgIGNvbnN0IG5ld0ltcG9ydFN0YXRlbWVudHMgPVxuICAgICAgICBBcnJheS5mcm9tKGltcG9ydE1hcC5lbnRyaWVzKCkpXG4gICAgICAgICAgICAuc29ydCgpXG4gICAgICAgICAgICAubWFwKChbbmFtZSwgZWxlbWVudHNdKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0ltcG9ydCA9IHRzLmNyZWF0ZUltcG9ydERlY2xhcmF0aW9uKFxuICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICB0cy5jcmVhdGVJbXBvcnRDbGF1c2UodW5kZWZpbmVkLCB0cy5jcmVhdGVOYW1lZEltcG9ydHMoZWxlbWVudHMpKSxcbiAgICAgICAgICAgICAgICAgIGNyZWF0ZVN0cmluZ0xpdGVyYWwoYCR7bWF0ZXJpYWxNb2R1bGVTcGVjaWZpZXJ9LyR7bmFtZX1gLCBzaW5nbGVRdW90ZUltcG9ydCkpO1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5wcmludGVyLnByaW50Tm9kZShcbiAgICAgICAgICAgICAgICAgIHRzLkVtaXRIaW50LlVuc3BlY2lmaWVkLCBuZXdJbXBvcnQsIGRlY2xhcmF0aW9uLmdldFNvdXJjZUZpbGUoKSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oJ1xcbicpO1xuXG4gICAgLy8gV2l0aG91dCBhbnkgaW1wb3J0IHN0YXRlbWVudHMgdGhhdCB3ZXJlIGdlbmVyYXRlZCwgd2UgY2FuIGFzc3VtZSB0aGF0IHRoaXMgd2FzIGFuIGVtcHR5XG4gICAgLy8gaW1wb3J0IGRlY2xhcmF0aW9uLiBXZSBzdGlsbCB3YW50IHRvIGFkZCBhIGZhaWx1cmUgaW4gb3JkZXIgdG8gbWFrZSBkZXZlbG9wZXJzIGF3YXJlIHRoYXRcbiAgICAvLyBpbXBvcnRpbmcgZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsXCIgaXMgZGVwcmVjYXRlZC5cbiAgICBpZiAoIW5ld0ltcG9ydFN0YXRlbWVudHMpIHtcbiAgICAgIHRoaXMuY3JlYXRlRmFpbHVyZUF0Tm9kZShkZWNsYXJhdGlvbi5tb2R1bGVTcGVjaWZpZXIsIE9OTFlfU1VCUEFDS0FHRV9GQUlMVVJFX1NUUik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLmZpbGVTeXN0ZW0ucmVzb2x2ZShcbiAgICAgICAgZGVjbGFyYXRpb24ubW9kdWxlU3BlY2lmaWVyLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZSk7XG4gICAgY29uc3QgcmVjb3JkZXIgPSB0aGlzLmZpbGVTeXN0ZW0uZWRpdChmaWxlUGF0aCk7XG5cbiAgICAvLyBQZXJmb3JtIHRoZSByZXBsYWNlbWVudCB0aGF0IHN3aXRjaGVzIHRoZSBwcmltYXJ5IGVudHJ5LXBvaW50IGltcG9ydCB0b1xuICAgIC8vIHRoZSBpbmRpdmlkdWFsIHNlY29uZGFyeSBlbnRyeS1wb2ludCBpbXBvcnRzLlxuICAgIHJlY29yZGVyLnJlbW92ZShkZWNsYXJhdGlvbi5nZXRTdGFydCgpLCBkZWNsYXJhdGlvbi5nZXRXaWR0aCgpKTtcbiAgICByZWNvcmRlci5pbnNlcnRSaWdodChkZWNsYXJhdGlvbi5nZXRTdGFydCgpLCBuZXdJbXBvcnRTdGF0ZW1lbnRzKTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzdHJpbmcgbGl0ZXJhbCBmcm9tIHRoZSBzcGVjaWZpZWQgdGV4dC5cbiAqIEBwYXJhbSB0ZXh0IFRleHQgb2YgdGhlIHN0cmluZyBsaXRlcmFsLlxuICogQHBhcmFtIHNpbmdsZVF1b3RlcyBXaGV0aGVyIHNpbmdsZSBxdW90ZXMgc2hvdWxkIGJlIHVzZWQgd2hlbiBwcmludGluZyB0aGUgbGl0ZXJhbCBub2RlLlxuICovXG5mdW5jdGlvbiBjcmVhdGVTdHJpbmdMaXRlcmFsKHRleHQ6IHN0cmluZywgc2luZ2xlUXVvdGVzOiBib29sZWFuKTogdHMuU3RyaW5nTGl0ZXJhbCB7XG4gIGNvbnN0IGxpdGVyYWwgPSB0cy5jcmVhdGVTdHJpbmdMaXRlcmFsKHRleHQpO1xuICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9ibG9iL21hc3Rlci9zcmMvY29tcGlsZXIvdXRpbGl0aWVzLnRzI0w1ODQtTDU5MFxuICBsaXRlcmFsWydzaW5nbGVRdW90ZSddID0gc2luZ2xlUXVvdGVzO1xuICByZXR1cm4gbGl0ZXJhbDtcbn1cblxuLyoqIEdldHMgdGhlIHN5bWJvbCB0aGF0IGNvbnRhaW5zIHRoZSB2YWx1ZSBkZWNsYXJhdGlvbiBvZiB0aGUgZ2l2ZW4gbm9kZS4gKi9cbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uU3ltYm9sT2ZOb2RlKG5vZGU6IHRzLk5vZGUsIGNoZWNrZXI6IHRzLlR5cGVDaGVja2VyKTogdHMuU3ltYm9sfHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN5bWJvbCA9IGNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihub2RlKTtcblxuICAvLyBTeW1ib2xzIGNhbiBiZSBhbGlhc2VzIG9mIHRoZSBkZWNsYXJhdGlvbiBzeW1ib2wuIGUuZy4gaW4gbmFtZWQgaW1wb3J0IHNwZWNpZmllcnMuXG4gIC8vIFdlIG5lZWQgdG8gcmVzb2x2ZSB0aGUgYWxpYXNlZCBzeW1ib2wgYmFjayB0byB0aGUgZGVjbGFyYXRpb24gc3ltYm9sLlxuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxuICBpZiAoc3ltYm9sICYmIChzeW1ib2wuZmxhZ3MgJiB0cy5TeW1ib2xGbGFncy5BbGlhcykgIT09IDApIHtcbiAgICByZXR1cm4gY2hlY2tlci5nZXRBbGlhc2VkU3ltYm9sKHN5bWJvbCk7XG4gIH1cbiAgcmV0dXJuIHN5bWJvbDtcbn1cblxuXG4vKiogVHJpZXMgdG8gcmVzb2x2ZSB0aGUgbmFtZSBvZiB0aGUgTWF0ZXJpYWwgbW9kdWxlIHRoYXQgYSBub2RlIGlzIGltcG9ydGVkIGZyb20uICovXG5mdW5jdGlvbiByZXNvbHZlTW9kdWxlTmFtZShub2RlOiB0cy5JZGVudGlmaWVyLCB0eXBlQ2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpIHtcbiAgLy8gR2V0IHRoZSBzeW1ib2wgZm9yIHRoZSBuYW1lZCBiaW5kaW5nIGVsZW1lbnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3QgZGV0ZXJtaW5lIHRoZVxuICAvLyB2YWx1ZSBkZWNsYXJhdGlvbiBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCBhcyB0eXBlcyBhcmUgbm90IG5lY2Vzc2FyaWx5XG4gIC8vIHNwZWNpZmljIHRvIGEgZ2l2ZW4gc2Vjb25kYXJ5IGVudHJ5LXBvaW50IChlLmcuIGV4cG9ydHMgd2l0aCB0aGUgdHlwZSBvZiBcInN0cmluZ1wiKVxuICAvLyB3b3VsZCByZXNvbHZlIHRvIHRoZSBtb2R1bGUgdHlwZXMgcHJvdmlkZWQgYnkgVHlwZVNjcmlwdCBpdHNlbGYuXG4gIGNvbnN0IHN5bWJvbCA9IGdldERlY2xhcmF0aW9uU3ltYm9sT2ZOb2RlKG5vZGUsIHR5cGVDaGVja2VyKTtcblxuICAvLyBJZiB0aGUgc3ltYm9sIGNhbid0IGJlIGZvdW5kLCBvciBubyBkZWNsYXJhdGlvbiBjb3VsZCBiZSBmb3VuZCB3aXRoaW5cbiAgLy8gdGhlIHN5bWJvbCwgYWRkIGZhaWx1cmUgdG8gcmVwb3J0IHRoYXQgdGhlIGdpdmVuIHN5bWJvbCBjYW4ndCBiZSBmb3VuZC5cbiAgaWYgKCFzeW1ib2wgfHxcbiAgICAgICEoc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24gfHwgKHN5bWJvbC5kZWNsYXJhdGlvbnMgJiYgc3ltYm9sLmRlY2xhcmF0aW9ucy5sZW5ndGggIT09IDApKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gVGhlIGZpbGVuYW1lIGZvciB0aGUgc291cmNlIGZpbGUgb2YgdGhlIG5vZGUgdGhhdCBjb250YWlucyB0aGVcbiAgLy8gZmlyc3QgZGVjbGFyYXRpb24gb2YgdGhlIHN5bWJvbC4gQWxsIHN5bWJvbCBkZWNsYXJhdGlvbnMgbXVzdCBiZVxuICAvLyBwYXJ0IG9mIGEgZGVmaW5pbmcgbm9kZSwgc28gcGFyZW50IGNhbiBiZSBhc3NlcnRlZCB0byBiZSBkZWZpbmVkLlxuICBjb25zdCByZXNvbHZlZE5vZGUgPSBzeW1ib2wudmFsdWVEZWNsYXJhdGlvbiB8fCBzeW1ib2wuZGVjbGFyYXRpb25zWzBdO1xuICBjb25zdCBzb3VyY2VGaWxlID0gcmVzb2x2ZWROb2RlLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZTtcblxuICAvLyBGaWxlIHRoZSBtb2R1bGUgdGhlIHN5bWJvbCBiZWxvbmdzIHRvIGZyb20gYSByZWdleCBtYXRjaCBvZiB0aGVcbiAgLy8gZmlsZW5hbWUuIFRoaXMgd2lsbCBhbHdheXMgbWF0Y2ggc2luY2Ugb25seSBcIkBhbmd1bGFyL21hdGVyaWFsXCJcbiAgLy8gZWxlbWVudHMgYXJlIGFuYWx5emVkLlxuICBjb25zdCBtYXRjaGVzID0gc291cmNlRmlsZS5tYXRjaChBTkdVTEFSX01BVEVSSUFMX0ZJTEVQQVRIX1JFR0VYKTtcbiAgcmV0dXJuIG1hdGNoZXMgPyBtYXRjaGVzWzFdIDogbnVsbDtcbn1cbiJdfQ==
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vjb25kYXJ5LWVudHJ5LXBvaW50cy1taWdyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbWF0ZXJpYWwvc2NoZW1hdGljcy9uZy11cGRhdGUvbWlncmF0aW9ucy9wYWNrYWdlLWltcG9ydHMtdjgvc2Vjb25kYXJ5LWVudHJ5LXBvaW50cy1taWdyYXRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7R0FNRzs7O0FBRUgsd0RBQWlFO0FBQ2pFLGlDQUFpQztBQUNqQyx1RkFBd0Y7QUFFeEYsTUFBTSwyQkFBMkIsR0FBRyxvREFBb0Q7SUFDcEYsNERBQTRELENBQUM7QUFFakUsTUFBTSxtQ0FBbUMsR0FBRyw4Q0FBOEM7SUFDdEYsNERBQTRELENBQUM7QUFFakU7OztHQUdHO0FBQ0gsTUFBTSwrQkFBK0IsR0FBRyxJQUFJLE1BQU0sQ0FBQyxHQUFHLDJDQUF1QixTQUFTLENBQUMsQ0FBQztBQUV4Rjs7O0dBR0c7QUFDSCxNQUFNLG9CQUFvQixHQUE2QixPQUFPLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUUxRjs7O0dBR0c7QUFDSCxNQUFhLDZCQUE4QixTQUFRLHNCQUFlO0lBQWxFOztRQUNFLFlBQU8sR0FBRyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7UUFFN0Isd0VBQXdFO1FBQ3hFLHNFQUFzRTtRQUN0RSxZQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsS0FBSywwQkFBYSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsYUFBYSxLQUFLLDBCQUFhLENBQUMsRUFBRSxDQUFDO0lBdUcvRixDQUFDO0lBckdDLFNBQVMsQ0FBQyxXQUFvQjtRQUM1QixvQ0FBb0M7UUFDcEMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUM7WUFDcEMsQ0FBQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ3hE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YjtJQUVELE1BQU0sVUFBVSxHQUFHLFlBQVksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFFekQsa0VBQWtFO0lBQ2xFLGtFQUFrRTtJQUNsRSx5QkFBeUI7SUFDekIsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0lBQ2xFLE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7TWlncmF0aW9uLCBUYXJnZXRWZXJzaW9ufSBmcm9tICdAYW5ndWxhci9jZGsvc2NoZW1hdGljcyc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICd0eXBlc2NyaXB0JztcbmltcG9ydCB7bWF0ZXJpYWxNb2R1bGVTcGVjaWZpZXJ9IGZyb20gJy4uLy4uLy4uL25nLXVwZGF0ZS90eXBlc2NyaXB0L21vZHVsZS1zcGVjaWZpZXJzJztcblxuY29uc3QgT05MWV9TVUJQQUNLQUdFX0ZBSUxVUkVfU1RSID0gYEltcG9ydGluZyBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWxcIiBpcyBkZXByZWNhdGVkLiBgICtcbiAgICBgSW5zdGVhZCBpbXBvcnQgZnJvbSB0aGUgZW50cnktcG9pbnQgdGhlIHN5bWJvbCBiZWxvbmdzIHRvLmA7XG5cbmNvbnN0IE5PX0lNUE9SVF9OQU1FRF9TWU1CT0xTX0ZBSUxVUkVfU1RSID0gYEltcG9ydHMgZnJvbSBBbmd1bGFyIE1hdGVyaWFsIHNob3VsZCBpbXBvcnQgYCArXG4gICAgYHNwZWNpZmljIHN5bWJvbHMgcmF0aGVyIHRoYW4gaW1wb3J0aW5nIHRoZSBlbnRpcmUgbGlicmFyeS5gO1xuXG4vKipcbiAqIFJlZ2V4IGZvciB0ZXN0aW5nIGZpbGUgcGF0aHMgYWdhaW5zdCB0byBkZXRlcm1pbmUgaWYgdGhlIGZpbGUgaXMgZnJvbSB0aGVcbiAqIEFuZ3VsYXIgTWF0ZXJpYWwgbGlicmFyeS5cbiAqL1xuY29uc3QgQU5HVUxBUl9NQVRFUklBTF9GSUxFUEFUSF9SRUdFWCA9IG5ldyBSZWdFeHAoYCR7bWF0ZXJpYWxNb2R1bGVTcGVjaWZpZXJ9LyguKj8pL2ApO1xuXG4vKipcbiAqIE1hcHBpbmcgb2YgTWF0ZXJpYWwgc3ltYm9sIG5hbWVzIHRvIHRoZWlyIG1vZHVsZSBuYW1lcy4gVXNlZCBhcyBhIGZhbGxiYWNrIGlmXG4gKiB3ZSBkaWRuJ3QgbWFuYWdlIHRvIHJlc29sdmUgdGhlIG1vZHVsZSBuYW1lIG9mIGEgc3ltYm9sIHVzaW5nIHRoZSB0eXBlIGNoZWNrZXIuXG4gKi9cbmNvbnN0IEVOVFJZX1BPSU5UX01BUFBJTkdTOiB7W25hbWU6IHN0cmluZ106IHN0cmluZ30gPSByZXF1aXJlKCcuL21hdGVyaWFsLXN5bWJvbHMuanNvbicpO1xuXG4vKipcbiAqIE1pZ3JhdGlvbiB0aGF0IHVwZGF0ZXMgaW1wb3J0cyB3aGljaCByZWZlciB0byB0aGUgcHJpbWFyeSBBbmd1bGFyIE1hdGVyaWFsXG4gKiBlbnRyeS1wb2ludCB0byB1c2UgdGhlIGFwcHJvcHJpYXRlIHNlY29uZGFyeSBlbnRyeSBwb2ludHMgKGUuZy4gQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uKS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNlY29uZGFyeUVudHJ5UG9pbnRzTWlncmF0aW9uIGV4dGVuZHMgTWlncmF0aW9uPG51bGw+IHtcbiAgcHJpbnRlciA9IHRzLmNyZWF0ZVByaW50ZXIoKTtcblxuICAvLyBPbmx5IGVuYWJsZSB0aGlzIHJ1bGUgaWYgdGhlIG1pZ3JhdGlvbiB0YXJnZXRzIHZlcnNpb24gOC4gVGhlIHByaW1hcnlcbiAgLy8gZW50cnktcG9pbnQgb2YgTWF0ZXJpYWwgaGFzIGJlZW4gbWFya2VkIGFzIGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiA4LlxuICBlbmFibGVkID0gdGhpcy50YXJnZXRWZXJzaW9uID09PSBUYXJnZXRWZXJzaW9uLlY4IHx8IHRoaXMudGFyZ2V0VmVyc2lvbiA9PT0gVGFyZ2V0VmVyc2lvbi5WOTtcblxuICB2aXNpdE5vZGUoZGVjbGFyYXRpb246IHRzLk5vZGUpOiB2b2lkIHtcbiAgICAvLyBPbmx5IGxvb2sgYXQgaW1wb3J0IGRlY2xhcmF0aW9ucy5cbiAgICBpZiAoIXRzLmlzSW1wb3J0RGVjbGFyYXRpb24oZGVjbGFyYXRpb24pIHx8XG4gICAgICAgICF0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKGRlY2xhcmF0aW9uLm1vZHVsZVNwZWNpZmllcikpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpbXBvcnRMb2NhdGlvbiA9IGRlY2xhcmF0aW9uLm1vZHVsZVNwZWNpZmllci50ZXh0O1xuICAgIC8vIElmIHRoZSBpbXBvcnQgbW9kdWxlIGlzIG5vdCBAYW5ndWxhci9tYXRlcmlhbCwgc2tpcCB0aGUgY2hlY2suXG4gICAgaWYgKGltcG9ydExvY2F0aW9uICE9PSBtYXRlcmlhbE1vZHVsZVNwZWNpZmllcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIG5vIGltcG9ydCBjbGF1c2UgaXMgZm91bmQsIG9yIG5vdGhpbmcgaXMgbmFtZWQgYXMgYSBiaW5kaW5nIGluIHRoZVxuICAgIC8vIGltcG9ydCwgYWRkIGZhaWx1cmUgc2F5aW5nIHRvIGltcG9ydCBzeW1ib2xzIGluIGNsYXVzZS5cbiAgICBpZiAoIWRlY2xhcmF0aW9uLmltcG9ydENsYXVzZSB8fCAhZGVjbGFyYXRpb24uaW1wb3J0Q2xhdXNlLm5hbWVkQmluZGluZ3MpIHtcbiAgICAgIHRoaXMuY3JlYXRlRmFpbHVyZUF0Tm9kZShkZWNsYXJhdGlvbiwgTk9fSU1QT1JUX05BTUVEX1NZTUJPTFNfRkFJTFVSRV9TVFIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEFsbCBuYW1lZCBiaW5kaW5ncyBpbiBpbXBvcnQgY2xhdXNlcyBtdXN0IGJlIG5hbWVkIHN5bWJvbHMsIG90aGVyd2lzZSBhZGRcbiAgICAvLyBmYWlsdXJlIHNheWluZyB0byBpbXBvcnQgc3ltYm9scyBpbiBjbGF1c2UuXG4gICAgaWYgKCF0cy5pc05hbWVkSW1wb3J0cyhkZWNsYXJhdGlvbi5pbXBvcnRDbGF1c2UubmFtZWRCaW5kaW5ncykpIHtcbiAgICAgIHRoaXMuY3JlYXRlRmFpbHVyZUF0Tm9kZShkZWNsYXJhdGlvbiwgTk9fSU1QT1JUX05BTUVEX1NZTUJPTFNfRkFJTFVSRV9TVFIpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIG5vIHN5bWJvbHMgYXJlIGluIHRoZSBuYW1lZCBiaW5kaW5ncyB0aGVuIGFkZCBmYWlsdXJlIHNheWluZyB0b1xuICAgIC8vIGltcG9ydCBzeW1ib2xzIGluIGNsYXVzZS5cbiAgICBpZiAoIWRlY2xhcmF0aW9uLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzLmVsZW1lbnRzLmxlbmd0aCkge1xuICAgICAgdGhpcy5jcmVhdGVGYWlsdXJlQXROb2RlKGRlY2xhcmF0aW9uLCBOT19JTVBPUlRfTkFNRURfU1lNQk9MU19GQUlMVVJFX1NUUik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gV2hldGhlciB0aGUgZXhpc3RpbmcgaW1wb3J0IGRlY2xhcmF0aW9uIGlzIHVzaW5nIGEgc2luZ2xlIHF1b3RlIG1vZHVsZSBzcGVjaWZpZXIuXG4gICAgY29uc3Qgc2luZ2xlUXVvdGVJbXBvcnQgPSBkZWNsYXJhdGlvbi5tb2R1bGVTcGVjaWZpZXIuZ2V0VGV4dCgpWzBdID09PSBgJ2A7XG5cbiAgICAvLyBNYXAgd2hpY2ggY29uc2lzdHMgb2Ygc2Vjb25kYXJ5IGVudHJ5LXBvaW50cyBhbmQgaW1wb3J0IHNwZWNpZmllcnMgd2hpY2ggYXJlIHVzZWRcbiAgICAvLyB3aXRoaW4gdGhlIGN1cnJlbnQgaW1wb3J0IGRlY2xhcmF0aW9uLlxuICAgIGNvbnN0IGltcG9ydE1hcCA9IG5ldyBNYXA8c3RyaW5nLCB0cy5JbXBvcnRTcGVjaWZpZXJbXT4oKTtcblxuICAgIC8vIERldGVybWluZSB0aGUgc3VicGFja2FnZSBlYWNoIHN5bWJvbCBpbiB0aGUgbmFtZWRCaW5kaW5nIGNvbWVzIGZyb20uXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGRlY2xhcmF0aW9uLmltcG9ydENsYXVzZS5uYW1lZEJpbmRpbmdzLmVsZW1lbnRzKSB7XG4gICAgICBjb25zdCBlbGVtZW50TmFtZSA9IGVsZW1lbnQucHJvcGVydHlOYW1lID8gZWxlbWVudC5wcm9wZXJ0eU5hbWUgOiBlbGVtZW50Lm5hbWU7XG5cbiAgICAgIC8vIFRyeSB0byByZXNvbHZlIHRoZSBtb2R1bGUgbmFtZSB2aWEgdGhlIHR5cGUgY2hlY2tlciwgYW5kIGlmIGl0IGZhaWxzLCBmYWxsIGJhY2sgdG9cbiAgICAgIC8vIHJlc29sdmluZyBpdCBmcm9tIG91ciBsaXN0IG9mIHN5bWJvbCB0byBlbnRyeSBwb2ludCBtYXBwaW5ncy4gVXNpbmcgdGhlIHR5cGUgY2hlY2tlciBpc1xuICAgICAgLy8gbW9yZSBhY2N1cmF0ZSBhbmQgZG9lc24ndCByZXF1aXJlIHVzIHRvIGtlZXAgYSBsaXN0IG9mIHN5bWJvbHMsIGJ1dCBpdCB3b24ndCB3b3JrIGlmXG4gICAgICAvLyB0aGUgc3ltYm9scyBkb24ndCBleGlzdCBhbnltb3JlIChlLmcuIGFmdGVyIHdlIHJlbW92ZSB0aGUgdG9wLWxldmVsIEBhbmd1bGFyL21hdGVyaWFsKS5cbiAgICAgIGNvbnN0IG1vZHVsZU5hbWUgPSByZXNvbHZlTW9kdWxlTmFtZShlbGVtZW50TmFtZSwgdGhpcy50eXBlQ2hlY2tlcikgfHxcbiAgICAgICAgICBFTlRSWV9QT0lOVF9NQVBQSU5HU1tlbGVtZW50TmFtZS50ZXh0XSB8fCBudWxsO1xuXG4gICAgICBpZiAoIW1vZHVsZU5hbWUpIHtcbiAgICAgICAgdGhpcy5jcmVhdGVGYWlsdXJlQXROb2RlKFxuICAgICAgICAgIGVsZW1lbnQsIGBcIiR7ZWxlbWVudC5nZXRUZXh0KCl9XCIgd2FzIG5vdCBmb3VuZCBpbiB0aGUgTWF0ZXJpYWwgbGlicmFyeS5gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAgIC8vIFRoZSBtb2R1bGUgbmFtZSB3aGVyZSB0aGUgc3ltYm9sIGlzIGRlZmluZWQgZS5nLiBjYXJkLCBkaWFsb2cuIFRoZVxuICAgICAgICAvLyBmaXJzdCBjYXB0dXJlIGdyb3VwIGlzIGNvbnRhaW5zIHRoZSBtb2R1bGUgbmFtZS5cbiAgICAgICAgaWYgKGltcG9ydE1hcC5oYXMobW9kdWxlTmFtZSkpIHtcbiAgICAgICAgICBpbXBvcnRNYXAuZ2V0KG1vZHVsZU5hbWUpIS5wdXNoKGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGltcG9ydE1hcC5zZXQobW9kdWxlTmFtZSwgW2VsZW1lbnRdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRyYW5zZm9ybXMgdGhlIGltcG9ydCBkZWNsYXJhdGlvbiBpbnRvIG11bHRpcGxlIGltcG9ydCBkZWNsYXJhdGlvbnMgdGhhdCBpbXBvcnRcbiAgICAvLyB0aGUgZ2l2ZW4gc3ltYm9scyBmcm9tIHRoZSBpbmRpdmlkdWFsIHNlY29uZGFyeSBlbnRyeS1wb2ludHMuIEZvciBleGFtcGxlOlxuICAgIC8vIGltcG9ydCB7TWF0Q2FyZE1vZHVsZSwgTWF0Q2FyZFRpdGxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jYXJkJztcbiAgICAvLyBpbXBvcnQge01hdFJhZGlvTW9kdWxlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9yYWRpbyc7XG4gICAgY29uc3QgbmV3SW1wb3J0U3RhdGVtZW50cyA9XG4gICAgICAgIEFycmF5LmZyb20oaW1wb3J0TWFwLmVudHJpZXMoKSlcbiAgICAgICAgICAgIC5zb3J0KClcbiAgICAgICAgICAgIC5tYXAoKFtuYW1lLCBlbGVtZW50c10pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3SW1wb3J0ID0gdHMuY3JlYXRlSW1wb3J0RGVjbGFyYXRpb24oXG4gICAgICAgICAgICAgICAgICB1bmRlZmluZWQsIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHRzLmNyZWF0ZUltcG9ydENsYXVzZSh1bmRlZmluZWQsIHRzLmNyZWF0ZU5hbWVkSW1wb3J0cyhlbGVtZW50cykpLFxuICAgICAgICAgICAgICAgICAgY3JlYXRlU3RyaW5nTGl0ZXJhbChgJHttYXRlcmlhbE1vZHVsZVNwZWNpZmllcn0vJHtuYW1lfWAsIHNpbmdsZVF1b3RlSW1wb3J0KSk7XG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnByaW50ZXIucHJpbnROb2RlKFxuICAgICAgICAgICAgICAgICAgdHMuRW1pdEhpbnQuVW5zcGVjaWZpZWQsIG5ld0ltcG9ydCwgZGVjbGFyYXRpb24uZ2V0U291cmNlRmlsZSgpKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuam9pbignXFxuJyk7XG5cbiAgICAvLyBXaXRob3V0IGFueSBpbXBvcnQgc3RhdGVtZW50cyB0aGF0IHdlcmUgZ2VuZXJhdGVkLCB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhpcyB3YXMgYW4gZW1wdHlcbiAgICAvLyBpbXBvcnQgZGVjbGFyYXRpb24uIFdlIHN0aWxsIHdhbnQgdG8gYWRkIGEgZmFpbHVyZSBpbiBvcmRlciB0byBtYWtlIGRldmVsb3BlcnMgYXdhcmUgdGhhdFxuICAgIC8vIGltcG9ydGluZyBmcm9tIFwiQGFuZ3VsYXIvbWF0ZXJpYWxcIiBpcyBkZXByZWNhdGVkLlxuICAgIGlmICghbmV3SW1wb3J0U3RhdGVtZW50cykge1xuICAgICAgdGhpcy5jcmVhdGVGYWlsdXJlQXROb2RlKGRlY2xhcmF0aW9uLm1vZHVsZVNwZWNpZmllciwgT05MWV9TVUJQQUNLQUdFX0ZBSUxVUkVfU1RSKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuZmlsZVN5c3RlbS5yZXNvbHZlKFxuICAgICAgICBkZWNsYXJhdGlvbi5tb2R1bGVTcGVjaWZpZXIuZ2V0U291cmNlRmlsZSgpLmZpbGVOYW1lKTtcbiAgICBjb25zdCByZWNvcmRlciA9IHRoaXMuZmlsZVN5c3RlbS5lZGl0KGZpbGVQYXRoKTtcblxuICAgIC8vIFBlcmZvcm0gdGhlIHJlcGxhY2VtZW50IHRoYXQgc3dpdGNoZXMgdGhlIHByaW1hcnkgZW50cnktcG9pbnQgaW1wb3J0IHRvXG4gICAgLy8gdGhlIGluZGl2aWR1YWwgc2Vjb25kYXJ5IGVudHJ5LXBvaW50IGltcG9ydHMuXG4gICAgcmVjb3JkZXIucmVtb3ZlKGRlY2xhcmF0aW9uLmdldFN0YXJ0KCksIGRlY2xhcmF0aW9uLmdldFdpZHRoKCkpO1xuICAgIHJlY29yZGVyLmluc2VydFJpZ2h0KGRlY2xhcmF0aW9uLmdldFN0YXJ0KCksIG5ld0ltcG9ydFN0YXRlbWVudHMpO1xuICB9XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0cmluZyBsaXRlcmFsIGZyb20gdGhlIHNwZWNpZmllZCB0ZXh0LlxuICogQHBhcmFtIHRleHQgVGV4dCBvZiB0aGUgc3RyaW5nIGxpdGVyYWwuXG4gKiBAcGFyYW0gc2luZ2xlUXVvdGVzIFdoZXRoZXIgc2luZ2xlIHF1b3RlcyBzaG91bGQgYmUgdXNlZCB3aGVuIHByaW50aW5nIHRoZSBsaXRlcmFsIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVN0cmluZ0xpdGVyYWwodGV4dDogc3RyaW5nLCBzaW5nbGVRdW90ZXM6IGJvb2xlYW4pOiB0cy5TdHJpbmdMaXRlcmFsIHtcbiAgY29uc3QgbGl0ZXJhbCA9IHRzLmNyZWF0ZVN0cmluZ0xpdGVyYWwodGV4dCk7XG4gIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2Jsb2IvbWFzdGVyL3NyYy9jb21waWxlci91dGlsaXRpZXMudHMjTDU4NC1MNTkwXG4gIGxpdGVyYWxbJ3NpbmdsZVF1b3RlJ10gPSBzaW5nbGVRdW90ZXM7XG4gIHJldHVybiBsaXRlcmFsO1xufVxuXG4vKiogR2V0cyB0aGUgc3ltYm9sIHRoYXQgY29udGFpbnMgdGhlIHZhbHVlIGRlY2xhcmF0aW9uIG9mIHRoZSBnaXZlbiBub2RlLiAqL1xuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25TeW1ib2xPZk5vZGUobm9kZTogdHMuTm9kZSwgY2hlY2tlcjogdHMuVHlwZUNoZWNrZXIpOiB0cy5TeW1ib2x8dW5kZWZpbmVkIHtcbiAgY29uc3Qgc3ltYm9sID0gY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKG5vZGUpO1xuXG4gIC8vIFN5bWJvbHMgY2FuIGJlIGFsaWFzZXMgb2YgdGhlIGRlY2xhcmF0aW9uIHN5bWJvbC4gZS5nLiBpbiBuYW1lZCBpbXBvcnQgc3BlY2lmaWVycy5cbiAgLy8gV2UgbmVlZCB0byByZXNvbHZlIHRoZSBhbGlhc2VkIHN5bWJvbCBiYWNrIHRvIHRoZSBkZWNsYXJhdGlvbiBzeW1ib2wuXG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1iaXR3aXNlXG4gIGlmIChzeW1ib2wgJiYgKHN5bWJvbC5mbGFncyAmIHRzLlN5bWJvbEZsYWdzLkFsaWFzKSAhPT0gMCkge1xuICAgIHJldHVybiBjaGVja2VyLmdldEFsaWFzZWRTeW1ib2woc3ltYm9sKTtcbiAgfVxuICByZXR1cm4gc3ltYm9sO1xufVxuXG5cbi8qKiBUcmllcyB0byByZXNvbHZlIHRoZSBuYW1lIG9mIHRoZSBNYXRlcmlhbCBtb2R1bGUgdGhhdCBhIG5vZGUgaXMgaW1wb3J0ZWQgZnJvbS4gKi9cbmZ1bmN0aW9uIHJlc29sdmVNb2R1bGVOYW1lKG5vZGU6IHRzLklkZW50aWZpZXIsIHR5cGVDaGVja2VyOiB0cy5UeXBlQ2hlY2tlcik6IHN0cmluZ3xudWxsIHtcbiAgLy8gR2V0IHRoZSBzeW1ib2wgZm9yIHRoZSBuYW1lZCBiaW5kaW5nIGVsZW1lbnQuIE5vdGUgdGhhdCB3ZSBjYW5ub3QgZGV0ZXJtaW5lIHRoZVxuICAvLyB2YWx1ZSBkZWNsYXJhdGlvbiBiYXNlZCBvbiB0aGUgdHlwZSBvZiB0aGUgZWxlbWVudCBhcyB0eXBlcyBhcmUgbm90IG5lY2Vzc2FyaWx5XG4gIC8vIHNwZWNpZmljIHRvIGEgZ2l2ZW4gc2Vjb25kYXJ5IGVudHJ5LXBvaW50IChlLmcuIGV4cG9ydHMgd2l0aCB0aGUgdHlwZSBvZiBcInN0cmluZ1wiKVxuICAvLyB3b3VsZCByZXNvbHZlIHRvIHRoZSBtb2R1bGUgdHlwZXMgcHJvdmlkZWQgYnkgVHlwZVNjcmlwdCBpdHNlbGYuXG4gIGNvbnN0IHN5bWJvbCA9IGdldERlY2xhcmF0aW9uU3ltYm9sT2ZOb2RlKG5vZGUsIHR5cGVDaGVja2VyKTtcblxuICAvLyBJZiB0aGUgc3ltYm9sIGNhbid0IGJlIGZvdW5kLCBvciBubyBkZWNsYXJhdGlvbiBjb3VsZCBiZSBmb3VuZCB3aXRoaW5cbiAgLy8gdGhlIHN5bWJvbCwgYWRkIGZhaWx1cmUgdG8gcmVwb3J0IHRoYXQgdGhlIGdpdmVuIHN5bWJvbCBjYW4ndCBiZSBmb3VuZC5cbiAgaWYgKCFzeW1ib2wgfHxcbiAgICAgICEoc3ltYm9sLnZhbHVlRGVjbGFyYXRpb24gfHwgKHN5bWJvbC5kZWNsYXJhdGlvbnMgJiYgc3ltYm9sLmRlY2xhcmF0aW9ucy5sZW5ndGggIT09IDApKSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gVGhlIGZpbGVuYW1lIGZvciB0aGUgc291cmNlIGZpbGUgb2YgdGhlIG5vZGUgdGhhdCBjb250YWlucyB0aGVcbiAgLy8gZmlyc3QgZGVjbGFyYXRpb24gb2YgdGhlIHN5bWJvbC4gQWxsIHN5bWJvbCBkZWNsYXJhdGlvbnMgbXVzdCBiZVxuICAvLyBwYXJ0IG9mIGEgZGVmaW5pbmcgbm9kZSwgc28gcGFyZW50IGNhbiBiZSBhc3NlcnRlZCB0byBiZSBkZWZpbmVkLlxuICBjb25zdCByZXNvbHZlZE5vZGUgPSBzeW1ib2wudmFsdWVEZWNsYXJhdGlvbiB8fCBzeW1ib2wuZGVjbGFyYXRpb25zPy5bMF07XG5cbiAgaWYgKHJlc29sdmVkTm9kZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBzb3VyY2VGaWxlID0gcmVzb2x2ZWROb2RlLmdldFNvdXJjZUZpbGUoKS5maWxlTmFtZTtcblxuICAvLyBGaWxlIHRoZSBtb2R1bGUgdGhlIHN5bWJvbCBiZWxvbmdzIHRvIGZyb20gYSByZWdleCBtYXRjaCBvZiB0aGVcbiAgLy8gZmlsZW5hbWUuIFRoaXMgd2lsbCBhbHdheXMgbWF0Y2ggc2luY2Ugb25seSBcIkBhbmd1bGFyL21hdGVyaWFsXCJcbiAgLy8gZWxlbWVudHMgYXJlIGFuYWx5emVkLlxuICBjb25zdCBtYXRjaGVzID0gc291cmNlRmlsZS5tYXRjaChBTkdVTEFSX01BVEVSSUFMX0ZJTEVQQVRIX1JFR0VYKTtcbiAgcmV0dXJuIG1hdGNoZXMgPyBtYXRjaGVzWzFdIDogbnVsbDtcbn1cbiJdfQ==