@agnos-ui/angular-headless 0.0.1-alpha.1 → 0.0.1-alpha.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/components/accordion/accordion.d.ts +11 -0
  2. package/components/accordion/index.d.ts +1 -0
  3. package/components/alert/alert.d.ts +7 -0
  4. package/components/alert/index.d.ts +1 -0
  5. package/components/modal/index.d.ts +1 -0
  6. package/components/modal/modal.d.ts +7 -0
  7. package/components/pagination/index.d.ts +1 -0
  8. package/components/pagination/pagination.d.ts +8 -0
  9. package/components/progressbar/index.d.ts +1 -0
  10. package/components/progressbar/progressbar.d.ts +7 -0
  11. package/components/rating/index.d.ts +1 -0
  12. package/components/rating/rating.d.ts +6 -0
  13. package/components/select/index.d.ts +1 -0
  14. package/components/select/select.d.ts +8 -0
  15. package/components/slider/index.d.ts +1 -0
  16. package/components/slider/slider.d.ts +1 -0
  17. package/config.d.ts +53 -0
  18. package/esm2022/agnos-ui-angular-headless.mjs +2 -2
  19. package/esm2022/components/accordion/accordion.mjs +4 -0
  20. package/esm2022/components/accordion/index.mjs +2 -0
  21. package/esm2022/components/alert/alert.mjs +4 -0
  22. package/esm2022/components/alert/index.mjs +2 -0
  23. package/esm2022/components/modal/index.mjs +2 -0
  24. package/esm2022/components/modal/modal.mjs +4 -0
  25. package/esm2022/components/pagination/index.mjs +2 -0
  26. package/esm2022/components/pagination/pagination.mjs +4 -0
  27. package/esm2022/components/progressbar/index.mjs +2 -0
  28. package/esm2022/components/progressbar/progressbar.mjs +4 -0
  29. package/esm2022/components/rating/index.mjs +2 -0
  30. package/esm2022/components/rating/rating.mjs +4 -0
  31. package/esm2022/components/select/index.mjs +2 -0
  32. package/esm2022/components/select/select.mjs +4 -0
  33. package/esm2022/components/slider/index.mjs +2 -0
  34. package/esm2022/components/slider/slider.mjs +2 -0
  35. package/esm2022/config.mjs +119 -0
  36. package/esm2022/generated/config.mjs +2 -0
  37. package/esm2022/generated/index.mjs +23 -0
  38. package/esm2022/generated/services/extendWidget.mjs +2 -0
  39. package/esm2022/generated/services/floatingUI.mjs +2 -0
  40. package/esm2022/generated/services/focustrack.mjs +2 -0
  41. package/esm2022/generated/services/intersection.mjs +2 -0
  42. package/esm2022/generated/services/navManager.mjs +2 -0
  43. package/esm2022/generated/services/portal.mjs +2 -0
  44. package/esm2022/generated/services/siblingsInert.mjs +2 -0
  45. package/esm2022/generated/services/transitions/baseTransitions.mjs +2 -0
  46. package/esm2022/generated/services/transitions/bootstrap.mjs +2 -0
  47. package/esm2022/generated/services/transitions/collapse.mjs +2 -0
  48. package/esm2022/generated/services/transitions/cssTransitions.mjs +2 -0
  49. package/esm2022/generated/services/transitions/simpleClassTransition.mjs +2 -0
  50. package/esm2022/generated/slot.directive.mjs +2 -0
  51. package/esm2022/generated/slotDefault.directive.mjs +2 -0
  52. package/esm2022/generated/types.mjs +2 -0
  53. package/esm2022/generated/utils/coercion.mjs +2 -0
  54. package/esm2022/generated/utils/directive.mjs +2 -0
  55. package/esm2022/generated/utils/stores.mjs +2 -0
  56. package/esm2022/generated/utils/widget.mjs +2 -0
  57. package/esm2022/generated/utils/writables.mjs +2 -0
  58. package/esm2022/generated/utils/zone.mjs +2 -0
  59. package/esm2022/index.mjs +13 -0
  60. package/esm2022/slot.directive.mjs +201 -0
  61. package/esm2022/slotDefault.directive.mjs +21 -0
  62. package/esm2022/types.mjs +21 -0
  63. package/esm2022/utils/coercion.mjs +32 -0
  64. package/esm2022/utils/directive.mjs +72 -0
  65. package/esm2022/utils/stores.mjs +23 -0
  66. package/esm2022/utils/widget.mjs +131 -0
  67. package/esm2022/utils/zone.mjs +73 -0
  68. package/fesm2022/agnos-ui-angular-headless.mjs +493 -174
  69. package/fesm2022/agnos-ui-angular-headless.mjs.map +1 -1
  70. package/generated/config.d.ts +1 -0
  71. package/generated/index.d.ts +22 -0
  72. package/generated/services/extendWidget.d.ts +1 -0
  73. package/generated/services/floatingUI.d.ts +1 -0
  74. package/generated/services/focustrack.d.ts +1 -0
  75. package/generated/services/intersection.d.ts +1 -0
  76. package/generated/services/navManager.d.ts +1 -0
  77. package/generated/services/portal.d.ts +1 -0
  78. package/generated/services/siblingsInert.d.ts +1 -0
  79. package/generated/services/transitions/baseTransitions.d.ts +1 -0
  80. package/generated/services/transitions/bootstrap.d.ts +1 -0
  81. package/generated/services/transitions/collapse.d.ts +1 -0
  82. package/generated/services/transitions/cssTransitions.d.ts +1 -0
  83. package/generated/services/transitions/simpleClassTransition.d.ts +1 -0
  84. package/generated/slot.directive.d.ts +1 -0
  85. package/generated/slotDefault.directive.d.ts +1 -0
  86. package/generated/types.d.ts +1 -0
  87. package/generated/utils/coercion.d.ts +1 -0
  88. package/generated/utils/directive.d.ts +1 -0
  89. package/generated/utils/stores.d.ts +1 -0
  90. package/generated/utils/widget.d.ts +1 -0
  91. package/generated/utils/writables.d.ts +1 -0
  92. package/generated/utils/zone.d.ts +1 -0
  93. package/index.d.ts +9 -5
  94. package/package.json +14 -17
  95. package/{lib/slot.directive.d.ts → slot.directive.d.ts} +3 -1
  96. package/{lib/slotDefault.directive.d.ts → slotDefault.directive.d.ts} +2 -1
  97. package/types.d.ts +35 -0
  98. package/utils/coercion.d.ts +20 -0
  99. package/utils/directive.d.ts +23 -0
  100. package/utils/stores.d.ts +13 -0
  101. package/utils/widget.d.ts +44 -0
  102. package/utils/zone.d.ts +22 -0
  103. package/esm2022/lib/slot.directive.mjs +0 -199
  104. package/esm2022/lib/slotDefault.directive.mjs +0 -20
  105. package/esm2022/lib/use.directive.mjs +0 -57
  106. package/esm2022/lib/utils.mjs +0 -127
  107. package/esm2022/public-api.mjs +0 -9
  108. package/lib/use.directive.d.ts +0 -12
  109. package/lib/utils.d.ts +0 -95
  110. package/public-api.d.ts +0 -34
@@ -0,0 +1,73 @@
1
+ import { Injectable, NgZone, inject } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ const noop = () => { };
4
+ const identity = (a) => a;
5
+ const createObjectWrapper = (wrap) => (object) => {
6
+ if (!object || typeof object !== 'object') {
7
+ return object;
8
+ }
9
+ const res = {};
10
+ for (const key of Object.keys(object)) {
11
+ res[key] = wrap(object[key]);
12
+ }
13
+ return res;
14
+ };
15
+ const createReturnValueWrapper = (wrapReturnValue, wrapResult) => (fn) => wrapResult(typeof fn === 'function' ? ((...args) => wrapReturnValue(fn(...args))) : fn);
16
+ export class ZoneWrapper {
17
+ constructor() {
18
+ this.#zone = inject(NgZone);
19
+ this.#hasZone = this.#zone.run(() => NgZone.isInAngularZone()); // check if zone is enabled (can be NoopZone, cf https://angular.io/guide/zone#noopzone)
20
+ this.#runNeeded = false;
21
+ this.#runPlanned = false;
22
+ this.planNgZoneRun = this.#hasZone
23
+ ? () => {
24
+ if (this.#zone.isStable) {
25
+ this.#runNeeded = true;
26
+ if (!this.#runPlanned) {
27
+ this.#runPlanned = true;
28
+ void (async () => {
29
+ await 0;
30
+ this.#runPlanned = false;
31
+ if (this.#runNeeded) {
32
+ this.ngZoneRun(noop);
33
+ }
34
+ })();
35
+ }
36
+ }
37
+ }
38
+ : noop;
39
+ this.insideNgZone = this.#hasZone
40
+ ? (fn) => (typeof fn === 'function' ? ((...args) => this.ngZoneRun(() => fn(...args))) : fn)
41
+ : identity;
42
+ this.insideNgZoneWrapFunctionsObject = createObjectWrapper(this.insideNgZone);
43
+ this.outsideNgZone = this.#hasZone
44
+ ? (fn) => (typeof fn === 'function' ? ((...args) => this.#zone.runOutsideAngular(() => fn(...args))) : fn)
45
+ : identity;
46
+ this.outsideNgZoneWrapFunctionsObject = createObjectWrapper(this.outsideNgZone);
47
+ this.outsideNgZoneWrapDirective = createReturnValueWrapper(this.outsideNgZoneWrapFunctionsObject, this.outsideNgZone);
48
+ this.outsideNgZoneWrapDirectivesObject = createObjectWrapper(this.outsideNgZoneWrapDirective);
49
+ }
50
+ #zone;
51
+ #hasZone; // check if zone is enabled (can be NoopZone, cf https://angular.io/guide/zone#noopzone)
52
+ #runNeeded;
53
+ #runPlanned;
54
+ /**
55
+ * Run the input function synchronously within the Angular zone
56
+ *
57
+ * @param fn - a function to run
58
+ * @returns the value returned by the function
59
+ */
60
+ ngZoneRun(fn) {
61
+ this.#runNeeded = false;
62
+ return this.#zone.run(fn);
63
+ }
64
+ static { this.ɵfac = function ZoneWrapper_Factory(t) { return new (t || ZoneWrapper)(); }; }
65
+ static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: ZoneWrapper, factory: ZoneWrapper.ɵfac, providedIn: 'root' }); }
66
+ }
67
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ZoneWrapper, [{
68
+ type: Injectable,
69
+ args: [{
70
+ providedIn: 'root',
71
+ }]
72
+ }], null, null); })();
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiem9uZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91dGlscy96b25lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFFekQsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sUUFBUSxHQUFHLENBQUksQ0FBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFJaEMsTUFBTSxtQkFBbUIsR0FDeEIsQ0FBQyxJQUFhLEVBQVcsRUFBRSxDQUMzQixDQUFDLE1BQU0sRUFBRSxFQUFFO0lBQ1YsSUFBSSxDQUFDLE1BQU0sSUFBSSxPQUFPLE1BQU0sS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUMzQyxPQUFPLE1BQU0sQ0FBQztJQUNmLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxFQUFTLENBQUM7SUFDdEIsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdkMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBRSxNQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDWixDQUFDLENBQUM7QUFFSCxNQUFNLHdCQUF3QixHQUM3QixDQUFDLGVBQXdCLEVBQUUsVUFBbUIsRUFBVyxFQUFFLENBQzNELENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDTixVQUFVLENBQUMsT0FBTyxFQUFFLEtBQUssVUFBVSxDQUFDLENBQUMsQ0FBRSxDQUFDLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBSzFHLE1BQU0sT0FBTyxXQUFXO0lBSHhCO1FBSVUsVUFBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2QixhQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyx3RkFBd0Y7UUFDNUosZUFBVSxHQUFHLEtBQUssQ0FBQztRQUNuQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixrQkFBYSxHQUFHLElBQUksQ0FBQyxRQUFRO1lBQzVCLENBQUMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ0wsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUN6QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztvQkFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQzt3QkFDdkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7d0JBQ3hCLEtBQUssQ0FBQyxLQUFLLElBQUksRUFBRTs0QkFDaEIsTUFBTSxDQUFDLENBQUM7NEJBQ1IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7NEJBQ3pCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dDQUNyQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUN0QixDQUFDO3dCQUNGLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ04sQ0FBQztnQkFDRixDQUFDO1lBQ0YsQ0FBQztZQUNGLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFhUixpQkFBWSxHQUFZLElBQUksQ0FBQyxRQUFRO1lBQ3BDLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFFLENBQUMsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUM1RyxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQ1osb0NBQStCLEdBQUcsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRXpFLGtCQUFhLEdBQVksSUFBSSxDQUFDLFFBQVE7WUFDckMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzFILENBQUMsQ0FBQyxRQUFRLENBQUM7UUFFWixxQ0FBZ0MsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0UsK0JBQTBCLEdBQUcsd0JBQXdCLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNqSCxzQ0FBaUMsR0FBRyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztLQUN6RjtJQTlDUyxLQUFLLENBQWtCO0lBQ3ZCLFFBQVEsQ0FBa0QsQ0FBQyx3RkFBd0Y7SUFDNUosVUFBVSxDQUFTO0lBQ25CLFdBQVcsQ0FBUztJQW9CcEI7Ozs7O09BS0c7SUFDSCxTQUFTLENBQUksRUFBVztRQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7NEVBakNXLFdBQVc7dUVBQVgsV0FBVyxXQUFYLFdBQVcsbUJBRlgsTUFBTTs7aUZBRU4sV0FBVztjQUh2QixVQUFVO2VBQUM7Z0JBQ1gsVUFBVSxFQUFFLE1BQU07YUFDbEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGUsIE5nWm9uZSwgaW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuY29uc3QgaWRlbnRpdHkgPSA8VD4oYTogVCkgPT4gYTtcblxudHlwZSBXcmFwcGVyID0gPFQ+KGZuOiBUKSA9PiBUO1xuXG5jb25zdCBjcmVhdGVPYmplY3RXcmFwcGVyID1cblx0KHdyYXA6IFdyYXBwZXIpOiBXcmFwcGVyID0+XG5cdChvYmplY3QpID0+IHtcblx0XHRpZiAoIW9iamVjdCB8fCB0eXBlb2Ygb2JqZWN0ICE9PSAnb2JqZWN0Jykge1xuXHRcdFx0cmV0dXJuIG9iamVjdDtcblx0XHR9XG5cdFx0Y29uc3QgcmVzID0ge30gYXMgYW55O1xuXHRcdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG9iamVjdCkpIHtcblx0XHRcdHJlc1trZXldID0gd3JhcCgob2JqZWN0IGFzIGFueSlba2V5XSk7XG5cdFx0fVxuXHRcdHJldHVybiByZXM7XG5cdH07XG5cbmNvbnN0IGNyZWF0ZVJldHVyblZhbHVlV3JhcHBlciA9XG5cdCh3cmFwUmV0dXJuVmFsdWU6IFdyYXBwZXIsIHdyYXBSZXN1bHQ6IFdyYXBwZXIpOiBXcmFwcGVyID0+XG5cdChmbikgPT5cblx0XHR3cmFwUmVzdWx0KHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyA/ICgoKC4uLmFyZ3M6IGFueVtdKSA9PiB3cmFwUmV0dXJuVmFsdWUoZm4oLi4uYXJncykpKSBhcyBhbnkpIDogZm4pO1xuXG5ASW5qZWN0YWJsZSh7XG5cdHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgWm9uZVdyYXBwZXIge1xuXHRyZWFkb25seSAjem9uZSA9IGluamVjdChOZ1pvbmUpO1xuXHRyZWFkb25seSAjaGFzWm9uZSA9IHRoaXMuI3pvbmUucnVuKCgpID0+IE5nWm9uZS5pc0luQW5ndWxhclpvbmUoKSk7IC8vIGNoZWNrIGlmIHpvbmUgaXMgZW5hYmxlZCAoY2FuIGJlIE5vb3Bab25lLCBjZiBodHRwczovL2FuZ3VsYXIuaW8vZ3VpZGUvem9uZSNub29wem9uZSlcblx0I3J1bk5lZWRlZCA9IGZhbHNlO1xuXHQjcnVuUGxhbm5lZCA9IGZhbHNlO1xuXG5cdHBsYW5OZ1pvbmVSdW4gPSB0aGlzLiNoYXNab25lXG5cdFx0PyAoKSA9PiB7XG5cdFx0XHRcdGlmICh0aGlzLiN6b25lLmlzU3RhYmxlKSB7XG5cdFx0XHRcdFx0dGhpcy4jcnVuTmVlZGVkID0gdHJ1ZTtcblx0XHRcdFx0XHRpZiAoIXRoaXMuI3J1blBsYW5uZWQpIHtcblx0XHRcdFx0XHRcdHRoaXMuI3J1blBsYW5uZWQgPSB0cnVlO1xuXHRcdFx0XHRcdFx0dm9pZCAoYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRhd2FpdCAwO1xuXHRcdFx0XHRcdFx0XHR0aGlzLiNydW5QbGFubmVkID0gZmFsc2U7XG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLiNydW5OZWVkZWQpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm5nWm9uZVJ1bihub29wKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSkoKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHQ6IG5vb3A7XG5cblx0LyoqXG5cdCAqIFJ1biB0aGUgaW5wdXQgZnVuY3Rpb24gc3luY2hyb25vdXNseSB3aXRoaW4gdGhlIEFuZ3VsYXIgem9uZVxuXHQgKlxuXHQgKiBAcGFyYW0gZm4gLSBhIGZ1bmN0aW9uIHRvIHJ1blxuXHQgKiBAcmV0dXJucyB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhlIGZ1bmN0aW9uXG5cdCAqL1xuXHRuZ1pvbmVSdW48VD4oZm46ICgpID0+IFQpOiBUIHtcblx0XHR0aGlzLiNydW5OZWVkZWQgPSBmYWxzZTtcblx0XHRyZXR1cm4gdGhpcy4jem9uZS5ydW4oZm4pO1xuXHR9XG5cblx0aW5zaWRlTmdab25lOiBXcmFwcGVyID0gdGhpcy4jaGFzWm9uZVxuXHRcdD8gKGZuKSA9PiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nID8gKCgoLi4uYXJnczogYW55W10pID0+IHRoaXMubmdab25lUnVuKCgpID0+IGZuKC4uLmFyZ3MpKSkgYXMgYW55KSA6IGZuKVxuXHRcdDogaWRlbnRpdHk7XG5cdGluc2lkZU5nWm9uZVdyYXBGdW5jdGlvbnNPYmplY3QgPSBjcmVhdGVPYmplY3RXcmFwcGVyKHRoaXMuaW5zaWRlTmdab25lKTtcblxuXHRvdXRzaWRlTmdab25lOiBXcmFwcGVyID0gdGhpcy4jaGFzWm9uZVxuXHRcdD8gKGZuKSA9PiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nID8gKCgoLi4uYXJnczogYW55W10pID0+IHRoaXMuI3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gZm4oLi4uYXJncykpKSBhcyBhbnkpIDogZm4pXG5cdFx0OiBpZGVudGl0eTtcblxuXHRvdXRzaWRlTmdab25lV3JhcEZ1bmN0aW9uc09iamVjdCA9IGNyZWF0ZU9iamVjdFdyYXBwZXIodGhpcy5vdXRzaWRlTmdab25lKTtcblx0b3V0c2lkZU5nWm9uZVdyYXBEaXJlY3RpdmUgPSBjcmVhdGVSZXR1cm5WYWx1ZVdyYXBwZXIodGhpcy5vdXRzaWRlTmdab25lV3JhcEZ1bmN0aW9uc09iamVjdCwgdGhpcy5vdXRzaWRlTmdab25lKTtcblx0b3V0c2lkZU5nWm9uZVdyYXBEaXJlY3RpdmVzT2JqZWN0ID0gY3JlYXRlT2JqZWN0V3JhcHBlcih0aGlzLm91dHNpZGVOZ1pvbmVXcmFwRGlyZWN0aXZlKTtcbn1cbiJdfQ==