ca-components 0.0.50 → 0.0.52

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 (165) hide show
  1. package/esm2022/lib/animations/area-left-side.animation.mjs +30 -0
  2. package/esm2022/lib/animations/area-right-side.animation.mjs +29 -0
  3. package/esm2022/lib/ca-components.module.mjs +13 -3
  4. package/esm2022/lib/components/ca-custom-datetime-pickers/ca-custom-datetime-pickers.component.mjs +11 -4
  5. package/esm2022/lib/components/ca-custom-datetime-pickers/utils/constants/custom-datetime-pickers.constants.mjs +15 -1
  6. package/esm2022/lib/components/ca-filters/ca-filter.component.mjs +44 -4
  7. package/esm2022/lib/components/ca-filters/components/ca-location-filter/ca-location-filter.component.mjs +282 -0
  8. package/esm2022/lib/components/ca-filters/components/ca-location-filter/config/ca-location-filter.config.mjs +52 -0
  9. package/esm2022/lib/components/ca-filters/components/ca-location-filter/models/area-box-tab.model.mjs +2 -0
  10. package/esm2022/lib/components/ca-filters/components/ca-location-filter/utils/constants/location-filter.constants.mjs +14 -0
  11. package/esm2022/lib/components/ca-filters/components/ca-money-filter/ca-money-filter.component.mjs +112 -496
  12. package/esm2022/lib/components/ca-filters/components/ca-money-filter/config/ca-miles-filter.config.mjs +21 -0
  13. package/esm2022/lib/components/ca-filters/components/ca-money-filter/config/ca-money-filter.config.mjs +3 -3
  14. package/esm2022/lib/components/ca-filters/components/ca-money-filter/enums/money-filter-string.enum.mjs +3 -1
  15. package/esm2022/lib/components/ca-filters/components/ca-state-filter/ca-state-filter.component.mjs +1 -1
  16. package/esm2022/lib/components/ca-filters/components/ca-status-filter/ca-status-filter.component.mjs +1 -1
  17. package/esm2022/lib/components/ca-filters/components/ca-time-filter/ca-time-filter.component.mjs +1 -1
  18. package/esm2022/lib/components/ca-filters/components/ca-trailer-type-filter/ca-trailer-type-filter.component.mjs +1 -1
  19. package/esm2022/lib/components/ca-filters/components/ca-truck-type-filter/ca-truck-type-filter.component.mjs +1 -1
  20. package/esm2022/lib/components/ca-filters/components/ca-violation-filter/ca-violation-filter.component.mjs +135 -0
  21. package/esm2022/lib/components/ca-filters/pipes/filter-conditions-clear.pipe.mjs +17 -3
  22. package/esm2022/lib/components/ca-filters/pipes/filter-conditions-set.pipe.mjs +27 -8
  23. package/esm2022/lib/components/ca-filters/pipes/filter-popover-conditions.pipe.mjs +11 -3
  24. package/esm2022/lib/components/ca-filters/utils/constants/filter-config.constants.mjs +40 -0
  25. package/esm2022/lib/components/ca-filters/utils/helpers/filter.helper.mjs +7 -1
  26. package/esm2022/lib/components/ca-filters/utils/helpers/index.mjs +2 -0
  27. package/esm2022/lib/components/ca-filters/validators/range.validator.mjs +13 -0
  28. package/esm2022/lib/components/ca-input/ca-input.component.mjs +3 -3
  29. package/esm2022/lib/components/ca-input/components/ca-input-clear/ca-input-clear.component.mjs +1 -1
  30. package/esm2022/lib/components/ca-input/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +3 -3
  31. package/esm2022/lib/components/ca-input/components/ca-input-placeholder-icon/ca-input-placeholder-icon.component.mjs +3 -3
  32. package/esm2022/lib/components/ca-input/config/ca-input.config.mjs +1 -1
  33. package/esm2022/lib/components/ca-input/pipes/input-placeholder-icon.class.pipe.mjs +1 -1
  34. package/esm2022/lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component.mjs +373 -0
  35. package/esm2022/lib/components/ca-input-address-dropdown/enums/input-address-commands-string.enum.mjs +8 -0
  36. package/esm2022/lib/components/ca-input-address-dropdown/enums/input-address-layers-string.enum.mjs +6 -0
  37. package/esm2022/lib/components/ca-input-address-dropdown/enums/input-address-stop-types-string.enum.mjs +6 -0
  38. package/esm2022/lib/components/ca-input-address-dropdown/enums/input-address-type-string.enum.mjs +6 -0
  39. package/esm2022/lib/components/ca-input-address-dropdown/models/address-data.model.mjs +2 -0
  40. package/esm2022/lib/components/ca-input-address-dropdown/models/address-list.model.mjs +2 -0
  41. package/esm2022/lib/components/ca-input-address-dropdown/models/command-properties.model.mjs +2 -0
  42. package/esm2022/lib/components/ca-input-address-dropdown/models/commands-handler.model.mjs +2 -0
  43. package/esm2022/lib/components/ca-input-address-dropdown/models/input-address-commands-string.model.mjs +2 -0
  44. package/esm2022/lib/components/ca-input-address-dropdown/models/long-lat.model.mjs +2 -0
  45. package/esm2022/lib/components/ca-input-address-dropdown/models/sent-address-data.model.mjs +2 -0
  46. package/esm2022/lib/components/ca-input-address-dropdown/validators/ca-input-address.regex-validations.mjs +11 -0
  47. package/esm2022/lib/components/ca-input-dropdown/animations/index.mjs +2 -0
  48. package/esm2022/lib/components/ca-input-dropdown/animations/input-dropdown.animation.mjs +11 -0
  49. package/esm2022/lib/components/ca-input-dropdown/ca-input-dropdown.component.mjs +877 -0
  50. package/esm2022/lib/components/ca-input-dropdown/models/input-dropdown-option.model.mjs +2 -0
  51. package/esm2022/lib/components/ca-input-dropdown/pipes/dropdown-count.pipe.mjs +29 -0
  52. package/esm2022/lib/components/ca-input-dropdown/pipes/index.mjs +2 -0
  53. package/esm2022/lib/components/ca-map/enums/toolbar-filter-string.enum.mjs +12 -1
  54. package/esm2022/lib/components/ca-ngx-slider/ca-ngx-slider.component.mjs +87 -0
  55. package/esm2022/lib/components/ca-ngx-slider/enums/slider-template.enum.mjs +8 -0
  56. package/esm2022/lib/components/ca-pickup-delivery-block/ca-pickup-delivery-block.component.mjs +9 -8
  57. package/esm2022/lib/components/ca-pickup-delivery-block/components/ca-load/ca-load.component.mjs +15 -9
  58. package/esm2022/lib/components/ca-profile-image/ca-profile-image.component.mjs +2 -2
  59. package/esm2022/lib/components/ca-rating-review/ca-rating-review.component.mjs +183 -0
  60. package/esm2022/lib/components/ca-rating-review/components/ca-rating-review-user/ca-rating-review-user.component.mjs +151 -0
  61. package/esm2022/lib/components/ca-rating-review/components/ca-ratings-reviews-popup/ca-ratings-reviews-popup.component.mjs +108 -0
  62. package/esm2022/lib/components/ca-rating-review/enums/rating-reviews-type.enums.mjs +17 -0
  63. package/esm2022/lib/components/ca-rating-review/models/rating-review.model.mjs +2 -0
  64. package/esm2022/lib/components/ca-rating-review/utils/config/rating-review-search.config.mjs +15 -0
  65. package/esm2022/lib/components/ca-rating-review/utils/helpers/sort-data.helper.mjs +11 -0
  66. package/esm2022/lib/components/ca-rating-review/utils/pipe/filter-title.pipe.mjs +20 -0
  67. package/esm2022/lib/components/ca-rating-review/utils/svg-routes/ratings-reviews.routes.mjs +14 -0
  68. package/esm2022/lib/components/ca-tab-switch/ca-tab-switch.component.mjs +104 -0
  69. package/esm2022/lib/components/ca-tab-switch/models/hover-style.model.mjs +2 -0
  70. package/esm2022/lib/components/ca-tab-switch/utils/constants/tab-switch.constants.mjs +7 -0
  71. package/esm2022/lib/models/address-entity.model.mjs +2 -0
  72. package/esm2022/lib/models/address-list-response.model.mjs +2 -0
  73. package/esm2022/lib/models/autocomplete-search-layer.model.mjs +17 -0
  74. package/esm2022/lib/models/dashboard/custom-period-range.model.mjs +2 -0
  75. package/esm2022/lib/models/dashboard/dropdown-list-item.model.mjs +2 -0
  76. package/esm2022/lib/models/highlight-text.model.mjs +2 -0
  77. package/esm2022/lib/models/tabs.model.mjs +2 -0
  78. package/esm2022/lib/pipes/date.pipe.mjs +36 -0
  79. package/esm2022/lib/pipes/highlight-search.pipe.mjs +47 -0
  80. package/esm2022/public-api.mjs +2 -1
  81. package/fesm2022/ca-components.mjs +2846 -612
  82. package/fesm2022/ca-components.mjs.map +1 -1
  83. package/lib/animations/area-left-side.animation.d.ts +1 -0
  84. package/lib/animations/area-right-side.animation.d.ts +1 -0
  85. package/lib/ca-components.module.d.ts +22 -20
  86. package/lib/components/ca-custom-datetime-pickers/ca-custom-datetime-pickers.component.d.ts +3 -3
  87. package/lib/components/ca-custom-datetime-pickers/utils/constants/custom-datetime-pickers.constants.d.ts +1 -0
  88. package/lib/components/ca-filters/ca-filter.component.d.ts +6 -1
  89. package/lib/components/ca-filters/components/ca-location-filter/ca-location-filter.component.d.ts +75 -0
  90. package/lib/components/ca-filters/components/ca-location-filter/config/ca-location-filter.config.d.ts +6 -0
  91. package/lib/components/ca-filters/components/ca-location-filter/models/area-box-tab.model.d.ts +5 -0
  92. package/lib/components/ca-filters/components/ca-location-filter/utils/constants/location-filter.constants.d.ts +11 -0
  93. package/lib/components/ca-filters/components/ca-money-filter/ca-money-filter.component.d.ts +23 -17
  94. package/lib/components/ca-filters/components/ca-money-filter/config/ca-miles-filter.config.d.ts +5 -0
  95. package/lib/components/ca-filters/components/ca-money-filter/enums/money-filter-string.enum.d.ts +2 -0
  96. package/lib/components/ca-filters/components/ca-violation-filter/ca-violation-filter.component.d.ts +39 -0
  97. package/lib/components/ca-filters/pipes/filter-conditions-clear.pipe.d.ts +3 -1
  98. package/lib/components/ca-filters/pipes/filter-conditions-set.pipe.d.ts +3 -1
  99. package/lib/components/ca-filters/utils/constants/filter-config.constants.d.ts +7 -0
  100. package/lib/components/ca-filters/utils/helpers/filter.helper.d.ts +2 -0
  101. package/lib/components/ca-filters/utils/helpers/index.d.ts +1 -0
  102. package/lib/components/ca-filters/validators/range.validator.d.ts +2 -0
  103. package/lib/components/ca-input/ca-input.component.d.ts +1 -1
  104. package/lib/components/ca-input/components/ca-input-clear/ca-input-clear.component.d.ts +1 -1
  105. package/lib/components/ca-input/components/ca-input-placeholder-icon/ca-input-placeholder-icon.component.d.ts +1 -1
  106. package/lib/components/ca-input/config/ca-input.config.d.ts +1 -0
  107. package/lib/components/ca-input/pipes/input-placeholder-icon.class.pipe.d.ts +1 -1
  108. package/lib/components/ca-input-address-dropdown/ca-input-address-dropdown.component.d.ts +68 -0
  109. package/lib/components/ca-input-address-dropdown/enums/input-address-commands-string.enum.d.ts +6 -0
  110. package/lib/components/ca-input-address-dropdown/enums/input-address-layers-string.enum.d.ts +4 -0
  111. package/lib/components/ca-input-address-dropdown/enums/input-address-stop-types-string.enum.d.ts +4 -0
  112. package/lib/components/ca-input-address-dropdown/enums/input-address-type-string.enum.d.ts +4 -0
  113. package/lib/components/ca-input-address-dropdown/models/address-data.model.d.ts +10 -0
  114. package/lib/components/ca-input-address-dropdown/models/address-list.model.d.ts +5 -0
  115. package/lib/components/ca-input-address-dropdown/models/command-properties.model.d.ts +7 -0
  116. package/lib/components/ca-input-address-dropdown/models/commands-handler.model.d.ts +7 -0
  117. package/lib/components/ca-input-address-dropdown/models/input-address-commands-string.model.d.ts +1 -0
  118. package/lib/components/ca-input-address-dropdown/models/long-lat.model.d.ts +4 -0
  119. package/lib/components/ca-input-address-dropdown/models/sent-address-data.model.d.ts +6 -0
  120. package/lib/components/ca-input-address-dropdown/validators/ca-input-address.regex-validations.d.ts +2 -0
  121. package/lib/components/ca-input-dropdown/animations/index.d.ts +1 -0
  122. package/lib/components/ca-input-dropdown/animations/input-dropdown.animation.d.ts +1 -0
  123. package/lib/components/ca-input-dropdown/ca-input-dropdown.component.d.ts +89 -0
  124. package/lib/components/ca-input-dropdown/models/input-dropdown-option.model.d.ts +28 -0
  125. package/lib/components/ca-input-dropdown/pipes/dropdown-count.pipe.d.ts +7 -0
  126. package/lib/components/ca-input-dropdown/pipes/index.d.ts +1 -0
  127. package/lib/components/ca-map/enums/toolbar-filter-string.enum.d.ts +10 -0
  128. package/lib/components/ca-ngx-slider/ca-ngx-slider.component.d.ts +24 -0
  129. package/lib/components/ca-ngx-slider/enums/slider-template.enum.d.ts +6 -0
  130. package/lib/components/ca-pickup-delivery-block/ca-pickup-delivery-block.component.d.ts +4 -5
  131. package/lib/components/ca-pickup-delivery-block/components/ca-load/ca-load.component.d.ts +2 -4
  132. package/lib/components/ca-rating-review/ca-rating-review.component.d.ts +49 -0
  133. package/lib/components/ca-rating-review/components/ca-rating-review-user/ca-rating-review-user.component.d.ts +37 -0
  134. package/lib/components/ca-rating-review/components/ca-ratings-reviews-popup/ca-ratings-reviews-popup.component.d.ts +32 -0
  135. package/lib/components/ca-rating-review/enums/rating-reviews-type.enums.d.ts +14 -0
  136. package/lib/components/ca-rating-review/models/rating-review.model.d.ts +12 -0
  137. package/lib/components/ca-rating-review/utils/config/rating-review-search.config.d.ts +4 -0
  138. package/lib/components/ca-rating-review/utils/helpers/sort-data.helper.d.ts +4 -0
  139. package/lib/components/ca-rating-review/utils/pipe/filter-title.pipe.d.ts +8 -0
  140. package/lib/components/ca-rating-review/utils/svg-routes/ratings-reviews.routes.d.ts +13 -0
  141. package/lib/components/ca-tab-switch/ca-tab-switch.component.d.ts +37 -0
  142. package/lib/components/ca-tab-switch/models/hover-style.model.d.ts +4 -0
  143. package/lib/components/ca-tab-switch/utils/constants/tab-switch.constants.d.ts +6 -0
  144. package/lib/models/address-entity.model.d.ts +12 -0
  145. package/lib/models/address-list-response.model.d.ts +3 -0
  146. package/lib/models/autocomplete-search-layer.model.d.ts +17 -0
  147. package/lib/models/dashboard/custom-period-range.model.d.ts +5 -0
  148. package/lib/models/dashboard/dropdown-list-item.model.d.ts +4 -0
  149. package/lib/models/highlight-text.model.d.ts +4 -0
  150. package/lib/models/tabs.model.d.ts +6 -0
  151. package/lib/pipes/date.pipe.d.ts +7 -0
  152. package/lib/pipes/highlight-search.pipe.d.ts +11 -0
  153. package/package.json +1 -1
  154. package/public-api.d.ts +1 -0
  155. package/src/assets/ca-components/svg/common/ic_address.svg +6 -0
  156. package/src/assets/ca-components/svg/input/ic_address.svg +6 -0
  157. package/src/assets/ca-components/svg/input/ic_miles.svg +3 -0
  158. package/src/assets/ca-components/svg/rating-reviews/colaps-button.svg +3 -0
  159. package/src/assets/ca-components/svg/rating-reviews/dislikes.svg +3 -0
  160. package/src/assets/ca-components/svg/rating-reviews/likes.svg +3 -0
  161. package/src/assets/ca-components/svg/rating-reviews/pen.svg +4 -0
  162. package/src/assets/ca-components/svg/rating-reviews/reviews.svg +3 -0
  163. package/src/assets/ca-components/svg/rating-reviews/sort_icon.svg +3 -0
  164. package/src/assets/ca-components/svg/rating-reviews/trash.svg +4 -0
  165. package/src/assets/ca-components/svg/search-multiple-states/new-search-icon.svg +1 -0
@@ -150,4 +150,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
150
150
  }], truckTypeArray: [{
151
151
  type: Input
152
152
  }] } });
153
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdHJ1Y2stdHlwZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtZmlsdGVycy9jb21wb25lbnRzL2NhLXRydWNrLXR5cGUtZmlsdGVyL2NhLXRydWNrLXR5cGUtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS10cnVjay10eXBlLWZpbHRlci9jYS10cnVjay10eXBlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULEtBQUssRUFDTCxpQkFBaUIsR0FFbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsVUFBVTtBQUNWLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVd4RCxVQUFVO0FBQ1YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpFLFFBQVE7QUFDUixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUUzRixZQUFZO0FBQ1osT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFFdkYsYUFBYTtBQUNiLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1B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QUksWUFDTiwwQkFBMEIsV0FHM0I7d0JBQ1AsVUFBVTt3QkFDVixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3FCQUNyQixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCO3dCQUNWLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDaEMsYUFBYSxDQUFDLGVBQWUsQ0FBQztxQkFDL0I7OEdBR1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgSW5wdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBSZW5kZXJlcjIsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbi8vIG1vZHVsZXNcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gbW9kZWxzXG5pbXBvcnQgeyB1c2VyU2VsZWN0ZWQgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvdXNlci1zZWxlY3RlZC5tb2RlbCc7XG5pbXBvcnQgeyBBcnJheVN0YXR1cyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9hcnJheS1zdGF0dXMubW9kZWwnO1xuaW1wb3J0IHsgZmlsdGVyT3V0cHV0IH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL2ZpbHRlci1vdXRwdXQubW9kZWwnO1xuaW1wb3J0IHsgZmlsdGVyT3V0cHV0V2l0aFBhcmFtcyB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9maWx0ZXItb3V0cHV0LXBhcmFtcy5tb2RlbCc7XG5cbi8vIHV0aWxzXG5pbXBvcnQgeyBDYUZpbHRlcnNTdmdSb3V0ZXMgfSBmcm9tICcuLi8uLi91dGlscy9zdmctcm91dGVzL2NhLWZpbHRlcnMtc3ZnLXJvdXRlcyc7XG5cbi8vIGhlbHBlcnNcbmltcG9ydCB7IEZpbHRlckhlbHBlciB9IGZyb20gJy4uLy4uL3V0aWxzL2hlbHBlcnMvZmlsdGVyLmhlbHBlcic7XG5cbi8vIGVudW1zXG5pbXBvcnQgeyBUb29sYmFyRmlsdGVyU3RyaW5nRW51bSB9IGZyb20gJy4uLy4uLy4uL2NhLW1hcC9lbnVtcy90b29sYmFyLWZpbHRlci1zdHJpbmcuZW51bSc7XG5cbi8vIGNvbnN0YW50c1xuaW1wb3J0IHsgRmlsdGVySWNvblJvdXRlcyB9IGZyb20gJy4uLy4uL3V0aWxzL2NvbnN0YW50cy9maWx0ZXItaWNvbnMtcm91dGVzLmNvbnN0YW50cyc7XG5cbi8vIGFuaW1hdGlvbnNcbmltcG9ydCB7IGluT3V0QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5pbWF0aW9ucy9pbi1vdXQuYW5pbWF0aW9uJztcbmltcG9ydCB7IHNob3dBbmltYXRpb24gfSBmcm9tICcuLi8uLi8uLi8uLi9hbmltYXRpb25zL3Nob3cuYW5pbWF0aW9uJztcblxuLy8gc2VydmljZXNcbmltcG9ydCB7IFRydWNrYXNzaXN0VGFibGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2VydmljZXMvdHJ1Y2thc3Npc3QtdGFibGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ2FwcC1jYS10cnVjay10eXBlLWZpbHRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jYS10cnVjay10eXBlLWZpbHRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NhLXRydWNrLXR5cGUtZmlsdGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGltcG9ydHM6IFtcbiAgICAvLyBtb2R1bGVzXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEh0dHBDbGllbnRNb2R1bGUsXG4gICAgQW5ndWxhclN2Z0ljb25Nb2R1bGUsXG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICBpbk91dEFuaW1hdGlvbignaW5PdXRBbmltYXRpb24nKSxcbiAgICBzaG93QW5pbWF0aW9uKCdzaG93QW5pbWF0aW9uJyksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENhVHJ1Y2tUeXBlRmlsdGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSB0eXBlITogc3RyaW5nO1xuICBASW5wdXQoKSBpc0ZpbHRlckFjdGl2ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBoYXNMZWZ0U2lkZUljb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdHJ1Y2tUeXBlQXJyYXkhOiBBcnJheVN0YXR1c1tdO1xuXG4gIHByaXZhdGUgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwdWJsaWMgc2VsZWN0ZWRUcnVja1R5cGVBcnJheTogQXJyYXlTdGF0dXNbXSA9IFtdO1xuICBwdWJsaWMgaXNCdXR0b25BdmFpbGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIGlzQXNjZW5kaW5nU29ydE9yZGVyOiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIGZpbHRlckFjdGl2ZUFycmF5OiBBcnJheVN0YXR1c1tdID0gW107XG4gIHB1YmxpYyB1bnNlbGVjdGVkVmlzaWJsZUNvdW50OiBudW1iZXIgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIC8vIHNlcnZpY2VzXG4gICAgcHJpdmF0ZSB0YWJsZVNlcnZpY2U6IFRydWNrYXNzaXN0VGFibGVTZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLndhdGNoVGFibGVTZXJ2aWNlVmFsdWVDaGFuZ2VzKCk7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeUlkZW50aXR5KGluZGV4OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiBpbmRleDtcbiAgfVxuXG4gIHB1YmxpYyBvbkZpbHRlckNsb3NlKCk6IHZvaWQge1xuICAgIEZpbHRlckhlbHBlci5oYW5kbGVGaWx0ZXJDbG9zZShcbiAgICAgIHRoaXMudHJ1Y2tUeXBlQXJyYXksXG4gICAgICB0aGlzLnNlbGVjdGVkVHJ1Y2tUeXBlQXJyYXksXG4gICAgICB0aGlzLnJlbW92ZUZyb21TZWxlY3RlZFVzZXIuYmluZCh0aGlzKSxcbiAgICAgIHRoaXMuYWRkVG9TZWxlY3RlZFVzZXIuYmluZCh0aGlzKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgc29ydEl0ZW1zKCk6IHZvaWQge1xuICAgIGNvbnN0IHNvcnRSZXN1bHQgPSBGaWx0ZXJIZWxwZXIuc29ydEl0ZW1zKFxuICAgICAgdGhpcy50cnVja1R5cGVBcnJheSxcbiAgICAgIHRoaXMuc2VsZWN0ZWRUcnVja1R5cGVBcnJheSxcbiAgICAgIHRoaXMuaXNBc2NlbmRpbmdTb3J0T3JkZXJcbiAgICApO1xuXG4gICAgdGhpcy50cnVja1R5cGVBcnJheSA9IHNvcnRSZXN1bHQuc29ydGVkRmlsdGVyQXJyYXk7XG4gICAgdGhpcy5zZWxlY3RlZFRydWNrVHlwZUFycmF5ID0gc29ydFJlc3VsdC5zb3J0ZWRTZWxlY3RlZEZpbHRlckFycmF5O1xuICAgIHRoaXMuaXNBc2NlbmRpbmdTb3J0T3JkZXIgPSBzb3J0UmVzdWx0LmlzQXNjZW5kaW5nU29ydE9yZGVyO1xuICB9XG5cbiAgcHVibGljIGFkZFRvU2VsZWN0ZWRVc2VyKGl0ZW06IHVzZXJTZWxlY3RlZCwgaW5keDogbnVtYmVyKSB7XG4gICAgY29uc3QgbWFpbkFycmF5ID0gdGhpcy50cnVja1R5cGVBcnJheTtcblxuICAgIG1haW5BcnJheVtpbmR4XS5pc1NlbGVjdGVkID0gdHJ1ZTtcblxuICAgIHRoaXMudW5zZWxlY3RlZFZpc2libGVDb3VudCA9IG1haW5BcnJheS5maWx0ZXIoXG4gICAgICAoaXRlbTIpID0+ICFpdGVtMi5pc1NlbGVjdGVkXG4gICAgKT8ubGVuZ3RoO1xuXG4gICAgdGhpcy5zZWxlY3RlZFRydWNrVHlwZUFycmF5LnB1c2goaXRlbSk7XG5cbiAgICB0aGlzLmNoZWNrRmlsdGVyQWN0aXZlVmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVGcm9tU2VsZWN0ZWRVc2VyKGl0ZW06IHVzZXJTZWxlY3RlZCwgaW5keDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZFRydWNrVHlwZUFycmF5LnNwbGljZShpbmR4LCAxKTtcbiAgICBjb25zdCBpZCA9IGl0ZW0uaWQ7XG4gICAgY29uc3QgbWFpbkFycmF5ID0gdGhpcy50cnVja1R5cGVBcnJheTtcblxuICAgIG1haW5BcnJheS5tYXAoKGl0ZW0yKSA9PiB7XG4gICAgICBpZiAoaXRlbTIuaWQgPT09IGlkKSB7XG4gICAgICAgIGl0ZW0yLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudW5zZWxlY3RlZFZpc2libGVDb3VudCA9IG1haW5BcnJheS5maWx0ZXIoXG4gICAgICAoaXRlbTIpID0+ICFpdGVtMi5pc1NlbGVjdGVkXG4gICAgKT8ubGVuZ3RoO1xuXG4gICAgdGhpcy5jaGVja0ZpbHRlckFjdGl2ZVZhbHVlKCk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoVGFibGVTZXJ2aWNlVmFsdWVDaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMudHlwZSA9IFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtLlRSVUNLX1RZUEVfRklMVEVSO1xuICAgIHRoaXMudGFibGVTZXJ2aWNlLmN1cnJlbnRBY3Rpb25BbmltYXRpb25cbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtLlRSVUNLX1RZUEVfRklMVEVSKSB7XG4gICAgICAgICAgaWYgKHJlcz8uYW5pbWF0aW9uID09PSAndHJ1Y2stdHlwZS11cGRhdGUnKSB7XG4gICAgICAgICAgICBjb25zdCBuZXdEYXRhID0gcmVzLmRhdGEubWFwKCh0eXBlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgdHlwZVsnaWNvbiddID0gRmlsdGVySWNvblJvdXRlcy50cnVja1NWRyArIHR5cGUubG9nb05hbWU7XG4gICAgICAgICAgICAgIHJldHVybiB0eXBlO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMudHJ1Y2tUeXBlQXJyYXkgPSBuZXdEYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0RmlsdGVyVmFsdWUoKTogZmlsdGVyT3V0cHV0IHwgZmlsdGVyT3V0cHV0V2l0aFBhcmFtcyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7fTtcbiAgICBjb25zdCBzdWJUeXBlID0gVG9vbGJhckZpbHRlclN0cmluZ0VudW0uRU1QVFlfU1RSSU5HX1BMQUNFSE9MREVSLnRvU3RyaW5nKCk7XG5cbiAgICB0aGlzLmlzQnV0dG9uQXZhaWxhYmxlID0gZmFsc2U7XG5cbiAgICBjb25zdCBhY3Rpb24gPSAnU2V0JztcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgZmlsdGVyVHlwZTogdGhpcy50eXBlLFxuICAgICAgYWN0aW9uLFxuICAgICAgcXVlcnlQYXJhbXMsXG4gICAgICBzdWJUeXBlLFxuICAgIH07XG5cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckFsbChldmVudD86IEV2ZW50KTogZmlsdGVyT3V0cHV0IHwgZmlsdGVyT3V0cHV0V2l0aFBhcmFtcyB7XG4gICAgaWYgKGV2ZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIHRoaXMuc2VsZWN0ZWRUcnVja1R5cGVBcnJheSA9IFtdO1xuXG4gICAgdGhpcy50cnVja1R5cGVBcnJheS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgIGl0ZW0uaXNTZWxlY3RlZCA9IGZhbHNlO1xuICAgIH0pO1xuXG4gICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZSA9IHRydWU7XG4gICAgdGhpcy5maWx0ZXJBY3RpdmVBcnJheSA9IFtdO1xuXG4gICAgY29uc3QgYWN0aW9uID0gJ0NsZWFyJztcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgYWN0aW9uLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgZmlsdGVyVHlwZTogdGhpcy50eXBlLFxuICAgIH07XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tGaWx0ZXJBY3RpdmVWYWx1ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJDaGVjayA9IEZpbHRlckhlbHBlci5jaGVja0ZpbHRlckFjdGl2ZVZhbHVlKFxuICAgICAgdGhpcy5zZWxlY3RlZFRydWNrVHlwZUFycmF5LFxuICAgICAgdGhpcy5maWx0ZXJBY3RpdmVBcnJheSxcbiAgICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGVcbiAgICApO1xuXG4gICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZSA9IGZpbHRlckNoZWNrLmlzQnV0dG9uQXZhaWxhYmxlO1xuICB9XG5cbiAgcHVibGljIGdldFN2Z1BhdGgocHJvcGVydHlOYW1lOiBrZXlvZiB0eXBlb2YgQ2FGaWx0ZXJzU3ZnUm91dGVzKTogc3RyaW5nIHtcbiAgICByZXR1cm4gRmlsdGVySGVscGVyLmdldFN2Z1BhdGgocHJvcGVydHlOYW1lKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInR5cGUgPT09ICd0cnVja1R5cGVGaWx0ZXInXCI+XG4gIDxkaXYgY2xhc3M9XCJib3JkZXItZmlsdGVyXCI+PC9kaXY+XG4gIDxkaXZcbiAgICBjbGFzcz1cInNlbGVjdGVkLXVzZXItaG9sZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnQgYWxpZ24taXRlbXMtc3RhcnQgZmxleC1jb2x1bW5cIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nRm9yPVwiXG4gICAgICAgIGxldCBpdGVtIG9mIHNlbGVjdGVkVHJ1Y2tUeXBlQXJyYXk7XG4gICAgICAgIGxldCBpbmR4ID0gaW5kZXg7XG4gICAgICAgIHRyYWNrQnk6IHRyYWNrQnlJZGVudGl0eVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidXNlci1tYWluLWhvbGRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICBbQGluT3V0QW5pbWF0aW9uXT1cIidpbidcIlxuICAgICAgICBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiXG4gICAgICAgIChjbGljayk9XCJyZW1vdmVGcm9tU2VsZWN0ZWRVc2VyKGl0ZW0sIGluZHgpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQtdXNlci1mcmFtZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1uYW1lLXRleHQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4+IHt7IGl0ZW0ubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmljb25cIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1pdGVtLWxvZ29cIj5cbiAgICAgICAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJpdGVtLmljb25cIiBjbGFzcz1cInRydWNrLWxvZ28taWNvblwiPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW0/LmNvdW50OyBlbHNlIG5vQ291bnRcIj5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIGNsYXNzPVwiY291bnQtaG9sZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBhY3RpdmVDb3VudFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGl0ZW0uY291bnQgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9Db3VudD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5jb3VudDsgZWxzZSBub0NvdW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0ZWQtaWNvbiBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHN2Zy1pY29uIFtzcmNdPVwiZ2V0U3ZnUGF0aCgnaWNvbkNvbmZpcm0nKVwiPjwvc3ZnLWljb24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vQ291bnRlcj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvdW50ZXItaG9sZGVyIGFjdGl2ZUNvdW50ZXJcIj4yPC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZyb21TZWxlY3RlZFVzZXIoaXRlbSwgaW5keClcIlxuICAgICAgICAgICAgY2xhc3M9XCJpY29uLWRlbGV0ZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIlxuICAgICAgICAgICAgW2NsYXNzLmNvdW50ZXJNYXJnaW5dPVwiaXRlbS5jb3VudFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImljb24tZGVsZXRlLWhvbGRcIj48L2Rpdj5cbiAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImdldFN2Z1BhdGgoJ3JlbW92ZVNlbGVjdGVkVmFsdWUnKVwiPjwvc3ZnLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNlbGVjdGVkVHJ1Y2tUeXBlQXJyYXkubGVuZ3RoXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWZpbHRlciBib3JkZXItdGhyaXJkLW1hcmdpblwiPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInVzZXItaG9sZGVyXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nRm9yPVwiXG4gICAgICAgIGxldCBpdGVtIG9mIHRydWNrVHlwZUFycmF5O1xuICAgICAgICBsZXQgaW5keCA9IGluZGV4O1xuICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRlbnRpdHlcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInVzZXItZnJhbWUtaG9sZGVyIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpdGVtLmhpZGRlbiAmJiAhaXRlbS5pc1NlbGVjdGVkXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgW0Bpbk91dEFuaW1hdGlvbl09XCInaW4nXCJcbiAgICAgICAgICAgIFtAc2hvd0FuaW1hdGlvbl09XCIhIWlzRmlsdGVyQWN0aXZlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJhZGRUb1NlbGVjdGVkVXNlcihpdGVtLCBpbmR4KVwiXG4gICAgICAgICAgICBjbGFzcz1cInVzZXItbWFpbi1ob2xkZXIgdXNlci1tYWluLWhvbGRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLWZyYW1lIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgZnctbm9ybWFsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLW5hbWUtdGV4dCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4+IHt7IGl0ZW0ubmFtZSB9fSA8L3NwYW4+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHlwZS1pY29uIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPHN2Zy1pY29uIHNyYz1cInt7IGl0ZW0uaWNvbiB9fVwiPjwvc3ZnLWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtLmNvdW50XCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cImNvdW50LWhvbGRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgZnctc2VtaWJvbGRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3sgaXRlbS5jb3VudCB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
153
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtdHJ1Y2stdHlwZS1maWx0ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtZmlsdGVycy9jb21wb25lbnRzL2NhLXRydWNrLXR5cGUtZmlsdGVyL2NhLXRydWNrLXR5cGUtZmlsdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWZpbHRlcnMvY29tcG9uZW50cy9jYS10cnVjay10eXBlLWZpbHRlci9jYS10cnVjay10eXBlLWZpbHRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUdULEtBQUssRUFDTCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFMUMsVUFBVTtBQUNWLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQVd4RCxVQUFVO0FBQ1YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRWpFLFFBQVE7QUFDUixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUUzRixZQUFZO0FBQ1osT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFFdkYsYUFBYTtBQUNiLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1B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QUksWUFDTiwwQkFBMEIsV0FHM0I7d0JBQ1AsVUFBVTt3QkFDVixZQUFZO3dCQUNaLGdCQUFnQjt3QkFDaEIsb0JBQW9CO3FCQUNyQixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJLGNBQ3pCO3dCQUNWLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDaEMsYUFBYSxDQUFDLGVBQWUsQ0FBQztxQkFDL0I7OEdBR1EsSUFBSTtzQkFBWixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIE9uRGVzdHJveSxcbiAgSW5wdXQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG4vLyBtb2R1bGVzXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5cbi8vIG1vZGVsc1xuaW1wb3J0IHsgdXNlclNlbGVjdGVkIH0gZnJvbSAnLi4vLi4vLi4vLi4vbW9kZWxzL3VzZXItc2VsZWN0ZWQubW9kZWwnO1xuaW1wb3J0IHsgQXJyYXlTdGF0dXMgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvYXJyYXktc3RhdHVzLm1vZGVsJztcbmltcG9ydCB7IGZpbHRlck91dHB1dCB9IGZyb20gJy4uLy4uLy4uLy4uL21vZGVscy9maWx0ZXItb3V0cHV0Lm1vZGVsJztcbmltcG9ydCB7IGZpbHRlck91dHB1dFdpdGhQYXJhbXMgfSBmcm9tICcuLi8uLi8uLi8uLi9tb2RlbHMvZmlsdGVyLW91dHB1dC1wYXJhbXMubW9kZWwnO1xuXG4vLyB1dGlsc1xuaW1wb3J0IHsgQ2FGaWx0ZXJzU3ZnUm91dGVzIH0gZnJvbSAnLi4vLi4vdXRpbHMvc3ZnLXJvdXRlcy9jYS1maWx0ZXJzLXN2Zy1yb3V0ZXMnO1xuXG4vLyBoZWxwZXJzXG5pbXBvcnQgeyBGaWx0ZXJIZWxwZXIgfSBmcm9tICcuLi8uLi91dGlscy9oZWxwZXJzL2ZpbHRlci5oZWxwZXInO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgVG9vbGJhckZpbHRlclN0cmluZ0VudW0gfSBmcm9tICcuLi8uLi8uLi9jYS1tYXAvZW51bXMvdG9vbGJhci1maWx0ZXItc3RyaW5nLmVudW0nO1xuXG4vLyBjb25zdGFudHNcbmltcG9ydCB7IEZpbHRlckljb25Sb3V0ZXMgfSBmcm9tICcuLi8uLi91dGlscy9jb25zdGFudHMvZmlsdGVyLWljb25zLXJvdXRlcy5jb25zdGFudHMnO1xuXG4vLyBhbmltYXRpb25zXG5pbXBvcnQgeyBpbk91dEFuaW1hdGlvbiB9IGZyb20gJy4uLy4uLy4uLy4uL2FuaW1hdGlvbnMvaW4tb3V0LmFuaW1hdGlvbic7XG5pbXBvcnQgeyBzaG93QW5pbWF0aW9uIH0gZnJvbSAnLi4vLi4vLi4vLi4vYW5pbWF0aW9ucy9zaG93LmFuaW1hdGlvbic7XG5cbi8vIHNlcnZpY2VzXG5pbXBvcnQgeyBUcnVja2Fzc2lzdFRhYmxlU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL3RydWNrYXNzaXN0LXRhYmxlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdhcHAtY2EtdHJ1Y2stdHlwZS1maWx0ZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2EtdHJ1Y2stdHlwZS1maWx0ZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jYS10cnVjay10eXBlLWZpbHRlci5jb21wb25lbnQuc2NzcyddLFxuICBpbXBvcnRzOiBbXG4gICAgLy8gbW9kdWxlc1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgIEFuZ3VsYXJTdmdJY29uTW9kdWxlLFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBhbmltYXRpb25zOiBbXG4gICAgaW5PdXRBbmltYXRpb24oJ2luT3V0QW5pbWF0aW9uJyksXG4gICAgc2hvd0FuaW1hdGlvbignc2hvd0FuaW1hdGlvbicpLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYVRydWNrVHlwZUZpbHRlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgdHlwZSE6IHN0cmluZztcbiAgQElucHV0KCkgaXNGaWx0ZXJBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgaGFzTGVmdFNpZGVJY29uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHRydWNrVHlwZUFycmF5ITogQXJyYXlTdGF0dXNbXTtcblxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHVibGljIHNlbGVjdGVkVHJ1Y2tUeXBlQXJyYXk6IEFycmF5U3RhdHVzW10gPSBbXTtcbiAgcHVibGljIGlzQnV0dG9uQXZhaWxhYmxlOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBpc0FzY2VuZGluZ1NvcnRPcmRlcjogYm9vbGVhbiA9IHRydWU7XG4gIHB1YmxpYyBmaWx0ZXJBY3RpdmVBcnJheTogQXJyYXlTdGF0dXNbXSA9IFtdO1xuICBwdWJsaWMgdW5zZWxlY3RlZFZpc2libGVDb3VudDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICAvLyBzZXJ2aWNlc1xuICAgIHByaXZhdGUgdGFibGVTZXJ2aWNlOiBUcnVja2Fzc2lzdFRhYmxlU2VydmljZVxuICApIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy53YXRjaFRhYmxlU2VydmljZVZhbHVlQ2hhbmdlcygpO1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlJZGVudGl0eShpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgb25GaWx0ZXJDbG9zZSgpOiB2b2lkIHtcbiAgICBGaWx0ZXJIZWxwZXIuaGFuZGxlRmlsdGVyQ2xvc2UoXG4gICAgICB0aGlzLnRydWNrVHlwZUFycmF5LFxuICAgICAgdGhpcy5zZWxlY3RlZFRydWNrVHlwZUFycmF5LFxuICAgICAgdGhpcy5yZW1vdmVGcm9tU2VsZWN0ZWRVc2VyLmJpbmQodGhpcyksXG4gICAgICB0aGlzLmFkZFRvU2VsZWN0ZWRVc2VyLmJpbmQodGhpcylcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHNvcnRJdGVtcygpOiB2b2lkIHtcbiAgICBjb25zdCBzb3J0UmVzdWx0ID0gRmlsdGVySGVscGVyLnNvcnRJdGVtcyhcbiAgICAgIHRoaXMudHJ1Y2tUeXBlQXJyYXksXG4gICAgICB0aGlzLnNlbGVjdGVkVHJ1Y2tUeXBlQXJyYXksXG4gICAgICB0aGlzLmlzQXNjZW5kaW5nU29ydE9yZGVyXG4gICAgKTtcblxuICAgIHRoaXMudHJ1Y2tUeXBlQXJyYXkgPSBzb3J0UmVzdWx0LnNvcnRlZEZpbHRlckFycmF5O1xuICAgIHRoaXMuc2VsZWN0ZWRUcnVja1R5cGVBcnJheSA9IHNvcnRSZXN1bHQuc29ydGVkU2VsZWN0ZWRGaWx0ZXJBcnJheTtcbiAgICB0aGlzLmlzQXNjZW5kaW5nU29ydE9yZGVyID0gc29ydFJlc3VsdC5pc0FzY2VuZGluZ1NvcnRPcmRlcjtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1NlbGVjdGVkVXNlcihpdGVtOiB1c2VyU2VsZWN0ZWQsIGluZHg6IG51bWJlcikge1xuICAgIGNvbnN0IG1haW5BcnJheSA9IHRoaXMudHJ1Y2tUeXBlQXJyYXk7XG5cbiAgICBtYWluQXJyYXlbaW5keF0uaXNTZWxlY3RlZCA9IHRydWU7XG5cbiAgICB0aGlzLnVuc2VsZWN0ZWRWaXNpYmxlQ291bnQgPSBtYWluQXJyYXkuZmlsdGVyKFxuICAgICAgKGl0ZW0yKSA9PiAhaXRlbTIuaXNTZWxlY3RlZFxuICAgICk/Lmxlbmd0aDtcblxuICAgIHRoaXMuc2VsZWN0ZWRUcnVja1R5cGVBcnJheS5wdXNoKGl0ZW0pO1xuXG4gICAgdGhpcy5jaGVja0ZpbHRlckFjdGl2ZVZhbHVlKCk7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlRnJvbVNlbGVjdGVkVXNlcihpdGVtOiB1c2VyU2VsZWN0ZWQsIGluZHg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWRUcnVja1R5cGVBcnJheS5zcGxpY2UoaW5keCwgMSk7XG4gICAgY29uc3QgaWQgPSBpdGVtLmlkO1xuICAgIGNvbnN0IG1haW5BcnJheSA9IHRoaXMudHJ1Y2tUeXBlQXJyYXk7XG5cbiAgICBtYWluQXJyYXkubWFwKChpdGVtMikgPT4ge1xuICAgICAgaWYgKGl0ZW0yLmlkID09PSBpZCkge1xuICAgICAgICBpdGVtMi5pc1NlbGVjdGVkID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLnVuc2VsZWN0ZWRWaXNpYmxlQ291bnQgPSBtYWluQXJyYXkuZmlsdGVyKFxuICAgICAgKGl0ZW0yKSA9PiAhaXRlbTIuaXNTZWxlY3RlZFxuICAgICk/Lmxlbmd0aDtcblxuICAgIHRoaXMuY2hlY2tGaWx0ZXJBY3RpdmVWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB3YXRjaFRhYmxlU2VydmljZVZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLnR5cGUgPSBUb29sYmFyRmlsdGVyU3RyaW5nRW51bS5UUlVDS19UWVBFX0ZJTFRFUjtcbiAgICB0aGlzLnRhYmxlU2VydmljZS5jdXJyZW50QWN0aW9uQW5pbWF0aW9uXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAodGhpcy50eXBlID09PSBUb29sYmFyRmlsdGVyU3RyaW5nRW51bS5UUlVDS19UWVBFX0ZJTFRFUikge1xuICAgICAgICAgIGlmIChyZXM/LmFuaW1hdGlvbiA9PT0gJ3RydWNrLXR5cGUtdXBkYXRlJykge1xuICAgICAgICAgICAgY29uc3QgbmV3RGF0YSA9IHJlcy5kYXRhLm1hcCgodHlwZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHR5cGVbJ2ljb24nXSA9IEZpbHRlckljb25Sb3V0ZXMudHJ1Y2tTVkcgKyB0eXBlLmxvZ29OYW1lO1xuICAgICAgICAgICAgICByZXR1cm4gdHlwZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB0aGlzLnRydWNrVHlwZUFycmF5ID0gbmV3RGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIHNldEZpbHRlclZhbHVlKCk6IGZpbHRlck91dHB1dCB8IGZpbHRlck91dHB1dFdpdGhQYXJhbXMgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0ge307XG4gICAgY29uc3Qgc3ViVHlwZSA9IFRvb2xiYXJGaWx0ZXJTdHJpbmdFbnVtLkVNUFRZX1NUUklOR19QTEFDRUhPTERFUi50b1N0cmluZygpO1xuXG4gICAgdGhpcy5pc0J1dHRvbkF2YWlsYWJsZSA9IGZhbHNlO1xuXG4gICAgY29uc3QgYWN0aW9uID0gJ1NldCc7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGZpbHRlclR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGFjdGlvbixcbiAgICAgIHF1ZXJ5UGFyYW1zLFxuICAgICAgc3ViVHlwZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJBbGwoZXZlbnQ/OiBFdmVudCk6IGZpbHRlck91dHB1dCB8IGZpbHRlck91dHB1dFdpdGhQYXJhbXMge1xuICAgIGlmIChldmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICB0aGlzLnNlbGVjdGVkVHJ1Y2tUeXBlQXJyYXkgPSBbXTtcblxuICAgIHRoaXMudHJ1Y2tUeXBlQXJyYXkubWFwKChpdGVtKSA9PiB7XG4gICAgICBpdGVtLmlzU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICB9KTtcblxuICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGUgPSB0cnVlO1xuICAgIHRoaXMuZmlsdGVyQWN0aXZlQXJyYXkgPSBbXTtcblxuICAgIGNvbnN0IGFjdGlvbiA9ICdDbGVhcic7XG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIGFjdGlvbixcbiAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgIGZpbHRlclR5cGU6IHRoaXMudHlwZSxcbiAgICB9O1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgcHVibGljIGNoZWNrRmlsdGVyQWN0aXZlVmFsdWUoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVyQ2hlY2sgPSBGaWx0ZXJIZWxwZXIuY2hlY2tGaWx0ZXJBY3RpdmVWYWx1ZShcbiAgICAgIHRoaXMuc2VsZWN0ZWRUcnVja1R5cGVBcnJheSxcbiAgICAgIHRoaXMuZmlsdGVyQWN0aXZlQXJyYXksXG4gICAgICB0aGlzLmlzQnV0dG9uQXZhaWxhYmxlXG4gICAgKTtcblxuICAgIHRoaXMuaXNCdXR0b25BdmFpbGFibGUgPSBmaWx0ZXJDaGVjay5pc0J1dHRvbkF2YWlsYWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTdmdQYXRoKHByb3BlcnR5TmFtZToga2V5b2YgdHlwZW9mIENhRmlsdGVyc1N2Z1JvdXRlcyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEZpbHRlckhlbHBlci5nZXRTdmdQYXRoKHByb3BlcnR5TmFtZSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ0eXBlID09PSAndHJ1Y2tUeXBlRmlsdGVyJ1wiPlxuICA8ZGl2IGNsYXNzPVwiYm9yZGVyLWZpbHRlclwiPjwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzZWxlY3RlZC11c2VyLWhvbGRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0Zvcj1cIlxuICAgICAgICBsZXQgaXRlbSBvZiBzZWxlY3RlZFRydWNrVHlwZUFycmF5O1xuICAgICAgICBsZXQgaW5keCA9IGluZGV4O1xuICAgICAgICB0cmFja0J5OiB0cmFja0J5SWRlbnRpdHlcbiAgICAgIFwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInVzZXItbWFpbi1ob2xkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgW0Bpbk91dEFuaW1hdGlvbl09XCInaW4nXCJcbiAgICAgICAgW0BzaG93QW5pbWF0aW9uXT1cIiEhaXNGaWx0ZXJBY3RpdmVcIlxuICAgICAgICAoY2xpY2spPVwicmVtb3ZlRnJvbVNlbGVjdGVkVXNlcihpdGVtLCBpbmR4KVwiXG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkLXVzZXItZnJhbWUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtbmFtZS10ZXh0IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxzcGFuPiB7eyBpdGVtLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5pY29uXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtaXRlbS1sb2dvXCI+XG4gICAgICAgICAgICAgICAgPHN2Zy1pY29uIFtzcmNdPVwiaXRlbS5pY29uXCIgY2xhc3M9XCJ0cnVjay1sb2dvLWljb25cIj48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtPy5jb3VudDsgZWxzZSBub0NvdW50XCI+XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cImNvdW50LWhvbGRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWN0aXZlQ291bnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBpdGVtLmNvdW50IH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI25vQ291bnQ+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWl0ZW0uY291bnQ7IGVsc2Ugbm9Db3VudGVyXCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNlbGVjdGVkLWljb24gZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzdmctaWNvbiBbc3JjXT1cImdldFN2Z1BhdGgoJ2ljb25Db25maXJtJylcIj48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNub0NvdW50ZXI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb3VudGVyLWhvbGRlciBhY3RpdmVDb3VudGVyXCI+MjwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGcm9tU2VsZWN0ZWRVc2VyKGl0ZW0sIGluZHgpXCJcbiAgICAgICAgICAgIGNsYXNzPVwiaWNvbi1kZWxldGUgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCJcbiAgICAgICAgICAgIFtjbGFzcy5jb3VudGVyTWFyZ2luXT1cIml0ZW0uY291bnRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29uLWRlbGV0ZS1ob2xkXCI+PC9kaXY+XG4gICAgICAgICAgICA8c3ZnLWljb24gW3NyY109XCJnZXRTdmdQYXRoKCdyZW1vdmVTZWxlY3RlZFZhbHVlJylcIj48L3N2Zy1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzZWxlY3RlZFRydWNrVHlwZUFycmF5Lmxlbmd0aFwiPlxuICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1maWx0ZXIgYm9yZGVyLXRocmlyZC1tYXJnaW5cIj48L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ1c2VyLWhvbGRlclwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICpuZ0Zvcj1cIlxuICAgICAgICBsZXQgaXRlbSBvZiB0cnVja1R5cGVBcnJheTtcbiAgICAgICAgbGV0IGluZHggPSBpbmRleDtcbiAgICAgICAgdHJhY2tCeTogdHJhY2tCeUlkZW50aXR5XG4gICAgICBcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyLWZyYW1lLWhvbGRlciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXRlbS5oaWRkZW4gJiYgIWl0ZW0uaXNTZWxlY3RlZFwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtAaW5PdXRBbmltYXRpb25dPVwiJ2luJ1wiXG4gICAgICAgICAgICBbQHNob3dBbmltYXRpb25dPVwiISFpc0ZpbHRlckFjdGl2ZVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWRkVG9TZWxlY3RlZFVzZXIoaXRlbSwgaW5keClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ1c2VyLW1haW4taG9sZGVyIHVzZXItbWFpbi1ob2xkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidXNlci1mcmFtZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGZ3LW5vcm1hbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1uYW1lLXRleHQgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuPiB7eyBpdGVtLm5hbWUgfX0gPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR5cGUtaWNvbiBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxzdmctaWNvbiBzcmM9XCJ7eyBpdGVtLmljb24gfX1cIj48L3N2Zy1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jb3VudFwiPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJjb3VudC1ob2xkZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGZ3LXNlbWlib2xkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0uY291bnQgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==