@plumile/router 0.1.200 → 0.1.205

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 (131) hide show
  1. package/README.md +9 -9
  2. package/lib/esm/ResourcePage.d.ts +5 -4
  3. package/lib/esm/ResourcePage.d.ts.map +1 -1
  4. package/lib/esm/ResourcePage.js +5 -2
  5. package/lib/esm/builder.d.ts +5 -5
  6. package/lib/esm/builder.d.ts.map +1 -1
  7. package/lib/esm/builder.js +1 -1
  8. package/lib/esm/history/BrowserHistory.d.ts +2 -2
  9. package/lib/esm/history/BrowserHistory.d.ts.map +1 -1
  10. package/lib/esm/history/BrowserHistory.js +1 -1
  11. package/lib/esm/history/types.d.ts +7 -1
  12. package/lib/esm/history/types.d.ts.map +1 -1
  13. package/lib/esm/history/types.js +1 -1
  14. package/lib/esm/instrumentation/Instrumentation.d.ts +0 -1
  15. package/lib/esm/instrumentation/Instrumentation.d.ts.map +1 -1
  16. package/lib/esm/instrumentation/Instrumentation.js +1 -1
  17. package/lib/esm/instrumentation/adapters/devtoolsBridge.d.ts +3 -1
  18. package/lib/esm/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -1
  19. package/lib/esm/instrumentation/adapters/devtoolsBridge.js +12 -7
  20. package/lib/esm/internal/routerLoadState.d.ts +10 -0
  21. package/lib/esm/internal/routerLoadState.d.ts.map +1 -0
  22. package/lib/esm/internal/routerLoadState.js +51 -0
  23. package/lib/esm/internal/routerSearchState.d.ts +11 -0
  24. package/lib/esm/internal/routerSearchState.d.ts.map +1 -0
  25. package/lib/esm/internal/routerSearchState.js +15 -0
  26. package/lib/esm/routing/Link.d.ts +2 -4
  27. package/lib/esm/routing/Link.d.ts.map +1 -1
  28. package/lib/esm/routing/Link.js +6 -28
  29. package/lib/esm/routing/RouteComponentWrapper.d.ts +2 -2
  30. package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -1
  31. package/lib/esm/routing/RouteComponentWrapper.js +14 -11
  32. package/lib/esm/routing/RouterRenderer.js +9 -9
  33. package/lib/esm/routing/RoutingContext.d.ts +2 -2
  34. package/lib/esm/routing/RoutingContext.d.ts.map +1 -1
  35. package/lib/esm/routing/RoutingContext.js +1 -1
  36. package/lib/esm/routing/createRouter.d.ts +4 -6
  37. package/lib/esm/routing/createRouter.d.ts.map +1 -1
  38. package/lib/esm/routing/createRouter.js +6 -77
  39. package/lib/esm/routing/createStaticRouter.d.ts +4 -5
  40. package/lib/esm/routing/createStaticRouter.d.ts.map +1 -1
  41. package/lib/esm/routing/createStaticRouter.js +8 -50
  42. package/lib/esm/routing/useFilterDiagnostics.d.ts.map +1 -1
  43. package/lib/esm/routing/useFilterDiagnostics.js +4 -5
  44. package/lib/esm/routing/useFilters.d.ts +0 -5
  45. package/lib/esm/routing/useFilters.d.ts.map +1 -1
  46. package/lib/esm/routing/useFilters.js +12 -30
  47. package/lib/esm/routing/useLocation.d.ts +2 -1
  48. package/lib/esm/routing/useLocation.d.ts.map +1 -1
  49. package/lib/esm/routing/useLocation.js +1 -1
  50. package/lib/esm/routing/usePathname.d.ts.map +1 -1
  51. package/lib/esm/routing/usePathname.js +2 -5
  52. package/lib/esm/routing/useQueryState.d.ts +0 -1
  53. package/lib/esm/routing/useQueryState.d.ts.map +1 -1
  54. package/lib/esm/routing/useQueryState.js +1 -1
  55. package/lib/esm/routing/useRouteTelemetry.d.ts +2 -1
  56. package/lib/esm/routing/useRouteTelemetry.d.ts.map +1 -1
  57. package/lib/esm/routing/useRouteTelemetry.js +1 -1
  58. package/lib/esm/tools/buildCombinedSearch.js +1 -1
  59. package/lib/esm/tools.d.ts +5 -4
  60. package/lib/esm/tools.d.ts.map +1 -1
  61. package/lib/esm/tools.js +2 -5
  62. package/lib/esm/types.d.ts +12 -22
  63. package/lib/esm/types.d.ts.map +1 -1
  64. package/lib/esm/types.js +1 -1
  65. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  66. package/lib/types/ResourcePage.d.ts +5 -4
  67. package/lib/types/ResourcePage.d.ts.map +1 -1
  68. package/lib/types/builder.d.ts +5 -5
  69. package/lib/types/builder.d.ts.map +1 -1
  70. package/lib/types/history/BrowserHistory.d.ts +2 -2
  71. package/lib/types/history/BrowserHistory.d.ts.map +1 -1
  72. package/lib/types/history/types.d.ts +7 -1
  73. package/lib/types/history/types.d.ts.map +1 -1
  74. package/lib/types/instrumentation/Instrumentation.d.ts +0 -1
  75. package/lib/types/instrumentation/Instrumentation.d.ts.map +1 -1
  76. package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts +3 -1
  77. package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -1
  78. package/lib/types/internal/routerLoadState.d.ts +10 -0
  79. package/lib/types/internal/routerLoadState.d.ts.map +1 -0
  80. package/lib/types/internal/routerSearchState.d.ts +11 -0
  81. package/lib/types/internal/routerSearchState.d.ts.map +1 -0
  82. package/lib/types/routing/Link.d.ts +2 -4
  83. package/lib/types/routing/Link.d.ts.map +1 -1
  84. package/lib/types/routing/RouteComponentWrapper.d.ts +2 -2
  85. package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -1
  86. package/lib/types/routing/RoutingContext.d.ts +2 -2
  87. package/lib/types/routing/RoutingContext.d.ts.map +1 -1
  88. package/lib/types/routing/createRouter.d.ts +4 -6
  89. package/lib/types/routing/createRouter.d.ts.map +1 -1
  90. package/lib/types/routing/createStaticRouter.d.ts +4 -5
  91. package/lib/types/routing/createStaticRouter.d.ts.map +1 -1
  92. package/lib/types/routing/useFilterDiagnostics.d.ts.map +1 -1
  93. package/lib/types/routing/useFilters.d.ts +0 -5
  94. package/lib/types/routing/useFilters.d.ts.map +1 -1
  95. package/lib/types/routing/useLocation.d.ts +2 -1
  96. package/lib/types/routing/useLocation.d.ts.map +1 -1
  97. package/lib/types/routing/usePathname.d.ts.map +1 -1
  98. package/lib/types/routing/useQueryState.d.ts +0 -1
  99. package/lib/types/routing/useQueryState.d.ts.map +1 -1
  100. package/lib/types/routing/useRouteTelemetry.d.ts +2 -1
  101. package/lib/types/routing/useRouteTelemetry.d.ts.map +1 -1
  102. package/lib/types/tools.d.ts +5 -4
  103. package/lib/types/tools.d.ts.map +1 -1
  104. package/lib/types/types.d.ts +12 -22
  105. package/lib/types/types.d.ts.map +1 -1
  106. package/package.json +11 -6
  107. package/lib/esm/routing/RouterPrimitives.stories.d.ts +0 -18
  108. package/lib/esm/routing/RouterPrimitives.stories.d.ts.map +0 -1
  109. package/lib/esm/routing/RouterPrimitives.stories.js +0 -96
  110. package/lib/esm/type-tests/navigation-destination.test-d.d.ts +0 -2
  111. package/lib/esm/type-tests/navigation-destination.test-d.d.ts.map +0 -1
  112. package/lib/esm/type-tests/navigation-destination.test-d.js +0 -74
  113. package/lib/esm/type-tests/query-infer.test-d.d.ts +0 -2
  114. package/lib/esm/type-tests/query-infer.test-d.d.ts.map +0 -1
  115. package/lib/esm/type-tests/query-infer.test-d.js +0 -2
  116. package/lib/esm/type-tests/routes-inference.test-d.d.ts +0 -1
  117. package/lib/esm/type-tests/routes-inference.test-d.d.ts.map +0 -1
  118. package/lib/esm/type-tests/routes-inference.test-d.js +0 -2
  119. package/lib/esm/type-tests/useFilters-typed.test-d.d.ts +0 -2
  120. package/lib/esm/type-tests/useFilters-typed.test-d.d.ts.map +0 -1
  121. package/lib/esm/type-tests/useFilters-typed.test-d.js +0 -33
  122. package/lib/types/routing/RouterPrimitives.stories.d.ts +0 -18
  123. package/lib/types/routing/RouterPrimitives.stories.d.ts.map +0 -1
  124. package/lib/types/type-tests/navigation-destination.test-d.d.ts +0 -2
  125. package/lib/types/type-tests/navigation-destination.test-d.d.ts.map +0 -1
  126. package/lib/types/type-tests/query-infer.test-d.d.ts +0 -2
  127. package/lib/types/type-tests/query-infer.test-d.d.ts.map +0 -1
  128. package/lib/types/type-tests/routes-inference.test-d.d.ts +0 -1
  129. package/lib/types/type-tests/routes-inference.test-d.d.ts.map +0 -1
  130. package/lib/types/type-tests/useFilters-typed.test-d.d.ts +0 -2
  131. package/lib/types/type-tests/useFilters-typed.test-d.d.ts.map +0 -1
@@ -0,0 +1,10 @@
1
+ import type { ParamData } from 'path-to-regexp';
2
+ import type { RouteEntry, RouterActiveLoadState, RouterLoadState } from '../types.js';
3
+ import type { RouterQuerySchema } from './routerSearchState.js';
4
+ type PreparedMatch<TContext> = RouteEntry<ParamData, RouterQuerySchema, TContext>['preparedMatch'];
5
+ export declare function calculateLoadState<TContext>(preparedMatch: PreparedMatch<TContext>, version: number): {
6
+ activeLoadState: RouterActiveLoadState;
7
+ loadState: RouterLoadState;
8
+ };
9
+ export {};
10
+ //# sourceMappingURL=routerLoadState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routerLoadState.d.ts","sourceRoot":"","sources":["../../../src/internal/routerLoadState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACrB,eAAe,EAEhB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,KAAK,aAAa,CAAC,QAAQ,IAAI,UAAU,CACvC,SAAS,EACT,iBAAiB,EACjB,QAAQ,CACT,CAAC,eAAe,CAAC,CAAC;AAiBnB,wBAAgB,kBAAkB,CAAC,QAAQ,EACzC,aAAa,EAAE,aAAa,CAAC,QAAQ,CAAC,EACtC,OAAO,EAAE,MAAM,GACd;IAAE,eAAe,EAAE,qBAAqB,CAAC;IAAC,SAAS,EAAE,eAAe,CAAA;CAAE,CAuCxE"}
@@ -0,0 +1,51 @@
1
+ function deriveSegmentStatus(input) {
2
+ if (input.prepareStatus === 'pending' || input.codeStatus === 'pending') {
3
+ return 'pending';
4
+ }
5
+ if (input.prepareStatus === 'rejected' || input.codeStatus === 'rejected') {
6
+ return 'rejected';
7
+ }
8
+ return 'resolved';
9
+ }
10
+ export function calculateLoadState(preparedMatch, version) {
11
+ const segments = preparedMatch.segments.map((segment) => {
12
+ const prepareStatus = segment.preparedResource?.getStatus() ?? 'idle';
13
+ const codeStatus = segment.resourcePage?.getStatus() ?? 'idle';
14
+ const status = deriveSegmentStatus({ prepareStatus, codeStatus });
15
+ return {
16
+ path: segment.path,
17
+ fullPath: segment.fullPath,
18
+ segmentIndex: segment.segmentIndex,
19
+ prepareStatus,
20
+ codeStatus,
21
+ status,
22
+ };
23
+ });
24
+ const pendingCount = segments.filter((segment) => {
25
+ return segment.status === 'pending';
26
+ }).length;
27
+ const rejectedCount = segments.filter((segment) => {
28
+ return segment.status === 'rejected';
29
+ }).length;
30
+ let status = 'resolved';
31
+ if (pendingCount > 0) {
32
+ status = 'pending';
33
+ }
34
+ else if (rejectedCount > 0) {
35
+ status = 'rejected';
36
+ }
37
+ const activeLoadState = {
38
+ status,
39
+ pendingCount,
40
+ rejectedCount,
41
+ version,
42
+ };
43
+ return {
44
+ activeLoadState,
45
+ loadState: {
46
+ ...activeLoadState,
47
+ segments,
48
+ },
49
+ };
50
+ }
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyTG9hZFN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2ludGVybmFsL3JvdXRlckxvYWRTdGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsU0FBUyxtQkFBbUIsQ0FBQyxLQUc1QjtJQUNDLElBQUksS0FBSyxDQUFDLGFBQWEsS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUN4RSxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsYUFBYSxLQUFLLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQzFFLE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBR0QsTUFBTSxVQUFVLGtCQUFrQixDQUNoQyxhQUFzQyxFQUN0QyxPQUFlO0lBRWYsTUFBTSxRQUFRLEdBQUcsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUN0RCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLElBQUksTUFBTSxDQUFDO1FBQ3RFLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsU0FBUyxFQUFFLElBQUksTUFBTSxDQUFDO1FBQy9ELE1BQU0sTUFBTSxHQUFHLG1CQUFtQixDQUFDLEVBQUUsYUFBYSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDbEUsT0FBTztZQUNMLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtZQUNsQixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7WUFDMUIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO1lBQ2xDLGFBQWE7WUFDYixVQUFVO1lBQ1YsTUFBTTtTQUNQLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUNILE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUMvQyxPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDO0lBQ3RDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNWLE1BQU0sYUFBYSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNoRCxPQUFPLE9BQU8sQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDO0lBQ3ZDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNWLElBQUksTUFBTSxHQUFvQyxVQUFVLENBQUM7SUFDekQsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDckIsTUFBTSxHQUFHLFNBQVMsQ0FBQztJQUNyQixDQUFDO1NBQU0sSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDN0IsTUFBTSxHQUFHLFVBQVUsQ0FBQztJQUN0QixDQUFDO0lBQ0QsTUFBTSxlQUFlLEdBQUc7UUFDdEIsTUFBTTtRQUNOLFlBQVk7UUFDWixhQUFhO1FBQ2IsT0FBTztLQUNSLENBQUM7SUFDRixPQUFPO1FBQ0wsZUFBZTtRQUNmLFNBQVMsRUFBRTtZQUNULEdBQUcsZUFBZTtZQUNsQixRQUFRO1NBQ1Q7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJvdXRlRW50cnksXG4gIFJvdXRlckFjdGl2ZUxvYWRTdGF0ZSxcbiAgUm91dGVyTG9hZFN0YXRlLFxuICBSb3V0ZXJTZWdtZW50TG9hZFN0YXRlLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFJvdXRlclF1ZXJ5U2NoZW1hIH0gZnJvbSAnLi9yb3V0ZXJTZWFyY2hTdGF0ZS5qcyc7XG5cbnR5cGUgUHJlcGFyZWRNYXRjaDxUQ29udGV4dD4gPSBSb3V0ZUVudHJ5PFxuICBQYXJhbURhdGEsXG4gIFJvdXRlclF1ZXJ5U2NoZW1hLFxuICBUQ29udGV4dFxuPlsncHJlcGFyZWRNYXRjaCddO1xuXG4vKiogRGVyaXZlcyBhIHNlZ21lbnQtbGV2ZWwgc3RhdHVzIGZyb20gaXRzIHByZXBhcmUgYW5kIGNvZGUgcmVzb3VyY2VzLiAqL1xuZnVuY3Rpb24gZGVyaXZlU2VnbWVudFN0YXR1cyhpbnB1dDoge1xuICBwcmVwYXJlU3RhdHVzOiBSb3V0ZXJTZWdtZW50TG9hZFN0YXRlWydwcmVwYXJlU3RhdHVzJ107XG4gIGNvZGVTdGF0dXM6IFJvdXRlclNlZ21lbnRMb2FkU3RhdGVbJ2NvZGVTdGF0dXMnXTtcbn0pOiBSb3V0ZXJBY3RpdmVMb2FkU3RhdGVbJ3N0YXR1cyddIHtcbiAgaWYgKGlucHV0LnByZXBhcmVTdGF0dXMgPT09ICdwZW5kaW5nJyB8fCBpbnB1dC5jb2RlU3RhdHVzID09PSAncGVuZGluZycpIHtcbiAgICByZXR1cm4gJ3BlbmRpbmcnO1xuICB9XG4gIGlmIChpbnB1dC5wcmVwYXJlU3RhdHVzID09PSAncmVqZWN0ZWQnIHx8IGlucHV0LmNvZGVTdGF0dXMgPT09ICdyZWplY3RlZCcpIHtcbiAgICByZXR1cm4gJ3JlamVjdGVkJztcbiAgfVxuICByZXR1cm4gJ3Jlc29sdmVkJztcbn1cblxuLyoqIENhbGN1bGF0ZXMgbG9hZCBzdGF0ZSBmb3IgYSBwcmVwYXJlZCByb3V0ZSBjaGFpbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYWxjdWxhdGVMb2FkU3RhdGU8VENvbnRleHQ+KFxuICBwcmVwYXJlZE1hdGNoOiBQcmVwYXJlZE1hdGNoPFRDb250ZXh0PixcbiAgdmVyc2lvbjogbnVtYmVyLFxuKTogeyBhY3RpdmVMb2FkU3RhdGU6IFJvdXRlckFjdGl2ZUxvYWRTdGF0ZTsgbG9hZFN0YXRlOiBSb3V0ZXJMb2FkU3RhdGUgfSB7XG4gIGNvbnN0IHNlZ21lbnRzID0gcHJlcGFyZWRNYXRjaC5zZWdtZW50cy5tYXAoKHNlZ21lbnQpID0+IHtcbiAgICBjb25zdCBwcmVwYXJlU3RhdHVzID0gc2VnbWVudC5wcmVwYXJlZFJlc291cmNlPy5nZXRTdGF0dXMoKSA/PyAnaWRsZSc7XG4gICAgY29uc3QgY29kZVN0YXR1cyA9IHNlZ21lbnQucmVzb3VyY2VQYWdlPy5nZXRTdGF0dXMoKSA/PyAnaWRsZSc7XG4gICAgY29uc3Qgc3RhdHVzID0gZGVyaXZlU2VnbWVudFN0YXR1cyh7IHByZXBhcmVTdGF0dXMsIGNvZGVTdGF0dXMgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhdGg6IHNlZ21lbnQucGF0aCxcbiAgICAgIGZ1bGxQYXRoOiBzZWdtZW50LmZ1bGxQYXRoLFxuICAgICAgc2VnbWVudEluZGV4OiBzZWdtZW50LnNlZ21lbnRJbmRleCxcbiAgICAgIHByZXBhcmVTdGF0dXMsXG4gICAgICBjb2RlU3RhdHVzLFxuICAgICAgc3RhdHVzLFxuICAgIH07XG4gIH0pO1xuICBjb25zdCBwZW5kaW5nQ291bnQgPSBzZWdtZW50cy5maWx0ZXIoKHNlZ21lbnQpID0+IHtcbiAgICByZXR1cm4gc2VnbWVudC5zdGF0dXMgPT09ICdwZW5kaW5nJztcbiAgfSkubGVuZ3RoO1xuICBjb25zdCByZWplY3RlZENvdW50ID0gc2VnbWVudHMuZmlsdGVyKChzZWdtZW50KSA9PiB7XG4gICAgcmV0dXJuIHNlZ21lbnQuc3RhdHVzID09PSAncmVqZWN0ZWQnO1xuICB9KS5sZW5ndGg7XG4gIGxldCBzdGF0dXM6IFJvdXRlckFjdGl2ZUxvYWRTdGF0ZVsnc3RhdHVzJ10gPSAncmVzb2x2ZWQnO1xuICBpZiAocGVuZGluZ0NvdW50ID4gMCkge1xuICAgIHN0YXR1cyA9ICdwZW5kaW5nJztcbiAgfSBlbHNlIGlmIChyZWplY3RlZENvdW50ID4gMCkge1xuICAgIHN0YXR1cyA9ICdyZWplY3RlZCc7XG4gIH1cbiAgY29uc3QgYWN0aXZlTG9hZFN0YXRlID0ge1xuICAgIHN0YXR1cyxcbiAgICBwZW5kaW5nQ291bnQsXG4gICAgcmVqZWN0ZWRDb3VudCxcbiAgICB2ZXJzaW9uLFxuICB9O1xuICByZXR1cm4ge1xuICAgIGFjdGl2ZUxvYWRTdGF0ZSxcbiAgICBsb2FkU3RhdGU6IHtcbiAgICAgIC4uLmFjdGl2ZUxvYWRTdGF0ZSxcbiAgICAgIHNlZ21lbnRzLFxuICAgIH0sXG4gIH07XG59XG4iXX0=
@@ -0,0 +1,11 @@
1
+ import { type Diagnostic as FilterDiagnostic } from '@plumile/filter-query/errors.js';
2
+ import { type Schema as FilterSchema } from '@plumile/filter-query/types.js';
3
+ import type { RawQuery, UnknownFilters } from '../types.js';
4
+ export type RouterQuerySchema = FilterSchema | undefined;
5
+ export type ParsedSearchState = {
6
+ query: RawQuery;
7
+ filters?: UnknownFilters;
8
+ filterDiagnostics?: FilterDiagnostic[];
9
+ };
10
+ export declare function parseSearchState(search: string, querySchema: RouterQuerySchema): ParsedSearchState;
11
+ //# sourceMappingURL=routerSearchState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routerSearchState.d.ts","sourceRoot":"","sources":["../../../src/internal/routerSearchState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,IAAI,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAEtF,OAAO,EAAE,KAAK,MAAM,IAAI,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE5D,MAAM,MAAM,iBAAiB,GAAG,YAAY,GAAG,SAAS,CAAC;AAEzD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACxC,CAAC;AAGF,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,iBAAiB,GAC7B,iBAAiB,CAYnB"}
@@ -0,0 +1,15 @@
1
+ import { parse as parseFilters } from '@plumile/filter-query/parse.js';
2
+ import { parseRawQuery } from '../tools/query.js';
3
+ export function parseSearchState(search, querySchema) {
4
+ const query = parseRawQuery(search);
5
+ if (querySchema == null) {
6
+ return { query };
7
+ }
8
+ const parsed = parseFilters(search, querySchema);
9
+ return {
10
+ query,
11
+ filters: parsed.filters,
12
+ filterDiagnostics: parsed.diagnostics,
13
+ };
14
+ }
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyU2VhcmNoU3RhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW50ZXJuYWwvcm91dGVyU2VhcmNoU3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLEtBQUssSUFBSSxZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUd2RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFZbEQsTUFBTSxVQUFVLGdCQUFnQixDQUM5QixNQUFjLEVBQ2QsV0FBOEI7SUFFOUIsTUFBTSxLQUFLLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLElBQUksV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxXQUFXLENBQUMsQ0FBQztJQUNqRCxPQUFPO1FBQ0wsS0FBSztRQUNMLE9BQU8sRUFBRSxNQUFNLENBQUMsT0FBTztRQUN2QixpQkFBaUIsRUFBRSxNQUFNLENBQUMsV0FBVztLQUN0QyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGlhZ25vc3RpYyBhcyBGaWx0ZXJEaWFnbm9zdGljIH0gZnJvbSAnQHBsdW1pbGUvZmlsdGVyLXF1ZXJ5L2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBwYXJzZSBhcyBwYXJzZUZpbHRlcnMgfSBmcm9tICdAcGx1bWlsZS9maWx0ZXItcXVlcnkvcGFyc2UuanMnO1xuaW1wb3J0IHsgdHlwZSBTY2hlbWEgYXMgRmlsdGVyU2NoZW1hIH0gZnJvbSAnQHBsdW1pbGUvZmlsdGVyLXF1ZXJ5L3R5cGVzLmpzJztcblxuaW1wb3J0IHsgcGFyc2VSYXdRdWVyeSB9IGZyb20gJy4uL3Rvb2xzL3F1ZXJ5LmpzJztcbmltcG9ydCB0eXBlIHsgUmF3UXVlcnksIFVua25vd25GaWx0ZXJzIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgdHlwZSBSb3V0ZXJRdWVyeVNjaGVtYSA9IEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgUGFyc2VkU2VhcmNoU3RhdGUgPSB7XG4gIHF1ZXJ5OiBSYXdRdWVyeTtcbiAgZmlsdGVycz86IFVua25vd25GaWx0ZXJzO1xuICBmaWx0ZXJEaWFnbm9zdGljcz86IEZpbHRlckRpYWdub3N0aWNbXTtcbn07XG5cbi8qKiBQYXJzZXMgcmF3IHF1ZXJ5IGFuZCB0eXBlZCBmaWx0ZXJzIGZvciBhIHJvdXRlciBsb2NhdGlvbi4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVNlYXJjaFN0YXRlKFxuICBzZWFyY2g6IHN0cmluZyxcbiAgcXVlcnlTY2hlbWE6IFJvdXRlclF1ZXJ5U2NoZW1hLFxuKTogUGFyc2VkU2VhcmNoU3RhdGUge1xuICBjb25zdCBxdWVyeSA9IHBhcnNlUmF3UXVlcnkoc2VhcmNoKTtcbiAgaWYgKHF1ZXJ5U2NoZW1hID09IG51bGwpIHtcbiAgICByZXR1cm4geyBxdWVyeSB9O1xuICB9XG5cbiAgY29uc3QgcGFyc2VkID0gcGFyc2VGaWx0ZXJzKHNlYXJjaCwgcXVlcnlTY2hlbWEpO1xuICByZXR1cm4ge1xuICAgIHF1ZXJ5LFxuICAgIGZpbHRlcnM6IHBhcnNlZC5maWx0ZXJzLFxuICAgIGZpbHRlckRpYWdub3N0aWNzOiBwYXJzZWQuZGlhZ25vc3RpY3MsXG4gIH07XG59XG4iXX0=
@@ -1,9 +1,9 @@
1
1
  import React, { type AnchorHTMLAttributes, type HTMLAttributeAnchorTarget, type Ref, type ReactNode } from 'react';
2
- import type { BrowserHistory } from '../history/index.js';
2
+ import type { History } from '../history/types.js';
3
3
  import type { RouterDestinationInput, UnknownFilters, UnknownQueryShape } from '../types.js';
4
4
  export type LinkHoverPreload = 'none' | 'code' | 'code-and-data';
5
5
  export type LinkMouseDownPreload = 'none' | 'code-and-data';
6
- export declare function isCurrentPathname(exact: boolean, history: BrowserHistory | undefined, pathname: string): boolean;
6
+ export declare function isCurrentPathname(exact: boolean, history: History | undefined, pathname: string): boolean;
7
7
  export type LinkProps<TFilters extends UnknownFilters = UnknownFilters, TRawQuery extends UnknownQueryShape = UnknownQueryShape> = Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'children' | 'className' | 'href' | 'onClick' | 'onFocus' | 'onMouseDown' | 'onMouseEnter' | 'onMouseOver' | 'ref' | 'target'> & {
8
8
  activeClassName?: string;
9
9
  children: ReactNode;
@@ -21,8 +21,6 @@ export type LinkProps<TFilters extends UnknownFilters = UnknownFilters, TRawQuer
21
21
  ref?: Ref<HTMLAnchorElement>;
22
22
  target?: HTMLAttributeAnchorTarget;
23
23
  to?: RouterDestinationInput<TFilters, TRawQuery>;
24
- filters?: TFilters;
25
- query?: TRawQuery;
26
24
  };
27
25
  declare const Link: (props: LinkProps) => React.ReactElement;
28
26
  export default Link;
@@ -1 +1 @@
1
- {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/routing/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAE9B,KAAK,GAAG,EACR,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EAClB,MAAM,aAAa,CAAC;AASrB,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC;AACjE,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,eAAe,CAAC;AAK5D,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,cAAc,GAAG,SAAS,EACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAmBT;AAKD,MAAM,MAAM,SAAS,CACnB,QAAQ,SAAS,cAAc,GAAG,cAAc,EAChD,SAAS,SAAS,iBAAiB,GAAG,iBAAiB,IACrD,IAAI,CACN,oBAAoB,CAAC,iBAAiB,CAAC,EACrC,UAAU,GACV,WAAW,GACX,MAAM,GACN,SAAS,GACT,SAAS,GACT,aAAa,GACb,cAAc,GACd,aAAa,GACb,KAAK,GACL,QAAQ,CACX,GAAG;IAEF,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,EAAE,SAAS,CAAC;IAEpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAElC,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAE1C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAErD,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAErD,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAEzD,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAE1D,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAEzD,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAE7B,MAAM,CAAC,EAAE,yBAAyB,CAAC;IAEnC,EAAE,CAAC,EAAE,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAEjD,OAAO,CAAC,EAAE,QAAQ,CAAC;IAEnB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAyBF,QAAA,MAAM,IAAI,UAAW,SAAS,KAAG,KAAK,CAAC,YA+NtC,CAAC;eAEa,IAAI"}
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../../src/routing/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAE9B,KAAK,GAAG,EACR,KAAK,SAAS,EAGf,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EAClB,MAAM,aAAa,CAAC;AASrB,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,MAAM,GAAG,eAAe,CAAC;AACjE,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,eAAe,CAAC;AAK5D,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,QAAQ,EAAE,MAAM,GACf,OAAO,CAkBT;AAKD,MAAM,MAAM,SAAS,CACnB,QAAQ,SAAS,cAAc,GAAG,cAAc,EAChD,SAAS,SAAS,iBAAiB,GAAG,iBAAiB,IACrD,IAAI,CACN,oBAAoB,CAAC,iBAAiB,CAAC,EACrC,UAAU,GACV,WAAW,GACX,MAAM,GACN,SAAS,GACT,SAAS,GACT,aAAa,GACb,cAAc,GACd,aAAa,GACb,KAAK,GACL,QAAQ,CACX,GAAG;IAEF,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,QAAQ,EAAE,SAAS,CAAC;IAEpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAElC,kBAAkB,CAAC,EAAE,oBAAoB,CAAC;IAE1C,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAErD,OAAO,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAErD,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAEzD,YAAY,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAE1D,WAAW,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;IAEzD,GAAG,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAE7B,MAAM,CAAC,EAAE,yBAAyB,CAAC;IAEnC,EAAE,CAAC,EAAE,sBAAsB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;CAClD,CAAC;AAyBF,QAAA,MAAM,IAAI,UAAW,SAAS,KAAG,KAAK,CAAC,YAqMtC,CAAC;eAEa,IAAI"}
@@ -8,7 +8,7 @@ export function isCurrentPathname(exact, history, pathname) {
8
8
  if (history == null) {
9
9
  return false;
10
10
  }
11
- const resolvedUrl = new URL(pathname, document.location);
11
+ const resolvedUrl = new URL(pathname, document.location.href);
12
12
  const resolvedPathname = resolvedUrl.pathname;
13
13
  if (exact && history.location.pathname === resolvedPathname) {
14
14
  return true;
@@ -20,7 +20,7 @@ export function isCurrentPathname(exact, history, pathname) {
20
20
  }
21
21
  const Link = (props) => {
22
22
  const router = useContext(RoutingContext);
23
- const { activeClassName, children, className, exact = false, isDisabled = false, onClick, onFocus, onMouseDown, onMouseEnter, onMouseOver, preloadOnHover = 'code', preloadOnMouseDown = 'code-and-data', target, to, href, filters, query, ref, ...anchorProps } = props;
23
+ const { activeClassName, children, className, exact = false, isDisabled = false, onClick, onFocus, onMouseDown, onMouseEnter, onMouseOver, preloadOnHover = 'code', preloadOnMouseDown = 'code-and-data', target, to, href, ref, ...anchorProps } = props;
24
24
  const resolvedDestination = useMemo(() => {
25
25
  if (isDisabled) {
26
26
  return {
@@ -31,26 +31,7 @@ const Link = (props) => {
31
31
  isExternal: false,
32
32
  };
33
33
  }
34
- let destination = href ?? to ?? '#';
35
- const hasExplicitSearch = typeof to === 'object' && to.search != null;
36
- if (href == null &&
37
- !hasExplicitSearch &&
38
- (filters != null || query != null)) {
39
- let pathname = '#';
40
- let hash;
41
- if (typeof to === 'string')
42
- pathname = to;
43
- if (typeof to === 'object') {
44
- pathname = to.pathname;
45
- hash = to.hash;
46
- }
47
- destination = {
48
- pathname,
49
- filters,
50
- query,
51
- hash,
52
- };
53
- }
34
+ const destination = href ?? to ?? '#';
54
35
  let currentHref;
55
36
  if (typeof document !== 'undefined')
56
37
  currentHref = document.location.href;
@@ -61,7 +42,7 @@ const Link = (props) => {
61
42
  return router?.buildSearch(input) ?? '';
62
43
  },
63
44
  });
64
- }, [filters, href, isDisabled, query, router, to]);
45
+ }, [href, isDisabled, router, to]);
65
46
  const { pathname, search, hash, isExternal } = resolvedDestination;
66
47
  const initialIsActive = isCurrentPathname(exact, router?.history, pathname);
67
48
  const [isActive, setIsActive] = React.useState(initialIsActive);
@@ -73,10 +54,7 @@ const Link = (props) => {
73
54
  if (router == null) {
74
55
  return () => { };
75
56
  }
76
- router.history.subscribe(onChange);
77
- return () => {
78
- router.history.unsubscribe(onChange);
79
- };
57
+ return router.history.subscribe(onChange);
80
58
  }, [exact, pathname, router]);
81
59
  const classNames = [className];
82
60
  if (isActive) {
@@ -168,4 +146,4 @@ const Link = (props) => {
168
146
  return (_jsx("a", { ...anchorProps, className: cx(classNames), href: hrefValue, onClick: handleClick, onFocus: onFocus, onMouseDown: handleMouseDown, onMouseEnter: handleMouseEnter, onMouseOver: onMouseOver, ref: ref, target: target, children: children }));
169
147
  };
170
148
  export default Link;
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0aW5nL0xpbmsudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUssRUFBRSxFQU1aLFNBQVMsRUFDVCxPQUFPLEdBQ1IsTUFBTSxPQUFPLENBQUM7QUFTZixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekMsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUQsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFRMUMsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixLQUFjLEVBQ2QsT0FBbUMsRUFDbkMsUUFBZ0I7SUFFaEIsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBR0QsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUV6RCxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7SUFFOUMsSUFBSSxLQUFLLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssZ0JBQWdCLEVBQUUsQ0FBQztRQUM1RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7UUFDckUsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBa0ZELE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBZ0IsRUFBc0IsRUFBRTtJQUNwRCxNQUFNLE1BQU0sR0FBRyxVQUFVLENB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S0FBb0MsRUFBRSxFQUFFO1FBQ3ZDLElBQUksT0FBTyxXQUFXLEtBQUssVUFBVSxFQUFFLENBQUM7WUFDdEMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLFVBQVUsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUMvQyxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksa0JBQWtCLEtBQUssZUFBZSxFQUFFLENBQUM7WUFDM0MsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNILENBQUMsRUFDRDtRQUNFLE1BQU07UUFDTixVQUFVO1FBQ1YsVUFBVTtRQUNWLFdBQVc7UUFDWCxrQkFBa0I7UUFDbEIsUUFBUTtRQUNSLE1BQU07S0FDUCxDQUNGLENBQUM7SUFFRixNQUFNLFNBQVMsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7SUFDM0MsT0FBTyxDQUNMLGVBQ00sV0FBVyxFQUNmLFNBQVMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQ3pCLElBQUksRUFBRSxTQUFTLEVBQ2YsT0FBTyxFQUFFLFdBQVcsRUFDcEIsT0FBTyxFQUFFLE9BQU8sRUFDaEIsV0FBVyxFQUFFLGVBQWUsRUFDNUIsWUFBWSxFQUFFLGdCQUFnQixFQUM5QixXQUFXLEVBQUUsV0FBVyxFQUN4QixHQUFHLEVBQUUsR0FBRyxFQUNSLE1BQU0sRUFBRSxNQUFNLFlBRWIsUUFBUSxHQUNQLENBQ0wsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLGVBQWUsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7XG4gIHR5cGUgQW5jaG9ySFRNTEF0dHJpYnV0ZXMsXG4gIHR5cGUgSFRNTEF0dHJpYnV0ZUFuY2hvclRhcmdldCxcbiAgdHlwZSBNb3VzZUV2ZW50LFxuICB0eXBlIFJlZixcbiAgdHlwZSBSZWFjdE5vZGUsXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbn0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgdHlwZSB7IEJyb3dzZXJIaXN0b3J5IH0gZnJvbSAnLi4vaGlzdG9yeS9pbmRleC5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIFJvdXRlckRlc3RpbmF0aW9uSW5wdXQsXG4gIFVua25vd25GaWx0ZXJzLFxuICBVbmtub3duUXVlcnlTaGFwZSxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5pbXBvcnQgeyBjeCB9IGZyb20gJy4vLi4vdG9vbHMvaW5kZXguanMnO1xuXG5pbXBvcnQgUm91dGluZ0NvbnRleHQgZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG5pbXBvcnQgeyByZXNvbHZlUm91dGVyRGVzdGluYXRpb24gfSBmcm9tICcuL2Rlc3RpbmF0aW9uLmpzJztcblxuY29uc3QgeyB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCB9ID0gUmVhY3Q7XG5cbmV4cG9ydCB0eXBlIExpbmtIb3ZlclByZWxvYWQgPSAnbm9uZScgfCAnY29kZScgfCAnY29kZS1hbmQtZGF0YSc7XG5leHBvcnQgdHlwZSBMaW5rTW91c2VEb3duUHJlbG9hZCA9ICdub25lJyB8ICdjb2RlLWFuZC1kYXRhJztcblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgY3VycmVudCBwYXRobmFtZSBtYXRjaGVzIHRoZSBnaXZlbiBwYXRobmFtZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VycmVudFBhdGhuYW1lKFxuICBleGFjdDogYm9vbGVhbixcbiAgaGlzdG9yeTogQnJvd3Nlckhpc3RvcnkgfCB1bmRlZmluZWQsXG4gIHBhdGhuYW1lOiBzdHJpbmcsXG4pOiBib29sZWFuIHtcbiAgaWYgKGhpc3RvcnkgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEB0cy1leHBlY3QtZXJyb3I6IE9LXG4gIGNvbnN0IHJlc29sdmVkVXJsID0gbmV3IFVSTChwYXRobmFtZSwgZG9jdW1lbnQubG9jYXRpb24pO1xuXG4gIGNvbnN0IHJlc29sdmVkUGF0aG5hbWUgPSByZXNvbHZlZFVybC5wYXRobmFtZTtcblxuICBpZiAoZXhhY3QgJiYgaGlzdG9yeS5sb2NhdGlvbi5wYXRobmFtZSA9PT0gcmVzb2x2ZWRQYXRobmFtZSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKCFleGFjdCAmJiBoaXN0b3J5LmxvY2F0aW9uLnBhdGhuYW1lLnN0YXJ0c1dpdGgocmVzb2x2ZWRQYXRobmFtZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgdGhlIExpbmsgY29tcG9uZW50LlxuICovXG5leHBvcnQgdHlwZSBMaW5rUHJvcHM8XG4gIFRGaWx0ZXJzIGV4dGVuZHMgVW5rbm93bkZpbHRlcnMgPSBVbmtub3duRmlsdGVycyxcbiAgVFJhd1F1ZXJ5IGV4dGVuZHMgVW5rbm93blF1ZXJ5U2hhcGUgPSBVbmtub3duUXVlcnlTaGFwZSxcbj4gPSBPbWl0PFxuICBBbmNob3JIVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD4sXG4gIHwgJ2NoaWxkcmVuJ1xuICB8ICdjbGFzc05hbWUnXG4gIHwgJ2hyZWYnXG4gIHwgJ29uQ2xpY2snXG4gIHwgJ29uRm9jdXMnXG4gIHwgJ29uTW91c2VEb3duJ1xuICB8ICdvbk1vdXNlRW50ZXInXG4gIHwgJ29uTW91c2VPdmVyJ1xuICB8ICdyZWYnXG4gIHwgJ3RhcmdldCdcbj4gJiB7XG4gIC8qKiBDU1MgY2xhc3MgdG8gYXBwbHkgd2hlbiB0aGUgbGluayBpcyBhY3RpdmUgKG1hdGNoZXMgY3VycmVudCByb3V0ZSkgKi9cbiAgYWN0aXZlQ2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKiogQ2hpbGQgY29tcG9uZW50cyB0byByZW5kZXIgaW5zaWRlIHRoZSBsaW5rICovXG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIC8qKiBCYXNlIENTUyBjbGFzcyBmb3IgdGhlIGxpbmsgKi9cbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0byB1c2UgZXhhY3QgcGF0aCBtYXRjaGluZyBmb3IgYWN0aXZlIHN0YXRlICovXG4gIGV4YWN0PzogYm9vbGVhbjtcbiAgLyoqIFByZWxvYWQgYmVoYXZpb3Igd2hlbiBtb3VzZSBlbnRlcnMgdGhlIGxpbmsuICovXG4gIHByZWxvYWRPbkhvdmVyPzogTGlua0hvdmVyUHJlbG9hZDtcbiAgLyoqIFByZWxvYWQgYmVoYXZpb3Igd2hlbiBtb3VzZSBpcyBwcmVzc2VkIGRvd24uICovXG4gIHByZWxvYWRPbk1vdXNlRG93bj86IExpbmtNb3VzZURvd25QcmVsb2FkO1xuICAvKiogRGlyZWN0IGhyZWYgYXR0cmlidXRlIChvdmVycmlkZXMgJ3RvJyBwcm9wKSAqL1xuICBocmVmPzogc3RyaW5nO1xuICAvKiogV2hldGhlciB0aGUgbGluayBzaG91bGQgYmUgZGlzYWJsZWQgKi9cbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKiBDbGljayBoYW5kbGVyICovXG4gIG9uQ2xpY2s/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD47XG4gIC8qKiBGb2N1cyBoYW5kbGVyICovXG4gIG9uRm9jdXM/OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD47XG4gIC8qKiBNb3VzZSBkb3duIGhhbmRsZXIgKi9cbiAgb25Nb3VzZURvd24/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MQW5jaG9yRWxlbWVudD47XG4gIC8qKiBNb3VzZSBlbnRlciBoYW5kbGVyICovXG4gIG9uTW91c2VFbnRlcj86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIE1vdXNlIG92ZXIgaGFuZGxlciAqL1xuICBvbk1vdXNlT3Zlcj86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIEFuY2hvciByZWYgKi9cbiAgcmVmPzogUmVmPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIFRhcmdldCBhdHRyaWJ1dGUgZm9yIHRoZSBsaW5rICovXG4gIHRhcmdldD86IEhUTUxBdHRyaWJ1dGVBbmNob3JUYXJnZXQ7XG4gIC8qKiBEZXN0aW5hdGlvbiBmb3IgdGhlIGxpbmsgKGNhbiBiZSBzdHJpbmcgcGF0aCBvciBsb2NhdGlvbiBvYmplY3QpICovXG4gIHRvPzogUm91dGVyRGVzdGluYXRpb25JbnB1dDxURmlsdGVycywgVFJhd1F1ZXJ5PjtcbiAgLyoqIE9wdGlvbmFsIGZpbHRlcnMgb2JqZWN0IHRvIHNlcmlhbGl6ZSB1c2luZyBkZXN0aW5hdGlvbiByb3V0ZSBzY2hlbWEgKGlnbm9yZWQgaWYgYHRvLnNlYXJjaGAgaXMgc2V0KSAqL1xuICBmaWx0ZXJzPzogVEZpbHRlcnM7XG4gIC8qKiBPcHRpb25hbCByYXcgcXVlcnkgcGFyYW1zIChub24tc2NoZW1hIGtleXMpIHRvIG1lcmdlIChpZ25vcmVkIGlmIGB0by5zZWFyY2hgIGlzIHNldCkgKi9cbiAgcXVlcnk/OiBUUmF3UXVlcnk7XG59O1xuXG4vKipcbiAqIE5hdmlnYXRpb24gY29tcG9uZW50IHRoYXQgcHJvdmlkZXMgY2xpZW50LXNpZGUgcm91dGluZyB3aXRoIHByZWxvYWRpbmcgY2FwYWJpbGl0aWVzLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IGludGVncmF0ZXMgd2l0aCB0aGUgcm91dGVyJ3MgUm91dGluZ0NvbnRleHQgdG8gcHJvdmlkZSBzbW9vdGggbmF2aWdhdGlvblxuICogd2l0aCBvcHRpb25hbCBwcmVsb2FkaW5nIG9mIHJvdXRlIGNvbXBvbmVudHMgYW5kIGRhdGEuIEl0IGF1dG9tYXRpY2FsbHkgYXBwbGllcyBhY3RpdmVcbiAqIHN0eWxpbmcgd2hlbiB0aGUgY3VycmVudCByb3V0ZSBtYXRjaGVzIHRoZSBsaW5rJ3MgZGVzdGluYXRpb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogLy8gQmFzaWMgdXNhZ2VcbiAqIDxMaW5rIHRvPVwiL3VzZXJzLzEyM1wiPlZpZXcgUHJvZmlsZTwvTGluaz5cbiAqXG4gKiAvLyBXaXRoIGFjdGl2ZSBzdHlsaW5nXG4gKiA8TGluayB0bz1cIi9kYXNoYm9hcmRcIiBhY3RpdmVDbGFzc05hbWU9XCJhY3RpdmVcIiBleGFjdD5cbiAqICAgRGFzaGJvYXJkXG4gKiA8L0xpbms+XG4gKlxuICogLy8gV2l0aCBmdWxsIHByZWxvYWRpbmcgb24gaG92ZXJcbiAqIDxMaW5rIHRvPVwiL2hlYXZ5LXBhZ2VcIiBwcmVsb2FkT25Ib3Zlcj1cImNvZGUtYW5kLWRhdGFcIj5cbiAqICAgSGVhdnkgUGFnZVxuICogPC9MaW5rPlxuICogYGBgXG4gKi9cbmNvbnN0IExpbmsgPSAocHJvcHM6IExpbmtQcm9wcyk6IFJlYWN0LlJlYWN0RWxlbWVudCA9PiB7XG4gIGNvbnN0IHJvdXRlciA9IHVzZUNvbnRleHQoUm91dGluZ0NvbnRleHQpO1xuICBjb25zdCB7XG4gICAgYWN0aXZlQ2xhc3NOYW1lLFxuICAgIGNoaWxkcmVuLFxuICAgIGNsYXNzTmFtZSxcbiAgICBleGFjdCA9IGZhbHNlLFxuICAgIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgICBvbkNsaWNrLFxuICAgIG9uRm9jdXMsXG4gICAgb25Nb3VzZURvd24sXG4gICAgb25Nb3VzZUVudGVyLFxuICAgIG9uTW91c2VPdmVyLFxuICAgIHByZWxvYWRPbkhvdmVyID0gJ2NvZGUnLFxuICAgIHByZWxvYWRPbk1vdXNlRG93biA9ICdjb2RlLWFuZC1kYXRhJyxcbiAgICB0YXJnZXQsXG4gICAgdG8sXG4gICAgaHJlZixcbiAgICBmaWx0ZXJzLFxuICAgIHF1ZXJ5LFxuICAgIHJlZixcbiAgICAuLi5hbmNob3JQcm9wc1xuICB9ID0gcHJvcHM7XG5cbiAgY29uc3QgcmVzb2x2ZWREZXN0aW5hdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChpc0Rpc2FibGVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRobmFtZTogJyMnLFxuICAgICAgICBzZWFyY2g6ICcnLFxuICAgICAgICBoYXNoOiAnJyxcbiAgICAgICAgaHJlZjogJyMnLFxuICAgICAgICBpc0V4dGVybmFsOiBmYWxzZSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IGRlc3RpbmF0aW9uOiBSb3V0ZXJEZXN0aW5hdGlvbklucHV0ID0gaHJlZiA/PyB0byA/PyAnIyc7XG4gICAgY29uc3QgaGFzRXhwbGljaXRTZWFyY2ggPSB0eXBlb2YgdG8gPT09ICdvYmplY3QnICYmIHRvLnNlYXJjaCAhPSBudWxsO1xuICAgIGlmIChcbiAgICAgIGhyZWYgPT0gbnVsbCAmJlxuICAgICAgIWhhc0V4cGxpY2l0U2VhcmNoICYmXG4gICAgICAoZmlsdGVycyAhPSBudWxsIHx8IHF1ZXJ5ICE9IG51bGwpXG4gICAgKSB7XG4gICAgICBsZXQgcGF0aG5hbWUgPSAnIyc7XG4gICAgICBsZXQgaGFzaDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgaWYgKHR5cGVvZiB0byA9PT0gJ3N0cmluZycpIHBhdGhuYW1lID0gdG87XG4gICAgICBpZiAodHlwZW9mIHRvID09PSAnb2JqZWN0Jykge1xuICAgICAgICBwYXRobmFtZSA9IHRvLnBhdGhuYW1lO1xuICAgICAgICBoYXNoID0gdG8uaGFzaDtcbiAgICAgIH1cbiAgICAgIGRlc3RpbmF0aW9uID0ge1xuICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgZmlsdGVycyxcbiAgICAgICAgcXVlcnksXG4gICAgICAgIGhhc2gsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGxldCBjdXJyZW50SHJlZjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSBjdXJyZW50SHJlZiA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWY7XG4gICAgcmV0dXJuIHJlc29sdmVSb3V0ZXJEZXN0aW5hdGlvbih7XG4gICAgICBkZXN0aW5hdGlvbixcbiAgICAgIGN1cnJlbnRIcmVmLFxuICAgICAgYnVpbGRTZWFyY2g6IChpbnB1dCkgPT4ge1xuICAgICAgICByZXR1cm4gcm91dGVyPy5idWlsZFNlYXJjaChpbnB1dCkgPz8gJyc7XG4gICAgICB9LFxuICAgIH0pO1xuICB9LCBbZmlsdGVycywgaHJlZiwgaXNEaXNhYmxlZCwgcXVlcnksIHJvdXRlciwgdG9dKTtcbiAgY29uc3QgeyBwYXRobmFtZSwgc2VhcmNoLCBoYXNoLCBpc0V4dGVybmFsIH0gPSByZXNvbHZlZERlc3RpbmF0aW9uO1xuXG4gIGNvbnN0IGluaXRpYWxJc0FjdGl2ZSA9IGlzQ3VycmVudFBhdGhuYW1lKGV4YWN0LCByb3V0ZXI/Lmhpc3RvcnksIHBhdGhuYW1lKTtcbiAgY29uc3QgW2lzQWN0aXZlLCBzZXRJc0FjdGl2ZV0gPSBSZWFjdC51c2VTdGF0ZShpbml0aWFsSXNBY3RpdmUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25DaGFuZ2UgPSAoKSA9PiB7XG4gICAgICBjb25zdCBuZXdJc0FjdGl2ZSA9IGlzQ3VycmVudFBhdGhuYW1lKGV4YWN0LCByb3V0ZXI/Lmhpc3RvcnksIHBhdGhuYW1lKTtcbiAgICAgIHNldElzQWN0aXZlKG5ld0lzQWN0aXZlKTtcbiAgICB9O1xuXG4gICAgaWYgKHJvdXRlciA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gKCkgPT4ge307XG4gICAgfVxuXG4gICAgcm91dGVyLmhpc3Rvcnkuc3Vic2NyaWJlKG9uQ2hhbmdlKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICByb3V0ZXIuaGlzdG9yeS51bnN1YnNjcmliZShvbkNoYW5nZSk7XG4gICAgfTtcbiAgfSwgW2V4YWN0LCBwYXRobmFtZSwgcm91dGVyXSk7XG5cbiAgY29uc3QgY2xhc3NOYW1lcyA9IFtjbGFzc05hbWVdO1xuXG4gIGlmIChpc0FjdGl2ZSkge1xuICAgIGNsYXNzTmFtZXMucHVzaChhY3RpdmVDbGFzc05hbWUpO1xuICB9XG5cbiAgLy8gV2hlbiB0aGUgdXNlciBjbGlja3MsIGNoYW5nZSByb3V0ZVxuICBjb25zdCBoYW5kbGVDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICAgIGlmICghaXNEaXNhYmxlZCAmJiB0eXBlb2Ygb25DbGljayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvbkNsaWNrKGV2ZW50KTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBldmVudC5kZWZhdWx0UHJldmVudGVkIHx8XG4gICAgICAgIGV2ZW50Lm1ldGFLZXkgfHxcbiAgICAgICAgZXZlbnQuYWx0S2V5IHx8XG4gICAgICAgIGV2ZW50LmN0cmxLZXkgfHxcbiAgICAgICAgZXZlbnQuc2hpZnRLZXkgfHxcbiAgICAgICAgZXZlbnQuYnV0dG9uICE9PSAwIHx8XG4gICAgICAgIGlzRXh0ZXJuYWwgfHxcbiAgICAgICAgKHRhcmdldCAhPSBudWxsICYmIHRhcmdldCAhPT0gJ19zZWxmJylcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBpZiAocm91dGVyID09IG51bGwgfHwgaXNEaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHJvdXRlci5oaXN0b3J5LnB1c2goe1xuICAgICAgICBwYXRobmFtZSxcbiAgICAgICAgc2VhcmNoLFxuICAgICAgICBoYXNoLFxuICAgICAgICBkZWJ1Z0NvbnRleHQ6IHtcbiAgICAgICAgICBvcmlnaW46ICdsaW5rLWNsaWNrJyxcbiAgICAgICAgICB0cmlnZ2VyOiAnbGluaycsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9LFxuICAgIFtoYXNoLCBpc0Rpc2FibGVkLCBpc0V4dGVybmFsLCBvbkNsaWNrLCBwYXRobmFtZSwgcm91dGVyLCB0YXJnZXQsIHNlYXJjaF0sXG4gICk7XG5cbiAgLy8gQ2FsbGJhY2sgdG8gcHJlbG9hZCBqdXN0IHRoZSBjb2RlIGZvciB0aGUgcm91dGU6XG4gIC8vIHdlIHBhc3MgdGhpcyB0byBvbk1vdXNlRW50ZXIsIHdoaWNoIGlzIGEgd2Vha2VyIHNpZ25hbFxuICAvLyB0aGF0IHRoZSB1c2VyICptYXkqIG5hdmlnYXRlIHRvIHRoZSByb3V0ZS5cbiAgY29uc3QgaGFuZGxlTW91c2VFbnRlciA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICAgIGlmICh0eXBlb2Ygb25Nb3VzZUVudGVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG9uTW91c2VFbnRlcihldmVudCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyb3V0ZXIgPT0gbnVsbCB8fCBpc0Rpc2FibGVkIHx8IGlzRXh0ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJlbG9hZE9uSG92ZXIgPT09ICdub25lJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByZWxvYWRUYXJnZXQgPSB7XG4gICAgICAgIHBhdGhuYW1lLFxuICAgICAgICBzZWFyY2gsXG4gICAgICAgIHNvdXJjZTogJ3ByZWxvYWQtaG92ZXInLFxuICAgICAgfSBhcyBjb25zdDtcbiAgICAgIGlmIChwcmVsb2FkT25Ib3ZlciA9PT0gJ2NvZGUtYW5kLWRhdGEnKSB7XG4gICAgICAgIHJvdXRlci5wcmVsb2FkKHByZWxvYWRUYXJnZXQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICByb3V0ZXIucHJlbG9hZENvZGUocHJlbG9hZFRhcmdldCk7XG4gICAgfSxcbiAgICBbXG4gICAgICByb3V0ZXIsXG4gICAgICBpc0Rpc2FibGVkLFxuICAgICAgaXNFeHRlcm5hbCxcbiAgICAgIG9uTW91c2VFbnRlcixcbiAgICAgIHByZWxvYWRPbkhvdmVyLFxuICAgICAgcGF0aG5hbWUsXG4gICAgICBzZWFyY2gsXG4gICAgXSxcbiAgKTtcblxuICAvLyBDYWxsYmFjayB0byBwcmVsb2FkIHRoZSBjb2RlIGFuZCBkYXRhIGZvciB0aGUgcm91dGU6XG4gIC8vIHdlIHBhc3MgdGhpcyB0byBvbk1vdXNlRG93biwgc2luY2UgdGhpcyBpcyBhIHN0cm9uZ2VyXG4gIC8vIHNpZ25hbCB0aGF0IHRoZSB1c2VyIHdpbGwgbGlrZWx5IGNvbXBsZXRlIHRoZSBuYXZpZ2F0aW9uXG4gIGNvbnN0IGhhbmRsZU1vdXNlRG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4pID0+IHtcbiAgICAgIGlmICh0eXBlb2Ygb25Nb3VzZURvd24gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25Nb3VzZURvd24oZXZlbnQpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocm91dGVyID09IG51bGwgfHwgaXNEaXNhYmxlZCB8fCBpc0V4dGVybmFsKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHByZWxvYWRPbk1vdXNlRG93biA9PT0gJ2NvZGUtYW5kLWRhdGEnKSB7XG4gICAgICAgIHJvdXRlci5wcmVsb2FkKHsgcGF0aG5hbWUsIHNlYXJjaCwgc291cmNlOiAnbGluay1jbGljaycgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbXG4gICAgICByb3V0ZXIsXG4gICAgICBpc0Rpc2FibGVkLFxuICAgICAgaXNFeHRlcm5hbCxcbiAgICAgIG9uTW91c2VEb3duLFxuICAgICAgcHJlbG9hZE9uTW91c2VEb3duLFxuICAgICAgcGF0aG5hbWUsXG4gICAgICBzZWFyY2gsXG4gICAgXSxcbiAgKTtcblxuICBjb25zdCBocmVmVmFsdWUgPSByZXNvbHZlZERlc3RpbmF0aW9uLmhyZWY7XG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIHsuLi5hbmNob3JQcm9wc31cbiAgICAgIGNsYXNzTmFtZT17Y3goY2xhc3NOYW1lcyl9XG4gICAgICBocmVmPXtocmVmVmFsdWV9XG4gICAgICBvbkNsaWNrPXtoYW5kbGVDbGlja31cbiAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICBvbk1vdXNlRG93bj17aGFuZGxlTW91c2VEb3dufVxuICAgICAgb25Nb3VzZUVudGVyPXtoYW5kbGVNb3VzZUVudGVyfVxuICAgICAgb25Nb3VzZU92ZXI9e29uTW91c2VPdmVyfVxuICAgICAgcmVmPXtyZWZ9XG4gICAgICB0YXJnZXQ9e3RhcmdldH1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9hPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTGluaztcbiJdfQ==
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTGluay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9yb3V0aW5nL0xpbmsudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEtBQUssRUFBRSxFQU1aLFNBQVMsRUFDVCxPQUFPLEdBQ1IsTUFBTSxPQUFPLENBQUM7QUFTZixPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekMsT0FBTyxjQUFjLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFNUQsTUFBTSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFRMUMsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixLQUFjLEVBQ2QsT0FBNEIsRUFDNUIsUUFBZ0I7SUFFaEIsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFOUQsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO0lBRTlDLElBQUksS0FBSyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxLQUFLLGdCQUFnQixFQUFFLENBQUM7UUFDNUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1FBQ3JFLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQThFRCxNQUFNLElBQUksR0FBRyxDQUFDLEtBQWdCLEVBQXNCLEVBQUU7SUFDcEQsTUFBTSxNQUFNLEdB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VyxFQUNwQixPQUFPLEVBQUUsT0FBTyxFQUNoQixXQUFXLEVBQUUsZUFBZSxFQUM1QixZQUFZLEVBQUUsZ0JBQWdCLEVBQzlCLFdBQVcsRUFBRSxXQUFXLEVBQ3hCLEdBQUcsRUFBRSxHQUFHLEVBQ1IsTUFBTSxFQUFFLE1BQU0sWUFFYixRQUFRLEdBQ1AsQ0FDTCxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsZUFBZSxJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgdHlwZSBBbmNob3JIVE1MQXR0cmlidXRlcyxcbiAgdHlwZSBIVE1MQXR0cmlidXRlQW5jaG9yVGFyZ2V0LFxuICB0eXBlIE1vdXNlRXZlbnQsXG4gIHR5cGUgUmVmLFxuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxufSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHsgSGlzdG9yeSB9IGZyb20gJy4uL2hpc3RvcnkvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUge1xuICBSb3V0ZXJEZXN0aW5hdGlvbklucHV0LFxuICBVbmtub3duRmlsdGVycyxcbiAgVW5rbm93blF1ZXJ5U2hhcGUsXG59IGZyb20gJy4uL3R5cGVzLmpzJztcblxuaW1wb3J0IHsgY3ggfSBmcm9tICcuLy4uL3Rvb2xzL2luZGV4LmpzJztcblxuaW1wb3J0IFJvdXRpbmdDb250ZXh0IGZyb20gJy4vUm91dGluZ0NvbnRleHQuanMnO1xuaW1wb3J0IHsgcmVzb2x2ZVJvdXRlckRlc3RpbmF0aW9uIH0gZnJvbSAnLi9kZXN0aW5hdGlvbi5qcyc7XG5cbmNvbnN0IHsgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQgfSA9IFJlYWN0O1xuXG5leHBvcnQgdHlwZSBMaW5rSG92ZXJQcmVsb2FkID0gJ25vbmUnIHwgJ2NvZGUnIHwgJ2NvZGUtYW5kLWRhdGEnO1xuZXhwb3J0IHR5cGUgTGlua01vdXNlRG93blByZWxvYWQgPSAnbm9uZScgfCAnY29kZS1hbmQtZGF0YSc7XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGN1cnJlbnQgcGF0aG5hbWUgbWF0Y2hlcyB0aGUgZ2l2ZW4gcGF0aG5hbWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0N1cnJlbnRQYXRobmFtZShcbiAgZXhhY3Q6IGJvb2xlYW4sXG4gIGhpc3Rvcnk6IEhpc3RvcnkgfCB1bmRlZmluZWQsXG4gIHBhdGhuYW1lOiBzdHJpbmcsXG4pOiBib29sZWFuIHtcbiAgaWYgKGhpc3RvcnkgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHJlc29sdmVkVXJsID0gbmV3IFVSTChwYXRobmFtZSwgZG9jdW1lbnQubG9jYXRpb24uaHJlZik7XG5cbiAgY29uc3QgcmVzb2x2ZWRQYXRobmFtZSA9IHJlc29sdmVkVXJsLnBhdGhuYW1lO1xuXG4gIGlmIChleGFjdCAmJiBoaXN0b3J5LmxvY2F0aW9uLnBhdGhuYW1lID09PSByZXNvbHZlZFBhdGhuYW1lKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoIWV4YWN0ICYmIGhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUuc3RhcnRzV2l0aChyZXNvbHZlZFBhdGhuYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFByb3BzIGZvciB0aGUgTGluayBjb21wb25lbnQuXG4gKi9cbmV4cG9ydCB0eXBlIExpbmtQcm9wczxcbiAgVEZpbHRlcnMgZXh0ZW5kcyBVbmtub3duRmlsdGVycyA9IFVua25vd25GaWx0ZXJzLFxuICBUUmF3UXVlcnkgZXh0ZW5kcyBVbmtub3duUXVlcnlTaGFwZSA9IFVua25vd25RdWVyeVNoYXBlLFxuPiA9IE9taXQ8XG4gIEFuY2hvckhUTUxBdHRyaWJ1dGVzPEhUTUxBbmNob3JFbGVtZW50PixcbiAgfCAnY2hpbGRyZW4nXG4gIHwgJ2NsYXNzTmFtZSdcbiAgfCAnaHJlZidcbiAgfCAnb25DbGljaydcbiAgfCAnb25Gb2N1cydcbiAgfCAnb25Nb3VzZURvd24nXG4gIHwgJ29uTW91c2VFbnRlcidcbiAgfCAnb25Nb3VzZU92ZXInXG4gIHwgJ3JlZidcbiAgfCAndGFyZ2V0J1xuPiAmIHtcbiAgLyoqIENTUyBjbGFzcyB0byBhcHBseSB3aGVuIHRoZSBsaW5rIGlzIGFjdGl2ZSAobWF0Y2hlcyBjdXJyZW50IHJvdXRlKSAqL1xuICBhY3RpdmVDbGFzc05hbWU/OiBzdHJpbmc7XG4gIC8qKiBDaGlsZCBjb21wb25lbnRzIHRvIHJlbmRlciBpbnNpZGUgdGhlIGxpbmsgKi9cbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgLyoqIEJhc2UgQ1NTIGNsYXNzIGZvciB0aGUgbGluayAqL1xuICBjbGFzc05hbWU/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRvIHVzZSBleGFjdCBwYXRoIG1hdGNoaW5nIGZvciBhY3RpdmUgc3RhdGUgKi9cbiAgZXhhY3Q/OiBib29sZWFuO1xuICAvKiogUHJlbG9hZCBiZWhhdmlvciB3aGVuIG1vdXNlIGVudGVycyB0aGUgbGluay4gKi9cbiAgcHJlbG9hZE9uSG92ZXI/OiBMaW5rSG92ZXJQcmVsb2FkO1xuICAvKiogUHJlbG9hZCBiZWhhdmlvciB3aGVuIG1vdXNlIGlzIHByZXNzZWQgZG93bi4gKi9cbiAgcHJlbG9hZE9uTW91c2VEb3duPzogTGlua01vdXNlRG93blByZWxvYWQ7XG4gIC8qKiBEaXJlY3QgaHJlZiBhdHRyaWJ1dGUgKG92ZXJyaWRlcyAndG8nIHByb3ApICovXG4gIGhyZWY/OiBzdHJpbmc7XG4gIC8qKiBXaGV0aGVyIHRoZSBsaW5rIHNob3VsZCBiZSBkaXNhYmxlZCAqL1xuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqIENsaWNrIGhhbmRsZXIgKi9cbiAgb25DbGljaz86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIEZvY3VzIGhhbmRsZXIgKi9cbiAgb25Gb2N1cz86IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIE1vdXNlIGRvd24gaGFuZGxlciAqL1xuICBvbk1vdXNlRG93bj86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxBbmNob3JFbGVtZW50PjtcbiAgLyoqIE1vdXNlIGVudGVyIGhhbmRsZXIgKi9cbiAgb25Nb3VzZUVudGVyPzogUmVhY3QuTW91c2VFdmVudEhhbmRsZXI8SFRNTEFuY2hvckVsZW1lbnQ+O1xuICAvKiogTW91c2Ugb3ZlciBoYW5kbGVyICovXG4gIG9uTW91c2VPdmVyPzogUmVhY3QuTW91c2VFdmVudEhhbmRsZXI8SFRNTEFuY2hvckVsZW1lbnQ+O1xuICAvKiogQW5jaG9yIHJlZiAqL1xuICByZWY/OiBSZWY8SFRNTEFuY2hvckVsZW1lbnQ+O1xuICAvKiogVGFyZ2V0IGF0dHJpYnV0ZSBmb3IgdGhlIGxpbmsgKi9cbiAgdGFyZ2V0PzogSFRNTEF0dHJpYnV0ZUFuY2hvclRhcmdldDtcbiAgLyoqIERlc3RpbmF0aW9uIGZvciB0aGUgbGluayAoY2FuIGJlIHN0cmluZyBwYXRoIG9yIGxvY2F0aW9uIG9iamVjdCkgKi9cbiAgdG8/OiBSb3V0ZXJEZXN0aW5hdGlvbklucHV0PFRGaWx0ZXJzLCBUUmF3UXVlcnk+O1xufTtcblxuLyoqXG4gKiBOYXZpZ2F0aW9uIGNvbXBvbmVudCB0aGF0IHByb3ZpZGVzIGNsaWVudC1zaWRlIHJvdXRpbmcgd2l0aCBwcmVsb2FkaW5nIGNhcGFiaWxpdGllcy5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBpbnRlZ3JhdGVzIHdpdGggdGhlIHJvdXRlcidzIFJvdXRpbmdDb250ZXh0IHRvIHByb3ZpZGUgc21vb3RoIG5hdmlnYXRpb25cbiAqIHdpdGggb3B0aW9uYWwgcHJlbG9hZGluZyBvZiByb3V0ZSBjb21wb25lbnRzIGFuZCBkYXRhLiBJdCBhdXRvbWF0aWNhbGx5IGFwcGxpZXMgYWN0aXZlXG4gKiBzdHlsaW5nIHdoZW4gdGhlIGN1cnJlbnQgcm91dGUgbWF0Y2hlcyB0aGUgbGluaydzIGRlc3RpbmF0aW9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIC8vIEJhc2ljIHVzYWdlXG4gKiA8TGluayB0bz1cIi91c2Vycy8xMjNcIj5WaWV3IFByb2ZpbGU8L0xpbms+XG4gKlxuICogLy8gV2l0aCBhY3RpdmUgc3R5bGluZ1xuICogPExpbmsgdG89XCIvZGFzaGJvYXJkXCIgYWN0aXZlQ2xhc3NOYW1lPVwiYWN0aXZlXCIgZXhhY3Q+XG4gKiAgIERhc2hib2FyZFxuICogPC9MaW5rPlxuICpcbiAqIC8vIFdpdGggZnVsbCBwcmVsb2FkaW5nIG9uIGhvdmVyXG4gKiA8TGluayB0bz1cIi9oZWF2eS1wYWdlXCIgcHJlbG9hZE9uSG92ZXI9XCJjb2RlLWFuZC1kYXRhXCI+XG4gKiAgIEhlYXZ5IFBhZ2VcbiAqIDwvTGluaz5cbiAqIGBgYFxuICovXG5jb25zdCBMaW5rID0gKHByb3BzOiBMaW5rUHJvcHMpOiBSZWFjdC5SZWFjdEVsZW1lbnQgPT4ge1xuICBjb25zdCByb3V0ZXIgPSB1c2VDb250ZXh0KFJvdXRpbmdDb250ZXh0KTtcbiAgY29uc3Qge1xuICAgIGFjdGl2ZUNsYXNzTmFtZSxcbiAgICBjaGlsZHJlbixcbiAgICBjbGFzc05hbWUsXG4gICAgZXhhY3QgPSBmYWxzZSxcbiAgICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gICAgb25DbGljayxcbiAgICBvbkZvY3VzLFxuICAgIG9uTW91c2VEb3duLFxuICAgIG9uTW91c2VFbnRlcixcbiAgICBvbk1vdXNlT3ZlcixcbiAgICBwcmVsb2FkT25Ib3ZlciA9ICdjb2RlJyxcbiAgICBwcmVsb2FkT25Nb3VzZURvd24gPSAnY29kZS1hbmQtZGF0YScsXG4gICAgdGFyZ2V0LFxuICAgIHRvLFxuICAgIGhyZWYsXG4gICAgcmVmLFxuICAgIC4uLmFuY2hvclByb3BzXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCByZXNvbHZlZERlc3RpbmF0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhdGhuYW1lOiAnIycsXG4gICAgICAgIHNlYXJjaDogJycsXG4gICAgICAgIGhhc2g6ICcnLFxuICAgICAgICBocmVmOiAnIycsXG4gICAgICAgIGlzRXh0ZXJuYWw6IGZhbHNlLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBkZXN0aW5hdGlvbjogUm91dGVyRGVzdGluYXRpb25JbnB1dCA9IGhyZWYgPz8gdG8gPz8gJyMnO1xuXG4gICAgbGV0IGN1cnJlbnRIcmVmOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIGN1cnJlbnRIcmVmID0gZG9jdW1lbnQubG9jYXRpb24uaHJlZjtcbiAgICByZXR1cm4gcmVzb2x2ZVJvdXRlckRlc3RpbmF0aW9uKHtcbiAgICAgIGRlc3RpbmF0aW9uLFxuICAgICAgY3VycmVudEhyZWYsXG4gICAgICBidWlsZFNlYXJjaDogKGlucHV0KSA9PiB7XG4gICAgICAgIHJldHVybiByb3V0ZXI/LmJ1aWxkU2VhcmNoKGlucHV0KSA/PyAnJztcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0sIFtocmVmLCBpc0Rpc2FibGVkLCByb3V0ZXIsIHRvXSk7XG4gIGNvbnN0IHsgcGF0aG5hbWUsIHNlYXJjaCwgaGFzaCwgaXNFeHRlcm5hbCB9ID0gcmVzb2x2ZWREZXN0aW5hdGlvbjtcblxuICBjb25zdCBpbml0aWFsSXNBY3RpdmUgPSBpc0N1cnJlbnRQYXRobmFtZShleGFjdCwgcm91dGVyPy5oaXN0b3J5LCBwYXRobmFtZSk7XG4gIGNvbnN0IFtpc0FjdGl2ZSwgc2V0SXNBY3RpdmVdID0gUmVhY3QudXNlU3RhdGUoaW5pdGlhbElzQWN0aXZlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgY29uc3QgbmV3SXNBY3RpdmUgPSBpc0N1cnJlbnRQYXRobmFtZShleGFjdCwgcm91dGVyPy5oaXN0b3J5LCBwYXRobmFtZSk7XG4gICAgICBzZXRJc0FjdGl2ZShuZXdJc0FjdGl2ZSk7XG4gICAgfTtcblxuICAgIGlmIChyb3V0ZXIgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICgpID0+IHt9O1xuICAgIH1cblxuICAgIHJldHVybiByb3V0ZXIuaGlzdG9yeS5zdWJzY3JpYmUob25DaGFuZ2UpO1xuICB9LCBbZXhhY3QsIHBhdGhuYW1lLCByb3V0ZXJdKTtcblxuICBjb25zdCBjbGFzc05hbWVzID0gW2NsYXNzTmFtZV07XG5cbiAgaWYgKGlzQWN0aXZlKSB7XG4gICAgY2xhc3NOYW1lcy5wdXNoKGFjdGl2ZUNsYXNzTmFtZSk7XG4gIH1cblxuICAvLyBXaGVuIHRoZSB1c2VyIGNsaWNrcywgY2hhbmdlIHJvdXRlXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFpc0Rpc2FibGVkICYmIHR5cGVvZiBvbkNsaWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIG9uQ2xpY2soZXZlbnQpO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgfHxcbiAgICAgICAgZXZlbnQubWV0YUtleSB8fFxuICAgICAgICBldmVudC5hbHRLZXkgfHxcbiAgICAgICAgZXZlbnQuY3RybEtleSB8fFxuICAgICAgICBldmVudC5zaGlmdEtleSB8fFxuICAgICAgICBldmVudC5idXR0b24gIT09IDAgfHxcbiAgICAgICAgaXNFeHRlcm5hbCB8fFxuICAgICAgICAodGFyZ2V0ICE9IG51bGwgJiYgdGFyZ2V0ICE9PSAnX3NlbGYnKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChyb3V0ZXIgPT0gbnVsbCB8fCBpc0Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcm91dGVyLmhpc3RvcnkucHVzaCh7XG4gICAgICAgIHBhdGhuYW1lLFxuICAgICAgICBzZWFyY2gsXG4gICAgICAgIGhhc2gsXG4gICAgICAgIGRlYnVnQ29udGV4dDoge1xuICAgICAgICAgIG9yaWdpbjogJ2xpbmstY2xpY2snLFxuICAgICAgICAgIHRyaWdnZXI6ICdsaW5rJyxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgW2hhc2gsIGlzRGlzYWJsZWQsIGlzRXh0ZXJuYWwsIG9uQ2xpY2ssIHBhdGhuYW1lLCByb3V0ZXIsIHRhcmdldCwgc2VhcmNoXSxcbiAgKTtcblxuICAvLyBDYWxsYmFjayB0byBwcmVsb2FkIGp1c3QgdGhlIGNvZGUgZm9yIHRoZSByb3V0ZTpcbiAgLy8gd2UgcGFzcyB0aGlzIHRvIG9uTW91c2VFbnRlciwgd2hpY2ggaXMgYSB3ZWFrZXIgc2lnbmFsXG4gIC8vIHRoYXQgdGhlIHVzZXIgKm1heSogbmF2aWdhdGUgdG8gdGhlIHJvdXRlLlxuICBjb25zdCBoYW5kbGVNb3VzZUVudGVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBvbk1vdXNlRW50ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgb25Nb3VzZUVudGVyKGV2ZW50KTtcbiAgICAgIH1cbiAgICAgIGlmIChldmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHJvdXRlciA9PSBudWxsIHx8IGlzRGlzYWJsZWQgfHwgaXNFeHRlcm5hbCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmVsb2FkT25Ib3ZlciA9PT0gJ25vbmUnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJlbG9hZFRhcmdldCA9IHtcbiAgICAgICAgcGF0aG5hbWUsXG4gICAgICAgIHNlYXJjaCxcbiAgICAgICAgc291cmNlOiAncHJlbG9hZC1ob3ZlcicsXG4gICAgICB9IGFzIGNvbnN0O1xuICAgICAgaWYgKHByZWxvYWRPbkhvdmVyID09PSAnY29kZS1hbmQtZGF0YScpIHtcbiAgICAgICAgcm91dGVyLnByZWxvYWQocHJlbG9hZFRhcmdldCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJvdXRlci5wcmVsb2FkQ29kZShwcmVsb2FkVGFyZ2V0KTtcbiAgICB9LFxuICAgIFtcbiAgICAgIHJvdXRlcixcbiAgICAgIGlzRGlzYWJsZWQsXG4gICAgICBpc0V4dGVybmFsLFxuICAgICAgb25Nb3VzZUVudGVyLFxuICAgICAgcHJlbG9hZE9uSG92ZXIsXG4gICAgICBwYXRobmFtZSxcbiAgICAgIHNlYXJjaCxcbiAgICBdLFxuICApO1xuXG4gIC8vIENhbGxiYWNrIHRvIHByZWxvYWQgdGhlIGNvZGUgYW5kIGRhdGEgZm9yIHRoZSByb3V0ZTpcbiAgLy8gd2UgcGFzcyB0aGlzIHRvIG9uTW91c2VEb3duLCBzaW5jZSB0aGlzIGlzIGEgc3Ryb25nZXJcbiAgLy8gc2lnbmFsIHRoYXQgdGhlIHVzZXIgd2lsbCBsaWtlbHkgY29tcGxldGUgdGhlIG5hdmlnYXRpb25cbiAgY29uc3QgaGFuZGxlTW91c2VEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKHR5cGVvZiBvbk1vdXNlRG93biA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBvbk1vdXNlRG93bihldmVudCk7XG4gICAgICB9XG4gICAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChyb3V0ZXIgPT0gbnVsbCB8fCBpc0Rpc2FibGVkIHx8IGlzRXh0ZXJuYWwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAocHJlbG9hZE9uTW91c2VEb3duID09PSAnY29kZS1hbmQtZGF0YScpIHtcbiAgICAgICAgcm91dGVyLnByZWxvYWQoeyBwYXRobmFtZSwgc2VhcmNoLCBzb3VyY2U6ICdsaW5rLWNsaWNrJyB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHJvdXRlcixcbiAgICAgIGlzRGlzYWJsZWQsXG4gICAgICBpc0V4dGVybmFsLFxuICAgICAgb25Nb3VzZURvd24sXG4gICAgICBwcmVsb2FkT25Nb3VzZURvd24sXG4gICAgICBwYXRobmFtZSxcbiAgICAgIHNlYXJjaCxcbiAgICBdLFxuICApO1xuXG4gIGNvbnN0IGhyZWZWYWx1ZSA9IHJlc29sdmVkRGVzdGluYXRpb24uaHJlZjtcbiAgcmV0dXJuIChcbiAgICA8YVxuICAgICAgey4uLmFuY2hvclByb3BzfVxuICAgICAgY2xhc3NOYW1lPXtjeChjbGFzc05hbWVzKX1cbiAgICAgIGhyZWY9e2hyZWZWYWx1ZX1cbiAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgIG9uTW91c2VEb3duPXtoYW5kbGVNb3VzZURvd259XG4gICAgICBvbk1vdXNlRW50ZXI9e2hhbmRsZU1vdXNlRW50ZXJ9XG4gICAgICBvbk1vdXNlT3Zlcj17b25Nb3VzZU92ZXJ9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhcmdldD17dGFyZ2V0fVxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L2E+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBMaW5rO1xuIl19
@@ -1,11 +1,11 @@
1
1
  import { type JSX, type ReactNode } from 'react';
2
- import type { PreparedMatchRoute, RouteEntry, RouterMatchedRoute } from '../types.js';
2
+ import type { PreparedRouteSegment, RouteEntry, RouterMatchedRoute } from '../types.js';
3
3
  import type { ParamData } from 'path-to-regexp';
4
4
  type Props<TVars extends ParamData = ParamData> = {
5
5
  children?: ReactNode;
6
6
  entry?: RouteEntry<TVars>;
7
7
  match: RouterMatchedRoute<TVars> | null;
8
- preparedRoute: PreparedMatchRoute;
8
+ preparedSegment: PreparedRouteSegment;
9
9
  };
10
10
  declare const RouteComponentWrapper: <TVars extends ParamData = ParamData>(props: Props<TVars>) => JSX.Element | null;
11
11
  export default RouteComponentWrapper;
@@ -1 +1 @@
1
- {"version":3,"file":"RouteComponentWrapper.d.ts","sourceRoot":"","sources":["../../../src/routing/RouteComponentWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EACV,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAkChD,KAAK,KAAK,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS,IAAI;IAChD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1B,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACxC,aAAa,EAAE,kBAAkB,CAAC;CACnC,CAAC;AAaF,QAAA,MAAM,qBAAqB,GAAI,KAAK,SAAS,SAAS,GAAG,SAAS,SACzD,KAAK,CAAC,KAAK,CAAC,KAClB,GAAG,CAAC,OAAO,GAAG,IAiIhB,CAAC;eAEa,qBAAqB"}
1
+ {"version":3,"file":"RouteComponentWrapper.d.ts","sourceRoot":"","sources":["../../../src/routing/RouteComponentWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,GAAG,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE,OAAO,KAAK,EACV,oBAAoB,EACpB,UAAU,EAEV,kBAAkB,EACnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAkChD,KAAK,KAAK,CAAC,KAAK,SAAS,SAAS,GAAG,SAAS,IAAI;IAChD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;IAC1B,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;IACxC,eAAe,EAAE,oBAAoB,CAAC;CACvC,CAAC;AAaF,QAAA,MAAM,qBAAqB,GAAI,KAAK,SAAS,SAAS,GAAG,SAAS,SACzD,KAAK,CAAC,KAAK,CAAC,KAClB,GAAG,CAAC,OAAO,GAAG,IAiIhB,CAAC;eAEa,qBAAqB"}
@@ -9,8 +9,8 @@ function RouteHighlightBoundary(props) {
9
9
  return (_jsxs(_Fragment, { children: [_jsx("span", { "data-plumile-route-start": highlightId, "aria-hidden": "true", style: { display: 'none' } }), children, _jsx("span", { "data-plumile-route-end": highlightId, "aria-hidden": "true", style: { display: 'none' } })] }));
10
10
  }
11
11
  const RouteComponentWrapper = (props) => {
12
- const { children, entry, match, preparedRoute } = props;
13
- const { resourcePage, preparedResource, render, redirectTo, highlightId } = preparedRoute;
12
+ const { children, entry, match, preparedSegment } = props;
13
+ const { resourcePage, preparedResource, render, redirectTo, highlightId } = preparedSegment;
14
14
  const router = useContext(RoutingContext);
15
15
  const currentEntry = entry ?? router?.get();
16
16
  const rawQuery = currentEntry?.query ?? {};
@@ -18,8 +18,8 @@ const RouteComponentWrapper = (props) => {
18
18
  const routeContext = currentEntry?.context;
19
19
  const typedQuery = rawQuery;
20
20
  const preparedSegments = currentEntry?.preparedMatch.segments ?? [];
21
- const { segmentIndex } = preparedRoute;
22
- const leafSegment = preparedSegments.at(-1) ?? preparedRoute;
21
+ const { segmentIndex } = preparedSegment;
22
+ const leafSegment = preparedSegments.at(-1) ?? preparedSegment;
23
23
  const route = useMemo(() => {
24
24
  if (match == null) {
25
25
  return null;
@@ -35,15 +35,18 @@ const RouteComponentWrapper = (props) => {
35
35
  }
36
36
  return resourcePage.read();
37
37
  }, [resourcePage]);
38
+ let RoutePageComponent;
39
+ if (Component != null) {
40
+ RoutePageComponent = Component;
41
+ }
38
42
  let content = null;
39
43
  let redirectToPathname = null;
40
44
  if (render != null) {
41
45
  try {
42
46
  content = render({
43
47
  children,
44
- Component,
45
- preparedSegment: preparedRoute,
46
- preparedRoute,
48
+ Component: RoutePageComponent,
49
+ preparedSegment,
47
50
  preparedSegments,
48
51
  segmentIndex,
49
52
  leafSegment,
@@ -92,12 +95,12 @@ const RouteComponentWrapper = (props) => {
92
95
  return wrapWithHighlight(content ?? null);
93
96
  }
94
97
  }
95
- if (Component == null) {
96
- return null;
98
+ if (RoutePageComponent == null) {
99
+ return wrapWithHighlight(children ?? null);
97
100
  }
98
- const componentNode = (_jsx(Component, { match: match, preparedRoute: preparedRoute, route: route, prepared: prepared, query: typedQuery, filters: filters, preparedSegments: preparedSegments, segmentIndex: segmentIndex, leafSegment: leafSegment, children: children }));
101
+ const componentNode = (_jsx(RoutePageComponent, { match: match, preparedSegment: preparedSegment, route: route, prepared: prepared, query: typedQuery, filters: filters, preparedSegments: preparedSegments, segmentIndex: segmentIndex, leafSegment: leafSegment, children: children }));
99
102
  const content2 = wrapWithHighlight(componentNode);
100
103
  return _jsx(RouteComponent, { redirectToPathname: pathname, content: content2 });
101
104
  };
102
105
  export default RouteComponentWrapper;
103
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVDb21wb25lbnRXcmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRpbmcvUm91dGVDb21wb25lbnRXcmFwcGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQTRCLE1BQU0sT0FBTyxDQUFDO0FBUXRFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRCxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVUvRCxTQUFTLHNCQUFzQixDQUFDLEtBQTZCO0lBQzNELE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ3hDLE9BQU8sQ0FDTCw4QkFDRSwyQ0FDNEIsV0FBVyxpQkFDekIsTUFBTSxFQUNsQixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQzFCLEVBQ0QsUUFBUSxFQUNULHlDQUMwQixXQUFXLGlCQUN2QixNQUFNLEVBQ2xCLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FDMUIsSUFDRCxDQUNKLENBQUM7QUFDSixDQUFDO0FBb0JELE1BQU0scUJBQXFCLEdBQUcsQ0FDNUIsS0FBbUIsRUFDQyxFQUFFO0lBQ3RCLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDeEQsTUFBTSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxHQUN2RSxhQUFhLENBQUM7SUFDaEIsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sWUFBWSxH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LENBQUM7QUFDN0UsQ0FBQyxDQUFDO0FBRUYsZUFBZSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbnRleHQsIHVzZU1lbW8sIHR5cGUgSlNYLCB0eXBlIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHR5cGUge1xuICBQcmVwYXJlZE1hdGNoUm91dGUsXG4gIFJvdXRlRW50cnksXG4gIFJvdXRlck1hdGNoZWRSb3V0ZSxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBQYXJhbURhdGEgfSBmcm9tICdwYXRoLXRvLXJlZ2V4cCc7XG5pbXBvcnQgeyBIdHRwUmVkaXJlY3QgfSBmcm9tICcuLi9lcnJvcnMvaW5kZXguanMnO1xuXG5pbXBvcnQgUm91dGluZ0NvbnRleHQgZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG5pbXBvcnQgUm91dGVDb21wb25lbnQgZnJvbSAnLi9Sb3V0ZUNvbXBvbmVudC5qcyc7XG5pbXBvcnQgeyByZWFkUHJlcGFyZWRSb3V0ZVZhbHVlIH0gZnJvbSAnLi4vcHJlcGFyZVJlc291cmNlLmpzJztcblxudHlwZSBIaWdobGlnaHRCb3VuZGFyeVByb3BzID0ge1xuICBoaWdobGlnaHRJZDogc3RyaW5nO1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xufTtcblxuLyoqXG4gKiBXcmFwcyB0aGUgcmVuZGVyZWQgcm91dGUgb3V0cHV0IHdpdGggaW52aXNpYmxlIG1hcmtlcnMgc28gRGV2VG9vbHMgY2FuIG1hcCBpdCBiYWNrLlxuICovXG5mdW5jdGlvbiBSb3V0ZUhpZ2hsaWdodEJvdW5kYXJ5KHByb3BzOiBIaWdobGlnaHRCb3VuZGFyeVByb3BzKTogSlNYLkVsZW1lbnQge1xuICBjb25zdCB7IGhpZ2hsaWdodElkLCBjaGlsZHJlbiB9ID0gcHJvcHM7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxzcGFuXG4gICAgICAgIGRhdGEtcGx1bWlsZS1yb3V0ZS1zdGFydD17aGlnaGxpZ2h0SWR9XG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6ICdub25lJyB9fVxuICAgICAgLz5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDxzcGFuXG4gICAgICAgIGRhdGEtcGx1bWlsZS1yb3V0ZS1lbmQ9e2hpZ2hsaWdodElkfVxuICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiAnbm9uZScgfX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbnR5cGUgUHJvcHM8VFZhcnMgZXh0ZW5kcyBQYXJhbURhdGEgPSBQYXJhbURhdGE+ID0ge1xuICBjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbiAgZW50cnk/OiBSb3V0ZUVudHJ5PFRWYXJzPjtcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUVmFycz4gfCBudWxsO1xuICBwcmVwYXJlZFJvdXRlOiBQcmVwYXJlZE1hdGNoUm91dGU7XG59O1xuXG4vKipcbiAqIFRoZSBgcmVzb3VyY2VQYWdlYCBwcm9wZXJ0eSBmcm9tIHRoZSByb3V0ZSBlbnRyeSBpcyBhIFJlc291cmNlLCB3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSByZWFkeS5cbiAqIFdlIHVzZSBhIGhlbHBlciBjaGlsZCBjb21wb25lbnQgdG8gdW53cmFwIHRoZSByZXNvdXJjZSB3aXRoIGNvbXBvbmVudC5yZWFkKCksIGFuZCB0aGVuXG4gKiByZW5kZXIgaXQgaWYgaXRzIHJlYWR5LlxuICpcbiAqIE5PVEU6IGNhbGxpbmcgcm91dGVFbnRyeS5yb3V0ZS5jb21wb25lbnQucmVhZCgpIGRpcmVjdGx5IGluIFJvdXRlUmVuZGVyZXIgd29sZG4ndCB3b3JrIHRoZVxuICogd2F5IHdlJ2QgZXhwZWN0LiBCZWNhdXNlIHRoYXQgbWV0aG9kIGNvdWxkIHRocm93IC0gZWl0aGVyIHN1c3BlbmRpbmcgb3Igb24gZXJyb3IgLSB0aGUgZXJyb3JcbiAqIHdvdWxkIGJ1YmJsZSB1cCB0byB0aGUgKmNhbGxlciogb2YgUm91dGVSZW5kZXJlci4gV2Ugd2FudCB0aGUgc3VzcGVuZC9lcnJvciB0byBidWJibGUgdXAgdG9cbiAqIG91ciBFcnJvckJvdW5kYXJ5L1N1c3BlbnNlIGNvbXBvbmVudHMsIHNvIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgdGhlIHN1c3BlbmQvZXJyb3IgaGFwcGVuc1xuICogaW4gYSBjaGlsZCBjb21wb25lbnQuXG4gKi9cbmNvbnN0IFJvdXRlQ29tcG9uZW50V3JhcHBlciA9IDxUVmFycyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YT4oXG4gIHByb3BzOiBQcm9wczxUVmFycz4sXG4pOiBKU1guRWxlbWVudCB8IG51bGwgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBlbnRyeSwgbWF0Y2gsIHByZXBhcmVkUm91dGUgfSA9IHByb3BzO1xuICBjb25zdCB7IHJlc291cmNlUGFnZSwgcHJlcGFyZWRSZXNvdXJjZSwgcmVuZGVyLCByZWRpcmVjdFRvLCBoaWdobGlnaHRJZCB9ID1cbiAgICBwcmVwYXJlZFJvdXRlOyAvLyByb3V0ZURhdGFcbiAgY29uc3Qgcm91dGVyID0gdXNlQ29udGV4dChSb3V0aW5nQ29udGV4dCk7XG4gIGNvbnN0IGN1cnJlbnRFbnRyeSA9IGVudHJ5ID8/IHJvdXRlcj8uZ2V0KCk7XG4gIGNvbnN0IHJhd1F1ZXJ5ID0gY3VycmVudEVudHJ5Py5xdWVyeSA/PyB7fTtcbiAgY29uc3QgZmlsdGVycyA9IGN1cnJlbnRFbnRyeT8uZmlsdGVycztcbiAgY29uc3Qgcm91dGVDb250ZXh0ID0gY3VycmVudEVudHJ5Py5jb250ZXh0O1xuICBjb25zdCB0eXBlZFF1ZXJ5ID0gcmF3UXVlcnk7IC8vIGxlZ2FjeSB0eXBlZFF1ZXJ5IHJlbW92ZWRcbiAgY29uc3QgcHJlcGFyZWRTZWdtZW50cyA9IGN1cnJlbnRFbnRyeT8ucHJlcGFyZWRNYXRjaC5zZWdtZW50cyA/PyBbXTtcbiAgY29uc3QgeyBzZWdtZW50SW5kZXggfSA9IHByZXBhcmVkUm91dGU7XG4gIGNvbnN0IGxlYWZTZWdtZW50ID0gcHJlcGFyZWRTZWdtZW50cy5hdCgtMSkgPz8gcHJlcGFyZWRSb3V0ZTtcblxuICBjb25zdCByb3V0ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChtYXRjaCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2gucm91dGU7XG4gIH0sIFttYXRjaF0pO1xuXG4gIGNvbnN0IHByZXBhcmVkID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHJlYWRQcmVwYXJlZFJvdXRlVmFsdWUocHJlcGFyZWRSZXNvdXJjZSk7XG4gIH0sIFtwcmVwYXJlZFJlc291cmNlXSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcm9taXNlLWZ1bmN0aW9uLWFzeW5jXG4gIGNvbnN0IENvbXBvbmVudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChyZXNvdXJjZVBhZ2UgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb25zaXN0ZW50LXJldHVyblxuICAgIHJldHVybiByZXNvdXJjZVBhZ2UucmVhZCgpO1xuICB9LCBbcmVzb3VyY2VQYWdlXSk7XG5cbiAgbGV0IGNvbnRlbnQ6XG4gICAgSlNYLkVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkIHwgUHJvbWlzZTxKU1guRWxlbWVudCB8IG51bGwgfCB1bmRlZmluZWQ+ID1cbiAgICBudWxsO1xuICBsZXQgcmVkaXJlY3RUb1BhdGhuYW1lOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBpZiAocmVuZGVyICE9IG51bGwpIHtcbiAgICB0cnkge1xuICAgICAgY29udGVudCA9IHJlbmRlcih7XG4gICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yOiBPSyBjYW4gYmUgYSBzdXNwZW5kXG4gICAgICAgIENvbXBvbmVudCxcbiAgICAgICAgcHJlcGFyZWRTZWdtZW50OiBwcmVwYXJlZFJvdXRlLFxuICAgICAgICBwcmVwYXJlZFJvdXRlLFxuICAgICAgICBwcmVwYXJlZFNlZ21lbnRzLFxuICAgICAgICBzZWdtZW50SW5kZXgsXG4gICAgICAgIGxlYWZTZWdtZW50LFxuICAgICAgICByb3V0ZSxcbiAgICAgICAgcHJlcGFyZWQsXG4gICAgICAgIGNvbnRleHQ6IHJvdXRlQ29udGV4dCxcbiAgICAgICAgcmF3UXVlcnksXG4gICAgICAgIHF1ZXJ5OiB0eXBlZFF1ZXJ5LFxuICAgICAgICBmaWx0ZXJzLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBSZWRpcmVjdCAmJiByb3V0ZXIgIT0gbnVsbCkge1xuICAgICAgICBjb250ZW50ID0gbnVsbDtcbiAgICAgICAgcmVkaXJlY3RUb1BhdGhuYW1lID0gZXJyb3IucmVkaXJlY3RUbztcbiAgICAgICAgLy8gSWYgaXQncyBzdXNwZW5kZWRcbiAgICAgIH0gZWxzZSBpZiAoZXJyb3IgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIGNvbnRlbnQgPSBlcnJvcjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGVycm9yID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICBjb250ZW50ID0gdW5kZWZpbmVkO1xuICAgICAgICByZWRpcmVjdFRvUGF0aG5hbWUgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgY29uc29sZS5lcnJvcignRVJST1I6ICcsIGVycm9yKTtcbiAgICAgICAgY29udGVudCA9IG51bGw7XG4gICAgICAgIHJlZGlyZWN0VG9QYXRobmFtZSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgcGF0aG5hbWU6IHN0cmluZyB8IG51bGwgPSByZWRpcmVjdFRvID8/IHJlZGlyZWN0VG9QYXRobmFtZSA/PyBudWxsO1xuXG4gIGNvbnN0IHdyYXBXaXRoSGlnaGxpZ2h0ID0gKG5vZGU6IFJlYWN0Tm9kZSk6IEpTWC5FbGVtZW50ID0+IHtcbiAgICBpZiAodHlwZW9mIGhpZ2hsaWdodElkICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIDw+e25vZGV9PC8+O1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPFJvdXRlSGlnaGxpZ2h0Qm91bmRhcnkgaGlnaGxpZ2h0SWQ9e2hpZ2hsaWdodElkfT5cbiAgICAgICAge25vZGV9XG4gICAgICA8L1JvdXRlSGlnaGxpZ2h0Qm91bmRhcnk+XG4gICAgKTtcbiAgfTtcblxuICBpZiAocmVuZGVyICE9IG51bGwpIHtcbiAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvb25seS10aHJvdy1lcnJvclxuICAgICAgdGhyb3cgY29udGVudDtcbiAgICB9XG5cbiAgICBpZiAocGF0aG5hbWUgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIDxSb3V0ZUNvbXBvbmVudCByZWRpcmVjdFRvUGF0aG5hbWU9e3BhdGhuYW1lfSAvPjtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbnRlbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXR1cm4gd3JhcFdpdGhIaWdobGlnaHQoY29udGVudCA/PyBudWxsKTtcbiAgICB9XG4gIH1cblxuICBpZiAoQ29tcG9uZW50ID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGNvbXBvbmVudE5vZGUgPSAoXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogT0sgLSBjb21wb25lbnQgdHlwZSBpbmZlcmVuY2UgZnJvbSByZXNvdXJjZSBsb2FkZXIgaXMgZHluYW1pY1xuICAgIDxDb21wb25lbnRcbiAgICAgIG1hdGNoPXttYXRjaH1cbiAgICAgIHByZXBhcmVkUm91dGU9e3ByZXBhcmVkUm91dGV9XG4gICAgICByb3V0ZT17cm91dGV9XG4gICAgICBwcmVwYXJlZD17cHJlcGFyZWR9XG4gICAgICBxdWVyeT17dHlwZWRRdWVyeX1cbiAgICAgIGZpbHRlcnM9e2ZpbHRlcnN9XG4gICAgICBwcmVwYXJlZFNlZ21lbnRzPXtwcmVwYXJlZFNlZ21lbnRzfVxuICAgICAgc2VnbWVudEluZGV4PXtzZWdtZW50SW5kZXh9XG4gICAgICBsZWFmU2VnbWVudD17bGVhZlNlZ21lbnR9XG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvQ29tcG9uZW50PlxuICApO1xuICBjb25zdCBjb250ZW50MiA9IHdyYXBXaXRoSGlnaGxpZ2h0KGNvbXBvbmVudE5vZGUpO1xuXG4gIHJldHVybiA8Um91dGVDb21wb25lbnQgcmVkaXJlY3RUb1BhdGhuYW1lPXtwYXRobmFtZX0gY29udGVudD17Y29udGVudDJ9IC8+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUm91dGVDb21wb25lbnRXcmFwcGVyO1xuIl19
106
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUm91dGVDb21wb25lbnRXcmFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRpbmcvUm91dGVDb21wb25lbnRXcmFwcGVyLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQTRCLE1BQU0sT0FBTyxDQUFDO0FBU3RFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVsRCxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQVUvRCxTQUFTLHNCQUFzQixDQUFDLEtBQTZCO0lBQzNELE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ3hDLE9BQU8sQ0FDTCw4QkFDRSwyQ0FDNEIsV0FBVyxpQkFDekIsTUFBTSxFQUNsQixLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQzFCLEVBQ0QsUUFBUSxFQUNULHlDQUMwQixXQUFXLGlCQUN2QixNQUFNLEVBQ2xCLEtBQUssRUFBRSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FDMUIsSUFDRCxDQUNKLENBQUM7QUFDSixDQUFDO0FBb0JELE1BQU0scUJBQXFCLEdBQUcsQ0FDNUIsS0FBbUIsRUFDQyxFQUFFO0lBQ3RCLE1BQU0sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQUUsR0FBRyxLQUFLLENBQUM7SUFDMUQsTUFBTSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxHQUN2RSxlQUFlLENBQUM7SUFDbEIsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzFDLE1BQU0sWUFBWSxH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Q3RCLENBQUM7SUFDRixNQUFNLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVsRCxPQUFPLEtBQUMsY0FBYyxJQUFDLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxHQUFJLENBQUM7QUFDN0UsQ0FBQyxDQUFDO0FBRUYsZUFBZSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbnRleHQsIHVzZU1lbW8sIHR5cGUgSlNYLCB0eXBlIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcblxuaW1wb3J0IHR5cGUge1xuICBQcmVwYXJlZFJvdXRlU2VnbWVudCxcbiAgUm91dGVFbnRyeSxcbiAgUm91dGVSZWFjdENvbXBvbmVudCxcbiAgUm91dGVyTWF0Y2hlZFJvdXRlLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcbmltcG9ydCB7IEh0dHBSZWRpcmVjdCB9IGZyb20gJy4uL2Vycm9ycy9pbmRleC5qcyc7XG5cbmltcG9ydCBSb3V0aW5nQ29udGV4dCBmcm9tICcuL1JvdXRpbmdDb250ZXh0LmpzJztcbmltcG9ydCBSb3V0ZUNvbXBvbmVudCBmcm9tICcuL1JvdXRlQ29tcG9uZW50LmpzJztcbmltcG9ydCB7IHJlYWRQcmVwYXJlZFJvdXRlVmFsdWUgfSBmcm9tICcuLi9wcmVwYXJlUmVzb3VyY2UuanMnO1xuXG50eXBlIEhpZ2hsaWdodEJvdW5kYXJ5UHJvcHMgPSB7XG4gIGhpZ2hsaWdodElkOiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG59O1xuXG4vKipcbiAqIFdyYXBzIHRoZSByZW5kZXJlZCByb3V0ZSBvdXRwdXQgd2l0aCBpbnZpc2libGUgbWFya2VycyBzbyBEZXZUb29scyBjYW4gbWFwIGl0IGJhY2suXG4gKi9cbmZ1bmN0aW9uIFJvdXRlSGlnaGxpZ2h0Qm91bmRhcnkocHJvcHM6IEhpZ2hsaWdodEJvdW5kYXJ5UHJvcHMpOiBKU1guRWxlbWVudCB7XG4gIGNvbnN0IHsgaGlnaGxpZ2h0SWQsIGNoaWxkcmVuIH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHNwYW5cbiAgICAgICAgZGF0YS1wbHVtaWxlLXJvdXRlLXN0YXJ0PXtoaWdobGlnaHRJZH1cbiAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogJ25vbmUnIH19XG4gICAgICAvPlxuICAgICAge2NoaWxkcmVufVxuICAgICAgPHNwYW5cbiAgICAgICAgZGF0YS1wbHVtaWxlLXJvdXRlLWVuZD17aGlnaGxpZ2h0SWR9XG4gICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6ICdub25lJyB9fVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn1cblxudHlwZSBQcm9wczxUVmFycyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YT4gPSB7XG4gIGNoaWxkcmVuPzogUmVhY3ROb2RlO1xuICBlbnRyeT86IFJvdXRlRW50cnk8VFZhcnM+O1xuICBtYXRjaDogUm91dGVyTWF0Y2hlZFJvdXRlPFRWYXJzPiB8IG51bGw7XG4gIHByZXBhcmVkU2VnbWVudDogUHJlcGFyZWRSb3V0ZVNlZ21lbnQ7XG59O1xuXG4vKipcbiAqIFRoZSBgcmVzb3VyY2VQYWdlYCBwcm9wZXJ0eSBmcm9tIHRoZSByb3V0ZSBlbnRyeSBpcyBhIFJlc291cmNlLCB3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSByZWFkeS5cbiAqIFdlIHVzZSBhIGhlbHBlciBjaGlsZCBjb21wb25lbnQgdG8gdW53cmFwIHRoZSByZXNvdXJjZSB3aXRoIGNvbXBvbmVudC5yZWFkKCksIGFuZCB0aGVuXG4gKiByZW5kZXIgaXQgaWYgaXRzIHJlYWR5LlxuICpcbiAqIE5PVEU6IGNhbGxpbmcgcm91dGVFbnRyeS5yb3V0ZS5jb21wb25lbnQucmVhZCgpIGRpcmVjdGx5IGluIFJvdXRlUmVuZGVyZXIgd29sZG4ndCB3b3JrIHRoZVxuICogd2F5IHdlJ2QgZXhwZWN0LiBCZWNhdXNlIHRoYXQgbWV0aG9kIGNvdWxkIHRocm93IC0gZWl0aGVyIHN1c3BlbmRpbmcgb3Igb24gZXJyb3IgLSB0aGUgZXJyb3JcbiAqIHdvdWxkIGJ1YmJsZSB1cCB0byB0aGUgKmNhbGxlciogb2YgUm91dGVSZW5kZXJlci4gV2Ugd2FudCB0aGUgc3VzcGVuZC9lcnJvciB0byBidWJibGUgdXAgdG9cbiAqIG91ciBFcnJvckJvdW5kYXJ5L1N1c3BlbnNlIGNvbXBvbmVudHMsIHNvIHdlIGhhdmUgdG8gZW5zdXJlIHRoYXQgdGhlIHN1c3BlbmQvZXJyb3IgaGFwcGVuc1xuICogaW4gYSBjaGlsZCBjb21wb25lbnQuXG4gKi9cbmNvbnN0IFJvdXRlQ29tcG9uZW50V3JhcHBlciA9IDxUVmFycyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YT4oXG4gIHByb3BzOiBQcm9wczxUVmFycz4sXG4pOiBKU1guRWxlbWVudCB8IG51bGwgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCBlbnRyeSwgbWF0Y2gsIHByZXBhcmVkU2VnbWVudCB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgcmVzb3VyY2VQYWdlLCBwcmVwYXJlZFJlc291cmNlLCByZW5kZXIsIHJlZGlyZWN0VG8sIGhpZ2hsaWdodElkIH0gPVxuICAgIHByZXBhcmVkU2VnbWVudDsgLy8gcm91dGVEYXRhXG4gIGNvbnN0IHJvdXRlciA9IHVzZUNvbnRleHQoUm91dGluZ0NvbnRleHQpO1xuICBjb25zdCBjdXJyZW50RW50cnkgPSBlbnRyeSA/PyByb3V0ZXI/LmdldCgpO1xuICBjb25zdCByYXdRdWVyeSA9IGN1cnJlbnRFbnRyeT8ucXVlcnkgPz8ge307XG4gIGNvbnN0IGZpbHRlcnMgPSBjdXJyZW50RW50cnk/LmZpbHRlcnM7XG4gIGNvbnN0IHJvdXRlQ29udGV4dCA9IGN1cnJlbnRFbnRyeT8uY29udGV4dDtcbiAgY29uc3QgdHlwZWRRdWVyeSA9IHJhd1F1ZXJ5OyAvLyBsZWdhY3kgdHlwZWRRdWVyeSByZW1vdmVkXG4gIGNvbnN0IHByZXBhcmVkU2VnbWVudHMgPSBjdXJyZW50RW50cnk/LnByZXBhcmVkTWF0Y2guc2VnbWVudHMgPz8gW107XG4gIGNvbnN0IHsgc2VnbWVudEluZGV4IH0gPSBwcmVwYXJlZFNlZ21lbnQ7XG4gIGNvbnN0IGxlYWZTZWdtZW50ID0gcHJlcGFyZWRTZWdtZW50cy5hdCgtMSkgPz8gcHJlcGFyZWRTZWdtZW50O1xuXG4gIGNvbnN0IHJvdXRlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKG1hdGNoID09IG51bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBtYXRjaC5yb3V0ZTtcbiAgfSwgW21hdGNoXSk7XG5cbiAgY29uc3QgcHJlcGFyZWQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gcmVhZFByZXBhcmVkUm91dGVWYWx1ZShwcmVwYXJlZFJlc291cmNlKTtcbiAgfSwgW3ByZXBhcmVkUmVzb3VyY2VdKTtcblxuICBjb25zdCBDb21wb25lbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAocmVzb3VyY2VQYWdlID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY29uc2lzdGVudC1yZXR1cm5cbiAgICByZXR1cm4gcmVzb3VyY2VQYWdlLnJlYWQoKTtcbiAgfSwgW3Jlc291cmNlUGFnZV0pO1xuICBsZXQgUm91dGVQYWdlQ29tcG9uZW50OiBSb3V0ZVJlYWN0Q29tcG9uZW50IHwgdW5kZWZpbmVkO1xuICBpZiAoQ29tcG9uZW50ICE9IG51bGwpIHtcbiAgICBSb3V0ZVBhZ2VDb21wb25lbnQgPSBDb21wb25lbnQgYXMgUm91dGVSZWFjdENvbXBvbmVudDtcbiAgfVxuXG4gIGxldCBjb250ZW50OlxuICAgIEpTWC5FbGVtZW50IHwgbnVsbCB8IHVuZGVmaW5lZCB8IFByb21pc2U8SlNYLkVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkPiA9XG4gICAgbnVsbDtcbiAgbGV0IHJlZGlyZWN0VG9QYXRobmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgaWYgKHJlbmRlciAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnRlbnQgPSByZW5kZXIoe1xuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgQ29tcG9uZW50OiBSb3V0ZVBhZ2VDb21wb25lbnQsXG4gICAgICAgIHByZXBhcmVkU2VnbWVudCxcbiAgICAgICAgcHJlcGFyZWRTZWdtZW50cyxcbiAgICAgICAgc2VnbWVudEluZGV4LFxuICAgICAgICBsZWFmU2VnbWVudCxcbiAgICAgICAgcm91dGUsXG4gICAgICAgIHByZXBhcmVkLFxuICAgICAgICBjb250ZXh0OiByb3V0ZUNvbnRleHQsXG4gICAgICAgIHJhd1F1ZXJ5LFxuICAgICAgICBxdWVyeTogdHlwZWRRdWVyeSxcbiAgICAgICAgZmlsdGVycyxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwUmVkaXJlY3QgJiYgcm91dGVyICE9IG51bGwpIHtcbiAgICAgICAgY29udGVudCA9IG51bGw7XG4gICAgICAgIHJlZGlyZWN0VG9QYXRobmFtZSA9IGVycm9yLnJlZGlyZWN0VG87XG4gICAgICAgIC8vIElmIGl0J3Mgc3VzcGVuZGVkXG4gICAgICB9IGVsc2UgaWYgKGVycm9yIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICBjb250ZW50ID0gZXJyb3I7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBlcnJvciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29udGVudCA9IHVuZGVmaW5lZDtcbiAgICAgICAgcmVkaXJlY3RUb1BhdGhuYW1lID0gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0VSUk9SOiAnLCBlcnJvcik7XG4gICAgICAgIGNvbnRlbnQgPSBudWxsO1xuICAgICAgICByZWRpcmVjdFRvUGF0aG5hbWUgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBhdGhuYW1lOiBzdHJpbmcgfCBudWxsID0gcmVkaXJlY3RUbyA/PyByZWRpcmVjdFRvUGF0aG5hbWUgPz8gbnVsbDtcblxuICBjb25zdCB3cmFwV2l0aEhpZ2hsaWdodCA9IChub2RlOiBSZWFjdE5vZGUpOiBKU1guRWxlbWVudCA9PiB7XG4gICAgaWYgKHR5cGVvZiBoaWdobGlnaHRJZCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiA8Pntub2RlfTwvPjtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxSb3V0ZUhpZ2hsaWdodEJvdW5kYXJ5IGhpZ2hsaWdodElkPXtoaWdobGlnaHRJZH0+XG4gICAgICAgIHtub2RlfVxuICAgICAgPC9Sb3V0ZUhpZ2hsaWdodEJvdW5kYXJ5PlxuICAgICk7XG4gIH07XG5cbiAgaWYgKHJlbmRlciAhPSBudWxsKSB7XG4gICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L29ubHktdGhyb3ctZXJyb3JcbiAgICAgIHRocm93IGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgaWYgKHBhdGhuYW1lICE9IG51bGwpIHtcbiAgICAgIHJldHVybiA8Um91dGVDb21wb25lbnQgcmVkaXJlY3RUb1BhdGhuYW1lPXtwYXRobmFtZX0gLz47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb250ZW50ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgcmV0dXJuIHdyYXBXaXRoSGlnaGxpZ2h0KGNvbnRlbnQgPz8gbnVsbCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKFJvdXRlUGFnZUNvbXBvbmVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHdyYXBXaXRoSGlnaGxpZ2h0KGNoaWxkcmVuID8/IG51bGwpO1xuICB9XG5cbiAgY29uc3QgY29tcG9uZW50Tm9kZSA9IChcbiAgICA8Um91dGVQYWdlQ29tcG9uZW50XG4gICAgICBtYXRjaD17bWF0Y2h9XG4gICAgICBwcmVwYXJlZFNlZ21lbnQ9e3ByZXBhcmVkU2VnbWVudH1cbiAgICAgIHJvdXRlPXtyb3V0ZX1cbiAgICAgIHByZXBhcmVkPXtwcmVwYXJlZH1cbiAgICAgIHF1ZXJ5PXt0eXBlZFF1ZXJ5fVxuICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgIHByZXBhcmVkU2VnbWVudHM9e3ByZXBhcmVkU2VnbWVudHN9XG4gICAgICBzZWdtZW50SW5kZXg9e3NlZ21lbnRJbmRleH1cbiAgICAgIGxlYWZTZWdtZW50PXtsZWFmU2VnbWVudH1cbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9Sb3V0ZVBhZ2VDb21wb25lbnQ+XG4gICk7XG4gIGNvbnN0IGNvbnRlbnQyID0gd3JhcFdpdGhIaWdobGlnaHQoY29tcG9uZW50Tm9kZSk7XG5cbiAgcmV0dXJuIDxSb3V0ZUNvbXBvbmVudCByZWRpcmVjdFRvUGF0aG5hbWU9e3BhdGhuYW1lfSBjb250ZW50PXtjb250ZW50Mn0gLz47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSb3V0ZUNvbXBvbmVudFdyYXBwZXI7XG4iXX0=