myrta-ui 17.0.0-beta.9 → 17.0.1

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 (140) hide show
  1. package/esm2022/lib/components/breadcrumbs/breadcrumbs.component.mjs +4 -3
  2. package/esm2022/lib/components/breadcrumbs/breadcrumbs.enum.mjs +1 -1
  3. package/esm2022/lib/components/breadcrumbs/breadcrumbs.module.mjs +10 -4
  4. package/esm2022/lib/components/dropdown/dropdown.component.mjs +2 -2
  5. package/esm2022/lib/components/form/checkbox/checkbox.component.mjs +5 -12
  6. package/esm2022/lib/components/form/checkbox/checkbox.enum.mjs +2 -5
  7. package/esm2022/lib/components/form/checkbox-group/checkbox-group.component.mjs +82 -44
  8. package/esm2022/lib/components/form/checkbox-group/components/checkbox-group-header/checkbox-group-header.component.mjs +4 -4
  9. package/esm2022/lib/components/form/checkbox-group/components/checkbox-group-item/checkbox-group-item.component.mjs +51 -43
  10. package/esm2022/lib/components/form/checkbox-group/helpers/change-group-value.mjs +7 -8
  11. package/esm2022/lib/components/form/checkbox-group/helpers/change-item-value.mjs +2 -2
  12. package/esm2022/lib/components/form/checkbox-group/helpers/filter-search-group.mjs +5 -5
  13. package/esm2022/lib/components/form/checkbox-group/helpers/get-checked-items.mjs +2 -2
  14. package/esm2022/lib/components/form/checkbox-group/helpers/get-inner-list.helper.mjs +46 -0
  15. package/esm2022/lib/components/form/checkbox-group/helpers/get-item-by-id.mjs +4 -4
  16. package/esm2022/lib/components/form/checkbox-group/helpers/get-sorted-list.mjs +2 -2
  17. package/esm2022/lib/components/form/checkbox-group/helpers/inner-list-to-list.helper.mjs +13 -0
  18. package/esm2022/lib/components/form/checkbox-group/models/checkbox-group.model.mjs +1 -1
  19. package/esm2022/lib/components/form/editor/editor.component.mjs +9 -6
  20. package/esm2022/lib/components/form/input-file/input-file.component.mjs +3 -5
  21. package/esm2022/lib/components/form/input-file-image/components/file-image-edit-modal/file-image-edit-modal.component.mjs +1 -3
  22. package/esm2022/lib/components/form/input-file-image/input-file-image.component.mjs +100 -106
  23. package/esm2022/lib/components/form/input-opt/components/input-opt/input-opt.component.mjs +2 -2
  24. package/esm2022/lib/components/form/input-password/input-password.component.mjs +2 -2
  25. package/esm2022/lib/components/form/input-phone/input-phone.component.mjs +2 -2
  26. package/esm2022/lib/components/form/input-search/input-search.component.mjs +2 -2
  27. package/esm2022/lib/components/form/input-select/input-select.component.mjs +4 -4
  28. package/esm2022/lib/components/form/input-tel/input-tel.component.mjs +2 -2
  29. package/esm2022/lib/components/form/input-text/input-text.component.mjs +2 -2
  30. package/esm2022/lib/components/form/input-textarea/input-textarea.component.mjs +2 -2
  31. package/esm2022/lib/components/form/radio-group/components/radio-group-header/radio-group-header.component.mjs +7 -4
  32. package/esm2022/lib/components/form/radio-group/components/radio-group-item/radio-group-item.component.mjs +9 -3
  33. package/esm2022/lib/components/form/radio-group/models/radio-group.model.mjs +1 -1
  34. package/esm2022/lib/components/form/radio-group/radio-group.component.mjs +32 -23
  35. package/esm2022/lib/components/form/radio-group/radio-group.module.mjs +25 -4
  36. package/esm2022/lib/components/form/rating/rating.component.mjs +2 -2
  37. package/esm2022/lib/components/gallery/components/gallery-confirm-modal/gallery-confirm-modal.component.mjs +1 -3
  38. package/esm2022/lib/components/icon-button/icon-button.component.mjs +9 -3
  39. package/esm2022/lib/components/icon-button/icon-button.enum.mjs +2 -1
  40. package/esm2022/lib/components/label/label.component.mjs +2 -2
  41. package/esm2022/lib/components/link/link.component.mjs +22 -9
  42. package/esm2022/lib/components/link/link.module.mjs +5 -4
  43. package/esm2022/lib/components/paginator/paginator.component.mjs +5 -5
  44. package/esm2022/lib/components/paginator/paginator.module.mjs +8 -8
  45. package/esm2022/lib/components/pdf-viewer/pdf-viewer.component.mjs +268 -0
  46. package/esm2022/lib/components/pdf-viewer/pdf-viewer.module.mjs +59 -0
  47. package/esm2022/lib/components/save-state/components/save-state-editor/save-state-editor.component.mjs +2 -2
  48. package/esm2022/lib/components/save-state/save-state.component.mjs +3 -3
  49. package/esm2022/lib/components/save-state/save-state.enum.mjs +1 -1
  50. package/esm2022/lib/components/table/table.component.mjs +3 -3
  51. package/esm2022/lib/components/truncate-text/truncate-text.component.mjs +1 -1
  52. package/esm2022/lib/services/file-upload/file-upload.service.mjs +2 -3
  53. package/esm2022/lib/services/index.mjs +5 -1
  54. package/esm2022/lib/services/modal-service/components/alert-modal/alert-modal.component.mjs +1 -3
  55. package/esm2022/lib/services/modal-service/components/confirm-modal/confirm-modal.component.mjs +1 -3
  56. package/esm2022/lib/services/modal-service/helpers/modal.component.mjs +1 -2
  57. package/esm2022/lib/services/modal-service/modal-service.service.mjs +1 -1
  58. package/esm2022/lib/services/mrx-form-validator/constants/invalid-messages.mjs +10 -0
  59. package/esm2022/lib/services/mrx-form-validator/helpers/get-error-message.helper.mjs +10 -0
  60. package/esm2022/lib/services/mrx-form-validator/helpers/get-sorting-validations.helper.mjs +29 -0
  61. package/esm2022/lib/services/mrx-form-validator/models/index.mjs +4 -0
  62. package/esm2022/lib/services/mrx-form-validator/models/validations-options.model.mjs +2 -0
  63. package/esm2022/lib/services/mrx-form-validator/models/validations-settings.model.mjs +2 -0
  64. package/esm2022/lib/services/mrx-form-validator/models/validations-types.model.mjs +22 -0
  65. package/esm2022/lib/services/mrx-form-validator/mrx-form-validator.mjs +97 -183
  66. package/esm2022/lib/services/mrx-form-validator/validations/callback.validation.mjs +15 -0
  67. package/esm2022/lib/services/mrx-form-validator/validations/email.validation.mjs +11 -0
  68. package/esm2022/lib/services/mrx-form-validator/validations/max-length.validation.mjs +14 -0
  69. package/esm2022/lib/services/mrx-form-validator/validations/max-value.validation.mjs +10 -0
  70. package/esm2022/lib/services/mrx-form-validator/validations/min-length.validation.mjs +15 -0
  71. package/esm2022/lib/services/mrx-form-validator/validations/min-value.validation.mjs +10 -0
  72. package/esm2022/lib/services/mrx-form-validator/validations/pattern.validation.mjs +11 -0
  73. package/esm2022/lib/services/mrx-form-validator/validations/required.validation.mjs +22 -0
  74. package/esm2022/lib/services/toaster-service/components/toaster/toaster.component.mjs +29 -0
  75. package/esm2022/lib/services/toaster-service/models/toaster.model.mjs +15 -0
  76. package/esm2022/lib/services/toaster-service/toaster-service.module.mjs +52 -0
  77. package/esm2022/lib/services/toaster-service/toaster-service.service.mjs +53 -0
  78. package/esm2022/public-api.mjs +5 -1
  79. package/fesm2022/myrta-ui.mjs +1624 -980
  80. package/fesm2022/myrta-ui.mjs.map +1 -1
  81. package/lib/components/breadcrumbs/breadcrumbs.enum.d.ts +5 -0
  82. package/lib/components/breadcrumbs/breadcrumbs.module.d.ts +2 -1
  83. package/lib/components/form/checkbox/checkbox.component.d.ts +2 -4
  84. package/lib/components/form/checkbox/checkbox.enum.d.ts +0 -4
  85. package/lib/components/form/checkbox-group/checkbox-group.component.d.ts +27 -18
  86. package/lib/components/form/checkbox-group/components/checkbox-group-item/checkbox-group-item.component.d.ts +16 -9
  87. package/lib/components/form/checkbox-group/helpers/change-group-value.d.ts +3 -3
  88. package/lib/components/form/checkbox-group/helpers/change-item-value.d.ts +3 -3
  89. package/lib/components/form/checkbox-group/helpers/filter-search-group.d.ts +2 -2
  90. package/lib/components/form/checkbox-group/helpers/get-checked-items.d.ts +2 -2
  91. package/lib/components/form/checkbox-group/helpers/get-inner-list.helper.d.ts +2 -0
  92. package/lib/components/form/checkbox-group/helpers/get-item-by-id.d.ts +2 -2
  93. package/lib/components/form/checkbox-group/helpers/get-sorted-list.d.ts +2 -2
  94. package/lib/components/form/checkbox-group/helpers/inner-list-to-list.helper.d.ts +2 -0
  95. package/lib/components/form/checkbox-group/models/checkbox-group.model.d.ts +13 -2
  96. package/lib/components/form/editor/editor.component.d.ts +1 -1
  97. package/lib/components/form/input-file-image/components/file-image-edit-modal/file-image-edit-modal.component.d.ts +0 -1
  98. package/lib/components/form/input-file-image/input-file-image.component.d.ts +1 -1
  99. package/lib/components/form/input-select/input-select.component.d.ts +16 -5
  100. package/lib/components/form/radio-group/components/radio-group-header/radio-group-header.component.d.ts +3 -1
  101. package/lib/components/form/radio-group/components/radio-group-item/radio-group-item.component.d.ts +3 -1
  102. package/lib/components/form/radio-group/models/radio-group.model.d.ts +4 -0
  103. package/lib/components/form/radio-group/radio-group.component.d.ts +10 -7
  104. package/lib/components/form/radio-group/radio-group.module.d.ts +2 -1
  105. package/lib/components/gallery/components/gallery-confirm-modal/gallery-confirm-modal.component.d.ts +0 -1
  106. package/lib/components/icon-button/icon-button.component.d.ts +4 -1
  107. package/lib/components/icon-button/icon-button.enum.d.ts +2 -1
  108. package/lib/components/link/link.component.d.ts +10 -3
  109. package/lib/components/link/link.module.d.ts +2 -1
  110. package/lib/components/paginator/paginator.module.d.ts +3 -3
  111. package/lib/components/pdf-viewer/pdf-viewer.component.d.ts +70 -0
  112. package/lib/components/pdf-viewer/pdf-viewer.module.d.ts +16 -0
  113. package/lib/components/save-state/save-state.enum.d.ts +1 -1
  114. package/lib/services/file-upload/file-upload.service.d.ts +2 -2
  115. package/lib/services/index.d.ts +4 -0
  116. package/lib/services/modal-service/components/alert-modal/alert-modal.component.d.ts +0 -1
  117. package/lib/services/modal-service/components/confirm-modal/confirm-modal.component.d.ts +0 -1
  118. package/lib/services/modal-service/helpers/modal.component.d.ts +0 -1
  119. package/lib/services/mrx-form-validator/constants/invalid-messages.d.ts +9 -0
  120. package/lib/services/mrx-form-validator/helpers/get-error-message.helper.d.ts +3 -0
  121. package/lib/services/mrx-form-validator/helpers/get-sorting-validations.helper.d.ts +2 -0
  122. package/lib/services/mrx-form-validator/models/index.d.ts +3 -0
  123. package/lib/services/mrx-form-validator/models/validations-options.model.d.ts +31 -0
  124. package/lib/services/mrx-form-validator/models/validations-settings.model.d.ts +7 -0
  125. package/lib/services/mrx-form-validator/models/validations-types.model.d.ts +19 -0
  126. package/lib/services/mrx-form-validator/mrx-form-validator.d.ts +6 -33
  127. package/lib/services/mrx-form-validator/validations/callback.validation.d.ts +5 -0
  128. package/lib/services/mrx-form-validator/validations/email.validation.d.ts +5 -0
  129. package/lib/services/mrx-form-validator/validations/max-length.validation.d.ts +5 -0
  130. package/lib/services/mrx-form-validator/validations/max-value.validation.d.ts +5 -0
  131. package/lib/services/mrx-form-validator/validations/min-length.validation.d.ts +5 -0
  132. package/lib/services/mrx-form-validator/validations/min-value.validation.d.ts +5 -0
  133. package/lib/services/mrx-form-validator/validations/pattern.validation.d.ts +5 -0
  134. package/lib/services/mrx-form-validator/validations/required.validation.d.ts +5 -0
  135. package/lib/services/toaster-service/components/toaster/toaster.component.d.ts +12 -0
  136. package/lib/services/toaster-service/models/toaster.model.d.ts +12 -0
  137. package/lib/services/toaster-service/toaster-service.module.d.ts +10 -0
  138. package/lib/services/toaster-service/toaster-service.service.d.ts +15 -0
  139. package/package.json +5 -1
  140. package/public-api.d.ts +4 -0
@@ -84,7 +84,7 @@ export class InputOptComponent {
84
84
  this.ngxOtpArray$.unsubscribe();
85
85
  }
86
86
  get isInvalidMessage() {
87
- return !!this.invalidMessage || !!this.invalidMessage.length;
87
+ return !!this.invalidMessage || !!this.invalidMessage?.length;
88
88
  }
89
89
  get checkValidClasses() {
90
90
  return this.checkInvalid === false ?
@@ -367,4 +367,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
367
367
  type: HostListener,
368
368
  args: ['paste', ['$event']]
369
369
  }] } });
370
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtb3B0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LW9wdC9jb21wb25lbnRzL2lucHV0LW9wdC9pbnB1dC1vcHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtb3B0L2NvbXBvbmVudHMvaW5wdXQtb3B0L2lucHV0LW9wdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBRTdDLE1BQU0sRUFFTixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxjQUFjLEVBQW1DLE1BQU0sOEJBQThCLENBQUM7QUFHL0YsT0FBTyxFQUFFLGlCQUFpQixFQUFzQixNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBZ0J6RSxNQUFNLE9BQU8saUJBQWlCO0lBK0RUO0lBQ0E7SUEvRFgsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUN4QixrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQztJQUMvQyxnQkFBZ0IsQ0FBVTtJQUMxQixNQUFNLENBQXNCO0lBQzVCLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUM5QixZQUFZLENBQWdCO0lBQzVCLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUM3QixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRXZCLFdBQVcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMs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QU87c0JBQXRCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBS08sTUFBTTtzQkFBbEIsS0FBSztnQkFVTyxNQUFNO3NCQUFsQixLQUFLO2dCQUkyQixnQkFBZ0I7c0JBQWhELFlBQVk7dUJBQUMsaUJBQWlCO2dCQUVyQixNQUFNO3NCQUFmLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkE0VDRCLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBWaWV3Q2hpbGRyZW5cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmd4T3RwQmVoYXZpb3IsIE5neE90cElucHV0Q29uZmlnLCBOZ3hPdHBTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5wdXQtb3B0Lm1vZGVsJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElucHV0T3B0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2lucHV0LW9wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5wdXRPcHRTaXplc0VudW0sIElucHV0T3B0U2l6ZXNUeXBlcyB9IGZyb20gJy4vaW5wdXQtb3B0LmVudW0nO1xyXG5pbXBvcnQgeyBJbnB1dFRleHRWYWx1ZVR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXQtdGV4dC9pbnB1dC10ZXh0LmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtaW5wdXQtb3B0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtb3B0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1vcHQuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0T3B0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dE9wdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGRlZmF1bHRQYXR0ZXJuID0gL14uKyQvO1xyXG4gIHByaXZhdGUgREVGQVVMVF9BUklBX0xBQkVMID0gJ09uZSB0aW1lIHBhc3N3b3JkIGlucHV0JztcclxuICBwcml2YXRlIExBU1RfSU5QVVRfSU5ERVghOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBpbnB1dHMhOiBIVE1MSW5wdXRFbGVtZW50W107XHJcbiAgcHJpdmF0ZSBpc05neE90cEFycmF5RGlzYWJsZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIG5neE90cEFycmF5JCE6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIGZvY3VzZWRJbnB1dEhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBpc0luaXQgPSBmYWxzZTtcclxuXHJcbiAgbmd4T3RwQXJyYXkgPSBuZXcgRm9ybUFycmF5KFtdKTtcclxuICBhcmlhTGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHBhdHRlcm4hOiBSZWdFeHA7XHJcbiAgc3R5bGVzOiBzdHJpbmdbXVtdID0gW107XHJcblxyXG4gIG90cENvbmZpZzogTmd4T3RwSW5wdXRDb25maWcgPSB7XHJcbiAgICBvdHBMZW5ndGg6IDYsXHJcbiAgICBhdXRvZm9jdXM6IHRydWUsXHJcbiAgICBhdXRvYmx1cjogdHJ1ZSxcclxuICAgIGJlaGF2aW9yOiBOZ3hPdHBCZWhhdmlvci5ERUZBVUxULFxyXG4gICAgcGF0dGVybjogdGhpcy5kZWZhdWx0UGF0dGVybixcclxuICAgIGNsYXNzTGlzdDoge1xyXG4gICAgICBjb250YWluZXI6ICcnLFxyXG4gICAgICBpbnB1dEJveDogJycsXHJcbiAgICAgIGlucHV0OiAnJyxcclxuICAgICAgaW5wdXRGaWxsZWQ6ICcnLFxyXG4gICAgICBpbnB1dERpc2FibGVkOiAnJyxcclxuICAgICAgaW5wdXRTdWNjZXNzOiAnJyxcclxuICAgICAgaW5wdXRFcnJvcjogJycsXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNpemU6IElucHV0T3B0U2l6ZXNUeXBlcyA9ICdsYXJnZSc7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgc2V0IGRpc2FibGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5oYW5kbGVEaXNhYmxlKGlzRGlzYWJsZWQpO1xyXG4gICAgdGhpcy5pc05neE90cEFycmF5RGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGNvbmZpZyhjOiBOZ3hPdHBJbnB1dENvbmZpZykge1xyXG4gICAgdGhpcy5vdHBDb25maWcgPSB7Li4udGhpcy5vdHBDb25maWcsIC4uLmN9O1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdD8uaW5wdXQpIHtcclxuICAgICAgdGhpcy5zZXRJbml0aWFsU3R5bGVzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWMucGF0dGVybikge1xyXG4gICAgICB0aGlzLm90cENvbmZpZy5wYXR0ZXJuID0gdGhpcy5kZWZhdWx0UGF0dGVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBzdGF0dXMoc3RhdHVzOiBOZ3hPdHBTdGF0dXMpIHtcclxuICAgIHRoaXMuaGFuZGxlU3RhdHVzQ2hhbmdlKHN0YXR1cyk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkcmVuKCdvdHBJbnB1dEVsZW1lbnQnKSBvdHBJbnB1dEVsZW1lbnRzITogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG5cclxuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcclxuICBAT3V0cHV0KCkgZmlsbENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG90cFNlcnZpY2U6IElucHV0T3B0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldFVwT3RwRm9ybSgpO1xyXG4gICAgdGhpcy5zZXRVcEFyaWFMYWJlbHMoKTtcclxuICAgIHRoaXMuTEFTVF9JTlBVVF9JTkRFWCA9IHRoaXMub3RwQ29uZmlnLm90cExlbmd0aCAtIDE7XHJcbiAgICB0aGlzLm90cEZvcm1DaGFuZ2VMaXN0ZW5lcigpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXROYXRpdmVIVE1MRWxlbWVudHMoKTtcclxuICAgIHRoaXMuc2V0SW5pdGlhbEZvY3VzKCk7XHJcbiAgICB0aGlzLnNldE51bWVyaWNJbnB1dElmUG9zc2libGUoKTtcclxuICAgIHRoaXMuaGFuZGxlRGlzYWJsZSh0aGlzLmlzTmd4T3RwQXJyYXlEaXNhYmxlZCk7XHJcbiAgICB0aGlzLmlzSW5pdCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubmd4T3RwQXJyYXkkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzSW52YWxpZE1lc3NhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmludmFsaWRNZXNzYWdlIHx8ICEhdGhpcy5pbnZhbGlkTWVzc2FnZS5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID9cclxuICAgICAgJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDpcclxuICAgICAgdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJyc7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke0lucHV0T3B0U2l6ZXNFbnVtW3RoaXMuc2l6ZV19ICR7dGhpcy5jdXN0b21DbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0Q29udGFpbmVyQ2xhc3NlcygpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5vdHBDb25maWc/LmNsYXNzTGlzdD8uY29udGFpbmVyIHx8ICcnXHJcbiAgfVxyXG5cclxuICBnZXQgZ2V0SW5wdXRCb3hDbGFzc2VzKCk6IHN0cmluZyB8IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLm90cENvbmZpZz8uY2xhc3NMaXN0Py5pbnB1dEJveCB8fCAnJ1xyXG4gIH1cclxuXHJcbiAgY29udmVydFRvRm9ybUNvbnRyb2woYWJzQ3RybDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCk6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiBhYnNDdHJsIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCkge1xyXG4gICAgICB0aGlzLnJlbW92ZVN0eWxlRnJvbUFsbCh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMubmd4T3RwQXJyYXkucmVzZXQoKTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuYXV0b2ZvY3VzKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9jdXMoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVLZXlVcChpbmRleDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcucGF0dGVybi50ZXN0KHZhbHVlKSAmJiB2YWx1ZSAhPT0gJ0JhY2tzcGFjZScpIHtcclxuICAgICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpIHtcclxuICAgICAgICB0aGlzLmFkZFN0eWxlKGluZGV4LCB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5uZ3hPdHBBcnJheS52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xCeUluZGV4KGluZGV4KS5zZXRWYWx1ZSh2YWx1ZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgICB0aGlzLnN0ZXBGb3J3YXJkKGluZGV4KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmJsdXIoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRGVsZXRlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlU3R5bGUoaW5kZXgsIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKFxyXG4gICAgICAodGhpcy5vdHBDb25maWcuYmVoYXZpb3IgPT09IE5neE90cEJlaGF2aW9yLkxFR0FDWSAmJlxyXG4gICAgICAgICF0aGlzLmZvY3VzZWRJbnB1dEhhc1ZhbHVlKSB8fFxyXG4gICAgICB0aGlzLm90cENvbmZpZy5iZWhhdmlvciAhPT0gTmd4T3RwQmVoYXZpb3IuTEVHQUNZXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5zdGVwQmFja3dhcmQoaW5kZXgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5mb2N1c2VkSW5wdXRIYXNWYWx1ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlRm9jdXMoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgdGhpcy5mb2N1c2VkSW5wdXRIYXNWYWx1ZSA9ICEhdGhpcy5uZ3hPdHBBcnJheS5jb250cm9sc1tpbmRleF0udmFsdWU7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMub3RwQ29uZmlnLmJlaGF2aW9yID09PSBOZ3hPdHBCZWhhdmlvci5MRUdBQ1kgJiZcclxuICAgICAgdGhpcy5mb2N1c2VkSW5wdXRIYXNWYWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRzW2luZGV4XS5zZWxlY3QoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0ZXBCYWNrd2FyZChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9jdXMoaW5kZXggLSAxKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0ZXBGb3J3YXJkKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChpbmRleCA8IHRoaXMuTEFTVF9JTlBVVF9JTkRFWCkge1xyXG4gICAgICB0aGlzLnNldEZvY3VzKGluZGV4ICsgMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG90cEZvcm1DaGFuZ2VMaXN0ZW5lcigpOiB2b2lkIHtcclxuICAgIHRoaXMubmd4T3RwQXJyYXkkID0gdGhpcy5uZ3hPdHBBcnJheS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZXMpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaXNJbml0KSB7XHJcbiAgICAgICAgdGhpcy5jaGFuZ2UuZW1pdCh2YWx1ZXMpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5uZ3hPdHBBcnJheS52YWxpZCkge1xyXG4gICAgICAgICAgdGhpcy5maWxsQ2hhbmdlLmVtaXQodmFsdWVzLmpvaW4oJycpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVcE90cEZvcm0oKTogdm9pZCB7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMub3RwQ29uZmlnLm90cExlbmd0aDsgaSsrKSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgdGhpcy5uZ3hPdHBBcnJheS5wdXNoKG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldFVwQXJpYUxhYmVscygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMub3RwQ29uZmlnLmFyaWFMYWJlbHM7XHJcblxyXG4gICAgdGhpcy5hcmlhTGFiZWxzID0gQXJyYXkuaXNBcnJheShsYWJlbHMpXHJcbiAgICAgID8gbGFiZWxzXHJcbiAgICAgIDogbmV3IEFycmF5KHRoaXMub3RwQ29uZmlnLm90cExlbmd0aCkuZmlsbChcclxuICAgICAgICBsYWJlbHMgfHwgdGhpcy5ERUZBVUxUX0FSSUFfTEFCRUxcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TmF0aXZlSFRNTEVsZW1lbnRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnB1dHMgPSB0aGlzLm90cElucHV0RWxlbWVudHMubWFwKChlbGVtZW50KSA9PiBlbGVtZW50Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRJbml0aWFsRm9jdXMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuYXV0b2ZvY3VzKSB7XHJcbiAgICAgIHRoaXMuc2V0Rm9jdXMoMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldEluaXRpYWxTdHlsZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMub3RwU2VydmljZS5pbml0MkRBcnJheSh0aGlzLm90cENvbmZpZy5vdHBMZW5ndGgpO1xyXG5cclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0KSB7XHJcbiAgICAgIHRoaXMuYWRkU3R5bGVUb0FsbCh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRGb2N1cyhpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmlucHV0c1tpbmRleF0uZm9jdXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TnVtZXJpY0lucHV0SWZQb3NzaWJsZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5udW1lcmljSW5wdXRNb2RlKSB7XHJcbiAgICAgIHRoaXMub3RwQ29uZmlnLnBhdHRlcm4gPSB0aGlzLmRlZmF1bHRQYXR0ZXJuO1xyXG4gICAgICB0aGlzLmlucHV0cy5tYXAoKGVsZW1lbnQpID0+IHtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgnaW5wdXRtb2RlJywgJ251bWVyaWMnKTtcclxuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZSgncGF0dGVybicsICdbMC05XSonKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJsdXIoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuYXV0b2JsdXIpIHtcclxuICAgICAgdGhpcy5pbnB1dHMubWFwKChpbnB1dCkgPT4gaW5wdXQuYmx1cigpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlUGFzdGUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcclxuICAgICAgbGV0IGxhc3RJbmRleCA9IDA7XHJcbiAgICAgIHZhbHVlXHJcbiAgICAgICAgLnNwbGl0KCcnKVxyXG4gICAgICAgIC5zbGljZSgwLCB0aGlzLm90cENvbmZpZy5vdHBMZW5ndGgpXHJcbiAgICAgICAgLm1hcCgoY2hhcmFjdGVyOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkU3R5bGUoaW5kZXgsIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sQnlJbmRleChpbmRleCkuc2V0VmFsdWUoY2hhcmFjdGVyKTtcclxuICAgICAgICAgIGxhc3RJbmRleCA9IGluZGV4O1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKHRoaXMubmd4T3RwQXJyYXkudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmJsdXIoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldEZvY3VzKGxhc3RJbmRleCArIDEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZURpc2FibGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGlzRGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5uZ3hPdHBBcnJheS5kaXNhYmxlKCk7XHJcbiAgICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RGlzYWJsZWQpIHtcclxuICAgICAgICB0aGlzLmFkZFN0eWxlVG9BbGwodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RGlzYWJsZWQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLm5neE90cEFycmF5LmVuYWJsZSgpO1xyXG4gICAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dERpc2FibGVkKSB7XHJcbiAgICAgICAgdGhpcy5yZW1vdmVTdHlsZUZyb21BbGwodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RGlzYWJsZWQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVN0YXR1c0NoYW5nZShzdGF0dXM6IE5neE90cFN0YXR1cyk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0U3VjY2VzcyAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRFcnJvcikpIHtcclxuICAgICAgdGhpcy5yZW1vdmVTdHlsZUZyb21BbGwoW1xyXG4gICAgICAgIC4uLnRoaXMub3RwU2VydmljZS50b0FycmF5KFxyXG4gICAgICAgICAgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0U3VjY2Vzc1xyXG4gICAgICAgICksXHJcbiAgICAgICAgLi4udGhpcy5vdHBTZXJ2aWNlLnRvQXJyYXkodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RXJyb3IpLFxyXG4gICAgICBdKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RhdHVzKSB7XHJcbiAgICAgIGlmIChzdGF0dXMgPT09ICdzdWNjZXNzJykge1xyXG4gICAgICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0U3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhpcy5hZGRTdHlsZVRvQWxsKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dFN1Y2Nlc3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT09ICdlcnJvcicpIHtcclxuICAgICAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEVycm9yKSB7XHJcbiAgICAgICAgICB0aGlzLmFkZFN0eWxlVG9BbGwodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtQ29udHJvbEJ5SW5kZXgoaW5kZXg6IG51bWJlcik6IEZvcm1Db250cm9sIHtcclxuICAgIHJldHVybiB0aGlzLm5neE90cEFycmF5LmNvbnRyb2xzW2luZGV4XSBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkU3R5bGUoaW5kZXg6IG51bWJlciwgc3R5bGVzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLm90cFNlcnZpY2UuYWRkSXRlbUF0SW5kZXgoXHJcbiAgICAgIHRoaXMuc3R5bGVzLFxyXG4gICAgICBpbmRleCxcclxuICAgICAgdGhpcy5vdHBTZXJ2aWNlLnRvQXJyYXkoc3R5bGVzKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYWRkU3R5bGVUb0FsbChzdHlsZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMub3RwU2VydmljZS5hZGRJdGVtVG9BbGwoXHJcbiAgICAgIHRoaXMuc3R5bGVzLFxyXG4gICAgICB0aGlzLm90cFNlcnZpY2UudG9BcnJheShzdHlsZXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVTdHlsZShpbmRleDogbnVtYmVyLCBzdHlsZXM6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLnN0eWxlcyA9IHRoaXMub3RwU2VydmljZS5yZW1vdmVJdGVtQXRJbmRleChcclxuICAgICAgdGhpcy5zdHlsZXMsXHJcbiAgICAgIGluZGV4LFxyXG4gICAgICB0aGlzLm90cFNlcnZpY2UudG9BcnJheShzdHlsZXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZW1vdmVTdHlsZUZyb21BbGwoc3R5bGVzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLm90cFNlcnZpY2UucmVtb3ZlSXRlbUZyb21BbGwoXHJcbiAgICAgIHRoaXMuc3R5bGVzLFxyXG4gICAgICB0aGlzLm90cFNlcnZpY2UudG9BcnJheShzdHlsZXMpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvbkNoYW5nZSA9ICh2YWx1ZTogSW5wdXRUZXh0VmFsdWVUeXBlcykgPT4ge1xyXG4gIH07XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7XHJcbiAgfTtcclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB3cml0ZVZhbHVlKG91dHNpZGVWYWx1ZTogSW5wdXRUZXh0VmFsdWVUeXBlcykge1xyXG4gICAgaWYgKG91dHNpZGVWYWx1ZSkge1xyXG4gICAgICBsZXQgbGFzdEluZGV4ID0gMDtcclxuICAgICAgU3RyaW5nKG91dHNpZGVWYWx1ZSlcclxuICAgICAgICAuc3BsaXQoJycpXHJcbiAgICAgICAgLnNsaWNlKDAsIHRoaXMub3RwQ29uZmlnLm90cExlbmd0aClcclxuICAgICAgICAubWFwKChjaGFyYWN0ZXI6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5hZGRTdHlsZShpbmRleCwgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZ2V0Rm9ybUNvbnRyb2xCeUluZGV4KGluZGV4KS5zZXRWYWx1ZShjaGFyYWN0ZXIsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgICAgICBsYXN0SW5kZXggPSBpbmRleDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLm5neE90cEFycmF5LnZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5ibHVyKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXRGb2N1cyhsYXN0SW5kZXggKyAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcigncGFzdGUnLCBbJyRldmVudCddKSBvblBhc3RlKGV2ZW50OiBDbGlwYm9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuaGFuZGxlUGFzdGUoZXZlbnQuY2xpcGJvYXJkRGF0YS5nZXREYXRhKCd0ZXh0JykpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SW5wdXRUeXBlKCk6ICd0ZXh0JyB8ICdwYXNzd29yZCcgfCAndGVsJyB7XHJcbiAgICByZXR1cm4gdGhpcy5vdHBDb25maWcuaXNQYXNzd29yZElucHV0ID8gJ3Bhc3N3b3JkJyA6IHRoaXMub3RwQ29uZmlnLmlzTnVtYmVySW5wdXQgPyAndGVsJyA6ICd0ZXh0JztcclxuICB9XHJcbn1cclxuIiwiPGZvcm1cclxuICBbbmdDbGFzc109XCJnZXRDb250YWluZXJDbGFzc2VzXCJcclxuICBjbGFzcz1cIm1yeC1pbnB1dC1vdHAtY29udGFpbmVyXCJcclxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbj5cclxuICA8ZGl2XHJcbiAgICAqbmdGb3I9XCJsZXQgY29udHJvbCBvZiBuZ3hPdHBBcnJheS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiXHJcbiAgICBbbmdDbGFzc109XCJnZXRJbnB1dEJveENsYXNzZXNcIlxyXG4gICAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCJpbnZhbGlkXCJcclxuICAgIFtjbGFzc109XCJjaGVja1ZhbGlkQ2xhc3Nlc1wiXHJcbiAgICBjbGFzcz1cIm1yeC1pbnB1dC1vdHAtYm94XCJcclxuICA+XHJcbiAgICA8bGFiZWwgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWxzW2ldXCI+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgICNvdHBJbnB1dEVsZW1lbnRcclxuICAgICAgICBbaWRdPVwiJ21yeC1pbnB1dC1vdHAtJyArIGlcIlxyXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJjb252ZXJ0VG9Gb3JtQ29udHJvbChjb250cm9sKVwiXHJcbiAgICAgICAgW21yeE9wdFBhdHRlcm5dPVwib3RwQ29uZmlnLnBhdHRlcm5cIlxyXG4gICAgICAgIFt0eXBlXT1cImdldElucHV0VHlwZSgpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJzdHlsZXNbaV1cIlxyXG4gICAgICAgIChrZXl1cCk9XCJoYW5kbGVLZXlVcChpLCAkZXZlbnQua2V5KVwiXHJcbiAgICAgICAgKGtleXVwLmJhY2tzcGFjZSk9XCJoYW5kbGVEZWxldGUoaSlcIlxyXG4gICAgICAgIChrZXl1cC5hcnJvd0xlZnQpPVwic3RlcEJhY2t3YXJkKGkpXCJcclxuICAgICAgICAoa2V5dXAuYXJyb3dSaWdodCk9XCJzdGVwRm9yd2FyZChpKVwiXHJcbiAgICAgICAgKGZvY3VzKT1cImhhbmRsZUZvY3VzKGkpXCJcclxuICAgICAgICBjbGFzcz1cIm1yeC1pbnB1dC1vdHBcIlxyXG4gICAgICAgIG1heGxlbmd0aD1cIjFcIlxyXG4gICAgICAgIGF1dG9jYXBpdGFsaXplPVwib2ZmXCJcclxuICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAvPlxyXG4gICAgPC9sYWJlbD5cclxuICA8L2Rpdj5cclxuPC9mb3JtPlxyXG5cclxuPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgKm5nSWY9XCJpbnZhbGlkICYmIGlzSW52YWxpZE1lc3NhZ2VcIlxyXG4gIGN1c3RvbUNsYXNzZXM9XCJ0ZXh0LWxlZnRcIlxyXG4gIFtpbnZhbGlkTWVzc2FnZV09XCJpbnZhbGlkTWVzc2FnZVwiXHJcbj48L21yeC1lcnJvci1tZXNzYWdlPlxyXG4iXX0=
370
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtb3B0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cnRhLXVpL3NyYy9saWIvY29tcG9uZW50cy9mb3JtL2lucHV0LW9wdC9jb21wb25lbnRzL2lucHV0LW9wdC9pbnB1dC1vcHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtb3B0L2NvbXBvbmVudHMvaW5wdXQtb3B0L2lucHV0LW9wdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBRTdDLE1BQU0sRUFFTixZQUFZLEVBQ2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixTQUFTLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hHLE9BQU8sRUFBRSxjQUFjLEVBQW1DLE1BQU0sOEJBQThCLENBQUM7QUFHL0YsT0FBTyxFQUFFLGlCQUFpQixFQUFzQixNQUFNLGtCQUFrQixDQUFDOzs7Ozs7O0FBZ0J6RSxNQUFNLE9BQU8saUJBQWlCO0lBK0RUO0lBQ0E7SUEvRFgsY0FBYyxHQUFHLE1BQU0sQ0FBQztJQUN4QixrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQztJQUMvQyxnQkFBZ0IsQ0FBVTtJQUMxQixNQUFNLENBQXNCO0lBQzVCLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUM5QixZQUFZLENBQWdCO0lBQzVCLG9CQUFvQixHQUFHLEtBQUssQ0FBQztJQUM3QixNQUFNLEdBQUcsS0FBSyxDQUFDO0lBRXZCLFdBQVcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMs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QU87c0JBQXRCLEtBQUs7Z0JBQ1UsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUVPLE9BQU87c0JBQW5CLEtBQUs7Z0JBS08sTUFBTTtzQkFBbEIsS0FBSztnQkFVTyxNQUFNO3NCQUFsQixLQUFLO2dCQUkyQixnQkFBZ0I7c0JBQWhELFlBQVk7dUJBQUMsaUJBQWlCO2dCQUVyQixNQUFNO3NCQUFmLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkE0VDRCLE9BQU87c0JBQXpDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBWaWV3Q2hpbGRyZW5cclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQXJyYXksIEZvcm1Db250cm9sLCBOR19WQUxVRV9BQ0NFU1NPUiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTmd4T3RwQmVoYXZpb3IsIE5neE90cElucHV0Q29uZmlnLCBOZ3hPdHBTdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvaW5wdXQtb3B0Lm1vZGVsJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IElucHV0T3B0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2lucHV0LW9wdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW5wdXRPcHRTaXplc0VudW0sIElucHV0T3B0U2l6ZXNUeXBlcyB9IGZyb20gJy4vaW5wdXQtb3B0LmVudW0nO1xyXG5pbXBvcnQgeyBJbnB1dFRleHRWYWx1ZVR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vaW5wdXQtdGV4dC9pbnB1dC10ZXh0LmVudW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdtcngtaW5wdXQtb3B0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtb3B0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9pbnB1dC1vcHQuY29tcG9uZW50Lmxlc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0T3B0Q29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dE9wdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuICBwcml2YXRlIGRlZmF1bHRQYXR0ZXJuID0gL14uKyQvO1xyXG4gIHByaXZhdGUgREVGQVVMVF9BUklBX0xBQkVMID0gJ09uZSB0aW1lIHBhc3N3b3JkIGlucHV0JztcclxuICBwcml2YXRlIExBU1RfSU5QVVRfSU5ERVghOiBudW1iZXI7XHJcbiAgcHJpdmF0ZSBpbnB1dHMhOiBIVE1MSW5wdXRFbGVtZW50W107XHJcbiAgcHJpdmF0ZSBpc05neE90cEFycmF5RGlzYWJsZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIG5neE90cEFycmF5JCE6IFN1YnNjcmlwdGlvbjtcclxuICBwcml2YXRlIGZvY3VzZWRJbnB1dEhhc1ZhbHVlID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBpc0luaXQgPSBmYWxzZTtcclxuXHJcbiAgbmd4T3RwQXJyYXkgPSBuZXcgRm9ybUFycmF5KFtdKTtcclxuICBhcmlhTGFiZWxzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHBhdHRlcm4hOiBSZWdFeHA7XHJcbiAgc3R5bGVzOiBzdHJpbmdbXVtdID0gW107XHJcblxyXG4gIG90cENvbmZpZzogTmd4T3RwSW5wdXRDb25maWcgPSB7XHJcbiAgICBvdHBMZW5ndGg6IDYsXHJcbiAgICBhdXRvZm9jdXM6IHRydWUsXHJcbiAgICBhdXRvYmx1cjogdHJ1ZSxcclxuICAgIGJlaGF2aW9yOiBOZ3hPdHBCZWhhdmlvci5ERUZBVUxULFxyXG4gICAgcGF0dGVybjogdGhpcy5kZWZhdWx0UGF0dGVybixcclxuICAgIGNsYXNzTGlzdDoge1xyXG4gICAgICBjb250YWluZXI6ICcnLFxyXG4gICAgICBpbnB1dEJveDogJycsXHJcbiAgICAgIGlucHV0OiAnJyxcclxuICAgICAgaW5wdXRGaWxsZWQ6ICcnLFxyXG4gICAgICBpbnB1dERpc2FibGVkOiAnJyxcclxuICAgICAgaW5wdXRTdWNjZXNzOiAnJyxcclxuICAgICAgaW5wdXRFcnJvcjogJycsXHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHNpemU6IElucHV0T3B0U2l6ZXNUeXBlcyA9ICdsYXJnZSc7XHJcbiAgQElucHV0KCkgcHVibGljIGN1c3RvbUNsYXNzZXMgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KCkgc2V0IGRpc2FibGUoaXNEaXNhYmxlZDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5oYW5kbGVEaXNhYmxlKGlzRGlzYWJsZWQpO1xyXG4gICAgdGhpcy5pc05neE90cEFycmF5RGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGNvbmZpZyhjOiBOZ3hPdHBJbnB1dENvbmZpZykge1xyXG4gICAgdGhpcy5vdHBDb25maWcgPSB7Li4udGhpcy5vdHBDb25maWcsIC4uLmN9O1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdD8uaW5wdXQpIHtcclxuICAgICAgdGhpcy5zZXRJbml0aWFsU3R5bGVzKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoIWMucGF0dGVybikge1xyXG4gICAgICB0aGlzLm90cENvbmZpZy5wYXR0ZXJuID0gdGhpcy5kZWZhdWx0UGF0dGVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBzdGF0dXMoc3RhdHVzOiBOZ3hPdHBTdGF0dXMpIHtcclxuICAgIHRoaXMuaGFuZGxlU3RhdHVzQ2hhbmdlKHN0YXR1cyk7XHJcbiAgfVxyXG5cclxuICBAVmlld0NoaWxkcmVuKCdvdHBJbnB1dEVsZW1lbnQnKSBvdHBJbnB1dEVsZW1lbnRzITogUXVlcnlMaXN0PEVsZW1lbnRSZWY+O1xyXG5cclxuICBAT3V0cHV0KCkgY2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcclxuICBAT3V0cHV0KCkgZmlsbENoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG90cFNlcnZpY2U6IElucHV0T3B0U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNldFVwT3RwRm9ybSgpO1xyXG4gICAgdGhpcy5zZXRVcEFyaWFMYWJlbHMoKTtcclxuICAgIHRoaXMuTEFTVF9JTlBVVF9JTkRFWCA9IHRoaXMub3RwQ29uZmlnLm90cExlbmd0aCAtIDE7XHJcbiAgICB0aGlzLm90cEZvcm1DaGFuZ2VMaXN0ZW5lcigpO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXROYXRpdmVIVE1MRWxlbWVudHMoKTtcclxuICAgIHRoaXMuc2V0SW5pdGlhbEZvY3VzKCk7XHJcbiAgICB0aGlzLnNldE51bWVyaWNJbnB1dElmUG9zc2libGUoKTtcclxuICAgIHRoaXMuaGFuZGxlRGlzYWJsZSh0aGlzLmlzTmd4T3RwQXJyYXlEaXNhYmxlZCk7XHJcbiAgICB0aGlzLmlzSW5pdCA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMubmd4T3RwQXJyYXkkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzSW52YWxpZE1lc3NhZ2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gISF0aGlzLmludmFsaWRNZXNzYWdlIHx8ICEhdGhpcy5pbnZhbGlkTWVzc2FnZT8ubGVuZ3RoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjaGVja1ZhbGlkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tJbnZhbGlkID09PSBmYWxzZSA/XHJcbiAgICAgICdtcngtaW5wdXQtY2hlY2tlZC1zdWNjZXNzJyA6XHJcbiAgICAgIHRoaXMuY2hlY2tJbnZhbGlkID09PSB0cnVlID8gJ21yeC1pbnB1dC1jaGVja2VkLWVycm9yJyA6ICcnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtJbnB1dE9wdFNpemVzRW51bVt0aGlzLnNpemVdfSAke3RoaXMuY3VzdG9tQ2xhc3Nlc31gO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldENvbnRhaW5lckNsYXNzZXMoKTogc3RyaW5nIHwgc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMub3RwQ29uZmlnPy5jbGFzc0xpc3Q/LmNvbnRhaW5lciB8fCAnJ1xyXG4gIH1cclxuXHJcbiAgZ2V0IGdldElucHV0Qm94Q2xhc3NlcygpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5vdHBDb25maWc/LmNsYXNzTGlzdD8uaW5wdXRCb3ggfHwgJydcclxuICB9XHJcblxyXG4gIGNvbnZlcnRUb0Zvcm1Db250cm9sKGFic0N0cmw6IEFic3RyYWN0Q29udHJvbCB8IG51bGwpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gYWJzQ3RybCBhcyBGb3JtQ29udHJvbDtcclxuICB9XHJcblxyXG4gIGNsZWFyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpIHtcclxuICAgICAgdGhpcy5yZW1vdmVTdHlsZUZyb21BbGwodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm5neE90cEFycmF5LnJlc2V0KCk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblxyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLmF1dG9mb2N1cykge1xyXG4gICAgICB0aGlzLnNldEZvY3VzKDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxlS2V5VXAoaW5kZXg6IG51bWJlciwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLnBhdHRlcm4udGVzdCh2YWx1ZSkgJiYgdmFsdWUgIT09ICdCYWNrc3BhY2UnKSB7XHJcbiAgICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKSB7XHJcbiAgICAgICAgdGhpcy5hZGRTdHlsZShpbmRleCwgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMubmd4T3RwQXJyYXkudmFsaWQpIHtcclxuICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sQnlJbmRleChpbmRleCkuc2V0VmFsdWUodmFsdWUsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgICAgdGhpcy5zdGVwRm9yd2FyZChpbmRleCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5ibHVyKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZURlbGV0ZShpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCkge1xyXG4gICAgICB0aGlzLnJlbW92ZVN0eWxlKGluZGV4LCB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgKHRoaXMub3RwQ29uZmlnLmJlaGF2aW9yID09PSBOZ3hPdHBCZWhhdmlvci5MRUdBQ1kgJiZcclxuICAgICAgICAhdGhpcy5mb2N1c2VkSW5wdXRIYXNWYWx1ZSkgfHxcclxuICAgICAgdGhpcy5vdHBDb25maWcuYmVoYXZpb3IgIT09IE5neE90cEJlaGF2aW9yLkxFR0FDWVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc3RlcEJhY2t3YXJkKGluZGV4KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9jdXNlZElucHV0SGFzVmFsdWUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZUZvY3VzKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIHRoaXMuZm9jdXNlZElucHV0SGFzVmFsdWUgPSAhIXRoaXMubmd4T3RwQXJyYXkuY29udHJvbHNbaW5kZXhdLnZhbHVlO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLm90cENvbmZpZy5iZWhhdmlvciA9PT0gTmd4T3RwQmVoYXZpb3IuTEVHQUNZICYmXHJcbiAgICAgIHRoaXMuZm9jdXNlZElucHV0SGFzVmFsdWVcclxuICAgICkge1xyXG4gICAgICB0aGlzLmlucHV0c1tpbmRleF0uc2VsZWN0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGVwQmFja3dhcmQoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4ID4gMCkge1xyXG4gICAgICB0aGlzLnNldEZvY3VzKGluZGV4IC0gMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGVwRm9yd2FyZChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggPCB0aGlzLkxBU1RfSU5QVVRfSU5ERVgpIHtcclxuICAgICAgdGhpcy5zZXRGb2N1cyhpbmRleCArIDEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBvdHBGb3JtQ2hhbmdlTGlzdGVuZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLm5neE90cEFycmF5JCA9IHRoaXMubmd4T3RwQXJyYXkudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsdWVzKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmlzSW5pdCkge1xyXG4gICAgICAgIHRoaXMuY2hhbmdlLmVtaXQodmFsdWVzKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMubmd4T3RwQXJyYXkudmFsaWQpIHtcclxuICAgICAgICAgIHRoaXMuZmlsbENoYW5nZS5lbWl0KHZhbHVlcy5qb2luKCcnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0VXBPdHBGb3JtKCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm90cENvbmZpZy5vdHBMZW5ndGg7IGkrKykge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIHRoaXMubmd4T3RwQXJyYXkucHVzaChuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVcEFyaWFMYWJlbHMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBsYWJlbHMgPSB0aGlzLm90cENvbmZpZy5hcmlhTGFiZWxzO1xyXG5cclxuICAgIHRoaXMuYXJpYUxhYmVscyA9IEFycmF5LmlzQXJyYXkobGFiZWxzKVxyXG4gICAgICA/IGxhYmVsc1xyXG4gICAgICA6IG5ldyBBcnJheSh0aGlzLm90cENvbmZpZy5vdHBMZW5ndGgpLmZpbGwoXHJcbiAgICAgICAgbGFiZWxzIHx8IHRoaXMuREVGQVVMVF9BUklBX0xBQkVMXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE5hdGl2ZUhUTUxFbGVtZW50cygpOiB2b2lkIHtcclxuICAgIHRoaXMuaW5wdXRzID0gdGhpcy5vdHBJbnB1dEVsZW1lbnRzLm1hcCgoZWxlbWVudCkgPT4gZWxlbWVudC5uYXRpdmVFbGVtZW50KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0SW5pdGlhbEZvY3VzKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLmF1dG9mb2N1cykge1xyXG4gICAgICB0aGlzLnNldEZvY3VzKDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRJbml0aWFsU3R5bGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLm90cFNlcnZpY2UuaW5pdDJEQXJyYXkodGhpcy5vdHBDb25maWcub3RwTGVuZ3RoKTtcclxuXHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dCkge1xyXG4gICAgICB0aGlzLmFkZFN0eWxlVG9BbGwodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0Rm9jdXMoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5pbnB1dHNbaW5kZXhdLmZvY3VzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldE51bWVyaWNJbnB1dElmUG9zc2libGUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5vdHBDb25maWcubnVtZXJpY0lucHV0TW9kZSkge1xyXG4gICAgICB0aGlzLm90cENvbmZpZy5wYXR0ZXJuID0gdGhpcy5kZWZhdWx0UGF0dGVybjtcclxuICAgICAgdGhpcy5pbnB1dHMubWFwKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2lucHV0bW9kZScsICdudW1lcmljJyk7XHJcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3BhdHRlcm4nLCAnWzAtOV0qJyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBibHVyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMub3RwQ29uZmlnLmF1dG9ibHVyKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRzLm1hcCgoaW5wdXQpID0+IGlucHV0LmJsdXIoKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVBhc3RlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgIGxldCBsYXN0SW5kZXggPSAwO1xyXG4gICAgICB2YWx1ZVxyXG4gICAgICAgIC5zcGxpdCgnJylcclxuICAgICAgICAuc2xpY2UoMCwgdGhpcy5vdHBDb25maWcub3RwTGVuZ3RoKVxyXG4gICAgICAgIC5tYXAoKGNoYXJhY3Rlcjogc3RyaW5nLCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmFkZFN0eWxlKGluZGV4LCB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRGaWxsZWQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5nZXRGb3JtQ29udHJvbEJ5SW5kZXgoaW5kZXgpLnNldFZhbHVlKGNoYXJhY3Rlcik7XHJcbiAgICAgICAgICBsYXN0SW5kZXggPSBpbmRleDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLm5neE90cEFycmF5LnZhbGlkKSB7XHJcbiAgICAgICAgdGhpcy5ibHVyKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXRGb2N1cyhsYXN0SW5kZXggKyAxKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVEaXNhYmxlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChpc0Rpc2FibGVkKSB7XHJcbiAgICAgIHRoaXMubmd4T3RwQXJyYXkuZGlzYWJsZSgpO1xyXG4gICAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dERpc2FibGVkKSB7XHJcbiAgICAgICAgdGhpcy5hZGRTdHlsZVRvQWxsKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dERpc2FibGVkKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5uZ3hPdHBBcnJheS5lbmFibGUoKTtcclxuICAgICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXREaXNhYmxlZCkge1xyXG4gICAgICAgIHRoaXMucmVtb3ZlU3R5bGVGcm9tQWxsKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dERpc2FibGVkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVTdGF0dXNDaGFuZ2Uoc3RhdHVzOiBOZ3hPdHBTdGF0dXMpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dFN1Y2Nlc3MgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RXJyb3IpKSB7XHJcbiAgICAgIHRoaXMucmVtb3ZlU3R5bGVGcm9tQWxsKFtcclxuICAgICAgICAuLi50aGlzLm90cFNlcnZpY2UudG9BcnJheShcclxuICAgICAgICAgIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dFN1Y2Nlc3NcclxuICAgICAgICApLFxyXG4gICAgICAgIC4uLnRoaXMub3RwU2VydmljZS50b0FycmF5KHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEVycm9yKSxcclxuICAgICAgXSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0YXR1cykge1xyXG4gICAgICBpZiAoc3RhdHVzID09PSAnc3VjY2VzcycpIHtcclxuICAgICAgICBpZiAodGhpcy5vdHBDb25maWcuY2xhc3NMaXN0ICYmIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dFN1Y2Nlc3MpIHtcclxuICAgICAgICAgIHRoaXMuYWRkU3R5bGVUb0FsbCh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRTdWNjZXNzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09PSAnZXJyb3InKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdCAmJiB0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QuaW5wdXRFcnJvcikge1xyXG4gICAgICAgICAgdGhpcy5hZGRTdHlsZVRvQWxsKHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEVycm9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0Rm9ybUNvbnRyb2xCeUluZGV4KGluZGV4OiBudW1iZXIpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5uZ3hPdHBBcnJheS5jb250cm9sc1tpbmRleF0gYXMgRm9ybUNvbnRyb2w7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFN0eWxlKGluZGV4OiBudW1iZXIsIHN0eWxlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5vdHBTZXJ2aWNlLmFkZEl0ZW1BdEluZGV4KFxyXG4gICAgICB0aGlzLnN0eWxlcyxcclxuICAgICAgaW5kZXgsXHJcbiAgICAgIHRoaXMub3RwU2VydmljZS50b0FycmF5KHN0eWxlcylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkZFN0eWxlVG9BbGwoc3R5bGVzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLm90cFNlcnZpY2UuYWRkSXRlbVRvQWxsKFxyXG4gICAgICB0aGlzLnN0eWxlcyxcclxuICAgICAgdGhpcy5vdHBTZXJ2aWNlLnRvQXJyYXkoc3R5bGVzKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlU3R5bGUoaW5kZXg6IG51bWJlciwgc3R5bGVzOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5zdHlsZXMgPSB0aGlzLm90cFNlcnZpY2UucmVtb3ZlSXRlbUF0SW5kZXgoXHJcbiAgICAgIHRoaXMuc3R5bGVzLFxyXG4gICAgICBpbmRleCxcclxuICAgICAgdGhpcy5vdHBTZXJ2aWNlLnRvQXJyYXkoc3R5bGVzKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVtb3ZlU3R5bGVGcm9tQWxsKHN0eWxlczogc3RyaW5nIHwgc3RyaW5nW10pOiB2b2lkIHtcclxuICAgIHRoaXMuc3R5bGVzID0gdGhpcy5vdHBTZXJ2aWNlLnJlbW92ZUl0ZW1Gcm9tQWxsKFxyXG4gICAgICB0aGlzLnN0eWxlcyxcclxuICAgICAgdGhpcy5vdHBTZXJ2aWNlLnRvQXJyYXkoc3R5bGVzKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2UgPSAodmFsdWU6IElucHV0VGV4dFZhbHVlVHlwZXMpID0+IHtcclxuICB9O1xyXG4gIHByaXZhdGUgb25Ub3VjaGVkID0gKCkgPT4ge1xyXG4gIH07XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4ge30pOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgd3JpdGVWYWx1ZShvdXRzaWRlVmFsdWU6IElucHV0VGV4dFZhbHVlVHlwZXMpIHtcclxuICAgIGlmIChvdXRzaWRlVmFsdWUpIHtcclxuICAgICAgbGV0IGxhc3RJbmRleCA9IDA7XHJcbiAgICAgIFN0cmluZyhvdXRzaWRlVmFsdWUpXHJcbiAgICAgICAgLnNwbGl0KCcnKVxyXG4gICAgICAgIC5zbGljZSgwLCB0aGlzLm90cENvbmZpZy5vdHBMZW5ndGgpXHJcbiAgICAgICAgLm1hcCgoY2hhcmFjdGVyOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLm90cENvbmZpZy5jbGFzc0xpc3QgJiYgdGhpcy5vdHBDb25maWcuY2xhc3NMaXN0LmlucHV0RmlsbGVkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYWRkU3R5bGUoaW5kZXgsIHRoaXMub3RwQ29uZmlnLmNsYXNzTGlzdC5pbnB1dEZpbGxlZCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmdldEZvcm1Db250cm9sQnlJbmRleChpbmRleCkuc2V0VmFsdWUoY2hhcmFjdGVyLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICAgICAgbGFzdEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5uZ3hPdHBBcnJheS52YWxpZCkge1xyXG4gICAgICAgIHRoaXMuYmx1cigpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0Rm9jdXMobGFzdEluZGV4ICsgMSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3Bhc3RlJywgWyckZXZlbnQnXSkgb25QYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICB0aGlzLmhhbmRsZVBhc3RlKGV2ZW50LmNsaXBib2FyZERhdGEuZ2V0RGF0YSgndGV4dCcpKTtcclxuICB9XHJcblxyXG4gIGdldElucHV0VHlwZSgpOiAndGV4dCcgfCAncGFzc3dvcmQnIHwgJ3RlbCcge1xyXG4gICAgcmV0dXJuIHRoaXMub3RwQ29uZmlnLmlzUGFzc3dvcmRJbnB1dCA/ICdwYXNzd29yZCcgOiB0aGlzLm90cENvbmZpZy5pc051bWJlcklucHV0ID8gJ3RlbCcgOiAndGV4dCc7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtXHJcbiAgW25nQ2xhc3NdPVwiZ2V0Q29udGFpbmVyQ2xhc3Nlc1wiXHJcbiAgY2xhc3M9XCJtcngtaW5wdXQtb3RwLWNvbnRhaW5lclwiXHJcbiAgW2NsYXNzXT1cImdldENsYXNzZXNcIlxyXG4+XHJcbiAgPGRpdlxyXG4gICAgKm5nRm9yPVwibGV0IGNvbnRyb2wgb2Ygbmd4T3RwQXJyYXkuY29udHJvbHM7IGxldCBpID0gaW5kZXhcIlxyXG4gICAgW25nQ2xhc3NdPVwiZ2V0SW5wdXRCb3hDbGFzc2VzXCJcclxuICAgIFtjbGFzcy5tcngtaW5wdXQtZXJyb3JdPVwiaW52YWxpZFwiXHJcbiAgICBbY2xhc3NdPVwiY2hlY2tWYWxpZENsYXNzZXNcIlxyXG4gICAgY2xhc3M9XCJtcngtaW5wdXQtb3RwLWJveFwiXHJcbiAgPlxyXG4gICAgPGxhYmVsIFthdHRyLmFyaWEtbGFiZWxdPVwiYXJpYUxhYmVsc1tpXVwiPlxyXG4gICAgICA8aW5wdXRcclxuICAgICAgICAjb3RwSW5wdXRFbGVtZW50XHJcbiAgICAgICAgW2lkXT1cIidtcngtaW5wdXQtb3RwLScgKyBpXCJcclxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udmVydFRvRm9ybUNvbnRyb2woY29udHJvbClcIlxyXG4gICAgICAgIFttcnhPcHRQYXR0ZXJuXT1cIm90cENvbmZpZy5wYXR0ZXJuXCJcclxuICAgICAgICBbdHlwZV09XCJnZXRJbnB1dFR5cGUoKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwic3R5bGVzW2ldXCJcclxuICAgICAgICAoa2V5dXApPVwiaGFuZGxlS2V5VXAoaSwgJGV2ZW50LmtleSlcIlxyXG4gICAgICAgIChrZXl1cC5iYWNrc3BhY2UpPVwiaGFuZGxlRGVsZXRlKGkpXCJcclxuICAgICAgICAoa2V5dXAuYXJyb3dMZWZ0KT1cInN0ZXBCYWNrd2FyZChpKVwiXHJcbiAgICAgICAgKGtleXVwLmFycm93UmlnaHQpPVwic3RlcEZvcndhcmQoaSlcIlxyXG4gICAgICAgIChmb2N1cyk9XCJoYW5kbGVGb2N1cyhpKVwiXHJcbiAgICAgICAgY2xhc3M9XCJtcngtaW5wdXQtb3RwXCJcclxuICAgICAgICBtYXhsZW5ndGg9XCIxXCJcclxuICAgICAgICBhdXRvY2FwaXRhbGl6ZT1cIm9mZlwiXHJcbiAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgLz5cclxuICAgIDwvbGFiZWw+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuXHJcbjxtcngtZXJyb3ItbWVzc2FnZVxyXG4gICpuZ0lmPVwiaW52YWxpZCAmJiBpc0ludmFsaWRNZXNzYWdlXCJcclxuICBjdXN0b21DbGFzc2VzPVwidGV4dC1sZWZ0XCJcclxuICBbaW52YWxpZE1lc3NhZ2VdPVwiaW52YWxpZE1lc3NhZ2VcIlxyXG4+PC9tcngtZXJyb3ItbWVzc2FnZT5cclxuIl19
@@ -23,7 +23,7 @@ export class InputPasswordComponent {
23
23
  changed = new EventEmitter();
24
24
  constructor() { }
25
25
  get isInvalidMessage() {
26
- return !!this.invalidMessage || !!this.invalidMessage.length;
26
+ return !!this.invalidMessage || !!this.invalidMessage?.length;
27
27
  }
28
28
  get isValid() {
29
29
  return this.baseValidate();
@@ -115,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
115
115
  }], changed: [{
116
116
  type: Output
117
117
  }] } });
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtcGFzc3dvcmQvaW5wdXQtcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtcGFzc3dvcmQvaW5wdXQtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFnQixLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsc0JBQXNCLEVBR3ZCLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQWMvQixNQUFNLE9BQU8sc0JBQXNCO0lBQzFCLEtBQUssR0FBNEIsRUFBRSxDQUFDO0lBQ3BDLGNBQWMsR0FBRyxLQUFLLENBQUE7SUFFYixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixjQUFjLEdBQXNCLEVBQUUsQ0FBQztJQUN2QyxZQUFZLEdBQXdCLElBQUksQ0FBQztJQUN6QyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksR0FBNEIsT0FBTyxDQUFDO0lBRXZDLE9BQU8sR0FBMEMsSUFBSSxZQUFZLEVBQTJCLENBQUM7SUFF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QixhQUduQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzs0QkFDckQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0RBTWUsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVXLE9BQU87c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBJbnB1dFBhc3N3b3JkU2l6ZXNFbnVtLFxyXG4gIElucHV0UGFzc3dvcmRTaXplc1R5cGVzLFxyXG4gIElucHV0UGFzc3dvcmRWYWx1ZVR5cGVzXHJcbn0gZnJvbSAnLi9pbnB1dC1wYXNzd29yZC5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWlucHV0LXBhc3N3b3JkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LXBhc3N3b3JkLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dFBhc3N3b3JkQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFBhc3N3b3JkQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIHB1YmxpYyB2YWx1ZTogSW5wdXRQYXNzd29yZFZhbHVlVHlwZXMgPSAnJztcclxuICBwdWJsaWMgaXNTaG93UGFzc3dvcmQgPSBmYWxzZVxyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbWF4bGVuZ3RoID0gMDtcclxuICBASW5wdXQoKSBwdWJsaWMgbWlubGVuZ3RoID0gMDtcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzaXplOiBJbnB1dFBhc3N3b3JkU2l6ZXNUeXBlcyA9ICdsYXJnZSc7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZDogRXZlbnRFbWl0dGVyPElucHV0UGFzc3dvcmRWYWx1ZVR5cGVzPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXRQYXNzd29yZFZhbHVlVHlwZXM+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNJbnZhbGlkTWVzc2FnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuaW52YWxpZE1lc3NhZ2UgfHwgISF0aGlzLmludmFsaWRNZXNzYWdlLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNWYWxpZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmJhc2VWYWxpZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBpc1ZlcmlmaWVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgIXRoaXMucmVxdWlyZWQgfHxcclxuICAgICAgKHRoaXMucmVxdWlyZWQgJiYgdGhpcy52YWx1ZSAhPSBudWxsICYmIHRoaXMudmFsdWUgIT09ICcnICYmIHRoaXMuaXNWYWxpZClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IHJlYWRvbmx5Q2xhc3MoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJlYWRvbmx5ID8gJ21yeC1pbnB1dF9fcmVhZG9ubHknIDogJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID9cclxuICAgICAgJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDpcclxuICAgICAgdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJydcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0Q2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGAke0lucHV0UGFzc3dvcmRTaXplc0VudW1bdGhpcy5zaXplXX0gJHt0aGlzLmN1c3RvbUNsYXNzZXN9ICR7dGhpcy5yZWFkb25seUNsYXNzfSAke3RoaXMuY2hlY2tWYWxpZENsYXNzZXN9YDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBiYXNlVmFsaWRhdGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5taW5sZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+PSB0aGlzLm1pbmxlbmd0aDtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZVNob3coKTogdm9pZCB7XHJcbiAgICB0aGlzLmlzU2hvd1Bhc3N3b3JkID0gIXRoaXMuaXNTaG93UGFzc3dvcmRcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb25DaGFuZ2UgPSAodmFsdWU6IElucHV0UGFzc3dvcmRWYWx1ZVR5cGVzKSA9PiB7fTtcclxuICBwcml2YXRlIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHdyaXRlVmFsdWUob3V0c2lkZVZhbHVlOiBJbnB1dFBhc3N3b3JkVmFsdWVUeXBlcykge1xyXG4gICAgdGhpcy52YWx1ZSA9IG91dHNpZGVWYWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZVZhbHVlKGluc2lkZVZhbHVlOiBJbnB1dFBhc3N3b3JkVmFsdWVUeXBlcykge1xyXG4gICAgdGhpcy52YWx1ZSA9IGluc2lkZVZhbHVlO1xyXG4gICAgdGhpcy5jaGFuZ2VkLmVtaXQoaW5zaWRlVmFsdWUpO1xyXG4gICAgdGhpcy5vbkNoYW5nZShpbnNpZGVWYWx1ZSk7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgY2xhc3M9XCJtcngtaW5wdXQtcGFzc3dvcmRcIlxyXG4gIFtjbGFzc109XCJnZXRDbGFzc2VzXCJcclxuICBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImludmFsaWRcIj5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXBhc3N3b3JkX193cmFwcGVyXCI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgYXV0b2NvbXBsZXRlPVwibm9wZVwiXHJcbiAgICAgICNpbnB1dEVsZW1lbnRcclxuICAgICAgW3R5cGVdPVwiaXNTaG93UGFzc3dvcmQgPyAndGV4dCcgOiAncGFzc3dvcmQnXCJcclxuICAgICAgW25nTW9kZWxdPVwidmFsdWVcIlxyXG4gICAgICAobmdNb2RlbENoYW5nZSk9XCJ1cGRhdGVWYWx1ZSgkZXZlbnQpXCJcclxuICAgICAgW2F0dHIudGl0bGVdPVwicGxhY2Vob2xkZXIgfHwgJydcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICBbcmVhZE9ubHldPVwicmVhZG9ubHlcIlxyXG4gICAgICBbYXR0ci5taW5sZW5ndGhdPVwibWlubGVuZ3RoID4gMCA/IG1pbmxlbmd0aCA6IG51bGxcIlxyXG4gICAgICBbYXR0ci5tYXhsZW5ndGhdPVwibWF4bGVuZ3RoID4gMCA/IG1heGxlbmd0aCA6IG51bGxcIlxyXG4gICAgICBbYXR0ci5wbGFjZWhvbGRlcl09XCIhZGlzYWJsZWQgJiYgcGxhY2Vob2xkZXIgPyBwbGFjZWhvbGRlciA6ICcnXCJcclxuICAgIC8+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1wYXNzd29yZF9faWNvbnNcIj5cclxuICAgICAgPHNwYW5cclxuICAgICAgICBjbGFzcz1cIm1yeC1pY29uXCJcclxuICAgICAgICBbY2xhc3NdPVwiaXNTaG93UGFzc3dvcmQgPyAnaWNvbi1oaWRlJyA6ICdpY29uLXZpZXcnXCJcclxuICAgICAgICBbY2xhc3MuaWNvbi1mb250LTE2XT1cInNpemUgPT09ICdzbWFsbCcgfHwgc2l6ZSA9PT0gJ21lZGl1bSdcIlxyXG4gICAgICAgIFtjbGFzcy5pY29uLWZvbnQtMjRdPVwic2l6ZSA9PT0gJ2xhcmdlJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNob3coKVwiXHJcbiAgICAgID48L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bXJ4LWNoYXJzLWxlZnRcclxuICAgICAgKm5nSWY9XCIhZGlzYWJsZWQgJiYgbWF4bGVuZ3RoXCJcclxuICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgW21heGxlbmd0aF09XCJtYXhsZW5ndGhcIj5cclxuICAgIDwvbXJ4LWNoYXJzLWxlZnQ+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtcngtZXJyb3ItbWVzc2FnZVxyXG4gICAgKm5nSWY9XCIoIWlzVmFsaWQgfHwgaW52YWxpZCkgJiYgaXNJbnZhbGlkTWVzc2FnZVwiXHJcbiAgICBbaW52YWxpZE1lc3NhZ2VdPVwiaW52YWxpZE1lc3NhZ2VcIlxyXG4gID48L21yeC1lcnJvci1tZXNzYWdlPlxyXG48L2Rpdj5cclxuIl19
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGFzc3dvcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtcGFzc3dvcmQvaW5wdXQtcGFzc3dvcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtcGFzc3dvcmQvaW5wdXQtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFnQixLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pHLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQ0wsc0JBQXNCLEVBR3ZCLE1BQU0sdUJBQXVCLENBQUM7Ozs7OztBQWMvQixNQUFNLE9BQU8sc0JBQXNCO0lBQzFCLEtBQUssR0FBNEIsRUFBRSxDQUFDO0lBQ3BDLGNBQWMsR0FBRyxLQUFLLENBQUE7SUFFYixRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsU0FBUyxHQUFHLENBQUMsQ0FBQztJQUNkLFdBQVcsR0FBRyxFQUFFLENBQUM7SUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixjQUFjLEdBQXNCLEVBQUUsQ0FBQztJQUN2QyxZQUFZLEdBQXdCLElBQUksQ0FBQztJQUN6QyxhQUFhLEdBQUcsRUFBRSxDQUFDO0lBQ25CLElBQUksR0FBNEIsT0FBTyxDQUFDO0lBRXZDLE9BQU8sR0FBMEMsSUFBSSxZQUFZLEVBQTJCLENBQUM7SUFF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QixhQUduQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzs0QkFDckQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0RBTWUsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFdBQVc7c0JBQTFCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFDVSxjQUFjO3NCQUE3QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ1UsYUFBYTtzQkFBNUIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUVXLE9BQU87c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgZm9yd2FyZFJlZiwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHtcclxuICBJbnB1dFBhc3N3b3JkU2l6ZXNFbnVtLFxyXG4gIElucHV0UGFzc3dvcmRTaXplc1R5cGVzLFxyXG4gIElucHV0UGFzc3dvcmRWYWx1ZVR5cGVzXHJcbn0gZnJvbSAnLi9pbnB1dC1wYXNzd29yZC5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWlucHV0LXBhc3N3b3JkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtcGFzc3dvcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LXBhc3N3b3JkLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBJbnB1dFBhc3N3b3JkQ29tcG9uZW50KSxcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbnB1dFBhc3N3b3JkQ29tcG9uZW50IGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG4gIHB1YmxpYyB2YWx1ZTogSW5wdXRQYXNzd29yZFZhbHVlVHlwZXMgPSAnJztcclxuICBwdWJsaWMgaXNTaG93UGFzc3dvcmQgPSBmYWxzZVxyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHkgPSBmYWxzZTtcclxuICBASW5wdXQoKSBwdWJsaWMgbWF4bGVuZ3RoID0gMDtcclxuICBASW5wdXQoKSBwdWJsaWMgbWlubGVuZ3RoID0gMDtcclxuICBASW5wdXQoKSBwdWJsaWMgcGxhY2Vob2xkZXIgPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuICBASW5wdXQoKSBwdWJsaWMgY3VzdG9tQ2xhc3NlcyA9ICcnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzaXplOiBJbnB1dFBhc3N3b3JkU2l6ZXNUeXBlcyA9ICdsYXJnZSc7XHJcblxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlZDogRXZlbnRFbWl0dGVyPElucHV0UGFzc3dvcmRWYWx1ZVR5cGVzPiA9IG5ldyBFdmVudEVtaXR0ZXI8SW5wdXRQYXNzd29yZFZhbHVlVHlwZXM+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNJbnZhbGlkTWVzc2FnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuaW52YWxpZE1lc3NhZ2UgfHwgISF0aGlzLmludmFsaWRNZXNzYWdlPy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYXNlVmFsaWRhdGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNWZXJpZmllZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICF0aGlzLnJlcXVpcmVkIHx8XHJcbiAgICAgICh0aGlzLnJlcXVpcmVkICYmIHRoaXMudmFsdWUgIT0gbnVsbCAmJiB0aGlzLnZhbHVlICE9PSAnJyAmJiB0aGlzLmlzVmFsaWQpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCByZWFkb25seUNsYXNzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSA/ICdtcngtaW5wdXRfX3JlYWRvbmx5JyA6ICcnO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBjaGVja1ZhbGlkQ2xhc3NlcygpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hlY2tJbnZhbGlkID09PSBmYWxzZSA/XHJcbiAgICAgICdtcngtaW5wdXQtY2hlY2tlZC1zdWNjZXNzJyA6XHJcbiAgICAgIHRoaXMuY2hlY2tJbnZhbGlkID09PSB0cnVlID8gJ21yeC1pbnB1dC1jaGVja2VkLWVycm9yJyA6ICcnXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtJbnB1dFBhc3N3b3JkU2l6ZXNFbnVtW3RoaXMuc2l6ZV19ICR7dGhpcy5jdXN0b21DbGFzc2VzfSAke3RoaXMucmVhZG9ubHlDbGFzc30gJHt0aGlzLmNoZWNrVmFsaWRDbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYmFzZVZhbGlkYXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMubWlubGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiAhIXRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPj0gdGhpcy5taW5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0b2dnbGVTaG93KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc1Nob3dQYXNzd29yZCA9ICF0aGlzLmlzU2hvd1Bhc3N3b3JkXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG9uQ2hhbmdlID0gKHZhbHVlOiBJbnB1dFBhc3N3b3JkVmFsdWVUeXBlcykgPT4ge307XHJcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7fTtcclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xyXG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB3cml0ZVZhbHVlKG91dHNpZGVWYWx1ZTogSW5wdXRQYXNzd29yZFZhbHVlVHlwZXMpIHtcclxuICAgIHRoaXMudmFsdWUgPSBvdXRzaWRlVmFsdWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVWYWx1ZShpbnNpZGVWYWx1ZTogSW5wdXRQYXNzd29yZFZhbHVlVHlwZXMpIHtcclxuICAgIHRoaXMudmFsdWUgPSBpbnNpZGVWYWx1ZTtcclxuICAgIHRoaXMuY2hhbmdlZC5lbWl0KGluc2lkZVZhbHVlKTtcclxuICAgIHRoaXMub25DaGFuZ2UoaW5zaWRlVmFsdWUpO1xyXG4gICAgdGhpcy5vblRvdWNoZWQoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdlxyXG4gIGNsYXNzPVwibXJ4LWlucHV0LXBhc3N3b3JkXCJcclxuICBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiXHJcbiAgW2NsYXNzLm1yeC1pbnB1dC1lcnJvcl09XCJpbnZhbGlkXCI+XHJcbiAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1wYXNzd29yZF9fd3JhcHBlclwiPlxyXG4gICAgPGlucHV0XHJcbiAgICAgIGF1dG9jb21wbGV0ZT1cIm5vcGVcIlxyXG4gICAgICAjaW5wdXRFbGVtZW50XHJcbiAgICAgIFt0eXBlXT1cImlzU2hvd1Bhc3N3b3JkID8gJ3RleHQnIDogJ3Bhc3N3b3JkJ1wiXHJcbiAgICAgIFtuZ01vZGVsXT1cInZhbHVlXCJcclxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwidXBkYXRlVmFsdWUoJGV2ZW50KVwiXHJcbiAgICAgIFthdHRyLnRpdGxlXT1cInBsYWNlaG9sZGVyIHx8ICcnXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgW3JlYWRPbmx5XT1cInJlYWRvbmx5XCJcclxuICAgICAgW2F0dHIubWlubGVuZ3RoXT1cIm1pbmxlbmd0aCA+IDAgPyBtaW5sZW5ndGggOiBudWxsXCJcclxuICAgICAgW2F0dHIubWF4bGVuZ3RoXT1cIm1heGxlbmd0aCA+IDAgPyBtYXhsZW5ndGggOiBudWxsXCJcclxuICAgICAgW2F0dHIucGxhY2Vob2xkZXJdPVwiIWRpc2FibGVkICYmIHBsYWNlaG9sZGVyID8gcGxhY2Vob2xkZXIgOiAnJ1wiXHJcbiAgICAvPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtcGFzc3dvcmRfX2ljb25zXCI+XHJcbiAgICAgIDxzcGFuXHJcbiAgICAgICAgY2xhc3M9XCJtcngtaWNvblwiXHJcbiAgICAgICAgW2NsYXNzXT1cImlzU2hvd1Bhc3N3b3JkID8gJ2ljb24taGlkZScgOiAnaWNvbi12aWV3J1wiXHJcbiAgICAgICAgW2NsYXNzLmljb24tZm9udC0xNl09XCJzaXplID09PSAnc21hbGwnIHx8IHNpemUgPT09ICdtZWRpdW0nXCJcclxuICAgICAgICBbY2xhc3MuaWNvbi1mb250LTI0XT1cInNpemUgPT09ICdsYXJnZSdcIlxyXG4gICAgICAgIChjbGljayk9XCJ0b2dnbGVTaG93KClcIlxyXG4gICAgICA+PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPG1yeC1jaGFycy1sZWZ0XHJcbiAgICAgICpuZ0lmPVwiIWRpc2FibGVkICYmIG1heGxlbmd0aFwiXHJcbiAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgIFttYXhsZW5ndGhdPVwibWF4bGVuZ3RoXCI+XHJcbiAgICA8L21yeC1jaGFycy1sZWZ0PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8bXJ4LWVycm9yLW1lc3NhZ2VcclxuICAgICpuZ0lmPVwiKCFpc1ZhbGlkIHx8IGludmFsaWQpICYmIGlzSW52YWxpZE1lc3NhZ2VcIlxyXG4gICAgW2ludmFsaWRNZXNzYWdlXT1cImludmFsaWRNZXNzYWdlXCJcclxuICA+PC9tcngtZXJyb3ItbWVzc2FnZT5cclxuPC9kaXY+XHJcbiJdfQ==
@@ -100,7 +100,7 @@ export class InputPhoneComponent {
100
100
  return this.baseValidate();
101
101
  }
102
102
  get isInvalidMessage() {
103
- return !!this.invalidMessage || !!this.invalidMessage.length;
103
+ return !!this.invalidMessage || !!this.invalidMessage?.length;
104
104
  }
105
105
  get checkValidClasses() {
106
106
  return this.checkInvalid === false ?
@@ -676,4 +676,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImpo
676
676
  type: ViewChild,
677
677
  args: ['phoneInput']
678
678
  }] } });
679
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtcGhvbmUvaW5wdXQtcGhvbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtcGhvbmUvaW5wdXQtcGhvbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBd0IsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXRELE9BQU8sS0FBSyxHQUFHLE1BQU0sdUJBQXVCLENBQUM7QUFFN0MsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUNMLG1CQUFtQixFQUlwQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxRQUFRLEVBQVMsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFzQnBELE1BQU0sT0FB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QU07Z0JBQ1UsV0FBVztzQkFBM0IsTUFBTTtnQkFzQm1CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDQyxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvdW50cnlDb2RlIH0gZnJvbSAnLi9kYXRhL2NvdW50cnktY29kZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgcGhvbmVOdW1iZXJWYWxpZGF0b3IgfSBmcm9tICcuL2lucHV0LXBob25lLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IFBob25lTnVtYmVyRm9ybWF0IH0gZnJvbSAnLi9lbnVtcy9waG9uZS1udW1iZXItZm9ybWF0LmVudW0nO1xyXG5pbXBvcnQgeyBTZWFyY2hDb3VudHJ5RmllbGQgfSBmcm9tICcuL2VudW1zL3NlYXJjaC1jb3VudHJ5LWZpZWxkLmVudW0nO1xyXG5pbXBvcnQgeyBDb3VudHJ5SVNPIH0gZnJvbSAnLi9lbnVtcy9jb3VudHJ5LWlzby5lbnVtJztcclxuaW1wb3J0IHsgQ291bnRyeSB9IGZyb20gJy4vbW9kZWxzL2NvdW50cnkubW9kZWwnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEYXRhIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NoYW5nZS1kYXRhJztcclxuXHJcbmltcG9ydCAqIGFzIGxwbiBmcm9tICdnb29nbGUtbGlicGhvbmVudW1iZXInO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXJ4LWF1dG9zYXZlL21yeC1hdXRvc2F2ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBJbnB1dFBob25lU2l6ZXNFbnVtLFxyXG4gIElucHV0UGhvbmVTaXplc1R5cGVzLFxyXG4gIElucHV0UGhvbmVWYWx1ZVR5cGVzLFxyXG4gIElucHV0UGhvbmVWYWx1ZVdpdGhJZFxyXG59IGZyb20gJy4vZW51bXMvaW5wdXQtcGhvbmUuZW51bSc7XHJcbmltcG9ydCB7IE1hc2tDb2RlLCBNYXNrSSB9IGZyb20gJy4vZW51bXMvbWFzay5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWlucHV0LXBob25lJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtcGhvbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LXBob25lLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBDb3VudHJ5Q29kZSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0UGhvbmVDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIHVzZVZhbHVlOiBwaG9uZU51bWJlclZhbGlkYXRvcixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRQaG9uZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgcHVibGljIGlubmVyTWFzayA9ICcnXHJcbiAgcHVibGljIGlubmVyTWFza1ByZWZpeCA9ICcnXHJcbiAgLy8gU0FWRSBTVEFURVxyXG4gIHB1YmxpYyB1dWlkOiBzdHJpbmcgPSB1dWlkdjQoKVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgdmFsdWU6IElucHV0UGhvbmVWYWx1ZVR5cGVzID0gJyc7XHJcbiAgQElucHV0KCkgcHJlZmVycmVkQ291bnRyaWVzOiBBcnJheTxzdHJpbmc+ID0gW107XHJcbiAgQElucHV0KCkgZW5hYmxlUGxhY2Vob2xkZXIgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGN1c3RvbVBsYWNlaG9sZGVyITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG51bWJlckZvcm1hdDogUGhvbmVOdW1iZXJGb3JtYXQgPSBQaG9uZU51bWJlckZvcm1hdC5JbnRlcm5hdGlvbmFsO1xyXG4gIEBJbnB1dCgpIGNzc0NsYXNzID0gJ2Zvcm0tY29udHJvbCc7XHJcbiAgQElucHV0KCkgb25seUNvdW50cmllczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIEBJbnB1dCgpIGVuYWJsZUF1dG9Db3VudHJ5U2VsZWN0ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWFyY2hDb3VudHJ5RmxhZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlYXJjaENvdW50cnlGaWVsZDogU2VhcmNoQ291bnRyeUZpZWxkW10gPSBbU2VhcmNoQ291bnRyeUZpZWxkLkFsbF07XHJcbiAgQElucHV0KCkgc2VhcmNoQ291bnRyeVBsYWNlaG9sZGVyID0gJ1NlYXJjaCBDb3VudHJ5JztcclxuICBASW5wdXQoKSBtYXhMZW5ndGghOiBudW1iZXI7XHJcbiAgQElucHV0KCkgbWluTGVuZ3RoITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNlbGVjdEZpcnN0Q291bnRyeSA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRDb3VudHJ5SVNPOiBhbnkgPSBDb3VudHJ5SVNPLlJ1c3NpYTtcclxuICBASW5wdXQoKSBwaG9uZVZhbGlkYXRpb24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGlucHV0SWQgPSAncGhvbmUnO1xyXG4gIEBJbnB1dCgpIHNlcGFyYXRlRGlhbENvZGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzc2VzID0gJyc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaXplOiBJbnB1dFBob25lU2l6ZXNUeXBlcyA9ICdsYXJnZSc7XHJcblxyXG4gIC8vIE1BU0tcclxuICBASW5wdXQoKSBhdXRvTWFzayA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1hc2sgPSAnJztcclxuICBASW5wdXQoKSBtYXNrUHJlZml4ID0gJyc7XHJcbiAgQElucHV0KCkgc2hvd01hc2tUeXBlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1hc2tEcm9wU3BlY2lhbENoYXJhY3RlcnM6IGJvb2xlYW4gfCBzdHJpbmdbXSA9IHRydWU7XHJcblxyXG4gIC8vIFZBTElEQVRJT05cclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgc2VwYXJhdGVEaWFsQ29kZUNsYXNzITogc3RyaW5nO1xyXG5cclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgY291bnRyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q291bnRyeT4oKTtcclxuICBAT3V0cHV0KCkgbnVtYmVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDaGFuZ2VEYXRhIHwgbnVsbD4oKVxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dFBob25lVmFsdWVXaXRoSWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJbnB1dFBob25lVmFsdWVXaXRoSWQ+KCk7XHJcblxyXG4gIHNlbGVjdGVkQ291bnRyeTogQ291bnRyeSA9IHtcclxuICAgIGFyZWFDb2RlczogdW5kZWZpbmVkLFxyXG4gICAgZGlhbENvZGU6ICcnLFxyXG4gICAgaHRtbElkOiAnJyxcclxuICAgIGZsYWdDbGFzczogJycsXHJcbiAgICBpc28yOiAnJyxcclxuICAgIG5hbWU6ICcnLFxyXG4gICAgcGxhY2VIb2xkZXI6ICcnLFxyXG4gICAgcHJpb3JpdHk6IDAsXHJcbiAgfTtcclxuXHJcbiAgcGhvbmVOdW1iZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG4gIGFsbENvdW50cmllczogQXJyYXk8Q291bnRyeT4gPSBbXTtcclxuICBwcmVmZXJyZWRDb3VudHJpZXNJbkRyb3BEb3duOiBBcnJheTxDb3VudHJ5PiA9IFtdO1xyXG4gIC8vIEhhcyB0byBiZSAnYW55JyB0byBwcmV2ZW50IGEgbmVlZCB0byBpbnN0YWxsIEB0eXBlcy9nb29nbGUtbGlicGhvbmVudW1iZXIgYnkgdGhlIHBhY2thZ2UgdXNlci4uLlxyXG4gIHBob25lVXRpbDogYW55ID0gbHBuLlBob25lTnVtYmVyVXRpbC5nZXRJbnN0YW5jZSgpO1xyXG5cclxuICBlcnJvcnM6IEFycmF5PGFueT4gPSBbJ1Bob25lIG51bWJlciBpcyByZXF1aXJlZC4nXTtcclxuICBjb3VudHJ5U2VhcmNoVGV4dCA9ICcnO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb3VudHJ5TGlzdCcpIGNvdW50cnlMaXN0ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdwaG9uZUlucHV0JykgcGhvbmVJbnB1dCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG9uVG91Y2hlZCA9ICgpID0+IHtcclxuICB9O1xyXG4gIC8vIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBDaGFuZ2VEYXRhKSA9PiB7fTtcclxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogc3RyaW5nKSA9PiB7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb3VudHJ5Q29kZURhdGE6IENvdW50cnlDb2RlLCBwcml2YXRlIHNhbml0aXphdGlvbjogRG9tU2FuaXRpemVyKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXRQaG9uZVNpemVzRW51bVt0aGlzLnNpemVdfSAke3RoaXMuY3VzdG9tQ2xhc3Nlc30gJHt0aGlzLmNoZWNrVmFsaWRDbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYXNlVmFsaWRhdGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNJbnZhbGlkTWVzc2FnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuaW52YWxpZE1lc3NhZ2UgfHwgISF0aGlzLmludmFsaWRNZXNzYWdlLmxlbmd0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgY2hlY2tWYWxpZENsYXNzZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNoZWNrSW52YWxpZCA9PT0gZmFsc2UgP1xyXG4gICAgICAnbXJ4LWlucHV0LWNoZWNrZWQtc3VjY2VzcycgOlxyXG4gICAgICB0aGlzLmNoZWNrSW52YWxpZCA9PT0gdHJ1ZSA/ICdtcngtaW5wdXQtY2hlY2tlZC1lcnJvcicgOiAnJ1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBzZWxlY3RlZE1hc2soKTogTWFza0kge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0QXV0b01hc2tPYmplY3RcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZ2V0QXV0b01hc2tPYmplY3QoKTogTWFza0kge1xyXG4gICAgaWYgKHRoaXMuYXV0b01hc2sgJiYgdGhpcy5zZWxlY3RlZENvdW50cnkubWFzaykge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZENvdW50cnkubWFza1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHttYXNrOiB0aGlzLm1hc2ssIG1hc2tQcmVmaXg6IHRoaXMubWFza1ByZWZpeH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBiYXNlVmFsaWRhdGUoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5taW5MZW5ndGgpIHtcclxuICAgICAgcmV0dXJuICEhdGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+PSB0aGlzLm1pbkxlbmd0aDtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRJU08gPSBjaGFuZ2VzWydzZWxlY3RlZENvdW50cnlJU08nXTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5hbGxDb3VudHJpZXMgJiZcclxuICAgICAgc2VsZWN0ZWRJU08gJiZcclxuICAgICAgc2VsZWN0ZWRJU08uY3VycmVudFZhbHVlICE9PSBzZWxlY3RlZElTTy5wcmV2aW91c1ZhbHVlXHJcbiAgICApIHtcclxuICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZENvdW50cnkoKTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzWydwcmVmZXJyZWRDb3VudHJpZXMnXSkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVByZWZlcnJlZENvdW50cmllcygpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jaGVja1NlcGFyYXRlRGlhbENvZGVTdHlsZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2FmZVVybChmaWxlUHJldmlld1VybDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zYW5pdGl6YXRpb24uYnlwYXNzU2VjdXJpdHlUcnVzdFN0eWxlKCd1cmwoXFwnJyArIGZpbGVQcmV2aWV3VXJsICsgJ1xcJyknKTtcclxuICB9XHJcblxyXG4gIC8qXHJcbiAgICBUaGlzIGlzIGEgd3JhcHBlciBtZXRob2QgdG8gYXZvaWQgY2FsbGluZyB0aGlzLm5nT25Jbml0KCkgaW4gd3JpdGVWYWx1ZSgpLlxyXG4gICAgUmVmOiBodHRwOi8vY29kZWx5emVyLmNvbS9ydWxlcy9uby1saWZlLWN5Y2xlLWNhbGwvXHJcbiAgKi9cclxuICBpbml0KCkge1xyXG4gICAgdGhpcy5mZXRjaENvdW50cnlEYXRhKCk7XHJcblxyXG4gICAgaWYgKHRoaXMucHJlZmVycmVkQ291bnRyaWVzLmxlbmd0aCkge1xyXG4gICAgICB0aGlzLnVwZGF0ZVByZWZlcnJlZENvdW50cmllcygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMub25seUNvdW50cmllcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5hbGxDb3VudHJpZXMgPSB0aGlzLmFsbENvdW50cmllcy5maWx0ZXIoKGMpID0+XHJcbiAgICAgICAgdGhpcy5vbmx5Q291bnRyaWVzLmluY2x1ZGVzKGMuaXNvMilcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdEZpcnN0Q291bnRyeSkge1xyXG4gICAgICBpZiAodGhpcy5wcmVmZXJyZWRDb3VudHJpZXNJbkRyb3BEb3duLmxlbmd0aCkge1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDb3VudHJ5KHRoaXMucHJlZmVycmVkQ291bnRyaWVzSW5Ecm9wRG93blswXSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZENvdW50cnkodGhpcy5hbGxDb3VudHJpZXNbMF0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkQ291bnRyeSgpO1xyXG4gICAgdGhpcy5jaGVja1NlcGFyYXRlRGlhbENvZGVTdHlsZSgpO1xyXG4gICAgdGhpcy5fdXBkYXRlTWFzaygpXHJcbiAgfVxyXG5cclxuICBzZXRTZWxlY3RlZENvdW50cnkoY291bnRyeTogQ291bnRyeSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBjb3VudHJ5O1xyXG4gICAgdGhpcy5jb3VudHJ5Q2hhbmdlLmVtaXQoY291bnRyeSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdFZhbHVlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgY2xlYW5lZFZhbHVlID0gdmFsdWUucmVwbGFjZSgvW1xccy0oKV0vZywgJycpXHJcblxyXG4gICAgaWYgKHRoaXMuYXV0b01hc2spIHtcclxuICAgICAgcmV0dXJuIHZhbHVlID09PSB0aGlzLmlubmVyTWFza1ByZWZpeCA/ICcnIDogY2xlYW5lZFZhbHVlXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gY2xlYW5lZFZhbHVlLmxlbmd0aCA9PT0gdGhpcy5tYXNrUHJlZml4Lmxlbmd0aCA/ICcnIDogY2xlYW5lZFZhbHVlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF91cGRhdGVNYXNrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuYXV0b01hc2spIHtcclxuICAgICAgdGhpcy5pbm5lck1hc2sgPSAnJ1xyXG4gICAgICB0aGlzLmlubmVyTWFza1ByZWZpeCA9ICcnXHJcblxyXG4gICAgICBpZiAodGhpcy5waG9uZUlucHV0KSB7XHJcbiAgICAgICAgdGhpcy5waG9uZUlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnICdcclxuICAgICAgICB0aGlzLnZhbHVlID0gJyAnXHJcbiAgICAgICAgdGhpcy5waG9uZU51bWJlciA9ICcgJ1xyXG4gICAgICB9XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ291bnRyeS5tYXNrKSB7XHJcbiAgICAgICAgICB0aGlzLmlubmVyTWFzayA9IHRoaXMuc2VsZWN0ZWRDb3VudHJ5Lm1hc2subWFza1xyXG4gICAgICAgICAgdGhpcy5pbm5lck1hc2tQcmVmaXggPSB0aGlzLnNlbGVjdGVkQ291bnRyeS5tYXNrLm1hc2tQcmVmaXhcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5pbm5lck1hc2sgPSAnJ1xyXG4gICAgICAgICAgdGhpcy5pbm5lck1hc2tQcmVmaXggPSAnJ1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMClcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWFyY2hDb3VudHJ5KCkge1xyXG4gICAgaWYgKCF0aGlzLmNvdW50cnlTZWFyY2hUZXh0KSB7XHJcbiAgICAgIHRoaXMuY291bnRyeUxpc3QubmF0aXZlRWxlbWVudFxyXG4gICAgICAgIC5xdWVyeVNlbGVjdG9yKCcubXJ4LWlucHV0LXBob25lX19jb3VudHJ5LWxpc3QgbGknKVxyXG4gICAgICAgIC5zY3JvbGxJbnRvVmlldyh7XHJcbiAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXHJcbiAgICAgICAgICBibG9jazogJ25lYXJlc3QnLFxyXG4gICAgICAgICAgaW5saW5lOiAnbmVhcmVzdCcsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvdW50cnlTZWFyY2hUZXh0TG93ZXIgPSB0aGlzLmNvdW50cnlTZWFyY2hUZXh0LnRvTG93ZXJDYXNlKCk7XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICBjb25zdCBjb3VudHJ5ID0gdGhpcy5hbGxDb3VudHJpZXMuZmlsdGVyKChjKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLnNlYXJjaENvdW50cnlGaWVsZC5pbmRleE9mKFNlYXJjaENvdW50cnlGaWVsZC5BbGwpID4gLTEpIHtcclxuICAgICAgICAvLyBTZWFyY2ggaW4gYWxsIGZpZWxkc1xyXG4gICAgICAgIGlmIChjLmlzbzIudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGNvdW50cnlTZWFyY2hUZXh0TG93ZXIpKSB7XHJcbiAgICAgICAgICByZXR1cm4gYztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGMubmFtZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY291bnRyeVNlYXJjaFRleHRMb3dlcikpIHtcclxuICAgICAgICAgIHJldHVybiBjO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYy5kaWFsQ29kZS5zdGFydHNXaXRoKHRoaXMuY291bnRyeVNlYXJjaFRleHQpKSB7XHJcbiAgICAgICAgICByZXR1cm4gYztcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgLy8gT3Igc2VhcmNoIGJ5IHNwZWNpZmljIFNlYXJjaENvdW50cnlGaWVsZChzKVxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaENvdW50cnlGaWVsZC5pbmRleE9mKFNlYXJjaENvdW50cnlGaWVsZC5Jc28yKSA+IC0xKSB7XHJcbiAgICAgICAgICBpZiAoYy5pc28yLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjb3VudHJ5U2VhcmNoVGV4dExvd2VyKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ291bnRyeUZpZWxkLmluZGV4T2YoU2VhcmNoQ291bnRyeUZpZWxkLk5hbWUpID4gLTEpIHtcclxuICAgICAgICAgIGlmIChjLm5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGNvdW50cnlTZWFyY2hUZXh0TG93ZXIpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hDb3VudHJ5RmllbGQuaW5kZXhPZihTZWFyY2hDb3VudHJ5RmllbGQuRGlhbENvZGUpID4gLTEpIHtcclxuICAgICAgICAgIGlmIChjLmRpYWxDb2RlLnN0YXJ0c1dpdGgodGhpcy5jb3VudHJ5U2VhcmNoVGV4dCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoY291bnRyeS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGVsID0gdGhpcy5jb3VudHJ5TGlzdC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgJyMnICsgY291bnRyeVswXS5odG1sSWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKGVsKSB7XHJcbiAgICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxyXG4gICAgICAgICAgYmxvY2s6ICduZWFyZXN0JyxcclxuICAgICAgICAgIGlubGluZTogJ25lYXJlc3QnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaGVja1NlcGFyYXRlRGlhbENvZGVTdHlsZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUGhvbmVOdW1iZXJDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBsZXQgY291bnRyeUNvZGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgIC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgdXNlciBzZXRzIHRoZSB2YWx1ZSBwcm9ncmFtYXRpY2FsbHkgYmFzZWQgb24gYSBwZXJzaXN0ZWQgQ2hhbmdlRGF0YSBvYmouXHJcbiAgICBpZiAodGhpcy5waG9uZU51bWJlciAmJiB0eXBlb2YgdGhpcy5waG9uZU51bWJlciA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgY29uc3QgbnVtYmVyT2JqOiBDaGFuZ2VEYXRhID0gdGhpcy5waG9uZU51bWJlcjtcclxuICAgICAgdGhpcy5waG9uZU51bWJlciA9IG51bWJlck9iai5udW1iZXI7XHJcbiAgICAgIGNvdW50cnlDb2RlID0gbnVtYmVyT2JqLmNvdW50cnlDb2RlO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMudmFsdWUgPSB0aGlzLnBob25lTnVtYmVyO1xyXG4gICAgY291bnRyeUNvZGUgPSBjb3VudHJ5Q29kZSB8fCB0aGlzLnNlbGVjdGVkQ291bnRyeS5pc28yO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgY29uc3QgbnVtYmVyID0gdGhpcy5nZXRQYXJzZWROdW1iZXIodGhpcy5waG9uZU51bWJlciwgY291bnRyeUNvZGUpO1xyXG5cclxuICAgIC8vIGF1dG8gc2VsZWN0IGNvdW50cnkgYmFzZWQgb24gdGhlIGV4dGVuc2lvbiAoYW5kIGFyZWFDb2RlIGlmIG5lZWRlZCkgKGUuZyBzZWxlY3QgQ2FuYWRhIGlmIG51bWJlciBzdGFydHMgd2l0aCArMSA0MTYpXHJcbiAgICBpZiAodGhpcy5lbmFibGVBdXRvQ291bnRyeVNlbGVjdCkge1xyXG4gICAgICBjb3VudHJ5Q29kZSA9XHJcbiAgICAgICAgbnVtYmVyICYmIG51bWJlci5nZXRDb3VudHJ5Q29kZSgpXHJcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICA/IHRoaXMuZ2V0Q291bnRyeUlzb0NvZGUobnVtYmVyLmdldENvdW50cnlDb2RlKCksIG51bWJlcilcclxuICAgICAgICAgIDogdGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMjtcclxuICAgICAgaWYgKGNvdW50cnlDb2RlICYmIGNvdW50cnlDb2RlICE9PSB0aGlzLnNlbGVjdGVkQ291bnRyeS5pc28yKSB7XHJcbiAgICAgICAgY29uc3QgbmV3Q291bnRyeSA9IHRoaXMuYWxsQ291bnRyaWVzXHJcbiAgICAgICAgICAuc29ydCgoYSwgYikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gYS5wcmlvcml0eSAtIGIucHJpb3JpdHk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmZpbmQoKGMpID0+IGMuaXNvMiA9PT0gY291bnRyeUNvZGUpO1xyXG4gICAgICAgIGlmIChuZXdDb3VudHJ5KSB7XHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IG5ld0NvdW50cnk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb3VudHJ5Q29kZSA9IGNvdW50cnlDb2RlID8gY291bnRyeUNvZGUgOiB0aGlzLnNlbGVjdGVkQ291bnRyeS5pc28yO1xyXG5cclxuICAgIHRoaXMuY2hlY2tTZXBhcmF0ZURpYWxDb2RlU3R5bGUoKTtcclxuXHJcbiAgICBpZiAoIXRoaXMudmFsdWUgfHwgKHRoaXMuYXV0b01hc2sgJiYgdGhpcy5pbm5lck1hc2tQcmVmaXggPT09IHRoaXMudmFsdWUpKSB7XHJcbiAgICAgIC8vIFJlYXNvbjogYXZvaWQgaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9hLzU0MzU4MTMzLzE2MTc1OTBcclxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1udWxsLWtleXdvcmRcclxuXHJcbiAgICAgIHRoaXMudmFsdWUgPSAnJ1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKG51bGwpO1xyXG4gICAgICB0aGlzLm51bWJlckNoYW5nZS5lbWl0KG51bGwpXHJcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7dmFsdWU6IG51bGwsIGlkOiB0aGlzLnV1aWR9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgaW50bE5vID0gbnVtYmVyXHJcbiAgICAgICAgPyB0aGlzLnBob25lVXRpbC5mb3JtYXQobnVtYmVyLCBscG4uUGhvbmVOdW1iZXJGb3JtYXQuSU5URVJOQVRJT05BTClcclxuICAgICAgICA6ICcnO1xyXG5cclxuICAgICAgLy8gcGFyc2UgcGhvbmVOdW1iZXIgaWYgc2VwYXJhdGUgZGlhbCBjb2RlIGlzIG5lZWRlZFxyXG4gICAgICBpZiAodGhpcy5zZXBhcmF0ZURpYWxDb2RlICYmIGludGxObykge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnJlbW92ZURpYWxDb2RlKGludGxObyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMudmFsdWUpXHJcbiAgICAgIGNvbnN0IGVtaXRWYWx1ZSA9IHtcclxuICAgICAgICBudW1iZXI6IHRoaXMudmFsdWUsXHJcbiAgICAgICAgaW50ZXJuYXRpb25hbE51bWJlcjogaW50bE5vLFxyXG4gICAgICAgIG5hdGlvbmFsTnVtYmVyOiBudW1iZXJcclxuICAgICAgICAgID8gdGhpcy5waG9uZVV0aWwuZm9ybWF0KG51bWJlciwgbHBuLlBob25lTnVtYmVyRm9ybWF0Lk5BVElPTkFMKVxyXG4gICAgICAgICAgOiAnJyxcclxuICAgICAgICBlMTY0TnVtYmVyOiBudW1iZXJcclxuICAgICAgICAgID8gdGhpcy5waG9uZVV0aWwuZm9ybWF0KG51bWJlciwgbHBuLlBob25lTnVtYmVyRm9ybWF0LkUxNjQpXHJcbiAgICAgICAgICA6ICcnLFxyXG4gICAgICAgIGNvdW50cnlDb2RlOiBjb3VudHJ5Q29kZS50b1VwcGVyQ2FzZSgpLFxyXG4gICAgICAgIGRpYWxDb2RlOiAnKycgKyB0aGlzLnNlbGVjdGVkQ291bnRyeS5kaWFsQ29kZSxcclxuICAgICAgICB1bkZvcm1hdE51bWJlcjogdGhpcy5mb3JtYXRWYWx1ZSh0aGlzLnZhbHVlKVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubnVtYmVyQ2hhbmdlLmVtaXQoZW1pdFZhbHVlKVxyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBlbWl0VmFsdWUsIGlkOiB0aGlzLnV1aWR9KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ291bnRyeVNlbGVjdChjb3VudHJ5OiBDb3VudHJ5LCBlbDogeyBmb2N1czogKCkgPT4gdm9pZDsgfSk6IHZvaWQge1xyXG5cclxuICAgIGlmICh0aGlzLmF1dG9NYXNrKSB7XHJcbiAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDb3VudHJ5KCh7XHJcbiAgICAgICAgYXJlYUNvZGVzOiB1bmRlZmluZWQsXHJcbiAgICAgICAgZGlhbENvZGU6ICcnLFxyXG4gICAgICAgIGh0bWxJZDogJycsXHJcbiAgICAgICAgZmxhZ0NsYXNzOiAnJyxcclxuICAgICAgICBpc28yOiAnJyxcclxuICAgICAgICBuYW1lOiAnJyxcclxuICAgICAgICBwbGFjZUhvbGRlcjogJycsXHJcbiAgICAgICAgcHJpb3JpdHk6IDAsXHJcbiAgICAgIH0pKVxyXG4gICAgICB0aGlzLnBob25lTnVtYmVyID0gJydcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNldFNlbGVjdGVkQ291bnRyeShjb3VudHJ5KTtcclxuXHJcbiAgICB0aGlzLmNoZWNrU2VwYXJhdGVEaWFsQ29kZVN0eWxlKCk7XHJcblxyXG4gICAgaWYgKHRoaXMucGhvbmVOdW1iZXIgJiYgdGhpcy5waG9uZU51bWJlci5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnBob25lTnVtYmVyO1xyXG4gICAgICBjb25zdCBudW1iZXIgPSB0aGlzLmdldFBhcnNlZE51bWJlcihcclxuICAgICAgICB0aGlzLnBob25lTnVtYmVyLFxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzJcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgaW50bE5vID0gbnVtYmVyXHJcbiAgICAgICAgPyB0aGlzLnBob25lVXRpbC5mb3JtYXQobnVtYmVyLCBscG4uUGhvbmVOdW1iZXJGb3JtYXQuSU5URVJOQVRJT05BTClcclxuICAgICAgICA6ICcnO1xyXG4gICAgICAvLyBwYXJzZSBwaG9uZU51bWJlciBpZiBzZXBhcmF0ZSBkaWFsIGNvZGUgaXMgbmVlZGVkXHJcbiAgICAgIGlmICh0aGlzLnNlcGFyYXRlRGlhbENvZGUgJiYgaW50bE5vKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMucmVtb3ZlRGlhbENvZGUoaW50bE5vKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgY29uc3QgZW1pdFZhbHVlID0ge1xyXG4gICAgICAgIG51bWJlcjogdGhpcy52YWx1ZSxcclxuICAgICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyOiBpbnRsTm8sXHJcbiAgICAgICAgbmF0aW9uYWxOdW1iZXI6IG51bWJlclxyXG4gICAgICAgICAgPyB0aGlzLnBob25lVXRpbC5mb3JtYXQobnVtYmVyLCBscG4uUGhvbmVOdW1iZXJGb3JtYXQuTkFUSU9OQUwpXHJcbiAgICAgICAgICA6ICcnLFxyXG4gICAgICAgIGUxNjROdW1iZXI6IG51bWJlclxyXG4gICAgICAgICAgPyB0aGlzLnBob25lVXRpbC5mb3JtYXQobnVtYmVyLCBscG4uUGhvbmVOdW1iZXJGb3JtYXQuRTE2NClcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgICAgY291bnRyeUNvZGU6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIudG9VcHBlckNhc2UoKSxcclxuICAgICAgICBkaWFsQ29kZTogJysnICsgdGhpcy5zZWxlY3RlZENvdW50cnkuZGlhbENvZGUsXHJcbiAgICAgICAgdW5Gb3JtYXROdW1iZXI6IHRoaXMuZm9ybWF0VmFsdWUodGhpcy52YWx1ZSlcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5udW1iZXJDaGFuZ2UuZW1pdChlbWl0VmFsdWUpXHJcbiAgICAgIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7dmFsdWU6IGVtaXRWYWx1ZSwgaWQ6IHRoaXMudXVpZH0pXHJcblxyXG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoJycpO1xyXG5cclxuICAgICAgdGhpcy5udW1iZXJDaGFuZ2UuZW1pdChudWxsKVxyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBudWxsLCBpZDogdGhpcy51dWlkfSlcclxuICAgIH1cclxuICAgIHRoaXMuX3VwZGF0ZU1hc2soKVxyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uSW5wdXRLZXlQcmVzcyhldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgYWxsb3dlZENoYXJzID0gL1swLTlcXCtcXC1cXChcXClcXCBdLztcclxuICAgIGNvbnN0IGFsbG93ZWRDdHJsQ2hhcnMgPSAvW2F4Y3ZdLztcclxuICAgIGNvbnN0IGFsbG93ZWRPdGhlcktleXMgPSBbXHJcbiAgICAgICdBcnJvd0xlZnQnLFxyXG4gICAgICAnQXJyb3dVcCcsXHJcbiAgICAgICdBcnJvd1JpZ2h0JyxcclxuICAgICAgJ0Fycm93RG93bicsXHJcbiAgICAgICdIb21lJyxcclxuICAgICAgJ0VuZCcsXHJcbiAgICAgICdJbnNlcnQnLFxyXG4gICAgICAnRGVsZXRlJyxcclxuICAgICAgJ0JhY2tzcGFjZScsXHJcbiAgICBdO1xyXG5cclxuICAgIGlmIChcclxuICAgICAgIWFsbG93ZWRDaGFycy50ZXN0KGV2ZW50LmtleSkgJiZcclxuICAgICAgIShldmVudC5jdHJsS2V5ICYmIGFsbG93ZWRDdHJsQ2hhcnMudGVzdChldmVudC5rZXkpKSAmJlxyXG4gICAgICAhYWxsb3dlZE90aGVyS2V5cy5pbmNsdWRlcyhldmVudC5rZXkpXHJcbiAgICApIHtcclxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UgPSBmbjtcclxuICB9XHJcblxyXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcclxuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XHJcbiAgfVxyXG5cclxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgd3JpdGVWYWx1ZShvYmo6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKG9iaiA9PT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5waG9uZU51bWJlciA9IG9iajtcclxuICB9XHJcblxyXG4gIHJlc29sdmVQbGFjZWhvbGRlcigpOiBzdHJpbmcge1xyXG4gICAgbGV0IHBsYWNlaG9sZGVyID0gJyc7XHJcbiAgICBpZiAodGhpcy5jdXN0b21QbGFjZWhvbGRlcikge1xyXG4gICAgICBwbGFjZWhvbGRlciA9IHRoaXMuY3VzdG9tUGxhY2Vob2xkZXI7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRDb3VudHJ5LnBsYWNlSG9sZGVyKSB7XHJcbiAgICAgIHBsYWNlaG9sZGVyID0gdGhpcy5zZWxlY3RlZENvdW50cnkucGxhY2VIb2xkZXI7XHJcbiAgICAgIGlmICh0aGlzLnNlcGFyYXRlRGlhbENvZGUpIHtcclxuICAgICAgICBwbGFjZWhvbGRlciA9IHRoaXMucmVtb3ZlRGlhbENvZGUocGxhY2Vob2xkZXIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGxhY2Vob2xkZXI7XHJcbiAgfVxyXG5cclxuICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gSGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgcGFyc2UgUGhvbmVOdW1iZXIgb2JqZWN0LlxyXG4gICAqIEBwYXJhbSBwaG9uZU51bWJlciBzdHJpbmdcclxuICAgKiBAcGFyYW0gY291bnRyeUNvZGUgc3RyaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRQYXJzZWROdW1iZXIoXHJcbiAgICBwaG9uZU51bWJlcjogc3RyaW5nLFxyXG4gICAgY291bnRyeUNvZGU6IHN0cmluZ1xyXG4gICk6IGxwbi5QaG9uZU51bWJlciB7XHJcbiAgICBsZXQgbnVtYmVyOiBscG4uUGhvbmVOdW1iZXI7XHJcbiAgICB0cnkge1xyXG4gICAgICBudW1iZXIgPSB0aGlzLnBob25lVXRpbC5wYXJzZShwaG9uZU51bWJlciwgY291bnRyeUNvZGUudG9VcHBlckNhc2UoKSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICB9XHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICByZXR1cm4gbnVtYmVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRqdXN0cyBpbnB1dCBhbGlnbm1lbnQgYmFzZWQgb24gdGhlIGRpYWwgY29kZSBwcmVzZW50YXRpb24gc3R5bGUuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjaGVja1NlcGFyYXRlRGlhbENvZGVTdHlsZSgpIHtcclxuICAgIGlmICh0aGlzLnNlcGFyYXRlRGlhbENvZGUgJiYgdGhpcy5zZWxlY3RlZENvdW50cnkpIHtcclxuICAgICAgY29uc3QgY250cnlDZCA9IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlO1xyXG4gICAgICB0aGlzLnNlcGFyYXRlRGlhbENvZGVDbGFzcyA9XHJcbiAgICAgICAgJ3NlcGFyYXRlLWRpYWwtY29kZSBpdGktc2RjLScgKyAoY250cnlDZC5sZW5ndGggKyAxKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VwYXJhdGVEaWFsQ29kZUNsYXNzID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhbnMgZGlhbGNvZGUgZnJvbSBwaG9uZSBudW1iZXIgc3RyaW5nLlxyXG4gICAqIEBwYXJhbSBwaG9uZU51bWJlciBzdHJpbmdcclxuICAgKi9cclxuICBwcml2YXRlIHJlbW92ZURpYWxDb2RlKHBob25lTnVtYmVyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgbnVtYmVyID0gdGhpcy5nZXRQYXJzZWROdW1iZXIocGhvbmVOdW1iZXIsIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzIpO1xyXG4gICAgcGhvbmVOdW1iZXIgPSB0aGlzLnBob25lVXRpbC5mb3JtYXQoXHJcbiAgICAgIG51bWJlcixcclxuICAgICAgbHBuLlBob25lTnVtYmVyRm9ybWF0W3RoaXMubnVtYmVyRm9ybWF0XVxyXG4gICAgKTtcclxuICAgIGlmIChwaG9uZU51bWJlci5zdGFydHNXaXRoKCcrJykgJiYgdGhpcy5zZXBhcmF0ZURpYWxDb2RlKSB7XHJcbiAgICAgIHBob25lTnVtYmVyID0gcGhvbmVOdW1iZXIuc3Vic3RyKHBob25lTnVtYmVyLmluZGV4T2YoJyAnKSArIDEpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBob25lTnVtYmVyO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2lmdHMgdGhyb3VnaCBhbGwgY291bnRyaWVzIGFuZCByZXR1cm5zIGlzbyBjb2RlIG9mIHRoZSBwcmltYXJ5IGNvdW50cnlcclxuICAgKiBiYXNlZCBvbiB0aGUgbnVtYmVyIHByb3ZpZGVkLlxyXG4gICAqIEBwYXJhbSBjb3VudHJ5Q29kZSBjb3VudHJ5IGNvZGUgaW4gbnVtYmVyIGZvcm1hdFxyXG4gICAqIEBwYXJhbSBudW1iZXIgUGhvbmVOdW1iZXIgb2JqZWN0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBnZXRDb3VudHJ5SXNvQ29kZShcclxuICAgIGNvdW50cnlDb2RlOiBudW1iZXIsXHJcbiAgICBudW1iZXI6IGxwbi5QaG9uZU51bWJlclxyXG4gICk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICAvLyBXaWxsIHVzZSB0aGlzIHRvIG1hdGNoIGFyZWEgY29kZSBmcm9tIHRoZSBmaXJzdCBudW1iZXJzXHJcbiAgICAvLyBAdHMtaWdub3JlXHJcbiAgICBjb25zdCByYXdOdW1iZXIgPSBudW1iZXJbJ3ZhbHVlc18nXVsnMiddLnRvU3RyaW5nKCk7XHJcbiAgICAvLyBMaXN0IG9mIGFsbCBjb3VudHJpZXMgd2l0aCBjb3VudHJ5Q29kZSAoY2FuIGJlIG1vcmUgdGhhbiBvbmUuIGUueC4gVVMsIENBLCBETywgUFIgYWxsIGhhdmUgKzEgY291bnRyeUNvZGUpXHJcbiAgICBjb25zdCBjb3VudHJpZXMgPSB0aGlzLmFsbENvdW50cmllcy5maWx0ZXIoXHJcbiAgICAgIChjKSA9PiBjLmRpYWxDb2RlID09PSBjb3VudHJ5Q29kZS50b1N0cmluZygpXHJcbiAgICApO1xyXG4gICAgLy8gTWFpbiBjb3VudHJ5IGlzIHRoZSBjb3VudHJ5LCB3aGljaCBoYXMgbm8gYXJlYUNvZGVzIHNwZWNpZmllZCBpbiBjb3VudHJ5LWNvZGUudHMgZmlsZS5cclxuICAgIGNvbnN0IG1haW5Db3VudHJ5ID0gY291bnRyaWVzLmZpbmQoKGMpID0+IGMuYXJlYUNvZGVzID09PSB1bmRlZmluZWQpO1xyXG4gICAgLy8gU2Vjb25kYXJ5IGNvdW50cmllcyBhcmUgYWxsIGNvdW50cmllcywgd2hpY2ggaGF2ZSBhcmVhQ29kZXMgc3BlY2lmaWVkIGluIGNvdW50cnktY29kZS50cyBmaWxlLlxyXG4gICAgY29uc3Qgc2Vjb25kYXJ5Q291bnRyaWVzID0gY291bnRyaWVzLmZpbHRlcihcclxuICAgICAgKGMpID0+IGMuYXJlYUNvZGVzICE9PSB1bmRlZmluZWRcclxuICAgICk7XHJcbiAgICBsZXQgbWF0Y2hlZENvdW50cnkgPSBtYWluQ291bnRyeSA/IG1haW5Db3VudHJ5LmlzbzIgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgLypcclxuICAgICAgSXRlcmF0ZSBvdmVyIGVhY2ggc2Vjb25kYXJ5IGNvdW50cnkgYW5kIGNoZWNrIGlmIG5hdGlvbmFsTnVtYmVyIHN0YXJ0cyB3aXRoIGFueSBvZiBhcmVhQ29kZXMgYXZhaWxhYmxlLlxyXG4gICAgICBJZiBubyBtYXRjaGVzIGZvdW5kLCBmYWxsYmFjayB0byB0aGUgbWFpbiBjb3VudHJ5LlxyXG4gICAgKi9cclxuICAgIHNlY29uZGFyeUNvdW50cmllcy5mb3JFYWNoKChjb3VudHJ5KSA9PiB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgY291bnRyeS5hcmVhQ29kZXMuZm9yRWFjaCgoYXJlYUNvZGUpID0+IHtcclxuICAgICAgICBpZiAocmF3TnVtYmVyLnN0YXJ0c1dpdGgoYXJlYUNvZGUpKSB7XHJcbiAgICAgICAgICBtYXRjaGVkQ291bnRyeSA9IGNvdW50cnkuaXNvMjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIG1hdGNoZWRDb3VudHJ5O1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0cyBmb3JtYXR0ZWQgZXhhbXBsZSBwaG9uZSBudW1iZXIgZnJvbSBwaG9uZVV0aWwuXHJcbiAgICogQHBhcmFtIGNvdW50cnlDb2RlIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBnZXRQaG9uZU51bWJlclBsYWNlSG9sZGVyKGNvdW50cnlDb2RlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIHRoaXMucGhvbmVVdGlsLmZvcm1hdChcclxuICAgICAgICB0aGlzLnBob25lVXRpbC5nZXRFeGFtcGxlTnVtYmVyKGNvdW50cnlDb2RlKSxcclxuICAgICAgICBscG4uUGhvbmVOdW1iZXJGb3JtYXRbdGhpcy5udW1iZXJGb3JtYXRdXHJcbiAgICAgICk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgcmV0dXJuIGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0UGhvbmVOdW1iZXJNYXNrKGNvdW50cnlDb2RlOiBzdHJpbmcpOiBNYXNrSSB7XHJcbiAgICB0cnkge1xyXG4gICAgICByZXR1cm4gTWFza0NvZGVbY291bnRyeUNvZGVdXHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgcmV0dXJuIGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhcmluZyB0aGUgbGlzdCB0byBhdm9pZCBkdXBsaWNhdGVzIChodHRwczovL2dpdGh1Yi5jb20vd2ViY2F0MTIzNDUvbmd4LWludGwtdGVsLWlucHV0L2lzc3Vlcy8yNDgpXHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGZldGNoQ291bnRyeURhdGEoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsbENvdW50cmllcyA9IFtdO1xyXG5cclxuICAgIHRoaXMuY291bnRyeUNvZGVEYXRhLmFsbENvdW50cmllcy5mb3JFYWNoKChjKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvdW50cnk6IENvdW50cnkgPSB7XHJcbiAgICAgICAgbmFtZTogY1swXS50b1N0cmluZygpLFxyXG4gICAgICAgIGlzbzI6IGNbMV0udG9TdHJpbmcoKSxcclxuICAgICAgICBkaWFsQ29kZTogY1syXS50b1N0cmluZygpLFxyXG4gICAgICAgIHByaW9yaXR5OiArY1szXSB8fCAwLFxyXG4gICAgICAgIGFyZWFDb2RlczogKGNbNF0gYXMgc3RyaW5nW10pIHx8IHVuZGVmaW5lZCxcclxuICAgICAgICBodG1sSWQ6IGBpdGktMF9faXRlbS0ke2NbMV0udG9TdHJpbmcoKX1gLFxyXG4gICAgICAgIGZsYWdDbGFzczogYGl0aV9fJHtjWzFdLnRvU3RyaW5nKCkudG9Mb2NhbGVMb3dlckNhc2UoKX1gLFxyXG4gICAgICAgIHBsYWNlSG9sZGVyOiAnJyxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZVBsYWNlaG9sZGVyKSB7XHJcbiAgICAgICAgY291bnRyeS5wbGFjZUhvbGRlciA9IHRoaXMuZ2V0UGhvbmVOdW1iZXJQbGFjZUhvbGRlcihcclxuICAgICAgICAgIGNvdW50cnkuaXNvMi50b1VwcGVyQ2FzZSgpXHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuYXV0b01hc2spIHtcclxuICAgICAgICBjb3VudHJ5Lm1hc2sgPSB0aGlzLmdldFBob25lTnVtYmVyTWFzayhjb3VudHJ5LmlzbzIudG9VcHBlckNhc2UoKSlcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5hbGxDb3VudHJpZXMucHVzaChjb3VudHJ5KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUG9wdWxhdGVzIHByZWZlcnJlZENvdW50cmllc0luRHJvcERvd24gd2l0aCBwcmVmZmVycmVkIGNvdW50cmllcy5cclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZVByZWZlcnJlZENvdW50cmllcygpIHtcclxuICAgIGlmICh0aGlzLnByZWZlcnJlZENvdW50cmllcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5wcmVmZXJyZWRDb3VudHJpZXNJbkRyb3BEb3duID0gW107XHJcbiAgICAgIHRoaXMucHJlZmVycmVkQ291bnRyaWVzLmZvckVhY2goKGlzbzIpID0+IHtcclxuICAgICAgICBjb25zdCBwcmVmZXJyZWRDb3VudHJ5ID0gdGhpcy5hbGxDb3VudHJpZXMuZmlsdGVyKChjKSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gYy5pc28yID09PSBpc28yO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnByZWZlcnJlZENvdW50cmllc0luRHJvcERvd24ucHVzaChwcmVmZXJyZWRDb3VudHJ5WzBdKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGVzIHNlbGVjdGVkQ291bnRyeS5cclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZVNlbGVjdGVkQ291bnRyeSgpIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkQ291bnRyeUlTTykge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gdGhpcy5hbGxDb3VudHJpZXMuZmluZCgoYykgPT4ge1xyXG4gICAgICAgIHJldHVybiBjLmlzbzIudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy5zZWxlY3RlZENvdW50cnlJU08udG9Mb3dlckNhc2UoKTtcclxuICAgICAgfSk7XHJcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkQ291bnRyeSkge1xyXG4gICAgICAgIGlmICh0aGlzLnBob25lTnVtYmVyKSB7XHJcbiAgICAgICAgICB0aGlzLm9uUGhvbmVOdW1iZXJDaGFuZ2UoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoJycpO1xyXG4gICAgICAgICAgdGhpcy5udW1iZXJDaGFuZ2UuZW1pdChudWxsKVxyXG4gICAgICAgICAgLy8gdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogbnVsbCwgaWQ6IHRoaXMudXVpZH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVcIiBbY2xhc3NdPVwiZ2V0Q2xhc3Nlc1wiIFtjbGFzcy5tcngtaW5wdXQtZXJyb3JdPVwiaW52YWxpZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX3dyYXBwZXJcIiBbbmdDbGFzc109XCJzZXBhcmF0ZURpYWxDb2RlQ2xhc3NcIj5cclxuICAgIDxpbnB1dFxyXG4gICAgICAjcGhvbmVJbnB1dFxyXG4gICAgICB0eXBlPVwidGVsXCJcclxuICAgICAgW2lkXT1cImlucHV0SWRcIlxyXG4gICAgICBbKG5nTW9kZWwpXT1cInBob25lTnVtYmVyXCJcclxuICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwib25QaG9uZU51bWJlckNoYW5nZSgpXCJcclxuICAgICAgW25nQ2xhc3NdPVwiY3NzQ2xhc3NcIlxyXG4gICAgICBbYXV0b2NvbXBsZXRlXT1cIidvZmYnXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgW3BsYWNlaG9sZGVyXT1cInJlc29sdmVQbGFjZWhvbGRlcigpXCJcclxuICAgICAgW2F0dHIubWF4TGVuZ3RoXT1cIm1heExlbmd0aFwiXHJcbiAgICAgIFthdHRyLnZhbGlkYXRpb25dPVwicGhvbmVWYWxpZGF0aW9uXCJcclxuICAgICAgW21hc2tdPVwiaW5uZXJNYXNrIHx8IG1hc2tcIlxyXG4gICAgICBbcHJlZml4XT1cImlubmVyTWFza1ByZWZpeCB8fCBtYXNrUHJlZml4XCJcclxuICAgICAgW3Nob3dNYXNrVHlwZWRdPVwic2hvd01hc2tUeXBlZFwiXHJcbiAgICAgIFtkcm9wU3BlY2lhbENoYXJhY3RlcnNdPVwiYXV0b01hc2sgPyBmYWxzZSA6IG1hc2tEcm9wU3BlY2lhbENoYXJhY3RlcnNcIlxyXG4gICAgICAoYmx1cik9XCJvblRvdWNoZWQoKVwiXHJcbiAgICAgIChrZXlwcmVzcyk9XCJvbklucHV0S2V5UHJlc3MoJGV2ZW50KVwiXHJcbiAgICAgICNmb2N1c2FibGVcclxuICAgID5cclxuICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2ZsYWctY29udGFpbmVyXCIgW25nQ2xhc3NdPVwieydkaXNhYmxlZCc6IGRpc2FibGVkfVwiPlxyXG4gICAgICA8bXJ4LWRyb3Bkb3duIGN1c3RvbUNsYXNzZXM9XCJoLTEwMFwiIFttYWluUGxhY2VtZW50XT1cIidib3R0b20tc3RhcnQnXCIgW2ZhbGxiYWNrUGxhY2VtZW50c109XCJbJ3RvcC1zdGFydCddXCI+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkcm9wZG93blRvZ2dsZT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX3NlbGVjdGVkLWZsYWcgZHJvcGRvd24tdG9nZ2xlXCI+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fZmxhZ1wiXHJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic2VsZWN0ZWRDb3VudHJ5LmZsYWdDbGFzcyB8fCAnJ1wiXHJcbiAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNlcGFyYXRlRGlhbENvZGVcIiBjbGFzcz1cInNlbGVjdGVkLWRpYWwtY29kZVwiPit7e3NlbGVjdGVkQ291bnRyeS5kaWFsQ29kZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2Fycm93XCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaWNvbiBpY29uLWNoZXZyb24tZG93blwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI2Ryb3Bkb3duTWVudT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtY29udGFpbmVyXCIgKm5nSWY9XCJzZWFyY2hDb3VudHJ5RmxhZyAmJiBzZWFyY2hDb3VudHJ5RmllbGRcIj5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwiY291bnRyeS1zZWFyY2gtYm94XCJcclxuICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY291bnRyeVNlYXJjaFRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgKGtleXVwKT1cInNlYXJjaENvdW50cnkoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hDb3VudHJ5UGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgYXV0b2ZvY3VzPlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPHVsIGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19jb3VudHJ5LWxpc3RcIiAjY291bnRyeUxpc3Q+XHJcbiAgICAgICAgICAgIDxsaSBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fY291bnRyeSBpdGlfX3ByZWZlcnJlZFwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY291bnRyeSBvZiBwcmVmZXJyZWRDb3VudHJpZXNJbkRyb3BEb3duXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNvdW50cnlTZWxlY3QoY291bnRyeSwgZm9jdXNhYmxlKVwiXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwiY291bnRyeS5odG1sSWQrJy1wcmVmZXJyZWQnXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fZmxhZy1ib3hcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2ZsYWdcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJjb3VudHJ5LmZsYWdDbGFzc1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19jb3VudHJ5LW5hbWVcIj57e2NvdW50cnkubmFtZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19kaWFsLWNvZGVcIj4re3tjb3VudHJ5LmRpYWxDb2RlfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcblxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2RpdmlkZXJcIiAqbmdJZj1cInByZWZlcnJlZENvdW50cmllc0luRHJvcERvd24/Lmxlbmd0aFwiPjwvbGk+XHJcblxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2NvdW50cnkgaXRpX19zdGFuZGFyZFwiXHJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgY291bnRyeSBvZiBhbGxDb3VudHJpZXNcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ291bnRyeVNlbGVjdChjb3VudHJ5LCBmb2N1c2FibGUpXCJcclxuICAgICAgICAgICAgICAgIFtpZF09XCJjb3VudHJ5Lmh0bWxJZFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2ZsYWctYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19mbGFnXCIgW25nQ2xhc3NdPVwiY291bnRyeS5mbGFnQ2xhc3NcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fY291bnRyeS1uYW1lXCI+e3tjb3VudHJ5Lm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fZGlhbC1jb2RlXCI+K3t7Y291bnRyeS5kaWFsQ29kZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9tcngtZHJvcGRvd24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPG1yeC1lcnJvci1tZXNzYWdlXHJcbiAgICAqbmdJZj1cIighaXNWYWxpZCB8fCBpbnZhbGlkKSAmJiBpc0ludmFsaWRNZXNzYWdlXCJcclxuICAgIFtpbnZhbGlkTWVzc2FnZV09XCJpbnZhbGlkTWVzc2FnZVwiXHJcbiAgPjwvbXJ4LWVycm9yLW1lc3NhZ2U+XHJcblxyXG4gIDxtcngtc2F2ZS1zdGF0ZSBbaWRdPVwidXVpZFwiIFtmaWVsZHNdPVwiZmllbGRzXCI+PC9tcngtc2F2ZS1zdGF0ZT5cclxuPC9kaXY+XHJcbiJdfQ==
679
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtcGhvbmUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtcGhvbmUvaW5wdXQtcGhvbmUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlydGEtdWkvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm0vaW5wdXQtcGhvbmUvaW5wdXQtcGhvbmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBd0IsYUFBYSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEYsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSXRELE9BQU8sS0FBSyxHQUFHLE1BQU0sdUJBQXVCLENBQUM7QUFFN0MsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUNMLG1CQUFtQixFQUlwQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxRQUFRLEVBQVMsTUFBTSxtQkFBbUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFzQnBELE1BQU0sT0FB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QU07Z0JBQ1UsV0FBVztzQkFBM0IsTUFBTTtnQkFzQm1CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTtnQkFDQyxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBmb3J3YXJkUmVmLFxyXG4gIElucHV0LFxyXG4gIE9uQ2hhbmdlcyxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvdW50cnlDb2RlIH0gZnJvbSAnLi9kYXRhL2NvdW50cnktY29kZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgcGhvbmVOdW1iZXJWYWxpZGF0b3IgfSBmcm9tICcuL2lucHV0LXBob25lLnZhbGlkYXRvcic7XHJcbmltcG9ydCB7IFBob25lTnVtYmVyRm9ybWF0IH0gZnJvbSAnLi9lbnVtcy9waG9uZS1udW1iZXItZm9ybWF0LmVudW0nO1xyXG5pbXBvcnQgeyBTZWFyY2hDb3VudHJ5RmllbGQgfSBmcm9tICcuL2VudW1zL3NlYXJjaC1jb3VudHJ5LWZpZWxkLmVudW0nO1xyXG5pbXBvcnQgeyBDb3VudHJ5SVNPIH0gZnJvbSAnLi9lbnVtcy9jb3VudHJ5LWlzby5lbnVtJztcclxuaW1wb3J0IHsgQ291bnRyeSB9IGZyb20gJy4vbW9kZWxzL2NvdW50cnkubW9kZWwnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEYXRhIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2NoYW5nZS1kYXRhJztcclxuXHJcbmltcG9ydCAqIGFzIGxwbiBmcm9tICdnb29nbGUtbGlicGhvbmVudW1iZXInO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZpZWxkIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbXJ4LWF1dG9zYXZlL21yeC1hdXRvc2F2ZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtcclxuICBJbnB1dFBob25lU2l6ZXNFbnVtLFxyXG4gIElucHV0UGhvbmVTaXplc1R5cGVzLFxyXG4gIElucHV0UGhvbmVWYWx1ZVR5cGVzLFxyXG4gIElucHV0UGhvbmVWYWx1ZVdpdGhJZFxyXG59IGZyb20gJy4vZW51bXMvaW5wdXQtcGhvbmUuZW51bSc7XHJcbmltcG9ydCB7IE1hc2tDb2RlLCBNYXNrSSB9IGZyb20gJy4vZW51bXMvbWFzay5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbXJ4LWlucHV0LXBob25lJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vaW5wdXQtcGhvbmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2lucHV0LXBob25lLmNvbXBvbmVudC5sZXNzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBDb3VudHJ5Q29kZSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IElucHV0UGhvbmVDb21wb25lbnQpLFxyXG4gICAgICBtdWx0aTogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXHJcbiAgICAgIHVzZVZhbHVlOiBwaG9uZU51bWJlclZhbGlkYXRvcixcclxuICAgICAgbXVsdGk6IHRydWUsXHJcbiAgICB9LFxyXG4gIF0sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSW5wdXRQaG9uZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgcHVibGljIGlubmVyTWFzayA9ICcnXHJcbiAgcHVibGljIGlubmVyTWFza1ByZWZpeCA9ICcnXHJcbiAgLy8gU0FWRSBTVEFURVxyXG4gIHB1YmxpYyB1dWlkOiBzdHJpbmcgPSB1dWlkdjQoKVxyXG4gIEBJbnB1dCgpIHB1YmxpYyBmaWVsZHM6IEZpZWxkW10gPSBbXTtcclxuXHJcbiAgQElucHV0KCkgdmFsdWU6IElucHV0UGhvbmVWYWx1ZVR5cGVzID0gJyc7XHJcbiAgQElucHV0KCkgcHJlZmVycmVkQ291bnRyaWVzOiBBcnJheTxzdHJpbmc+ID0gW107XHJcbiAgQElucHV0KCkgZW5hYmxlUGxhY2Vob2xkZXIgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGN1c3RvbVBsYWNlaG9sZGVyITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIG51bWJlckZvcm1hdDogUGhvbmVOdW1iZXJGb3JtYXQgPSBQaG9uZU51bWJlckZvcm1hdC5JbnRlcm5hdGlvbmFsO1xyXG4gIEBJbnB1dCgpIGNzc0NsYXNzID0gJ2Zvcm0tY29udHJvbCc7XHJcbiAgQElucHV0KCkgb25seUNvdW50cmllczogQXJyYXk8c3RyaW5nPiA9IFtdO1xyXG4gIEBJbnB1dCgpIGVuYWJsZUF1dG9Db3VudHJ5U2VsZWN0ID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzZWFyY2hDb3VudHJ5RmxhZyA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlYXJjaENvdW50cnlGaWVsZDogU2VhcmNoQ291bnRyeUZpZWxkW10gPSBbU2VhcmNoQ291bnRyeUZpZWxkLkFsbF07XHJcbiAgQElucHV0KCkgc2VhcmNoQ291bnRyeVBsYWNlaG9sZGVyID0gJ1NlYXJjaCBDb3VudHJ5JztcclxuICBASW5wdXQoKSBtYXhMZW5ndGghOiBudW1iZXI7XHJcbiAgQElucHV0KCkgbWluTGVuZ3RoITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIHNlbGVjdEZpcnN0Q291bnRyeSA9IHRydWU7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRDb3VudHJ5SVNPOiBhbnkgPSBDb3VudHJ5SVNPLlJ1c3NpYTtcclxuICBASW5wdXQoKSBwaG9uZVZhbGlkYXRpb24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIGlucHV0SWQgPSAncGhvbmUnO1xyXG4gIEBJbnB1dCgpIHNlcGFyYXRlRGlhbENvZGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSBjdXN0b21DbGFzc2VzID0gJyc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaXplOiBJbnB1dFBob25lU2l6ZXNUeXBlcyA9ICdsYXJnZSc7XHJcblxyXG4gIC8vIE1BU0tcclxuICBASW5wdXQoKSBhdXRvTWFzayA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1hc2sgPSAnJztcclxuICBASW5wdXQoKSBtYXNrUHJlZml4ID0gJyc7XHJcbiAgQElucHV0KCkgc2hvd01hc2tUeXBlZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1hc2tEcm9wU3BlY2lhbENoYXJhY3RlcnM6IGJvb2xlYW4gfCBzdHJpbmdbXSA9IHRydWU7XHJcblxyXG4gIC8vIFZBTElEQVRJT05cclxuICBASW5wdXQoKSBwdWJsaWMgaW52YWxpZCA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpbnZhbGlkTWVzc2FnZTogc3RyaW5nIHwgc3RyaW5nW10gPSAnJztcclxuICBASW5wdXQoKSBwdWJsaWMgY2hlY2tJbnZhbGlkOiB0cnVlIHwgZmFsc2UgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgc2VwYXJhdGVEaWFsQ29kZUNsYXNzITogc3RyaW5nO1xyXG5cclxuICBAT3V0cHV0KCkgcmVhZG9ubHkgY291bnRyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q291bnRyeT4oKTtcclxuICBAT3V0cHV0KCkgbnVtYmVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDaGFuZ2VEYXRhIHwgbnVsbD4oKVxyXG4gIEBPdXRwdXQoKSBwdWJsaWMgbW9kZWxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxJbnB1dFBob25lVmFsdWVXaXRoSWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJbnB1dFBob25lVmFsdWVXaXRoSWQ+KCk7XHJcblxyXG4gIHNlbGVjdGVkQ291bnRyeTogQ291bnRyeSA9IHtcclxuICAgIGFyZWFDb2RlczogdW5kZWZpbmVkLFxyXG4gICAgZGlhbENvZGU6ICcnLFxyXG4gICAgaHRtbElkOiAnJyxcclxuICAgIGZsYWdDbGFzczogJycsXHJcbiAgICBpc28yOiAnJyxcclxuICAgIG5hbWU6ICcnLFxyXG4gICAgcGxhY2VIb2xkZXI6ICcnLFxyXG4gICAgcHJpb3JpdHk6IDAsXHJcbiAgfTtcclxuXHJcbiAgcGhvbmVOdW1iZXI6IHN0cmluZyB8IHVuZGVmaW5lZCA9ICcnO1xyXG4gIGFsbENvdW50cmllczogQXJyYXk8Q291bnRyeT4gPSBbXTtcclxuICBwcmVmZXJyZWRDb3VudHJpZXNJbkRyb3BEb3duOiBBcnJheTxDb3VudHJ5PiA9IFtdO1xyXG4gIC8vIEhhcyB0byBiZSAnYW55JyB0byBwcmV2ZW50IGEgbmVlZCB0byBpbnN0YWxsIEB0eXBlcy9nb29nbGUtbGlicGhvbmVudW1iZXIgYnkgdGhlIHBhY2thZ2UgdXNlci4uLlxyXG4gIHBob25lVXRpbDogYW55ID0gbHBuLlBob25lTnVtYmVyVXRpbC5nZXRJbnN0YW5jZSgpO1xyXG5cclxuICBlcnJvcnM6IEFycmF5PGFueT4gPSBbJ1Bob25lIG51bWJlciBpcyByZXF1aXJlZC4nXTtcclxuICBjb3VudHJ5U2VhcmNoVGV4dCA9ICcnO1xyXG5cclxuICBAVmlld0NoaWxkKCdjb3VudHJ5TGlzdCcpIGNvdW50cnlMaXN0ITogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKCdwaG9uZUlucHV0JykgcGhvbmVJbnB1dCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIG9uVG91Y2hlZCA9ICgpID0+IHtcclxuICB9O1xyXG4gIC8vIHByb3BhZ2F0ZUNoYW5nZSA9IChfOiBDaGFuZ2VEYXRhKSA9PiB7fTtcclxuICBwcm9wYWdhdGVDaGFuZ2UgPSAoXzogc3RyaW5nKSA9PiB7XHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb3VudHJ5Q29kZURhdGE6IENvdW50cnlDb2RlLCBwcml2YXRlIHNhbml0aXphdGlvbjogRG9tU2FuaXRpemVyKSB7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuaW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBnZXRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gYCR7SW5wdXRQaG9uZVNpemVzRW51bVt0aGlzLnNpemVdfSAke3RoaXMuY3VzdG9tQ2xhc3Nlc30gJHt0aGlzLmNoZWNrVmFsaWRDbGFzc2VzfWA7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5iYXNlVmFsaWRhdGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgaXNJbnZhbGlkTWVzc2FnZSgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiAhIXRoaXMuaW52YWxpZE1lc3NhZ2UgfHwgISF0aGlzLmludmFsaWRNZXNzYWdlPy5sZW5ndGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGNoZWNrVmFsaWRDbGFzc2VzKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGVja0ludmFsaWQgPT09IGZhbHNlID9cclxuICAgICAgJ21yeC1pbnB1dC1jaGVja2VkLXN1Y2Nlc3MnIDpcclxuICAgICAgdGhpcy5jaGVja0ludmFsaWQgPT09IHRydWUgPyAnbXJ4LWlucHV0LWNoZWNrZWQtZXJyb3InIDogJydcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRNYXNrKCk6IE1hc2tJIHtcclxuICAgIHJldHVybiB0aGlzLmdldEF1dG9NYXNrT2JqZWN0XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0IGdldEF1dG9NYXNrT2JqZWN0KCk6IE1hc2tJIHtcclxuICAgIGlmICh0aGlzLmF1dG9NYXNrICYmIHRoaXMuc2VsZWN0ZWRDb3VudHJ5Lm1hc2spIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRDb3VudHJ5Lm1hc2tcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7bWFzazogdGhpcy5tYXNrLCBtYXNrUHJlZml4OiB0aGlzLm1hc2tQcmVmaXh9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYmFzZVZhbGlkYXRlKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMubWluTGVuZ3RoKSB7XHJcbiAgICAgIHJldHVybiAhIXRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPj0gdGhpcy5taW5MZW5ndGg7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgIGNvbnN0IHNlbGVjdGVkSVNPID0gY2hhbmdlc1snc2VsZWN0ZWRDb3VudHJ5SVNPJ107XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuYWxsQ291bnRyaWVzICYmXHJcbiAgICAgIHNlbGVjdGVkSVNPICYmXHJcbiAgICAgIHNlbGVjdGVkSVNPLmN1cnJlbnRWYWx1ZSAhPT0gc2VsZWN0ZWRJU08ucHJldmlvdXNWYWx1ZVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRDb3VudHJ5KCk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1sncHJlZmVycmVkQ291bnRyaWVzJ10pIHtcclxuICAgICAgdGhpcy51cGRhdGVQcmVmZXJyZWRDb3VudHJpZXMoKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hlY2tTZXBhcmF0ZURpYWxDb2RlU3R5bGUoKTtcclxuICB9XHJcblxyXG4gIGdldFNhZmVVcmwoZmlsZVByZXZpZXdVcmw6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemF0aW9uLmJ5cGFzc1NlY3VyaXR5VHJ1c3RTdHlsZSgndXJsKFxcJycgKyBmaWxlUHJldmlld1VybCArICdcXCcpJyk7XHJcbiAgfVxyXG5cclxuICAvKlxyXG4gICAgVGhpcyBpcyBhIHdyYXBwZXIgbWV0aG9kIHRvIGF2b2lkIGNhbGxpbmcgdGhpcy5uZ09uSW5pdCgpIGluIHdyaXRlVmFsdWUoKS5cclxuICAgIFJlZjogaHR0cDovL2NvZGVseXplci5jb20vcnVsZXMvbm8tbGlmZS1jeWNsZS1jYWxsL1xyXG4gICovXHJcbiAgaW5pdCgpIHtcclxuICAgIHRoaXMuZmV0Y2hDb3VudHJ5RGF0YSgpO1xyXG5cclxuICAgIGlmICh0aGlzLnByZWZlcnJlZENvdW50cmllcy5sZW5ndGgpIHtcclxuICAgICAgdGhpcy51cGRhdGVQcmVmZXJyZWRDb3VudHJpZXMoKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm9ubHlDb3VudHJpZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuYWxsQ291bnRyaWVzID0gdGhpcy5hbGxDb3VudHJpZXMuZmlsdGVyKChjKSA9PlxyXG4gICAgICAgIHRoaXMub25seUNvdW50cmllcy5pbmNsdWRlcyhjLmlzbzIpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWxlY3RGaXJzdENvdW50cnkpIHtcclxuICAgICAgaWYgKHRoaXMucHJlZmVycmVkQ291bnRyaWVzSW5Ecm9wRG93bi5sZW5ndGgpIHtcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkQ291bnRyeSh0aGlzLnByZWZlcnJlZENvdW50cmllc0luRHJvcERvd25bMF0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRDb3VudHJ5KHRoaXMuYWxsQ291bnRyaWVzWzBdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVTZWxlY3RlZENvdW50cnkoKTtcclxuICAgIHRoaXMuY2hlY2tTZXBhcmF0ZURpYWxDb2RlU3R5bGUoKTtcclxuICAgIHRoaXMuX3VwZGF0ZU1hc2soKVxyXG4gIH1cclxuXHJcbiAgc2V0U2VsZWN0ZWRDb3VudHJ5KGNvdW50cnk6IENvdW50cnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRDb3VudHJ5ID0gY291bnRyeTtcclxuICAgIHRoaXMuY291bnRyeUNoYW5nZS5lbWl0KGNvdW50cnkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXRWYWx1ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGNsZWFuZWRWYWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1tcXHMtKCldL2csICcnKVxyXG5cclxuICAgIGlmICh0aGlzLmF1dG9NYXNrKSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZSA9PT0gdGhpcy5pbm5lck1hc2tQcmVmaXggPyAnJyA6IGNsZWFuZWRWYWx1ZVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGNsZWFuZWRWYWx1ZS5sZW5ndGggPT09IHRoaXMubWFza1ByZWZpeC5sZW5ndGggPyAnJyA6IGNsZWFuZWRWYWx1ZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlTWFzaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmF1dG9NYXNrKSB7XHJcbiAgICAgIHRoaXMuaW5uZXJNYXNrID0gJydcclxuICAgICAgdGhpcy5pbm5lck1hc2tQcmVmaXggPSAnJ1xyXG5cclxuICAgICAgaWYgKHRoaXMucGhvbmVJbnB1dCkge1xyXG4gICAgICAgIHRoaXMucGhvbmVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyAnXHJcbiAgICAgICAgdGhpcy52YWx1ZSA9ICcgJ1xyXG4gICAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSAnICdcclxuICAgICAgfVxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZENvdW50cnkubWFzaykge1xyXG4gICAgICAgICAgdGhpcy5pbm5lck1hc2sgPSB0aGlzLnNlbGVjdGVkQ291bnRyeS5tYXNrLm1hc2tcclxuICAgICAgICAgIHRoaXMuaW5uZXJNYXNrUHJlZml4ID0gdGhpcy5zZWxlY3RlZENvdW50cnkubWFzay5tYXNrUHJlZml4XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuaW5uZXJNYXNrID0gJydcclxuICAgICAgICAgIHRoaXMuaW5uZXJNYXNrUHJlZml4ID0gJydcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDApXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VhcmNoQ291bnRyeSgpIHtcclxuICAgIGlmICghdGhpcy5jb3VudHJ5U2VhcmNoVGV4dCkge1xyXG4gICAgICB0aGlzLmNvdW50cnlMaXN0Lm5hdGl2ZUVsZW1lbnRcclxuICAgICAgICAucXVlcnlTZWxlY3RvcignLm1yeC1pbnB1dC1waG9uZV9fY291bnRyeS1saXN0IGxpJylcclxuICAgICAgICAuc2Nyb2xsSW50b1ZpZXcoe1xyXG4gICAgICAgICAgYmVoYXZpb3I6ICdzbW9vdGgnLFxyXG4gICAgICAgICAgYmxvY2s6ICduZWFyZXN0JyxcclxuICAgICAgICAgIGlubGluZTogJ25lYXJlc3QnLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb3VudHJ5U2VhcmNoVGV4dExvd2VyID0gdGhpcy5jb3VudHJ5U2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgY29uc3QgY291bnRyeSA9IHRoaXMuYWxsQ291bnRyaWVzLmZpbHRlcigoYykgPT4ge1xyXG4gICAgICBpZiAodGhpcy5zZWFyY2hDb3VudHJ5RmllbGQuaW5kZXhPZihTZWFyY2hDb3VudHJ5RmllbGQuQWxsKSA+IC0xKSB7XHJcbiAgICAgICAgLy8gU2VhcmNoIGluIGFsbCBmaWVsZHNcclxuICAgICAgICBpZiAoYy5pc28yLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjb3VudHJ5U2VhcmNoVGV4dExvd2VyKSkge1xyXG4gICAgICAgICAgcmV0dXJuIGM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjLm5hbWUudG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKGNvdW50cnlTZWFyY2hUZXh0TG93ZXIpKSB7XHJcbiAgICAgICAgICByZXR1cm4gYztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGMuZGlhbENvZGUuc3RhcnRzV2l0aCh0aGlzLmNvdW50cnlTZWFyY2hUZXh0KSkge1xyXG4gICAgICAgICAgcmV0dXJuIGM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIE9yIHNlYXJjaCBieSBzcGVjaWZpYyBTZWFyY2hDb3VudHJ5RmllbGQocylcclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hDb3VudHJ5RmllbGQuaW5kZXhPZihTZWFyY2hDb3VudHJ5RmllbGQuSXNvMikgPiAtMSkge1xyXG4gICAgICAgICAgaWYgKGMuaXNvMi50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY291bnRyeVNlYXJjaFRleHRMb3dlcikpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGM7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaENvdW50cnlGaWVsZC5pbmRleE9mKFNlYXJjaENvdW50cnlGaWVsZC5OYW1lKSA+IC0xKSB7XHJcbiAgICAgICAgICBpZiAoYy5uYW1lLnRvTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjb3VudHJ5U2VhcmNoVGV4dExvd2VyKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gYztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoQ291bnRyeUZpZWxkLmluZGV4T2YoU2VhcmNoQ291bnRyeUZpZWxkLkRpYWxDb2RlKSA+IC0xKSB7XHJcbiAgICAgICAgICBpZiAoYy5kaWFsQ29kZS5zdGFydHNXaXRoKHRoaXMuY291bnRyeVNlYXJjaFRleHQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBjO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKGNvdW50cnkubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBlbCA9IHRoaXMuY291bnRyeUxpc3QubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICcjJyArIGNvdW50cnlbMF0uaHRtbElkXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChlbCkge1xyXG4gICAgICAgIGVsLnNjcm9sbEludG9WaWV3KHtcclxuICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcclxuICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCcsXHJcbiAgICAgICAgICBpbmxpbmU6ICduZWFyZXN0JyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY2hlY2tTZXBhcmF0ZURpYWxDb2RlU3R5bGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblBob25lTnVtYmVyQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgbGV0IGNvdW50cnlDb2RlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlIHVzZXIgc2V0cyB0aGUgdmFsdWUgcHJvZ3JhbWF0aWNhbGx5IGJhc2VkIG9uIGEgcGVyc2lzdGVkIENoYW5nZURhdGEgb2JqLlxyXG4gICAgaWYgKHRoaXMucGhvbmVOdW1iZXIgJiYgdHlwZW9mIHRoaXMucGhvbmVOdW1iZXIgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIGNvbnN0IG51bWJlck9iajogQ2hhbmdlRGF0YSA9IHRoaXMucGhvbmVOdW1iZXI7XHJcbiAgICAgIHRoaXMucGhvbmVOdW1iZXIgPSBudW1iZXJPYmoubnVtYmVyO1xyXG4gICAgICBjb3VudHJ5Q29kZSA9IG51bWJlck9iai5jb3VudHJ5Q29kZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnZhbHVlID0gdGhpcy5waG9uZU51bWJlcjtcclxuICAgIGNvdW50cnlDb2RlID0gY291bnRyeUNvZGUgfHwgdGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMjtcclxuICAgIC8vIEB0cy1pZ25vcmVcclxuICAgIGNvbnN0IG51bWJlciA9IHRoaXMuZ2V0UGFyc2VkTnVtYmVyKHRoaXMucGhvbmVOdW1iZXIsIGNvdW50cnlDb2RlKTtcclxuXHJcbiAgICAvLyBhdXRvIHNlbGVjdCBjb3VudHJ5IGJhc2VkIG9uIHRoZSBleHRlbnNpb24gKGFuZCBhcmVhQ29kZSBpZiBuZWVkZWQpIChlLmcgc2VsZWN0IENhbmFkYSBpZiBudW1iZXIgc3RhcnRzIHdpdGggKzEgNDE2KVxyXG4gICAgaWYgKHRoaXMuZW5hYmxlQXV0b0NvdW50cnlTZWxlY3QpIHtcclxuICAgICAgY291bnRyeUNvZGUgPVxyXG4gICAgICAgIG51bWJlciAmJiBudW1iZXIuZ2V0Q291bnRyeUNvZGUoKVxyXG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgPyB0aGlzLmdldENvdW50cnlJc29Db2RlKG51bWJlci5nZXRDb3VudHJ5Q29kZSgpLCBudW1iZXIpXHJcbiAgICAgICAgICA6IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmlzbzI7XHJcbiAgICAgIGlmIChjb3VudHJ5Q29kZSAmJiBjb3VudHJ5Q29kZSAhPT0gdGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMikge1xyXG4gICAgICAgIGNvbnN0IG5ld0NvdW50cnkgPSB0aGlzLmFsbENvdW50cmllc1xyXG4gICAgICAgICAgLnNvcnQoKGEsIGIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGEucHJpb3JpdHkgLSBiLnByaW9yaXR5O1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5maW5kKChjKSA9PiBjLmlzbzIgPT09IGNvdW50cnlDb2RlKTtcclxuICAgICAgICBpZiAobmV3Q291bnRyeSkge1xyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZENvdW50cnkgPSBuZXdDb3VudHJ5O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY291bnRyeUNvZGUgPSBjb3VudHJ5Q29kZSA/IGNvdW50cnlDb2RlIDogdGhpcy5zZWxlY3RlZENvdW50cnkuaXNvMjtcclxuXHJcbiAgICB0aGlzLmNoZWNrU2VwYXJhdGVEaWFsQ29kZVN0eWxlKCk7XHJcblxyXG4gICAgaWYgKCF0aGlzLnZhbHVlIHx8ICh0aGlzLmF1dG9NYXNrICYmIHRoaXMuaW5uZXJNYXNrUHJlZml4ID09PSB0aGlzLnZhbHVlKSkge1xyXG4gICAgICAvLyBSZWFzb246IGF2b2lkIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vYS81NDM1ODEzMy8xNjE3NTkwXHJcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTogbm8tbnVsbC1rZXl3b3JkXHJcblxyXG4gICAgICB0aGlzLnZhbHVlID0gJydcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZShudWxsKTtcclxuICAgICAgdGhpcy5udW1iZXJDaGFuZ2UuZW1pdChudWxsKVxyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBudWxsLCBpZDogdGhpcy51dWlkfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGludGxObyA9IG51bWJlclxyXG4gICAgICAgID8gdGhpcy5waG9uZVV0aWwuZm9ybWF0KG51bWJlciwgbHBuLlBob25lTnVtYmVyRm9ybWF0LklOVEVSTkFUSU9OQUwpXHJcbiAgICAgICAgOiAnJztcclxuXHJcbiAgICAgIC8vIHBhcnNlIHBob25lTnVtYmVyIGlmIHNlcGFyYXRlIGRpYWwgY29kZSBpcyBuZWVkZWRcclxuICAgICAgaWYgKHRoaXMuc2VwYXJhdGVEaWFsQ29kZSAmJiBpbnRsTm8pIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy5yZW1vdmVEaWFsQ29kZShpbnRsTm8pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLnZhbHVlKVxyXG4gICAgICBjb25zdCBlbWl0VmFsdWUgPSB7XHJcbiAgICAgICAgbnVtYmVyOiB0aGlzLnZhbHVlLFxyXG4gICAgICAgIGludGVybmF0aW9uYWxOdW1iZXI6IGludGxObyxcclxuICAgICAgICBuYXRpb25hbE51bWJlcjogbnVtYmVyXHJcbiAgICAgICAgICA/IHRoaXMucGhvbmVVdGlsLmZvcm1hdChudW1iZXIsIGxwbi5QaG9uZU51bWJlckZvcm1hdC5OQVRJT05BTClcclxuICAgICAgICAgIDogJycsXHJcbiAgICAgICAgZTE2NE51bWJlcjogbnVtYmVyXHJcbiAgICAgICAgICA/IHRoaXMucGhvbmVVdGlsLmZvcm1hdChudW1iZXIsIGxwbi5QaG9uZU51bWJlckZvcm1hdC5FMTY0KVxyXG4gICAgICAgICAgOiAnJyxcclxuICAgICAgICBjb3VudHJ5Q29kZTogY291bnRyeUNvZGUudG9VcHBlckNhc2UoKSxcclxuICAgICAgICBkaWFsQ29kZTogJysnICsgdGhpcy5zZWxlY3RlZENvdW50cnkuZGlhbENvZGUsXHJcbiAgICAgICAgdW5Gb3JtYXROdW1iZXI6IHRoaXMuZm9ybWF0VmFsdWUodGhpcy52YWx1ZSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm51bWJlckNoYW5nZS5lbWl0KGVtaXRWYWx1ZSlcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogZW1pdFZhbHVlLCBpZDogdGhpcy51dWlkfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNvdW50cnlTZWxlY3QoY291bnRyeTogQ291bnRyeSwgZWw6IHsgZm9jdXM6ICgpID0+IHZvaWQ7IH0pOiB2b2lkIHtcclxuXHJcbiAgICBpZiAodGhpcy5hdXRvTWFzaykge1xyXG4gICAgICB0aGlzLnNldFNlbGVjdGVkQ291bnRyeSgoe1xyXG4gICAgICAgIGFyZWFDb2RlczogdW5kZWZpbmVkLFxyXG4gICAgICAgIGRpYWxDb2RlOiAnJyxcclxuICAgICAgICBodG1sSWQ6ICcnLFxyXG4gICAgICAgIGZsYWdDbGFzczogJycsXHJcbiAgICAgICAgaXNvMjogJycsXHJcbiAgICAgICAgbmFtZTogJycsXHJcbiAgICAgICAgcGxhY2VIb2xkZXI6ICcnLFxyXG4gICAgICAgIHByaW9yaXR5OiAwLFxyXG4gICAgICB9KSlcclxuICAgICAgdGhpcy5waG9uZU51bWJlciA9ICcnXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5zZXRTZWxlY3RlZENvdW50cnkoY291bnRyeSk7XHJcblxyXG4gICAgdGhpcy5jaGVja1NlcGFyYXRlRGlhbENvZGVTdHlsZSgpO1xyXG5cclxuICAgIGlmICh0aGlzLnBob25lTnVtYmVyICYmIHRoaXMucGhvbmVOdW1iZXIubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5waG9uZU51bWJlcjtcclxuICAgICAgY29uc3QgbnVtYmVyID0gdGhpcy5nZXRQYXJzZWROdW1iZXIoXHJcbiAgICAgICAgdGhpcy5waG9uZU51bWJlcixcclxuICAgICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeS5pc28yXHJcbiAgICAgICk7XHJcbiAgICAgIGNvbnN0IGludGxObyA9IG51bWJlclxyXG4gICAgICAgID8gdGhpcy5waG9uZVV0aWwuZm9ybWF0KG51bWJlciwgbHBuLlBob25lTnVtYmVyRm9ybWF0LklOVEVSTkFUSU9OQUwpXHJcbiAgICAgICAgOiAnJztcclxuICAgICAgLy8gcGFyc2UgcGhvbmVOdW1iZXIgaWYgc2VwYXJhdGUgZGlhbCBjb2RlIGlzIG5lZWRlZFxyXG4gICAgICBpZiAodGhpcy5zZXBhcmF0ZURpYWxDb2RlICYmIGludGxObykge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnJlbW92ZURpYWxDb2RlKGludGxObyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IGVtaXRWYWx1ZSA9IHtcclxuICAgICAgICBudW1iZXI6IHRoaXMudmFsdWUsXHJcbiAgICAgICAgaW50ZXJuYXRpb25hbE51bWJlcjogaW50bE5vLFxyXG4gICAgICAgIG5hdGlvbmFsTnVtYmVyOiBudW1iZXJcclxuICAgICAgICAgID8gdGhpcy5waG9uZVV0aWwuZm9ybWF0KG51bWJlciwgbHBuLlBob25lTnVtYmVyRm9ybWF0Lk5BVElPTkFMKVxyXG4gICAgICAgICAgOiAnJyxcclxuICAgICAgICBlMTY0TnVtYmVyOiBudW1iZXJcclxuICAgICAgICAgID8gdGhpcy5waG9uZVV0aWwuZm9ybWF0KG51bWJlciwgbHBuLlBob25lTnVtYmVyRm9ybWF0LkUxNjQpXHJcbiAgICAgICAgICA6ICcnLFxyXG4gICAgICAgIGNvdW50cnlDb2RlOiB0aGlzLnNlbGVjdGVkQ291bnRyeS5pc28yLnRvVXBwZXJDYXNlKCksXHJcbiAgICAgICAgZGlhbENvZGU6ICcrJyArIHRoaXMuc2VsZWN0ZWRDb3VudHJ5LmRpYWxDb2RlLFxyXG4gICAgICAgIHVuRm9ybWF0TnVtYmVyOiB0aGlzLmZvcm1hdFZhbHVlKHRoaXMudmFsdWUpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMubnVtYmVyQ2hhbmdlLmVtaXQoZW1pdFZhbHVlKVxyXG4gICAgICB0aGlzLm1vZGVsQ2hhbmdlLmVtaXQoe3ZhbHVlOiBlbWl0VmFsdWUsIGlkOiB0aGlzLnV1aWR9KVxyXG5cclxuICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UodGhpcy52YWx1ZSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKCcnKTtcclxuXHJcbiAgICAgIHRoaXMubnVtYmVyQ2hhbmdlLmVtaXQobnVsbClcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHt2YWx1ZTogbnVsbCwgaWQ6IHRoaXMudXVpZH0pXHJcbiAgICB9XHJcbiAgICB0aGlzLl91cGRhdGVNYXNrKClcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbklucHV0S2V5UHJlc3MoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFsbG93ZWRDaGFycyA9IC9bMC05XFwrXFwtXFwoXFwpXFwgXS87XHJcbiAgICBjb25zdCBhbGxvd2VkQ3RybENoYXJzID0gL1theGN2XS87XHJcbiAgICBjb25zdCBhbGxvd2VkT3RoZXJLZXlzID0gW1xyXG4gICAgICAnQXJyb3dMZWZ0JyxcclxuICAgICAgJ0Fycm93VXAnLFxyXG4gICAgICAnQXJyb3dSaWdodCcsXHJcbiAgICAgICdBcnJvd0Rvd24nLFxyXG4gICAgICAnSG9tZScsXHJcbiAgICAgICdFbmQnLFxyXG4gICAgICAnSW5zZXJ0JyxcclxuICAgICAgJ0RlbGV0ZScsXHJcbiAgICAgICdCYWNrc3BhY2UnLFxyXG4gICAgXTtcclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICFhbGxvd2VkQ2hhcnMudGVzdChldmVudC5rZXkpICYmXHJcbiAgICAgICEoZXZlbnQuY3RybEtleSAmJiBhbGxvd2VkQ3RybENoYXJzLnRlc3QoZXZlbnQua2V5KSkgJiZcclxuICAgICAgIWFsbG93ZWRPdGhlcktleXMuaW5jbHVkZXMoZXZlbnQua2V5KVxyXG4gICAgKSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlID0gZm47XHJcbiAgfVxyXG5cclxuICByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KSB7XHJcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xyXG4gIH1cclxuXHJcbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcclxuICB9XHJcblxyXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChvYmogPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuICAgIHRoaXMucGhvbmVOdW1iZXIgPSBvYmo7XHJcbiAgfVxyXG5cclxuICByZXNvbHZlUGxhY2Vob2xkZXIoKTogc3RyaW5nIHtcclxuICAgIGxldCBwbGFjZWhvbGRlciA9ICcnO1xyXG4gICAgaWYgKHRoaXMuY3VzdG9tUGxhY2Vob2xkZXIpIHtcclxuICAgICAgcGxhY2Vob2xkZXIgPSB0aGlzLmN1c3RvbVBsYWNlaG9sZGVyO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkQ291bnRyeS5wbGFjZUhvbGRlcikge1xyXG4gICAgICBwbGFjZWhvbGRlciA9IHRoaXMuc2VsZWN0ZWRDb3VudHJ5LnBsYWNlSG9sZGVyO1xyXG4gICAgICBpZiAodGhpcy5zZXBhcmF0ZURpYWxDb2RlKSB7XHJcbiAgICAgICAgcGxhY2Vob2xkZXIgPSB0aGlzLnJlbW92ZURpYWxDb2RlKHBsYWNlaG9sZGVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyO1xyXG4gIH1cclxuXHJcbiAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEhlbHBlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHBhcnNlIFBob25lTnVtYmVyIG9iamVjdC5cclxuICAgKiBAcGFyYW0gcGhvbmVOdW1iZXIgc3RyaW5nXHJcbiAgICogQHBhcmFtIGNvdW50cnlDb2RlIHN0cmluZ1xyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0UGFyc2VkTnVtYmVyKFxyXG4gICAgcGhvbmVOdW1iZXI6IHN0cmluZyxcclxuICAgIGNvdW50cnlDb2RlOiBzdHJpbmdcclxuICApOiBscG4uUGhvbmVOdW1iZXIge1xyXG4gICAgbGV0IG51bWJlcjogbHBuLlBob25lTnVtYmVyO1xyXG4gICAgdHJ5IHtcclxuICAgICAgbnVtYmVyID0gdGhpcy5waG9uZVV0aWwucGFyc2UocGhvbmVOdW1iZXIsIGNvdW50cnlDb2RlLnRvVXBwZXJDYXNlKCkpO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgfVxyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgcmV0dXJuIG51bWJlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkanVzdHMgaW5wdXQgYWxpZ25tZW50IGJhc2VkIG9uIHRoZSBkaWFsIGNvZGUgcHJlc2VudGF0aW9uIHN0eWxlLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgY2hlY2tTZXBhcmF0ZURpYWxDb2RlU3R5bGUoKSB7XHJcbiAgICBpZiAodGhpcy5zZXBhcmF0ZURpYWxDb2RlICYmIHRoaXMuc2VsZWN0ZWRDb3VudHJ5KSB7XHJcbiAgICAgIGNvbnN0IGNudHJ5Q2QgPSB0aGlzLnNlbGVjdGVkQ291bnRyeS5kaWFsQ29kZTtcclxuICAgICAgdGhpcy5zZXBhcmF0ZURpYWxDb2RlQ2xhc3MgPVxyXG4gICAgICAgICdzZXBhcmF0ZS1kaWFsLWNvZGUgaXRpLXNkYy0nICsgKGNudHJ5Q2QubGVuZ3RoICsgMSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlcGFyYXRlRGlhbENvZGVDbGFzcyA9ICcnO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYW5zIGRpYWxjb2RlIGZyb20gcGhvbmUgbnVtYmVyIHN0cmluZy5cclxuICAgKiBAcGFyYW0gcGhvbmVOdW1iZXIgc3RyaW5nXHJcbiAgICovXHJcbiAgcHJpdmF0ZSByZW1vdmVEaWFsQ29kZShwaG9uZU51bWJlcjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IG51bWJlciA9IHRoaXMuZ2V0UGFyc2VkTnVtYmVyKHBob25lTnVtYmVyLCB0aGlzLnNlbGVjdGVkQ291bnRyeS5pc28yKTtcclxuICAgIHBob25lTnVtYmVyID0gdGhpcy5waG9uZVV0aWwuZm9ybWF0KFxyXG4gICAgICBudW1iZXIsXHJcbiAgICAgIGxwbi5QaG9uZU51bWJlckZvcm1hdFt0aGlzLm51bWJlckZvcm1hdF1cclxuICAgICk7XHJcbiAgICBpZiAocGhvbmVOdW1iZXIuc3RhcnRzV2l0aCgnKycpICYmIHRoaXMuc2VwYXJhdGVEaWFsQ29kZSkge1xyXG4gICAgICBwaG9uZU51bWJlciA9IHBob25lTnVtYmVyLnN1YnN0cihwaG9uZU51bWJlci5pbmRleE9mKCcgJykgKyAxKTtcclxuICAgIH1cclxuICAgIHJldHVybiBwaG9uZU51bWJlcjtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFNpZnRzIHRocm91Z2ggYWxsIGNvdW50cmllcyBhbmQgcmV0dXJucyBpc28gY29kZSBvZiB0aGUgcHJpbWFyeSBjb3VudHJ5XHJcbiAgICogYmFzZWQgb24gdGhlIG51bWJlciBwcm92aWRlZC5cclxuICAgKiBAcGFyYW0gY291bnRyeUNvZGUgY291bnRyeSBjb2RlIGluIG51bWJlciBmb3JtYXRcclxuICAgKiBAcGFyYW0gbnVtYmVyIFBob25lTnVtYmVyIG9iamVjdFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ2V0Q291bnRyeUlzb0NvZGUoXHJcbiAgICBjb3VudHJ5Q29kZTogbnVtYmVyLFxyXG4gICAgbnVtYmVyOiBscG4uUGhvbmVOdW1iZXJcclxuICApOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgLy8gV2lsbCB1c2UgdGhpcyB0byBtYXRjaCBhcmVhIGNvZGUgZnJvbSB0aGUgZmlyc3QgbnVtYmVyc1xyXG4gICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgY29uc3QgcmF3TnVtYmVyID0gbnVtYmVyWyd2YWx1ZXNfJ11bJzInXS50b1N0cmluZygpO1xyXG4gICAgLy8gTGlzdCBvZiBhbGwgY291bnRyaWVzIHdpdGggY291bnRyeUNvZGUgKGNhbiBiZSBtb3JlIHRoYW4gb25lLiBlLnguIFVTLCBDQSwgRE8sIFBSIGFsbCBoYXZlICsxIGNvdW50cnlDb2RlKVxyXG4gICAgY29uc3QgY291bnRyaWVzID0gdGhpcy5hbGxDb3VudHJpZXMuZmlsdGVyKFxyXG4gICAgICAoYykgPT4gYy5kaWFsQ29kZSA9PT0gY291bnRyeUNvZGUudG9TdHJpbmcoKVxyXG4gICAgKTtcclxuICAgIC8vIE1haW4gY291bnRyeSBpcyB0aGUgY291bnRyeSwgd2hpY2ggaGFzIG5vIGFyZWFDb2RlcyBzcGVjaWZpZWQgaW4gY291bnRyeS1jb2RlLnRzIGZpbGUuXHJcbiAgICBjb25zdCBtYWluQ291bnRyeSA9IGNvdW50cmllcy5maW5kKChjKSA9PiBjLmFyZWFDb2RlcyA9PT0gdW5kZWZpbmVkKTtcclxuICAgIC8vIFNlY29uZGFyeSBjb3VudHJpZXMgYXJlIGFsbCBjb3VudHJpZXMsIHdoaWNoIGhhdmUgYXJlYUNvZGVzIHNwZWNpZmllZCBpbiBjb3VudHJ5LWNvZGUudHMgZmlsZS5cclxuICAgIGNvbnN0IHNlY29uZGFyeUNvdW50cmllcyA9IGNvdW50cmllcy5maWx0ZXIoXHJcbiAgICAgIChjKSA9PiBjLmFyZWFDb2RlcyAhPT0gdW5kZWZpbmVkXHJcbiAgICApO1xyXG4gICAgbGV0IG1hdGNoZWRDb3VudHJ5ID0gbWFpbkNvdW50cnkgPyBtYWluQ291bnRyeS5pc28yIDogdW5kZWZpbmVkO1xyXG5cclxuICAgIC8qXHJcbiAgICAgIEl0ZXJhdGUgb3ZlciBlYWNoIHNlY29uZGFyeSBjb3VudHJ5IGFuZCBjaGVjayBpZiBuYXRpb25hbE51bWJlciBzdGFydHMgd2l0aCBhbnkgb2YgYXJlYUNvZGVzIGF2YWlsYWJsZS5cclxuICAgICAgSWYgbm8gbWF0Y2hlcyBmb3VuZCwgZmFsbGJhY2sgdG8gdGhlIG1haW4gY291bnRyeS5cclxuICAgICovXHJcbiAgICBzZWNvbmRhcnlDb3VudHJpZXMuZm9yRWFjaCgoY291bnRyeSkgPT4ge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIGNvdW50cnkuYXJlYUNvZGVzLmZvckVhY2goKGFyZWFDb2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKHJhd051bWJlci5zdGFydHNXaXRoKGFyZWFDb2RlKSkge1xyXG4gICAgICAgICAgbWF0Y2hlZENvdW50cnkgPSBjb3VudHJ5LmlzbzI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiBtYXRjaGVkQ291bnRyeTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldHMgZm9ybWF0dGVkIGV4YW1wbGUgcGhvbmUgbnVtYmVyIGZyb20gcGhvbmVVdGlsLlxyXG4gICAqIEBwYXJhbSBjb3VudHJ5Q29kZSBzdHJpbmdcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgZ2V0UGhvbmVOdW1iZXJQbGFjZUhvbGRlcihjb3VudHJ5Q29kZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBob25lVXRpbC5mb3JtYXQoXHJcbiAgICAgICAgdGhpcy5waG9uZVV0aWwuZ2V0RXhhbXBsZU51bWJlcihjb3VudHJ5Q29kZSksXHJcbiAgICAgICAgbHBuLlBob25lTnVtYmVyRm9ybWF0W3RoaXMubnVtYmVyRm9ybWF0XVxyXG4gICAgICApO1xyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIHJldHVybiBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldFBob25lTnVtYmVyTWFzayhjb3VudHJ5Q29kZTogc3RyaW5nKTogTWFza0kge1xyXG4gICAgdHJ5IHtcclxuICAgICAgcmV0dXJuIE1hc2tDb2RlW2NvdW50cnlDb2RlXVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgIHJldHVybiBlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ2xlYXJpbmcgdGhlIGxpc3QgdG8gYXZvaWQgZHVwbGljYXRlcyAoaHR0cHM6Ly9naXRodWIuY29tL3dlYmNhdDEyMzQ1L25neC1pbnRsLXRlbC1pbnB1dC9pc3N1ZXMvMjQ4KVxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBmZXRjaENvdW50cnlEYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGxDb3VudHJpZXMgPSBbXTtcclxuXHJcbiAgICB0aGlzLmNvdW50cnlDb2RlRGF0YS5hbGxDb3VudHJpZXMuZm9yRWFjaCgoYykgPT4ge1xyXG4gICAgICBjb25zdCBjb3VudHJ5OiBDb3VudHJ5ID0ge1xyXG4gICAgICAgIG5hbWU6IGNbMF0udG9TdHJpbmcoKSxcclxuICAgICAgICBpc28yOiBjWzFdLnRvU3RyaW5nKCksXHJcbiAgICAgICAgZGlhbENvZGU6IGNbMl0udG9TdHJpbmcoKSxcclxuICAgICAgICBwcmlvcml0eTogK2NbM10gfHwgMCxcclxuICAgICAgICBhcmVhQ29kZXM6IChjWzRdIGFzIHN0cmluZ1tdKSB8fCB1bmRlZmluZWQsXHJcbiAgICAgICAgaHRtbElkOiBgaXRpLTBfX2l0ZW0tJHtjWzFdLnRvU3RyaW5nKCl9YCxcclxuICAgICAgICBmbGFnQ2xhc3M6IGBpdGlfXyR7Y1sxXS50b1N0cmluZygpLnRvTG9jYWxlTG93ZXJDYXNlKCl9YCxcclxuICAgICAgICBwbGFjZUhvbGRlcjogJycsXHJcbiAgICAgIH07XHJcblxyXG4gICAgICBpZiAodGhpcy5lbmFibGVQbGFjZWhvbGRlcikge1xyXG4gICAgICAgIGNvdW50cnkucGxhY2VIb2xkZXIgPSB0aGlzLmdldFBob25lTnVtYmVyUGxhY2VIb2xkZXIoXHJcbiAgICAgICAgICBjb3VudHJ5LmlzbzIudG9VcHBlckNhc2UoKVxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLmF1dG9NYXNrKSB7XHJcbiAgICAgICAgY291bnRyeS5tYXNrID0gdGhpcy5nZXRQaG9uZU51bWJlck1hc2soY291bnRyeS5pc28yLnRvVXBwZXJDYXNlKCkpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuYWxsQ291bnRyaWVzLnB1c2goY291bnRyeSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFBvcHVsYXRlcyBwcmVmZXJyZWRDb3VudHJpZXNJbkRyb3BEb3duIHdpdGggcHJlZmZlcnJlZCBjb3VudHJpZXMuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVQcmVmZXJyZWRDb3VudHJpZXMoKSB7XHJcbiAgICBpZiAodGhpcy5wcmVmZXJyZWRDb3VudHJpZXMubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucHJlZmVycmVkQ291bnRyaWVzSW5Ecm9wRG93biA9IFtdO1xyXG4gICAgICB0aGlzLnByZWZlcnJlZENvdW50cmllcy5mb3JFYWNoKChpc28yKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcHJlZmVycmVkQ291bnRyeSA9IHRoaXMuYWxsQ291bnRyaWVzLmZpbHRlcigoYykgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIGMuaXNvMiA9PT0gaXNvMjtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5wcmVmZXJyZWRDb3VudHJpZXNJbkRyb3BEb3duLnB1c2gocHJlZmVycmVkQ291bnRyeVswXSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlcyBzZWxlY3RlZENvdW50cnkuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZENvdW50cnkoKSB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZENvdW50cnlJU08pIHtcclxuICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICB0aGlzLnNlbGVjdGVkQ291bnRyeSA9IHRoaXMuYWxsQ291bnRyaWVzLmZpbmQoKGMpID0+IHtcclxuICAgICAgICByZXR1cm4gYy5pc28yLnRvTG93ZXJDYXNlKCkgPT09IHRoaXMuc2VsZWN0ZWRDb3VudHJ5SVNPLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAodGhpcy5zZWxlY3RlZENvdW50cnkpIHtcclxuICAgICAgICBpZiAodGhpcy5waG9uZU51bWJlcikge1xyXG4gICAgICAgICAgdGhpcy5vblBob25lTnVtYmVyQ2hhbmdlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKCcnKTtcclxuICAgICAgICAgIHRoaXMubnVtYmVyQ2hhbmdlLmVtaXQobnVsbClcclxuICAgICAgICAgIC8vIHRoaXMubW9kZWxDaGFuZ2UuZW1pdCh7dmFsdWU6IG51bGwsIGlkOiB0aGlzLnV1aWR9KVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXBob25lXCIgW2NsYXNzXT1cImdldENsYXNzZXNcIiBbY2xhc3MubXJ4LWlucHV0LWVycm9yXT1cImludmFsaWRcIj5cclxuICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXBob25lX193cmFwcGVyXCIgW25nQ2xhc3NdPVwic2VwYXJhdGVEaWFsQ29kZUNsYXNzXCI+XHJcbiAgICA8aW5wdXRcclxuICAgICAgI3Bob25lSW5wdXRcclxuICAgICAgdHlwZT1cInRlbFwiXHJcbiAgICAgIFtpZF09XCJpbnB1dElkXCJcclxuICAgICAgWyhuZ01vZGVsKV09XCJwaG9uZU51bWJlclwiXHJcbiAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uUGhvbmVOdW1iZXJDaGFuZ2UoKVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cImNzc0NsYXNzXCJcclxuICAgICAgW2F1dG9jb21wbGV0ZV09XCInb2ZmJ1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJyZXNvbHZlUGxhY2Vob2xkZXIoKVwiXHJcbiAgICAgIFthdHRyLm1heExlbmd0aF09XCJtYXhMZW5ndGhcIlxyXG4gICAgICBbYXR0ci52YWxpZGF0aW9uXT1cInBob25lVmFsaWRhdGlvblwiXHJcbiAgICAgIFttYXNrXT1cImlubmVyTWFzayB8fCBtYXNrXCJcclxuICAgICAgW3ByZWZpeF09XCJpbm5lck1hc2tQcmVmaXggfHwgbWFza1ByZWZpeFwiXHJcbiAgICAgIFtzaG93TWFza1R5cGVkXT1cInNob3dNYXNrVHlwZWRcIlxyXG4gICAgICBbZHJvcFNwZWNpYWxDaGFyYWN0ZXJzXT1cImF1dG9NYXNrID8gZmFsc2UgOiBtYXNrRHJvcFNwZWNpYWxDaGFyYWN0ZXJzXCJcclxuICAgICAgKGJsdXIpPVwib25Ub3VjaGVkKClcIlxyXG4gICAgICAoa2V5cHJlc3MpPVwib25JbnB1dEtleVByZXNzKCRldmVudClcIlxyXG4gICAgICAjZm9jdXNhYmxlXHJcbiAgICA+XHJcbiAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19mbGFnLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnZGlzYWJsZWQnOiBkaXNhYmxlZH1cIj5cclxuICAgICAgPG1yeC1kcm9wZG93biBjdXN0b21DbGFzc2VzPVwiaC0xMDBcIiBbbWFpblBsYWNlbWVudF09XCInYm90dG9tLXN0YXJ0J1wiIFtmYWxsYmFja1BsYWNlbWVudHNdPVwiWyd0b3Atc3RhcnQnXVwiPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZHJvcGRvd25Ub2dnbGU+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19zZWxlY3RlZC1mbGFnIGRyb3Bkb3duLXRvZ2dsZVwiPlxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2ZsYWdcIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNlbGVjdGVkQ291bnRyeS5mbGFnQ2xhc3MgfHwgJydcIlxyXG4gICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZXBhcmF0ZURpYWxDb2RlXCIgY2xhc3M9XCJzZWxlY3RlZC1kaWFsLWNvZGVcIj4re3tzZWxlY3RlZENvdW50cnkuZGlhbENvZGV9fTwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19hcnJvd1wiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXJ4LWljb24gaWNvbi1jaGV2cm9uLWRvd25cIj48L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNkcm9wZG93bk1lbnU+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWNvbnRhaW5lclwiICpuZ0lmPVwic2VhcmNoQ291bnRyeUZsYWcgJiYgc2VhcmNoQ291bnRyeUZpZWxkXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBpZD1cImNvdW50cnktc2VhcmNoLWJveFwiXHJcbiAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvdW50cnlTZWFyY2hUZXh0XCJcclxuICAgICAgICAgICAgICAgICAgIChrZXl1cCk9XCJzZWFyY2hDb3VudHJ5KClcIlxyXG4gICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoQ291bnRyeVBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgIGF1dG9mb2N1cz5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDx1bCBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fY291bnRyeS1saXN0XCIgI2NvdW50cnlMaXN0PlxyXG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2NvdW50cnkgaXRpX19wcmVmZXJyZWRcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvdW50cnkgb2YgcHJlZmVycmVkQ291bnRyaWVzSW5Ecm9wRG93blwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Db3VudHJ5U2VsZWN0KGNvdW50cnksIGZvY3VzYWJsZSlcIlxyXG4gICAgICAgICAgICAgICAgW2lkXT1cImNvdW50cnkuaHRtbElkKyctcHJlZmVycmVkJ1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2ZsYWctYm94XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19mbGFnXCJcclxuICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiY291bnRyeS5mbGFnQ2xhc3NcIj48L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fY291bnRyeS1uYW1lXCI+e3tjb3VudHJ5Lm5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fZGlhbC1jb2RlXCI+K3t7Y291bnRyeS5kaWFsQ29kZX19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19kaXZpZGVyXCIgKm5nSWY9XCJwcmVmZXJyZWRDb3VudHJpZXNJbkRyb3BEb3duPy5sZW5ndGhcIj48L2xpPlxyXG5cclxuICAgICAgICAgICAgPGxpIGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19jb3VudHJ5IGl0aV9fc3RhbmRhcmRcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvdW50cnkgb2YgYWxsQ291bnRyaWVzXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNvdW50cnlTZWxlY3QoY291bnRyeSwgZm9jdXNhYmxlKVwiXHJcbiAgICAgICAgICAgICAgICBbaWRdPVwiY291bnRyeS5odG1sSWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXJ4LWlucHV0LXBob25lX19mbGFnLWJveFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1yeC1pbnB1dC1waG9uZV9fZmxhZ1wiIFtuZ0NsYXNzXT1cImNvdW50cnkuZmxhZ0NsYXNzXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2NvdW50cnktbmFtZVwiPnt7Y291bnRyeS5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcngtaW5wdXQtcGhvbmVfX2RpYWwtY29kZVwiPit7e2NvdW50cnkuZGlhbENvZGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9saT5cclxuXHJcbiAgICAgICAgICA8L3VsPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgIDwvbXJ4LWRyb3Bkb3duPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxtcngtZXJyb3ItbWVzc2FnZVxyXG4gICAgKm5nSWY9XCIoIWlzVmFsaWQgfHwgaW52YWxpZCkgJiYgaXNJbnZhbGlkTWVzc2FnZVwiXHJcbiAgICBbaW52YWxpZE1lc3NhZ2VdPVwiaW52YWxpZE1lc3NhZ2VcIlxyXG4gID48L21yeC1lcnJvci1tZXNzYWdlPlxyXG5cclxuICA8bXJ4LXNhdmUtc3RhdGUgW2lkXT1cInV1aWRcIiBbZmllbGRzXT1cImZpZWxkc1wiPjwvbXJ4LXNhdmUtc3RhdGU+XHJcbjwvZGl2PlxyXG4iXX0=