igniteui-angular 18.2.3 → 18.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/esm2022/lib/avatar/avatar.component.mjs +17 -2
  2. package/esm2022/lib/checkbox/checkbox.component.mjs +73 -9
  3. package/esm2022/lib/core/utils.mjs +8 -1
  4. package/esm2022/lib/date-picker/date-picker.component.mjs +7 -3
  5. package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +2 -2
  6. package/esm2022/lib/query-builder/query-builder.component.mjs +11 -6
  7. package/fesm2022/igniteui-angular.mjs +110 -15
  8. package/fesm2022/igniteui-angular.mjs.map +1 -1
  9. package/lib/avatar/avatar.component.d.ts +3 -1
  10. package/lib/checkbox/checkbox.component.d.ts +42 -2
  11. package/lib/core/styles/components/action-strip/_action-strip-component.scss +1 -1
  12. package/lib/core/styles/components/action-strip/_action-strip-theme.scss +1 -0
  13. package/lib/core/styles/components/avatar/_avatar-theme.scss +1 -0
  14. package/lib/core/styles/components/badge/_badge-theme.scss +1 -0
  15. package/lib/core/styles/components/banner/_banner-theme.scss +1 -0
  16. package/lib/core/styles/components/bottom-nav/_bottom-nav-theme.scss +1 -0
  17. package/lib/core/styles/components/button/_button-theme.scss +1 -0
  18. package/lib/core/styles/components/button-group/_button-group-theme.scss +1 -0
  19. package/lib/core/styles/components/calendar/_calendar-theme.scss +1 -0
  20. package/lib/core/styles/components/card/_card-theme.scss +1 -0
  21. package/lib/core/styles/components/carousel/_carousel-theme.scss +6 -5
  22. package/lib/core/styles/components/checkbox/_checkbox-component.scss +76 -14
  23. package/lib/core/styles/components/checkbox/_checkbox-theme.scss +98 -109
  24. package/lib/core/styles/components/chip/_chip-theme.scss +1 -0
  25. package/lib/core/styles/components/column-actions/_column-actions-theme.scss +1 -0
  26. package/lib/core/styles/components/combo/_combo-theme.scss +1 -0
  27. package/lib/core/styles/components/dialog/_dialog-theme.scss +1 -0
  28. package/lib/core/styles/components/divider/_divider-theme.scss +1 -0
  29. package/lib/core/styles/components/drop-down/_drop-down-theme.scss +1 -0
  30. package/lib/core/styles/components/expansion-panel/_expansion-panel-theme.scss +1 -0
  31. package/lib/core/styles/components/grid/_grid-component.scss +1 -0
  32. package/lib/core/styles/components/grid/_grid-theme.scss +4 -3
  33. package/lib/core/styles/components/grid/_pivot-data-selector-theme.scss +1 -0
  34. package/lib/core/styles/components/grid-summary/_grid-summary-theme.scss +1 -0
  35. package/lib/core/styles/components/grid-toolbar/_grid-toolbar-theme.scss +1 -0
  36. package/lib/core/styles/components/highlight/highlight-theme.scss +1 -0
  37. package/lib/core/styles/components/icon/_icon-theme.scss +2 -1
  38. package/lib/core/styles/components/icon-button/_icon-button-theme.scss +1 -0
  39. package/lib/core/styles/components/label/_label-theme.scss +1 -0
  40. package/lib/core/styles/components/list/_list-theme.scss +8 -53
  41. package/lib/core/styles/components/navbar/_navbar-theme.scss +1 -0
  42. package/lib/core/styles/components/navdrawer/_navdrawer-theme.scss +1 -0
  43. package/lib/core/styles/components/overlay/_overlay-theme.scss +1 -0
  44. package/lib/core/styles/components/paginator/_paginator-component.scss +1 -1
  45. package/lib/core/styles/components/paginator/_paginator-theme.scss +1 -0
  46. package/lib/core/styles/components/progress/_progress-theme.scss +2 -0
  47. package/lib/core/styles/components/query-builder/_query-builder-component.scss +9 -1
  48. package/lib/core/styles/components/query-builder/_query-builder-theme.scss +1 -0
  49. package/lib/core/styles/components/radio/_radio-theme.scss +1 -0
  50. package/lib/core/styles/components/ripple/_ripple-theme.scss +2 -1
  51. package/lib/core/styles/components/scrollbar/scrollbar-theme.scss +1 -0
  52. package/lib/core/styles/components/select/_select-theme.scss +1 -0
  53. package/lib/core/styles/components/slider/_slider-theme.scss +1 -0
  54. package/lib/core/styles/components/snackbar/_snackbar-theme.scss +1 -0
  55. package/lib/core/styles/components/splitter/_splitter-theme.scss +1 -0
  56. package/lib/core/styles/components/stepper/_stepper-theme.scss +1 -0
  57. package/lib/core/styles/components/switch/_switch-theme.scss +1 -0
  58. package/lib/core/styles/components/tabs/_tabs-theme.scss +21 -15
  59. package/lib/core/styles/components/time-picker/_time-picker-theme.scss +1 -0
  60. package/lib/core/styles/components/toast/_toast-theme.scss +1 -0
  61. package/lib/core/styles/components/tooltip/_tooltip-theme.scss +1 -0
  62. package/lib/core/styles/components/tree/_tree-theme.scss +1 -0
  63. package/lib/core/styles/components/watermark/_watermark-theme.scss +1 -0
  64. package/lib/core/styles/typography/_indigo.scss +3 -1
  65. package/lib/core/utils.d.ts +5 -0
  66. package/lib/date-picker/date-picker.component.d.ts +2 -1
  67. package/package.json +1 -1
  68. package/styles/igniteui-angular-dark.css +1 -1
  69. package/styles/igniteui-angular.css +1 -1
  70. package/styles/igniteui-bootstrap-dark.css +1 -1
  71. package/styles/igniteui-bootstrap-light.css +1 -1
  72. package/styles/igniteui-dark-green.css +1 -1
  73. package/styles/igniteui-fluent-dark-excel.css +1 -1
  74. package/styles/igniteui-fluent-dark-word.css +1 -1
  75. package/styles/igniteui-fluent-dark.css +1 -1
  76. package/styles/igniteui-fluent-light-excel.css +1 -1
  77. package/styles/igniteui-fluent-light-word.css +1 -1
  78. package/styles/igniteui-fluent-light.css +1 -1
  79. package/styles/igniteui-indigo-dark.css +1 -1
  80. package/styles/igniteui-indigo-light.css +1 -1
  81. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  82. package/styles/maps/igniteui-angular.css.map +1 -1
  83. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  84. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  85. package/styles/maps/igniteui-dark-green.css.map +1 -1
  86. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  87. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  88. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  89. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  90. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  91. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  92. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  93. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -1,6 +1,6 @@
1
1
  import { NgTemplateOutlet } from '@angular/common';
2
2
  import { Component, HostBinding, Input, TemplateRef, ViewChild } from '@angular/core';
3
- import { mkenum } from '../core/utils';
3
+ import { mkenum, normalizeURI } from '../core/utils';
4
4
  import { IgxIconComponent } from '../icon/icon.component';
5
5
  import * as i0 from "@angular/core";
6
6
  let NEXT_ID = 0;
@@ -46,6 +46,21 @@ export class IgxAvatarComponent {
46
46
  get isCircle() {
47
47
  return this.shape === 'circle';
48
48
  }
49
+ /**
50
+ * Sets the image source of the avatar.
51
+ *
52
+ * @example
53
+ * ```html
54
+ * <igx-avatar src="images/picture.jpg"></igx-avatar>
55
+ * ```
56
+ * @igxFriendlyName Image URL
57
+ */
58
+ set src(value) {
59
+ this._src = normalizeURI(value);
60
+ }
61
+ get src() {
62
+ return this._src;
63
+ }
49
64
  /**
50
65
  * Returns the size of the avatar.
51
66
  *
@@ -280,4 +295,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
280
295
  type: HostBinding,
281
296
  args: ['style.--component-size']
282
297
  }] } });
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFDSCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFFTCxXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7O0FBRTFELElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQztBQUNoQixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFBLE1BQU0sQ0FBQztJQUM3QyxLQUFLLEVBQUUsT0FBTztJQUNkLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxPQUFPO0NBQ2pCLENBQUMsQ0FBQztBQUdILE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUEsTUFBTSxDQUFDO0lBQzdDLFFBQVEsRUFBRSxVQUFVO0lBQ3BCLEtBQUssRUFBRSxPQUFPO0lBQ2QsSUFBSSxFQUFFLE1BQU07SUFDWixNQUFNLEVBQUUsUUFBUTtDQUNuQixDQUFDLENBQUM7QUFHSDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJHO0FBT0gsTUFBTSxPQUFPLGtCQUFrQjtJQXlFM0Isd0JBQXdCO0lBQ3hCLElBQ1csU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO0lBQ3BD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QUk7c0JBRFYsS0FBSztnQkFhQyxHQUFHO3NCQURULEtBQUs7Z0JBS0ksZUFBZTtzQkFEeEIsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLdkQsYUFBYTtzQkFEdEIsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBS3JELGdCQUFnQjtzQkFEekIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLeEQsWUFBWTtzQkFEckIsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBa0JuRCxJQUFJO3NCQURkLEtBQUs7Z0JBb0RLLFlBQVk7c0JBRHRCLFdBQVc7dUJBQUMseUJBQXlCO2dCQU0zQixXQUFXO3NCQURyQixXQUFXO3VCQUFDLHdCQUF3QjtnQkFNMUIsZUFBZTtzQkFEekIsV0FBVzt1QkFBQyw0QkFBNEI7Z0JBTTNCLGFBQWE7c0JBRDFCLFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IG1rZW51bSB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSWd4SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuXG5sZXQgTkVYVF9JRCA9IDA7XG5leHBvcnQgY29uc3QgSWd4QXZhdGFyU2l6ZSA9IC8qQF9fUFVSRV9fKi9ta2VudW0oe1xuICAgIFNNQUxMOiAnc21hbGwnLFxuICAgIE1FRElVTTogJ21lZGl1bScsXG4gICAgTEFSR0U6ICdsYXJnZSdcbn0pO1xuZXhwb3J0IHR5cGUgSWd4QXZhdGFyU2l6ZSA9ICh0eXBlb2YgSWd4QXZhdGFyU2l6ZSlba2V5b2YgdHlwZW9mIElneEF2YXRhclNpemVdO1xuXG5leHBvcnQgY29uc3QgSWd4QXZhdGFyVHlwZSA9IC8qQF9fUFVSRV9fKi9ta2VudW0oe1xuICAgIElOSVRJQUxTOiAnaW5pdGlhbHMnLFxuICAgIElNQUdFOiAnaW1hZ2UnLFxuICAgIElDT046ICdpY29uJyxcbiAgICBDVVNUT006ICdjdXN0b20nXG59KTtcbmV4cG9ydCB0eXBlIElneEF2YXRhclR5cGUgPSAodHlwZW9mIElneEF2YXRhclR5cGUpW2tleW9mIHR5cGVvZiBJZ3hBdmF0YXJUeXBlXTtcblxuLyoqXG4gKiBBdmF0YXIgcHJvdmlkZXMgYSB3YXkgdG8gZGlzcGxheSBhbiBpbWFnZSwgaWNvbiBvciBpbml0aWFscyB0byB0aGUgdXNlci5cbiAqXG4gKiBAaWd4TW9kdWxlIElneEF2YXRhck1vZHVsZVxuICpcbiAqIEBpZ3hUaGVtZSBpZ3gtYXZhdGFyLXRoZW1lLCBpZ3gtaWNvbi10aGVtZVxuICpcbiAqIEBpZ3hLZXl3b3JkcyBhdmF0YXIsIHByb2ZpbGUsIHBpY3R1cmUsIGluaXRpYWxzXG4gKlxuICogQGlneEdyb3VwIExheW91dHNcbiAqXG4gKiBAcmVtYXJrc1xuICpcbiAqIFRoZSBJZ25pdGUgVUkgQXZhdGFyIHByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIGFkZCBhbiBhdmF0YXIgaWNvbiB0byB5b3VyIGFwcGxpY2F0aW9uLiAgVGhpcyBpY29uIGNhbiBiZSBhblxuICogaW1hZ2UsIHNvbWVvbmUncyBpbml0aWFscyBvciBhIG1hdGVyaWFsIGljb24gZnJvbSB0aGUgR29vZ2xlIE1hdGVyaWFsIGljb24gc2V0LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LWF2YXRhciBpbml0aWFscz1cIk1TXCIgc2hhcGU9XCJyb3VuZGVkXCIgc2l6ZT1cImxhcmdlXCI+XG4gKiA8L2lneC1hdmF0YXI+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtYXZhdGFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2F2YXRhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbSWd4SWNvbkNvbXBvbmVudCwgTmdUZW1wbGF0ZU91dGxldF1cbn0pXG5leHBvcnQgY2xhc3MgSWd4QXZhdGFyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgYXJpYUxhYmVsID0gdGhpcy5hdmF0YXIuYXJpYUxhYmVsO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGFiZWwnKVxuICAgIHB1YmxpYyBhcmlhTGFiZWwgPSAnYXZhdGFyJztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGByb2xlYCBhdHRyaWJ1dGUgb2YgdGhlIGF2YXRhci5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBhdmF0YXJSb2xlID0gdGhpcy5hdmF0YXIucm9sZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIucm9sZScpXG4gICAgcHVibGljIHJvbGUgPSAnaW1nJztcblxuICAgIC8qKlxuICAgICAqIEhvc3QgYGNsYXNzLmlneC1hdmF0YXJgIGJpbmRpbmcuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYXZhdGFyJylcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSAnaWd4LWF2YXRhcic7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBhdmF0YXIuXG4gICAgICogVGhlIGF2YXRhciBjYW4gYmU6XG4gICAgICogLSBgXCJpbml0aWFscyB0eXBlIGF2YXRhclwiYFxuICAgICAqIC0gYFwiaWNvbiB0eXBlIGF2YXRhclwiYFxuICAgICAqIC0gYFwiaW1hZ2UgdHlwZSBhdmF0YXJcImAuXG4gICAgICogLSBgXCJjdXN0b20gdHlwZSBhdmF0YXJcImAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgYXZhdGFyRGVzY3JpcHRpb24gPSB0aGlzLmF2YXRhci5yb2xlRGVzY3JpcHRpb247XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtcm9sZWRlc2NyaXB0aW9uJylcbiAgICBwdWJsaWMgcm9sZURlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBgaWRgIG9mIHRoZSBhdmF0YXIuIElmIG5vdCBzZXQsIHRoZSBmaXJzdCBhdmF0YXIgY29tcG9uZW50IHdpbGwgaGF2ZSBgaWRgID0gYFwiaWd4LWF2YXRhci0wXCJgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1hdmF0YXIgaWQ9XCJteS1maXJzdC1hdmF0YXJcIj48L2lneC1hdmF0YXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtYXZhdGFyLSR7TkVYVF9JRCsrfWA7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHNxdWFyZSwgcm91bmRlZCBvciBjaXJjdWxhciBzaGFwZSB0byB0aGUgYXZhdGFyLlxuICAgICAqIEJ5IGRlZmF1bHQgdGhlIHNoYXBlIG9mIHRoZSBhdmF0YXIgaXMgc3F1YXJlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1hdmF0YXIgc2hhcGU9XCJyb3VuZGVkXCI+PC9pZ3gtYXZhdGFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNoYXBlOiAnc3F1YXJlJyB8ICdyb3VuZGVkJyB8ICdjaXJjbGUnID0gJ3NxdWFyZSc7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1hdmF0YXItLXJvdW5kZWQnKVxuICAgIHB1YmxpYyBnZXQgaXNSb3VuZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaGFwZSA9PT0gJ3JvdW5kZWQnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWF2YXRhci0tY2lyY2xlJylcbiAgICBwdWJsaWMgZ2V0IGlzQ2lyY2xlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zaGFwZSA9PT0gJ2NpcmNsZSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgY29sb3Igb2YgdGhlIGF2YXRhcidzIGluaXRpYWxzIG9yIGljb24uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWF2YXRhciBjb2xvcj1cImJsdWVcIj48L2lneC1hdmF0YXI+XG4gICAgICogYGBgXG4gICAgICogQGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiAxNy4yLjAuXG4gICAgICovXG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmNvbG9yJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBjb2xvcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgYXZhdGFyLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1hdmF0YXIgYmdDb2xvcj1cInllbGxvd1wiPjwvaWd4LWF2YXRhcj5cbiAgICAgKiBgYGBcbiAgICAgKiBAaWd4RnJpZW5kbHlOYW1lIEJhY2tncm91bmQgY29sb3JcbiAgICAgKiBAZGVwcmVjYXRlZCBpbiB2ZXJzaW9uIDE3LjIuMC5cbiAgICAgKi9cblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuYmFja2dyb3VuZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYmdDb2xvcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyBpbml0aWFscyB0byB0aGUgYXZhdGFyLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1hdmF0YXIgaW5pdGlhbHM9XCJNTlwiPjwvaWd4LWF2YXRhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbml0aWFsczogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyBhbiBpY29uIHRvIHRoZSBhdmF0YXIuIEFsbCBpY29ucyBmcm9tIHRoZSBtYXRlcmlhbCBpY29uIHNldCBhcmUgc3VwcG9ydGVkLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1hdmF0YXIgaWNvbj1cInBob25lXCI+PC9pZ3gtYXZhdGFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGljb246IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGltYWdlIHNvdXJjZSBvZiB0aGUgYXZhdGFyLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1hdmF0YXIgc3JjPVwiaW1hZ2VzL3BpY3R1cmUuanBnXCI+PC9pZ3gtYXZhdGFyPlxuICAgICAqIGBgYFxuICAgICAqIEBpZ3hGcmllbmRseU5hbWUgSW1hZ2UgVVJMXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc3JjOiBzdHJpbmc7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBAVmlld0NoaWxkKCdkZWZhdWx0VGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgZGVmYXVsdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBpbWFnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZCgnaW5pdGlhbHNUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBpbml0aWFsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZCgnaWNvblRlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIGljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIF9zaXplOiBzdHJpbmcgfCBJZ3hBdmF0YXJTaXplO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgYXZhdGFyLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGF2YXRhclNpemUgPSB0aGlzLmF2YXRhci5zaXplO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBzaXplKCk6IHN0cmluZyB8IElneEF2YXRhclNpemUge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZSB8fCBJZ3hBdmF0YXJTaXplLlNNQUxMO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHNpemUgIG9mIHRoZSBhdmF0YXIuXG4gICAgICogQnkgZGVmYXVsdCwgdGhlIHNpemUgaXMgYFwic21hbGxcImAuIEl0IGNhbiBiZSBzZXQgdG8gYFwibWVkaXVtXCJgIG9yIGBcImxhcmdlXCJgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1hdmF0YXIgc2l6ZT1cImxhcmdlXCI+PC9pZ3gtYXZhdGFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgc2l6ZSh2YWx1ZTogc3RyaW5nIHwgSWd4QXZhdGFyU2l6ZSkge1xuICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgICAgICBjYXNlICdtZWRpdW0nOlxuICAgICAgICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgICAgICAgICAgIHRoaXMuX3NpemUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fc2l6ZSA9ICdzbWFsbCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgYXZhdGFyVHlwZSA9IHRoaXMuYXZhdGFyLnR5cGU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCB0eXBlKCk6IElneEF2YXRhclR5cGUge1xuICAgICAgICBpZiAodGhpcy5zcmMpIHtcbiAgICAgICAgICAgIHJldHVybiBJZ3hBdmF0YXJUeXBlLklNQUdFO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaWNvbikge1xuICAgICAgICAgICAgcmV0dXJuIElneEF2YXRhclR5cGUuSUNPTjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxzKSB7XG4gICAgICAgICAgICByZXR1cm4gSWd4QXZhdGFyVHlwZS5JTklUSUFMUztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBJZ3hBdmF0YXJUeXBlLkNVU1RPTTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1hdmF0YXItLWltYWdlJylcbiAgICBwdWJsaWMgZ2V0IF9pc0ltYWdlVHlwZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSWd4QXZhdGFyVHlwZS5JTUFHRTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYXZhdGFyLS1pY29uJylcbiAgICBwdWJsaWMgZ2V0IF9pc0ljb25UeXBlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBJZ3hBdmF0YXJUeXBlLklDT047XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWF2YXRhci0taW5pdGlhbHMnKVxuICAgIHB1YmxpYyBnZXQgX2lzSW5pdGlhbHNUeXBlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBJZ3hBdmF0YXJUeXBlLklOSVRJQUxTO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuLS1jb21wb25lbnQtc2l6ZScpXG4gICAgcHJvdGVjdGVkIGdldCBjb21wb25lbnRTaXplKCkge1xuICAgICAgICBpZiAodGhpcy5fc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGB2YXIoLS1pZy1zaXplLSR7dGhpcy5fc2l6ZX0pYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCB0ZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgSWd4QXZhdGFyVHlwZS5JTUFHRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbWFnZVRlbXBsYXRlO1xuICAgICAgICAgICAgY2FzZSBJZ3hBdmF0YXJUeXBlLklOSVRJQUxTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxzVGVtcGxhdGU7XG4gICAgICAgICAgICBjYXNlIElneEF2YXRhclR5cGUuSUNPTjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pY29uVGVtcGxhdGU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRUZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNzcyB1cmwgb2YgdGhlIGltYWdlLlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTcmNVcmwoKSB7XG4gICAgICAgIHJldHVybiBgdXJsKCR7dGhpcy5zcmN9KWA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnJvbGVEZXNjcmlwdGlvbiA9IHRoaXMuZ2V0Um9sZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHByaXZhdGUgZ2V0Um9sZSgpOiBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBJZ3hBdmF0YXJUeXBlLklNQUdFOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaW1hZ2UgYXZhdGFyJztcbiAgICAgICAgICAgIGNhc2UgSWd4QXZhdGFyVHlwZS5JQ09OOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWNvbiBhdmF0YXInO1xuICAgICAgICAgICAgY2FzZSBJZ3hBdmF0YXJUeXBlLklOSVRJQUxTOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaW5pdGlhbHMgYXZhdGFyJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdjdXN0b20gYXZhdGFyJztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuIiwiPG5nLXRlbXBsYXRlICNkZWZhdWx0VGVtcGxhdGU+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbWFnZVRlbXBsYXRlPlxuICAgIDxkaXYgI2ltYWdlIGNsYXNzPVwiaWd4LWF2YXRhcl9faW1hZ2VcIiBbc3R5bGUuYmFja2dyb3VuZEltYWdlXT1cImdldFNyY1VybCgpXCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2luaXRpYWxzVGVtcGxhdGU+XG4gICAgPHNwYW4+e3tpbml0aWFscy5zdWJzdHJpbmcoMCwgMil9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaWNvblRlbXBsYXRlPlxuICAgICA8aWd4LWljb24+e3tpY29ufX08L2lneC1pY29uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4iXX0=
298
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ25ELE9BQU8sRUFDSCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFFTCxXQUFXLEVBQ1gsU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDOztBQUUxRCxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDaEIsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQSxNQUFNLENBQUM7SUFDN0MsS0FBSyxFQUFFLE9BQU87SUFDZCxNQUFNLEVBQUUsUUFBUTtJQUNoQixLQUFLLEVBQUUsT0FBTztDQUNqQixDQUFDLENBQUM7QUFHSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFBLE1BQU0sQ0FBQztJQUM3QyxRQUFRLEVBQUUsVUFBVTtJQUNwQixLQUFLLEVBQUUsT0FBTztJQUNkLElBQUksRUFBRSxNQUFNO0lBQ1osTUFBTSxFQUFFLFFBQVE7Q0FDbkIsQ0FBQyxDQUFDO0FBR0g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQU9ILE1BQU0sT0FBTyxrQkFBa0I7SUF5RTNCLHdCQUF3QjtJQUN4QixJQUNXLFNBQVM7UUFDaEIsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMs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MkJBQTJCO2dCQU83QixRQUFRO3NCQURsQixXQUFXO3VCQUFDLDBCQUEwQjtnQkFpQmhDLEtBQUs7c0JBRlgsV0FBVzt1QkFBQyxhQUFhOztzQkFDekIsS0FBSztnQkFnQkMsT0FBTztzQkFGYixXQUFXO3VCQUFDLGtCQUFrQjs7c0JBQzlCLEtBQUs7Z0JBWUMsUUFBUTtzQkFEZCxLQUFLO2dCQVlDLElBQUk7c0JBRFYsS0FBSztnQkFhSyxHQUFHO3NCQURiLEtBQUs7Z0JBV0ksZUFBZTtzQkFEeEIsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLdkQsYUFBYTtzQkFEdEIsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBS3JELGdCQUFnQjtzQkFEekIsU0FBUzt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLeEQsWUFBWTtzQkFEckIsU0FBUzt1QkFBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBbUJuRCxJQUFJO3NCQURkLEtBQUs7Z0JBb0RLLFlBQVk7c0JBRHRCLFdBQVc7dUJBQUMseUJBQXlCO2dCQU0zQixXQUFXO3NCQURyQixXQUFXO3VCQUFDLHdCQUF3QjtnQkFNMUIsZUFBZTtzQkFEekIsV0FBVzt1QkFBQyw0QkFBNEI7Z0JBTTNCLGFBQWE7c0JBRDFCLFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE9uSW5pdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IG1rZW51bSwgbm9ybWFsaXplVVJJIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vaWNvbi9pY29uLmNvbXBvbmVudCc7XG5cbmxldCBORVhUX0lEID0gMDtcbmV4cG9ydCBjb25zdCBJZ3hBdmF0YXJTaXplID0gLypAX19QVVJFX18qL21rZW51bSh7XG4gICAgU01BTEw6ICdzbWFsbCcsXG4gICAgTUVESVVNOiAnbWVkaXVtJyxcbiAgICBMQVJHRTogJ2xhcmdlJ1xufSk7XG5leHBvcnQgdHlwZSBJZ3hBdmF0YXJTaXplID0gKHR5cGVvZiBJZ3hBdmF0YXJTaXplKVtrZXlvZiB0eXBlb2YgSWd4QXZhdGFyU2l6ZV07XG5cbmV4cG9ydCBjb25zdCBJZ3hBdmF0YXJUeXBlID0gLypAX19QVVJFX18qL21rZW51bSh7XG4gICAgSU5JVElBTFM6ICdpbml0aWFscycsXG4gICAgSU1BR0U6ICdpbWFnZScsXG4gICAgSUNPTjogJ2ljb24nLFxuICAgIENVU1RPTTogJ2N1c3RvbSdcbn0pO1xuZXhwb3J0IHR5cGUgSWd4QXZhdGFyVHlwZSA9ICh0eXBlb2YgSWd4QXZhdGFyVHlwZSlba2V5b2YgdHlwZW9mIElneEF2YXRhclR5cGVdO1xuXG4vKipcbiAqIEF2YXRhciBwcm92aWRlcyBhIHdheSB0byBkaXNwbGF5IGFuIGltYWdlLCBpY29uIG9yIGluaXRpYWxzIHRvIHRoZSB1c2VyLlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4QXZhdGFyTW9kdWxlXG4gKlxuICogQGlneFRoZW1lIGlneC1hdmF0YXItdGhlbWUsIGlneC1pY29uLXRoZW1lXG4gKlxuICogQGlneEtleXdvcmRzIGF2YXRhciwgcHJvZmlsZSwgcGljdHVyZSwgaW5pdGlhbHNcbiAqXG4gKiBAaWd4R3JvdXAgTGF5b3V0c1xuICpcbiAqIEByZW1hcmtzXG4gKlxuICogVGhlIElnbml0ZSBVSSBBdmF0YXIgcHJvdmlkZXMgYW4gZWFzeSB3YXkgdG8gYWRkIGFuIGF2YXRhciBpY29uIHRvIHlvdXIgYXBwbGljYXRpb24uICBUaGlzIGljb24gY2FuIGJlIGFuXG4gKiBpbWFnZSwgc29tZW9uZSdzIGluaXRpYWxzIG9yIGEgbWF0ZXJpYWwgaWNvbiBmcm9tIHRoZSBHb29nbGUgTWF0ZXJpYWwgaWNvbiBzZXQuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGh0bWxcbiAqIDxpZ3gtYXZhdGFyIGluaXRpYWxzPVwiTVNcIiBzaGFwZT1cInJvdW5kZWRcIiBzaXplPVwibGFyZ2VcIj5cbiAqIDwvaWd4LWF2YXRhcj5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1hdmF0YXInLFxuICAgIHRlbXBsYXRlVXJsOiAnYXZhdGFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hJY29uQ29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0XVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hBdmF0YXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGBhcmlhLWxhYmVsYCBhdHRyaWJ1dGUgb2YgdGhlIGF2YXRhci5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBhcmlhTGFiZWwgPSB0aGlzLmF2YXRhci5hcmlhTGFiZWw7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sYWJlbCcpXG4gICAgcHVibGljIGFyaWFMYWJlbCA9ICdhdmF0YXInO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgYHJvbGVgIGF0dHJpYnV0ZSBvZiB0aGUgYXZhdGFyLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGF2YXRhclJvbGUgPSB0aGlzLmF2YXRhci5yb2xlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBwdWJsaWMgcm9sZSA9ICdpbWcnO1xuXG4gICAgLyoqXG4gICAgICogSG9zdCBgY2xhc3MuaWd4LWF2YXRhcmAgYmluZGluZy5cbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1hdmF0YXInKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtYXZhdGFyJztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHR5cGUgb2YgdGhlIGF2YXRhci5cbiAgICAgKiBUaGUgYXZhdGFyIGNhbiBiZTpcbiAgICAgKiAtIGBcImluaXRpYWxzIHR5cGUgYXZhdGFyXCJgXG4gICAgICogLSBgXCJpY29uIHR5cGUgYXZhdGFyXCJgXG4gICAgICogLSBgXCJpbWFnZSB0eXBlIGF2YXRhclwiYC5cbiAgICAgKiAtIGBcImN1c3RvbSB0eXBlIGF2YXRhclwiYC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBhdmF0YXJEZXNjcmlwdGlvbiA9IHRoaXMuYXZhdGFyLnJvbGVEZXNjcmlwdGlvbjtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1yb2xlZGVzY3JpcHRpb24nKVxuICAgIHB1YmxpYyByb2xlRGVzY3JpcHRpb246IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGBpZGAgb2YgdGhlIGF2YXRhci4gSWYgbm90IHNldCwgdGhlIGZpcnN0IGF2YXRhciBjb21wb25lbnQgd2lsbCBoYXZlIGBpZGAgPSBgXCJpZ3gtYXZhdGFyLTBcImAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWF2YXRhciBpZD1cIm15LWZpcnN0LWF2YXRhclwiPjwvaWd4LWF2YXRhcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYGlneC1hdmF0YXItJHtORVhUX0lEKyt9YDtcblxuICAgIC8qKlxuICAgICAqIFNldHMgc3F1YXJlLCByb3VuZGVkIG9yIGNpcmN1bGFyIHNoYXBlIHRvIHRoZSBhdmF0YXIuXG4gICAgICogQnkgZGVmYXVsdCB0aGUgc2hhcGUgb2YgdGhlIGF2YXRhciBpcyBzcXVhcmUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWF2YXRhciBzaGFwZT1cInJvdW5kZWRcIj48L2lneC1hdmF0YXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2hhcGU6ICdzcXVhcmUnIHwgJ3JvdW5kZWQnIHwgJ2NpcmNsZScgPSAnc3F1YXJlJztcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWF2YXRhci0tcm91bmRlZCcpXG4gICAgcHVibGljIGdldCBpc1JvdW5kZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNoYXBlID09PSAncm91bmRlZCc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYXZhdGFyLS1jaXJjbGUnKVxuICAgIHB1YmxpYyBnZXQgaXNDaXJjbGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNoYXBlID09PSAnY2lyY2xlJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBjb2xvciBvZiB0aGUgYXZhdGFyJ3MgaW5pdGlhbHMgb3IgaWNvbi5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtYXZhdGFyIGNvbG9yPVwiYmx1ZVwiPjwvaWd4LWF2YXRhcj5cbiAgICAgKiBgYGBcbiAgICAgKiBAZGVwcmVjYXRlZCBpbiB2ZXJzaW9uIDE3LjIuMC5cbiAgICAgKi9cblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuY29sb3InKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbG9yOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWF2YXRhciBiZ0NvbG9yPVwieWVsbG93XCI+PC9pZ3gtYXZhdGFyPlxuICAgICAqIGBgYFxuICAgICAqIEBpZ3hGcmllbmRseU5hbWUgQmFja2dyb3VuZCBjb2xvclxuICAgICAqIEBkZXByZWNhdGVkIGluIHZlcnNpb24gMTcuMi4wLlxuICAgICAqL1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5iYWNrZ3JvdW5kJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBiZ0NvbG9yOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGluaXRpYWxzIHRvIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWF2YXRhciBpbml0aWFscz1cIk1OXCI+PC9pZ3gtYXZhdGFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGluaXRpYWxzOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGFuIGljb24gdG8gdGhlIGF2YXRhci4gQWxsIGljb25zIGZyb20gdGhlIG1hdGVyaWFsIGljb24gc2V0IGFyZSBzdXBwb3J0ZWQuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWF2YXRhciBpY29uPVwicGhvbmVcIj48L2lneC1hdmF0YXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaWNvbjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaW1hZ2Ugc291cmNlIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWF2YXRhciBzcmM9XCJpbWFnZXMvcGljdHVyZS5qcGdcIj48L2lneC1hdmF0YXI+XG4gICAgICogYGBgXG4gICAgICogQGlneEZyaWVuZGx5TmFtZSBJbWFnZSBVUkxcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgc3JjKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fc3JjID0gbm9ybWFsaXplVVJJKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNyYygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NyYztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBAVmlld0NoaWxkKCdkZWZhdWx0VGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgZGVmYXVsdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZCgnaW1hZ2VUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBpbWFnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZCgnaW5pdGlhbHNUZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBpbml0aWFsc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZCgnaWNvblRlbXBsYXRlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIGljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIF9zaXplOiBzdHJpbmcgfCBJZ3hBdmF0YXJTaXplO1xuICAgIHByaXZhdGUgX3NyYzogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgYXZhdGFyLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGF2YXRhclNpemUgPSB0aGlzLmF2YXRhci5zaXplO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBzaXplKCk6IHN0cmluZyB8IElneEF2YXRhclNpemUge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2l6ZSB8fCBJZ3hBdmF0YXJTaXplLlNNQUxMO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHNpemUgIG9mIHRoZSBhdmF0YXIuXG4gICAgICogQnkgZGVmYXVsdCwgdGhlIHNpemUgaXMgYFwic21hbGxcImAuIEl0IGNhbiBiZSBzZXQgdG8gYFwibWVkaXVtXCJgIG9yIGBcImxhcmdlXCJgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1hdmF0YXIgc2l6ZT1cImxhcmdlXCI+PC9pZ3gtYXZhdGFyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgc2l6ZSh2YWx1ZTogc3RyaW5nIHwgSWd4QXZhdGFyU2l6ZSkge1xuICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlICdzbWFsbCc6XG4gICAgICAgICAgICBjYXNlICdtZWRpdW0nOlxuICAgICAgICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgICAgICAgICAgIHRoaXMuX3NpemUgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5fc2l6ZSA9ICdzbWFsbCc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgYXZhdGFyVHlwZSA9IHRoaXMuYXZhdGFyLnR5cGU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCB0eXBlKCk6IElneEF2YXRhclR5cGUge1xuICAgICAgICBpZiAodGhpcy5zcmMpIHtcbiAgICAgICAgICAgIHJldHVybiBJZ3hBdmF0YXJUeXBlLklNQUdFO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaWNvbikge1xuICAgICAgICAgICAgcmV0dXJuIElneEF2YXRhclR5cGUuSUNPTjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmluaXRpYWxzKSB7XG4gICAgICAgICAgICByZXR1cm4gSWd4QXZhdGFyVHlwZS5JTklUSUFMUztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBJZ3hBdmF0YXJUeXBlLkNVU1RPTTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1hdmF0YXItLWltYWdlJylcbiAgICBwdWJsaWMgZ2V0IF9pc0ltYWdlVHlwZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gSWd4QXZhdGFyVHlwZS5JTUFHRTtcbiAgICB9XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtYXZhdGFyLS1pY29uJylcbiAgICBwdWJsaWMgZ2V0IF9pc0ljb25UeXBlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBJZ3hBdmF0YXJUeXBlLklDT047XG4gICAgfVxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWF2YXRhci0taW5pdGlhbHMnKVxuICAgIHB1YmxpYyBnZXQgX2lzSW5pdGlhbHNUeXBlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSBJZ3hBdmF0YXJUeXBlLklOSVRJQUxTO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUuLS1jb21wb25lbnQtc2l6ZScpXG4gICAgcHJvdGVjdGVkIGdldCBjb21wb25lbnRTaXplKCkge1xuICAgICAgICBpZiAodGhpcy5fc2l6ZSkge1xuICAgICAgICAgICAgcmV0dXJuIGB2YXIoLS1pZy1zaXplLSR7dGhpcy5fc2l6ZX0pYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHRlbXBsYXRlIG9mIHRoZSBhdmF0YXIuXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCB0ZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICAgICAgc3dpdGNoICh0aGlzLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgSWd4QXZhdGFyVHlwZS5JTUFHRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbWFnZVRlbXBsYXRlO1xuICAgICAgICAgICAgY2FzZSBJZ3hBdmF0YXJUeXBlLklOSVRJQUxTOlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmluaXRpYWxzVGVtcGxhdGU7XG4gICAgICAgICAgICBjYXNlIElneEF2YXRhclR5cGUuSUNPTjpcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pY29uVGVtcGxhdGU7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRlZmF1bHRUZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7IH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNzcyB1cmwgb2YgdGhlIGltYWdlLlxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTcmNVcmwoKSB7XG4gICAgICAgIHJldHVybiBgdXJsKCR7dGhpcy5zcmN9KWA7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnJvbGVEZXNjcmlwdGlvbiA9IHRoaXMuZ2V0Um9sZSgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHByaXZhdGUgZ2V0Um9sZSgpOiBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBJZ3hBdmF0YXJUeXBlLklNQUdFOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaW1hZ2UgYXZhdGFyJztcbiAgICAgICAgICAgIGNhc2UgSWd4QXZhdGFyVHlwZS5JQ09OOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaWNvbiBhdmF0YXInO1xuICAgICAgICAgICAgY2FzZSBJZ3hBdmF0YXJUeXBlLklOSVRJQUxTOlxuICAgICAgICAgICAgICAgIHJldHVybiAnaW5pdGlhbHMgYXZhdGFyJztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgcmV0dXJuICdjdXN0b20gYXZhdGFyJztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuIiwiPG5nLXRlbXBsYXRlICNkZWZhdWx0VGVtcGxhdGU+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbWFnZVRlbXBsYXRlPlxuICAgIDxkaXYgI2ltYWdlIGNsYXNzPVwiaWd4LWF2YXRhcl9faW1hZ2VcIiBbc3R5bGUuYmFja2dyb3VuZEltYWdlXT1cImdldFNyY1VybCgpXCI+PC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2luaXRpYWxzVGVtcGxhdGU+XG4gICAgPHNwYW4+e3tpbml0aWFscy5zdWJzdHJpbmcoMCwgMil9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjaWNvblRlbXBsYXRlPlxuICAgICA8aWd4LWljb24+e3tpY29ufX08L2lneC1pY29uPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4iXX0=
@@ -1,4 +1,4 @@
1
- import { Component, EventEmitter, HostListener, HostBinding, Input, Output, ViewChild, Optional, Self, booleanAttribute } from '@angular/core';
1
+ import { Component, EventEmitter, HostListener, HostBinding, Input, Output, ViewChild, ElementRef, Optional, Self, booleanAttribute, inject, DestroyRef } from '@angular/core';
2
2
  import { Validators } from '@angular/forms';
3
3
  import { IgxRippleDirective } from '../directives/ripple/ripple.directive';
4
4
  import { mkenum } from '../core/utils';
@@ -65,6 +65,50 @@ export class IgxCheckboxComponent {
65
65
  set required(value) {
66
66
  this._required = value;
67
67
  }
68
+ /**
69
+ * Returns if the component is of type `material`.
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * let checkbox = this.checkbox.material;
74
+ * ```
75
+ */
76
+ get material() {
77
+ return this.theme === 'material';
78
+ }
79
+ /**
80
+ * Returns if the component is of type `indigo`.
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * let checkbox = this.checkbox.indigo;
85
+ * ```
86
+ */
87
+ get indigo() {
88
+ return this.theme === 'indigo';
89
+ }
90
+ /**
91
+ * Returns if the component is of type `bootstrap`.
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * let checkbox = this.checkbox.bootstrap;
96
+ * ```
97
+ */
98
+ get bootstrap() {
99
+ return this.theme === 'bootstrap';
100
+ }
101
+ /**
102
+ * Returns if the component is of type `fluent`.
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * let checkbox = this.checkbox.fluent;
107
+ * ```
108
+ */
109
+ get fluent() {
110
+ return this.theme === 'fluent';
111
+ }
68
112
  /**
69
113
  * Sets/gets whether the checkbox is checked.
70
114
  * Default value is `false`.
@@ -301,15 +345,18 @@ export class IgxCheckboxComponent {
301
345
  * @internal
302
346
  */
303
347
  this._required = false;
304
- /**
305
- * @hidden
306
- * @internal
307
- */
308
- this.theme = 'material';
309
- this.theme = this.themeService?.globalTheme;
348
+ this.elRef = inject(ElementRef);
349
+ this._theme$ = new Subject();
350
+ this.destroyRef = inject(DestroyRef);
310
351
  if (this.ngControl !== null) {
311
352
  this.ngControl.valueAccessor = this;
312
353
  }
354
+ this.theme = this.themeService.globalTheme;
355
+ this._subscription = this._theme$.asObservable().subscribe(value => {
356
+ this.theme = value;
357
+ this.cdr.detectChanges();
358
+ });
359
+ this.destroyRef.onDestroy(() => this._subscription.unsubscribe());
313
360
  }
314
361
  /**
315
362
  * @hidden
@@ -323,6 +370,11 @@ export class IgxCheckboxComponent {
323
370
  this.cdr.detectChanges();
324
371
  }
325
372
  }
373
+ const theme = this.themeService.getComponentTheme(this.elRef);
374
+ if (theme) {
375
+ this._theme$.next(theme);
376
+ this.cdr.markForCheck();
377
+ }
326
378
  }
327
379
  /** @hidden @internal */
328
380
  onKeyUp(event) {
@@ -444,7 +496,7 @@ export class IgxCheckboxComponent {
444
496
  }
445
497
  }
446
498
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.4", ngImport: i0, type: IgxCheckboxComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: i1.ThemeService }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
447
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: IgxCheckboxComponent, isStandalone: true, selector: "igx-checkbox", inputs: { id: "id", labelId: "labelId", value: "value", name: "name", tabindex: "tabindex", labelPosition: "labelPosition", disableRipple: ["disableRipple", "disableRipple", booleanAttribute], required: ["required", "required", booleanAttribute], ariaLabelledBy: ["aria-labelledby", "ariaLabelledBy"], ariaLabel: ["aria-label", "ariaLabel"], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], invalid: ["invalid", "invalid", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], disableTransitions: ["disableTransitions", "disableTransitions", booleanAttribute] }, outputs: { change: "change" }, host: { listeners: { "keyup": "onKeyUp($event)", "click": "_onCheckboxClick($event)", "blur": "onBlur()" }, properties: { "attr.id": "this.id", "class.igx-checkbox": "this.cssClass", "class.igx-checkbox--focused": "this.focused", "class.igx-checkbox--indeterminate": "this.indeterminate", "class.igx-checkbox--checked": "this.checked", "class.igx-checkbox--disabled": "this.disabled", "class.igx-checkbox--invalid": "this.invalid", "class.igx-checkbox--plain": "this.disableTransitions" } }, providers: [{
499
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.4", type: IgxCheckboxComponent, isStandalone: true, selector: "igx-checkbox", inputs: { id: "id", labelId: "labelId", value: "value", name: "name", tabindex: "tabindex", labelPosition: "labelPosition", disableRipple: ["disableRipple", "disableRipple", booleanAttribute], required: ["required", "required", booleanAttribute], ariaLabelledBy: ["aria-labelledby", "ariaLabelledBy"], ariaLabel: ["aria-label", "ariaLabel"], indeterminate: ["indeterminate", "indeterminate", booleanAttribute], checked: ["checked", "checked", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], invalid: ["invalid", "invalid", booleanAttribute], readonly: ["readonly", "readonly", booleanAttribute], disableTransitions: ["disableTransitions", "disableTransitions", booleanAttribute] }, outputs: { change: "change" }, host: { listeners: { "keyup": "onKeyUp($event)", "click": "_onCheckboxClick($event)", "blur": "onBlur()" }, properties: { "attr.id": "this.id", "class.igx-checkbox": "this.cssClass", "class.igx-checkbox--material": "this.material", "class.igx-checkbox--indigo": "this.indigo", "class.igx-checkbox--bootstrap": "this.bootstrap", "class.igx-checkbox--fluent": "this.fluent", "class.igx-checkbox--focused": "this.focused", "class.igx-checkbox--indeterminate": "this.indeterminate", "class.igx-checkbox--checked": "this.checked", "class.igx-checkbox--disabled": "this.disabled", "class.igx-checkbox--invalid": "this.invalid", "class.igx-checkbox--plain": "this.disableTransitions" } }, providers: [{
448
500
  provide: EDITOR_PROVIDER,
449
501
  useExisting: IgxCheckboxComponent,
450
502
  multi: true
@@ -502,6 +554,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
502
554
  }], cssClass: [{
503
555
  type: HostBinding,
504
556
  args: ['class.igx-checkbox']
557
+ }], material: [{
558
+ type: HostBinding,
559
+ args: ['class.igx-checkbox--material']
560
+ }], indigo: [{
561
+ type: HostBinding,
562
+ args: ['class.igx-checkbox--indigo']
563
+ }], bootstrap: [{
564
+ type: HostBinding,
565
+ args: ['class.igx-checkbox--bootstrap']
566
+ }], fluent: [{
567
+ type: HostBinding,
568
+ args: ['class.igx-checkbox--fluent']
505
569
  }], focused: [{
506
570
  type: HostBinding,
507
571
  args: ['class.igx-checkbox--focused']
@@ -548,4 +612,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.4", ngImpor
548
612
  type: HostListener,
549
613
  args: ['blur']
550
614
  }] } });
551
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUtULFFBQVEsRUFDUixJQUFJLEVBQ0osZ0JBQWdCLEVBQ25CLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFrQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFrQixlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFHM0MsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLGFBQWEsQ0FBQSxNQUFNLENBQUM7SUFDN0MsTUFBTSxFQUFFLFFBQVE7SUFDaEIsS0FBSyxFQUFFLE9BQU87Q0FDakIsQ0FBQyxDQUFDO0FBUUgsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQWFILE1BQU0sT0FBTyxvQkFBb0I7SUFxQzdCOzs7Ozs7O09BT0c7SUFDSCxJQUFXLGFBQWE7UUFDcEIsT0FB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QVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFpQi9CLGtCQUFrQjtzQkFGeEIsV0FBVzt1QkFBQywyQkFBMkI7O3NCQUN2QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQStEL0IsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFRMUIsZ0JBQWdCO3NCQUR0QixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFpRDFCLE1BQU07c0JBRFosWUFBWTt1QkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBIb3N0QmluZGluZyxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgVmlld0NoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBSZW5kZXJlcjIsXG4gICAgT3B0aW9uYWwsXG4gICAgU2VsZixcbiAgICBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5nQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElneFJpcHBsZURpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvcmlwcGxlL3JpcHBsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MsIG1rZW51bSB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgRWRpdG9yUHJvdmlkZXIsIEVESVRPUl9QUk9WSURFUiB9IGZyb20gJy4uL2NvcmUvZWRpdC1wcm92aWRlcic7XG5pbXBvcnQgeyBub29wLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJZ3hUaGVtZSwgVGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdGhlbWUvdGhlbWUuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBMYWJlbFBvc2l0aW9uID0gLypAX19QVVJFX18qL21rZW51bSh7XG4gICAgQkVGT1JFOiAnYmVmb3JlJyxcbiAgICBBRlRFUjogJ2FmdGVyJ1xufSk7XG5leHBvcnQgdHlwZSBMYWJlbFBvc2l0aW9uID0gdHlwZW9mIExhYmVsUG9zaXRpb25ba2V5b2YgdHlwZW9mIExhYmVsUG9zaXRpb25dO1xuXG5leHBvcnQgaW50ZXJmYWNlIElDaGFuZ2VDaGVja2JveEV2ZW50QXJncyBleHRlbmRzIElCYXNlRXZlbnRBcmdzIHtcbiAgICBjaGVja2VkOiBib29sZWFuO1xuICAgIHZhbHVlPzogYW55O1xufVxuXG5sZXQgbmV4dElkID0gMDtcbi8qKlxuICogQWxsb3dzIHVzZXJzIHRvIG1ha2UgYSBiaW5hcnkgY2hvaWNlIGZvciBhIGNlcnRhaW4gY29uZGl0aW9uLlxuICpcbiAqIEBpZ3hNb2R1bGUgSWd4Q2hlY2tib3hNb2R1bGVcbiAqXG4gKiBAaWd4VGhlbWUgaWd4LWNoZWNrYm94LXRoZW1lXG4gKlxuICogQGlneEtleXdvcmRzIGNoZWNrYm94LCBsYWJlbFxuICpcbiAqIEBpZ3hHcm91cCBEYXRhIGVudHJ5IGFuZCBkaXNwbGF5XG4gKlxuICogQHJlbWFya3NcbiAqIFRoZSBJZ25pdGUgVUkgQ2hlY2tib3ggaXMgYSBzZWxlY3Rpb24gY29udHJvbCB0aGF0IGFsbG93cyB1c2VycyB0byBtYWtlIGEgYmluYXJ5IGNob2ljZSBmb3IgYSBjZXJ0YWluIGNvbmRpdGlvbi5JdCBiZWhhdmVzIHNpbWlsYXJseVxuICogdG8gdGhlIG5hdGl2ZSBicm93c2VyIGNoZWNrYm94LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LWNoZWNrYm94IFtjaGVja2VkXT1cInRydWVcIj5cbiAqICAgc2ltcGxlIGNoZWNrYm94XG4gKiA8L2lneC1jaGVja2JveD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1jaGVja2JveCcsXG4gICAgcHJvdmlkZXJzOiBbe1xuICAgICAgICBwcm92aWRlOiBFRElUT1JfUFJPVklERVIsXG4gICAgICAgIHVzZUV4aXN0aW5nOiBJZ3hDaGVja2JveENvbXBvbmVudCxcbiAgICAgICAgbXVsdGk6IHRydWVcbiAgICB9XSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICB0ZW1wbGF0ZVVybDogJ2NoZWNrYm94LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hSaXBwbGVEaXJlY3RpdmVdXG59KVxuZXhwb3J0IGNsYXNzIElneENoZWNrYm94Q29tcG9uZW50IGltcGxlbWVudHMgRWRpdG9yUHJvdmlkZXIsIEFmdGVyVmlld0luaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAgIC8qKlxuICAgICAqIEFuIGV2ZW50IHRoYXQgaXMgZW1pdHRlZCBhZnRlciB0aGUgY2hlY2tib3ggc3RhdGUgaXMgY2hhbmdlZC5cbiAgICAgKiBQcm92aWRlcyByZWZlcmVuY2VzIHRvIHRoZSBgSWd4Q2hlY2tib3hDb21wb25lbnRgIGFuZCB0aGUgYGNoZWNrZWRgIHByb3BlcnR5IGFzIGV2ZW50IGFyZ3VtZW50cy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgICBAT3V0cHV0KCkgcHVibGljIHJlYWRvbmx5IGNoYW5nZTogRXZlbnRFbWl0dGVyPElDaGFuZ2VDaGVja2JveEV2ZW50QXJncz4gPSBuZXcgRXZlbnRFbWl0dGVyPElDaGFuZ2VDaGVja2JveEV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyByZWZlcmVuY2UgdG8gdGhlIG5hdGl2ZSBjaGVja2JveCBlbGVtZW50LlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGNoZWNrYm94RWxlbWVudCA9ICB0aGlzLmNvbXBvbmVudC5jaGVja2JveEVsZW1lbnQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnY2hlY2tib3gnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBuYXRpdmVJbnB1dDogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgcmVmZXJlbmNlIHRvIHRoZSBuYXRpdmUgbGFiZWwgZWxlbWVudC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGxldCBsYWJlbEVsZW1lbnQgPSAgdGhpcy5jb21wb25lbnQubmF0aXZlTGFiZWw7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgnbGFiZWwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBuYXRpdmVMYWJlbDogRWxlbWVudFJlZjtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgcmVmZXJlbmNlIHRvIHRoZSBgbmF0aXZlRWxlbWVudGAgb2YgdGhlIGlneC1jaGVja2JveC9pZ3gtc3dpdGNoLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IG5hdGl2ZUVsZW1lbnQgPSB0aGlzLmNvbXBvbmVudC5uYXRpdmVFbGVtZW50O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlSW5wdXQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHJlZmVyZW5jZSB0byB0aGUgbGFiZWwgcGxhY2Vob2xkZXIgZWxlbWVudC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGxldCBsYWJlbFBsYWNlaG9sZGVyID0gIHRoaXMuY29tcG9uZW50LnBsYWNlaG9sZGVyTGFiZWw7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQFZpZXdDaGlsZCgncGxhY2Vob2xkZXJMYWJlbCcsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIHBsYWNlaG9sZGVyTGFiZWw6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGBpZGAgb2YgdGhlIGNoZWNrYm94IGNvbXBvbmVudC5cbiAgICAgKiBJZiBub3Qgc2V0LCB0aGUgYGlkYCBvZiB0aGUgZmlyc3QgY2hlY2tib3ggY29tcG9uZW50IHdpbGwgYmUgYFwiaWd4LWNoZWNrYm94LTBcImAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IGlkPVwibXktZmlyc3QtY2hlY2tib3hcIj48L2lneC1jaGVja2JveD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGNoZWNrYm94SWQgPSAgdGhpcy5jaGVja2JveC5pZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGlkID0gYGlneC1jaGVja2JveC0ke25leHRJZCsrfWA7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGlkIG9mIHRoZSBgbGFiZWxgIGVsZW1lbnQuXG4gICAgICogSWYgbm90IHNldCwgdGhlIGlkIG9mIHRoZSBgbGFiZWxgIGluIHRoZSBmaXJzdCBjaGVja2JveCBjb21wb25lbnQgd2lsbCBiZSBgXCJpZ3gtY2hlY2tib3gtMC1sYWJlbFwiYC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2hlY2tib3ggbGFiZWxJZD1cIkxhYmVsMVwiPjwvaWd4LWNoZWNrYm94PlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgbGFiZWxJZCA9ICB0aGlzLmNvbXBvbmVudC5sYWJlbElkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBsYWJlbElkID0gYCR7dGhpcy5pZH0tbGFiZWxgO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgdmFsdWVgIGF0dHJpYnV0ZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2hlY2tib3ggW3ZhbHVlXT1cIidDaGVja2JveFZhbHVlJ1wiPjwvaWd4LWNoZWNrYm94PlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgdmFsdWUgPSAgdGhpcy5jaGVja2JveC52YWx1ZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdmFsdWU6IGFueTtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYG5hbWVgIGF0dHJpYnV0ZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2hlY2tib3ggbmFtZT1cIkNoZWNrYm94MVwiPjwvaWd4LWNoZWNrYm94PlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgbmFtZSA9ICB0aGlzLmNoZWNrYm94Lm5hbWU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIG5hbWU6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgdmFsdWUgb2YgdGhlIGB0YWJpbmRleGAgYXR0cmlidXRlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jaGVja2JveCBbdGFiaW5kZXhdPVwiMVwiPjwvaWd4LWNoZWNrYm94PlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgdGFiSW5kZXggPSAgdGhpcy5jaGVja2JveC50YWJpbmRleDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgdGFiaW5kZXg6IG51bWJlciA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiAgU2V0cy9nZXRzIHRoZSBwb3NpdGlvbiBvZiB0aGUgYGxhYmVsYC5cbiAgICAgKiAgSWYgbm90IHNldCwgdGhlIGBsYWJlbFBvc2l0aW9uYCB3aWxsIGhhdmUgdmFsdWUgYFwiYWZ0ZXJcImAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IGxhYmVsUG9zaXRpb249XCJiZWZvcmVcIj48L2lneC1jaGVja2JveD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGxhYmVsUG9zaXRpb24gPSAgdGhpcy5jaGVja2JveC5sYWJlbFBvc2l0aW9uO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGxhYmVsUG9zaXRpb246IExhYmVsUG9zaXRpb24gfCBzdHJpbmcgPSBMYWJlbFBvc2l0aW9uLkFGVEVSO1xuXG4gICAgLyoqXG4gICAgICogRW5hYmxlcy9EaXNhYmxlcyB0aGUgcmlwcGxlIGVmZmVjdC5cbiAgICAgKiBJZiBub3Qgc2V0LCBgZGlzYWJsZVJpcHBsZWAgd2lsbCBoYXZlIHZhbHVlIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IFtkaXNhYmxlUmlwcGxlXT1cInRydWVcIj48L2lneC1jaGVja2JveD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGlzUmlwcGxlRGlzYWJsZWQgPSB0aGlzLmNoZWNrYm94LmRlc2FibGVSaXBwbGU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGRpc2FibGVSaXBwbGUgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB3aGV0aGVyIHRoZSBjaGVja2JveCBpcyByZXF1aXJlZC5cbiAgICAgKiBJZiBub3Qgc2V0LCBgcmVxdWlyZWRgIHdpbGwgaGF2ZSB2YWx1ZSBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jaGVja2JveCByZXF1aXJlZD48L2lneC1jaGVja2JveD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGlzUmVxdWlyZWQgPSB0aGlzLmNoZWNrYm94LnJlcXVpcmVkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZCB8fCB0aGlzLm5hdGl2ZUVsZW1lbnQuaGFzQXR0cmlidXRlKCdyZXF1aXJlZCcpO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGUuXG4gICAgICogSWYgbm90IHNldCwgdGhlIGBhcmlhLWxhYmVsbGVkYnlgIHdpbGwgYmUgZXF1YWwgdG8gdGhlIHZhbHVlIG9mIGBsYWJlbElkYCBhdHRyaWJ1dGUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IGFyaWEtbGFiZWxsZWRieT1cIkNoZWNrYm94MVwiPjwvaWd4LWNoZWNrYm94PlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgYXJpYUxhYmVsbGVkQnkgPSB0aGlzLmNoZWNrYm94LmFyaWFMYWJlbGxlZEJ5O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgnYXJpYS1sYWJlbGxlZGJ5JylcbiAgICBwdWJsaWMgYXJpYUxhYmVsbGVkQnkgPSB0aGlzLmxhYmVsSWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIHZhbHVlIG9mIHRoZSBgYXJpYS1sYWJlbGAgYXR0cmlidXRlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jaGVja2JveCBhcmlhLWxhYmVsPVwiQ2hlY2tib3gxXCI+PC9pZ3gtY2hlY2tib3g+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBhcmlhTGFiZWwgPSB0aGlzLmNoZWNrYm94LmFyaWFMYWJlbDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2FyaWEtbGFiZWwnKVxuICAgIHB1YmxpYyBhcmlhTGFiZWw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgY2xhc3Mgb2YgdGhlIGNoZWNrYm94IGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBjbGFzcyA9IHRoaXMuY2hlY2tib3guY3NzQ2xhc3M7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2hlY2tib3gnKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtY2hlY2tib3gnO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHdoZXRoZXIgdGhlIGNoZWNrYm94IGNvbXBvbmVudCBpcyBvbiBmb2N1cy5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNoZWNrYm94LmZvY3VzZWQgPSAgdHJ1ZTtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGlzRm9jdXNlZCA9IHRoaXMuY2hlY2tib3guZm9jdXNlZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jaGVja2JveC0tZm9jdXNlZCcpXG4gICAgcHVibGljIGZvY3VzZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgY2hlY2tib3ggaW5kZXRlcm1pbmF0ZSB2aXN1YWwgc3RhdGUuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgO1xuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jaGVja2JveCBbaW5kZXRlcm1pbmF0ZV09XCJ0cnVlXCI+PC9pZ3gtY2hlY2tib3g+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBpc0luZGV0ZXJtaW5hdGUgPSB0aGlzLmNoZWNrYm94LmluZGV0ZXJtaW5hdGU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2hlY2tib3gtLWluZGV0ZXJtaW5hdGUnKVxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBpbmRldGVybWluYXRlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgd2hldGhlciB0aGUgY2hlY2tib3ggaXMgY2hlY2tlZC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IFtjaGVja2VkXT1cInRydWVcIj48L2lneC1jaGVja2JveD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGlzQ2hlY2tlZCA9ICB0aGlzLmNoZWNrYm94LmNoZWNrZWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2hlY2tib3gtLWNoZWNrZWQnKVxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBnZXQgY2hlY2tlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrZWQ7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgY2hlY2tlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5fY2hlY2tlZCAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodGhpcy5fY2hlY2tlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgd2hldGhlciB0aGUgY2hlY2tib3ggaXMgZGlzYWJsZWQuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jaGVja2JveCBkaXNhYmxlZD48L2lneC1jaGVja2JveD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGlzRGlzYWJsZWQgPSB0aGlzLmNoZWNrYm94LmRpc2FibGVkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNoZWNrYm94LS1kaXNhYmxlZCcpXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgd2hldGhlciB0aGUgY2hlY2tib3ggaXMgaW52YWxpZC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IGludmFsaWQ+PC9pZ3gtY2hlY2tib3g+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBpc0ludmFsaWQgPSB0aGlzLmNoZWNrYm94LmludmFsaWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2hlY2tib3gtLWludmFsaWQnKVxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBpbnZhbGlkID0gZmFsc2VcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB3aGV0aGVyIHRoZSBjaGVja2JveCBpcyByZWFkb25seS5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IFtyZWFkb25seV09XCJ0cnVlXCI+PC9pZ3gtY2hlY2tib3g+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCByZWFkb25seSA9IHRoaXMuY2hlY2tib3gucmVhZG9ubHk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgd2hldGhlciB0aGUgY2hlY2tib3ggc2hvdWxkIGRpc2FibGUgYWxsIGNzcyB0cmFuc2l0aW9ucy5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IFtkaXNhYmxlVHJhbnNpdGlvbnNdPVwidHJ1ZVwiPjwvaWd4LWNoZWNrYm94PlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgZGlzYWJsZVRyYW5zaXRpb25zID0gdGhpcy5jaGVja2JveC5kaXNhYmxlVHJhbnNpdGlvbnM7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2hlY2tib3gtLXBsYWluJylcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgZGlzYWJsZVRyYW5zaXRpb25zID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGlucHV0SWQgPSBgJHt0aGlzLmlkfS1pbnB1dGA7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByb3RlY3RlZCBfb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgX29uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9jaGVja2VkID0gZmFsc2U7XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHRoZW1lOiBJZ3hUaGVtZSA9ICdtYXRlcmlhbCc7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcm90ZWN0ZWQgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIEBTZWxmKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgICkge1xuICAgICAgICB0aGlzLnRoZW1lID0gdGhpcy50aGVtZVNlcnZpY2U/Lmdsb2JhbFRoZW1lO1xuXG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMubmdDb250cm9sLnN0YXR1c0NoYW5nZXMucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh0aGlzLnVwZGF0ZVZhbGlkaXR5U3RhdGUuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbGlkYXRvciB8fCB0aGlzLm5nQ29udHJvbC5jb250cm9sLmFzeW5jVmFsaWRhdG9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSB0aGlzLm5nQ29udHJvbD8uY29udHJvbD8uaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleXVwJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25LZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIF9vbkNoZWNrYm94Q2xpY2soZXZlbnQ6IFBvaW50ZXJFdmVudCB8IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgLy8gU2luY2UgdGhlIG9yaWdpbmFsIGNoZWNrYm94IGlzIGhpZGRlbiBhbmQgdGhlIGxhYmVsXG4gICAgICAgIC8vIGlzIHVzZWQgZm9yIHN0eWxpbmcgYW5kIHRvIGNoYW5nZSB0aGUgY2hlY2tlZCBzdGF0ZSBvZiB0aGUgY2hlY2tib3gsXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gcHJldmVudCB0aGUgY2hlY2tib3ggY2xpY2sgZXZlbnQgZnJvbSBidWJibGluZyB1cFxuICAgICAgICAvLyBhcyBpdCBnZXRzIHRyaWdnZXJlZCBvbiBsYWJlbCBjbGlja1xuICAgICAgICAvLyBOT1RFOiBUaGUgYWJvdmUgaXMgbm8gbG9uZ2VyIHZhbGlkLCBhcyB0aGUgbmF0aXZlIGNoZWNrYm94IGlzIG5vdCBsYWJlbGVkXG4gICAgICAgIC8vIGJ5IHRoZSBTVkcgYW55bW9yZS5cbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgLy8gcmVhZG9ubHkgcHJldmVudHMgdGhlIGNvbXBvbmVudCBmcm9tIGNoYW5naW5nIHN0YXRlIChzZWUgdG9nZ2xlKCkgbWV0aG9kKS5cbiAgICAgICAgICAgIC8vIEhvd2V2ZXIsIHRoZSBuYXRpdmUgY2hlY2tib3ggY2FuIHN0aWxsIGJlIGFjdGl2YXRlZCB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24gKGZvY3VzICsgc3BhY2UsIGxhYmVsIGNsaWNrKVxuICAgICAgICAgICAgLy8gUHJldmVudCB0aGUgbmF0aXZlIGNoYW5nZSBzbyB0aGUgaW5wdXQgcmVtYWlucyBpbiBzeW5jXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5uYXRpdmVJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG5cbiAgICAgICAgdGhpcy5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2hlY2tlZCA9ICF0aGlzLmNoZWNrZWQ7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsaWRpdHlTdGF0ZSgpO1xuXG4gICAgICAgIC8vIEsuRC4gTWFyY2ggMjMsIDIwMjEgRW1pdHRpbmcgb24gY2xpY2sgYW5kIG5vdCBvbiB0aGUgc2V0dGVyIGJlY2F1c2Ugb3RoZXJ3aXNlIGV2ZXJ5IGNvbXBvbmVudFxuICAgICAgICAvLyBib3VuZCBvbiBjaGFuZ2Ugd291bGQgaGF2ZSB0byBwZXJmb3JtIHNlbGYgY2hlY2tzIGZvciB3ZWF0aGVyIHRoZSB2YWx1ZSBoYXMgY2hhbmdlZCBiZWNhdXNlXG4gICAgICAgIC8vIG9mIHRoZSBpbml0aWFsIHNldCBvbiBpbml0aWFsaXphdGlvblxuICAgICAgICB0aGlzLmNoYW5nZS5lbWl0KHsgY2hlY2tlZDogdGhpcy5jaGVja2VkLCB2YWx1ZTogdGhpcy52YWx1ZSwgb3duZXI6IHRoaXMgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgYXJpYUNoZWNrZWQoKSB7XG4gICAgICAgIGlmICh0aGlzLmluZGV0ZXJtaW5hdGUpIHtcbiAgICAgICAgICAgIHJldHVybiAnbWl4ZWQnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hlY2tlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBfb25DaGVja2JveENoYW5nZShldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gV2UgaGF2ZSB0byBzdG9wIHRoZSBvcmlnaW5hbCBjaGVja2JveCBjaGFuZ2UgZXZlbnRcbiAgICAgICAgLy8gZnJvbSBidWJibGluZyB1cCBzaW5jZSB3ZSBlbWl0IG91ciBvd24gY2hhbmdlIGV2ZW50XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2JsdXInKVxuICAgIHB1YmxpYyBvbkJsdXIoKSB7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkaXR5U3RhdGUoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9jaGVja2VkID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCBsYWJlbENsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5sYWJlbFBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIExhYmVsUG9zaXRpb24uQkVGT1JFOlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLmNzc0NsYXNzfV9fbGFiZWwtLWJlZm9yZWA7XG4gICAgICAgICAgICBjYXNlIExhYmVsUG9zaXRpb24uQUZURVI6XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiBgJHt0aGlzLmNzc0NsYXNzfV9fbGFiZWxgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldEVkaXRFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVJbnB1dC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgdXBkYXRlVmFsaWRpdHlTdGF0ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMucmVhZG9ubHkgJiZcbiAgICAgICAgICAgICAgICAodGhpcy5uZ0NvbnRyb2wuY29udHJvbC50b3VjaGVkIHx8IHRoaXMubmdDb250cm9sLmNvbnRyb2wuZGlydHkpKSB7XG4gICAgICAgICAgICAgICAgLy8gdGhlIGNvbnRyb2wgaXMgbm90IGRpc2FibGVkIGFuZCBpcyB0b3VjaGVkIG9yIGRpcnR5XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkID0gdGhpcy5uZ0NvbnRyb2wuaW52YWxpZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gIGlmIHRoZSBjb250cm9sIGlzIHVudG91Y2hlZCwgcHJpc3RpbmUsIG9yIGRpc2FibGVkLCBpdHMgc3RhdGUgaXMgaW5pdGlhbC4gVGhpcyBpcyB3aGVuIHRoZSB1c2VyIGRpZCBub3QgaW50ZXJhY3RcbiAgICAgICAgICAgICAgICAvLyAgd2l0aCB0aGUgY2hlY2tib3ggb3Igd2hlbiB0aGUgZm9ybS9jb250cm9sIGlzIHJlc2V0XG4gICAgICAgICAgICAgICAgdGhpcy5pbnZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmNoZWNrTmF0aXZlVmFsaWRpdHkoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgZnVuY3Rpb24gdG8gYXNzaWduIGEgbmF0aXZlIHZhbGlkaXR5IHByb3BlcnR5IG9mIGEgY2hlY2tib3guXG4gICAgICogVGhpcyBzaG91bGQgYmUgdXNlZCB3aGVuIHRoZXJlJ3Mgbm8gbmdDb250cm9sXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJpdmF0ZSBjaGVja05hdGl2ZVZhbGlkaXR5KCkge1xuICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgdGhpcy5fcmVxdWlyZWQgJiYgIXRoaXMuY2hlY2tlZCAmJiAhdGhpcy5yZWFkb25seSkge1xuICAgICAgICAgICAgdGhpcy5pbnZhbGlkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGlucHV0ICNjaGVja2JveCBjbGFzcz1cImlneC1jaGVja2JveF9faW5wdXRcIlxuICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgW2lkXT1cImlucHV0SWRcIlxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXG4gICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtpbmRldGVybWluYXRlXT1cImluZGV0ZXJtaW5hdGVcIlxuICAgIFtjaGVja2VkXT1cImNoZWNrZWRcIlxuICAgIFtyZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZFwiXG4gICAgW2F0dHIuYXJpYS1pbnZhbGlkXT1cImludmFsaWRcIlxuICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJhcmlhQ2hlY2tlZFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbCA/IG51bGwgOiBhcmlhTGFiZWxsZWRCeVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxcIlxuICAgIChjaGFuZ2UpPVwiX29uQ2hlY2tib3hDaGFuZ2UoJGV2ZW50KVwiXG4gICAgKGJsdXIpPVwib25CbHVyKClcIiAvPlxuXG48ZGl2XG4gICAgaWd4UmlwcGxlXG4gICAgaWd4UmlwcGxlVGFyZ2V0PVwiLmlneC1jaGVja2JveF9fcmlwcGxlXCJcbiAgICBbaWd4UmlwcGxlRGlzYWJsZWRdPVwiZGlzYWJsZVJpcHBsZVwiXG4gICAgW2lneFJpcHBsZUNlbnRlcmVkXT1cInRydWVcIlxuICAgIFtpZ3hSaXBwbGVEdXJhdGlvbl09XCIzMDBcIlxuICAgIGNsYXNzPVwiaWd4LWNoZWNrYm94X19jb21wb3NpdGUtd3JhcHBlclwiXG4+XG4gICAgPHNwYW4gI2xhYmVsIGNsYXNzPVwiaWd4LWNoZWNrYm94X19jb21wb3NpdGVcIj5cbiAgICAgICAgQGlmICh0aGVtZSA9PT0gJ2luZGlnbycpIHtcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJpZ3gtY2hlY2tib3hfX2NvbXBvc2l0ZS1tYXJrXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cmVjdCB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiNFwiIHg9XCIyXCIgeT1cIjlcIiByeD1cIjEuODVcIi8+XG4gICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xOS4wMzMgNWExLjk2NiAxLjk2NiAwIDAgMC0xLjQxOC41ODZsLTguNDc5IDguNTc3LTIuNzUzLTIuNzdhMS45NzEgMS45NzEgMCAwIDAtMi44IDAgMS45OTggMS45OTggMCAwIDAgMCAyLjgyMmw0LjE1NSA0LjE5NmExLjk1NSAxLjk1NSAwIDAgMCAyLjggMGw5Ljg3OS05Ljk5YTEuOTk4IDEuOTk4IDAgMCAwIDAtMi44MjEgMS45NjYgMS45NjYgMCAwIDAtMS4zODQtLjZaXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHN2ZyBjbGFzcz1cImlneC1jaGVja2JveF9fY29tcG9zaXRlLW1hcmtcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNC4xLDEyLjcgOSwxNy42IDIwLjMsNi4zXCIvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIH1cbiAgICA8L3NwYW4+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LWNoZWNrYm94X19yaXBwbGVcIj48L2Rpdj5cbjwvZGl2PlxuXG48c3BhbiAjcGxhY2Vob2xkZXJMYWJlbFxuICAgIFtjbGFzc109XCJsYWJlbENsYXNzXCJcbiAgICBbaWRdPVwibGFiZWxJZFwiPlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvc3Bhbj5cbiJdfQ==
615
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NoZWNrYm94L2NoZWNrYm94LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osV0FBVyxFQUNYLEtBQUssRUFDTCxNQUFNLEVBQ04sU0FBUyxFQUNULFVBQVUsRUFJVixRQUFRLEVBQ1IsSUFBSSxFQUNKLGdCQUFnQixFQUNoQixNQUFNLEVBQ04sVUFBVSxFQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUMsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0UsT0FBTyxFQUFrQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkQsT0FBTyxFQUFrQixlQUFlLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBRzNDLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUEsTUFBTSxDQUFDO0lBQzdDLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLEtBQUssRUFBRSxPQUFPO0NBQ2pCLENBQUMsQ0FBQztBQVFILElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztBQUNmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFhSCxNQUFNLE9BQU8sb0JBQW9CO0lBcUM3Qjs7Ozs7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OEJBQThCOztzQkFDMUMsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFpQi9CLE9BQU87c0JBRmIsV0FBVzt1QkFBQyw2QkFBNkI7O3NCQUN6QyxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWdCL0IsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQWlCL0Isa0JBQWtCO3NCQUZ4QixXQUFXO3VCQUFDLDJCQUEyQjs7c0JBQ3ZDLEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBcUYvQixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVExQixnQkFBZ0I7c0JBRHRCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlEMUIsTUFBTTtzQkFEWixZQUFZO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBWaWV3Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIFJlbmRlcmVyMixcbiAgICBPcHRpb25hbCxcbiAgICBTZWxmLFxuICAgIGJvb2xlYW5BdHRyaWJ1dGUsXG4gICAgaW5qZWN0LFxuICAgIERlc3Ryb3lSZWZcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSWd4UmlwcGxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9yaXBwbGUvcmlwcGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncywgbWtlbnVtIH0gZnJvbSAnLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBFZGl0b3JQcm92aWRlciwgRURJVE9SX1BST1ZJREVSIH0gZnJvbSAnLi4vY29yZS9lZGl0LXByb3ZpZGVyJztcbmltcG9ydCB7IG5vb3AsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgSWd4VGhlbWUsIFRoZW1lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RoZW1lL3RoZW1lLnNlcnZpY2UnO1xuXG5leHBvcnQgY29uc3QgTGFiZWxQb3NpdGlvbiA9IC8qQF9fUFVSRV9fKi9ta2VudW0oe1xuICAgIEJFRk9SRTogJ2JlZm9yZScsXG4gICAgQUZURVI6ICdhZnRlcidcbn0pO1xuZXhwb3J0IHR5cGUgTGFiZWxQb3NpdGlvbiA9IHR5cGVvZiBMYWJlbFBvc2l0aW9uW2tleW9mIHR5cGVvZiBMYWJlbFBvc2l0aW9uXTtcblxuZXhwb3J0IGludGVyZmFjZSBJQ2hhbmdlQ2hlY2tib3hFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgY2hlY2tlZDogYm9vbGVhbjtcbiAgICB2YWx1ZT86IGFueTtcbn1cblxubGV0IG5leHRJZCA9IDA7XG4vKipcbiAqIEFsbG93cyB1c2VycyB0byBtYWtlIGEgYmluYXJ5IGNob2ljZSBmb3IgYSBjZXJ0YWluIGNvbmRpdGlvbi5cbiAqXG4gKiBAaWd4TW9kdWxlIElneENoZWNrYm94TW9kdWxlXG4gKlxuICogQGlneFRoZW1lIGlneC1jaGVja2JveC10aGVtZVxuICpcbiAqIEBpZ3hLZXl3b3JkcyBjaGVja2JveCwgbGFiZWxcbiAqXG4gKiBAaWd4R3JvdXAgRGF0YSBlbnRyeSBhbmQgZGlzcGxheVxuICpcbiAqIEByZW1hcmtzXG4gKiBUaGUgSWduaXRlIFVJIENoZWNrYm94IGlzIGEgc2VsZWN0aW9uIGNvbnRyb2wgdGhhdCBhbGxvd3MgdXNlcnMgdG8gbWFrZSBhIGJpbmFyeSBjaG9pY2UgZm9yIGEgY2VydGFpbiBjb25kaXRpb24uSXQgYmVoYXZlcyBzaW1pbGFybHlcbiAqIHRvIHRoZSBuYXRpdmUgYnJvd3NlciBjaGVja2JveC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGlneC1jaGVja2JveCBbY2hlY2tlZF09XCJ0cnVlXCI+XG4gKiAgIHNpbXBsZSBjaGVja2JveFxuICogPC9pZ3gtY2hlY2tib3g+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtY2hlY2tib3gnLFxuICAgIHByb3ZpZGVyczogW3tcbiAgICAgICAgcHJvdmlkZTogRURJVE9SX1BST1ZJREVSLFxuICAgICAgICB1c2VFeGlzdGluZzogSWd4Q2hlY2tib3hDb21wb25lbnQsXG4gICAgICAgIG11bHRpOiB0cnVlXG4gICAgfV0sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2UsXG4gICAgdGVtcGxhdGVVcmw6ICdjaGVja2JveC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbSWd4UmlwcGxlRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hDaGVja2JveENvbXBvbmVudCBpbXBsZW1lbnRzIEVkaXRvclByb3ZpZGVyLCBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICAvKipcbiAgICAgKiBBbiBldmVudCB0aGF0IGlzIGVtaXR0ZWQgYWZ0ZXIgdGhlIGNoZWNrYm94IHN0YXRlIGlzIGNoYW5nZWQuXG4gICAgICogUHJvdmlkZXMgcmVmZXJlbmNlcyB0byB0aGUgYElneENoZWNrYm94Q29tcG9uZW50YCBhbmQgdGhlIGBjaGVja2VkYCBwcm9wZXJ0eSBhcyBldmVudCBhcmd1bWVudHMuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gICAgQE91dHB1dCgpIHB1YmxpYyByZWFkb25seSBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxJQ2hhbmdlQ2hlY2tib3hFdmVudEFyZ3M+ID0gbmV3IEV2ZW50RW1pdHRlcjxJQ2hhbmdlQ2hlY2tib3hFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgcmVmZXJlbmNlIHRvIHRoZSBuYXRpdmUgY2hlY2tib3ggZWxlbWVudC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBjaGVja2JveEVsZW1lbnQgPSAgdGhpcy5jb21wb25lbnQuY2hlY2tib3hFbGVtZW50O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NoZWNrYm94JywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgbmF0aXZlSW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHJlZmVyZW5jZSB0byB0aGUgbmF0aXZlIGxhYmVsIGVsZW1lbnQuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBsZXQgbGFiZWxFbGVtZW50ID0gIHRoaXMuY29tcG9uZW50Lm5hdGl2ZUxhYmVsO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2xhYmVsJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgbmF0aXZlTGFiZWw6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHJlZmVyZW5jZSB0byB0aGUgYG5hdGl2ZUVsZW1lbnRgIG9mIHRoZSBpZ3gtY2hlY2tib3gvaWd4LXN3aXRjaC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBuYXRpdmVFbGVtZW50ID0gdGhpcy5jb21wb25lbnQubmF0aXZlRWxlbWVudDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUlucHV0Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyByZWZlcmVuY2UgdG8gdGhlIGxhYmVsIHBsYWNlaG9sZGVyIGVsZW1lbnQuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBsZXQgbGFiZWxQbGFjZWhvbGRlciA9ICB0aGlzLmNvbXBvbmVudC5wbGFjZWhvbGRlckxhYmVsO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ3BsYWNlaG9sZGVyTGFiZWwnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBwbGFjZWhvbGRlckxhYmVsOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgaWRgIG9mIHRoZSBjaGVja2JveCBjb21wb25lbnQuXG4gICAgICogSWYgbm90IHNldCwgdGhlIGBpZGAgb2YgdGhlIGZpcnN0IGNoZWNrYm94IGNvbXBvbmVudCB3aWxsIGJlIGBcImlneC1jaGVja2JveC0wXCJgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jaGVja2JveCBpZD1cIm15LWZpcnN0LWNoZWNrYm94XCI+PC9pZ3gtY2hlY2tib3g+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBjaGVja2JveElkID0gIHRoaXMuY2hlY2tib3guaWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpZCA9IGBpZ3gtY2hlY2tib3gtJHtuZXh0SWQrK31gO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBpZCBvZiB0aGUgYGxhYmVsYCBlbGVtZW50LlxuICAgICAqIElmIG5vdCBzZXQsIHRoZSBpZCBvZiB0aGUgYGxhYmVsYCBpbiB0aGUgZmlyc3QgY2hlY2tib3ggY29tcG9uZW50IHdpbGwgYmUgYFwiaWd4LWNoZWNrYm94LTAtbGFiZWxcImAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IGxhYmVsSWQ9XCJMYWJlbDFcIj48L2lneC1jaGVja2JveD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGxhYmVsSWQgPSAgdGhpcy5jb21wb25lbnQubGFiZWxJZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgbGFiZWxJZCA9IGAke3RoaXMuaWR9LWxhYmVsYDtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYHZhbHVlYCBhdHRyaWJ1dGUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IFt2YWx1ZV09XCInQ2hlY2tib3hWYWx1ZSdcIj48L2lneC1jaGVja2JveD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHZhbHVlID0gIHRoaXMuY2hlY2tib3gudmFsdWU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHZhbHVlOiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGBuYW1lYCBhdHRyaWJ1dGUuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IG5hbWU9XCJDaGVja2JveDFcIj48L2lneC1jaGVja2JveD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IG5hbWUgPSAgdGhpcy5jaGVja2JveC5uYW1lO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpIHB1YmxpYyBuYW1lOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIHZhbHVlIG9mIHRoZSBgdGFiaW5kZXhgIGF0dHJpYnV0ZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2hlY2tib3ggW3RhYmluZGV4XT1cIjFcIj48L2lneC1jaGVja2JveD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHRhYkluZGV4ID0gIHRoaXMuY2hlY2tib3gudGFiaW5kZXg7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHRhYmluZGV4OiBudW1iZXIgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogIFNldHMvZ2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIGBsYWJlbGAuXG4gICAgICogIElmIG5vdCBzZXQsIHRoZSBgbGFiZWxQb3NpdGlvbmAgd2lsbCBoYXZlIHZhbHVlIGBcImFmdGVyXCJgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jaGVja2JveCBsYWJlbFBvc2l0aW9uPVwiYmVmb3JlXCI+PC9pZ3gtY2hlY2tib3g+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBsYWJlbFBvc2l0aW9uID0gIHRoaXMuY2hlY2tib3gubGFiZWxQb3NpdGlvbjtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBsYWJlbFBvc2l0aW9uOiBMYWJlbFBvc2l0aW9uIHwgc3RyaW5nID0gTGFiZWxQb3NpdGlvbi5BRlRFUjtcblxuICAgIC8qKlxuICAgICAqIEVuYWJsZXMvRGlzYWJsZXMgdGhlIHJpcHBsZSBlZmZlY3QuXG4gICAgICogSWYgbm90IHNldCwgYGRpc2FibGVSaXBwbGVgIHdpbGwgaGF2ZSB2YWx1ZSBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jaGVja2JveCBbZGlzYWJsZVJpcHBsZV09XCJ0cnVlXCI+PC9pZ3gtY2hlY2tib3g+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBpc1JpcHBsZURpc2FibGVkID0gdGhpcy5jaGVja2JveC5kZXNhYmxlUmlwcGxlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBkaXNhYmxlUmlwcGxlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgd2hldGhlciB0aGUgY2hlY2tib3ggaXMgcmVxdWlyZWQuXG4gICAgICogSWYgbm90IHNldCwgYHJlcXVpcmVkYCB3aWxsIGhhdmUgdmFsdWUgYGZhbHNlYC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2hlY2tib3ggcmVxdWlyZWQ+PC9pZ3gtY2hlY2tib3g+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBpc1JlcXVpcmVkID0gdGhpcy5jaGVja2JveC5yZXF1aXJlZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQgfHwgdGhpcy5uYXRpdmVFbGVtZW50Lmhhc0F0dHJpYnV0ZSgncmVxdWlyZWQnKTtcbiAgICB9XG4gICAgcHVibGljIHNldCByZXF1aXJlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yZXF1aXJlZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlLlxuICAgICAqIElmIG5vdCBzZXQsIHRoZSBgYXJpYS1sYWJlbGxlZGJ5YCB3aWxsIGJlIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBgbGFiZWxJZGAgYXR0cmlidXRlLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jaGVja2JveCBhcmlhLWxhYmVsbGVkYnk9XCJDaGVja2JveDFcIj48L2lneC1jaGVja2JveD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGFyaWFMYWJlbGxlZEJ5ID0gdGhpcy5jaGVja2JveC5hcmlhTGFiZWxsZWRCeTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2FyaWEtbGFiZWxsZWRieScpXG4gICAgcHVibGljIGFyaWFMYWJlbGxlZEJ5ID0gdGhpcy5sYWJlbElkO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSB2YWx1ZSBvZiB0aGUgYGFyaWEtbGFiZWxgIGF0dHJpYnV0ZS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY2hlY2tib3ggYXJpYS1sYWJlbD1cIkNoZWNrYm94MVwiPjwvaWd4LWNoZWNrYm94PlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgYXJpYUxhYmVsID0gdGhpcy5jaGVja2JveC5hcmlhTGFiZWw7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdhcmlhLWxhYmVsJylcbiAgICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGNsYXNzIG9mIHRoZSBjaGVja2JveCBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgY2xhc3MgPSB0aGlzLmNoZWNrYm94LmNzc0NsYXNzO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNoZWNrYm94JylcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSAnaWd4LWNoZWNrYm94JztcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaWYgdGhlIGNvbXBvbmVudCBpcyBvZiB0eXBlIGBtYXRlcmlhbGAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgY2hlY2tib3ggPSB0aGlzLmNoZWNrYm94Lm1hdGVyaWFsO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNoZWNrYm94LS1tYXRlcmlhbCcpXG4gICAgcHJvdGVjdGVkIGdldCBtYXRlcmlhbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbWUgPT09ICdtYXRlcmlhbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyBpZiB0aGUgY29tcG9uZW50IGlzIG9mIHR5cGUgYGluZGlnb2AuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgY2hlY2tib3ggPSB0aGlzLmNoZWNrYm94LmluZGlnbztcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jaGVja2JveC0taW5kaWdvJylcbiAgICBwcm90ZWN0ZWQgZ2V0IGluZGlnbygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGhlbWUgPT09ICdpbmRpZ28nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaWYgdGhlIGNvbXBvbmVudCBpcyBvZiB0eXBlIGBib290c3RyYXBgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGNoZWNrYm94ID0gdGhpcy5jaGVja2JveC5ib290c3RyYXA7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2hlY2tib3gtLWJvb3RzdHJhcCcpXG4gICAgcHJvdGVjdGVkIGdldCBib290c3RyYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnRoZW1lID09PSAnYm9vdHN0cmFwJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGlmIHRoZSBjb21wb25lbnQgaXMgb2YgdHlwZSBgZmx1ZW50YC5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBjaGVja2JveCA9IHRoaXMuY2hlY2tib3guZmx1ZW50O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNoZWNrYm94LS1mbHVlbnQnKVxuICAgIHByb3RlY3RlZCBnZXQgZmx1ZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50aGVtZSA9PT0gJ2ZsdWVudCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHdoZXRoZXIgdGhlIGNoZWNrYm94IGNvbXBvbmVudCBpcyBvbiBmb2N1cy5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLmNoZWNrYm94LmZvY3VzZWQgPSAgdHJ1ZTtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGlzRm9jdXNlZCA9IHRoaXMuY2hlY2tib3guZm9jdXNlZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1jaGVja2JveC0tZm9jdXNlZCcpXG4gICAgcHVibGljIGZvY3VzZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB0aGUgY2hlY2tib3ggaW5kZXRlcm1pbmF0ZSB2aXN1YWwgc3RhdGUuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgO1xuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jaGVja2JveCBbaW5kZXRlcm1pbmF0ZV09XCJ0cnVlXCI+PC9pZ3gtY2hlY2tib3g+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBpc0luZGV0ZXJtaW5hdGUgPSB0aGlzLmNoZWNrYm94LmluZGV0ZXJtaW5hdGU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2hlY2tib3gtLWluZGV0ZXJtaW5hdGUnKVxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBpbmRldGVybWluYXRlID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgd2hldGhlciB0aGUgY2hlY2tib3ggaXMgY2hlY2tlZC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IFtjaGVja2VkXT1cInRydWVcIj48L2lneC1jaGVja2JveD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGlzQ2hlY2tlZCA9ICB0aGlzLmNoZWNrYm94LmNoZWNrZWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2hlY2tib3gtLWNoZWNrZWQnKVxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBnZXQgY2hlY2tlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoZWNrZWQ7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgY2hlY2tlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5fY2hlY2tlZCAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodGhpcy5fY2hlY2tlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgd2hldGhlciB0aGUgY2hlY2tib3ggaXMgZGlzYWJsZWQuXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBgZmFsc2VgLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jaGVja2JveCBkaXNhYmxlZD48L2lneC1jaGVja2JveD5cbiAgICAgKiBgYGBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IGlzRGlzYWJsZWQgPSB0aGlzLmNoZWNrYm94LmRpc2FibGVkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNoZWNrYm94LS1kaXNhYmxlZCcpXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgd2hldGhlciB0aGUgY2hlY2tib3ggaXMgaW52YWxpZC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IGludmFsaWQ+PC9pZ3gtY2hlY2tib3g+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBpc0ludmFsaWQgPSB0aGlzLmNoZWNrYm94LmludmFsaWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2hlY2tib3gtLWludmFsaWQnKVxuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBpbnZhbGlkID0gZmFsc2VcblxuICAgIC8qKlxuICAgICAqIFNldHMvZ2V0cyB3aGV0aGVyIHRoZSBjaGVja2JveCBpcyByZWFkb25seS5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IFtyZWFkb25seV09XCJ0cnVlXCI+PC9pZ3gtY2hlY2tib3g+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCByZWFkb25seSA9IHRoaXMuY2hlY2tib3gucmVhZG9ubHk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHJlYWRvbmx5ID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgd2hldGhlciB0aGUgY2hlY2tib3ggc2hvdWxkIGRpc2FibGUgYWxsIGNzcyB0cmFuc2l0aW9ucy5cbiAgICAgKiBEZWZhdWx0IHZhbHVlIGlzIGBmYWxzZWAuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNoZWNrYm94IFtkaXNhYmxlVHJhbnNpdGlvbnNdPVwidHJ1ZVwiPjwvaWd4LWNoZWNrYm94PlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgZGlzYWJsZVRyYW5zaXRpb25zID0gdGhpcy5jaGVja2JveC5kaXNhYmxlVHJhbnNpdGlvbnM7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY2hlY2tib3gtLXBsYWluJylcbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgZGlzYWJsZVRyYW5zaXRpb25zID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGlucHV0SWQgPSBgJHt0aGlzLmlkfS1pbnB1dGA7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIF9vblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9jaGVja2VkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHRoZW1lOiBJZ3hUaGVtZTtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgZWxSZWYgPSBpbmplY3QoRWxlbWVudFJlZik7XG4gICAgcHJpdmF0ZSBfdGhlbWUkID0gbmV3IFN1YmplY3Q8SWd4VGhlbWU+KCk7XG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHJvdGVjdGVkIHRoZW1lU2VydmljZTogVGhlbWVTZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHB1YmxpYyBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICApIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sICE9PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGhlbWUgPSB0aGlzLnRoZW1lU2VydmljZS5nbG9iYWxUaGVtZTtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB0aGlzLl90aGVtZSQuYXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHRoaXMudGhlbWUgPSB2YWx1ZSBhcyBJZ3hUaGVtZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5kZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICovXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUodGhpcy51cGRhdGVWYWxpZGl0eVN0YXRlLmJpbmQodGhpcykpO1xuXG4gICAgICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWxpZGF0b3IgfHwgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5hc3luY1ZhbGlkYXRvcikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlcXVpcmVkID0gdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aGVtZSA9IHRoaXMudGhlbWVTZXJ2aWNlLmdldENvbXBvbmVudFRoZW1lKHRoaXMuZWxSZWYpO1xuXG4gICAgICAgIGlmICh0aGVtZSkge1xuICAgICAgICAgICAgdGhpcy5fdGhlbWUkLm5leHQodGhlbWUpO1xuICAgICAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXl1cCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuZm9jdXNlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBfb25DaGVja2JveENsaWNrKGV2ZW50OiBQb2ludGVyRXZlbnQgfCBNb3VzZUV2ZW50KSB7XG4gICAgICAgIC8vIFNpbmNlIHRoZSBvcmlnaW5hbCBjaGVja2JveCBpcyBoaWRkZW4gYW5kIHRoZSBsYWJlbFxuICAgICAgICAvLyBpcyB1c2VkIGZvciBzdHlsaW5nIGFuZCB0byBjaGFuZ2UgdGhlIGNoZWNrZWQgc3RhdGUgb2YgdGhlIGNoZWNrYm94LFxuICAgICAgICAvLyB3ZSBuZWVkIHRvIHByZXZlbnQgdGhlIGNoZWNrYm94IGNsaWNrIGV2ZW50IGZyb20gYnViYmxpbmcgdXBcbiAgICAgICAgLy8gYXMgaXQgZ2V0cyB0cmlnZ2VyZWQgb24gbGFiZWwgY2xpY2tcbiAgICAgICAgLy8gTk9URTogVGhlIGFib3ZlIGlzIG5vIGxvbmdlciB2YWxpZCwgYXMgdGhlIG5hdGl2ZSBjaGVja2JveCBpcyBub3QgbGFiZWxlZFxuICAgICAgICAvLyBieSB0aGUgU1ZHIGFueW1vcmUuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIC8vIHJlYWRvbmx5IHByZXZlbnRzIHRoZSBjb21wb25lbnQgZnJvbSBjaGFuZ2luZyBzdGF0ZSAoc2VlIHRvZ2dsZSgpIG1ldGhvZCkuXG4gICAgICAgICAgICAvLyBIb3dldmVyLCB0aGUgbmF0aXZlIGNoZWNrYm94IGNhbiBzdGlsbCBiZSBhY3RpdmF0ZWQgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uIChmb2N1cyArIHNwYWNlLCBsYWJlbCBjbGljaylcbiAgICAgICAgICAgIC8vIFByZXZlbnQgdGhlIG5hdGl2ZSBjaGFuZ2Ugc28gdGhlIGlucHV0IHJlbWFpbnMgaW4gc3luY1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMubmF0aXZlSW5wdXQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuXG4gICAgICAgIHRoaXMuaW5kZXRlcm1pbmF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNoZWNrZWQgPSAhdGhpcy5jaGVja2VkO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbGlkaXR5U3RhdGUoKTtcblxuICAgICAgICAvLyBLLkQuIE1hcmNoIDIzLCAyMDIxIEVtaXR0aW5nIG9uIGNsaWNrIGFuZCBub3Qgb24gdGhlIHNldHRlciBiZWNhdXNlIG90aGVyd2lzZSBldmVyeSBjb21wb25lbnRcbiAgICAgICAgLy8gYm91bmQgb24gY2hhbmdlIHdvdWxkIGhhdmUgdG8gcGVyZm9ybSBzZWxmIGNoZWNrcyBmb3Igd2VhdGhlciB0aGUgdmFsdWUgaGFzIGNoYW5nZWQgYmVjYXVzZVxuICAgICAgICAvLyBvZiB0aGUgaW5pdGlhbCBzZXQgb24gaW5pdGlhbGl6YXRpb25cbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh7IGNoZWNrZWQ6IHRoaXMuY2hlY2tlZCwgdmFsdWU6IHRoaXMudmFsdWUsIG93bmVyOiB0aGlzIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGFyaWFDaGVja2VkKCkge1xuICAgICAgICBpZiAodGhpcy5pbmRldGVybWluYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gJ21peGVkJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoZWNrZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgX29uQ2hlY2tib3hDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIFdlIGhhdmUgdG8gc3RvcCB0aGUgb3JpZ2luYWwgY2hlY2tib3ggY2hhbmdlIGV2ZW50XG4gICAgICAgIC8vIGZyb20gYnViYmxpbmcgdXAgc2luY2Ugd2UgZW1pdCBvdXIgb3duIGNoYW5nZSBldmVudFxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdibHVyJylcbiAgICBwdWJsaWMgb25CbHVyKCkge1xuICAgICAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICAgICAgdGhpcy51cGRhdGVWYWxpZGl0eVN0YXRlKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fY2hlY2tlZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgbGFiZWxDbGFzcygpOiBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKHRoaXMubGFiZWxQb3NpdGlvbikge1xuICAgICAgICAgICAgY2FzZSBMYWJlbFBvc2l0aW9uLkJFRk9SRTpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5jc3NDbGFzc31fX2xhYmVsLS1iZWZvcmVgO1xuICAgICAgICAgICAgY2FzZSBMYWJlbFBvc2l0aW9uLkFGVEVSOlxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5jc3NDbGFzc31fX2xhYmVsYDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXRFZGl0RWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlSW5wdXQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHVwZGF0ZVZhbGlkaXR5U3RhdGUoKSB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmICF0aGlzLnJlYWRvbmx5ICYmXG4gICAgICAgICAgICAgICAgKHRoaXMubmdDb250cm9sLmNvbnRyb2wudG91Y2hlZCB8fCB0aGlzLm5nQ29udHJvbC5jb250cm9sLmRpcnR5KSkge1xuICAgICAgICAgICAgICAgIC8vIHRoZSBjb250cm9sIGlzIG5vdCBkaXNhYmxlZCBhbmQgaXMgdG91Y2hlZCBvciBkaXJ0eVxuICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZCA9IHRoaXMubmdDb250cm9sLmludmFsaWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vICBpZiB0aGUgY29udHJvbCBpcyB1bnRvdWNoZWQsIHByaXN0aW5lLCBvciBkaXNhYmxlZCwgaXRzIHN0YXRlIGlzIGluaXRpYWwuIFRoaXMgaXMgd2hlbiB0aGUgdXNlciBkaWQgbm90IGludGVyYWN0XG4gICAgICAgICAgICAgICAgLy8gIHdpdGggdGhlIGNoZWNrYm94IG9yIHdoZW4gdGhlIGZvcm0vY29udHJvbCBpcyByZXNldFxuICAgICAgICAgICAgICAgIHRoaXMuaW52YWxpZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jaGVja05hdGl2ZVZhbGlkaXR5KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIGZ1bmN0aW9uIHRvIGFzc2lnbiBhIG5hdGl2ZSB2YWxpZGl0eSBwcm9wZXJ0eSBvZiBhIGNoZWNrYm94LlxuICAgICAqIFRoaXMgc2hvdWxkIGJlIHVzZWQgd2hlbiB0aGVyZSdzIG5vIG5nQ29udHJvbFxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHByaXZhdGUgY2hlY2tOYXRpdmVWYWxpZGl0eSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkICYmIHRoaXMuX3JlcXVpcmVkICYmICF0aGlzLmNoZWNrZWQgJiYgIXRoaXMucmVhZG9ubHkpIHtcbiAgICAgICAgICAgIHRoaXMuaW52YWxpZCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmludmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxpbnB1dCAjY2hlY2tib3ggY2xhc3M9XCJpZ3gtY2hlY2tib3hfX2lucHV0XCJcbiAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICBbbmFtZV09XCJuYW1lXCJcbiAgICBbdmFsdWVdPVwidmFsdWVcIlxuICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbaW5kZXRlcm1pbmF0ZV09XCJpbmRldGVybWluYXRlXCJcbiAgICBbY2hlY2tlZF09XCJjaGVja2VkXCJcbiAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFthdHRyLmFyaWEtcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpbnZhbGlkXCJcbiAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiYXJpYUNoZWNrZWRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxsZWRieV09XCJhcmlhTGFiZWwgPyBudWxsIDogYXJpYUxhYmVsbGVkQnlcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsXCJcbiAgICAoY2hhbmdlKT1cIl9vbkNoZWNrYm94Q2hhbmdlKCRldmVudClcIlxuICAgIChibHVyKT1cIm9uQmx1cigpXCIgLz5cblxuPGRpdlxuICAgIGlneFJpcHBsZVxuICAgIGlneFJpcHBsZVRhcmdldD1cIi5pZ3gtY2hlY2tib3hfX3JpcHBsZVwiXG4gICAgW2lneFJpcHBsZURpc2FibGVkXT1cImRpc2FibGVSaXBwbGVcIlxuICAgIFtpZ3hSaXBwbGVDZW50ZXJlZF09XCJ0cnVlXCJcbiAgICBbaWd4UmlwcGxlRHVyYXRpb25dPVwiMzAwXCJcbiAgICBjbGFzcz1cImlneC1jaGVja2JveF9fY29tcG9zaXRlLXdyYXBwZXJcIlxuPlxuICAgIDxzcGFuICNsYWJlbCBjbGFzcz1cImlneC1jaGVja2JveF9fY29tcG9zaXRlXCI+XG4gICAgICAgIEBpZiAodGhlbWUgPT09ICdpbmRpZ28nKSB7XG4gICAgICAgICAgICA8c3ZnIGNsYXNzPVwiaWd4LWNoZWNrYm94X19jb21wb3NpdGUtbWFya1wiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjRcIiB4PVwiMlwiIHk9XCI5XCIgcng9XCIxLjg1XCIvPlxuICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTkuMDMzIDVhMS45NjYgMS45NjYgMCAwIDAtMS40MTguNTg2bC04LjQ3OSA4LjU3Ny0yLjc1My0yLjc3YTEuOTcxIDEuOTcxIDAgMCAwLTIuOCAwIDEuOTk4IDEuOTk4IDAgMCAwIDAgMi44MjJsNC4xNTUgNC4xOTZhMS45NTUgMS45NTUgMCAwIDAgMi44IDBsOS44NzktOS45OWExLjk5OCAxLjk5OCAwIDAgMCAwLTIuODIxIDEuOTY2IDEuOTY2IDAgMCAwLTEuMzg0LS42WlwiLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJpZ3gtY2hlY2tib3hfX2NvbXBvc2l0ZS1tYXJrXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTQuMSwxMi43IDksMTcuNiAyMC4zLDYuM1wiLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICB9XG4gICAgPC9zcGFuPlxuXG4gICAgPGRpdiBjbGFzcz1cImlneC1jaGVja2JveF9fcmlwcGxlXCI+PC9kaXY+XG48L2Rpdj5cblxuPHNwYW4gI3BsYWNlaG9sZGVyTGFiZWxcbiAgICBbY2xhc3NdPVwibGFiZWxDbGFzc1wiXG4gICAgW2lkXT1cImxhYmVsSWRcIj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L3NwYW4+XG4iXX0=