@scion/workbench 18.0.0-beta.2 → 18.0.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/esm2022/lib/common/objects.util.mjs +7 -1
  2. package/esm2022/lib/common/uid.util.mjs +22 -0
  3. package/esm2022/lib/content-projection/content-projection.directive.mjs +16 -17
  4. package/esm2022/lib/dialog//311/265workbench-dialog.mjs +3 -3
  5. package/esm2022/lib/filter-field/filter-field.component.mjs +5 -5
  6. package/esm2022/lib/layout/grid-element/grid-element.component.mjs +6 -16
  7. package/esm2022/lib/layout/migration/model/workbench-layout-migration-v5.model.mjs +11 -0
  8. package/esm2022/lib/layout/migration/workbench-layout-migration-v3.service.mjs +2 -2
  9. package/esm2022/lib/layout/migration/workbench-layout-migration-v5.service.mjs +67 -0
  10. package/esm2022/lib/layout/stringifier.mjs +70 -0
  11. package/esm2022/lib/layout/workbench-layout.model.mjs +1 -1
  12. package/esm2022/lib/layout/workench-layout-serializer.service.mjs +16 -25
  13. package/esm2022/lib/layout//311/265workbench-layout.mjs +14 -18
  14. package/esm2022/lib/microfrontend-platform/common/microfrontend.util.mjs +18 -1
  15. package/esm2022/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.mjs +28 -21
  16. package/esm2022/lib/microfrontend-platform/initialization/workbench-host-manifest-interceptor.service.mjs +11 -1
  17. package/esm2022/lib/microfrontend-platform/manifest-object-cache.service.mjs +63 -0
  18. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog-capability-validator.interceptor.mjs +5 -4
  19. package/esm2022/lib/microfrontend-platform/microfrontend-dialog/microfrontend-dialog.component.mjs +2 -2
  20. package/esm2022/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.mjs +3 -3
  21. package/esm2022/lib/microfrontend-platform/microfrontend-host-popup/microfrontend-host-popup.component.mjs +3 -2
  22. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box-capability-validator.interceptor.mjs +3 -2
  23. package/esm2022/lib/microfrontend-platform/microfrontend-message-box/microfrontend-message-box.component.mjs +2 -2
  24. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.mjs +39 -0
  25. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.mjs +120 -0
  26. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.mjs +55 -0
  27. package/esm2022/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.mjs +19 -0
  28. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup-capability-validator.interceptor.mjs +4 -3
  29. package/esm2022/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.mjs +2 -13
  30. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.mjs +1 -16
  31. package/esm2022/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.mjs +42 -17
  32. package/esm2022/lib/microfrontend-platform/public_api.mjs +2 -1
  33. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.mjs +5 -4
  34. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-intent-handler.interceptor.mjs +7 -4
  35. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-routes.mjs +26 -4
  36. package/esm2022/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.mjs +32 -0
  37. package/esm2022/lib/microfrontend-platform/workbench-microfrontend-support.mjs +23 -5
  38. package/esm2022/lib/page-not-found/format-url.pipe.mjs +2 -2
  39. package/esm2022/lib/page-not-found/page-not-found.component.mjs +3 -3
  40. package/esm2022/lib/part/part.component.mjs +3 -5
  41. package/esm2022/lib/perspective/workbench-grid-merger.service.mjs +3 -3
  42. package/esm2022/lib/perspective/workbench-perspective.model.mjs +1 -1
  43. package/esm2022/lib/perspective/workbench-perspective.service.mjs +61 -51
  44. package/esm2022/lib/perspective//311/265workbench-perspective.model.mjs +11 -2
  45. package/esm2022/lib/popup/popup.config.mjs +3 -3
  46. package/esm2022/lib/portal/wb-component-portal.mjs +3 -1
  47. package/esm2022/lib/routing/public_api.mjs +1 -2
  48. package/esm2022/lib/routing/routing.model.mjs +1 -1
  49. package/esm2022/lib/routing/workbench-auxiliary-route-installer.service.mjs +94 -0
  50. package/esm2022/lib/routing/workbench-layout-differ.mjs +3 -10
  51. package/esm2022/lib/routing/workbench-url-observer.service.mjs +31 -27
  52. package/esm2022/lib/routing/workbench-view-outlet-differ.mjs +58 -0
  53. package/esm2022/lib/routing//311/265workbench-router.service.mjs +2 -2
  54. package/esm2022/lib/view/view-move-handler.service.mjs +5 -5
  55. package/esm2022/lib/view/view.component.mjs +38 -25
  56. package/esm2022/lib/view/workbench-view-route-guards.mjs +2 -2
  57. package/esm2022/lib/view//311/265workbench-view.model.mjs +25 -19
  58. package/esm2022/lib/view-dnd/grid-drop-targets.util.mjs +2 -2
  59. package/esm2022/lib/workbench-config.mjs +1 -1
  60. package/esm2022/lib/workbench-id.mjs +3 -3
  61. package/esm2022/lib/workbench.component.mjs +2 -2
  62. package/esm2022/lib/workbench.constants.mjs +1 -5
  63. package/esm2022/lib/workbench.provider.mjs +3 -9
  64. package/fesm2022/scion-workbench.mjs +855 -326
  65. package/fesm2022/scion-workbench.mjs.map +1 -1
  66. package/lib/common/objects.util.d.ts +4 -0
  67. package/lib/common/uid.util.d.ts +9 -0
  68. package/lib/dialog//311/265workbench-dialog.d.ts +1 -1
  69. package/lib/filter-field/filter-field.component.d.ts +1 -1
  70. package/lib/layout/grid-element/grid-element.component.d.ts +1 -8
  71. package/lib/layout/migration/model/workbench-layout-migration-v5.model.d.ts +32 -0
  72. package/lib/layout/migration/workbench-layout-migration-v5.service.d.ts +12 -0
  73. package/lib/layout/stringifier.d.ts +26 -0
  74. package/lib/layout/workbench-layout.model.d.ts +3 -3
  75. package/lib/layout/workench-layout-serializer.service.d.ts +13 -15
  76. package/lib/layout//311/265workbench-layout.d.ts +3 -3
  77. package/lib/microfrontend-platform/common/microfrontend.util.d.ts +5 -1
  78. package/lib/microfrontend-platform/initialization/microfrontend-platform-initializer.service.d.ts +7 -3
  79. package/lib/microfrontend-platform/manifest-object-cache.service.d.ts +33 -0
  80. package/lib/microfrontend-platform/microfrontend-host-message-box/text-message/text-message.component.d.ts +1 -1
  81. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-capability-validator.interceptor.d.ts +10 -0
  82. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-installer.service.d.ts +24 -0
  83. package/lib/microfrontend-platform/microfrontend-perspective/microfrontend-perspective-intent-handler.interceptor.d.ts +20 -0
  84. package/lib/microfrontend-platform/microfrontend-perspective/workbench-perspective-data.d.ts +9 -0
  85. package/lib/microfrontend-platform/microfrontend-popup/microfrontend-popup.component.d.ts +0 -4
  86. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view-command-handler.service.d.ts +0 -4
  87. package/lib/microfrontend-platform/microfrontend-view/microfrontend-view.component.d.ts +7 -2
  88. package/lib/microfrontend-platform/public_api.d.ts +1 -0
  89. package/lib/microfrontend-platform/routing/microfrontend-view-capability-validator.interceptor.d.ts +1 -1
  90. package/lib/microfrontend-platform/routing/microfrontend-view-routes.d.ts +9 -2
  91. package/lib/microfrontend-platform/stable-capability-id-assigner.interceptor.d.ts +11 -0
  92. package/lib/perspective/workbench-perspective.model.d.ts +16 -17
  93. package/lib/perspective/workbench-perspective.service.d.ts +15 -7
  94. package/lib/perspective//311/265workbench-perspective.model.d.ts +4 -0
  95. package/lib/routing/public_api.d.ts +0 -1
  96. package/lib/routing/{workbench-auxiliary-routes-registrator.service.d.ts → workbench-auxiliary-route-installer.service.d.ts} +3 -3
  97. package/lib/routing/workbench-layout-differ.d.ts +1 -2
  98. package/lib/routing/workbench-url-observer.service.d.ts +5 -3
  99. package/lib/routing/workbench-view-outlet-differ.d.ts +32 -0
  100. package/lib/view/view.component.d.ts +8 -7
  101. package/lib/view//311/265workbench-view.model.d.ts +11 -7
  102. package/lib/workbench-config.d.ts +2 -2
  103. package/lib/workbench.constants.d.ts +0 -5
  104. package/package.json +3 -3
  105. package/esm2022/lib/common/uuid.util.mjs +0 -17
  106. package/esm2022/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.mjs +0 -41
  107. package/esm2022/lib/routing/workbench-auxiliary-routes-registrator.service.mjs +0 -94
  108. package/lib/common/uuid.util.d.ts +0 -8
  109. package/lib/microfrontend-platform/routing/microfrontend-view-capability-id-assigner.interceptor.d.ts +0 -10
@@ -8,4 +8,4 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  export {};
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JvdXRpbmcvcm91dGluZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtOYXZpZ2F0aW9uRXh0cmFzLCBVcmxTZWdtZW50fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dH0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dERpZmZ9IGZyb20gJy4vd29ya2JlbmNoLWxheW91dC1kaWZmZXInO1xuaW1wb3J0IHtXb3JrYmVuY2hQb3B1cERpZmZ9IGZyb20gJy4vd29ya2JlbmNoLXBvcHVwLWRpZmZlcic7XG5pbXBvcnQge1dvcmtiZW5jaERpYWxvZ0RpZmZ9IGZyb20gJy4vd29ya2JlbmNoLWRpYWxvZy1kaWZmZXInO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7V29ya2JlbmNoTWVzc2FnZUJveERpZmZ9IGZyb20gJy4vd29ya2JlbmNoLW1lc3NhZ2UtYm94LWRpZmZlcic7XG5cbi8qKlxuICogT3B0aW9ucyB0byBjb250cm9sIHRoZSBuYXZpZ2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtiZW5jaE5hdmlnYXRpb25FeHRyYXMgZXh0ZW5kcyBOYXZpZ2F0aW9uRXh0cmFzIHtcbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoZXJlIHRvIG9wZW4gdGhlIHZpZXcuIERlZmF1bHQgaXMgYGF1dG9gLlxuICAgKlxuICAgKiBPbmUgb2Y6XG4gICAqIC0gJ2F1dG8nOiAgIE5hdmlnYXRlcyBleGlzdGluZyB2aWV3cyB0aGF0IG1hdGNoIHRoZSBwYXRoLCBvciBvcGVucyBhIG5ldyB2aWV3IG90aGVyd2lzZS4gTWF0cml4IHBhcmFtcyBkbyBub3QgYWZmZWN0IHZpZXcgcmVzb2x1dGlvbi5cbiAgICogLSAnYmxhbmsnOiAgTmF2aWdhdGVzIGluIGEgbmV3IHZpZXcuXG4gICAqIC0gPHZpZXdJZD46IE5hdmlnYXRlcyB0aGUgc3BlY2lmaWVkIHZpZXcuIElmIGFscmVhZHkgb3BlbmVkLCByZXBsYWNlcyBpdCwgb3Igb3BlbnMgYSBuZXcgdmlldyBvdGhlcndpc2UuXG4gICAqL1xuICB0YXJnZXQ/OiBWaWV3SWQgfCBzdHJpbmcgfCAnYmxhbmsnIHwgJ2F1dG8nO1xuICAvKipcbiAgICogQ29udHJvbHMgd2hpY2ggcGFydCB0byBuYXZpZ2F0ZSB2aWV3cyBpbi5cbiAgICpcbiAgICogSWYgdGFyZ2V0IGlzIGBibGFua2AsIG9wZW5zIHRoZSB2aWV3IGluIHRoZSBzcGVjaWZpZWQgcGFydC5cbiAgICogSWYgdGFyZ2V0IGlzIGBhdXRvYCwgbmF2aWdhdGVzIG1hdGNoaW5nIHZpZXdzIGluIHRoZSBzcGVjaWZpZWQgcGFydCwgb3Igb3BlbnMgYSBuZXcgdmlldyBpbiB0aGF0IHBhcnQgb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBJZiB0aGUgc3BlY2lmaWVkIHBhcnQgaXMgbm90IGluIHRoZSBsYXlvdXQsIG9wZW5zIHRoZSB2aWV3IGluIHRoZSBhY3RpdmUgcGFydCwgd2l0aCB0aGUgYWN0aXZlIHBhcnQgb2YgdGhlIG1haW4gYXJlYSB0YWtpbmcgcHJlY2VkZW5jZS5cbiAgICovXG4gIHBhcnRJZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFNldHMgYSBoaW50IHRvIGNvbnRyb2wgbmF2aWdhdGlvbiwgZS5nLiwgZm9yIHVzZSBpbiBhIGBDYW5NYXRjaGAgZ3VhcmQgdG8gZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIHJvdXRlcyB3aXRoIGFuIGlkZW50aWNhbCBwYXRoLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgdmlld3Mgb2YgdGhlIGluaXRpYWwgbGF5b3V0IG9yIGEgcGVyc3BlY3RpdmUgYXJlIHVzdWFsbHkgbmF2aWdhdGVkIHRvIHRoZSBlbXB0eSBwYXRoIHJvdXRlIHRvIGF2b2lkIGNsdXR0ZXJpbmcgdGhlIFVSTCxcbiAgICogcmVxdWlyaW5nIGEgbmF2aWdhdGlvbiBoaW50IHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiB0aGUgcm91dGVzLiBTZWUge0BsaW5rIGNhbk1hdGNoV29ya2JlbmNoVmlld30gZm9yIGFuIGV4YW1wbGUuXG4gICAqXG4gICAqIExpa2UgdGhlIHBhdGgsIGEgaGludCBhZmZlY3RzIHZpZXcgcmVzb2x1dGlvbi4gSWYgc2V0LCB0aGUgcm91dGVyIHdpbGwgb25seSBuYXZpZ2F0ZSB2aWV3cyB3aXRoIGFuIGVxdWl2YWxlbnQgaGludCwgb3IgaWYgbm90IHNldCwgdmlld3Mgd2l0aG91dCBhIGhpbnQuXG4gICAqXG4gICAqIEBzZWUgY2FuTWF0Y2hXb3JrYmVuY2hWaWV3XG4gICAqL1xuICBoaW50Pzogc3RyaW5nO1xuICAvKipcbiAgICogSW5zdHJ1Y3RzIHRoZSByb3V0ZXIgdG8gYWN0aXZhdGUgdGhlIHZpZXcuIERlZmF1bHQgaXMgYHRydWVgLlxuICAgKi9cbiAgYWN0aXZhdGU/OiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXJlIHRvIGluc2VydCB0aGUgdmlldyBpbnRvIHRoZSB0YWIgYmFyLiBIYXMgbm8gZWZmZWN0IGlmIG5hdmlnYXRpbmcgYW4gZXhpc3Rpbmcgdmlldy4gRGVmYXVsdCBpcyBhZnRlciB0aGUgYWN0aXZlIHZpZXcuXG4gICAqL1xuICBwb3NpdGlvbj86IG51bWJlciB8ICdzdGFydCcgfCAnZW5kJyB8ICdiZWZvcmUtYWN0aXZlLXZpZXcnIHwgJ2FmdGVyLWFjdGl2ZS12aWV3JztcbiAgLyoqXG4gICAqIEFzc29jaWF0ZXMgYXJiaXRyYXJ5IHN0YXRlIHdpdGggYSB2aWV3IG5hdmlnYXRpb24uXG4gICAqXG4gICAqIE5hdmlnYXRpb25hbCBzdGF0ZSBpcyBzdG9yZWQgaW4gdGhlIGJyb3dzZXIncyBzZXNzaW9uIGhpc3RvcnksIHN1cHBvcnRpbmcgYmFjay9mb3J3YXJkIG5hdmlnYXRpb24sIGJ1dCBpcyBsb3N0IG9uIHBhZ2UgcmVsb2FkLlxuICAgKiBUaGVyZWZvcmUsIGEgdmlldyBtdXN0IGJlIGFibGUgdG8gcmVzdG9yZSBpdHMgc3RhdGUgd2l0aG91dCByZWx5aW5nIG9uIG5hdmlnYXRpb25hbCBzdGF0ZS5cbiAgICpcbiAgICogTmF2aWdhdGlvbmFsIHN0YXRlIGNhbiBiZSByZWFkIGZyb20ge0BsaW5rIFdvcmtiZW5jaFZpZXcuc3RhdGV9IG9yIHRoZSBicm93c2VyJ3Mgc2Vzc2lvbiBoaXN0b3J5IHZpYSBgaGlzdG9yeS5zdGF0ZWAuXG4gICAqL1xuICBzdGF0ZT86IFZpZXdTdGF0ZTtcbiAgLyoqXG4gICAqIENsb3NlcyB2aWV3cyB0aGF0IG1hdGNoIHRoZSBzcGVjaWZpZWQgcGF0aCBhbmQgbmF2aWdhdGlvbiBoaW50LiBNYXRyaXggcGFyYW1ldGVycyBkbyBub3QgYWZmZWN0IHZpZXcgcmVzb2x1dGlvbi5cbiAgICogVGhlIHBhdGggc3VwcG9ydHMgdGhlIGFzdGVyaXNrIHdpbGRjYXJkIHNlZ21lbnQgKGAqYCkgdG8gbWF0Y2ggdmlld3Mgd2l0aCBhbnkgdmFsdWUgaW4gYSBzZWdtZW50LlxuICAgKiBUbyBjbG9zZSBhIHNwZWNpZmljIHZpZXcsIHNldCBhIHZpZXcgdGFyZ2V0IGluc3RlYWQgb2YgYSBwYXRoLlxuICAgKi9cbiAgY2xvc2U/OiBib29sZWFuO1xuICAvKipcbiAgICogU3BlY2lmaWVzIENTUyBjbGFzcyhlcykgdG8gYWRkIHRvIHRoZSB2aWV3LCBlLmcuLCB0byBsb2NhdGUgdGhlIHZpZXcgaW4gdGVzdHMuXG4gICAqL1xuICBjc3NDbGFzcz86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENvbnRleHR1YWwgZGF0YSBvZiBhIHdvcmtiZW5jaCBuYXZpZ2F0aW9uIGF2YWlsYWJsZSBpbiB0aGUgcm91dGVyIGR1cmluZyBuYXZpZ2F0aW9uLlxuICpcbiAqIEBzZWUgV29ya2JlbmNoVXJsT2JzZXJ2ZXJcbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrYmVuY2hOYXZpZ2F0aW9uQ29udGV4dCB7XG4gIC8qKlxuICAgKiBMYXlvdXQgdG8gYmUgYXBwbGllZCBhZnRlciBzdWNjZXNzZnVsIG5hdmlnYXRpb24uXG4gICAqL1xuICBsYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0O1xuICAvKipcbiAgICogV29ya2JlbmNoIGxheW91dCBlbGVtZW50cyBhZGRlZCBvciByZW1vdmVkIGJ5IHRoZSBjdXJyZW50IG5hdmlnYXRpb24uXG4gICAqL1xuICBsYXlvdXREaWZmOiBXb3JrYmVuY2hMYXlvdXREaWZmO1xuICAvKipcbiAgICogUG9wdXBzIGFkZGVkIG9yIHJlbW92ZWQgYnkgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbi5cbiAgICovXG4gIHBvcHVwRGlmZjogV29ya2JlbmNoUG9wdXBEaWZmO1xuICAvKipcbiAgICogRGlhbG9ncyBhZGRlZCBvciByZW1vdmVkIGJ5IHRoZSBjdXJyZW50IG5hdmlnYXRpb24uXG4gICAqL1xuICBkaWFsb2dEaWZmOiBXb3JrYmVuY2hEaWFsb2dEaWZmO1xuXG4gIC8qKlxuICAgKiBNZXNzYWdlIGJveGVzIGFkZGVkIG9yIHJlbW92ZWQgYnkgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbi5cbiAgICovXG4gIG1lc3NhZ2VCb3hEaWZmOiBXb3JrYmVuY2hNZXNzYWdlQm94RGlmZjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIG9yZGVyZWQgbGlzdCBvZiBwYXRoIHNlZ21lbnRzIGluc3RydWN0aW5nIHRoZSByb3V0ZXIgd2hpY2ggcm91dGUgdG8gbmF2aWdhdGUgdG8uXG4gKlxuICogQSBjb21tYW5kIGNhbiBiZSBhIHN0cmluZyBvciBhbiBvYmplY3QgbGl0ZXJhbC4gQSBzdHJpbmcgcmVwcmVzZW50cyBhIHBhdGggc2VnbWVudCwgYW4gb2JqZWN0IGxpdGVyYWwgYXNzb2NpYXRlcyBtYXRyaXggcGFyYW1ldGVycyB3aXRoIHRoZSBwcmVjZWRpbmcgc2VnbWVudC5cbiAqIE11bHRpcGxlIHNlZ21lbnRzIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIGNvbW1hbmQsIHNlcGFyYXRlZCBieSBhIGZvcndhcmQgc2xhc2guXG4gKlxuICogVGhlIGZpcnN0IHBhdGggc2VnbWVudCBzdXBwb3J0cyB0aGUgdXNhZ2Ugb2YgbmF2aWdhdGlvbmFsIHN5bWJvbHMgc3VjaCBhcyBgL2AsIGAuL2AsIG9yIGAuLi9gLlxuICpcbiAqIEV4YW1wbGVzOlxuICogLSBOYXZpZ2F0ZXMgdG8gdGhlIHBhdGggJ3BhdGgvdG8vdmlldycsIHBhc3NpbmcgdHdvIHBhcmFtZXRlcnM6XG4gKiAgIFsncGF0aCcsICd0bycsICd2aWV3Jywge3BhcmFtMTogJ3ZhbHVlMScsIHBhcmFtMjogJ3ZhbHVlMid9XVxuICogLSBBbHRlcm5hdGl2ZSBzeW50YXggdXNpbmcgYSBjb21iaW5lZCBzZWdtZW50OlxuICogICBbJ3BhdGgvdG8vdmlldycsIHtwYXJhbTE6ICd2YWx1ZTEnLCBwYXJhbTI6ICd2YWx1ZTInfV1cbiAqL1xuZXhwb3J0IHR5cGUgQ29tbWFuZHMgPSBhbnlbXTtcblxuLyoqXG4gKiBVUkwgc2VnbWVudHMgb2Ygdmlld3MgY29udGFpbmVkIGluIHRoZSB3b3JrYmVuY2ggbGF5b3V0LlxuICovXG5leHBvcnQgdHlwZSBWaWV3T3V0bGV0cyA9IHtbdmlld0lkOiBWaWV3SWRdOiBVcmxTZWdtZW50W119O1xuXG4vKipcbiAqIE5hdmlnYXRpb25hbCB2aWV3IHN0YXRlcyBhc3NvY2lhdGVkIHdpdGggYSB3b3JrYmVuY2ggbmF2aWdhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgVmlld1N0YXRlcyA9IHtbdmlld0lkOiBWaWV3SWRdOiBWaWV3U3RhdGV9O1xuXG4vKipcbiAqIFN0YXRlIGFzc29jaWF0ZWQgd2l0aCBhIHZpZXcgbmF2aWdhdGlvbi5cbiAqXG4gKiBOYXZpZ2F0aW9uYWwgc3RhdGUgaXMgc3RvcmVkIGluIHRoZSBicm93c2VyJ3Mgc2Vzc2lvbiBoaXN0b3J5LCBzdXBwb3J0aW5nIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uLCBidXQgaXMgbG9zdCBvbiBwYWdlIHJlbG9hZC5cbiAqIFRoZXJlZm9yZSwgYSB2aWV3IG11c3QgYmUgYWJsZSB0byByZXN0b3JlIGl0cyBzdGF0ZSB3aXRob3V0IHJlbHlpbmcgb24gbmF2aWdhdGlvbmFsIHN0YXRlLlxuICpcbiAqIE5hdmlnYXRpb25hbCBzdGF0ZSBjYW4gYmUgcmVhZCBmcm9tIHtAbGluayBXb3JrYmVuY2hWaWV3LnN0YXRlfSBvciB0aGUgYnJvd3NlcidzIHNlc3Npb24gaGlzdG9yeSB2aWEgYGhpc3Rvcnkuc3RhdGVgLlxuICovXG5leHBvcnQgdHlwZSBWaWV3U3RhdGUgPSB7W2tleTogc3RyaW5nXTogdW5rbm93bn07XG4vKipcbiAqIFNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgd29ya2JlbmNoIGxheW91dC5cbiAqXG4gKiBUaGUgcm91dGVyIHdpbGwgaW52b2tlIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgY3VycmVudCB3b3JrYmVuY2ggbGF5b3V0LiBUaGUgbGF5b3V0IGhhcyBtZXRob2RzIGZvciBtb2RpZnlpbmcgaXQuXG4gKiBUaGUgbGF5b3V0IGlzIGltbXV0YWJsZSwgc28gZWFjaCBtb2RpZmljYXRpb24gY3JlYXRlcyBhIG5ldyBpbnN0YW5jZS4gVXNlIHRoZSBpbnN0YW5jZSBmb3IgZnVydGhlciBtb2RpZmljYXRpb25zIGFuZCBmaW5hbGx5IHJldHVybiBpdC5cbiAqXG4gKiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gKlxuICogIyMgV29ya2JlbmNoIExheW91dFxuICogVGhlIHdvcmtiZW5jaCBsYXlvdXQgaXMgYSBncmlkIG9mIHBhcnRzLiBQYXJ0cyBhcmUgYWxpZ25lZCByZWxhdGl2ZSB0byBlYWNoIG90aGVyLiBBIHBhcnQgaXMgYSBzdGFjayBvZiB2aWV3cy4gQ29udGVudCBpcyBkaXNwbGF5ZWQgaW4gdmlld3MuXG4gKlxuICogIyMgRXhhbXBsZVxuICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGFkZHMgYSBwYXJ0IHRvIHRoZSBsZWZ0IG9mIHRoZSBtYWluIGFyZWEsIGluc2VydHMgYSB2aWV3IGFuZCBuYXZpZ2F0ZXMgaXQuXG4gKlxuICogYGBgdHNcbiAqIGluamVjdChXb3JrYmVuY2hSb3V0ZXIpLm5hdmlnYXRlKGxheW91dCA9PiBsYXlvdXRcbiAqICAgLmFkZFBhcnQoJ2xlZnQnLCB7cmVsYXRpdmVUbzogTUFJTl9BUkVBLCBhbGlnbjogJ2xlZnQnfSlcbiAqICAgLmFkZFZpZXcoJ25hdmlnYXRvcicsIHtwYXJ0SWQ6ICdsZWZ0J30pXG4gKiAgIC5uYXZpZ2F0ZVZpZXcoJ25hdmlnYXRvcicsIFsncGF0aC90by92aWV3J10pXG4gKiAgIC5hY3RpdmF0ZVZpZXcoJ25hdmlnYXRvcicpXG4gKiApO1xuICogYGBgXG4gKlxuICogQHBhcmFtIGxheW91dCAtIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCB3b3JrYmVuY2ggbGF5b3V0IGZvciBtb2RpZmljYXRpb24uXG4gKiBAcmV0dXJuIE1vZGlmaWVkIGxheW91dCwgb3IgYG51bGxgIHRvIGNhbmNlbCBuYXZpZ2F0aW9uLlxuICovXG5leHBvcnQgdHlwZSBOYXZpZ2F0ZUZuID0gKGxheW91dDogV29ya2JlbmNoTGF5b3V0KSA9PiBQcm9taXNlPFdvcmtiZW5jaExheW91dCB8IG51bGw+IHwgV29ya2JlbmNoTGF5b3V0IHwgbnVsbDtcbiJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JvdXRpbmcvcm91dGluZy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtOYXZpZ2F0aW9uRXh0cmFzLCBVcmxTZWdtZW50fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dH0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dERpZmZ9IGZyb20gJy4vd29ya2JlbmNoLWxheW91dC1kaWZmZXInO1xuaW1wb3J0IHtXb3JrYmVuY2hQb3B1cERpZmZ9IGZyb20gJy4vd29ya2JlbmNoLXBvcHVwLWRpZmZlcic7XG5pbXBvcnQge1dvcmtiZW5jaERpYWxvZ0RpZmZ9IGZyb20gJy4vd29ya2JlbmNoLWRpYWxvZy1kaWZmZXInO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXR9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7V29ya2JlbmNoTWVzc2FnZUJveERpZmZ9IGZyb20gJy4vd29ya2JlbmNoLW1lc3NhZ2UtYm94LWRpZmZlcic7XG5pbXBvcnQge1dvcmtiZW5jaFZpZXdPdXRsZXREaWZmfSBmcm9tICcuL3dvcmtiZW5jaC12aWV3LW91dGxldC1kaWZmZXInO1xuXG4vKipcbiAqIE9wdGlvbnMgdG8gY29udHJvbCB0aGUgbmF2aWdhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXb3JrYmVuY2hOYXZpZ2F0aW9uRXh0cmFzIGV4dGVuZHMgTmF2aWdhdGlvbkV4dHJhcyB7XG4gIC8qKlxuICAgKiBDb250cm9scyB3aGVyZSB0byBvcGVuIHRoZSB2aWV3LiBEZWZhdWx0IGlzIGBhdXRvYC5cbiAgICpcbiAgICogT25lIG9mOlxuICAgKiAtICdhdXRvJzogICBOYXZpZ2F0ZXMgZXhpc3Rpbmcgdmlld3MgdGhhdCBtYXRjaCB0aGUgcGF0aCwgb3Igb3BlbnMgYSBuZXcgdmlldyBvdGhlcndpc2UuIE1hdHJpeCBwYXJhbXMgZG8gbm90IGFmZmVjdCB2aWV3IHJlc29sdXRpb24uXG4gICAqIC0gJ2JsYW5rJzogIE5hdmlnYXRlcyBpbiBhIG5ldyB2aWV3LlxuICAgKiAtIDx2aWV3SWQ+OiBOYXZpZ2F0ZXMgdGhlIHNwZWNpZmllZCB2aWV3LiBJZiBhbHJlYWR5IG9wZW5lZCwgcmVwbGFjZXMgaXQsIG9yIG9wZW5zIGEgbmV3IHZpZXcgb3RoZXJ3aXNlLlxuICAgKi9cbiAgdGFyZ2V0PzogVmlld0lkIHwgc3RyaW5nIHwgJ2JsYW5rJyB8ICdhdXRvJztcbiAgLyoqXG4gICAqIENvbnRyb2xzIHdoaWNoIHBhcnQgdG8gbmF2aWdhdGUgdmlld3MgaW4uXG4gICAqXG4gICAqIElmIHRhcmdldCBpcyBgYmxhbmtgLCBvcGVucyB0aGUgdmlldyBpbiB0aGUgc3BlY2lmaWVkIHBhcnQuXG4gICAqIElmIHRhcmdldCBpcyBgYXV0b2AsIG5hdmlnYXRlcyBtYXRjaGluZyB2aWV3cyBpbiB0aGUgc3BlY2lmaWVkIHBhcnQsIG9yIG9wZW5zIGEgbmV3IHZpZXcgaW4gdGhhdCBwYXJ0IG90aGVyd2lzZS5cbiAgICpcbiAgICogSWYgdGhlIHNwZWNpZmllZCBwYXJ0IGlzIG5vdCBpbiB0aGUgbGF5b3V0LCBvcGVucyB0aGUgdmlldyBpbiB0aGUgYWN0aXZlIHBhcnQsIHdpdGggdGhlIGFjdGl2ZSBwYXJ0IG9mIHRoZSBtYWluIGFyZWEgdGFraW5nIHByZWNlZGVuY2UuXG4gICAqL1xuICBwYXJ0SWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTZXRzIGEgaGludCB0byBjb250cm9sIG5hdmlnYXRpb24sIGUuZy4sIGZvciB1c2UgaW4gYSBgQ2FuTWF0Y2hgIGd1YXJkIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiByb3V0ZXMgd2l0aCBhbiBpZGVudGljYWwgcGF0aC5cbiAgICpcbiAgICogRm9yIGV4YW1wbGUsIHZpZXdzIG9mIHRoZSBpbml0aWFsIGxheW91dCBvciBhIHBlcnNwZWN0aXZlIGFyZSB1c3VhbGx5IG5hdmlnYXRlZCB0byB0aGUgZW1wdHkgcGF0aCByb3V0ZSB0byBhdm9pZCBjbHV0dGVyaW5nIHRoZSBVUkwsXG4gICAqIHJlcXVpcmluZyBhIG5hdmlnYXRpb24gaGludCB0byBkaWZmZXJlbnRpYXRlIGJldHdlZW4gdGhlIHJvdXRlcy4gU2VlIHtAbGluayBjYW5NYXRjaFdvcmtiZW5jaFZpZXd9IGZvciBhbiBleGFtcGxlLlxuICAgKlxuICAgKiBMaWtlIHRoZSBwYXRoLCBhIGhpbnQgYWZmZWN0cyB2aWV3IHJlc29sdXRpb24uIElmIHNldCwgdGhlIHJvdXRlciB3aWxsIG9ubHkgbmF2aWdhdGUgdmlld3Mgd2l0aCBhbiBlcXVpdmFsZW50IGhpbnQsIG9yIGlmIG5vdCBzZXQsIHZpZXdzIHdpdGhvdXQgYSBoaW50LlxuICAgKlxuICAgKiBAc2VlIGNhbk1hdGNoV29ya2JlbmNoVmlld1xuICAgKi9cbiAgaGludD86IHN0cmluZztcbiAgLyoqXG4gICAqIEluc3RydWN0cyB0aGUgcm91dGVyIHRvIGFjdGl2YXRlIHRoZSB2aWV3LiBEZWZhdWx0IGlzIGB0cnVlYC5cbiAgICovXG4gIGFjdGl2YXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGVyZSB0byBpbnNlcnQgdGhlIHZpZXcgaW50byB0aGUgdGFiIGJhci4gSGFzIG5vIGVmZmVjdCBpZiBuYXZpZ2F0aW5nIGFuIGV4aXN0aW5nIHZpZXcuIERlZmF1bHQgaXMgYWZ0ZXIgdGhlIGFjdGl2ZSB2aWV3LlxuICAgKi9cbiAgcG9zaXRpb24/OiBudW1iZXIgfCAnc3RhcnQnIHwgJ2VuZCcgfCAnYmVmb3JlLWFjdGl2ZS12aWV3JyB8ICdhZnRlci1hY3RpdmUtdmlldyc7XG4gIC8qKlxuICAgKiBBc3NvY2lhdGVzIGFyYml0cmFyeSBzdGF0ZSB3aXRoIGEgdmlldyBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBOYXZpZ2F0aW9uYWwgc3RhdGUgaXMgc3RvcmVkIGluIHRoZSBicm93c2VyJ3Mgc2Vzc2lvbiBoaXN0b3J5LCBzdXBwb3J0aW5nIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uLCBidXQgaXMgbG9zdCBvbiBwYWdlIHJlbG9hZC5cbiAgICogVGhlcmVmb3JlLCBhIHZpZXcgbXVzdCBiZSBhYmxlIHRvIHJlc3RvcmUgaXRzIHN0YXRlIHdpdGhvdXQgcmVseWluZyBvbiBuYXZpZ2F0aW9uYWwgc3RhdGUuXG4gICAqXG4gICAqIE5hdmlnYXRpb25hbCBzdGF0ZSBjYW4gYmUgcmVhZCBmcm9tIHtAbGluayBXb3JrYmVuY2hWaWV3LnN0YXRlfSBvciB0aGUgYnJvd3NlcidzIHNlc3Npb24gaGlzdG9yeSB2aWEgYGhpc3Rvcnkuc3RhdGVgLlxuICAgKi9cbiAgc3RhdGU/OiBWaWV3U3RhdGU7XG4gIC8qKlxuICAgKiBDbG9zZXMgdmlld3MgdGhhdCBtYXRjaCB0aGUgc3BlY2lmaWVkIHBhdGggYW5kIG5hdmlnYXRpb24gaGludC4gTWF0cml4IHBhcmFtZXRlcnMgZG8gbm90IGFmZmVjdCB2aWV3IHJlc29sdXRpb24uXG4gICAqIFRoZSBwYXRoIHN1cHBvcnRzIHRoZSBhc3RlcmlzayB3aWxkY2FyZCBzZWdtZW50IChgKmApIHRvIG1hdGNoIHZpZXdzIHdpdGggYW55IHZhbHVlIGluIGEgc2VnbWVudC5cbiAgICogVG8gY2xvc2UgYSBzcGVjaWZpYyB2aWV3LCBzZXQgYSB2aWV3IHRhcmdldCBpbnN0ZWFkIG9mIGEgcGF0aC5cbiAgICovXG4gIGNsb3NlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyBDU1MgY2xhc3MoZXMpIHRvIGFkZCB0byB0aGUgdmlldywgZS5nLiwgdG8gbG9jYXRlIHRoZSB2aWV3IGluIHRlc3RzLlxuICAgKi9cbiAgY3NzQ2xhc3M/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb250ZXh0dWFsIGRhdGEgb2YgYSB3b3JrYmVuY2ggbmF2aWdhdGlvbiBhdmFpbGFibGUgaW4gdGhlIHJvdXRlciBkdXJpbmcgbmF2aWdhdGlvbi5cbiAqXG4gKiBAc2VlIFdvcmtiZW5jaFVybE9ic2VydmVyXG4gKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya2JlbmNoTmF2aWdhdGlvbkNvbnRleHQge1xuICAvKipcbiAgICogTGF5b3V0IHRvIGJlIGFwcGxpZWQgYWZ0ZXIgc3VjY2Vzc2Z1bCBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgbGF5b3V0OiDJtVdvcmtiZW5jaExheW91dDtcbiAgLyoqXG4gICAqIFdvcmtiZW5jaCBsYXlvdXQgZWxlbWVudHMgYWRkZWQgb3IgcmVtb3ZlZCBieSB0aGUgY3VycmVudCBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgbGF5b3V0RGlmZjogV29ya2JlbmNoTGF5b3V0RGlmZjtcbiAgLyoqXG4gICAqIFZpZXcgYXV4aWxpYXJ5IHJvdXRlcyB0byByZWdpc3RlciBvciB1bnJlZ2lzdGVyIGJ5IHRoZSBjdXJyZW50IG5hdmlnYXRpb24uXG4gICAqL1xuICB2aWV3T3V0bGV0RGlmZjogV29ya2JlbmNoVmlld091dGxldERpZmY7XG4gIC8qKlxuICAgKiBQb3B1cHMgYWRkZWQgb3IgcmVtb3ZlZCBieSB0aGUgY3VycmVudCBuYXZpZ2F0aW9uLlxuICAgKi9cbiAgcG9wdXBEaWZmOiBXb3JrYmVuY2hQb3B1cERpZmY7XG4gIC8qKlxuICAgKiBEaWFsb2dzIGFkZGVkIG9yIHJlbW92ZWQgYnkgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbi5cbiAgICovXG4gIGRpYWxvZ0RpZmY6IFdvcmtiZW5jaERpYWxvZ0RpZmY7XG4gIC8qKlxuICAgKiBNZXNzYWdlIGJveGVzIGFkZGVkIG9yIHJlbW92ZWQgYnkgdGhlIGN1cnJlbnQgbmF2aWdhdGlvbi5cbiAgICovXG4gIG1lc3NhZ2VCb3hEaWZmOiBXb3JrYmVuY2hNZXNzYWdlQm94RGlmZjtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIG9yZGVyZWQgbGlzdCBvZiBwYXRoIHNlZ21lbnRzIGluc3RydWN0aW5nIHRoZSByb3V0ZXIgd2hpY2ggcm91dGUgdG8gbmF2aWdhdGUgdG8uXG4gKlxuICogQSBjb21tYW5kIGNhbiBiZSBhIHN0cmluZyBvciBhbiBvYmplY3QgbGl0ZXJhbC4gQSBzdHJpbmcgcmVwcmVzZW50cyBhIHBhdGggc2VnbWVudCwgYW4gb2JqZWN0IGxpdGVyYWwgYXNzb2NpYXRlcyBtYXRyaXggcGFyYW1ldGVycyB3aXRoIHRoZSBwcmVjZWRpbmcgc2VnbWVudC5cbiAqIE11bHRpcGxlIHNlZ21lbnRzIGNhbiBiZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIGNvbW1hbmQsIHNlcGFyYXRlZCBieSBhIGZvcndhcmQgc2xhc2guXG4gKlxuICogVGhlIGZpcnN0IHBhdGggc2VnbWVudCBzdXBwb3J0cyB0aGUgdXNhZ2Ugb2YgbmF2aWdhdGlvbmFsIHN5bWJvbHMgc3VjaCBhcyBgL2AsIGAuL2AsIG9yIGAuLi9gLlxuICpcbiAqIEV4YW1wbGVzOlxuICogLSBOYXZpZ2F0ZXMgdG8gdGhlIHBhdGggJ3BhdGgvdG8vdmlldycsIHBhc3NpbmcgdHdvIHBhcmFtZXRlcnM6XG4gKiAgIFsncGF0aCcsICd0bycsICd2aWV3Jywge3BhcmFtMTogJ3ZhbHVlMScsIHBhcmFtMjogJ3ZhbHVlMid9XVxuICogLSBBbHRlcm5hdGl2ZSBzeW50YXggdXNpbmcgYSBjb21iaW5lZCBzZWdtZW50OlxuICogICBbJ3BhdGgvdG8vdmlldycsIHtwYXJhbTE6ICd2YWx1ZTEnLCBwYXJhbTI6ICd2YWx1ZTInfV1cbiAqL1xuZXhwb3J0IHR5cGUgQ29tbWFuZHMgPSBhbnlbXTtcblxuLyoqXG4gKiBVUkwgc2VnbWVudHMgb2Ygdmlld3MgY29udGFpbmVkIGluIHRoZSB3b3JrYmVuY2ggbGF5b3V0LlxuICovXG5leHBvcnQgdHlwZSBWaWV3T3V0bGV0cyA9IHtbdmlld0lkOiBWaWV3SWRdOiBVcmxTZWdtZW50W119O1xuXG4vKipcbiAqIE5hdmlnYXRpb25hbCB2aWV3IHN0YXRlcyBhc3NvY2lhdGVkIHdpdGggYSB3b3JrYmVuY2ggbmF2aWdhdGlvbi5cbiAqL1xuZXhwb3J0IHR5cGUgVmlld1N0YXRlcyA9IHtbdmlld0lkOiBWaWV3SWRdOiBWaWV3U3RhdGV9O1xuXG4vKipcbiAqIFN0YXRlIGFzc29jaWF0ZWQgd2l0aCBhIHZpZXcgbmF2aWdhdGlvbi5cbiAqXG4gKiBOYXZpZ2F0aW9uYWwgc3RhdGUgaXMgc3RvcmVkIGluIHRoZSBicm93c2VyJ3Mgc2Vzc2lvbiBoaXN0b3J5LCBzdXBwb3J0aW5nIGJhY2svZm9yd2FyZCBuYXZpZ2F0aW9uLCBidXQgaXMgbG9zdCBvbiBwYWdlIHJlbG9hZC5cbiAqIFRoZXJlZm9yZSwgYSB2aWV3IG11c3QgYmUgYWJsZSB0byByZXN0b3JlIGl0cyBzdGF0ZSB3aXRob3V0IHJlbHlpbmcgb24gbmF2aWdhdGlvbmFsIHN0YXRlLlxuICpcbiAqIE5hdmlnYXRpb25hbCBzdGF0ZSBjYW4gYmUgcmVhZCBmcm9tIHtAbGluayBXb3JrYmVuY2hWaWV3LnN0YXRlfSBvciB0aGUgYnJvd3NlcidzIHNlc3Npb24gaGlzdG9yeSB2aWEgYGhpc3Rvcnkuc3RhdGVgLlxuICovXG5leHBvcnQgdHlwZSBWaWV3U3RhdGUgPSB7W2tleTogc3RyaW5nXTogdW5rbm93bn07XG4vKipcbiAqIFNpZ25hdHVyZSBvZiBhIGZ1bmN0aW9uIHRvIG1vZGlmeSB0aGUgd29ya2JlbmNoIGxheW91dC5cbiAqXG4gKiBUaGUgcm91dGVyIHdpbGwgaW52b2tlIHRoaXMgZnVuY3Rpb24gd2l0aCB0aGUgY3VycmVudCB3b3JrYmVuY2ggbGF5b3V0LiBUaGUgbGF5b3V0IGhhcyBtZXRob2RzIGZvciBtb2RpZnlpbmcgaXQuXG4gKiBUaGUgbGF5b3V0IGlzIGltbXV0YWJsZSwgc28gZWFjaCBtb2RpZmljYXRpb24gY3JlYXRlcyBhIG5ldyBpbnN0YW5jZS4gVXNlIHRoZSBpbnN0YW5jZSBmb3IgZnVydGhlciBtb2RpZmljYXRpb25zIGFuZCBmaW5hbGx5IHJldHVybiBpdC5cbiAqXG4gKiBUaGUgZnVuY3Rpb24gY2FuIGNhbGwgYGluamVjdGAgdG8gZ2V0IGFueSByZXF1aXJlZCBkZXBlbmRlbmNpZXMuXG4gKlxuICogIyMgV29ya2JlbmNoIExheW91dFxuICogVGhlIHdvcmtiZW5jaCBsYXlvdXQgaXMgYSBncmlkIG9mIHBhcnRzLiBQYXJ0cyBhcmUgYWxpZ25lZCByZWxhdGl2ZSB0byBlYWNoIG90aGVyLiBBIHBhcnQgaXMgYSBzdGFjayBvZiB2aWV3cy4gQ29udGVudCBpcyBkaXNwbGF5ZWQgaW4gdmlld3MuXG4gKlxuICogIyMgRXhhbXBsZVxuICogVGhlIGZvbGxvd2luZyBleGFtcGxlIGFkZHMgYSBwYXJ0IHRvIHRoZSBsZWZ0IG9mIHRoZSBtYWluIGFyZWEsIGluc2VydHMgYSB2aWV3IGFuZCBuYXZpZ2F0ZXMgaXQuXG4gKlxuICogYGBgdHNcbiAqIGluamVjdChXb3JrYmVuY2hSb3V0ZXIpLm5hdmlnYXRlKGxheW91dCA9PiBsYXlvdXRcbiAqICAgLmFkZFBhcnQoJ2xlZnQnLCB7cmVsYXRpdmVUbzogTUFJTl9BUkVBLCBhbGlnbjogJ2xlZnQnfSlcbiAqICAgLmFkZFZpZXcoJ25hdmlnYXRvcicsIHtwYXJ0SWQ6ICdsZWZ0J30pXG4gKiAgIC5uYXZpZ2F0ZVZpZXcoJ25hdmlnYXRvcicsIFsncGF0aC90by92aWV3J10pXG4gKiAgIC5hY3RpdmF0ZVZpZXcoJ25hdmlnYXRvcicpXG4gKiApO1xuICogYGBgXG4gKlxuICogQHBhcmFtIGxheW91dCAtIFJlZmVyZW5jZSB0byB0aGUgY3VycmVudCB3b3JrYmVuY2ggbGF5b3V0IGZvciBtb2RpZmljYXRpb24uXG4gKiBAcmV0dXJuIE1vZGlmaWVkIGxheW91dCwgb3IgYG51bGxgIHRvIGNhbmNlbCBuYXZpZ2F0aW9uLlxuICovXG5leHBvcnQgdHlwZSBOYXZpZ2F0ZUZuID0gKGxheW91dDogV29ya2JlbmNoTGF5b3V0KSA9PiBQcm9taXNlPFdvcmtiZW5jaExheW91dCB8IG51bGw+IHwgV29ya2JlbmNoTGF5b3V0IHwgbnVsbDtcbiJdfQ==
@@ -0,0 +1,94 @@
1
+ /*
2
+ * Copyright (c) 2018-2024 Swiss Federal Railways
3
+ *
4
+ * This program and the accompanying materials are made
5
+ * available under the terms of the Eclipse Public License 2.0
6
+ * which is available at https://www.eclipse.org/legal/epl-2.0/
7
+ *
8
+ * SPDX-License-Identifier: EPL-2.0
9
+ */
10
+ import { Injectable, InjectionToken } from '@angular/core';
11
+ import { PRIMARY_OUTLET } from '@angular/router';
12
+ import PageNotFoundComponent from '../page-not-found/page-not-found.component';
13
+ import { WorkbenchRouteData } from './workbench-route-data';
14
+ import { ɵEmptyOutletComponent } from './empty-outlet/empty-outlet.component';
15
+ import * as i0 from "@angular/core";
16
+ import * as i1 from "../workbench-config";
17
+ import * as i2 from "@angular/router";
18
+ /**
19
+ * Facilitates the registration of auxiliary routes of top-level routes.
20
+ */
21
+ export class WorkbenchAuxiliaryRouteInstaller {
22
+ constructor(_workbenchConfig, _router) {
23
+ this._workbenchConfig = _workbenchConfig;
24
+ this._router = _router;
25
+ }
26
+ /**
27
+ * Registers an auxiliary route for each top-level route, enabling navigation in the specified router outlet(s).
28
+ *
29
+ * @param outlets - Specifies outlets for which to create auxiliary routes.
30
+ * @param config - Specifies the config of the auxiliary routes.
31
+ */
32
+ registerAuxiliaryRoutes(outlets, config = {}) {
33
+ if (!outlets.length) {
34
+ return [];
35
+ }
36
+ const registeredRoutes = outlets.map(outlet => ({
37
+ path: '',
38
+ outlet,
39
+ providers: [{ provide: WORKBENCH_AUXILIARY_ROUTE_OUTLET, useValue: outlet }],
40
+ component: ɵEmptyOutletComponent,
41
+ children: [
42
+ ...this._router.config
43
+ .filter(route => !route.outlet || route.outlet === PRIMARY_OUTLET)
44
+ .map(route => ({ ...route, data: { ...route.data, [WorkbenchRouteData.ɵoutlet]: outlet } })),
45
+ // Register "Not Found" page route as the last route of the outlet.
46
+ {
47
+ path: '**',
48
+ loadComponent: () => this._workbenchConfig.pageNotFoundComponent ?? PageNotFoundComponent,
49
+ data: { [WorkbenchRouteData.title]: 'Page Not Found', [WorkbenchRouteData.cssClass]: 'e2e-page-not-found' },
50
+ canMatch: config.canMatchNotFoundPage,
51
+ },
52
+ ],
53
+ }));
54
+ this.replaceRouterConfig([
55
+ ...this._router.config,
56
+ ...registeredRoutes,
57
+ ]);
58
+ return registeredRoutes;
59
+ }
60
+ /**
61
+ * Unregisters auxiliary routes for the given outlet.
62
+ */
63
+ unregisterAuxiliaryRoutes(outlets) {
64
+ const outletsToRemove = new Set(outlets);
65
+ function shouldRemoveRoute(route) {
66
+ return !!route.outlet && outletsToRemove.has(route.outlet);
67
+ }
68
+ this.replaceRouterConfig(this._router.config.filter(route => !shouldRemoveRoute(route)));
69
+ }
70
+ /**
71
+ * Replaces the router configuration to install or uninstall auxiliary routes.
72
+ */
73
+ replaceRouterConfig(config) {
74
+ // Note:
75
+ // - Do not use Router.resetConfig(...) which would destroy any currently routed component because copying all routes
76
+ // - Do not assign the router a new Routes object (Router.config = ...) to allow resolution of routes added during `NavigationStart` (since Angular 7.x)
77
+ // (because Angular uses a reference to the Routes object during route navigation)
78
+ const newRoutes = [...config];
79
+ this._router.config.splice(0, this._router.config.length, ...newRoutes);
80
+ }
81
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchAuxiliaryRouteInstaller, deps: [{ token: i1.WorkbenchConfig }, { token: i2.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
82
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchAuxiliaryRouteInstaller, providedIn: 'root' }); }
83
+ }
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchAuxiliaryRouteInstaller, decorators: [{
85
+ type: Injectable,
86
+ args: [{ providedIn: 'root' }]
87
+ }], ctorParameters: () => [{ type: i1.WorkbenchConfig }, { type: i2.Router }] });
88
+ /**
89
+ * DI token to inject the outlet name of a workbench auxiliary route.
90
+ *
91
+ * Can be injected in a `CanMatch` guard to obtain a reference to the workbench element.
92
+ */
93
+ export const WORKBENCH_AUXILIARY_ROUTE_OUTLET = new InjectionToken('ɵWORKBENCH_AUXILIARY_ROUTE_OUTLET');
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWF1eGlsaWFyeS1yb3V0ZS1pbnN0YWxsZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NjaW9uL3dvcmtiZW5jaC9zcmMvbGliL3JvdXRpbmcvd29ya2JlbmNoLWF1eGlsaWFyeS1yb3V0ZS1pbnN0YWxsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7RUFRRTtBQUVGLE9BQU8sRUFBQyxVQUFVLEVBQUUsY0FBYyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBYSxjQUFjLEVBQXdCLE1BQU0saUJBQWlCLENBQUM7QUFFbEYsT0FBTyxxQkFBcUIsTUFBTSw0Q0FBNEMsQ0FBQztBQUMvRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSx1Q0FBdUMsQ0FBQzs7OztBQUU1RTs7R0FFRztBQUVILE1BQU0sT0FBTyxnQ0FBZ0M7SUFFM0MsWUFBb0IsZ0JBQWlDLEVBQVUsT0FBZTtRQUExRCxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlCO1FBQVUsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUM5RSxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx1QkFBdUIsQ0FBQyxPQUFpQixFQUFFLFNBQStCLEVBQUU7UUFDakYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzlDLElBQUksRUFBRSxFQUFFO1lBQ1IsTUFBTTtZQUNOLFNBQVMsRUFBRSxDQUFDLEVBQUMsT0FBTyxFQUFFLGdDQUFnQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUMsQ0FBQztZQUMxRSxTQUFTLEVBQUUscUJBQXFCO1lBQ2hDLFFBQVEsRUFBRTtnQkFDUixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTTtxQkFDbkIsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssY0FBYyxDQUFDO3FCQUNqRSxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUMsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLEVBQUMsR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFDLEVBQUMsQ0FBQyxDQUFDO2dCQUMxRixtRUFBbUU7Z0JBQ25FO29CQUNFLElBQUksRUFBRSxJQUFJO29CQUNWLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMscUJBQXFCLElBQUkscUJBQXFCO29CQUN6RixJQUFJLEVBQUUsRUFBQyxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLGdCQUFnQixFQUFFLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEVBQUUsb0JBQW9CLEVBQUM7b0JBQ3pHLFFBQVEsRUFBRSxNQUFNLENBQUMsb0JBQW9CO2lCQUN0QzthQUNGO1NBQ0YsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLENBQUMsbUJBQW1CLENBQUM7WUFDdkIsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07WUFDdEIsR0FBRyxnQkFBZ0I7U0FDcEIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxnQkFBZ0IsQ0FBQztJQUMxQixDQUFDO0lBRUQ7O09BRUc7SUFDSSx5QkFBeUIsQ0FBQyxPQUFpQjtRQUNoRCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBUyxPQUFPLENBQUMsQ0FBQztRQUVqRCxTQUFTLGlCQUFpQixDQUFDLEtBQVk7WUFDckMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxDQUFDO1FBRUQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRDs7T0FFRztJQUNLLG1CQUFtQixDQUFDLE1BQWM7UUFDeEMsUUFBUTtRQUNSLHVIQUF1SDtRQUN2SCwwSkFBMEo7UUFDMUosc0ZBQXNGO1FBQ3RGLE1BQU0sU0FBUyxHQUFXLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7OEdBbEVVLGdDQUFnQztrSEFBaEMsZ0NBQWdDLGNBRHBCLE1BQU07OzJGQUNsQixnQ0FBZ0M7a0JBRDVDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOztBQWlGaEM7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdDQUFnQyxHQUFHLElBQUksY0FBYyxDQUFTLG1DQUFtQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4qXG4qIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4qXG4qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4qL1xuXG5pbXBvcnQge0luamVjdGFibGUsIEluamVjdGlvblRva2VufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q2FuTWF0Y2hGbiwgUFJJTUFSWV9PVVRMRVQsIFJvdXRlLCBSb3V0ZXIsIFJvdXRlc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7V29ya2JlbmNoQ29uZmlnfSBmcm9tICcuLi93b3JrYmVuY2gtY29uZmlnJztcbmltcG9ydCBQYWdlTm90Rm91bmRDb21wb25lbnQgZnJvbSAnLi4vcGFnZS1ub3QtZm91bmQvcGFnZS1ub3QtZm91bmQuY29tcG9uZW50JztcbmltcG9ydCB7V29ya2JlbmNoUm91dGVEYXRhfSBmcm9tICcuL3dvcmtiZW5jaC1yb3V0ZS1kYXRhJztcbmltcG9ydCB7ybVFbXB0eU91dGxldENvbXBvbmVudH0gZnJvbSAnLi9lbXB0eS1vdXRsZXQvZW1wdHktb3V0bGV0LmNvbXBvbmVudCc7XG5cbi8qKlxuICogRmFjaWxpdGF0ZXMgdGhlIHJlZ2lzdHJhdGlvbiBvZiBhdXhpbGlhcnkgcm91dGVzIG9mIHRvcC1sZXZlbCByb3V0ZXMuXG4gKi9cbkBJbmplY3RhYmxlKHtwcm92aWRlZEluOiAncm9vdCd9KVxuZXhwb3J0IGNsYXNzIFdvcmtiZW5jaEF1eGlsaWFyeVJvdXRlSW5zdGFsbGVyIHtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF93b3JrYmVuY2hDb25maWc6IFdvcmtiZW5jaENvbmZpZywgcHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIpIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYW4gYXV4aWxpYXJ5IHJvdXRlIGZvciBlYWNoIHRvcC1sZXZlbCByb3V0ZSwgZW5hYmxpbmcgbmF2aWdhdGlvbiBpbiB0aGUgc3BlY2lmaWVkIHJvdXRlciBvdXRsZXQocykuXG4gICAqXG4gICAqIEBwYXJhbSBvdXRsZXRzIC0gU3BlY2lmaWVzIG91dGxldHMgZm9yIHdoaWNoIHRvIGNyZWF0ZSBhdXhpbGlhcnkgcm91dGVzLlxuICAgKiBAcGFyYW0gY29uZmlnIC0gU3BlY2lmaWVzIHRoZSBjb25maWcgb2YgdGhlIGF1eGlsaWFyeSByb3V0ZXMuXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJBdXhpbGlhcnlSb3V0ZXMob3V0bGV0czogc3RyaW5nW10sIGNvbmZpZzogQXV4aWxpYXJ5Um91dGVDb25maWcgPSB7fSk6IFJvdXRlcyB7XG4gICAgaWYgKCFvdXRsZXRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGNvbnN0IHJlZ2lzdGVyZWRSb3V0ZXMgPSBvdXRsZXRzLm1hcChvdXRsZXQgPT4gKHtcbiAgICAgIHBhdGg6ICcnLFxuICAgICAgb3V0bGV0LFxuICAgICAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IFdPUktCRU5DSF9BVVhJTElBUllfUk9VVEVfT1VUTEVULCB1c2VWYWx1ZTogb3V0bGV0fV0sXG4gICAgICBjb21wb25lbnQ6IMm1RW1wdHlPdXRsZXRDb21wb25lbnQsXG4gICAgICBjaGlsZHJlbjogW1xuICAgICAgICAuLi50aGlzLl9yb3V0ZXIuY29uZmlnXG4gICAgICAgICAgLmZpbHRlcihyb3V0ZSA9PiAhcm91dGUub3V0bGV0IHx8IHJvdXRlLm91dGxldCA9PT0gUFJJTUFSWV9PVVRMRVQpXG4gICAgICAgICAgLm1hcChyb3V0ZSA9PiAoey4uLnJvdXRlLCBkYXRhOiB7Li4ucm91dGUuZGF0YSwgW1dvcmtiZW5jaFJvdXRlRGF0YS7JtW91dGxldF06IG91dGxldH19KSksXG4gICAgICAgIC8vIFJlZ2lzdGVyIFwiTm90IEZvdW5kXCIgcGFnZSByb3V0ZSBhcyB0aGUgbGFzdCByb3V0ZSBvZiB0aGUgb3V0bGV0LlxuICAgICAgICB7XG4gICAgICAgICAgcGF0aDogJyoqJyxcbiAgICAgICAgICBsb2FkQ29tcG9uZW50OiAoKSA9PiB0aGlzLl93b3JrYmVuY2hDb25maWcucGFnZU5vdEZvdW5kQ29tcG9uZW50ID8/IFBhZ2VOb3RGb3VuZENvbXBvbmVudCxcbiAgICAgICAgICBkYXRhOiB7W1dvcmtiZW5jaFJvdXRlRGF0YS50aXRsZV06ICdQYWdlIE5vdCBGb3VuZCcsIFtXb3JrYmVuY2hSb3V0ZURhdGEuY3NzQ2xhc3NdOiAnZTJlLXBhZ2Utbm90LWZvdW5kJ30sXG4gICAgICAgICAgY2FuTWF0Y2g6IGNvbmZpZy5jYW5NYXRjaE5vdEZvdW5kUGFnZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSkpO1xuXG4gICAgdGhpcy5yZXBsYWNlUm91dGVyQ29uZmlnKFtcbiAgICAgIC4uLnRoaXMuX3JvdXRlci5jb25maWcsXG4gICAgICAuLi5yZWdpc3RlcmVkUm91dGVzLFxuICAgIF0pO1xuXG4gICAgcmV0dXJuIHJlZ2lzdGVyZWRSb3V0ZXM7XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlcnMgYXV4aWxpYXJ5IHJvdXRlcyBmb3IgdGhlIGdpdmVuIG91dGxldC5cbiAgICovXG4gIHB1YmxpYyB1bnJlZ2lzdGVyQXV4aWxpYXJ5Um91dGVzKG91dGxldHM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgY29uc3Qgb3V0bGV0c1RvUmVtb3ZlID0gbmV3IFNldDxzdHJpbmc+KG91dGxldHMpO1xuXG4gICAgZnVuY3Rpb24gc2hvdWxkUmVtb3ZlUm91dGUocm91dGU6IFJvdXRlKTogYm9vbGVhbiB7XG4gICAgICByZXR1cm4gISFyb3V0ZS5vdXRsZXQgJiYgb3V0bGV0c1RvUmVtb3ZlLmhhcyhyb3V0ZS5vdXRsZXQpO1xuICAgIH1cblxuICAgIHRoaXMucmVwbGFjZVJvdXRlckNvbmZpZyh0aGlzLl9yb3V0ZXIuY29uZmlnLmZpbHRlcihyb3V0ZSA9PiAhc2hvdWxkUmVtb3ZlUm91dGUocm91dGUpKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZXMgdGhlIHJvdXRlciBjb25maWd1cmF0aW9uIHRvIGluc3RhbGwgb3IgdW5pbnN0YWxsIGF1eGlsaWFyeSByb3V0ZXMuXG4gICAqL1xuICBwcml2YXRlIHJlcGxhY2VSb3V0ZXJDb25maWcoY29uZmlnOiBSb3V0ZXMpOiB2b2lkIHtcbiAgICAvLyBOb3RlOlxuICAgIC8vICAgLSBEbyBub3QgdXNlIFJvdXRlci5yZXNldENvbmZpZyguLi4pIHdoaWNoIHdvdWxkIGRlc3Ryb3kgYW55IGN1cnJlbnRseSByb3V0ZWQgY29tcG9uZW50IGJlY2F1c2UgY29weWluZyBhbGwgcm91dGVzXG4gICAgLy8gICAtIERvIG5vdCBhc3NpZ24gdGhlIHJvdXRlciBhIG5ldyBSb3V0ZXMgb2JqZWN0IChSb3V0ZXIuY29uZmlnID0gLi4uKSB0byBhbGxvdyByZXNvbHV0aW9uIG9mIHJvdXRlcyBhZGRlZCBkdXJpbmcgYE5hdmlnYXRpb25TdGFydGAgKHNpbmNlIEFuZ3VsYXIgNy54KVxuICAgIC8vICAgICAoYmVjYXVzZSBBbmd1bGFyIHVzZXMgYSByZWZlcmVuY2UgdG8gdGhlIFJvdXRlcyBvYmplY3QgZHVyaW5nIHJvdXRlIG5hdmlnYXRpb24pXG4gICAgY29uc3QgbmV3Um91dGVzOiBSb3V0ZXMgPSBbLi4uY29uZmlnXTtcbiAgICB0aGlzLl9yb3V0ZXIuY29uZmlnLnNwbGljZSgwLCB0aGlzLl9yb3V0ZXIuY29uZmlnLmxlbmd0aCwgLi4ubmV3Um91dGVzKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbmZpZ3VyZXMgYXV4aWxpYXJ5IHJvdXRlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXhpbGlhcnlSb3V0ZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgXCJDYW5NYXRjaFwiIGd1YXJkKHMpIHRvIGluc3RhbGwgb24gdGhlIHdpbGRjYXJkIHJvdXRlIChgKipgKSxcbiAgICogc2VsZWN0ZWQgYnkgdGhlIHJvdXRlciBpZiBubyByb3V0ZSBtYXRjaGVzIHRoZSByZXF1ZXN0ZWQgVVJMLlxuICAgKi9cbiAgY2FuTWF0Y2hOb3RGb3VuZFBhZ2U/OiBBcnJheTxDYW5NYXRjaEZuPjtcbn1cblxuLyoqXG4gKiBESSB0b2tlbiB0byBpbmplY3QgdGhlIG91dGxldCBuYW1lIG9mIGEgd29ya2JlbmNoIGF1eGlsaWFyeSByb3V0ZS5cbiAqXG4gKiBDYW4gYmUgaW5qZWN0ZWQgaW4gYSBgQ2FuTWF0Y2hgIGd1YXJkIHRvIG9idGFpbiBhIHJlZmVyZW5jZSB0byB0aGUgd29ya2JlbmNoIGVsZW1lbnQuXG4gKi9cbmV4cG9ydCBjb25zdCBXT1JLQkVOQ0hfQVVYSUxJQVJZX1JPVVRFX09VVExFVCA9IG5ldyBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+KCfJtVdPUktCRU5DSF9BVVhJTElBUllfUk9VVEVfT1VUTEVUJyk7XG4iXX0=
@@ -8,7 +8,6 @@
8
8
  * SPDX-License-Identifier: EPL-2.0
9
9
  */
10
10
  import { Injectable } from '@angular/core';
11
- import { RouterUtils } from './router.util';
12
11
  import * as i0 from "@angular/core";
13
12
  /**
14
13
  * Stateful differ for finding added/removed workbench layout elements.
@@ -21,15 +20,9 @@ export class WorkbenchLayoutDiffer {
21
20
  /**
22
21
  * Computes differences in the layout since last time {@link WorkbenchLayoutDiffer#diff} was invoked.
23
22
  */
24
- diff(workbenchLayout, urlTree) {
23
+ diff(workbenchLayout) {
25
24
  const parts = workbenchLayout?.parts().map(part => part.id);
26
- // Create view diff based on views in the layout plus outlets in the URL, required because the layout is unavailable during initial navigation.
27
- // Otherwise, the initial navigation for a URL with outlets of views contained in the workbench grid would fail as their view routes would be
28
- // registered too late.
29
- const views = new Set([
30
- ...RouterUtils.parseViewOutlets(urlTree).keys(),
31
- ...(workbenchLayout?.views().map(view => view.id) ?? []),
32
- ]);
25
+ const views = workbenchLayout?.views().map(view => view.id);
33
26
  return new WorkbenchLayoutDiff({
34
27
  parts: this._partsDiffer.diff(parts),
35
28
  views: this._viewsDiffer.diff(views),
@@ -65,4 +58,4 @@ export class WorkbenchLayoutDiff {
65
58
  .join(', ')}`;
66
59
  }
67
60
  }
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWxheW91dC1kaWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9yb3V0aW5nL3dvcmtiZW5jaC1sYXlvdXQtZGlmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBbUQsTUFBTSxlQUFlLENBQUM7QUFHM0YsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFHMUM7O0dBRUc7QUFFSCxNQUFNLE9BQU8scUJBQXFCO0lBS2hDLFlBQVksT0FBd0I7UUFDbEMsSUFBSSxDQUFDLFlBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBVSxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQVUsQ0FBQztJQUN4RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJLENBQUMsZUFBd0MsRUFBRSxPQUFnQjtRQUNwRSxNQUFNLEtBQUssR0FBRyxlQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVELCtJQUErSTtRQUMvSSw2SUFBNkk7UUFDN0ksdUJBQXVCO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDO1lBQ3BCLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRTtZQUMvQyxHQUFHLENBQUMsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDekQsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLG1CQUFtQixDQUFDO1lBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDcEMsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUNyQyxDQUFDLENBQUM7SUFDTCxDQUFDOzhHQTFCVSxxQkFBcUI7a0hBQXJCLHFCQUFxQixjQURULE1BQU07OzJGQUNsQixxQkFBcUI7a0JBRGpDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDOztBQThCaEM7O0dBRUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBUTlCLFlBQVksT0FBdUY7UUFObkYsZUFBVSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDakMsaUJBQVksR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBRW5DLGVBQVUsR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBQ2pDLGlCQUFZLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUdqRCxPQUFPLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RSxPQUFPLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUU1RSxPQUFPLENBQUMsS0FBSyxFQUFFLGdCQUFnQixDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RSxPQUFPLENBQUMsS0FBSyxFQUFFLGtCQUFrQixDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU0sUUFBUTtRQUNiLE9BQU8sR0FBRyxJQUFJLEtBQUssRUFBVTthQUMxQixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDdkUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDN0UsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ3ZFLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsaUJBQWlCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQzdFLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ2xCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMyBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4gKlxuICogVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZVxuICogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiAqIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuICpcbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlLCBJdGVyYWJsZUNoYW5nZXMsIEl0ZXJhYmxlRGlmZmVyLCBJdGVyYWJsZURpZmZlcnN9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dH0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5pbXBvcnQge1VybFRyZWV9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1JvdXRlclV0aWxzfSBmcm9tICcuL3JvdXRlci51dGlsJztcbmltcG9ydCB7Vmlld0lkfSBmcm9tICcuLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcblxuLyoqXG4gKiBTdGF0ZWZ1bCBkaWZmZXIgZm9yIGZpbmRpbmcgYWRkZWQvcmVtb3ZlZCB3b3JrYmVuY2ggbGF5b3V0IGVsZW1lbnRzLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hMYXlvdXREaWZmZXIge1xuXG4gIHByaXZhdGUgX3BhcnRzRGlmZmVyOiBJdGVyYWJsZURpZmZlcjxzdHJpbmc+O1xuICBwcml2YXRlIF92aWV3c0RpZmZlcjogSXRlcmFibGVEaWZmZXI8Vmlld0lkPjtcblxuICBjb25zdHJ1Y3RvcihkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMpIHtcbiAgICB0aGlzLl9wYXJ0c0RpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlPHN0cmluZz4oKTtcbiAgICB0aGlzLl92aWV3c0RpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlPFZpZXdJZD4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBkaWZmZXJlbmNlcyBpbiB0aGUgbGF5b3V0IHNpbmNlIGxhc3QgdGltZSB7QGxpbmsgV29ya2JlbmNoTGF5b3V0RGlmZmVyI2RpZmZ9IHdhcyBpbnZva2VkLlxuICAgKi9cbiAgcHVibGljIGRpZmYod29ya2JlbmNoTGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCB8IG51bGwsIHVybFRyZWU6IFVybFRyZWUpOiBXb3JrYmVuY2hMYXlvdXREaWZmIHtcbiAgICBjb25zdCBwYXJ0cyA9IHdvcmtiZW5jaExheW91dD8ucGFydHMoKS5tYXAocGFydCA9PiBwYXJ0LmlkKTtcbiAgICAvLyBDcmVhdGUgdmlldyBkaWZmIGJhc2VkIG9uIHZpZXdzIGluIHRoZSBsYXlvdXQgcGx1cyBvdXRsZXRzIGluIHRoZSBVUkwsIHJlcXVpcmVkIGJlY2F1c2UgdGhlIGxheW91dCBpcyB1bmF2YWlsYWJsZSBkdXJpbmcgaW5pdGlhbCBuYXZpZ2F0aW9uLlxuICAgIC8vIE90aGVyd2lzZSwgdGhlIGluaXRpYWwgbmF2aWdhdGlvbiBmb3IgYSBVUkwgd2l0aCBvdXRsZXRzIG9mIHZpZXdzIGNvbnRhaW5lZCBpbiB0aGUgd29ya2JlbmNoIGdyaWQgd291bGQgZmFpbCBhcyB0aGVpciB2aWV3IHJvdXRlcyB3b3VsZCBiZVxuICAgIC8vIHJlZ2lzdGVyZWQgdG9vIGxhdGUuXG4gICAgY29uc3Qgdmlld3MgPSBuZXcgU2V0KFtcbiAgICAgIC4uLlJvdXRlclV0aWxzLnBhcnNlVmlld091dGxldHModXJsVHJlZSkua2V5cygpLFxuICAgICAgLi4uKHdvcmtiZW5jaExheW91dD8udmlld3MoKS5tYXAodmlldyA9PiB2aWV3LmlkKSA/PyBbXSksXG4gICAgXSk7XG4gICAgcmV0dXJuIG5ldyBXb3JrYmVuY2hMYXlvdXREaWZmKHtcbiAgICAgIHBhcnRzOiB0aGlzLl9wYXJ0c0RpZmZlci5kaWZmKHBhcnRzKSxcbiAgICAgIHZpZXdzOiB0aGlzLl92aWV3c0RpZmZlci5kaWZmKHZpZXdzKSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIExpc3RzIHRoZSBsYXlvdXQgZWxlbWVudHMgYWRkZWQvcmVtb3ZlZCBpbiB0aGUgY3VycmVudCBuYXZpZ2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgV29ya2JlbmNoTGF5b3V0RGlmZiB7XG5cbiAgcHVibGljIHJlYWRvbmx5IGFkZGVkUGFydHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVtb3ZlZFBhcnRzID0gbmV3IEFycmF5PHN0cmluZz4oKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgYWRkZWRWaWV3cyA9IG5ldyBBcnJheTxWaWV3SWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSByZW1vdmVkVmlld3MgPSBuZXcgQXJyYXk8Vmlld0lkPigpO1xuXG4gIGNvbnN0cnVjdG9yKGNoYW5nZXM6IHtwYXJ0czogSXRlcmFibGVDaGFuZ2VzPHN0cmluZz4gfCBudWxsOyB2aWV3czogSXRlcmFibGVDaGFuZ2VzPFZpZXdJZD4gfCBudWxsfSkge1xuICAgIGNoYW5nZXMucGFydHM/LmZvckVhY2hBZGRlZEl0ZW0oKHtpdGVtfSkgPT4gdGhpcy5hZGRlZFBhcnRzLnB1c2goaXRlbSkpO1xuICAgIGNoYW5nZXMucGFydHM/LmZvckVhY2hSZW1vdmVkSXRlbSgoe2l0ZW19KSA9PiB0aGlzLnJlbW92ZWRQYXJ0cy5wdXNoKGl0ZW0pKTtcblxuICAgIGNoYW5nZXMudmlld3M/LmZvckVhY2hBZGRlZEl0ZW0oKHtpdGVtfSkgPT4gdGhpcy5hZGRlZFZpZXdzLnB1c2goaXRlbSkpO1xuICAgIGNoYW5nZXMudmlld3M/LmZvckVhY2hSZW1vdmVkSXRlbSgoe2l0ZW19KSA9PiB0aGlzLnJlbW92ZWRWaWV3cy5wdXNoKGl0ZW0pKTtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtuZXcgQXJyYXk8c3RyaW5nPigpXG4gICAgICAuY29uY2F0KHRoaXMuYWRkZWRQYXJ0cy5sZW5ndGggPyBgYWRkZWRQYXJ0cz1bJHt0aGlzLmFkZGVkUGFydHN9XWAgOiBbXSlcbiAgICAgIC5jb25jYXQodGhpcy5yZW1vdmVkUGFydHMubGVuZ3RoID8gYHJlbW92ZWRQYXJ0cz1bJHt0aGlzLnJlbW92ZWRQYXJ0c31dYCA6IFtdKVxuICAgICAgLmNvbmNhdCh0aGlzLmFkZGVkVmlld3MubGVuZ3RoID8gYGFkZGVkVmlld3M9WyR7dGhpcy5hZGRlZFZpZXdzfV1gIDogW10pXG4gICAgICAuY29uY2F0KHRoaXMucmVtb3ZlZFZpZXdzLmxlbmd0aCA/IGByZW1vdmVkVmlld3M9WyR7dGhpcy5yZW1vdmVkVmlld3N9XWAgOiBbXSlcbiAgICAgIC5qb2luKCcsICcpfWA7XG4gIH1cbn1cbiJdfQ==
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLWxheW91dC1kaWZmZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zY2lvbi93b3JrYmVuY2gvc3JjL2xpYi9yb3V0aW5nL3dvcmtiZW5jaC1sYXlvdXQtZGlmZmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztHQVFHO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBbUQsTUFBTSxlQUFlLENBQUM7O0FBSTNGOztHQUVHO0FBRUgsTUFBTSxPQUFPLHFCQUFxQjtJQUtoQyxZQUFZLE9BQXdCO1FBQ2xDLElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQVUsQ0FBQztRQUN0RCxJQUFJLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFVLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLGVBQXdDO1FBQ2xELE1BQU0sS0FBSyxHQUFHLGVBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsTUFBTSxLQUFLLEdBQUcsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUM1RCxPQUFPLElBQUksbUJBQW1CLENBQUM7WUFDN0IsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUM7OEdBcEJVLHFCQUFxQjtrSEFBckIscUJBQXFCLGNBRFQsTUFBTTs7MkZBQ2xCLHFCQUFxQjtrQkFEakMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUM7O0FBd0JoQzs7R0FFRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFROUIsWUFBWSxPQUF1RjtRQU5uRixlQUFVLEdBQUcsSUFBSSxLQUFLLEVBQVUsQ0FBQztRQUNqQyxpQkFBWSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFFbkMsZUFBVSxHQUFHLElBQUksS0FBSyxFQUFVLENBQUM7UUFDakMsaUJBQVksR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO1FBR2pELE9BQU8sQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRTVFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3hFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsa0JBQWtCLENBQUMsQ0FBQyxFQUFDLElBQUksRUFBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFTSxRQUFRO1FBQ2IsT0FBTyxHQUFHLElBQUksS0FBSyxFQUFVO2FBQzFCLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxJQUFJLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUN2RSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzthQUM3RSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGVBQWUsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDdkUsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7YUFDN0UsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDbEIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoYykgMjAxOC0yMDIzIFN3aXNzIEZlZGVyYWwgUmFpbHdheXNcbiAqXG4gKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4gKiBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDIuMFxuICogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4gKlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjBcbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGUsIEl0ZXJhYmxlQ2hhbmdlcywgSXRlcmFibGVEaWZmZXIsIEl0ZXJhYmxlRGlmZmVyc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge8m1V29ya2JlbmNoTGF5b3V0fSBmcm9tICcuLi9sYXlvdXQvybV3b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7Vmlld0lkfSBmcm9tICcuLi92aWV3L3dvcmtiZW5jaC12aWV3Lm1vZGVsJztcblxuLyoqXG4gKiBTdGF0ZWZ1bCBkaWZmZXIgZm9yIGZpbmRpbmcgYWRkZWQvcmVtb3ZlZCB3b3JrYmVuY2ggbGF5b3V0IGVsZW1lbnRzLlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hMYXlvdXREaWZmZXIge1xuXG4gIHByaXZhdGUgX3BhcnRzRGlmZmVyOiBJdGVyYWJsZURpZmZlcjxzdHJpbmc+O1xuICBwcml2YXRlIF92aWV3c0RpZmZlcjogSXRlcmFibGVEaWZmZXI8Vmlld0lkPjtcblxuICBjb25zdHJ1Y3RvcihkaWZmZXJzOiBJdGVyYWJsZURpZmZlcnMpIHtcbiAgICB0aGlzLl9wYXJ0c0RpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlPHN0cmluZz4oKTtcbiAgICB0aGlzLl92aWV3c0RpZmZlciA9IGRpZmZlcnMuZmluZChbXSkuY3JlYXRlPFZpZXdJZD4oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wdXRlcyBkaWZmZXJlbmNlcyBpbiB0aGUgbGF5b3V0IHNpbmNlIGxhc3QgdGltZSB7QGxpbmsgV29ya2JlbmNoTGF5b3V0RGlmZmVyI2RpZmZ9IHdhcyBpbnZva2VkLlxuICAgKi9cbiAgcHVibGljIGRpZmYod29ya2JlbmNoTGF5b3V0OiDJtVdvcmtiZW5jaExheW91dCB8IG51bGwpOiBXb3JrYmVuY2hMYXlvdXREaWZmIHtcbiAgICBjb25zdCBwYXJ0cyA9IHdvcmtiZW5jaExheW91dD8ucGFydHMoKS5tYXAocGFydCA9PiBwYXJ0LmlkKTtcbiAgICBjb25zdCB2aWV3cyA9IHdvcmtiZW5jaExheW91dD8udmlld3MoKS5tYXAodmlldyA9PiB2aWV3LmlkKTtcbiAgICByZXR1cm4gbmV3IFdvcmtiZW5jaExheW91dERpZmYoe1xuICAgICAgcGFydHM6IHRoaXMuX3BhcnRzRGlmZmVyLmRpZmYocGFydHMpLFxuICAgICAgdmlld3M6IHRoaXMuX3ZpZXdzRGlmZmVyLmRpZmYodmlld3MpLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogTGlzdHMgdGhlIGxheW91dCBlbGVtZW50cyBhZGRlZC9yZW1vdmVkIGluIHRoZSBjdXJyZW50IG5hdmlnYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hMYXlvdXREaWZmIHtcblxuICBwdWJsaWMgcmVhZG9ubHkgYWRkZWRQYXJ0cyA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIHB1YmxpYyByZWFkb25seSByZW1vdmVkUGFydHMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBhZGRlZFZpZXdzID0gbmV3IEFycmF5PFZpZXdJZD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IHJlbW92ZWRWaWV3cyA9IG5ldyBBcnJheTxWaWV3SWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoY2hhbmdlczoge3BhcnRzOiBJdGVyYWJsZUNoYW5nZXM8c3RyaW5nPiB8IG51bGw7IHZpZXdzOiBJdGVyYWJsZUNoYW5nZXM8Vmlld0lkPiB8IG51bGx9KSB7XG4gICAgY2hhbmdlcy5wYXJ0cz8uZm9yRWFjaEFkZGVkSXRlbSgoe2l0ZW19KSA9PiB0aGlzLmFkZGVkUGFydHMucHVzaChpdGVtKSk7XG4gICAgY2hhbmdlcy5wYXJ0cz8uZm9yRWFjaFJlbW92ZWRJdGVtKCh7aXRlbX0pID0+IHRoaXMucmVtb3ZlZFBhcnRzLnB1c2goaXRlbSkpO1xuXG4gICAgY2hhbmdlcy52aWV3cz8uZm9yRWFjaEFkZGVkSXRlbSgoe2l0ZW19KSA9PiB0aGlzLmFkZGVkVmlld3MucHVzaChpdGVtKSk7XG4gICAgY2hhbmdlcy52aWV3cz8uZm9yRWFjaFJlbW92ZWRJdGVtKCh7aXRlbX0pID0+IHRoaXMucmVtb3ZlZFZpZXdzLnB1c2goaXRlbSkpO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke25ldyBBcnJheTxzdHJpbmc+KClcbiAgICAgIC5jb25jYXQodGhpcy5hZGRlZFBhcnRzLmxlbmd0aCA/IGBhZGRlZFBhcnRzPVske3RoaXMuYWRkZWRQYXJ0c31dYCA6IFtdKVxuICAgICAgLmNvbmNhdCh0aGlzLnJlbW92ZWRQYXJ0cy5sZW5ndGggPyBgcmVtb3ZlZFBhcnRzPVske3RoaXMucmVtb3ZlZFBhcnRzfV1gIDogW10pXG4gICAgICAuY29uY2F0KHRoaXMuYWRkZWRWaWV3cy5sZW5ndGggPyBgYWRkZWRWaWV3cz1bJHt0aGlzLmFkZGVkVmlld3N9XWAgOiBbXSlcbiAgICAgIC5jb25jYXQodGhpcy5yZW1vdmVkVmlld3MubGVuZ3RoID8gYHJlbW92ZWRWaWV3cz1bJHt0aGlzLnJlbW92ZWRWaWV3c31dYCA6IFtdKVxuICAgICAgLmpvaW4oJywgJyl9YDtcbiAgfVxufVxuIl19
@@ -24,17 +24,18 @@ import { RouterUtils } from './router.util';
24
24
  import { canMatchNotFoundPage } from '../view/workbench-view-route-guards';
25
25
  import * as i0 from "@angular/core";
26
26
  import * as i1 from "@angular/router";
27
- import * as i2 from "./workbench-auxiliary-routes-registrator.service";
27
+ import * as i2 from "./workbench-auxiliary-route-installer.service";
28
28
  import * as i3 from "../view/workbench-view.registry";
29
29
  import * as i4 from "../part/workbench-part.registry";
30
30
  import * as i5 from "../layout/workbench-layout.service";
31
31
  import * as i6 from "./\u0275workbench-router.service";
32
32
  import * as i7 from "../layout/\u0275workbench-layout.factory";
33
33
  import * as i8 from "./workbench-layout-differ";
34
- import * as i9 from "./workbench-popup-differ";
35
- import * as i10 from "./workbench-dialog-differ";
36
- import * as i11 from "./workbench-message-box-differ";
37
- import * as i12 from "../logging";
34
+ import * as i9 from "./workbench-view-outlet-differ";
35
+ import * as i10 from "./workbench-popup-differ";
36
+ import * as i11 from "./workbench-dialog-differ";
37
+ import * as i12 from "./workbench-message-box-differ";
38
+ import * as i13 from "../logging";
38
39
  /**
39
40
  * Tracks the browser URL for workbench layout changes.
40
41
  *
@@ -45,9 +46,9 @@ import * as i12 from "../logging";
45
46
  * - Parses the serialized layout and injects it into {@link WorkbenchLayoutService}.
46
47
  */
47
48
  export class WorkbenchUrlObserver {
48
- constructor(_router, _auxiliaryRoutesRegistrator, _viewRegistry, _partRegistry, _workbenchLayoutService, _environmentInjector, _workbenchRouter, _workbenchLayoutFactory, _workbenchLayoutDiffer, _workbenchPopupDiffer, _workbenchDialogDiffer, _workbenchMessageBoxDiffer, _logger) {
49
+ constructor(_router, _auxiliaryRouteInstaller, _viewRegistry, _partRegistry, _workbenchLayoutService, _environmentInjector, _workbenchRouter, _workbenchLayoutFactory, _workbenchLayoutDiffer, _workbenchViewOutletDiffer, _workbenchPopupDiffer, _workbenchDialogDiffer, _workbenchMessageBoxDiffer, _logger) {
49
50
  this._router = _router;
50
- this._auxiliaryRoutesRegistrator = _auxiliaryRoutesRegistrator;
51
+ this._auxiliaryRouteInstaller = _auxiliaryRouteInstaller;
51
52
  this._viewRegistry = _viewRegistry;
52
53
  this._partRegistry = _partRegistry;
53
54
  this._workbenchLayoutService = _workbenchLayoutService;
@@ -55,6 +56,7 @@ export class WorkbenchUrlObserver {
55
56
  this._workbenchRouter = _workbenchRouter;
56
57
  this._workbenchLayoutFactory = _workbenchLayoutFactory;
57
58
  this._workbenchLayoutDiffer = _workbenchLayoutDiffer;
59
+ this._workbenchViewOutletDiffer = _workbenchViewOutletDiffer;
58
60
  this._workbenchPopupDiffer = _workbenchPopupDiffer;
59
61
  this._workbenchDialogDiffer = _workbenchDialogDiffer;
60
62
  this._workbenchMessageBoxDiffer = _workbenchMessageBoxDiffer;
@@ -128,7 +130,8 @@ export class WorkbenchUrlObserver {
128
130
  });
129
131
  return {
130
132
  layout,
131
- layoutDiff: this._workbenchLayoutDiffer.diff(layout, urlTree),
133
+ layoutDiff: this._workbenchLayoutDiffer.diff(layout),
134
+ viewOutletDiff: this._workbenchViewOutletDiffer.diff(layout, urlTree),
132
135
  popupDiff: this._workbenchPopupDiffer.diff(urlTree),
133
136
  dialogDiff: this._workbenchDialogDiffer.diff(urlTree),
134
137
  messageBoxDiff: this._workbenchMessageBoxDiffer.diff(urlTree),
@@ -140,27 +143,27 @@ export class WorkbenchUrlObserver {
140
143
  registerAddedOutletAuxiliaryRoutes() {
141
144
  const navigationContext = this._workbenchRouter.getCurrentNavigationContext();
142
145
  // Register view auxiliary routes.
143
- const addedViews = navigationContext.layoutDiff.addedViews;
144
- if (addedViews.length) {
145
- const auxiliaryRoutes = this._auxiliaryRoutesRegistrator.registerAuxiliaryRoutes(addedViews, { canMatchNotFoundPage: [canMatchNotFoundPage] });
146
- this._logger.debug(() => `Registered auxiliary routes for views: ${addedViews}`, LoggerNames.ROUTING, auxiliaryRoutes);
146
+ const addedViewOutlets = navigationContext.viewOutletDiff.addedViewOutlets;
147
+ if (addedViewOutlets.length) {
148
+ const auxiliaryRoutes = this._auxiliaryRouteInstaller.registerAuxiliaryRoutes(addedViewOutlets, { canMatchNotFoundPage: [canMatchNotFoundPage] });
149
+ this._logger.debug(() => `Registered auxiliary routes for views: ${addedViewOutlets}`, LoggerNames.ROUTING, auxiliaryRoutes);
147
150
  }
148
151
  // Register popup auxiliary routes.
149
152
  const addedPopupOutlets = navigationContext.popupDiff.addedPopupOutlets;
150
153
  if (addedPopupOutlets.length) {
151
- const auxiliaryRoutes = this._auxiliaryRoutesRegistrator.registerAuxiliaryRoutes(addedPopupOutlets);
154
+ const auxiliaryRoutes = this._auxiliaryRouteInstaller.registerAuxiliaryRoutes(addedPopupOutlets);
152
155
  this._logger.debug(() => `Registered auxiliary routes for popups: ${addedPopupOutlets}`, LoggerNames.ROUTING, auxiliaryRoutes);
153
156
  }
154
157
  // Register dialog auxiliary routes.
155
158
  const addedDialogOutlets = navigationContext.dialogDiff.addedDialogOutlets;
156
159
  if (addedDialogOutlets.length) {
157
- const auxiliaryRoutes = this._auxiliaryRoutesRegistrator.registerAuxiliaryRoutes(addedDialogOutlets);
160
+ const auxiliaryRoutes = this._auxiliaryRouteInstaller.registerAuxiliaryRoutes(addedDialogOutlets);
158
161
  this._logger.debug(() => `Registered auxiliary routes for dialogs: ${addedDialogOutlets}`, LoggerNames.ROUTING, auxiliaryRoutes);
159
162
  }
160
163
  // Register message box auxiliary routes.
161
164
  const addedMessageBoxOutlets = navigationContext.messageBoxDiff.addedMessageBoxOutlets;
162
165
  if (addedMessageBoxOutlets.length) {
163
- const auxiliaryRoutes = this._auxiliaryRoutesRegistrator.registerAuxiliaryRoutes(addedMessageBoxOutlets);
166
+ const auxiliaryRoutes = this._auxiliaryRouteInstaller.registerAuxiliaryRoutes(addedMessageBoxOutlets);
164
167
  this._logger.debug(() => `Registered auxiliary routes for message boxes: ${addedMessageBoxOutlets}`, LoggerNames.ROUTING, auxiliaryRoutes);
165
168
  }
166
169
  }
@@ -172,7 +175,8 @@ export class WorkbenchUrlObserver {
172
175
  undoWorkbenchDiffers() {
173
176
  const prevNavigateLayout = this._workbenchLayoutService.layout; // Layout in `WorkbenchLayoutService` is only updated after successful navigation
174
177
  const prevNavigateUrl = this._router.parseUrl(this._router.url); // Browser URL is only updated after successful navigation
175
- this._workbenchLayoutDiffer.diff(prevNavigateLayout, prevNavigateUrl);
178
+ this._workbenchLayoutDiffer.diff(prevNavigateLayout);
179
+ this._workbenchViewOutletDiffer.diff(prevNavigateLayout, prevNavigateUrl);
176
180
  this._workbenchPopupDiffer.diff(prevNavigateUrl);
177
181
  this._workbenchDialogDiffer.diff(prevNavigateUrl);
178
182
  this._workbenchMessageBoxDiffer.diff(prevNavigateUrl);
@@ -185,13 +189,13 @@ export class WorkbenchUrlObserver {
185
189
  undoAuxiliaryRoutesRegistration() {
186
190
  const navigationContext = this._workbenchRouter.getCurrentNavigationContext();
187
191
  const addedOutlets = [
188
- ...navigationContext.layoutDiff.addedViews,
192
+ ...navigationContext.viewOutletDiff.addedViewOutlets,
189
193
  ...navigationContext.popupDiff.addedPopupOutlets,
190
194
  ...navigationContext.dialogDiff.addedDialogOutlets,
191
195
  ...navigationContext.messageBoxDiff.addedMessageBoxOutlets,
192
196
  ];
193
197
  if (addedOutlets.length) {
194
- this._auxiliaryRoutesRegistrator.unregisterAuxiliaryRoutes(addedOutlets);
198
+ this._auxiliaryRouteInstaller.unregisterAuxiliaryRoutes(addedOutlets);
195
199
  this._logger.debug(() => `Undo auxiliary routes registration for outlet(s): ${addedOutlets}`, LoggerNames.ROUTING);
196
200
  }
197
201
  }
@@ -234,14 +238,14 @@ export class WorkbenchUrlObserver {
234
238
  unregisterRemovedOutletAuxiliaryRoutes() {
235
239
  const navigationContext = this._workbenchRouter.getCurrentNavigationContext();
236
240
  const removedOutlets = [
237
- ...navigationContext.layoutDiff.removedViews,
241
+ ...navigationContext.viewOutletDiff.removedViewOutlets,
238
242
  ...navigationContext.popupDiff.removedPopupOutlets,
239
243
  ...navigationContext.dialogDiff.removedDialogOutlets,
240
244
  ...navigationContext.messageBoxDiff.removedMessageBoxOutlets,
241
245
  ];
242
246
  if (removedOutlets.length) {
243
247
  this._logger.debug(() => 'Unregistering outlet auxiliary routes: ', LoggerNames.ROUTING, removedOutlets);
244
- this._auxiliaryRoutesRegistrator.unregisterAuxiliaryRoutes(removedOutlets);
248
+ this._auxiliaryRouteInstaller.unregisterAuxiliaryRoutes(removedOutlets);
245
249
  }
246
250
  }
247
251
  /**
@@ -249,10 +253,10 @@ export class WorkbenchUrlObserver {
249
253
  * - For each removed view, destroys the {@link WorkbenchView} and unregisters it in {@link WorkbenchViewRegistry}
250
254
  */
251
255
  updateViewRegistry() {
252
- const { layoutDiff } = this._workbenchRouter.getCurrentNavigationContext();
256
+ const { layoutDiff, layout } = this._workbenchRouter.getCurrentNavigationContext();
253
257
  layoutDiff.addedViews.forEach(viewId => {
254
258
  this._logger.debug(() => `Constructing ɵWorkbenchView [viewId=${viewId}]`, LoggerNames.LIFECYCLE);
255
- this._viewRegistry.register(this.createWorkbenchView(viewId));
259
+ this._viewRegistry.register(this.createWorkbenchView(viewId, layout));
256
260
  });
257
261
  layoutDiff.removedViews.forEach(viewId => {
258
262
  this._logger.debug(() => `Destroying ɵWorkbenchView [viewId=${viewId}]`, LoggerNames.LIFECYCLE);
@@ -279,8 +283,8 @@ export class WorkbenchUrlObserver {
279
283
  component: partId === MAIN_AREA ? MainAreaLayoutComponent : PartComponent,
280
284
  }));
281
285
  }
282
- createWorkbenchView(viewId) {
283
- return runInInjectionContext(this._environmentInjector, () => new ɵWorkbenchView(viewId, { component: ViewComponent }));
286
+ createWorkbenchView(viewId, layout) {
287
+ return runInInjectionContext(this._environmentInjector, () => new ɵWorkbenchView(viewId, { component: ViewComponent, layout }));
284
288
  }
285
289
  installRouterEventListeners() {
286
290
  this._router.events
@@ -303,11 +307,11 @@ export class WorkbenchUrlObserver {
303
307
  }
304
308
  });
305
309
  }
306
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchUrlObserver, deps: [{ token: i1.Router }, { token: i2.WorkbenchAuxiliaryRoutesRegistrator }, { token: i3.WorkbenchViewRegistry }, { token: i4.WorkbenchPartRegistry }, { token: i5.WorkbenchLayoutService }, { token: i0.EnvironmentInjector }, { token: i6.ɵWorkbenchRouter }, { token: i7.ɵWorkbenchLayoutFactory }, { token: i8.WorkbenchLayoutDiffer }, { token: i9.WorkbenchPopupDiffer }, { token: i10.WorkbenchDialogDiffer }, { token: i11.WorkbenchMessageBoxDiffer }, { token: i12.Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
310
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchUrlObserver, deps: [{ token: i1.Router }, { token: i2.WorkbenchAuxiliaryRouteInstaller }, { token: i3.WorkbenchViewRegistry }, { token: i4.WorkbenchPartRegistry }, { token: i5.WorkbenchLayoutService }, { token: i0.EnvironmentInjector }, { token: i6.ɵWorkbenchRouter }, { token: i7.ɵWorkbenchLayoutFactory }, { token: i8.WorkbenchLayoutDiffer }, { token: i9.WorkbenchViewOutletDiffer }, { token: i10.WorkbenchPopupDiffer }, { token: i11.WorkbenchDialogDiffer }, { token: i12.WorkbenchMessageBoxDiffer }, { token: i13.Logger }], target: i0.ɵɵFactoryTarget.Injectable }); }
307
311
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchUrlObserver, providedIn: 'root' }); }
308
312
  }
309
313
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.2", ngImport: i0, type: WorkbenchUrlObserver, decorators: [{
310
314
  type: Injectable,
311
315
  args: [{ providedIn: 'root' }]
312
- }], ctorParameters: () => [{ type: i1.Router }, { type: i2.WorkbenchAuxiliaryRoutesRegistrator }, { type: i3.WorkbenchViewRegistry }, { type: i4.WorkbenchPartRegistry }, { type: i5.WorkbenchLayoutService }, { type: i0.EnvironmentInjector }, { type: i6.ɵWorkbenchRouter }, { type: i7.ɵWorkbenchLayoutFactory }, { type: i8.WorkbenchLayoutDiffer }, { type: i9.WorkbenchPopupDiffer }, { type: i10.WorkbenchDialogDiffer }, { type: i11.WorkbenchMessageBoxDiffer }, { type: i12.Logger }] });
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXVybC1vYnNlcnZlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcm91dGluZy93b3JrYmVuY2gtdXJsLW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0VBUUU7QUFFRixPQUFPLEVBQVEsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFVLFdBQVcsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlJLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQXNCLFVBQVUsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVyRixPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUlwRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUdyRCxPQUFPLEVBQVMsV0FBVyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQy9DLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQzlGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFHOUQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUkxQyxPQUFPLEVB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Y0FBYyxDQUFDLE1BQU0sRUFBRSxFQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEgsQ0FBQztJQUVPLDJCQUEyQjtRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU07YUFDaEIsSUFBSSxDQUNILE1BQU0sQ0FBQyxDQUFDLEtBQTBCLEVBQXdCLEVBQUUsQ0FBQyxLQUFLLFlBQVksV0FBVyxDQUFDLEVBQzFGLGtCQUFrQixFQUFFLENBQ3JCO2FBQ0EsU0FBUyxDQUFDLENBQUMsS0FBa0IsRUFBRSxFQUFFO1lBQ2hDLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsQ0FBQztpQkFDSSxJQUFJLEtBQUssWUFBWSxhQUFhLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM5QixDQUFDO2lCQUNJLElBQUksS0FBSyxZQUFZLGdCQUFnQixFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQyxDQUFDO2lCQUNJLElBQUksS0FBSyxZQUFZLGVBQWUsRUFBRSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEMsQ0FBQztpQkFDSSxJQUFJLEtBQUssWUFBWSxjQUFjLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQy9CLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBblNVLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGNBRFIsTUFBTTs7MkZBQ2xCLG9CQUFvQjtrQkFEaEMsVUFBVTttQkFBQyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuKiBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyNCBTd2lzcyBGZWRlcmFsIFJhaWx3YXlzXG4qXG4qIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgYXJlIG1hZGVcbiogYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAyLjBcbiogd2hpY2ggaXMgYXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC0yLjAvXG4qXG4qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBFUEwtMi4wXG4qL1xuXG5pbXBvcnQge0V2ZW50LCBHdWFyZHNDaGVja0VuZCwgTmF2aWdhdGlvbkNhbmNlbCwgTmF2aWdhdGlvbkVuZCwgTmF2aWdhdGlvbkVycm9yLCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciwgUm91dGVyRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge2ZpbHRlcn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtFbnZpcm9ubWVudEluamVjdG9yLCBJbmplY3RhYmxlLCBydW5JbkluamVjdGlvbkNvbnRleHR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtXb3JrYmVuY2hBdXhpbGlhcnlSb3V0ZXNSZWdpc3RyYXRvcn0gZnJvbSAnLi93b3JrYmVuY2gtYXV4aWxpYXJ5LXJvdXRlcy1yZWdpc3RyYXRvci5zZXJ2aWNlJztcbmltcG9ydCB7TUFJTl9BUkVBX0xBWU9VVF9RVUVSWV9QQVJBTX0gZnJvbSAnLi4vd29ya2JlbmNoLmNvbnN0YW50cyc7XG5pbXBvcnQge1dvcmtiZW5jaFZpZXdSZWdpc3RyeX0gZnJvbSAnLi4vdmlldy93b3JrYmVuY2gtdmlldy5yZWdpc3RyeSc7XG5pbXBvcnQge1dvcmtiZW5jaFBhcnRSZWdpc3RyeX0gZnJvbSAnLi4vcGFydC93b3JrYmVuY2gtcGFydC5yZWdpc3RyeSc7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dFNlcnZpY2V9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0LnNlcnZpY2UnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFBhcnR9IGZyb20gJy4uL3BhcnQvybV3b3JrYmVuY2gtcGFydC5tb2RlbCc7XG5pbXBvcnQge8m1V29ya2JlbmNoVmlld30gZnJvbSAnLi4vdmlldy/JtXdvcmtiZW5jaC12aWV3Lm1vZGVsJztcbmltcG9ydCB7Vmlld0NvbXBvbmVudH0gZnJvbSAnLi4vdmlldy92aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQge1dvcmtiZW5jaExheW91dERpZmZlcn0gZnJvbSAnLi93b3JrYmVuY2gtbGF5b3V0LWRpZmZlcic7XG5pbXBvcnQge1dvcmtiZW5jaFBvcHVwRGlmZmVyfSBmcm9tICcuL3dvcmtiZW5jaC1wb3B1cC1kaWZmZXInO1xuaW1wb3J0IHtMb2dnZXIsIExvZ2dlck5hbWVzfSBmcm9tICcuLi9sb2dnaW5nJztcbmltcG9ydCB7V29ya2JlbmNoTmF2aWdhdGlvbmFsU3RhdGVzfSBmcm9tICcuL3dvcmtiZW5jaC1uYXZpZ2F0aW9uYWwtc3RhdGVzJztcbmltcG9ydCB7TWFpbkFyZWFMYXlvdXRDb21wb25lbnR9IGZyb20gJy4uL2xheW91dC9tYWluLWFyZWEtbGF5b3V0L21haW4tYXJlYS1sYXlvdXQuY29tcG9uZW50JztcbmltcG9ydCB7UGFydENvbXBvbmVudH0gZnJvbSAnLi4vcGFydC9wYXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQge01BSU5fQVJFQX0gZnJvbSAnLi4vbGF5b3V0L3dvcmtiZW5jaC1sYXlvdXQnO1xuaW1wb3J0IHt0YWtlVW50aWxEZXN0cm95ZWR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7ybVXb3JrYmVuY2hMYXlvdXRGYWN0b3J5fSBmcm9tICcuLi9sYXlvdXQvybV3b3JrYmVuY2gtbGF5b3V0LmZhY3RvcnknO1xuaW1wb3J0IHtXb3JrYmVuY2hEaWFsb2dEaWZmZXJ9IGZyb20gJy4vd29ya2JlbmNoLWRpYWxvZy1kaWZmZXInO1xuaW1wb3J0IHtSb3V0ZXJVdGlsc30gZnJvbSAnLi9yb3V0ZXIudXRpbCc7XG5pbXBvcnQge1ZpZXdJZH0gZnJvbSAnLi4vdmlldy93b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge8m1V29ya2JlbmNoUm91dGVyfSBmcm9tICcuL8m1d29ya2JlbmNoLXJvdXRlci5zZXJ2aWNlJztcbmltcG9ydCB7V29ya2JlbmNoTmF2aWdhdGlvbkNvbnRleHR9IGZyb20gJy4vcm91dGluZy5tb2RlbCc7XG5pbXBvcnQge2Nhbk1hdGNoTm90Rm91bmRQYWdlfSBmcm9tICcuLi92aWV3L3dvcmtiZW5jaC12aWV3LXJvdXRlLWd1YXJkcyc7XG5pbXBvcnQge1dvcmtiZW5jaE1lc3NhZ2VCb3hEaWZmZXJ9IGZyb20gJy4vd29ya2JlbmNoLW1lc3NhZ2UtYm94LWRpZmZlcic7XG5cbi8qKlxuICogVHJhY2tzIHRoZSBicm93c2VyIFVSTCBmb3Igd29ya2JlbmNoIGxheW91dCBjaGFuZ2VzLlxuICpcbiAqIC0gRm9yIGVhY2ggYWRkZWQgdmlldywgY29uc3RydWN0cyBhIHtAbGluayBXb3JrYmVuY2hWaWV3fSBhbmQgcmVnaXN0ZXJzIHZpZXcgc3BlY2lmaWMgYXV4aWxpYXJ5IHJvdXRlcyBvZiBhbGwgdG9wLWxldmVsIHJvdXRlc1xuICogLSBGb3IgZWFjaCByZW1vdmVkIHZpZXcsIGRlc3Ryb3lzIHtAbGluayBXb3JrYmVuY2hWaWV3fSBhbmQgdW5yZWdpc3RlcnMgaXRzIGF1eGlsaWFyeSByb3V0ZXNcbiAqIC0gRm9yIGVhY2ggYWRkZWQgcGFydCwgY29uc3RydWN0cyBhIHtAbGluayBXb3JrYmVuY2hQYXJ0fVxuICogLSBGb3IgZWFjaCByZW1vdmVkIHBhcnQsIGRlc3Ryb3lzIHtAbGluayBXb3JrYmVuY2hQYXJ0fVxuICogLSBQYXJzZXMgdGhlIHNlcmlhbGl6ZWQgbGF5b3V0IGFuZCBpbmplY3RzIGl0IGludG8ge0BsaW5rIFdvcmtiZW5jaExheW91dFNlcnZpY2V9LlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hVcmxPYnNlcnZlciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2F1eGlsaWFyeVJvdXRlc1JlZ2lzdHJhdG9yOiBXb3JrYmVuY2hBdXhpbGlhcnlSb3V0ZXNSZWdpc3RyYXRvcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld1JlZ2lzdHJ5OiBXb3JrYmVuY2hWaWV3UmVnaXN0cnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX3BhcnRSZWdpc3RyeTogV29ya2JlbmNoUGFydFJlZ2lzdHJ5LFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hMYXlvdXRTZXJ2aWNlOiBXb3JrYmVuY2hMYXlvdXRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9lbnZpcm9ubWVudEluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hSb3V0ZXI6IMm1V29ya2JlbmNoUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hMYXlvdXRGYWN0b3J5OiDJtVdvcmtiZW5jaExheW91dEZhY3RvcnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX3dvcmtiZW5jaExheW91dERpZmZlcjogV29ya2JlbmNoTGF5b3V0RGlmZmVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hQb3B1cERpZmZlcjogV29ya2JlbmNoUG9wdXBEaWZmZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3dvcmtiZW5jaERpYWxvZ0RpZmZlcjogV29ya2JlbmNoRGlhbG9nRGlmZmVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hNZXNzYWdlQm94RGlmZmVyOiBXb3JrYmVuY2hNZXNzYWdlQm94RGlmZmVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF9sb2dnZXI6IExvZ2dlcikge1xuICAgIHRoaXMuaW5zdGFsbFJvdXRlckV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICAvKiogSW52b2tlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggbmF2aWdhdGlvbiAqL1xuICBwcml2YXRlIG9uTmF2aWdhdGlvblN0YXJ0KGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jcmVhdGVXb3JrYmVuY2hOYXZpZ2F0aW9uQ29udGV4dChldmVudC51cmwpO1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnb25OYXZpZ2F0aW9uU3RhcnQnLCBMb2dnZXJOYW1lcy5ST1VUSU5HLCBldmVudCwgYE5hdmlnYXRpb25Db250ZXh0IFtwYXJ0cz0ke2NvbnRleHQubGF5b3V0LnBhcnRzKCkubWFwKHBhcnQgPT4gcGFydC5pZCl9LCBsYXlvdXREaWZmPSR7Y29udGV4dC5sYXlvdXREaWZmLnRvU3RyaW5nKCl9LCBwb3B1cERpZmY9JHtjb250ZXh0LnBvcHVwRGlmZi50b1N0cmluZygpfSwgZGlhbG9nRGlmZj0ke2NvbnRleHQuZGlhbG9nRGlmZi50b1N0cmluZygpfSwgbWVzc2FnZUJveERpZmY9JHtjb250ZXh0Lm1lc3NhZ2VCb3hEaWZmLnRvU3RyaW5nKCl9XWApO1xuICAgIHRoaXMuX3dvcmtiZW5jaFJvdXRlci5zZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoY29udGV4dCk7XG4gICAgdGhpcy5yZWdpc3RlckFkZGVkT3V0bGV0QXV4aWxpYXJ5Um91dGVzKCk7XG4gIH1cblxuICAvKiogSW52b2tlZCB1cG9uIHN1Y2Nlc3NmdWwgbmF2aWdhdGlvbiAqL1xuICBwcml2YXRlIG9uTmF2aWdhdGlvbkVuZChldmVudDogTmF2aWdhdGlvbkVuZCk6IHZvaWQge1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnb25OYXZpZ2F0aW9uRW5kJywgTG9nZ2VyTmFtZXMuUk9VVElORywgZXZlbnQpO1xuICAgIHRoaXMudW5yZWdpc3RlclJlbW92ZWRPdXRsZXRBdXhpbGlhcnlSb3V0ZXMoKTtcbiAgICB0aGlzLmFwcGx5V29ya2JlbmNoTGF5b3V0Q2hhbmdlcygpO1xuICAgIHRoaXMucHVibGlzaFdvcmtiZW5jaExheW91dCgpO1xuICAgIHRoaXMubWlncmF0ZVVSTCgpO1xuICAgIHRoaXMuX3dvcmtiZW5jaFJvdXRlci5zZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQobnVsbCk7XG4gIH1cblxuICAvKiogSW52b2tlZCB3aGVuIGNhbmNlbGxlZCB0aGUgbmF2aWdhdGlvbiwgZS5nLiwgaW4gYSBndWFyZCAqL1xuICBwcml2YXRlIG9uTmF2aWdhdGlvbkNhbmNlbChldmVudDogTmF2aWdhdGlvbkNhbmNlbCk6IHZvaWQge1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnb25OYXZpZ2F0aW9uQ2FuY2VsJywgTG9nZ2VyTmFtZXMuUk9VVElORywgZXZlbnQpO1xuICAgIHRoaXMudW5kb0F1eGlsaWFyeVJvdXRlc1JlZ2lzdHJhdGlvbigpO1xuICAgIHRoaXMudW5kb1dvcmtiZW5jaERpZmZlcnMoKTtcbiAgICB0aGlzLl93b3JrYmVuY2hSb3V0ZXIuc2V0Q3VycmVudE5hdmlnYXRpb25Db250ZXh0KG51bGwpO1xuICB9XG5cbiAgLyoqIEludm9rZWQgd2hlbiB0aGUgbmF2aWdhdGlvbiBmYWlsZWQgKi9cbiAgcHJpdmF0ZSBvbk5hdmlnYXRpb25FcnJvcihldmVudDogTmF2aWdhdGlvbkVycm9yKTogdm9pZCB7XG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+ICdvbk5hdmlnYXRpb25FcnJvcicsIExvZ2dlck5hbWVzLlJPVVRJTkcsIGV2ZW50KTtcbiAgICB0aGlzLnVuZG9BdXhpbGlhcnlSb3V0ZXNSZWdpc3RyYXRpb24oKTtcbiAgICB0aGlzLnVuZG9Xb3JrYmVuY2hEaWZmZXJzKCk7XG4gICAgdGhpcy5fd29ya2JlbmNoUm91dGVyLnNldEN1cnJlbnROYXZpZ2F0aW9uQ29udGV4dChudWxsKTtcbiAgfVxuXG4gIC8qKiBJbnZva2VkIGFmdGVyIGNoZWNrZWQgZ3VhcmRzIGZvciBhY3RpdmF0aW9uICovXG4gIHByaXZhdGUgb25HdWFyZHNDaGVja0VuZChldmVudDogR3VhcmRzQ2hlY2tFbmQpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gYG9uR3VhcmRzQ2hlY2tFbmQgW3Nob3VsZEFjdGl2YXRlPSR7ZXZlbnQuc2hvdWxkQWN0aXZhdGV9XWAsIExvZ2dlck5hbWVzLlJPVVRJTkcsIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG5hdmlnYXRpb24uIFRoZSBjb250ZXh0IHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbmV3IGxheW91dCBhbmQgaG93IGl0IGRpZmZlcnMgZnJvbSB0aGUgY3VycmVudCBsYXlvdXQuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVdvcmtiZW5jaE5hdmlnYXRpb25Db250ZXh0KHVybDogc3RyaW5nKTogV29ya2JlbmNoTmF2aWdhdGlvbkNvbnRleHQge1xuICAgIGNvbnN0IHVybFRyZWUgPSB0aGlzLl9yb3V0ZXIucGFyc2VVcmwodXJsKTtcbiAgICBjb25zdCB3b3JrYmVuY2hOYXZpZ2F0aW9uYWxTdGF0ZSA9IFdvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlcy5mcm9tTmF2aWdhdGlvbih0aGlzLl9yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSEpO1xuXG4gICAgY29uc3QgbGF5b3V0ID0gdGhpcy5fd29ya2JlbmNoTGF5b3V0RmFjdG9yeS5jcmVhdGUoe1xuICAgICAgbWFpbkFyZWFHcmlkOiAoKCkgPT4ge1xuICAgICAgICAvLyBSZWFkIHRoZSBtYWluIGFyZWEgZ3JpZCBmcm9tIHRoZSBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgIGNvbnN0IG1haW5BcmVhR3JpZCA9IHVybFRyZWUucXVlcnlQYXJhbU1hcC5nZXQoTUFJTl9BUkVBX0xBWU9VVF9RVUVSWV9QQVJBTSk7XG4gICAgICAgIGlmIChtYWluQXJlYUdyaWQpIHtcbiAgICAgICAgICByZXR1cm4gbWFpbkFyZWFHcmlkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG8gbm90IGZhbGwgYmFjayB0byB0aGUgY3VycmVudCBsYXlvdXQgaWYgdGhlIG5hdmlnYXRpb24gd2FzIHBlcmZvcm1lZCB2aWEgdGhlIFdvcmtiZW5jaCBSb3V0ZXIuXG4gICAgICAgIGNvbnN0IGlzV29ya2JlbmNoUm91dGVyTmF2aWdhdGlvbiA9IHdvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlICE9PSBudWxsO1xuICAgICAgICBpZiAoaXNXb3JrYmVuY2hSb3V0ZXJOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEbyBub3QgZmFsbCBiYWNrIHRvIHRoZSBjdXJyZW50IGxheW91dCBpZiB0aGUgbmF2aWdhdGlvbiB3YXMgdHJpZ2dlcmVkIGZyb20gb3V0c2lkZSB0aGUgQW5ndWxhciBSb3V0ZXIsIGkuZS4sIHRoZSBicm93c2VyIGJhY2svZm9yd2FyZCBidXR0b25zLlxuICAgICAgICBjb25zdCBpc0V4dGVybmFsTmF2aWdhdGlvbiA9IHRoaXMuX3JvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpIS50cmlnZ2VyID09PSAncG9wc3RhdGUnO1xuICAgICAgICBpZiAoaXNFeHRlcm5hbE5hdmlnYXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZhbGwgYmFjayB0byB0aGUgY3VycmVudCBsYXlvdXQgaWYgdGhlIG5hdmlnYXRpb24gd2FzIHBlcmZvcm1lZCB2aWEgdGhlIEFuZ3VsYXIgcm91dGVyLCBpLmUuLCB0aGUgbmF2aWdhdG9yIGRpZCBub3QgcHJlc2VydmUgdGhlIHF1ZXJ5IHBhcmFtcy5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UubGF5b3V0Py5tYWluQXJlYUdyaWQ7XG4gICAgICB9KSgpLFxuICAgICAgd29ya2JlbmNoR3JpZDogd29ya2JlbmNoTmF2aWdhdGlvbmFsU3RhdGU/LndvcmtiZW5jaEdyaWQgPz8gdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQ/LndvcmtiZW5jaEdyaWQsXG4gICAgICBtYXhpbWl6ZWQ6IHdvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlPy5tYXhpbWl6ZWQgPz8gdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQ/Lm1heGltaXplZCxcbiAgICAgIHZpZXdTdGF0ZXM6IHdvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlPy52aWV3U3RhdGVzID8/IHRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UubGF5b3V0Py52aWV3U3RhdGVzKCksXG4gICAgICB2aWV3T3V0bGV0czogT2JqZWN0LmZyb21FbnRyaWVzKFJvdXRlclV0aWxzLnBhcnNlVmlld091dGxldHModXJsVHJlZSkpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxheW91dCxcbiAgICAgIGxheW91dERpZmY6IHRoaXMuX3dvcmtiZW5jaExheW91dERpZmZlci5kaWZmKGxheW91dCwgdXJsVHJlZSksXG4gICAgICBwb3B1cERpZmY6IHRoaXMuX3dvcmtiZW5jaFBvcHVwRGlmZmVyLmRpZmYodXJsVHJlZSksXG4gICAgICBkaWFsb2dEaWZmOiB0aGlzLl93b3JrYmVuY2hEaWFsb2dEaWZmZXIuZGlmZih1cmxUcmVlKSxcbiAgICAgIG1lc3NhZ2VCb3hEaWZmOiB0aGlzLl93b3JrYmVuY2hNZXNzYWdlQm94RGlmZmVyLmRpZmYodXJsVHJlZSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgZWFjaCBhZGRlZCB3b3JrYmVuY2ggb3V0bGV0LCByZWdpc3RlcnMgYXV4aWxpYXJ5IHJvdXRlcyBvZiBhbGwgdG9wLWxldmVsIHJvdXRlcy5cbiAgICovXG4gIHByaXZhdGUgcmVnaXN0ZXJBZGRlZE91dGxldEF1eGlsaWFyeVJvdXRlcygpOiB2b2lkIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uQ29udGV4dCA9IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoKTtcblxuICAgIC8vIFJlZ2lzdGVyIHZpZXcgYXV4aWxpYXJ5IHJvdXRlcy5cbiAgICBjb25zdCBhZGRlZFZpZXdzID0gbmF2aWdhdGlvbkNvbnRleHQubGF5b3V0RGlmZi5hZGRlZFZpZXdzO1xuICAgIGlmIChhZGRlZFZpZXdzLmxlbmd0aCkge1xuICAgICAgY29uc3QgYXV4aWxpYXJ5Um91dGVzID0gdGhpcy5fYXV4aWxpYXJ5Um91dGVzUmVnaXN0cmF0b3IucmVnaXN0ZXJBdXhpbGlhcnlSb3V0ZXMoYWRkZWRWaWV3cywge2Nhbk1hdGNoTm90Rm91bmRQYWdlOiBbY2FuTWF0Y2hOb3RGb3VuZFBhZ2VdfSk7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gYFJlZ2lzdGVyZWQgYXV4aWxpYXJ5IHJvdXRlcyBmb3Igdmlld3M6ICR7YWRkZWRWaWV3c31gLCBMb2dnZXJOYW1lcy5ST1VUSU5HLCBhdXhpbGlhcnlSb3V0ZXMpO1xuICAgIH1cblxuICAgIC8vIFJlZ2lzdGVyIHBvcHVwIGF1eGlsaWFyeSByb3V0ZXMuXG4gICAgY29uc3QgYWRkZWRQb3B1cE91dGxldHMgPSBuYXZpZ2F0aW9uQ29udGV4dC5wb3B1cERpZmYuYWRkZWRQb3B1cE91dGxldHM7XG4gICAgaWYgKGFkZGVkUG9wdXBPdXRsZXRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgYXV4aWxpYXJ5Um91dGVzID0gdGhpcy5fYXV4aWxpYXJ5Um91dGVzUmVnaXN0cmF0b3IucmVnaXN0ZXJBdXhpbGlhcnlSb3V0ZXMoYWRkZWRQb3B1cE91dGxldHMpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBSZWdpc3RlcmVkIGF1eGlsaWFyeSByb3V0ZXMgZm9yIHBvcHVwczogJHthZGRlZFBvcHVwT3V0bGV0c31gLCBMb2dnZXJOYW1lcy5ST1VUSU5HLCBhdXhpbGlhcnlSb3V0ZXMpO1xuICAgIH1cblxuICAgIC8vIFJlZ2lzdGVyIGRpYWxvZyBhdXhpbGlhcnkgcm91dGVzLlxuICAgIGNvbnN0IGFkZGVkRGlhbG9nT3V0bGV0cyA9IG5hdmlnYXRpb25Db250ZXh0LmRpYWxvZ0RpZmYuYWRkZWREaWFsb2dPdXRsZXRzO1xuICAgIGlmIChhZGRlZERpYWxvZ091dGxldHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBhdXhpbGlhcnlSb3V0ZXMgPSB0aGlzLl9hdXhpbGlhcnlSb3V0ZXNSZWdpc3RyYXRvci5yZWdpc3RlckF1eGlsaWFyeVJvdXRlcyhhZGRlZERpYWxvZ091dGxldHMpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBSZWdpc3RlcmVkIGF1eGlsaWFyeSByb3V0ZXMgZm9yIGRpYWxvZ3M6ICR7YWRkZWREaWFsb2dPdXRsZXRzfWAsIExvZ2dlck5hbWVzLlJPVVRJTkcsIGF1eGlsaWFyeVJvdXRlcyk7XG4gICAgfVxuXG4gICAgLy8gUmVnaXN0ZXIgbWVzc2FnZSBib3ggYXV4aWxpYXJ5IHJvdXRlcy5cbiAgICBjb25zdCBhZGRlZE1lc3NhZ2VCb3hPdXRsZXRzID0gbmF2aWdhdGlvbkNvbnRleHQubWVzc2FnZUJveERpZmYuYWRkZWRNZXNzYWdlQm94T3V0bGV0cztcbiAgICBpZiAoYWRkZWRNZXNzYWdlQm94T3V0bGV0cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGF1eGlsaWFyeVJvdXRlcyA9IHRoaXMuX2F1eGlsaWFyeVJvdXRlc1JlZ2lzdHJhdG9yLnJlZ2lzdGVyQXV4aWxpYXJ5Um91dGVzKGFkZGVkTWVzc2FnZUJveE91dGxldHMpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBSZWdpc3RlcmVkIGF1eGlsaWFyeSByb3V0ZXMgZm9yIG1lc3NhZ2UgYm94ZXM6ICR7YWRkZWRNZXNzYWdlQm94T3V0bGV0c31gLCBMb2dnZXJOYW1lcy5ST1VUSU5HLCBhdXhpbGlhcnlSb3V0ZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXZlcnRzIHRoZSB3b3JrYmVuY2ggZGlmZmVycyB0byB0aGUgc3RhdGUgYmVmb3JlIHRoZSBuYXZpZ2F0aW9uLlxuICAgKlxuICAgKiBJbnZva2UgdGhpcyBtZXRob2QgYWZ0ZXIgbmF2aWdhdGlvbiBmYWlsdXJlIG9yIGNhbmNlbGxhdGlvbi4gVGhlIG5hdmlnYXRpb24gaXMgY2FuY2VsbGVkIHdoZW4gZ3VhcmRzIHBlcmZvcm0gYSByZWRpcmVjdCBvciByZWplY3QgbmF2aWdhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgdW5kb1dvcmtiZW5jaERpZmZlcnMoKTogdm9pZCB7XG4gICAgY29uc3QgcHJldk5hdmlnYXRlTGF5b3V0ID0gdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQ7IC8vIExheW91dCBpbiBgV29ya2JlbmNoTGF5b3V0U2VydmljZWAgaXMgb25seSB1cGRhdGVkIGFmdGVyIHN1Y2Nlc3NmdWwgbmF2aWdhdGlvblxuICAgIGNvbnN0IHByZXZOYXZpZ2F0ZVVybCA9IHRoaXMuX3JvdXRlci5wYXJzZVVybCh0aGlzLl9yb3V0ZXIudXJsKTsgLy8gQnJvd3NlciBVUkwgaXMgb25seSB1cGRhdGVkIGFmdGVyIHN1Y2Nlc3NmdWwgbmF2aWdhdGlvblxuICAgIHRoaXMuX3dvcmtiZW5jaExheW91dERpZmZlci5kaWZmKHByZXZOYXZpZ2F0ZUxheW91dCwgcHJldk5hdmlnYXRlVXJsKTtcbiAgICB0aGlzLl93b3JrYmVuY2hQb3B1cERpZmZlci5kaWZmKHByZXZOYXZpZ2F0ZVVybCk7XG4gICAgdGhpcy5fd29ya2JlbmNoRGlhbG9nRGlmZmVyLmRpZmYocHJldk5hdmlnYXRlVXJsKTtcbiAgICB0aGlzLl93b3JrYmVuY2hNZXNzYWdlQm94RGlmZmVyLmRpZmYocHJldk5hdmlnYXRlVXJsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmRvZXMgdGhlIHJlZ2lzdHJhdGlvbiBvZiBhdXhpbGlhcnkgcm91dGVzLlxuICAgKlxuICAgKiBJbnZva2UgdGhpcyBtZXRob2QgYWZ0ZXIgbmF2aWdhdGlvbiBmYWlsdXJlIG9yIGNhbmNlbGxhdGlvbi4gVGhlIG5hdmlnYXRpb24gaXMgY2FuY2VsbGVkIHdoZW4gZ3VhcmRzIHBlcmZvcm0gYSByZWRpcmVjdCBvciByZWplY3QgbmF2aWdhdGlvbi5cbiAgICovXG4gIHByaXZhdGUgdW5kb0F1eGlsaWFyeVJvdXRlc1JlZ2lzdHJhdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uQ29udGV4dCA9IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoKTtcbiAgICBjb25zdCBhZGRlZE91dGxldHM6IHN0cmluZ1tdID0gW1xuICAgICAgLi4ubmF2aWdhdGlvbkNvbnRleHQubGF5b3V0RGlmZi5hZGRlZFZpZXdzLFxuICAgICAgLi4ubmF2aWdhdGlvbkNvbnRleHQucG9wdXBEaWZmLmFkZGVkUG9wdXBPdXRsZXRzLFxuICAgICAgLi4ubmF2aWdhdGlvbkNvbnRleHQuZGlhbG9nRGlmZi5hZGRlZERpYWxvZ091dGxldHMsXG4gICAgICAuLi5uYXZpZ2F0aW9uQ29udGV4dC5tZXNzYWdlQm94RGlmZi5hZGRlZE1lc3NhZ2VCb3hPdXRsZXRzLFxuICAgIF07XG4gICAgaWYgKGFkZGVkT3V0bGV0cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuX2F1eGlsaWFyeVJvdXRlc1JlZ2lzdHJhdG9yLnVucmVnaXN0ZXJBdXhpbGlhcnlSb3V0ZXMoYWRkZWRPdXRsZXRzKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiBgVW5kbyBhdXhpbGlhcnkgcm91dGVzIHJlZ2lzdHJhdGlvbiBmb3Igb3V0bGV0KHMpOiAke2FkZGVkT3V0bGV0c31gLCBMb2dnZXJOYW1lcy5ST1VUSU5HKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyByZWdpc3RyaWVzIGFuZCB3b3JrYmVuY2ggaGFuZGxlcyB0byByZWZsZWN0IHRoZSBuZXcgbGF5b3V0LlxuICAgKi9cbiAgcHJpdmF0ZSBhcHBseVdvcmtiZW5jaExheW91dENoYW5nZXMoKTogdm9pZCB7XG4gICAgY29uc3Qge2xheW91dH0gPSB0aGlzLl93b3JrYmVuY2hSb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb25Db250ZXh0KCk7XG4gICAgaWYgKGxheW91dCAhPT0gdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQpIHsgLy8gTGF5b3V0IGluc3RhbmNlIGRvZXMgbm90IGNoYW5nZSBpZiBuYXZpZ2F0aW5nIHRocm91Z2ggdGhlIEFuZ3VsYXIgcm91dGVyLlxuICAgICAgdGhpcy51cGRhdGVWaWV3UmVnaXN0cnkoKTtcbiAgICAgIHRoaXMudXBkYXRlUGFydFJlZ2lzdHJ5KCk7XG5cbiAgICAgIGxheW91dC52aWV3cygpLmZvckVhY2godmlldyA9PiB0aGlzLl92aWV3UmVnaXN0cnkuZ2V0KHZpZXcuaWQpLm9uTGF5b3V0Q2hhbmdlKGxheW91dCkpO1xuICAgICAgbGF5b3V0LnBhcnRzKCkuZm9yRWFjaChwYXJ0ID0+IHRoaXMuX3BhcnRSZWdpc3RyeS5nZXQocGFydC5pZCkub25MYXlvdXRDaGFuZ2UobGF5b3V0KSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFB1Ymxpc2hlcyB0aGUgd29ya2JlbmNoIGxheW91dCB2aWEge0BsaW5rIFdvcmtiZW5jaExheW91dFNlcnZpY2V9LCBzaW1pbGFyIHRvIGEgdHJhbnNhY3Rpb25hbCBjb21taXQuXG4gICAqL1xuICBwcml2YXRlIHB1Ymxpc2hXb3JrYmVuY2hMYXlvdXQoKTogdm9pZCB7XG4gICAgY29uc3Qge2xheW91dH0gPSB0aGlzLl93b3JrYmVuY2hSb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb25Db250ZXh0KCk7XG4gICAgaWYgKGxheW91dCAhPT0gdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQpIHtcbiAgICAgIC8vIExheW91dCBpbnN0YW5jZSBvbmx5IGNoYW5nZXMgd2hlbiBuYXZpZ2F0aW5nIHZpYSB0aGUgd29ya2JlbmNoIHJvdXRlciwgYnV0IG5vdCB2aWEgdGhlIEFuZ3VsYXIgcm91dGVyLCBlLmcuLCB3aGVuIG5vdCBuYXZpZ2F0aW5nIHZpZXdzLlxuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+ICdQdWJsaXNoaW5nIHdvcmtiZW5jaCBsYXlvdXQnLCBMb2dnZXJOYW1lcy5ST1VUSU5HLCBsYXlvdXQpO1xuICAgICAgdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5zZXRMYXlvdXQobGF5b3V0KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgVVJMIGlmIHRoZSBsYXlvdXQgaGFzIGJlZW4gbWlncmF0ZWQgZnJvbSBhbiBvdXRkYXRlZCB2ZXJzaW9uLlxuICAgKi9cbiAgcHJpdmF0ZSBtaWdyYXRlVVJMKCk6IHZvaWQge1xuICAgIGNvbnN0IGxheW91dCA9IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoKS5sYXlvdXQ7XG4gICAgaWYgKGxheW91dC5tYWluQXJlYUdyaWQ/Lm1pZ3JhdGVkKSB7XG4gICAgICAvLyBVcGRhdGUgdGhlIFVSTCB3aXRoIHRoZSBtaWdyYXRlZCBVUkwgYW5kIGNsZWFyIGV4aXN0aW5nIHF1ZXJ5IHBhcmFtcywgZm9yIGV4YW1wbGUsIGlmIHRoZSBsYXlvdXQgcXVlcnkgcGFyYW1ldGVyIGhhcyBiZWVuIHJlbmFtZWQuXG4gICAgICB0aGlzLl93b3JrYmVuY2hSb3V0ZXIubmF2aWdhdGUobGF5b3V0ID0+IGxheW91dCwge3F1ZXJ5UGFyYW1zSGFuZGxpbmc6IG51bGwsIHJlcGxhY2VVcmw6IHRydWV9KS50aGVuKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFVucmVnaXN0ZXJzIGF1eGlsaWFyeSByb3V0ZXMgb2YgcmVtb3ZlZCB3b3JrYmVuY2ggb3V0bGV0cy5cbiAgICovXG4gIHByaXZhdGUgdW5yZWdpc3RlclJlbW92ZWRPdXRsZXRBdXhpbGlhcnlSb3V0ZXMoKTogdm9pZCB7XG4gICAgY29uc3QgbmF2aWdhdGlvbkNvbnRleHQgPSB0aGlzLl93b3JrYmVuY2hSb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb25Db250ZXh0KCk7XG4gICAgY29uc3QgcmVtb3ZlZE91dGxldHM6IHN0cmluZ1tdID0gW1xuICAgICAgLi4ubmF2aWdhdGlvbkNvbnRleHQubGF5b3V0RGlmZi5yZW1vdmVkVmlld3MsXG4gICAgICAuLi5uYXZpZ2F0aW9uQ29udGV4dC5wb3B1cERpZmYucmVtb3ZlZFBvcHVwT3V0bGV0cyxcbiAgICAgIC4uLm5hdmlnYXRpb25Db250ZXh0LmRpYWxvZ0RpZmYucmVtb3ZlZERpYWxvZ091dGxldHMsXG4gICAgICAuLi5uYXZpZ2F0aW9uQ29udGV4dC5tZXNzYWdlQm94RGlmZi5yZW1vdmVkTWVzc2FnZUJveE91dGxldHMsXG4gICAgXTtcbiAgICBpZiAocmVtb3ZlZE91dGxldHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gJ1VucmVnaXN0ZXJpbmcgb3V0bGV0IGF1eGlsaWFyeSByb3V0ZXM6ICcsIExvZ2dlck5hbWVzLlJPVVRJTkcsIHJlbW92ZWRPdXRsZXRzKTtcbiAgICAgIHRoaXMuX2F1eGlsaWFyeVJvdXRlc1JlZ2lzdHJhdG9yLnVucmVnaXN0ZXJBdXhpbGlhcnlSb3V0ZXMocmVtb3ZlZE91dGxldHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAtIEZvciBlYWNoIGFkZGVkIHZpZXcsIGNvbnN0cnVjdHMgYSB7QGxpbmsgV29ya2JlbmNoVmlld30gYW5kIHJlZ2lzdGVycyBpdCBpbiB7QGxpbmsgV29ya2JlbmNoVmlld1JlZ2lzdHJ5fVxuICAgKiAtIEZvciBlYWNoIHJlbW92ZWQgdmlldywgZGVzdHJveXMgdGhlIHtAbGluayBXb3JrYmVuY2hWaWV3fSBhbmQgdW5yZWdpc3RlcnMgaXQgaW4ge0BsaW5rIFdvcmtiZW5jaFZpZXdSZWdpc3RyeX1cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVmlld1JlZ2lzdHJ5KCk6IHZvaWQge1xuICAgIGNvbnN0IHtsYXlvdXREaWZmfSA9IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoKTtcblxuICAgIGxheW91dERpZmYuYWRkZWRWaWV3cy5mb3JFYWNoKHZpZXdJZCA9PiB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gYENvbnN0cnVjdGluZyDJtVdvcmtiZW5jaFZpZXcgW3ZpZXdJZD0ke3ZpZXdJZH1dYCwgTG9nZ2VyTmFtZXMuTElGRUNZQ0xFKTtcbiAgICAgIHRoaXMuX3ZpZXdSZWdpc3RyeS5yZWdpc3Rlcih0aGlzLmNyZWF0ZVdvcmtiZW5jaFZpZXcodmlld0lkKSk7XG4gICAgfSk7XG4gICAgbGF5b3V0RGlmZi5yZW1vdmVkVmlld3MuZm9yRWFjaCh2aWV3SWQgPT4ge1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBEZXN0cm95aW5nIMm1V29ya2JlbmNoVmlldyBbdmlld0lkPSR7dmlld0lkfV1gLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuICAgICAgdGhpcy5fdmlld1JlZ2lzdHJ5LnVucmVnaXN0ZXIodmlld0lkKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiAtIEZvciBlYWNoIGFkZGVkIHBhcnQsIGNvbnN0cnVjdHMgYSB7QGxpbmsgV29ya2JlbmNoUGFydH0gYW5kIHJlZ2lzdGVycyBpdCBpbiB7QGxpbmsgV29ya2JlbmNoUGFydFJlZ2lzdHJ5fVxuICAgKiAtIEZvciBlYWNoIHJlbW92ZWQgcGFydCwgZGVzdHJveXMgdGhlIHtAbGluayBXb3JrYmVuY2hQYXJ0fSBhbmQgdW5yZWdpc3RlcnMgaXQgaW4ge0BsaW5rIFdvcmtiZW5jaFBhcnRSZWdpc3RyeX1cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlUGFydFJlZ2lzdHJ5KCk6IHZvaWQge1xuICAgIGNvbnN0IHtsYXlvdXREaWZmfSA9IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoKTtcblxuICAgIGxheW91dERpZmYuYWRkZWRQYXJ0cy5mb3JFYWNoKHBhcnRJZCA9PiB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gYENvbnN0cnVjdGluZyDJtVdvcmtiZW5jaFBhcnQgW3BhcnRJZD0ke3BhcnRJZH1dYCwgTG9nZ2VyTmFtZXMuTElGRUNZQ0xFKTtcbiAgICAgIHRoaXMuX3BhcnRSZWdpc3RyeS5yZWdpc3Rlcih0aGlzLmNyZWF0ZVdvcmtiZW5jaFBhcnQocGFydElkKSk7XG4gICAgfSk7XG4gICAgbGF5b3V0RGlmZi5yZW1vdmVkUGFydHMuZm9yRWFjaChwYXJ0SWQgPT4ge1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBEZXN0cm95aW5nIMm1V29ya2JlbmNoUGFydCBbcGFydElkPSR7cGFydElkfV1gLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuICAgICAgdGhpcy5fcGFydFJlZ2lzdHJ5LnVucmVnaXN0ZXIocGFydElkKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlV29ya2JlbmNoUGFydChwYXJ0SWQ6IHN0cmluZyk6IMm1V29ya2JlbmNoUGFydCB7XG4gICAgcmV0dXJuIHJ1bkluSW5qZWN0aW9uQ29udGV4dCh0aGlzLl9lbnZpcm9ubWVudEluamVjdG9yLCAoKSA9PiBuZXcgybVXb3JrYmVuY2hQYXJ0KHBhcnRJZCwge1xuICAgICAgY29tcG9uZW50OiBwYXJ0SWQgPT09IE1BSU5fQVJFQSA/IE1haW5BcmVhTGF5b3V0Q29tcG9uZW50IDogUGFydENvbXBvbmVudCxcbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdvcmtiZW5jaFZpZXcodmlld0lkOiBWaWV3SWQpOiDJtVdvcmtiZW5jaFZpZXcge1xuICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5fZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4gbmV3IMm1V29ya2JlbmNoVmlldyh2aWV3SWQsIHtjb21wb25lbnQ6IFZpZXdDb21wb25lbnR9KSk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbGxSb3V0ZXJFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudDogRXZlbnQgfCBSb3V0ZXJFdmVudCk6IGV2ZW50IGlzIFJvdXRlckV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgUm91dGVyRXZlbnQpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLm9uTmF2aWdhdGlvblN0YXJ0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICB0aGlzLm9uTmF2aWdhdGlvbkVuZChldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsKSB7XG4gICAgICAgICAgdGhpcy5vbk5hdmlnYXRpb25DYW5jZWwoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgICAgICAgdGhpcy5vbk5hdmlnYXRpb25FcnJvcihldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBHdWFyZHNDaGVja0VuZCkge1xuICAgICAgICAgIHRoaXMub25HdWFyZHNDaGVja0VuZChldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
316
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i2.WorkbenchAuxiliaryRouteInstaller }, { type: i3.WorkbenchViewRegistry }, { type: i4.WorkbenchPartRegistry }, { type: i5.WorkbenchLayoutService }, { type: i0.EnvironmentInjector }, { type: i6.ɵWorkbenchRouter }, { type: i7.ɵWorkbenchLayoutFactory }, { type: i8.WorkbenchLayoutDiffer }, { type: i9.WorkbenchViewOutletDiffer }, { type: i10.WorkbenchPopupDiffer }, { type: i11.WorkbenchDialogDiffer }, { type: i12.WorkbenchMessageBoxDiffer }, { type: i13.Logger }] });
317
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2JlbmNoLXVybC1vYnNlcnZlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2Npb24vd29ya2JlbmNoL3NyYy9saWIvcm91dGluZy93b3JrYmVuY2gtdXJsLW9ic2VydmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0VBUUU7QUFFRixPQUFPLEVBQVEsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFVLFdBQVcsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzlJLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0QyxPQUFPLEVBQXNCLFVBQVUsRUFBRSxxQkFBcUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVyRixPQUFPLEVBQUMsNEJBQTRCLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUlwRSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQzdELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUdyRCxPQUFPLEVBQVMsV0FBVyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQy9DLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQzVFLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHVEQUF1RCxDQUFDO0FBQzlGLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDckQsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFHOUQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUkxQyxPQUFPLEVB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Q0FBQztZQUMvQixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQXRTVSxvQkFBb0I7a0hBQXBCLG9CQUFvQixjQURSLE1BQU07OzJGQUNsQixvQkFBb0I7a0JBRGhDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiogQ29weXJpZ2h0IChjKSAyMDE4LTIwMjQgU3dpc3MgRmVkZXJhbCBSYWlsd2F5c1xuKlxuKiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZSBtYWRlXG4qIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgMi4wXG4qIHdoaWNoIGlzIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wL1xuKlxuKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogRVBMLTIuMFxuKi9cblxuaW1wb3J0IHtFdmVudCwgR3VhcmRzQ2hlY2tFbmQsIE5hdmlnYXRpb25DYW5jZWwsIE5hdmlnYXRpb25FbmQsIE5hdmlnYXRpb25FcnJvciwgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIsIFJvdXRlckV2ZW50fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtmaWx0ZXJ9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7RW52aXJvbm1lbnRJbmplY3RvciwgSW5qZWN0YWJsZSwgcnVuSW5JbmplY3Rpb25Db250ZXh0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V29ya2JlbmNoQXV4aWxpYXJ5Um91dGVJbnN0YWxsZXJ9IGZyb20gJy4vd29ya2JlbmNoLWF1eGlsaWFyeS1yb3V0ZS1pbnN0YWxsZXIuc2VydmljZSc7XG5pbXBvcnQge01BSU5fQVJFQV9MQVlPVVRfUVVFUllfUEFSQU19IGZyb20gJy4uL3dvcmtiZW5jaC5jb25zdGFudHMnO1xuaW1wb3J0IHtXb3JrYmVuY2hWaWV3UmVnaXN0cnl9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcucmVnaXN0cnknO1xuaW1wb3J0IHtXb3JrYmVuY2hQYXJ0UmVnaXN0cnl9IGZyb20gJy4uL3BhcnQvd29ya2JlbmNoLXBhcnQucmVnaXN0cnknO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXRTZXJ2aWNlfSBmcm9tICcuLi9sYXlvdXQvd29ya2JlbmNoLWxheW91dC5zZXJ2aWNlJztcbmltcG9ydCB7ybVXb3JrYmVuY2hQYXJ0fSBmcm9tICcuLi9wYXJ0L8m1d29ya2JlbmNoLXBhcnQubW9kZWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFZpZXd9IGZyb20gJy4uL3ZpZXcvybV3b3JrYmVuY2gtdmlldy5tb2RlbCc7XG5pbXBvcnQge1ZpZXdDb21wb25lbnR9IGZyb20gJy4uL3ZpZXcvdmlldy5jb21wb25lbnQnO1xuaW1wb3J0IHtXb3JrYmVuY2hMYXlvdXREaWZmZXJ9IGZyb20gJy4vd29ya2JlbmNoLWxheW91dC1kaWZmZXInO1xuaW1wb3J0IHtXb3JrYmVuY2hQb3B1cERpZmZlcn0gZnJvbSAnLi93b3JrYmVuY2gtcG9wdXAtZGlmZmVyJztcbmltcG9ydCB7TG9nZ2VyLCBMb2dnZXJOYW1lc30gZnJvbSAnLi4vbG9nZ2luZyc7XG5pbXBvcnQge1dvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlc30gZnJvbSAnLi93b3JrYmVuY2gtbmF2aWdhdGlvbmFsLXN0YXRlcyc7XG5pbXBvcnQge01haW5BcmVhTGF5b3V0Q29tcG9uZW50fSBmcm9tICcuLi9sYXlvdXQvbWFpbi1hcmVhLWxheW91dC9tYWluLWFyZWEtbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQge1BhcnRDb21wb25lbnR9IGZyb20gJy4uL3BhcnQvcGFydC5jb21wb25lbnQnO1xuaW1wb3J0IHtNQUlOX0FSRUF9IGZyb20gJy4uL2xheW91dC93b3JrYmVuY2gtbGF5b3V0JztcbmltcG9ydCB7dGFrZVVudGlsRGVzdHJveWVkfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge8m1V29ya2JlbmNoTGF5b3V0RmFjdG9yeX0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dC5mYWN0b3J5JztcbmltcG9ydCB7V29ya2JlbmNoRGlhbG9nRGlmZmVyfSBmcm9tICcuL3dvcmtiZW5jaC1kaWFsb2ctZGlmZmVyJztcbmltcG9ydCB7Um91dGVyVXRpbHN9IGZyb20gJy4vcm91dGVyLnV0aWwnO1xuaW1wb3J0IHtWaWV3SWR9IGZyb20gJy4uL3ZpZXcvd29ya2JlbmNoLXZpZXcubW9kZWwnO1xuaW1wb3J0IHvJtVdvcmtiZW5jaFJvdXRlcn0gZnJvbSAnLi/JtXdvcmtiZW5jaC1yb3V0ZXIuc2VydmljZSc7XG5pbXBvcnQge1dvcmtiZW5jaE5hdmlnYXRpb25Db250ZXh0fSBmcm9tICcuL3JvdXRpbmcubW9kZWwnO1xuaW1wb3J0IHtjYW5NYXRjaE5vdEZvdW5kUGFnZX0gZnJvbSAnLi4vdmlldy93b3JrYmVuY2gtdmlldy1yb3V0ZS1ndWFyZHMnO1xuaW1wb3J0IHtXb3JrYmVuY2hNZXNzYWdlQm94RGlmZmVyfSBmcm9tICcuL3dvcmtiZW5jaC1tZXNzYWdlLWJveC1kaWZmZXInO1xuaW1wb3J0IHvJtVdvcmtiZW5jaExheW91dH0gZnJvbSAnLi4vbGF5b3V0L8m1d29ya2JlbmNoLWxheW91dCc7XG5pbXBvcnQge1dvcmtiZW5jaFZpZXdPdXRsZXREaWZmZXJ9IGZyb20gJy4vd29ya2JlbmNoLXZpZXctb3V0bGV0LWRpZmZlcic7XG5cbi8qKlxuICogVHJhY2tzIHRoZSBicm93c2VyIFVSTCBmb3Igd29ya2JlbmNoIGxheW91dCBjaGFuZ2VzLlxuICpcbiAqIC0gRm9yIGVhY2ggYWRkZWQgdmlldywgY29uc3RydWN0cyBhIHtAbGluayBXb3JrYmVuY2hWaWV3fSBhbmQgcmVnaXN0ZXJzIHZpZXcgc3BlY2lmaWMgYXV4aWxpYXJ5IHJvdXRlcyBvZiBhbGwgdG9wLWxldmVsIHJvdXRlc1xuICogLSBGb3IgZWFjaCByZW1vdmVkIHZpZXcsIGRlc3Ryb3lzIHtAbGluayBXb3JrYmVuY2hWaWV3fSBhbmQgdW5yZWdpc3RlcnMgaXRzIGF1eGlsaWFyeSByb3V0ZXNcbiAqIC0gRm9yIGVhY2ggYWRkZWQgcGFydCwgY29uc3RydWN0cyBhIHtAbGluayBXb3JrYmVuY2hQYXJ0fVxuICogLSBGb3IgZWFjaCByZW1vdmVkIHBhcnQsIGRlc3Ryb3lzIHtAbGluayBXb3JrYmVuY2hQYXJ0fVxuICogLSBQYXJzZXMgdGhlIHNlcmlhbGl6ZWQgbGF5b3V0IGFuZCBpbmplY3RzIGl0IGludG8ge0BsaW5rIFdvcmtiZW5jaExheW91dFNlcnZpY2V9LlxuICovXG5ASW5qZWN0YWJsZSh7cHJvdmlkZWRJbjogJ3Jvb3QnfSlcbmV4cG9ydCBjbGFzcyBXb3JrYmVuY2hVcmxPYnNlcnZlciB7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2F1eGlsaWFyeVJvdXRlSW5zdGFsbGVyOiBXb3JrYmVuY2hBdXhpbGlhcnlSb3V0ZUluc3RhbGxlcixcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfdmlld1JlZ2lzdHJ5OiBXb3JrYmVuY2hWaWV3UmVnaXN0cnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX3BhcnRSZWdpc3RyeTogV29ya2JlbmNoUGFydFJlZ2lzdHJ5LFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hMYXlvdXRTZXJ2aWNlOiBXb3JrYmVuY2hMYXlvdXRTZXJ2aWNlLFxuICAgICAgICAgICAgICBwcml2YXRlIF9lbnZpcm9ubWVudEluamVjdG9yOiBFbnZpcm9ubWVudEluamVjdG9yLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hSb3V0ZXI6IMm1V29ya2JlbmNoUm91dGVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hMYXlvdXRGYWN0b3J5OiDJtVdvcmtiZW5jaExheW91dEZhY3RvcnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX3dvcmtiZW5jaExheW91dERpZmZlcjogV29ya2JlbmNoTGF5b3V0RGlmZmVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hWaWV3T3V0bGV0RGlmZmVyOiBXb3JrYmVuY2hWaWV3T3V0bGV0RGlmZmVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hQb3B1cERpZmZlcjogV29ya2JlbmNoUG9wdXBEaWZmZXIsXG4gICAgICAgICAgICAgIHByaXZhdGUgX3dvcmtiZW5jaERpYWxvZ0RpZmZlcjogV29ya2JlbmNoRGlhbG9nRGlmZmVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF93b3JrYmVuY2hNZXNzYWdlQm94RGlmZmVyOiBXb3JrYmVuY2hNZXNzYWdlQm94RGlmZmVyLFxuICAgICAgICAgICAgICBwcml2YXRlIF9sb2dnZXI6IExvZ2dlcikge1xuICAgIHRoaXMuaW5zdGFsbFJvdXRlckV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICAvKiogSW52b2tlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGVhY2ggbmF2aWdhdGlvbiAqL1xuICBwcml2YXRlIG9uTmF2aWdhdGlvblN0YXJ0KGV2ZW50OiBOYXZpZ2F0aW9uU3RhcnQpOiB2b2lkIHtcbiAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5jcmVhdGVXb3JrYmVuY2hOYXZpZ2F0aW9uQ29udGV4dChldmVudC51cmwpO1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnb25OYXZpZ2F0aW9uU3RhcnQnLCBMb2dnZXJOYW1lcy5ST1VUSU5HLCBldmVudCwgYE5hdmlnYXRpb25Db250ZXh0IFtwYXJ0cz0ke2NvbnRleHQubGF5b3V0LnBhcnRzKCkubWFwKHBhcnQgPT4gcGFydC5pZCl9LCBsYXlvdXREaWZmPSR7Y29udGV4dC5sYXlvdXREaWZmLnRvU3RyaW5nKCl9LCBwb3B1cERpZmY9JHtjb250ZXh0LnBvcHVwRGlmZi50b1N0cmluZygpfSwgZGlhbG9nRGlmZj0ke2NvbnRleHQuZGlhbG9nRGlmZi50b1N0cmluZygpfSwgbWVzc2FnZUJveERpZmY9JHtjb250ZXh0Lm1lc3NhZ2VCb3hEaWZmLnRvU3RyaW5nKCl9XWApO1xuICAgIHRoaXMuX3dvcmtiZW5jaFJvdXRlci5zZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoY29udGV4dCk7XG4gICAgdGhpcy5yZWdpc3RlckFkZGVkT3V0bGV0QXV4aWxpYXJ5Um91dGVzKCk7XG4gIH1cblxuICAvKiogSW52b2tlZCB1cG9uIHN1Y2Nlc3NmdWwgbmF2aWdhdGlvbiAqL1xuICBwcml2YXRlIG9uTmF2aWdhdGlvbkVuZChldmVudDogTmF2aWdhdGlvbkVuZCk6IHZvaWQge1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnb25OYXZpZ2F0aW9uRW5kJywgTG9nZ2VyTmFtZXMuUk9VVElORywgZXZlbnQpO1xuICAgIHRoaXMudW5yZWdpc3RlclJlbW92ZWRPdXRsZXRBdXhpbGlhcnlSb3V0ZXMoKTtcbiAgICB0aGlzLmFwcGx5V29ya2JlbmNoTGF5b3V0Q2hhbmdlcygpO1xuICAgIHRoaXMucHVibGlzaFdvcmtiZW5jaExheW91dCgpO1xuICAgIHRoaXMubWlncmF0ZVVSTCgpO1xuICAgIHRoaXMuX3dvcmtiZW5jaFJvdXRlci5zZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQobnVsbCk7XG4gIH1cblxuICAvKiogSW52b2tlZCB3aGVuIGNhbmNlbGxlZCB0aGUgbmF2aWdhdGlvbiwgZS5nLiwgaW4gYSBndWFyZCAqL1xuICBwcml2YXRlIG9uTmF2aWdhdGlvbkNhbmNlbChldmVudDogTmF2aWdhdGlvbkNhbmNlbCk6IHZvaWQge1xuICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiAnb25OYXZpZ2F0aW9uQ2FuY2VsJywgTG9nZ2VyTmFtZXMuUk9VVElORywgZXZlbnQpO1xuICAgIHRoaXMudW5kb0F1eGlsaWFyeVJvdXRlc1JlZ2lzdHJhdGlvbigpO1xuICAgIHRoaXMudW5kb1dvcmtiZW5jaERpZmZlcnMoKTtcbiAgICB0aGlzLl93b3JrYmVuY2hSb3V0ZXIuc2V0Q3VycmVudE5hdmlnYXRpb25Db250ZXh0KG51bGwpO1xuICB9XG5cbiAgLyoqIEludm9rZWQgd2hlbiB0aGUgbmF2aWdhdGlvbiBmYWlsZWQgKi9cbiAgcHJpdmF0ZSBvbk5hdmlnYXRpb25FcnJvcihldmVudDogTmF2aWdhdGlvbkVycm9yKTogdm9pZCB7XG4gICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+ICdvbk5hdmlnYXRpb25FcnJvcicsIExvZ2dlck5hbWVzLlJPVVRJTkcsIGV2ZW50KTtcbiAgICB0aGlzLnVuZG9BdXhpbGlhcnlSb3V0ZXNSZWdpc3RyYXRpb24oKTtcbiAgICB0aGlzLnVuZG9Xb3JrYmVuY2hEaWZmZXJzKCk7XG4gICAgdGhpcy5fd29ya2JlbmNoUm91dGVyLnNldEN1cnJlbnROYXZpZ2F0aW9uQ29udGV4dChudWxsKTtcbiAgfVxuXG4gIC8qKiBJbnZva2VkIGFmdGVyIGNoZWNrZWQgZ3VhcmRzIGZvciBhY3RpdmF0aW9uICovXG4gIHByaXZhdGUgb25HdWFyZHNDaGVja0VuZChldmVudDogR3VhcmRzQ2hlY2tFbmQpOiB2b2lkIHtcbiAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gYG9uR3VhcmRzQ2hlY2tFbmQgW3Nob3VsZEFjdGl2YXRlPSR7ZXZlbnQuc2hvdWxkQWN0aXZhdGV9XWAsIExvZ2dlck5hbWVzLlJPVVRJTkcsIGV2ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IG5hdmlnYXRpb24uIFRoZSBjb250ZXh0IHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbmV3IGxheW91dCBhbmQgaG93IGl0IGRpZmZlcnMgZnJvbSB0aGUgY3VycmVudCBsYXlvdXQuXG4gICAqL1xuICBwcml2YXRlIGNyZWF0ZVdvcmtiZW5jaE5hdmlnYXRpb25Db250ZXh0KHVybDogc3RyaW5nKTogV29ya2JlbmNoTmF2aWdhdGlvbkNvbnRleHQge1xuICAgIGNvbnN0IHVybFRyZWUgPSB0aGlzLl9yb3V0ZXIucGFyc2VVcmwodXJsKTtcbiAgICBjb25zdCB3b3JrYmVuY2hOYXZpZ2F0aW9uYWxTdGF0ZSA9IFdvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlcy5mcm9tTmF2aWdhdGlvbih0aGlzLl9yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKSEpO1xuXG4gICAgY29uc3QgbGF5b3V0ID0gdGhpcy5fd29ya2JlbmNoTGF5b3V0RmFjdG9yeS5jcmVhdGUoe1xuICAgICAgbWFpbkFyZWFHcmlkOiAoKCkgPT4ge1xuICAgICAgICAvLyBSZWFkIHRoZSBtYWluIGFyZWEgZ3JpZCBmcm9tIHRoZSBxdWVyeSBwYXJhbWV0ZXIuXG4gICAgICAgIGNvbnN0IG1haW5BcmVhR3JpZCA9IHVybFRyZWUucXVlcnlQYXJhbU1hcC5nZXQoTUFJTl9BUkVBX0xBWU9VVF9RVUVSWV9QQVJBTSk7XG4gICAgICAgIGlmIChtYWluQXJlYUdyaWQpIHtcbiAgICAgICAgICByZXR1cm4gbWFpbkFyZWFHcmlkO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRG8gbm90IGZhbGwgYmFjayB0byB0aGUgY3VycmVudCBsYXlvdXQgaWYgdGhlIG5hdmlnYXRpb24gd2FzIHBlcmZvcm1lZCB2aWEgdGhlIFdvcmtiZW5jaCBSb3V0ZXIuXG4gICAgICAgIGNvbnN0IGlzV29ya2JlbmNoUm91dGVyTmF2aWdhdGlvbiA9IHdvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlICE9PSBudWxsO1xuICAgICAgICBpZiAoaXNXb3JrYmVuY2hSb3V0ZXJOYXZpZ2F0aW9uKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBEbyBub3QgZmFsbCBiYWNrIHRvIHRoZSBjdXJyZW50IGxheW91dCBpZiB0aGUgbmF2aWdhdGlvbiB3YXMgdHJpZ2dlcmVkIGZyb20gb3V0c2lkZSB0aGUgQW5ndWxhciBSb3V0ZXIsIGkuZS4sIHRoZSBicm93c2VyIGJhY2svZm9yd2FyZCBidXR0b25zLlxuICAgICAgICBjb25zdCBpc0V4dGVybmFsTmF2aWdhdGlvbiA9IHRoaXMuX3JvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpIS50cmlnZ2VyID09PSAncG9wc3RhdGUnO1xuICAgICAgICBpZiAoaXNFeHRlcm5hbE5hdmlnYXRpb24pIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEZhbGwgYmFjayB0byB0aGUgY3VycmVudCBsYXlvdXQgaWYgdGhlIG5hdmlnYXRpb24gd2FzIHBlcmZvcm1lZCB2aWEgdGhlIEFuZ3VsYXIgcm91dGVyLCBpLmUuLCB0aGUgbmF2aWdhdG9yIGRpZCBub3QgcHJlc2VydmUgdGhlIHF1ZXJ5IHBhcmFtcy5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UubGF5b3V0Py5tYWluQXJlYUdyaWQ7XG4gICAgICB9KSgpLFxuICAgICAgd29ya2JlbmNoR3JpZDogd29ya2JlbmNoTmF2aWdhdGlvbmFsU3RhdGU/LndvcmtiZW5jaEdyaWQgPz8gdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQ/LndvcmtiZW5jaEdyaWQsXG4gICAgICBtYXhpbWl6ZWQ6IHdvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlPy5tYXhpbWl6ZWQgPz8gdGhpcy5fd29ya2JlbmNoTGF5b3V0U2VydmljZS5sYXlvdXQ/Lm1heGltaXplZCxcbiAgICAgIHZpZXdTdGF0ZXM6IHdvcmtiZW5jaE5hdmlnYXRpb25hbFN0YXRlPy52aWV3U3RhdGVzID8/IHRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UubGF5b3V0Py52aWV3U3RhdGVzKCksXG4gICAgICB2aWV3T3V0bGV0czogT2JqZWN0LmZyb21FbnRyaWVzKFJvdXRlclV0aWxzLnBhcnNlVmlld091dGxldHModXJsVHJlZSkpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxheW91dCxcbiAgICAgIGxheW91dERpZmY6IHRoaXMuX3dvcmtiZW5jaExheW91dERpZmZlci5kaWZmKGxheW91dCksXG4gICAgICB2aWV3T3V0bGV0RGlmZjogdGhpcy5fd29ya2JlbmNoVmlld091dGxldERpZmZlci5kaWZmKGxheW91dCwgdXJsVHJlZSksXG4gICAgICBwb3B1cERpZmY6IHRoaXMuX3dvcmtiZW5jaFBvcHVwRGlmZmVyLmRpZmYodXJsVHJlZSksXG4gICAgICBkaWFsb2dEaWZmOiB0aGlzLl93b3JrYmVuY2hEaWFsb2dEaWZmZXIuZGlmZih1cmxUcmVlKSxcbiAgICAgIG1lc3NhZ2VCb3hEaWZmOiB0aGlzLl93b3JrYmVuY2hNZXNzYWdlQm94RGlmZmVyLmRpZmYodXJsVHJlZSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgZWFjaCBhZGRlZCB3b3JrYmVuY2ggb3V0bGV0LCByZWdpc3RlcnMgYXV4aWxpYXJ5IHJvdXRlcyBvZiBhbGwgdG9wLWxldmVsIHJvdXRlcy5cbiAgICovXG4gIHByaXZhdGUgcmVnaXN0ZXJBZGRlZE91dGxldEF1eGlsaWFyeVJvdXRlcygpOiB2b2lkIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uQ29udGV4dCA9IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoKTtcblxuICAgIC8vIFJlZ2lzdGVyIHZpZXcgYXV4aWxpYXJ5IHJvdXRlcy5cbiAgICBjb25zdCBhZGRlZFZpZXdPdXRsZXRzID0gbmF2aWdhdGlvbkNvbnRleHQudmlld091dGxldERpZmYuYWRkZWRWaWV3T3V0bGV0cztcbiAgICBpZiAoYWRkZWRWaWV3T3V0bGV0cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGF1eGlsaWFyeVJvdXRlcyA9IHRoaXMuX2F1eGlsaWFyeVJvdXRlSW5zdGFsbGVyLnJlZ2lzdGVyQXV4aWxpYXJ5Um91dGVzKGFkZGVkVmlld091dGxldHMsIHtjYW5NYXRjaE5vdEZvdW5kUGFnZTogW2Nhbk1hdGNoTm90Rm91bmRQYWdlXX0pO1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBSZWdpc3RlcmVkIGF1eGlsaWFyeSByb3V0ZXMgZm9yIHZpZXdzOiAke2FkZGVkVmlld091dGxldHN9YCwgTG9nZ2VyTmFtZXMuUk9VVElORywgYXV4aWxpYXJ5Um91dGVzKTtcbiAgICB9XG5cbiAgICAvLyBSZWdpc3RlciBwb3B1cCBhdXhpbGlhcnkgcm91dGVzLlxuICAgIGNvbnN0IGFkZGVkUG9wdXBPdXRsZXRzID0gbmF2aWdhdGlvbkNvbnRleHQucG9wdXBEaWZmLmFkZGVkUG9wdXBPdXRsZXRzO1xuICAgIGlmIChhZGRlZFBvcHVwT3V0bGV0cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGF1eGlsaWFyeVJvdXRlcyA9IHRoaXMuX2F1eGlsaWFyeVJvdXRlSW5zdGFsbGVyLnJlZ2lzdGVyQXV4aWxpYXJ5Um91dGVzKGFkZGVkUG9wdXBPdXRsZXRzKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiBgUmVnaXN0ZXJlZCBhdXhpbGlhcnkgcm91dGVzIGZvciBwb3B1cHM6ICR7YWRkZWRQb3B1cE91dGxldHN9YCwgTG9nZ2VyTmFtZXMuUk9VVElORywgYXV4aWxpYXJ5Um91dGVzKTtcbiAgICB9XG5cbiAgICAvLyBSZWdpc3RlciBkaWFsb2cgYXV4aWxpYXJ5IHJvdXRlcy5cbiAgICBjb25zdCBhZGRlZERpYWxvZ091dGxldHMgPSBuYXZpZ2F0aW9uQ29udGV4dC5kaWFsb2dEaWZmLmFkZGVkRGlhbG9nT3V0bGV0cztcbiAgICBpZiAoYWRkZWREaWFsb2dPdXRsZXRzLmxlbmd0aCkge1xuICAgICAgY29uc3QgYXV4aWxpYXJ5Um91dGVzID0gdGhpcy5fYXV4aWxpYXJ5Um91dGVJbnN0YWxsZXIucmVnaXN0ZXJBdXhpbGlhcnlSb3V0ZXMoYWRkZWREaWFsb2dPdXRsZXRzKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiBgUmVnaXN0ZXJlZCBhdXhpbGlhcnkgcm91dGVzIGZvciBkaWFsb2dzOiAke2FkZGVkRGlhbG9nT3V0bGV0c31gLCBMb2dnZXJOYW1lcy5ST1VUSU5HLCBhdXhpbGlhcnlSb3V0ZXMpO1xuICAgIH1cblxuICAgIC8vIFJlZ2lzdGVyIG1lc3NhZ2UgYm94IGF1eGlsaWFyeSByb3V0ZXMuXG4gICAgY29uc3QgYWRkZWRNZXNzYWdlQm94T3V0bGV0cyA9IG5hdmlnYXRpb25Db250ZXh0Lm1lc3NhZ2VCb3hEaWZmLmFkZGVkTWVzc2FnZUJveE91dGxldHM7XG4gICAgaWYgKGFkZGVkTWVzc2FnZUJveE91dGxldHMubGVuZ3RoKSB7XG4gICAgICBjb25zdCBhdXhpbGlhcnlSb3V0ZXMgPSB0aGlzLl9hdXhpbGlhcnlSb3V0ZUluc3RhbGxlci5yZWdpc3RlckF1eGlsaWFyeVJvdXRlcyhhZGRlZE1lc3NhZ2VCb3hPdXRsZXRzKTtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiBgUmVnaXN0ZXJlZCBhdXhpbGlhcnkgcm91dGVzIGZvciBtZXNzYWdlIGJveGVzOiAke2FkZGVkTWVzc2FnZUJveE91dGxldHN9YCwgTG9nZ2VyTmFtZXMuUk9VVElORywgYXV4aWxpYXJ5Um91dGVzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV2ZXJ0cyB0aGUgd29ya2JlbmNoIGRpZmZlcnMgdG8gdGhlIHN0YXRlIGJlZm9yZSB0aGUgbmF2aWdhdGlvbi5cbiAgICpcbiAgICogSW52b2tlIHRoaXMgbWV0aG9kIGFmdGVyIG5hdmlnYXRpb24gZmFpbHVyZSBvciBjYW5jZWxsYXRpb24uIFRoZSBuYXZpZ2F0aW9uIGlzIGNhbmNlbGxlZCB3aGVuIGd1YXJkcyBwZXJmb3JtIGEgcmVkaXJlY3Qgb3IgcmVqZWN0IG5hdmlnYXRpb24uXG4gICAqL1xuICBwcml2YXRlIHVuZG9Xb3JrYmVuY2hEaWZmZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXZOYXZpZ2F0ZUxheW91dCA9IHRoaXMuX3dvcmtiZW5jaExheW91dFNlcnZpY2UubGF5b3V0OyAvLyBMYXlvdXQgaW4gYFdvcmtiZW5jaExheW91dFNlcnZpY2VgIGlzIG9ubHkgdXBkYXRlZCBhZnRlciBzdWNjZXNzZnVsIG5hdmlnYXRpb25cbiAgICBjb25zdCBwcmV2TmF2aWdhdGVVcmwgPSB0aGlzLl9yb3V0ZXIucGFyc2VVcmwodGhpcy5fcm91dGVyLnVybCk7IC8vIEJyb3dzZXIgVVJMIGlzIG9ubHkgdXBkYXRlZCBhZnRlciBzdWNjZXNzZnVsIG5hdmlnYXRpb25cbiAgICB0aGlzLl93b3JrYmVuY2hMYXlvdXREaWZmZXIuZGlmZihwcmV2TmF2aWdhdGVMYXlvdXQpO1xuICAgIHRoaXMuX3dvcmtiZW5jaFZpZXdPdXRsZXREaWZmZXIuZGlmZihwcmV2TmF2aWdhdGVMYXlvdXQsIHByZXZOYXZpZ2F0ZVVybCk7XG4gICAgdGhpcy5fd29ya2JlbmNoUG9wdXBEaWZmZXIuZGlmZihwcmV2TmF2aWdhdGVVcmwpO1xuICAgIHRoaXMuX3dvcmtiZW5jaERpYWxvZ0RpZmZlci5kaWZmKHByZXZOYXZpZ2F0ZVVybCk7XG4gICAgdGhpcy5fd29ya2JlbmNoTWVzc2FnZUJveERpZmZlci5kaWZmKHByZXZOYXZpZ2F0ZVVybCk7XG4gIH1cblxuICAvKipcbiAgICogVW5kb2VzIHRoZSByZWdpc3RyYXRpb24gb2YgYXV4aWxpYXJ5IHJvdXRlcy5cbiAgICpcbiAgICogSW52b2tlIHRoaXMgbWV0aG9kIGFmdGVyIG5hdmlnYXRpb24gZmFpbHVyZSBvciBjYW5jZWxsYXRpb24uIFRoZSBuYXZpZ2F0aW9uIGlzIGNhbmNlbGxlZCB3aGVuIGd1YXJkcyBwZXJmb3JtIGEgcmVkaXJlY3Qgb3IgcmVqZWN0IG5hdmlnYXRpb24uXG4gICAqL1xuICBwcml2YXRlIHVuZG9BdXhpbGlhcnlSb3V0ZXNSZWdpc3RyYXRpb24oKTogdm9pZCB7XG4gICAgY29uc3QgbmF2aWdhdGlvbkNvbnRleHQgPSB0aGlzLl93b3JrYmVuY2hSb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb25Db250ZXh0KCk7XG4gICAgY29uc3QgYWRkZWRPdXRsZXRzOiBzdHJpbmdbXSA9IFtcbiAgICAgIC4uLm5hdmlnYXRpb25Db250ZXh0LnZpZXdPdXRsZXREaWZmLmFkZGVkVmlld091dGxldHMsXG4gICAgICAuLi5uYXZpZ2F0aW9uQ29udGV4dC5wb3B1cERpZmYuYWRkZWRQb3B1cE91dGxldHMsXG4gICAgICAuLi5uYXZpZ2F0aW9uQ29udGV4dC5kaWFsb2dEaWZmLmFkZGVkRGlhbG9nT3V0bGV0cyxcbiAgICAgIC4uLm5hdmlnYXRpb25Db250ZXh0Lm1lc3NhZ2VCb3hEaWZmLmFkZGVkTWVzc2FnZUJveE91dGxldHMsXG4gICAgXTtcbiAgICBpZiAoYWRkZWRPdXRsZXRzLmxlbmd0aCkge1xuICAgICAgdGhpcy5fYXV4aWxpYXJ5Um91dGVJbnN0YWxsZXIudW5yZWdpc3RlckF1eGlsaWFyeVJvdXRlcyhhZGRlZE91dGxldHMpO1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBVbmRvIGF1eGlsaWFyeSByb3V0ZXMgcmVnaXN0cmF0aW9uIGZvciBvdXRsZXQocyk6ICR7YWRkZWRPdXRsZXRzfWAsIExvZ2dlck5hbWVzLlJPVVRJTkcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHJlZ2lzdHJpZXMgYW5kIHdvcmtiZW5jaCBoYW5kbGVzIHRvIHJlZmxlY3QgdGhlIG5ldyBsYXlvdXQuXG4gICAqL1xuICBwcml2YXRlIGFwcGx5V29ya2JlbmNoTGF5b3V0Q2hhbmdlcygpOiB2b2lkIHtcbiAgICBjb25zdCB7bGF5b3V0fSA9IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoKTtcbiAgICBpZiAobGF5b3V0ICE9PSB0aGlzLl93b3JrYmVuY2hMYXlvdXRTZXJ2aWNlLmxheW91dCkgeyAvLyBMYXlvdXQgaW5zdGFuY2UgZG9lcyBub3QgY2hhbmdlIGlmIG5hdmlnYXRpbmcgdGhyb3VnaCB0aGUgQW5ndWxhciByb3V0ZXIuXG4gICAgICB0aGlzLnVwZGF0ZVZpZXdSZWdpc3RyeSgpO1xuICAgICAgdGhpcy51cGRhdGVQYXJ0UmVnaXN0cnkoKTtcblxuICAgICAgbGF5b3V0LnZpZXdzKCkuZm9yRWFjaCh2aWV3ID0+IHRoaXMuX3ZpZXdSZWdpc3RyeS5nZXQodmlldy5pZCkub25MYXlvdXRDaGFuZ2UobGF5b3V0KSk7XG4gICAgICBsYXlvdXQucGFydHMoKS5mb3JFYWNoKHBhcnQgPT4gdGhpcy5fcGFydFJlZ2lzdHJ5LmdldChwYXJ0LmlkKS5vbkxheW91dENoYW5nZShsYXlvdXQpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHVibGlzaGVzIHRoZSB3b3JrYmVuY2ggbGF5b3V0IHZpYSB7QGxpbmsgV29ya2JlbmNoTGF5b3V0U2VydmljZX0sIHNpbWlsYXIgdG8gYSB0cmFuc2FjdGlvbmFsIGNvbW1pdC5cbiAgICovXG4gIHByaXZhdGUgcHVibGlzaFdvcmtiZW5jaExheW91dCgpOiB2b2lkIHtcbiAgICBjb25zdCB7bGF5b3V0fSA9IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoKTtcbiAgICBpZiAobGF5b3V0ICE9PSB0aGlzLl93b3JrYmVuY2hMYXlvdXRTZXJ2aWNlLmxheW91dCkge1xuICAgICAgLy8gTGF5b3V0IGluc3RhbmNlIG9ubHkgY2hhbmdlcyB3aGVuIG5hdmlnYXRpbmcgdmlhIHRoZSB3b3JrYmVuY2ggcm91dGVyLCBidXQgbm90IHZpYSB0aGUgQW5ndWxhciByb3V0ZXIsIGUuZy4sIHdoZW4gbm90IG5hdmlnYXRpbmcgdmlld3MuXG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gJ1B1Ymxpc2hpbmcgd29ya2JlbmNoIGxheW91dCcsIExvZ2dlck5hbWVzLlJPVVRJTkcsIGxheW91dCk7XG4gICAgICB0aGlzLl93b3JrYmVuY2hMYXlvdXRTZXJ2aWNlLnNldExheW91dChsYXlvdXQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBVUkwgaWYgdGhlIGxheW91dCBoYXMgYmVlbiBtaWdyYXRlZCBmcm9tIGFuIG91dGRhdGVkIHZlcnNpb24uXG4gICAqL1xuICBwcml2YXRlIG1pZ3JhdGVVUkwoKTogdm9pZCB7XG4gICAgY29uc3QgbGF5b3V0ID0gdGhpcy5fd29ya2JlbmNoUm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uQ29udGV4dCgpLmxheW91dDtcbiAgICBpZiAobGF5b3V0Lm1haW5BcmVhR3JpZD8ubWlncmF0ZWQpIHtcbiAgICAgIC8vIFVwZGF0ZSB0aGUgVVJMIHdpdGggdGhlIG1pZ3JhdGVkIFVSTCBhbmQgY2xlYXIgZXhpc3RpbmcgcXVlcnkgcGFyYW1zLCBmb3IgZXhhbXBsZSwgaWYgdGhlIGxheW91dCBxdWVyeSBwYXJhbWV0ZXIgaGFzIGJlZW4gcmVuYW1lZC5cbiAgICAgIHRoaXMuX3dvcmtiZW5jaFJvdXRlci5uYXZpZ2F0ZShsYXlvdXQgPT4gbGF5b3V0LCB7cXVlcnlQYXJhbXNIYW5kbGluZzogbnVsbCwgcmVwbGFjZVVybDogdHJ1ZX0pLnRoZW4oKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVW5yZWdpc3RlcnMgYXV4aWxpYXJ5IHJvdXRlcyBvZiByZW1vdmVkIHdvcmtiZW5jaCBvdXRsZXRzLlxuICAgKi9cbiAgcHJpdmF0ZSB1bnJlZ2lzdGVyUmVtb3ZlZE91dGxldEF1eGlsaWFyeVJvdXRlcygpOiB2b2lkIHtcbiAgICBjb25zdCBuYXZpZ2F0aW9uQ29udGV4dCA9IHRoaXMuX3dvcmtiZW5jaFJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbkNvbnRleHQoKTtcbiAgICBjb25zdCByZW1vdmVkT3V0bGV0czogc3RyaW5nW10gPSBbXG4gICAgICAuLi5uYXZpZ2F0aW9uQ29udGV4dC52aWV3T3V0bGV0RGlmZi5yZW1vdmVkVmlld091dGxldHMsXG4gICAgICAuLi5uYXZpZ2F0aW9uQ29udGV4dC5wb3B1cERpZmYucmVtb3ZlZFBvcHVwT3V0bGV0cyxcbiAgICAgIC4uLm5hdmlnYXRpb25Db250ZXh0LmRpYWxvZ0RpZmYucmVtb3ZlZERpYWxvZ091dGxldHMsXG4gICAgICAuLi5uYXZpZ2F0aW9uQ29udGV4dC5tZXNzYWdlQm94RGlmZi5yZW1vdmVkTWVzc2FnZUJveE91dGxldHMsXG4gICAgXTtcbiAgICBpZiAocmVtb3ZlZE91dGxldHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLl9sb2dnZXIuZGVidWcoKCkgPT4gJ1VucmVnaXN0ZXJpbmcgb3V0bGV0IGF1eGlsaWFyeSByb3V0ZXM6ICcsIExvZ2dlck5hbWVzLlJPVVRJTkcsIHJlbW92ZWRPdXRsZXRzKTtcbiAgICAgIHRoaXMuX2F1eGlsaWFyeVJvdXRlSW5zdGFsbGVyLnVucmVnaXN0ZXJBdXhpbGlhcnlSb3V0ZXMocmVtb3ZlZE91dGxldHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiAtIEZvciBlYWNoIGFkZGVkIHZpZXcsIGNvbnN0cnVjdHMgYSB7QGxpbmsgV29ya2JlbmNoVmlld30gYW5kIHJlZ2lzdGVycyBpdCBpbiB7QGxpbmsgV29ya2JlbmNoVmlld1JlZ2lzdHJ5fVxuICAgKiAtIEZvciBlYWNoIHJlbW92ZWQgdmlldywgZGVzdHJveXMgdGhlIHtAbGluayBXb3JrYmVuY2hWaWV3fSBhbmQgdW5yZWdpc3RlcnMgaXQgaW4ge0BsaW5rIFdvcmtiZW5jaFZpZXdSZWdpc3RyeX1cbiAgICovXG4gIHByaXZhdGUgdXBkYXRlVmlld1JlZ2lzdHJ5KCk6IHZvaWQge1xuICAgIGNvbnN0IHtsYXlvdXREaWZmLCBsYXlvdXR9ID0gdGhpcy5fd29ya2JlbmNoUm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uQ29udGV4dCgpO1xuXG4gICAgbGF5b3V0RGlmZi5hZGRlZFZpZXdzLmZvckVhY2godmlld0lkID0+IHtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiBgQ29uc3RydWN0aW5nIMm1V29ya2JlbmNoVmlldyBbdmlld0lkPSR7dmlld0lkfV1gLCBMb2dnZXJOYW1lcy5MSUZFQ1lDTEUpO1xuICAgICAgdGhpcy5fdmlld1JlZ2lzdHJ5LnJlZ2lzdGVyKHRoaXMuY3JlYXRlV29ya2JlbmNoVmlldyh2aWV3SWQsIGxheW91dCkpO1xuICAgIH0pO1xuICAgIGxheW91dERpZmYucmVtb3ZlZFZpZXdzLmZvckVhY2godmlld0lkID0+IHtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiBgRGVzdHJveWluZyDJtVdvcmtiZW5jaFZpZXcgW3ZpZXdJZD0ke3ZpZXdJZH1dYCwgTG9nZ2VyTmFtZXMuTElGRUNZQ0xFKTtcbiAgICAgIHRoaXMuX3ZpZXdSZWdpc3RyeS51bnJlZ2lzdGVyKHZpZXdJZCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogLSBGb3IgZWFjaCBhZGRlZCBwYXJ0LCBjb25zdHJ1Y3RzIGEge0BsaW5rIFdvcmtiZW5jaFBhcnR9IGFuZCByZWdpc3RlcnMgaXQgaW4ge0BsaW5rIFdvcmtiZW5jaFBhcnRSZWdpc3RyeX1cbiAgICogLSBGb3IgZWFjaCByZW1vdmVkIHBhcnQsIGRlc3Ryb3lzIHRoZSB7QGxpbmsgV29ya2JlbmNoUGFydH0gYW5kIHVucmVnaXN0ZXJzIGl0IGluIHtAbGluayBXb3JrYmVuY2hQYXJ0UmVnaXN0cnl9XG4gICAqL1xuICBwcml2YXRlIHVwZGF0ZVBhcnRSZWdpc3RyeSgpOiB2b2lkIHtcbiAgICBjb25zdCB7bGF5b3V0RGlmZn0gPSB0aGlzLl93b3JrYmVuY2hSb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb25Db250ZXh0KCk7XG5cbiAgICBsYXlvdXREaWZmLmFkZGVkUGFydHMuZm9yRWFjaChwYXJ0SWQgPT4ge1xuICAgICAgdGhpcy5fbG9nZ2VyLmRlYnVnKCgpID0+IGBDb25zdHJ1Y3RpbmcgybVXb3JrYmVuY2hQYXJ0IFtwYXJ0SWQ9JHtwYXJ0SWR9XWAsIExvZ2dlck5hbWVzLkxJRkVDWUNMRSk7XG4gICAgICB0aGlzLl9wYXJ0UmVnaXN0cnkucmVnaXN0ZXIodGhpcy5jcmVhdGVXb3JrYmVuY2hQYXJ0KHBhcnRJZCkpO1xuICAgIH0pO1xuICAgIGxheW91dERpZmYucmVtb3ZlZFBhcnRzLmZvckVhY2gocGFydElkID0+IHtcbiAgICAgIHRoaXMuX2xvZ2dlci5kZWJ1ZygoKSA9PiBgRGVzdHJveWluZyDJtVdvcmtiZW5jaFBhcnQgW3BhcnRJZD0ke3BhcnRJZH1dYCwgTG9nZ2VyTmFtZXMuTElGRUNZQ0xFKTtcbiAgICAgIHRoaXMuX3BhcnRSZWdpc3RyeS51bnJlZ2lzdGVyKHBhcnRJZCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVdvcmtiZW5jaFBhcnQocGFydElkOiBzdHJpbmcpOiDJtVdvcmtiZW5jaFBhcnQge1xuICAgIHJldHVybiBydW5JbkluamVjdGlvbkNvbnRleHQodGhpcy5fZW52aXJvbm1lbnRJbmplY3RvciwgKCkgPT4gbmV3IMm1V29ya2JlbmNoUGFydChwYXJ0SWQsIHtcbiAgICAgIGNvbXBvbmVudDogcGFydElkID09PSBNQUlOX0FSRUEgPyBNYWluQXJlYUxheW91dENvbXBvbmVudCA6IFBhcnRDb21wb25lbnQsXG4gICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVXb3JrYmVuY2hWaWV3KHZpZXdJZDogVmlld0lkLCBsYXlvdXQ6IMm1V29ya2JlbmNoTGF5b3V0KTogybVXb3JrYmVuY2hWaWV3IHtcbiAgICByZXR1cm4gcnVuSW5JbmplY3Rpb25Db250ZXh0KHRoaXMuX2Vudmlyb25tZW50SW5qZWN0b3IsICgpID0+IG5ldyDJtVdvcmtiZW5jaFZpZXcodmlld0lkLCB7Y29tcG9uZW50OiBWaWV3Q29tcG9uZW50LCBsYXlvdXR9KSk7XG4gIH1cblxuICBwcml2YXRlIGluc3RhbGxSb3V0ZXJFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLl9yb3V0ZXIuZXZlbnRzXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChldmVudDogRXZlbnQgfCBSb3V0ZXJFdmVudCk6IGV2ZW50IGlzIFJvdXRlckV2ZW50ID0+IGV2ZW50IGluc3RhbmNlb2YgUm91dGVyRXZlbnQpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBSb3V0ZXJFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLm9uTmF2aWdhdGlvblN0YXJ0KGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICB0aGlzLm9uTmF2aWdhdGlvbkVuZChldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uQ2FuY2VsKSB7XG4gICAgICAgICAgdGhpcy5vbk5hdmlnYXRpb25DYW5jZWwoZXZlbnQpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVycm9yKSB7XG4gICAgICAgICAgdGhpcy5vbk5hdmlnYXRpb25FcnJvcihldmVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZXZlbnQgaW5zdGFuY2VvZiBHdWFyZHNDaGVja0VuZCkge1xuICAgICAgICAgIHRoaXMub25HdWFyZHNDaGVja0VuZChldmVudCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG59XG4iXX0=