simpo-component-library 3.6.481 → 3.6.482

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 (220) hide show
  1. package/README.md +24 -24
  2. package/esm2022/lib/components/delete-hover-element/delete-hover-element.component.mjs +3 -3
  3. package/esm2022/lib/components/document/document.component.mjs +3 -3
  4. package/esm2022/lib/components/image-loading/image-loading.component.mjs +3 -3
  5. package/esm2022/lib/components/payment-details/payment-details.component.mjs +3 -3
  6. package/esm2022/lib/constants/business.constant.mjs +1 -1
  7. package/esm2022/lib/directive/alignment.directive.mjs +1 -1
  8. package/esm2022/lib/directive/blur-content.directive.mjs +1 -1
  9. package/esm2022/lib/directive/borderlessImage.directive.mjs +1 -1
  10. package/esm2022/lib/directive/button-directive.directive.mjs +1 -1
  11. package/esm2022/lib/directive/button-editor.directive.mjs +1 -1
  12. package/esm2022/lib/directive/color.directive.mjs +1 -1
  13. package/esm2022/lib/directive/column-directive.directive.mjs +1 -1
  14. package/esm2022/lib/directive/container-alignment.directive.mjs +1 -1
  15. package/esm2022/lib/directive/container-fir.directive.mjs +1 -1
  16. package/esm2022/lib/directive/content-title-spacing.directive.mjs +1 -1
  17. package/esm2022/lib/directive/contenteditable.directive.mjs +1 -1
  18. package/esm2022/lib/directive/corner-directive.mjs +1 -1
  19. package/esm2022/lib/directive/height.directive.mjs +1 -1
  20. package/esm2022/lib/directive/hover-animation.directive.mjs +1 -1
  21. package/esm2022/lib/directive/hoverborder.directive.mjs +1 -1
  22. package/esm2022/lib/directive/icon-directive.directive.mjs +1 -1
  23. package/esm2022/lib/directive/image-container.directive.mjs +1 -1
  24. package/esm2022/lib/directive/image-directive.directive.mjs +1 -1
  25. package/esm2022/lib/directive/image-editor.directive.mjs +1 -1
  26. package/esm2022/lib/directive/image-position.directive.mjs +1 -1
  27. package/esm2022/lib/directive/merge-header.directive.mjs +1 -1
  28. package/esm2022/lib/directive/position-layout-directive.directive.mjs +1 -1
  29. package/esm2022/lib/directive/set-dynamic-background.directive.mjs +1 -1
  30. package/esm2022/lib/directive/spacing-around.directive.mjs +1 -1
  31. package/esm2022/lib/directive/spacing-horizontal.directive.mjs +1 -1
  32. package/esm2022/lib/directive/spacing.directive.mjs +1 -1
  33. package/esm2022/lib/directive/sticky-directive.mjs +1 -1
  34. package/esm2022/lib/directive/text-background-directive.directive.mjs +1 -1
  35. package/esm2022/lib/directive/text-size.directive.mjs +1 -1
  36. package/esm2022/lib/directive/translate-onhover.directive.mjs +1 -1
  37. package/esm2022/lib/directive/wrap-containers.directive.mjs +1 -1
  38. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +3 -3
  39. package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +3 -3
  40. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +3 -3
  41. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.model.mjs +1 -1
  42. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.component.mjs +3 -3
  43. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.model.mjs +1 -1
  44. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +3 -3
  45. package/esm2022/lib/ecommerce/sections/cart/cart.modal.mjs +1 -1
  46. package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +3 -3
  47. package/esm2022/lib/ecommerce/sections/category-product/category-product.model.mjs +1 -1
  48. package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +3 -3
  49. package/esm2022/lib/ecommerce/sections/checkout/checkout.modal.mjs +1 -1
  50. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +3 -3
  51. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.model.mjs +1 -1
  52. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +3 -3
  53. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.model.mjs +1 -1
  54. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +3 -3
  55. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.modal.mjs +1 -1
  56. package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +3 -3
  57. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +3 -3
  58. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.modal.mjs +1 -1
  59. package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +3 -3
  60. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +3 -3
  61. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.modal.mjs +1 -1
  62. package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +3 -3
  63. package/esm2022/lib/ecommerce/sections/pagnination/pagnination.component.mjs +3 -3
  64. package/esm2022/lib/ecommerce/sections/passbook-transactions/passbook-transactions.component.mjs +3 -3
  65. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.component.mjs +3 -3
  66. package/esm2022/lib/ecommerce/sections/product-category-list/product-category-list.model.mjs +1 -1
  67. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.component.mjs +3 -3
  68. package/esm2022/lib/ecommerce/sections/product-desc/product-desc.modal.mjs +1 -1
  69. package/esm2022/lib/ecommerce/sections/product-list/product-list.component.mjs +3 -3
  70. package/esm2022/lib/ecommerce/sections/product-list/product-list.modal.mjs +1 -1
  71. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.component.mjs +3 -3
  72. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.model.mjs +1 -1
  73. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +3 -3
  74. package/esm2022/lib/ecommerce/sections/scheme-selection/scheme-selection.component.mjs +3 -3
  75. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.mjs +3 -3
  76. package/esm2022/lib/ecommerce/sections/schemes/schemes.component.model.mjs +1 -1
  77. package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +3 -3
  78. package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +3 -3
  79. package/esm2022/lib/ecommerce/sections/store-list/store-list.modal.mjs +1 -1
  80. package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +3 -3
  81. package/esm2022/lib/ecommerce/sections/store-page/store-page.model.mjs +1 -1
  82. package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +3 -3
  83. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +3 -3
  84. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
  85. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +3 -3
  86. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.model.mjs +1 -1
  87. package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +3 -3
  88. package/esm2022/lib/ecommerce/styles/BaseCollection.modal.mjs +1 -1
  89. package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +1 -1
  90. package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +1 -1
  91. package/esm2022/lib/ecommerce/styles/PincodeLocation.model.mjs +1 -1
  92. package/esm2022/lib/ecommerce/styles/PincodeLocationInter.model.mjs +1 -1
  93. package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -1
  94. package/esm2022/lib/ecommerce/styles/category.modal.mjs +1 -1
  95. package/esm2022/lib/ecommerce/styles/order.modal.mjs +1 -1
  96. package/esm2022/lib/ecommerce/styles/product.modal.mjs +1 -1
  97. package/esm2022/lib/ecommerce/styles/review.modal.mjs +1 -1
  98. package/esm2022/lib/ecommerce/styles/user.modal.mjs +1 -1
  99. package/esm2022/lib/elements/add-section/add-section.component.mjs +3 -3
  100. package/esm2022/lib/elements/address-list/address-list.component.mjs +3 -3
  101. package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +3 -3
  102. package/esm2022/lib/elements/button/button.component.mjs +3 -3
  103. package/esm2022/lib/elements/button/button.model.mjs +1 -1
  104. package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +3 -3
  105. package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +3 -3
  106. package/esm2022/lib/elements/editor-service.service.mjs +1 -1
  107. package/esm2022/lib/elements/heading-element/heading-element.component.mjs +3 -3
  108. package/esm2022/lib/elements/image-editor/image-editor.component.mjs +3 -3
  109. package/esm2022/lib/elements/index.mjs +1 -1
  110. package/esm2022/lib/elements/link-editor/link-editor.component.mjs +3 -3
  111. package/esm2022/lib/elements/list-home-appointment/list-home-appointment.component.mjs +3 -3
  112. package/esm2022/lib/elements/media-selector/media-selector.component.mjs +3 -3
  113. package/esm2022/lib/elements/portfolio/portfolio.component.mjs +3 -3
  114. package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +3 -3
  115. package/esm2022/lib/elements/property/property.component.mjs +3 -3
  116. package/esm2022/lib/elements/schedule-video-call/schedule-video-call.component.mjs +3 -3
  117. package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +3 -3
  118. package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +3 -3
  119. package/esm2022/lib/elements/text/text.component.mjs +3 -3
  120. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +3 -3
  121. package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +3 -3
  122. package/esm2022/lib/pipes/amount.pipe.mjs +1 -1
  123. package/esm2022/lib/pipes/gender.pipe.mjs +1 -1
  124. package/esm2022/lib/sections/BaseSection.mjs +1 -1
  125. package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +3 -3
  126. package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +3 -3
  127. package/esm2022/lib/sections/appointment-form/appointment-form.model.mjs +1 -1
  128. package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +3 -3
  129. package/esm2022/lib/sections/banner-carousel/banner-carousel.model.mjs +1 -1
  130. package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +3 -3
  131. package/esm2022/lib/sections/blog-list/blog-list.component.mjs +3 -3
  132. package/esm2022/lib/sections/blog-list/blog-list.model.mjs +1 -1
  133. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +3 -3
  134. package/esm2022/lib/sections/choose-us-section/choose-us-section.model.mjs +1 -1
  135. package/esm2022/lib/sections/faq-section/faq-section.component.mjs +3 -3
  136. package/esm2022/lib/sections/faq-section/faq-section.modal.mjs +1 -1
  137. package/esm2022/lib/sections/features-section/features-section.component.mjs +3 -3
  138. package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
  139. package/esm2022/lib/sections/footer/footer.component.mjs +3 -3
  140. package/esm2022/lib/sections/footer/footer.modal.mjs +1 -1
  141. package/esm2022/lib/sections/header-section/header-section.component.mjs +3 -3
  142. package/esm2022/lib/sections/header-section/header-section.model.mjs +1 -1
  143. package/esm2022/lib/sections/header-text/header-text.component.mjs +3 -3
  144. package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
  145. package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +3 -3
  146. package/esm2022/lib/sections/image-carousel-section/image-carousel.model.mjs +1 -1
  147. package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +3 -3
  148. package/esm2022/lib/sections/image-grid-section/image-grid-section.model.mjs +1 -1
  149. package/esm2022/lib/sections/image-section/image-section.component.mjs +3 -3
  150. package/esm2022/lib/sections/image-section/image-section.model.mjs +1 -1
  151. package/esm2022/lib/sections/location-section/location-section.component.mjs +3 -3
  152. package/esm2022/lib/sections/location-section/location-section.modal.mjs +1 -1
  153. package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +3 -3
  154. package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
  155. package/esm2022/lib/sections/moving-text/moving-text.component.mjs +3 -3
  156. package/esm2022/lib/sections/moving-text/moving-text.modal.mjs +1 -1
  157. package/esm2022/lib/sections/new-services/new-services.component.mjs +3 -3
  158. package/esm2022/lib/sections/new-services/new-services.model.mjs +1 -1
  159. package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +3 -3
  160. package/esm2022/lib/sections/new-testimonials/new-testimonials.model.mjs +1 -1
  161. package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +3 -3
  162. package/esm2022/lib/sections/news-letter-component/news-letter.modal.mjs +1 -1
  163. package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +3 -3
  164. package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
  165. package/esm2022/lib/sections/process-modern/process-modern.component.mjs +3 -3
  166. package/esm2022/lib/sections/process-modern/process-modern.model.mjs +1 -1
  167. package/esm2022/lib/sections/process-section/process-section.component.mjs +3 -3
  168. package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
  169. package/esm2022/lib/sections/property-component/property-component.component.mjs +3 -3
  170. package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
  171. package/esm2022/lib/sections/property-list/property-list.component.mjs +3 -3
  172. package/esm2022/lib/sections/property-list/property-list.modal.mjs +1 -1
  173. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +3 -3
  174. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.model.mjs +1 -1
  175. package/esm2022/lib/sections/registration-form/registration-form.component.mjs +3 -3
  176. package/esm2022/lib/sections/registration-form/registrationForm.model.mjs +1 -1
  177. package/esm2022/lib/sections/scheme-detail/scheme-detail.component.mjs +3 -3
  178. package/esm2022/lib/sections/scheme-detail/scheme-detail.modal.mjs +1 -1
  179. package/esm2022/lib/sections/service-section/service-section.component.mjs +3 -3
  180. package/esm2022/lib/sections/service-section/service-section.model.mjs +1 -1
  181. package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +3 -3
  182. package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +3 -3
  183. package/esm2022/lib/sections/team-member-section/team-member-section.model.mjs +1 -1
  184. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +3 -3
  185. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.model.mjs +1 -1
  186. package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +3 -3
  187. package/esm2022/lib/sections/testimonial-section/testimonial-section.model.mjs +1 -1
  188. package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +3 -3
  189. package/esm2022/lib/sections/testimonial-video/testimonial-video.model.mjs +1 -1
  190. package/esm2022/lib/sections/text-section/text-section.model.mjs +1 -1
  191. package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +3 -3
  192. package/esm2022/lib/sections/usp-video-section/usp-video-section.model.mjs +1 -1
  193. package/esm2022/lib/sections/video-section/video-section.component.mjs +3 -3
  194. package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
  195. package/esm2022/lib/sections/view-blog/view-blog.component.mjs +3 -3
  196. package/esm2022/lib/services/cart.service.mjs +1 -1
  197. package/esm2022/lib/services/endUser.service.mjs +1 -1
  198. package/esm2022/lib/services/image-upload-service.service.mjs +1 -1
  199. package/esm2022/lib/services/rest.service.mjs +2 -2
  200. package/esm2022/lib/services/sanitizeHtml.mjs +1 -1
  201. package/esm2022/lib/services/storage.service.mjs +1 -1
  202. package/esm2022/lib/styles/index.mjs +1 -1
  203. package/esm2022/lib/styles/style.model.mjs +1 -1
  204. package/esm2022/lib/styles/types.mjs +1 -1
  205. package/esm2022/lib/tokens/api-token.mjs +1 -1
  206. package/esm2022/public-api.mjs +1 -1
  207. package/fesm2022/simpo-component-library.mjs +181 -181
  208. package/fesm2022/simpo-component-library.mjs.map +1 -1
  209. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +1 -1
  210. package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +1 -1
  211. package/lib/ecommerce/sections/schemes/schemes.component.d.ts +1 -1
  212. package/lib/elements/link-editor/link-editor.component.d.ts +1 -1
  213. package/lib/sections/contact-us/contact-us.component.d.ts +1 -1
  214. package/lib/sections/faq-section/faq-section.component.d.ts +1 -1
  215. package/lib/sections/new-testimonials/new-testimonials.component.d.ts +1 -1
  216. package/lib/sections/pricing-section/pricing-section.component.d.ts +2 -2
  217. package/package.json +1 -1
  218. package/simpo-component-library-3.6.482.tgz +0 -0
  219. package/src/lib/styles/global-styles.css +309 -309
  220. package/simpo-component-library-3.6.481.tgz +0 -0
@@ -106,4 +106,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
106
106
  providedIn: 'root',
107
107
  }]
108
108
  }], ctorParameters: () => [{ type: i1.StorageServiceService }, { type: i2.RestService }] });
109
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3RFLE9BQU8sRUFBVyx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBS3ZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFLdEMsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDbUIsY0FBcUMsRUFDckMsV0FBd0I7UUFEeEIsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBRTNDLENBQUM7SUFHTSxtQkFBbUIsQ0FBQyxPQUFxQixFQUFFLFFBQWE7UUFDN0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsK0JBQStCO1lBQy9CLDhEQUE4RDtZQUM5RCx1Q0FBdUM7WUFDdkMsd0JBQXdCO1lBQ3hCLE1BQU07WUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQXVCLENBQUMsQ0FBQztZQUM5RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELENBQUM7YUFBTSxDQUFDO1lBQ04sd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBQ00sdUJBQXVCLENBQUMsT0FBcUIsRUFBRSxZQUFpQjtRQUNyRSxJQUFJLENBQUMsY0FBYyxDQUFD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aXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT3JkZXJlZEl0ZW1zIH0gZnJvbSAnLi4vZWNvbW1lcmNlL3N0eWxlcy9PcmRlcmVkSXRlbXMubW9kYWwnO1xyXG5pbXBvcnQgeyBQcm9kdWN0LCBzeW5jSXRlbVRvU2VydmVyREJSZXF1ZXN0IH0gZnJvbSAnLi4vZWNvbW1lcmNlL3N0eWxlcy9wcm9kdWN0Lm1vZGFsJztcclxuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2FydCB9IGZyb20gJy4uL2Vjb21tZXJjZS9zdHlsZXMvY2FydC5tb2RhbCc7XHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9lY29tbWVyY2Uvc3R5bGVzL3VzZXIubW9kYWwnO1xyXG5pbXBvcnQgeyBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIENhcnRTZXJ2aWNlIHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGFkZEl0ZW1Gcm9tQ2FydFBhZ2UocHJvZHVjdDogT3JkZXJlZEl0ZW1zLCB1c2VyQ2FydDogYW55KSB7XHJcbiAgICBpZiAocHJvZHVjdC5xdWFudGl0eSkge1xyXG4gICAgICAvLyBsZXQgcHJvZHVjdElkeDogbnVtYmVyID0gLTE7XHJcbiAgICAgIC8vIFVzZXJDYXJ0Lm9yZGVyZWRJdGVtcy5mb3JFYWNoKChpdGVtOiBPcmRlcmVkSXRlbXMsIGlkeCk9PiB7XHJcbiAgICAgIC8vICAgaWYgKGl0ZW0uaXRlbUlkID09IHByb2R1Y3QuaXRlbUlkKVxyXG4gICAgICAvLyAgICAgcHJvZHVjdElkeCA9IGlkeDtcclxuICAgICAgLy8gfSk7XHJcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvQ2FydChwcm9kdWN0IGFzIE9yZGVyZWRJdGVtcyk7XHJcbiAgICAgIHJldHVybiB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHVzZXJDYXJ0KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIHJlbW92ZSBpdGVtIGZyb20gY2FydFxyXG4gICAgICB0aGlzLnJlbW92ZUl0ZW1Gcm9tQ2FydChwcm9kdWN0KTtcclxuICAgICAgcmV0dXJuIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodXNlckNhcnQpO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgYWRkSXRlbUZyb21XaXNobGlzdFBhZ2UocHJvZHVjdDogT3JkZXJlZEl0ZW1zLCB1c2VyV2lzaGxpc3Q6IGFueSkge1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9XaXNobGlzdChwcm9kdWN0KTtcclxuICAgIHJldHVybiB0aGlzLnJlc3RTZXJ2aWNlLmFkZEl0ZW1Ub0RCKHVzZXJXaXNobGlzdCk7XHJcbiAgfVxyXG4gIHB1YmxpYyByZW1vdmVJdGVtRnJvbVdpc2hsaXN0UGFnZShwcm9kdWN0OiBPcmRlcmVkSXRlbXMsIHVzZXJXaXNobGlzdDogYW55KSB7XHJcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVByb2R1Y3RGcm9tV2lzaGxpc3QocHJvZHVjdC52YXJpZW50SWQpO1xyXG4gICAgcmV0dXJuIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodXNlcldpc2hsaXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhZGRJdGVtVG9DYXJ0KHByb2R1Y3Q6IFByb2R1Y3QgfCBPcmRlcmVkSXRlbXMsIHZhcmllbnRJZD86IHN0cmluZykge1xyXG5cclxuICAgIGlmIChwcm9kdWN0LnF1YW50aXR5KSB7XHJcblxyXG4gICAgICBjb25zdCBvcmRlcmVkSXRlbSA9IHRoaXMub2JqZWN0TWFwcGVyKHByb2R1Y3QgYXMgUHJvZHVjdCwgdmFyaWVudElkKTtcclxuICAgICAgcmV0dXJuIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvQ2FydChvcmRlcmVkSXRlbSBhcyBPcmRlcmVkSXRlbXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlSXRlbUZyb21DYXJ0KHByb2R1Y3QgYXMgUHJvZHVjdCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyBhZGRJdGVtVG9GYXZvdXJpdGUocHJvZHVjdDogUHJvZHVjdCwgdmFyaWVudElkPzogc3RyaW5nKSB7XHJcblxyXG4gICAgY29uc3Qgb3JkZXJlZEl0ZW0gPSB0aGlzLm9iamVjdE1hcHBlcihwcm9kdWN0LCB2YXJpZW50SWQpO1xyXG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9XaXNobGlzdChvcmRlcmVkSXRlbSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgYWRkSXRlbVRvVHJpYWwocHJvZHVjdDogUHJvZHVjdCwgdmFyaWVudElkPzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBvcmRlcmVkSXRlbSA9IHRoaXMub2JqZWN0TWFwcGVyKHByb2R1Y3QsIHZhcmllbnRJZCk7XHJcblxyXG4gICAgY29uc3QgdXNlcjogVXNlciB8IG51bGwgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKTtcclxuXHJcbiAgICBpZiAodXNlcikge1xyXG4gICAgICBjb25zdCByZXF1ZXN0ID0gbmV3IHN5bmNJdGVtVG9TZXJ2ZXJEQlJlcXVlc3QodXNlci51c2VySWQsICdUUklBTF9DQVJUJywgW29yZGVyZWRJdGVtXSk7XHJcblxyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmVzdFNlcnZpY2UuYWRkVHJpYWxJdGVtKHJlcXVlc3QpKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhZGRpbmcgdHJpYWwgaXRlbSB0byBzZXJ2ZXI6JywgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgZGJSZXF1ZXN0OiBhbnkgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFRyaWFsQ2FydCgpO1xyXG5cclxuICAgICAgICBjb25zdCB0cmlhbENhcnRJdGVtOiBPcmRlcmVkSXRlbXNbXSA9IGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgIGRiUmVxdWVzdC5vbnN1Y2Nlc3MgPSAoZXZlbnQ6IGFueSkgPT4gcmVzb2x2ZShldmVudC50YXJnZXQucmVzdWx0KTtcclxuICAgICAgICAgIGRiUmVxdWVzdC5vbmVycm9yID0gKGV2ZW50OiBhbnkpID0+IHJlamVjdChldmVudC50YXJnZXQuZXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBpc0l0ZW1BbHJlYWR5QWRkZWQgPSB0cmlhbENhcnRJdGVtLnNvbWUoKGl0ZW06IE9yZGVyZWRJdGVtcykgPT5cclxuICAgICAgICAgIGl0ZW0uaXRlbUlkID09PSBwcm9kdWN0Lml0ZW1JZCAmJlxyXG4gICAgICAgICAgKHByb2R1Y3Q/Lml0ZW1WYXJpYW50Py5sZW5ndGggPT09IDAgfHwgcHJvZHVjdC52YXJpZW50SWQgPT09IGl0ZW0udmFyaWVudElkKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmICghaXNJdGVtQWxyZWFkeUFkZGVkKSB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb1RyaWFsKG9yZGVyZWRJdGVtKTtcclxuICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhY2Nlc3NpbmcgdHJpYWwgY2FydCBmcm9tIGxvY2FsIHN0b3JhZ2U6JywgZXJyb3IpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHB1YmxpYyBhZGRJdGVtVG9GYXZGcm9tQ2FydChwcm9kdWN0OiBPcmRlcmVkSXRlbXMpIHtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvV2lzaGxpc3QocHJvZHVjdCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBhZGRPcmRlcmVkSXRlbVRvRmF2b3VyaXRlKG9yZGVyZWRJdGVtOiBPcmRlcmVkSXRlbXMpIHtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvV2lzaGxpc3Qob3JkZXJlZEl0ZW0pO1xyXG4gIH1cclxuICBwdWJsaWMgcmVtb3ZlSXRlbUZyb21GYXZvdXJpdGUodmFyaWVudElkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlUHJvZHVjdEZyb21XaXNobGlzdCh2YXJpZW50SWQpO1xyXG4gIH1cclxuICBwdWJsaWMgcmVtb3ZlSXRlbUZyb21DYXJ0KHByb2R1Y3Q6IFByb2R1Y3QgfCBPcmRlcmVkSXRlbXMpIHtcclxuICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UucmVtb3ZlUHJvZHVjdEZyb21DYXJ0KHByb2R1Y3QudmFyaWVudElkKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBvYmplY3RNYXBwZXIocHJvZHVjdDogUHJvZHVjdCwgdmFyaWFudElkPzogc3RyaW5nKTogT3JkZXJlZEl0ZW1zIHtcclxuICAgIHJldHVybiBuZXcgT3JkZXJlZEl0ZW1zKHByb2R1Y3QsIHZhcmlhbnRJZCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQ3RFLE9BQU8sRUFBVyx5QkFBeUIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBS3ZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFLdEMsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDbUIsY0FBcUMsRUFDckMsV0FBd0I7UUFEeEIsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBQ3JDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBRTNDLENBQUM7SUFHTSxtQkFBbUIsQ0FBQyxPQUFxQixFQUFFLFFBQWE7UUFDN0QsSUFBSSxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDckIsK0JBQStCO1lBQy9CLDhEQUE4RDtZQUM5RCx1Q0FBdUM7WUFDdkMsd0JBQXdCO1lBQ3hCLE1BQU07WUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLE9BQXVCLENBQUMsQ0FBQztZQUM5RCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELENBQUM7YUFBTSxDQUFDO1lBQ04sd0JBQXdCO1lBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNqQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELENBQUM7SUFDSCxDQUFDO0lBQ00sdUJBQXVCLENBQUMsT0FBcUIsRUFBRSxZQUFpQjtRQUNyRSxJQUFJLENBQUMsY0FBYyxDQUFD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aXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uL2Vjb21tZXJjZS9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcbmltcG9ydCB7IFByb2R1Y3QsIHN5bmNJdGVtVG9TZXJ2ZXJEQlJlcXVlc3QgfSBmcm9tICcuLi9lY29tbWVyY2Uvc3R5bGVzL3Byb2R1Y3QubW9kYWwnO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuL3Jlc3Quc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBDYXJ0IH0gZnJvbSAnLi4vZWNvbW1lcmNlL3N0eWxlcy9jYXJ0Lm1vZGFsJztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICcuLi9lY29tbWVyY2Uvc3R5bGVzL3VzZXIubW9kYWwnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIENhcnRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlXG4gICkge1xuICB9XG5cblxuICBwdWJsaWMgYWRkSXRlbUZyb21DYXJ0UGFnZShwcm9kdWN0OiBPcmRlcmVkSXRlbXMsIHVzZXJDYXJ0OiBhbnkpIHtcbiAgICBpZiAocHJvZHVjdC5xdWFudGl0eSkge1xuICAgICAgLy8gbGV0IHByb2R1Y3RJZHg6IG51bWJlciA9IC0xO1xuICAgICAgLy8gVXNlckNhcnQub3JkZXJlZEl0ZW1zLmZvckVhY2goKGl0ZW06IE9yZGVyZWRJdGVtcywgaWR4KT0+IHtcbiAgICAgIC8vICAgaWYgKGl0ZW0uaXRlbUlkID09IHByb2R1Y3QuaXRlbUlkKVxuICAgICAgLy8gICAgIHByb2R1Y3RJZHggPSBpZHg7XG4gICAgICAvLyB9KTtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuYWRkUHJvZHVjdFRvQ2FydChwcm9kdWN0IGFzIE9yZGVyZWRJdGVtcyk7XG4gICAgICByZXR1cm4gdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih1c2VyQ2FydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHJlbW92ZSBpdGVtIGZyb20gY2FydFxuICAgICAgdGhpcy5yZW1vdmVJdGVtRnJvbUNhcnQocHJvZHVjdCk7XG4gICAgICByZXR1cm4gdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih1c2VyQ2FydCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBhZGRJdGVtRnJvbVdpc2hsaXN0UGFnZShwcm9kdWN0OiBPcmRlcmVkSXRlbXMsIHVzZXJXaXNobGlzdDogYW55KSB7XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9XaXNobGlzdChwcm9kdWN0KTtcbiAgICByZXR1cm4gdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih1c2VyV2lzaGxpc3QpO1xuICB9XG4gIHB1YmxpYyByZW1vdmVJdGVtRnJvbVdpc2hsaXN0UGFnZShwcm9kdWN0OiBPcmRlcmVkSXRlbXMsIHVzZXJXaXNobGlzdDogYW55KSB7XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5yZW1vdmVQcm9kdWN0RnJvbVdpc2hsaXN0KHByb2R1Y3QudmFyaWVudElkKTtcbiAgICByZXR1cm4gdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih1c2VyV2lzaGxpc3QpO1xuICB9XG5cbiAgcHVibGljIGFkZEl0ZW1Ub0NhcnQocHJvZHVjdDogUHJvZHVjdCB8IE9yZGVyZWRJdGVtcywgdmFyaWVudElkPzogc3RyaW5nKSB7XG5cbiAgICBpZiAocHJvZHVjdC5xdWFudGl0eSkge1xuXG4gICAgICBjb25zdCBvcmRlcmVkSXRlbSA9IHRoaXMub2JqZWN0TWFwcGVyKHByb2R1Y3QgYXMgUHJvZHVjdCwgdmFyaWVudElkKTtcbiAgICAgIHJldHVybiB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb0NhcnQob3JkZXJlZEl0ZW0gYXMgT3JkZXJlZEl0ZW1zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucmVtb3ZlSXRlbUZyb21DYXJ0KHByb2R1Y3QgYXMgUHJvZHVjdCk7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBhZGRJdGVtVG9GYXZvdXJpdGUocHJvZHVjdDogUHJvZHVjdCwgdmFyaWVudElkPzogc3RyaW5nKSB7XG5cbiAgICBjb25zdCBvcmRlcmVkSXRlbSA9IHRoaXMub2JqZWN0TWFwcGVyKHByb2R1Y3QsIHZhcmllbnRJZCk7XG4gICAgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9XaXNobGlzdChvcmRlcmVkSXRlbSk7XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgYWRkSXRlbVRvVHJpYWwocHJvZHVjdDogUHJvZHVjdCwgdmFyaWVudElkPzogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3Qgb3JkZXJlZEl0ZW0gPSB0aGlzLm9iamVjdE1hcHBlcihwcm9kdWN0LCB2YXJpZW50SWQpO1xuXG4gICAgY29uc3QgdXNlcjogVXNlciB8IG51bGwgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFVzZXIoKTtcblxuICAgIGlmICh1c2VyKSB7XG4gICAgICBjb25zdCByZXF1ZXN0ID0gbmV3IHN5bmNJdGVtVG9TZXJ2ZXJEQlJlcXVlc3QodXNlci51c2VySWQsICdUUklBTF9DQVJUJywgW29yZGVyZWRJdGVtXSk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMucmVzdFNlcnZpY2UuYWRkVHJpYWxJdGVtKHJlcXVlc3QpKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBhZGRpbmcgdHJpYWwgaXRlbSB0byBzZXJ2ZXI6JywgZXJyb3IpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGJSZXF1ZXN0OiBhbnkgPSBhd2FpdCB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFRyaWFsQ2FydCgpO1xuXG4gICAgICAgIGNvbnN0IHRyaWFsQ2FydEl0ZW06IE9yZGVyZWRJdGVtc1tdID0gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgIGRiUmVxdWVzdC5vbnN1Y2Nlc3MgPSAoZXZlbnQ6IGFueSkgPT4gcmVzb2x2ZShldmVudC50YXJnZXQucmVzdWx0KTtcbiAgICAgICAgICBkYlJlcXVlc3Qub25lcnJvciA9IChldmVudDogYW55KSA9PiByZWplY3QoZXZlbnQudGFyZ2V0LmVycm9yKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgaXNJdGVtQWxyZWFkeUFkZGVkID0gdHJpYWxDYXJ0SXRlbS5zb21lKChpdGVtOiBPcmRlcmVkSXRlbXMpID0+XG4gICAgICAgICAgaXRlbS5pdGVtSWQgPT09IHByb2R1Y3QuaXRlbUlkICYmXG4gICAgICAgICAgKHByb2R1Y3Q/Lml0ZW1WYXJpYW50Py5sZW5ndGggPT09IDAgfHwgcHJvZHVjdC52YXJpZW50SWQgPT09IGl0ZW0udmFyaWVudElkKVxuICAgICAgICApO1xuXG4gICAgICAgIGlmICghaXNJdGVtQWxyZWFkeUFkZGVkKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5zdG9yYWdlU2VydmljZS5hZGRQcm9kdWN0VG9UcmlhbChvcmRlcmVkSXRlbSk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG5cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGFjY2Vzc2luZyB0cmlhbCBjYXJ0IGZyb20gbG9jYWwgc3RvcmFnZTonLCBlcnJvcik7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIHB1YmxpYyBhZGRJdGVtVG9GYXZGcm9tQ2FydChwcm9kdWN0OiBPcmRlcmVkSXRlbXMpIHtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb1dpc2hsaXN0KHByb2R1Y3QpO1xuICB9XG4gIHB1YmxpYyBhZGRPcmRlcmVkSXRlbVRvRmF2b3VyaXRlKG9yZGVyZWRJdGVtOiBPcmRlcmVkSXRlbXMpIHtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmFkZFByb2R1Y3RUb1dpc2hsaXN0KG9yZGVyZWRJdGVtKTtcbiAgfVxuICBwdWJsaWMgcmVtb3ZlSXRlbUZyb21GYXZvdXJpdGUodmFyaWVudElkOiBzdHJpbmcpIHtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVByb2R1Y3RGcm9tV2lzaGxpc3QodmFyaWVudElkKTtcbiAgfVxuICBwdWJsaWMgcmVtb3ZlSXRlbUZyb21DYXJ0KHByb2R1Y3Q6IFByb2R1Y3QgfCBPcmRlcmVkSXRlbXMpIHtcbiAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnJlbW92ZVByb2R1Y3RGcm9tQ2FydChwcm9kdWN0LnZhcmllbnRJZCk7XG4gIH1cbiAgcHJpdmF0ZSBvYmplY3RNYXBwZXIocHJvZHVjdDogUHJvZHVjdCwgdmFyaWFudElkPzogc3RyaW5nKTogT3JkZXJlZEl0ZW1zIHtcbiAgICByZXR1cm4gbmV3IE9yZGVyZWRJdGVtcyhwcm9kdWN0LCB2YXJpYW50SWQpO1xuICB9XG59XG4iXX0=
@@ -25,4 +25,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
25
25
  providedIn: 'root',
26
26
  }]
27
27
  }], ctorParameters: () => [{ type: i1.StorageServiceService }] });
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kVXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9lbmRVc2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7QUFPNUUsTUFBTSxPQUFPLGNBQWM7SUFDdkIsWUFDcUIsY0FBcUM7UUFBckMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBR25ELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEQsYUFBUSxHQUF3QixJQUFJLENBQUM7SUFIekMsQ0FBQztJQUlMLFFBQVE7UUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzRCxJQUFJLFFBQVE7Z0JBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDOytHQWZRLGNBQWM7bUhBQWQsY0FBYyxjQUZYLE1BQU07OzRGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlU2VydmljZSB9IGZyb20gXCIuL3N0b3JhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRW5kVXNlclNlcnZpY2UgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2VcclxuICAgICkgeyB9XHJcblxyXG4gICAgcHVibGljIHBheW1lbnRTdGF0dXNFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgIHByaXZhdGUgZXZlbnRSZWY6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ldmVudFJlZiA9IHRoaXMucGF5bWVudFN0YXR1c0V2ZW50LnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS5jbGVhclVzZXJDYXJ0KCk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZXZlbnRSZWY/LnVuc3Vic2NyaWJlKCk7XHJcbiAgICB9XHJcbn0gICJdfQ==
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW5kVXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9lbmRVc2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQXFCLE1BQU0sZUFBZSxDQUFDOzs7QUFPNUUsTUFBTSxPQUFPLGNBQWM7SUFDdkIsWUFDcUIsY0FBcUM7UUFBckMsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBR25ELHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDaEQsYUFBUSxHQUF3QixJQUFJLENBQUM7SUFIekMsQ0FBQztJQUlMLFFBQVE7UUFDSixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUMzRCxJQUFJLFFBQVE7Z0JBQ1IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFDRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUNqQyxDQUFDOytHQWZRLGNBQWM7bUhBQWQsY0FBYyxjQUZYLE1BQU07OzRGQUVULGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tIFwiLi9zdG9yYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEVuZFVzZXJTZXJ2aWNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZVNlcnZpY2VcbiAgICApIHsgfVxuXG4gICAgcHVibGljIHBheW1lbnRTdGF0dXNFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBwcml2YXRlIGV2ZW50UmVmOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ldmVudFJlZiA9IHRoaXMucGF5bWVudFN0YXR1c0V2ZW50LnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZSlcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmNsZWFyVXNlckNhcnQoKTtcbiAgICAgICAgfSlcbiAgICB9XG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZXZlbnRSZWY/LnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufSAgIl19
@@ -104,4 +104,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
104
104
  type: Inject,
105
105
  args: [BUCKET_URL]
106
106
  }] }] });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTWpELE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsdUJBQXVCO0lBQ3ZCLHFFQUFxRTtJQUNyRSwrQkFBK0I7SUFFL0IsWUFBb0IsSUFBZ0IsRUFDTixTQUFjO1FBRHhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDTixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBYjVDLG1CQUFjLEdBQVE7WUFDcEIsUUFBUSxFQUFFLHNLQUFzSztZQUNoTCxXQUFXLEVBQUUsVUFBVTtZQUN2QixhQUFhLEVBQUUsV0FBVztTQUMzQixDQUFBO1FBQ0QsdUJBQWtCLEdBQUcsNkNBQTZDLENBQUE7UUFVaEUsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUM7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxvQkFBb0I7WUFDbkUsV0FBVyxFQUFFLHVCQUF1QixDQUFDO2dCQUNuQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNO2dCQUN0QyxZQUFZLEVBQUUsRUFBRSxN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cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBmcm9tQ29nbml0b0lkZW50aXR5UG9vbCB9IGZyb20gJ0Bhd3Mtc2RrL2NyZWRlbnRpYWwtcHJvdmlkZXItY29nbml0by1pZGVudGl0eSc7XHJcbmltcG9ydCB7IFMzQ2xpZW50LCBQdXRPYmplY3RDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcclxuaW1wb3J0IHsgQlVDS0VUX1VSTCB9IGZyb20gJy4uL3Rva2Vucy9hcGktdG9rZW4nO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIEltYWdlVXBsYW9kU2VydmljZSB7XHJcbiAgY21pc0ZpbGVVcGxvYWQ6IGFueSA9IHtcclxuICAgIHNhc1Rva2VuOiAnc3Y9MjAyMi0xMS0wMiZzcz1iZnF0JnNydD1zY28mc3A9cndkbGFjdXBpeXRmeCZzZT0yMDI5LTEyLTMxVDIzOjQ1OjAzWiZzdD0yMDI0LTEyLTE4VDE1OjQ1OjAzWiZzcHI9aHR0cHMsaHR0cCZzaWc9UWpqNVhlNUtpTXh2RVRtNnJQJTJGWlAzMWkzeERTOXQxUXV5dUtnY1klMkZQQzglM0QnLFxyXG4gICAgYWNjb3VudE5hbWU6ICdjbWlzcHJvZCcsXHJcbiAgICBjb250YWluZXJOYW1lOiAncHJvZC1jbWlzJ1xyXG4gIH1cclxuICBVTlNQTEFTSF9BUElfVE9LRU4gPSAnaU1uNDNIQ1pfRkxDTVdrWmdVdE1BanQtcC1NNnZtYUIxWl8zZmJldG1KQSdcclxuXHJcbiAgcHJpdmF0ZSBzM0NsaWVudD86IFMzQ2xpZW50O1xyXG4gIC8vIHJlZ2lvbiA9ICd1cy1lYXN0LTEnXHJcbiAgLy8gaWRlbnRpdHlQb29sSWQgPSAndXMtZWFzdC0xOmQ0YmM3NzBhLTU2NjQtNDA1MS1iZDY2LTY4NjFhNmVmYmQ5Yyc7XHJcbiAgLy8gYnVja2V0TmFtZSA9IGAke2J1Y2tldFVybH1gO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBASW5qZWN0KEJVQ0tFVF9VUkwpIHByaXZhdGUgYnVja2V0VXJsOiBhbnkpIFxyXG4gICB7XHJcbiAgICAvLyBjb25zb2xlLmxvZygnYnVja2V0VXJsJywgdGhpcy5idWNrZXRVcmwpO1xyXG4gICAgdGhpcy5zM0NsaWVudCA9IG5ldyBTM0NsaWVudCh7XHJcbiAgICAgIHJlZ2lvbjogdGhpcy5idWNrZXRVcmw/LmJ1Y2tldERldGFpbHM/LlJlZ2lvbiwgLy8gZS5nLiwgJ3VzLWVhc3QtMSdcclxuICAgICAgY3JlZGVudGlhbHM6IGZyb21Db2duaXRvSWRlbnRpdHlQb29sKHtcclxuICAgICAgICBpZGVudGl0eVBvb2xJZDogdGhpcy5idWNrZXRVcmw/LnBvb2xJZCxcclxuICAgICAgICBjbGllbnRDb25maWc6IHsgcmVnaW9uOiB0aGlzLmJ1Y2tldFVybD8uYnVja2V0RGV0YWlscz8uUmVnaW9uIH0sXHJcbiAgICAgIH0pXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwbG9hZEZpbGVJbkF6dXJlKGZpbGU6IEZpbGUsIGZvbGRlck5hbWU6IHN0cmluZyA9ICdjbWlzJykge1xyXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIGNvbnN0IHsgQmxvYlNlcnZpY2VDbGllbnQgfSA9IGF3YWl0IGltcG9ydCgnQGF6dXJlL3N0b3JhZ2UtYmxvYicpO1xyXG5cclxuICAgICAgY29uc3Qgc2FzVG9rZW4gPSB0aGlzLmNtaXNGaWxlVXBsb2FkLnNhc1Rva2VuLnN0YXJ0c1dpdGgoJz8nKVxyXG4gICAgICAgID8gdGhpcy5jbWlzRmlsZVVwbG9hZC5zYXNUb2tlblxyXG4gICAgICAgIDogYD8ke3RoaXMuY21pc0ZpbGVVcGxvYWQuc2FzVG9rZW59YDtcclxuICAgICAgY29uc3QgYWNjb3VudE5hbWUgPSB0aGlzLmNtaXNGaWxlVXBsb2FkLmFjY291bnROYW1lO1xyXG4gICAgICBjb25zdCBjb250YWluZXJOYW1lID0gdGhpcy5jbWlzRmlsZVVwbG9hZC5jb250YWluZXJOYW1lO1xyXG5cclxuICAgICAgY29uc3QgYmxvYlNlcnZpY2VDbGllbnQgPSBuZXcgQmxvYlNlcnZpY2VDbGllbnQoYGh0dHBzOi8vJHthY2NvdW50TmFtZX0uYmxvYi5jb3JlLndpbmRvd3MubmV0JHtzYXNUb2tlbn1gKTtcclxuICAgICAgY29uc3QgY29udGFpbmVyQ2xpZW50ID0gYmxvYlNlcnZpY2VDbGllbnQuZ2V0Q29udGFpbmVyQ2xpZW50KGNvbnRhaW5lck5hbWUpO1xyXG4gICAgICBjb25zdCBibG9iTmFtZSA9IGAke2ZvbGRlck5hbWV9LyR7ZmlsZS5uYW1lfWA7XHJcbiAgICAgIGNvbnN0IGJsb2NrQmxvYkNsaWVudCA9IGNvbnRhaW5lckNsaWVudC5nZXRCbG9ja0Jsb2JDbGllbnQoYmxvYk5hbWUpO1xyXG5cclxuICAgICAgYXdhaXQgYmxvY2tCbG9iQ2xpZW50LnVwbG9hZERhdGEoZmlsZSwge1xyXG4gICAgICAgIGJsb2JIVFRQSGVhZGVyczogeyBibG9iQ29udGVudFR5cGU6IGZpbGUudHlwZSB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiBibG9ja0Jsb2JDbGllbnQ7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwbG9hZEZpbGVJbkFXUyhmaWxlOiBGaWxlLCBmb2xkZXJOYW1lOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICB0cnkge1xyXG4gICAgICAvLyBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBkb21haW5cclxuICAgICAgY29uc3QgY2xvdWRmcm9udERvbWFpbiA9IHRoaXMuYnVja2V0VXJsLmJ1Y2tldERldGFpbHMuQnVja2V0ID09ICdkZXYtYmVlb3MnID8gJ2h0dHBzOi8vZDJ5eDE1cG5jZ211NjMuY2xvdWRmcm9udC5uZXQnIDogJ2h0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQnIDtcclxuICAgICAgXHJcbiAgICAgIC8vIENyZWF0ZSBhIHVuaXF1ZSBmaWxlIG5hbWVcclxuICAgICAgY29uc3QgZmlsZU5hbWUgPSBgJHtmb2xkZXJOYW1lfS8ke0RhdGUubm93KCl9LSR7ZmlsZS5uYW1lLnJlcGxhY2UoJyAnLCAnXycpfWA7XHJcbiAgXHJcbiAgICAgIC8vIENvbnZlcnQgZmlsZSB0byBidWZmZXJcclxuICAgICAgY29uc3QgZmlsZUJ1ZmZlciA9IGF3YWl0IHRoaXMuZmlsZVRvQXJyYXlCdWZmZXIoZmlsZSk7XHJcbiAgXHJcbiAgICAgIC8vIFByZXBhcmUgdGhlIHVwbG9hZCBwYXJhbWV0ZXJzXHJcbiAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xyXG4gICAgICAgIEJ1Y2tldDogdGhpcy5idWNrZXRVcmwuYnVja2V0RGV0YWlscy5CdWNrZXQsXHJcbiAgICAgICAgS2V5OiBmaWxlTmFtZSxcclxuICAgICAgICBCb2R5OiBmaWxlQnVmZmVyLFxyXG4gICAgICAgIENvbnRlbnRUeXBlOiBmaWxlLnR5cGUsXHJcbiAgICAgICAgLy8gUmVtb3ZlIHB1YmxpYy1yZWFkIEFDTCBpZiB1c2luZyBPQUMvT0FJIGFzIGl0J3Mgbm90IG5lZWRlZCBhbmQgbWF5IGNhdXNlIGlzc3Vlc1xyXG4gICAgICAgIC8vIEFDTDogJ3B1YmxpYy1yZWFkJ1xyXG4gICAgICB9O1xyXG4gIFxyXG4gICAgICAvLyBVcGxvYWQgZmlsZSB0byBTM1xyXG4gICAgICBjb25zdCBjb21tYW5kID0gbmV3IFB1dE9iamVjdENvbW1hbmQocGFyYW1zKTtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnMzQ2xpZW50Py5zZW5kKGNvbW1hbmQpO1xyXG4gIFxyXG4gICAgICAvLyBDb25zdHJ1Y3QgdGhlIENsb3VkRnJvbnQgVVJMIGluc3RlYWQgb2YgUzMgVVJMXHJcbiAgICAgIGNvbnN0IHVybCA9IGAke2Nsb3VkZnJvbnREb21haW59LyR7ZmlsZU5hbWV9YDtcclxuICAgICAgXHJcbiAgICAgIHJldHVybiB1cmw7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB1cGxvYWRpbmcgZmlsZTogJywgZXJyb3IpO1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmlsZVRvQXJyYXlCdWZmZXIoZmlsZTogRmlsZSk6IFByb21pc2U8QXJyYXlCdWZmZXI+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQgYXMgQXJyYXlCdWZmZXIpO1xyXG4gICAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XHJcbiAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9VbnNwbGFzaCByZWxhdGVkIEFQSVNcclxuICBzZWFyY2hQaG90b3NJblVuc3BsYXNoKFxyXG4gICAgc2VhcmNoZWRUZXh0OiBzdHJpbmcsXHJcbiAgICBwYWdlOiBudW1iZXIgPSAxLFxyXG4gICAgc2l6ZTogbnVtYmVyID0gMTBcclxuICApIHtcclxuICAgIGNvbnN0IGhlYWRlciA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgIEF1dGhvcml6YXRpb246IGBDbGllbnQtSUQgJHt0aGlzLlVOU1BMQVNIX0FQSV9UT0tFTn1gLFxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIGBodHRwczovL2FwaS51bnNwbGFzaC5jb20vc2VhcmNoL3Bob3Rvcz9wYWdlPSR7cGFnZX0mcGVyX3BhZ2U9JHtzaXplfSZxdWVyeT0ke3NlYXJjaGVkVGV4dH1gLFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyczogaGVhZGVyLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvc2VydmljZXMvaW1hZ2UtdXBsb2FkLXNlcnZpY2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDeEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBTWpELE1BQU0sT0FBTyxrQkFBa0I7SUFTN0IsdUJBQXVCO0lBQ3ZCLHFFQUFxRTtJQUNyRSwrQkFBK0I7SUFFL0IsWUFBb0IsSUFBZ0IsRUFDTixTQUFjO1FBRHhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFDTixjQUFTLEdBQVQsU0FBUyxDQUFLO1FBYjVDLG1CQUFjLEdBQVE7WUFDcEIsUUFBUSxFQUFFLHNLQUFzSztZQUNoTCxXQUFXLEVBQUUsVUFBVTtZQUN2QixhQUFhLEVBQUUsV0FBVztTQUMzQixDQUFBO1FBQ0QsdUJBQWtCLEdBQUcsNkNBQTZDLENBQUE7UUFVaEUsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUM7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxvQkFBb0I7WUFDbkUsV0FBVyxFQUFFLHVCQUF1QixDQUFDO2dCQUNuQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNO2dCQUN0QyxZQUFZLEVBQUUsRUFBRSxN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cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZyb21Db2duaXRvSWRlbnRpdHlQb29sIH0gZnJvbSAnQGF3cy1zZGsvY3JlZGVudGlhbC1wcm92aWRlci1jb2duaXRvLWlkZW50aXR5JztcbmltcG9ydCB7IFMzQ2xpZW50LCBQdXRPYmplY3RDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCB7IEJVQ0tFVF9VUkwgfSBmcm9tICcuLi90b2tlbnMvYXBpLXRva2VuJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5cbmV4cG9ydCBjbGFzcyBJbWFnZVVwbGFvZFNlcnZpY2Uge1xuICBjbWlzRmlsZVVwbG9hZDogYW55ID0ge1xuICAgIHNhc1Rva2VuOiAnc3Y9MjAyMi0xMS0wMiZzcz1iZnF0JnNydD1zY28mc3A9cndkbGFjdXBpeXRmeCZzZT0yMDI5LTEyLTMxVDIzOjQ1OjAzWiZzdD0yMDI0LTEyLTE4VDE1OjQ1OjAzWiZzcHI9aHR0cHMsaHR0cCZzaWc9UWpqNVhlNUtpTXh2RVRtNnJQJTJGWlAzMWkzeERTOXQxUXV5dUtnY1klMkZQQzglM0QnLFxuICAgIGFjY291bnROYW1lOiAnY21pc3Byb2QnLFxuICAgIGNvbnRhaW5lck5hbWU6ICdwcm9kLWNtaXMnXG4gIH1cbiAgVU5TUExBU0hfQVBJX1RPS0VOID0gJ2lNbjQzSENaX0ZMQ01Xa1pnVXRNQWp0LXAtTTZ2bWFCMVpfM2ZiZXRtSkEnXG5cbiAgcHJpdmF0ZSBzM0NsaWVudD86IFMzQ2xpZW50O1xuICAvLyByZWdpb24gPSAndXMtZWFzdC0xJ1xuICAvLyBpZGVudGl0eVBvb2xJZCA9ICd1cy1lYXN0LTE6ZDRiYzc3MGEtNTY2NC00MDUxLWJkNjYtNjg2MWE2ZWZiZDljJztcbiAgLy8gYnVja2V0TmFtZSA9IGAke2J1Y2tldFVybH1gO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBASW5qZWN0KEJVQ0tFVF9VUkwpIHByaXZhdGUgYnVja2V0VXJsOiBhbnkpIFxuICAge1xuICAgIC8vIGNvbnNvbGUubG9nKCdidWNrZXRVcmwnLCB0aGlzLmJ1Y2tldFVybCk7XG4gICAgdGhpcy5zM0NsaWVudCA9IG5ldyBTM0NsaWVudCh7XG4gICAgICByZWdpb246IHRoaXMuYnVja2V0VXJsPy5idWNrZXREZXRhaWxzPy5SZWdpb24sIC8vIGUuZy4sICd1cy1lYXN0LTEnXG4gICAgICBjcmVkZW50aWFsczogZnJvbUNvZ25pdG9JZGVudGl0eVBvb2woe1xuICAgICAgICBpZGVudGl0eVBvb2xJZDogdGhpcy5idWNrZXRVcmw/LnBvb2xJZCxcbiAgICAgICAgY2xpZW50Q29uZmlnOiB7IHJlZ2lvbjogdGhpcy5idWNrZXRVcmw/LmJ1Y2tldERldGFpbHM/LlJlZ2lvbiB9LFxuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGVJbkF6dXJlKGZpbGU6IEZpbGUsIGZvbGRlck5hbWU6IHN0cmluZyA9ICdjbWlzJykge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc3QgeyBCbG9iU2VydmljZUNsaWVudCB9ID0gYXdhaXQgaW1wb3J0KCdAYXp1cmUvc3RvcmFnZS1ibG9iJyk7XG5cbiAgICAgIGNvbnN0IHNhc1Rva2VuID0gdGhpcy5jbWlzRmlsZVVwbG9hZC5zYXNUb2tlbi5zdGFydHNXaXRoKCc/JylcbiAgICAgICAgPyB0aGlzLmNtaXNGaWxlVXBsb2FkLnNhc1Rva2VuXG4gICAgICAgIDogYD8ke3RoaXMuY21pc0ZpbGVVcGxvYWQuc2FzVG9rZW59YDtcbiAgICAgIGNvbnN0IGFjY291bnROYW1lID0gdGhpcy5jbWlzRmlsZVVwbG9hZC5hY2NvdW50TmFtZTtcbiAgICAgIGNvbnN0IGNvbnRhaW5lck5hbWUgPSB0aGlzLmNtaXNGaWxlVXBsb2FkLmNvbnRhaW5lck5hbWU7XG5cbiAgICAgIGNvbnN0IGJsb2JTZXJ2aWNlQ2xpZW50ID0gbmV3IEJsb2JTZXJ2aWNlQ2xpZW50KGBodHRwczovLyR7YWNjb3VudE5hbWV9LmJsb2IuY29yZS53aW5kb3dzLm5ldCR7c2FzVG9rZW59YCk7XG4gICAgICBjb25zdCBjb250YWluZXJDbGllbnQgPSBibG9iU2VydmljZUNsaWVudC5nZXRDb250YWluZXJDbGllbnQoY29udGFpbmVyTmFtZSk7XG4gICAgICBjb25zdCBibG9iTmFtZSA9IGAke2ZvbGRlck5hbWV9LyR7ZmlsZS5uYW1lfWA7XG4gICAgICBjb25zdCBibG9ja0Jsb2JDbGllbnQgPSBjb250YWluZXJDbGllbnQuZ2V0QmxvY2tCbG9iQ2xpZW50KGJsb2JOYW1lKTtcblxuICAgICAgYXdhaXQgYmxvY2tCbG9iQ2xpZW50LnVwbG9hZERhdGEoZmlsZSwge1xuICAgICAgICBibG9iSFRUUEhlYWRlcnM6IHsgYmxvYkNvbnRlbnRUeXBlOiBmaWxlLnR5cGUgfSxcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYmxvY2tCbG9iQ2xpZW50O1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGFzeW5jIHVwbG9hZEZpbGVJbkFXUyhmaWxlOiBGaWxlLCBmb2xkZXJOYW1lOiBzdHJpbmcgPSAnJyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIENsb3VkRnJvbnQgZGlzdHJpYnV0aW9uIGRvbWFpblxuICAgICAgY29uc3QgY2xvdWRmcm9udERvbWFpbiA9IHRoaXMuYnVja2V0VXJsLmJ1Y2tldERldGFpbHMuQnVja2V0ID09ICdkZXYtYmVlb3MnID8gJ2h0dHBzOi8vZDJ5eDE1cG5jZ211NjMuY2xvdWRmcm9udC5uZXQnIDogJ2h0dHBzOi8vZDJ6OTQ5N3hwOHhiMTIuY2xvdWRmcm9udC5uZXQnIDtcbiAgICAgIFxuICAgICAgLy8gQ3JlYXRlIGEgdW5pcXVlIGZpbGUgbmFtZVxuICAgICAgY29uc3QgZmlsZU5hbWUgPSBgJHtmb2xkZXJOYW1lfS8ke0RhdGUubm93KCl9LSR7ZmlsZS5uYW1lLnJlcGxhY2UoJyAnLCAnXycpfWA7XG4gIFxuICAgICAgLy8gQ29udmVydCBmaWxlIHRvIGJ1ZmZlclxuICAgICAgY29uc3QgZmlsZUJ1ZmZlciA9IGF3YWl0IHRoaXMuZmlsZVRvQXJyYXlCdWZmZXIoZmlsZSk7XG4gIFxuICAgICAgLy8gUHJlcGFyZSB0aGUgdXBsb2FkIHBhcmFtZXRlcnNcbiAgICAgIGNvbnN0IHBhcmFtczogYW55ID0ge1xuICAgICAgICBCdWNrZXQ6IHRoaXMuYnVja2V0VXJsLmJ1Y2tldERldGFpbHMuQnVja2V0LFxuICAgICAgICBLZXk6IGZpbGVOYW1lLFxuICAgICAgICBCb2R5OiBmaWxlQnVmZmVyLFxuICAgICAgICBDb250ZW50VHlwZTogZmlsZS50eXBlLFxuICAgICAgICAvLyBSZW1vdmUgcHVibGljLXJlYWQgQUNMIGlmIHVzaW5nIE9BQy9PQUkgYXMgaXQncyBub3QgbmVlZGVkIGFuZCBtYXkgY2F1c2UgaXNzdWVzXG4gICAgICAgIC8vIEFDTDogJ3B1YmxpYy1yZWFkJ1xuICAgICAgfTtcbiAgXG4gICAgICAvLyBVcGxvYWQgZmlsZSB0byBTM1xuICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBQdXRPYmplY3RDb21tYW5kKHBhcmFtcyk7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuczNDbGllbnQ/LnNlbmQoY29tbWFuZCk7XG4gIFxuICAgICAgLy8gQ29uc3RydWN0IHRoZSBDbG91ZEZyb250IFVSTCBpbnN0ZWFkIG9mIFMzIFVSTFxuICAgICAgY29uc3QgdXJsID0gYCR7Y2xvdWRmcm9udERvbWFpbn0vJHtmaWxlTmFtZX1gO1xuICAgICAgXG4gICAgICByZXR1cm4gdXJsO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciB1cGxvYWRpbmcgZmlsZTogJywgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaWxlVG9BcnJheUJ1ZmZlcihmaWxlOiBGaWxlKTogUHJvbWlzZTxBcnJheUJ1ZmZlcj4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCBhcyBBcnJheUJ1ZmZlcik7XG4gICAgICByZWFkZXIub25lcnJvciA9IGVycm9yID0+IHJlamVjdChlcnJvcik7XG4gICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XG4gICAgfSk7XG4gIH1cblxuICAvL1Vuc3BsYXNoIHJlbGF0ZWQgQVBJU1xuICBzZWFyY2hQaG90b3NJblVuc3BsYXNoKFxuICAgIHNlYXJjaGVkVGV4dDogc3RyaW5nLFxuICAgIHBhZ2U6IG51bWJlciA9IDEsXG4gICAgc2l6ZTogbnVtYmVyID0gMTBcbiAgKSB7XG4gICAgY29uc3QgaGVhZGVyID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgIEF1dGhvcml6YXRpb246IGBDbGllbnQtSUQgJHt0aGlzLlVOU1BMQVNIX0FQSV9UT0tFTn1gLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgaHR0cHM6Ly9hcGkudW5zcGxhc2guY29tL3NlYXJjaC9waG90b3M/cGFnZT0ke3BhZ2V9JnBlcl9wYWdlPSR7c2l6ZX0mcXVlcnk9JHtzZWFyY2hlZFRleHR9YCxcbiAgICAgIHtcbiAgICAgICAgaGVhZGVyczogaGVhZGVyLFxuICAgICAgfVxuICAgICk7XG4gIH1cblxufVxuIl19
@@ -410,7 +410,7 @@ export class RestService {
410
410
  return this.http.post(this.BASE_URL + `ecommerce/user/try-home`, request);
411
411
  }
412
412
  createEnrollmentScheme(enrollement) {
413
- return this.http.post(` https://stageapi-orra.letsmobility.com/enrollment/create/new/temp?manualPay=true&isWebRequest=true
413
+ return this.http.post(` https://stageapi-orra.letsmobility.com/enrollment/create/new/temp?manualPay=true&isWebRequest=true
414
414
  `, enrollement);
415
415
  }
416
416
  getHomeAppointmentList(userId) {
@@ -546,4 +546,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
546
546
  type: Inject,
547
547
  args: [PASSBOOK_URL]
548
548
  }] }] });
549
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxHQUFHLEVBQXdDLE1BQU0sTUFBTSxDQUFDO0FBS2pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFDN0QsT0FBTyxFQUF5QixPQUFPLEVBQTZCLE1BQU0sbUNBQW1DLENBQUM7QUFDOUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQU1oRSxNQUFNLE9BQU8sV0FBVztJQWF0QixZQUNtQixJQUFnQjtJQUNqQyxnREFBZ0Q7SUFDdkIsUUFBZ0IsRUFDVixhQUFxQixFQUMxQixRQUFnQixFQUN6QixhQUE0QixFQUNkLE9BQW9CLEVBQ3JCLFlBQW9CO1FBUGpDLFNBQUksR0FBSixJQUFJLENBQVk7UUFFUixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ1Ysa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQVE7UUFuQnBELDBEQUEwRDtRQUMxRCxxRUFBcUU7UUFDckUsMkVBQTJFO1FBQzNFLGdFQUFnRTtR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Q0FBbUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDOUYsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxxQ0FBcUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUMxRixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3BFLENBQUM7K0dBaHFCVSxXQUFXLDRDQWdCWixPQUFPLGFBQ1AsYUFBYSxhQUNiLFFBQVEsMENBRVIsYUFBYSxhQUNiLFlBQVk7bUhBckJYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBaUJJLE1BQU07MkJBQUMsT0FBTzs7MEJBQ2QsTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQyxRQUFROzswQkFFZixNQUFNOzJCQUFDLGFBQWE7OzBCQUNwQixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgU3Vic2NyaWJlciwgU3Vic2NyaXB0aW9uIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgUmV2aWV3IH0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvcmV2aWV3Lm1vZGFsXCI7XHJcbmltcG9ydCB7IERldmljZUluZm8gfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy91c2VyLm1vZGFsXCI7XHJcbmltcG9ydCB7IFBpbkNvZGVMb2NhdGlvbkludGVyIH0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvUGluY29kZUxvY2F0aW9uSW50ZXIubW9kZWxcIjtcclxuaW1wb3J0IHsgUGluY29kZUxvY2F0aW9uIH0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvUGluY29kZUxvY2F0aW9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IEFQSV9VUkwsIENNSVNfVVJMLCBFQ09NTUVSQ0VfVVJMLCBQQVNTQk9PS19VUkwgfSBmcm9tICcuLi90b2tlbnMvYXBpLXRva2VuJztcclxuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy9jYXRlZ29yeS5tb2RhbFwiXHJcbmltcG9ydCB7IGNoZWNrSXRlbUFscmVhZHlBZGRlZCwgUHJvZHVjdCwgc3luY0l0ZW1Ub1NlcnZlckRCUmVxdWVzdCB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL3Byb2R1Y3QubW9kYWxcIjtcclxuaW1wb3J0IHsgQ29sbGVjdGlvbiB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL0NvbGxlY3Rpb24ubW9kYWxcIjtcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSBcIi4vc3RvcmFnZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tIFwibmd4LWNvb2tpZS1zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IExPQ0FMX1NUT1JBR0UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2NhbC1zdG9yYWdlLnRva2VuJztcclxuaW1wb3J0IHsgU3RvcmFnZUxpa2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zdG9yYWdlLWxpa2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290JyxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlc3RTZXJ2aWNlIGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuXHJcbiAgLy8gcHJpdmF0ZSBCQVNFX1VSTDogc3RyaW5nID0gXCJodHRwczovL2Rldi1hcGkuc2ltcG8uYWkvXCI7XHJcbiAgLy8gcHJpdmF0ZSBFQ09NTUVSQ0VfVVJMOiBzdHJpbmcgPSBcImh0dHBzOi8vZGV2LWVjb21tZXJjZS5zaW1wby5haS9cIjtcclxuICAvLyBwcml2YXRlIENNSVNfVVJMOiBzdHJpbmcgPSBcImh0dHBzOi8vYXBpLWNtaXMudGVqc29mdC5jb20vXCI7IC8vcHJvZHVjdGlvblxyXG4gIC8vIHByaXZhdGUgQ01JU19VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9kZXYtYXBpLnNpbXBvLmFpL1wiOyAvL2RldlxyXG4gIC8vIHByaXZhdGUgQ01JU19VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9zdGFnZWFwaS1jbWlzLnRlanNvZnQuY29tL1wiOyAvL3N0YWdlXHJcbiAgcHJpdmF0ZSBlbnZpcm9ubWVudFR5cGVTdWJzY3JpYmVyOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcclxuICBidXNpbmVzc0RldGFpbHM6IGFueTtcclxuICBzdWJJbmR1c3RyeU5hbWU6IGFueTtcclxuICBpc0pld2VsbGVyeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEFQUE9JTlRNRU5UX1VSTCA9IFwiaHR0cHM6Ly9zdGFnZS1hcHBvaW50bWVudC5zaW1wby5haS9cIlxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuICAgIC8vIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlLFxyXG4gICAgQEluamVjdChBUElfVVJMKSBwcml2YXRlIEJBU0VfVVJMOiBzdHJpbmcsXHJcbiAgICBASW5qZWN0KEVDT01NRVJDRV9VUkwpIHByaXZhdGUgRUNPTU1FUkNFX1VSTDogc3RyaW5nLFxyXG4gICAgQEluamVjdChDTUlTX1VSTCkgcHJpdmF0ZSBDTUlTX1VSTDogc3RyaW5nLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb29raWVTZXJ2aWNlOiBDb29raWVTZXJ2aWNlLFxyXG4gICAgQEluamVjdChMT0NBTF9TVE9SQUdFKSBwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2VMaWtlLFxyXG4gICAgQEluamVjdChQQVNTQk9PS19VUkwpIHByaXZhdGUgUEFTU0JPT0tfVVJMOiBzdHJpbmcsXHJcbiAgKSB7XHJcbiAgICAvLyB0aGlzLmVudmlyb25tZW50VHlwZVN1YnNjcmliZXIgPSB0aGlzLmV2ZW50U2VydmljZS5lbnZpcm9ubWVudFR5cGUuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgLy8gICBpZiAocmVzcG9uc2UgPT0gXCJERVZcIikge1xyXG4gICAgLy8gICAgIHRoaXMuQkFTRV9VUkwgPSBcImh0dHBzOi8vZGV2LWFwaS5zaW1wby5haS9cIjtcclxuICAgIC8vICAgICB0aGlzLkVDT01NRVJDRV9VUkwgPSBcImh0dHBzOi8vZGV2LWVjb21tZXJjZS5zaW1wby5haS9cIjtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gICBlbHNlIGlmIChyZXNwb25zZSA9PSBcIlNUQUdFXCIpIHtcclxuICAgIC8vICAgICB0aGlzLkVDT01NRVJDRV9VUkwgPSBcImh0dHBzOi8vc3RhZ2UtZWNvbW1lcmNlLnNpbXBvLmFpL1wiO1xyXG4gICAgLy8gICAgIHRoaXMuQkFTRV9VUkwgPSBcImh0dHBzOi8vc3RhdGUtYXBpLnNpbXBvLmFpL1wiO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyAgIGVsc2Uge1xyXG4gICAgLy8gICAgIHRoaXMuQkFTRV9VUkwgPSBcImh0dHBzOi8vYXBpLWNtaXMudGVqc29mdC5jb20vXCI7XHJcbiAgICAvLyAgICAgdGhpcy5FQ09NTUVSQ0VfVVJMID0gXCJodHRwczovL3Byb2QtZWNvbW1lcmNlLnNpbXBvLmFpL1wiO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9KVxyXG4gIH1cclxuICBvcnJhQmFzZVVybDogc3RyaW5nID0gJ2h0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tLyc7XHJcbiAgLy8gcGFzc0Jvb2tVcmw6IHN0cmluZyA9IFwiaHR0cHM6Ly9wcm9kLXBhc3Nib29rLnNpbXBvLmFpL1wiO1xyXG4gIGdldEJ1c2luZXNzRGV0YWlscygpIHtcclxuICAgIC8vICAgdGhpcy5idXNpbmVzc0RldGFpbHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJEZXRhaWxzXCIpO1xyXG4gICAgLy8gIGlmKHRoaXMuYnVzaW5lc3NEZXRhaWxzICE9IG51bGwpIHtcclxuICAgIC8vICAgICB0aGlzLmJ1c2luZXNzRGV0YWlscyA9IEpTT04ucGFyc2UodGhpcy5idXNpbmVzc0RldGFpbHMpO1xyXG4gICAgLy8gICAgIHRoaXMuc3ViSW5kdXN0cnlOYW1lID0gdGhpcy5idXNpbmVzc0RldGFpbHMuc3ViSW5kdXN0cnlOYW1lO1xyXG4gICAgLy8gICAgIHRoaXMuaXNKZXdlbGxlcnkgPSAgdGhpcy5zdWJJbmR1c3RyeU5hbWUgPT0gJ0Vjb21tZXJjZSBKZXdlbGxlcnknID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgLy8gICB9XHJcbiAgICB0aGlzLnN1YkluZHVzdHJ5TmFtZSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdzdWJJbmR1c3RyeU5hbWUnKTtcclxuICAgIGlmICh0aGlzLnN1YkluZHVzdHJ5TmFtZSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuaXNKZXdlbGxlcnkgPSB0aGlzLnN1YkluZHVzdHJ5TmFtZSA9PSAnRWNvbW1lcmNlIEpld2VsbGVyeScgPyB0cnVlIDogZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmVudmlyb25tZW50VHlwZVN1YnNjcmliZXIpXHJcbiAgICAgIHRoaXMuZW52aXJvbm1lbnRUeXBlU3Vic2NyaWJlcj8udW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIGdldEZlYXR1cmVkUHJvZHVjdChjb2xsZWN0aW9uSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpIHtcclxuICAgIHRoaXMuZ2V0QnVzaW5lc3NEZXRhaWxzKCk7XHJcbiAgICBsZXQgc3ViSW5kdXN0cnlJZDogc3RyaW5nIHwgbnVsbCA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKTtcclxuICAgIGlmICghc3ViSW5kdXN0cnlJZClcclxuICAgICAgc3ViSW5kdXN0cnlJZCA9IFwiXCI7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2NvbGxlY3Rpb24vaWQ/Y29sbGVjdGlvbklkPSR7Y29sbGVjdGlvbklkIHx8ICcnfSZpc0pld2VsbGVyeT0ke3RoaXMuaXNKZXdlbGxlcnl9YCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGE/Lm1hcCgocHJvZHVjdDogYW55KSA9PiBuZXcgUHJvZHVjdChwcm9kdWN0KSkpKTtcclxuICB9XHJcbiAgZ2V0Q2F0ZWdvcmllc0J5Q29sbGVjdGlvbklkKGNvbGxlY3Rpb25JZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9pbnZlbnRvcnkvY2F0ZWdvcnkvY29sbGVjdGlvbklkP2NvbGxlY3Rpb25JZD0ke2NvbGxlY3Rpb25JZH1gKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChjYXRlZ29yeTogYW55KSA9PiBuZXcgQ2F0ZWdvcnkoY2F0ZWdvcnkpKSkpO1xyXG4gIH1cclxuICBnZXRQYXNzYm9va09yZGVyU3RhdHVzKG9yZGVySWQ6IGFueSkge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5QQVNTQk9PS19VUkwgKyBgcGFzc2Jvb2svbWFudWFsL3BheW1lbnQvc3RhdHVzP3BheW1lbnRPcmRlcklkPSR7b3JkZXJJZH1gLCB7fSwgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXHJcbiAgfVxyXG4gIGdldFByb2R1Y3RCeVNlbGVjdGVkQ2F0ZWdvcnkoY2F0ZWdvcnlJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC8ke2NhdGVnb3J5SWR9YFxyXG4gICAgKVxyXG4gIH1cclxuICBnZXRBbGxTY2hlbWVzKHVzZXJJZD86IGFueSwgc3RvcmVJZD86IGFueSk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLlBBU1NCT09LX1VSTCArIGBleHQvY29ubmVjdC9zaW1wby91c2VyP3VzZXJJZD0ke3VzZXJJZH0mc3RvcmVJZD0ke3N0b3JlSWR9YCk7XHJcbiAgfVxyXG4gIGdldEFsbFJlZGVtcHRpb25TY2hlbWVzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5vcnJhQmFzZVVybCArIGBwYXNzQm9vay9yZWRlbXB0aW9uL2Ftb3VudC9jaGVjaz91c2VyQ29kZT1DXzAwMDMxMzg4NWApO1xyXG4gIH1cclxuICBnZXRQcm9kdWN0RGV0YWlscyhwcm9kdWN0SWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XHJcbiAgICB0aGlzLmdldEJ1c2luZXNzRGV0YWlscygpO1xyXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBwYWdlTm86IDAsXHJcbiAgICAgIHBhZ2VTaXplOiAxLFxyXG4gICAgICBpdGVtSWQ6IHByb2R1Y3RJZCxcclxuICAgICAgc3ViSW5kdXN0cnlJZDogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpLFxyXG4gICAgICB1c2VySWQ6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwicGVySWRcIikgPz8gbnVsbCxcclxuICAgICAgcmVxdWVzdDogXCJVU0VSXCJcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvaXRlbS9zZWFyY2g/aXNKZXdlbGxlcnk9JHt0aGlzLmlzSmV3ZWxsZXJ5fWAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5kYXRhLmRhdGEubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKSkpO1xyXG4gIH1cclxuICBnZXRDb2xsZWN0aW9uQnlJZHMoY29sbGVjdGlvbklkczogc3RyaW5nW10pIHtcclxuICAgIGNvbnN0IHBheWxvYWQgPSB7XHJcbiAgICAgIGlkczogY29sbGVjdGlvbklkc1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvaW52ZW50b3J5L2NvbGxlY3Rpb24vbGlzdC9hbGxgLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChjb2xsZWN0aW9uOiBhbnkpID0+IG5ldyBDb2xsZWN0aW9uKGNvbGxlY3Rpb24pKSkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ2F0ZWdvcmllcygpIHtcclxuXHJcbiAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcclxuICAgIGNvbnN0IHN1YkluZHVzdHJ5SWQ6IHN0cmluZyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwic3ViSW5kdXN0cnlJZFwiKSA/PyBcIlwiO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvaW52ZW50b3J5L2ZlYXR1cmVkP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZzdWJJZD0ke3N1YkluZHVzdHJ5SWR9YCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGE/Lm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gbmV3IENhdGVnb3J5KGNhdGVnb3J5KSkpKTtcclxuICB9XHJcbiAgZ2V0QWxsQ29sbGVjdGlvbnMoKSB7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIHBhZ2VObzogMCxcclxuICAgICAgcGFnZVNpemU6IDEwLFxyXG4gICAgICByZXF1ZXN0OiBcIlVTRVJcIixcclxuICAgICAgYnVzaW5lc3NJZDogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgJ2Vjb21tZXJjZS9pbnZlbnRvcnkvZ2V0L2NvbGxlY3Rpb24nLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKGNvbGxlY3Rpb246IGFueSkgPT4gbmV3IENvbGxlY3Rpb24oY29sbGVjdGlvbikpKSk7XHJcbiAgfVxyXG5cclxuICBnZXRGaWx0ZXJlZFByb2R1Y3QoY29sbGVjdGlvbklkczogc3RyaW5nW10sIGNhdGVnb3J5SWRzOiBzdHJpbmdbXSwgc2VhcmNoVGV4dDogc3RyaW5nLCBtaW5QcmljZTogbnVtYmVyLCBtYXhQcmljZTogbnVtYmVyLCBzb3J0Qnk6IHN0cmluZywgcGFnZU5vOiBudW1iZXIsIHNpemU6IG51bWJlcikge1xyXG4gICAgdGhpcy5nZXRCdXNpbmVzc0RldGFpbHMoKTtcclxuICAgIGxldCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIFwiYnVzaW5lc3NJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIiksXHJcbiAgICAgIFwic3ViSW5kdXN0cnlJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXHJcbiAgICAgIFwiY29sbGVjdGlvbklkXCI6IGNvbGxlY3Rpb25JZHMsXHJcbiAgICAgIFwiY2F0ZWdvcnlJZFwiOiBjYXRlZ29yeUlkcyxcclxuICAgICAgXCJzZWFyY2hUZXh0XCI6IHNlYXJjaFRleHQsXHJcbiAgICAgIFwic29ydEJ5XCI6IHNvcnRCeSxcclxuICAgICAgXCJwYWdlTm9cIjogcGFnZU5vLFxyXG4gICAgICBcInBhZ2VTaXplXCI6IHNpemUsXHJcbiAgICAgIFwidXNlcklkXCI6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwicGVySWRcIikgPz8gbnVsbCxcclxuICAgICAgcmVxdWVzdDogXCJVU0VSXCJcclxuICAgIH1cclxuICAgIGlmIChtaW5QcmljZSA+IDApXHJcbiAgICAgIHBheWxvYWRbXCJtaW5QcmljZVwiXSA9IG1pblByaWNlO1xyXG4gICAgaWYgKG1heFByaWNlID4gMClcclxuICAgICAgcGF5bG9hZFtcIm1heFByaWNlXCJdID0gbWF4UHJpY2U7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2l0ZW0vc2VhcmNoP2lzSmV3ZWxsZXJ5PSR7dGhpcy5pc0pld2VsbGVyeX1gLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvdW50OiByZXNwb25zZS5kYXRhLmNvdW50LFxyXG4gICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKVxyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgfVxyXG4gIGdldFByb2R1Y3RCeUNhdGVnb3J5SWQoY2F0ZWdvcnlJZDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmdldEJ1c2luZXNzRGV0YWlscygpO1xyXG4gICAgY29uc3QgcGF5bG9hZDogYW55ID0ge1xyXG4gICAgICBcImJ1c2luZXNzSWRcIjogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxyXG4gICAgICBcImNhdGVnb3J5SWRcIjogW2NhdGVnb3J5SWRdLFxyXG4gICAgICBcInN1YkluZHVzdHJ5SWRcIjogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpLFxyXG4gICAgICBcInBhZ2VOb1wiOiAwLFxyXG4gICAgICBcInBhZ2VTaXplXCI6IDEwLFxyXG4gICAgICBcInVzZXJJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInBlcklkXCIpID8/IG51bGwsXHJcbiAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2l0ZW0vc2VhcmNoP2lzSmV3ZWxsZXJ5PSR7dGhpcy5pc0pld2VsbGVyeX1gLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvdW50OiByZXNwb25zZS5jb3VudCxcclxuICAgICAgICBkYXRhOiByZXNwb25zZS5kYXRhLmRhdGE/Lm1hcCgocHJvZHVjdDogYW55KSA9PiBuZXcgUHJvZHVjdChwcm9kdWN0KSlcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gIH1cclxuICBnZXRQcm9kdWN0QnlDb2xsZWN0aW9uSWQoY29sbGVjdGlvbklkOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZ2V0QnVzaW5lc3NEZXRhaWxzKCk7XHJcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XHJcbiAgICAgIFwiYnVzaW5lc3NJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIiksXHJcbiAgICAgIFwiY29sbGVjdGlvbklkXCI6IFtjb2xsZWN0aW9uSWRdLFxyXG4gICAgICBcInN1YkluZHVzdHJ5SWRcIjogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpLFxyXG4gICAgICBcInBhZ2VOb1wiOiAwLFxyXG4gICAgICBcInBhZ2VTaXplXCI6IDEwLFxyXG4gICAgICBcInVzZXJJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInBlcklkXCIpID8/IG51bGwsXHJcbiAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2l0ZW0vc2VhcmNoP2lzSmV3ZWxsZXJ5PSR7dGhpcy5pc0pld2VsbGVyeX1gLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvdW50OiByZXNwb25zZS5jb3VudCxcclxuICAgICAgICBkYXRhOiByZXNwb25zZS5kYXRhLmRhdGE/Lm1hcCgocHJvZHVjdDogYW55KSA9PiBuZXcgUHJvZHVjdChwcm9kdWN0KSlcclxuICAgICAgfVxyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgYWRkUmV2aWV3KHBheWxvYWQ6IFJldmlldykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvYWRkL3Jldmlld2AsIHBheWxvYWQpO1xyXG4gIH1cclxuICBnZXRBbGxSZXZpZXdzKHByb2R1Y3RJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2ZpbHRlci9yZXZpZXdzP3Byb2R1Y3RJZD0ke3Byb2R1Y3RJZH1gLCBudWxsKTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlT1RQKG1vYmlsZTogc3RyaW5nLCBjb3VudHJ5Q29kZTogc3RyaW5nKSB7XHJcbiAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL290cC90cmlnZ2VyP21vYmlsZT0ke21vYmlsZX0mY291bnRyeUNvZGU9JHtjb3VudHJ5Q29kZX0mYnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YCwgbnVsbCk7XHJcbiAgfVxyXG4gIHZlcmlmeU9UUChtb2JpbGU6IHN0cmluZywgb3RwOiBzdHJpbmcsIGRldmljZUluZm86IERldmljZUluZm8pIHtcclxuICAgIGNvbnN0IGJ1c2luZXNzSWQ6IHN0cmluZyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSA/PyBcIlwiO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9hdXRoZW50aWNhdGU/bW9iaWxlPSR7bW9iaWxlfSZvdHA9JHtvdHB9JmJ1c2luZXNzSWQ9JHtidXNpbmVzc0lkfWAsIGRldmljZUluZm8pO1xyXG4gIH1cclxuICByZXNlbmRPVFAobW9iaWxlOiBzdHJpbmcsIGNvdW50cnlDb2RlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGJ1c2luZXNzSWQ6IHN0cmluZyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSA/PyBcIlwiO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvcmVzZW5kP21vYmlsZT0ke21vYmlsZX0mY291bnRyeUNvZGU9JHtjb3VudHJ5Q29kZX0mYnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YCwgbnVsbCk7XHJcbiAgfVxyXG4gIGFwcGxpY2FibGVEaXNjb3VudExpc3QoY2FydElkOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2Rpc2NvdW50LWNvdXBvbi8ke2NhcnRJZH0vYXBwbGljYWJpbGl0eS9saXN0YCk7XHJcbiAgfVxyXG5cclxuICBhZGRJdGVtVG9EQih1c2VyQ2FydDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvY2FydGAsIHVzZXJDYXJ0KTtcclxuICB9XHJcbiAgZ2V0VXNlckl0ZW1zKHVzZXJJZDogc3RyaW5nLCBjYXJ0VHlwZTogJ0NBUlQnIHwgJ1dJU0hMSVNUJyB8ICdUUklBTF9DQVJUJykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvY2FydD91c2VySWQ9JHt1c2VySWR9JmNhcnRUeXBlPSR7Y2FydFR5cGV9YCk7XHJcbiAgfVxyXG4gIGdldFVzZXJJbmZvKHVzZXJJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2dldC91c2VyP3VzZXJJZD0ke3VzZXJJZH1gLCBudWxsKTtcclxuICB9XHJcbiAgYWRkVXNlckFkZHJlc3ModXNlcjogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL3VwZGF0ZS91c2VyYCwgdXNlcik7XHJcbiAgfVxyXG4gIHVwZGF0ZVByb2ZpbGUocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL3VwZGF0ZS91c2VyYCwgcGF5bG9hZCk7XHJcbiAgfVxyXG4gIGdldFVzZXJPcmRlcnMocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci91c2VyL29yZGVyYCwgcGF5bG9hZCk7XHJcbiAgfVxyXG4gIGdldFVzZXJXaXNobGlzdCh1c2VySWQ6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvY2FydD91c2VySWQ9JHt1c2VySWR9JmNhcnRUeXBlPVdJU0hMSVNUYClcclxuICB9XHJcbiAgbW92ZUl0ZW1Ub0NhcnQodXNlcklkOiBzdHJpbmcsIHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvdXBkYXRlL2NhcnQ/dXNlcklkPSR7dXNlcklkfWAsIHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgLy8gUGF5bWVudFxyXG4gIGNyZWF0ZVBheW1lbnRUb2tlbihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkVDT01NRVJDRV9VUkwgKyBgcGF5bWVudC9vcmRlcmAsIHBheWxvYWQpO1xyXG4gIH1cclxuICBjaGVja1BheW1lbnRTdGF0dXMocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5FQ09NTUVSQ0VfVVJMICsgYHBheW1lbnQvc3RhdHVzYCwgcGF5bG9hZCk7XHJcbiAgfVxyXG4gIGdldFJlY2VudFZpZXdQcm9kdWN0KHVzZXJJZDogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9yZWNlbnRWaWV3P3VzZXJJZD0ke3VzZXJJZH1gLCBudWxsKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKSkpOztcclxuICB9XHJcblxyXG4gIHNlbmRTaWdudXBPVFAocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9zaWdudXAvb3RwL3RyaWdnZXJgLCBwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIHZlcmlmeVNpZ251cE9UUChwYXlsb2FkOiBhbnkpIHtcclxuICAgIGNvbnN0IGJ1c2luZXNzSWQ6IHN0cmluZyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSA/PyAnJztcclxuICAgIC8vIHBheWxvYWRbXCJidXNpbmVzc0lkXCJdID0gYnVzaW5lc3NJZDtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvYXV0aGVudGljYXRlL3NpZ251cGAsIHBheWxvYWQpO1xyXG4gIH1cclxuXHJcbiAgc2lnbmluUGFzc3dvcmQocGFzc0RhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9hdXRoZW50aWNhdGUvbG9naW5gLCBwYXNzRGF0YSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVBcHBvaW50bWVudChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9hZGRgLCBkYXRhKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsTG9jYXRpb24oYnVzaW5lc3NJZDogYW55LCBzaXplOiBudW1iZXIsIHBhZ2U6IG51bWJlcikge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9sb2NhdGlvbj9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEFsbFRpbWVTbG90cyhsb2NhdGlvbklkOiBhbnksIGRhdGU6IERhdGUpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvdGltZXNsb3RzP2xvY2F0aW9uSWQ9JHtsb2NhdGlvbklkfSZkYXRlPSR7ZGF0ZX1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRBbGxTZXJ2aWNlKGJ1c2luZXNzSWQ6IGFueSwgc2l6ZTogYW55LCBwYWdlOiBhbnksIGxvY2F0aW9uSWQ/OiBhbnkpIHtcclxuICAgIGlmICghbG9jYXRpb25JZCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvc2VydmljZT9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfWBcclxuICAgICAgKVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL3NlcnZpY2U/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnNpemU9JHtzaXplfSZwYWdlPSR7cGFnZX0mbG9jYXRpb25JZD0ke2xvY2F0aW9uSWR9YFxyXG4gICAgICApXHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU3RhZmZCeUxvY2F0aW9uKGJ1c2luZXNzSWQ6IGFueSwgc2l6ZTogbnVtYmVyLCBwYWdlOiBudW1iZXIsIGxvY2F0aW9uSWQ6IHN0cmluZywgc2VydmljZUlkOiBzdHJpbmcpIHtcclxuICAgIGlmICghc2VydmljZUlkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9zdGFmZj9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfSZsb2NhdGlvbklkPSR7bG9jYXRpb25JZH1gXHJcbiAgICAgIClcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9zdGFmZj9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfSZsb2NhdGlvbklkPSR7bG9jYXRpb25JZH0mc2VydmljZUlkPSR7c2VydmljZUlkfWBcclxuICAgICAgKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZ2V0QXZhaWxhYmxlU2xvdHMoZGF0YTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL2F2YWlsYWJsZS90aW1lc2xvdHNgLCBkYXRhXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRTZWxlY3RlZExpc3RGaWVsZHMoYklkOiBhbnksIHNob3dJbkVycDogYW55LCBmb3JtTmFtZTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vZmllbGRzP2J1c2luZXNzSWQ9JHtiSWR9JnN0YXR1cz10cnVlJnNob3dJbkZvcm09JHtzaG93SW5FcnB9JmlzUGFnaW5hdGlvbj1mYWxzZSZmaWVsZENhdGVnb3J5PSR7Zm9ybU5hbWV9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWN0aXZlU3Vic2NyaXB0aW9uRm9yRmVlU3RydWN0dXJlKGJ1c2luZXNzSWQ6IGFueSwgZ3JhZGVJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vc3Vic2NyaXB0aW9uL3BsYW4vbGlzdD9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mZ3JhZGVJZD0ke2dyYWRlSWR9JnN0YXR1cz10cnVlJmlzRGVsZXRlZD1mYWxzZWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNyZWF0ZUFkbWlzc2lvbihwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vcmVnaXN0cmF0aW9uL2FkbWlzc2lvbj9yZWdpc3RyYXRpb25JZD0ke3BheWxvYWQ/LnJlZ2lzdHJhdGlvbklkIHx8ICcnfWAsIHBheWxvYWRcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNyZWF0ZVBheW1lbnRMaW5rKGRhdGE6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vYWRtaXNzaW9uL3YyL3BheW1lbnQ/aXNGcm9tV2ViPXRydWVgLCBkYXRhXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjcmVhdGVSZWdpc3RyYXRpb25Gb3JQYXltZW50KHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vcmVnaXN0cmF0aW9uL3BheW1lbnRgLCBwYXlsb2FkXHJcbiAgICApXHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0U3Vic2NyaXB0aW9uRm9yRmVlU3RydWN0dXJlKGdyYWRlSWQ6IGFueSkge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZCA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyk7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3N1YnNjcmlwdGlvbi9wbGFuL2xpc3Q/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JmdyYWRlSWQ9JHtncmFkZUlkfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEZlZVN0cnVjdHVyZShwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9mZWUvc3RydWN0dXJlYCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgbmV3RmVlU3RydWN0dXJlR2V0TGlzdChkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9mZWUvc3RydWN0dXJlL3YyL2ZpbHRlcmAsIGRhdGFcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEFsbERvY3VtZW50KHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXHJcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL21hc3Rlci9kb2N1bWVudFR5cGUvZmlsdGVyYCwgcGF5bG9hZClcclxuICB9XHJcblxyXG4gIGdldExlYWRCeUlkKGxlYWRJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vbGVhZHMvZ2V0LW9uZT9sZWFkSWQ9JHtsZWFkSWR9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0UmVnaXN0cmF0aW9uTGlzdChwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vZ2V0QWxsYCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsQ29tcG9uZW50Q2F0ZWdvcmllcygpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGFkbWluL21hc3Rlci90ZW1wbGF0ZS9jYXRlZ29yeS9hbGxgXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNhZmVQYXJzZTxUPihyYXc6IHN0cmluZyB8IG51bGwpOiBUIHwgbnVsbCB7XHJcbiAgICBpZiAoIXJhdykgcmV0dXJuIG51bGw7XHJcbiAgICB0cnkgeyByZXR1cm4gSlNPTi5wYXJzZShyYXcpIGFzIFQ7IH0gY2F0Y2ggeyByZXR1cm4gbnVsbDsgfVxyXG4gIH1cclxuXHJcbiAgZ2V0VGVtcGxhdGUoKSB7XHJcbiAgICBjb25zdCBiRGV0YWlsc1JhdyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdiRGV0YWlscycpO1xyXG4gICAgY29uc3QgZGV0YWlscyA9IHRoaXMuc2FmZVBhcnNlPHsgdGVtcGxhdGVJZD86IHN0cmluZyB9PihiRGV0YWlsc1Jhdyk7XHJcblxyXG4gICAgLy8gZmFsbGJhY2sgc291cmNlXHJcbiAgICBjb25zdCB3ZWJzaXRlRGF0YVJhdyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCd3ZWJzaXRlRGF0YScpO1xyXG4gICAgY29uc3Qgd2Vic2l0ZURhdGEgPSB0aGlzLnNhZmVQYXJzZTx7IGhvbWVQYWdlSWQ/OiBzdHJpbmcgfT4od2Vic2l0ZURhdGFSYXcpO1xyXG5cclxuICAgIC8vIHByZWZlciB0ZW1wbGF0ZUlkIGZyb20gYkRldGFpbHM7IGVsc2UgZmFsbGJhY2sgdG8gd2Vic2l0ZURhdGEuaG9tZVBhZ2VJZFxyXG4gICAgY29uc3QgdGVtcGxhdGVJZCA9IChkZXRhaWxzPy50ZW1wbGF0ZUlkID8/IHdlYnNpdGVEYXRhPy5ob21lUGFnZUlkID8/ICcnKS50b1N0cmluZygpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgYnVzaW5lc3MvdjMvd2Vic2l0ZS8ke3RlbXBsYXRlSWR9L3BhZ2VzL2xpc3RgKTtcclxuICB9XHJcblxyXG5cclxuICBnZXRFY29tbWVyY2VDb25maWdzKCkge1xyXG4gICAgY29uc3QgYnVzaW5lc3NJZCA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJykgPz8gXCIxZjA3Y2QwOS1jZjYxLTYwMDgtOTg1NC0wNTRiOThhMTYyN2FcIjtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9lY29tbWVyY2UvY29uZmlnL2FsbD9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH1gXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcG9zdFZpZGVvQ2FsbERldGFpbHMocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2Vjb21tZXJjZS9jb25maWcvdmlkZW8tY2FsbGAsIHBheWxvYWRcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldFN0b3JlTG9jYXRvckRldGFpbHMocGluY29kZTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvc3RvcmUvbmVhcmJ5P3BpbmNvZGU9JHtwaW5jb2RlfSZidXNpbmVzc0lkPSR7dGhpcy5zdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKX1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBzYXZlSW1hZ2VzVG9CdXNpbmVzc0xpYnJhcnkobWVkaWFSZXF1ZXN0OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBhZG1pbi9saWJyYXJ5L2ltYWdlL2xpYnJhcnkvc2F2ZWAsXHJcbiAgICAgIG1lZGlhUmVxdWVzdFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJlZ2VuZXJhdGVUZXh0KHJlcXVlc3Q6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGFkbWluL2NvbnRlbnQvc3VnZ2VzdC92Mi93ZWJzaXRlL2luZGl2aWR1YWxgLCByZXF1ZXN0XHJcbiAgICApXHJcbiAgfVxyXG4gIGdldENhdGVnb3JpZXNIZWFkZXJEYXRhKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvJHt0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpfS9oZWFkZXJzYFxyXG4gICAgKVxyXG4gIH1cclxuICBnZXRBbGxTdG9yZXMocGF5bG9hZDogYW55KSB7XHJcbiAgICBsZXQgdXJsID0gJydcclxuICAgIGlmIChwYXlsb2FkPy5waW5jb2RlICYmIHBheWxvYWQucGluY29kZS50b1N0cmluZygpLmxlbmd0aCA9PSA2KSB7XHJcbiAgICAgIHVybCA9IHVybCArIGAgJnBpbmNvZGU9JHtwYXlsb2FkLnBpbmNvZGV9YFxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3N0b3JlL2dldC92Mj9idXNpbmVzc0lkPSR7cGF5bG9hZC5idXNpbmVzc0lkfSR7dXJsfWAsICcnXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRBbGxBcHBvaW50bWVudFNlcnZpY2UocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgdGhpcy5BUFBPSU5UTUVOVF9VUkwgKyAnc2VydmljZS9saXN0JywgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU3RhZmYocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBzdGFmZi9zdGFmZi9zdG9yZS1zdGFmZi1saXN0P3NlcnZpY2VJZD0ke3BheWxvYWQuc2VydmljZUlkfSZzdG9yZUlkPSR7cGF5bG9hZC5zdG9yZUlkfSZidXNpbmVzc0lkPSR7cGF5bG9hZC5idXNpbmVzc0lkfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldFN0b3JlQnlJZChzdG9yZUlkOiBzdHJpbmcpIHtcclxuICAgIGxldCBwYXlsb2FkID0ge1xyXG4gICAgICBzdG9yZUlkOiBzdG9yZUlkLFxyXG4gICAgICBidXNpbmVzc0lkOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpID8/IFwiXCIsXHJcbiAgICAgIHBhZ2VObzogMCxcclxuICAgICAgcGFnZVNpemU6IDEwMDBcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9zdG9yZS9nZXRgLCBwYXlsb2FkKVxyXG4gIH1cclxuICBwb3N0TmV3c0xldHRlcihlbWFpbDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2Vjb21tZXJjZS9jb25maWcvcmVnaXN0ZXJlZC9uZXdzbGV0dGVyP2VtYWlsPSR7ZW1haWx9JmJ1c2luZXNzSWQ9JHt0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpfWAsICcnXHJcbiAgICApXHJcbiAgfVxyXG4gIGFkZFJldmlld1RvUHJvZHVjdChwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9hZGQvcmV2aWV3P29yZGVySWQ9JHtwYXlsb2FkLm9yZGVySWR9YCwgcGF5bG9hZFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU3RvcmVzT3JyYShwYWdlTm86IGFueSwgc2l6ZTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL3N0b3JlP3BhZ2VObz0ke3BhZ2VOb30mc2l6ZT0ke3NpemV9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0c3RhZmZCeVN0b3JlSWQoc3RvcmVJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL3N0YWZmL2dldC8ke3N0b3JlSWR9YFxyXG4gICAgKVxyXG4gIH1cclxuXHJcblxyXG4gIGdldEFsbFNjaGVtZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxyXG4gICAgICBgaHR0cHM6Ly9zdGFnZWFwaS1vcnJhLmxldHNtb2JpbGl0eS5jb20vc2NoZW1lL2dldEFsbFNjaGVtZXMvZGFzaGJvYXJkYFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgZ2V0QWxsU3RhdGUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL3N0YXRlL2dldEFsbGBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldENpdHlCeVN0YXRlQnlwYWdpbmF0ZWQoc3RhdGVJZDogYW55LCBwYWdlTm86IGFueSwgc2l6ZTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL2NpdHkvZ2V0QnlTdGF0ZT9zdGF0ZUlkPSR7c3RhdGVJZH0mcGFnZU5vPSR7cGFnZU5vfSZzaXplPSR7c2l6ZX1gXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBnZXRTdG9yZUJ5U2xhYihkYXRhOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICBgaHR0cHM6Ly9zdGFnZWFwaS1vcnJhLmxldHNtb2JpbGl0eS5jb20vc3RvcmUvZ2V0U2xhYmAsIGRhdGFcclxuICAgIClcclxuICB9XHJcblxyXG4gIGFkZFRyaWFsSXRlbShyZXF1ZXN0OiBzeW5jSXRlbVRvU2VydmVyREJSZXF1ZXN0KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvY2FydC92MmAsIHJlcXVlc3RcclxuICAgIClcclxuICB9XHJcblxyXG4gIGNoZWNrSXRlbUFscmVhZHlBZGRlZChyZXF1ZXN0OiBjaGVja0l0ZW1BbHJlYWR5QWRkZWQpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxyXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9jYXJ0L2NoZWNrL2l0ZW1gLCByZXF1ZXN0XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBkZWxldGVJdGVtRnJvbUNhcnQocmVxdWVzdDogY2hlY2tJdGVtQWxyZWFkeUFkZGVkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvY2FydC9yZW1vdmVgLCByZXF1ZXN0XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBib29rQXBwb2ludG1lbnQocmVxdWVzdDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvdHJ5LWhvbWVgLCByZXF1ZXN0XHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBjcmVhdGVFbnJvbGxtZW50U2NoZW1lKGVucm9sbGVtZW50OiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcclxuICAgICAgYCAgaHR0cHM6Ly9zdGFnZWFwaS1vcnJhLmxldHNtb2JpbGl0eS5jb20vZW5yb2xsbWVudC9jcmVhdGUvbmV3L3RlbXA/bWFudWFsUGF5PXRydWUmaXNXZWJSZXF1ZXN0PXRydWVcclxuYCwgZW5yb2xsZW1lbnRcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEhvbWVBcHBvaW50bWVudExpc3QodXNlcklkOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGJ1c2luZXNzSWQgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYklkJyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci90cnktaG9tZT91c2VySWQ9JHt1c2VySWR9JmJ1c2luZXNzSWQ9JHtidXNpbmVzc0lkfWBcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldEFsbE9ycmFTY2hlbWUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcclxuICAgICAgJ2h0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL3Bhc3NCb29rL3JlZGVtcHRpb24vYW1vdW50L2NoZWNrP3VzZXJDb2RlPUNfMDAwMzEzODg1J1xyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcmVkZWVtU2NoZW1lKHNjaGVtZTogc3RyaW5nLCBjYXJ0SWQ6IGFueSwgYWN0aW9uOiBib29sZWFuKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXHJcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnQvcmVkZW1wdGlvbj9jYXJ0SWQ9JHtjYXJ0SWR9JnJlbW92ZVNjaGVtZT0ke2FjdGlvbn1gLCBzY2hlbWVcclxuICAgIClcclxuICB9XHJcblxyXG4gIGdldFJldmlld3NCeVByb2R1Y3RJZChwcm9kdWN0SWQ6IHN0cmluZywgcGFnZU51bWJlcjogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcclxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9maWx0ZXIvcmV2aWV3cz9wcm9kdWN0SWQ9JHtwcm9kdWN0SWR9JnBhZ2VOdW1iZXI9JHtwYWdlTnVtYmVyfSZwYWdlU2l6ZT0zYCwge31cclxuICAgIClcclxuICB9XHJcbiAgZ2V0RmllbGRzVG9EaXNwbGF5KGZpZWxkc0xpc3Q6IGFueVtdKSB7XHJcbiAgICBsZXQgbWFwOiBhbnkgPSB7fTtcclxuXHJcbiAgICBmb3IgKGxldCBmaWVsZCBvZiBmaWVsZHNMaXN0KSB7XHJcbiAgICAgIGZvciAobGV0IGZpZWxkR3JvdXAgb2YgZmllbGQuZmllbGRHcm91cCkge1xyXG4gICAgICAgIGlmICghZmllbGRHcm91cC5maWVsZFN0ZXBJZClcclxuICAgICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgICBsZXQgc3RlcE5hbWUgPSBmaWVsZEdyb3VwLmZpZWxkU3RlcE5hbWUgPyBmaWVsZEdyb3VwLmZpZWxkU3RlcE5hbWUgOiAndW5kZWZpbmVkJztcclxuICAgICAgICBsZXQgZ3JvdXBOYW1lID0gZmllbGRHcm91cC5maWVsZEdyb3VwTmFtZTtcclxuXHJcbiAgICAgICAgaWYgKCFtYXBbc3RlcE5hbWVdKSB7XHJcbiAgICAgICAgICBtYXBbc3RlcE5hbWVdID0ge307XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghbWFwW3N0ZXBOYW1lXVtncm91cE5hbWVdKSB7XHJcbiAgICAgICAgICBtYXBbc3RlcE5hbWVdW2dyb3VwTmFtZV0gPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmllbGRbJ2ZpZWxkU3RlcElkJ10gPSBmaWVsZEdyb3VwLmZpZWxkU3RlcElkO1xyXG4gICAgICAgIGZpZWxkWydmaWVsZEdyb3VwSWQnXSA9IGZpZWxkR3JvdXAuZmllbGRHcm91cElkO1xyXG5cclxuICAgICAgICBjb25zdCBuZXdGaWVsZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZmllbGQpKTtcclxuICAgICAgICBtYXBbc3RlcE5hbWVdW2dyb3VwTmFtZV0ucHVzaChuZXdGaWVsZCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbWFwO1xyXG4gIH1cclxuXHJcbiAgZ2V0Qm9va2luZ1Nsb3RzKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5BUFBPSU5UTUVOVF9VUkwgKyAnYm9va2luZy9hdmFpbGFibGUtc2xvdHMnLCBwYXlsb2FkKTtcclxuICB9XHJcblxyXG4gIGJvb2tBcHBvaW50bWVudFYyKHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQVBQT0lOVE1FTlRfVVJMICsgJ2Jvb2tpbmcnLCBwYXlsb2FkKTtcclxuICB9XHJcbiAgcGF5bWVudEZvckFwcG9pbnRtZW50KHBheWxvYWQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQVBQT0lOVE1FTlRfVVJMICsgJ3BheW1lbnQvdG9rZW4nLCBwYXlsb2FkKTtcclxuICB9XHJcbiAgZ2VuZXJhdGVUb2tlbihiSWQ6IGFueSwgdXNlcklkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLlBBU1NCT09LX1VSTCArIGBleHQvY29ubmVjdC9zaW1wby90b2tlbj9idXNpbmVzc0lkPSR7YklkfSZ1c2VySWQ9JHt1c2VySWR9JnVzZXJUeXBlPUVYVEVSTkFMX1VTRVJgLCB7fSk7XHJcbiAgfVxyXG4gIGdldEFsbEVucm9sbGVkU2NoZW1lcyhwYXlsb2FkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuUEFTU0JPT0tfVVJMICsgJ2V4dC9jb25uZWN0L3NpbXBvL3NjaGVtZS9saXN0JywgcGF5bG9hZClcclxuICB9XHJcbiAgZW5yb2xsU2NoZW1lKHBheWxvYWQ6IGFueSwgY2hlY2tDaGFyZ2VzOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gXHJcbiAgICB9KTtcclxuICAgIGlmIChjaGVja0NoYXJnZXMpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuUEFTU0JPT0tfVVJMICsgJ3Bhc3Nib29rL2NhcnQvaW5pdGlhdGUvcGF5bWVudD9tYW51YWxQYXk9dHJ1ZScsIHBheWxvYWQsIHsgaGVhZGVyczogaGVhZGVycyB9KVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLlBBU1NCT09LX1VSTCArICdwYXNzYm9vay9pbml0aWF0ZS9wYXltZW50P21hbnVhbFBheT10cnVlJywgcGF5bG9hZCwgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldEJlbmVmaXRTbGFiKHBhc3Nib29rSWQ/OiBhbnkpIHtcclxuICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRUb2tlbigpO1xyXG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuUEFTU0JPT0tfVVJMICsgYHBhc3Nib29rL2JlbmVmaXQvcGVyY2VudGFnZXM/cGFzc2Jvb2tJZD0ke3Bhc3Nib29rSWR9YCwge30sIHsgaGVhZGVyczogaGVhZGVycyB9KVxyXG4gIH1cclxuICBnZXRBbGxTdGFmZkxpc3QoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYHN0YWZmL3N0YWZmL2xpc3QvJHt0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpfT9pc1BhZ2luYXRpb249ZmFsc2VgKVxyXG4gIH1cclxuICByZXF1ZXN0UmVkZWVtcHRpb24ocGFzc2Jvb2tJZDogYW55KSB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuUEFTU0JPT0tfVVJMICsgYHBhc3Nib29rL3JlcXVlc3QvcmVkZW1wdGlvbj9wYXNzQm9va0lkPSR7cGFzc2Jvb2tJZH1gLCB7fSwgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXHJcbiAgfVxyXG4gIFBhc3Nib29rQXBwU3RhdHVzKGJJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGFwcC9hcHAvY2hlY2stYXBwP2J1c2luZXNzSWQ9JHtiSWR9JmFwcE5hbWU9UGFzc2Jvb2tgKVxyXG4gIH1cclxuICBnZXRBbGxQYXNzYm9va0R1ZXMoYklkOiBhbnksIHVzZXJJZDogYW55KSB7XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKTtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gXHJcbiAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuUEFTU0JPT0tfVVJMICsgYHBhc3Nib29rL3BheW1lbnQvZHVlcz9wYWdlPTAmc2l6ZT0xMDAwJmJ1c2luZXNzSWQ9JHtiSWR9JnVzZXJJZD0ke3VzZXJJZH1gLCB7IGhlYWRlcnM6IGhlYWRlcnMgfSlcclxuICB9XHJcbiAgZ2V0VG9rZW4oKSB7XHJcbiAgICBsZXQgdG9rZW4gPSB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCdwYXNzQm9va1Rva2VuJylcclxuICAgIHJldHVybiB0b2tlbjtcclxuICB9XHJcbiAgZ2V0QWxsVHJhbnNhY3Rpb25zKHBheWxvYWQ6IGFueSkge1xyXG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7XHJcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLlBBU1NCT09LX1VSTCArIGBkYXNoYm9hcmQvdjMvdHJhbnNhY3Rpb25zL3BhZ2VgLCBwYXlsb2FkLCB7IGhlYWRlcnM6IGhlYWRlcnMgfSlcclxuICB9XHJcbiAgZ2V0U2NoZW1lRGV0YWlscyhzY2hlbWVJZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5QQVNTQk9PS19VUkwgKyBgZXh0L2Nvbm5lY3Qvc2ltcG8vZ2V0L3NjaGVtZT9pZD0ke3NjaGVtZUlkfWAsIHt9KVxyXG4gIH1cclxuXHJcbiAgZ2V0TWV0YWxQcmljZShzdG9yZUlkOiBhbnkpIHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuUEFTU0JPT0tfVVJMICsgYGV4dC9jb25uZWN0L3NpbXBvL21ldGFsL3ByaWNlcz9pZD0ke3N0b3JlSWR9YClcclxuICB9XHJcblxyXG4gIGNyZWF0ZUxlYWQocGF5bG9hZDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBidXNpbmVzcy9jb250YWN0YCwgcGF5bG9hZClcclxuICB9XHJcbn1cclxuIl19
549
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxHQUFHLEVBQXdDLE1BQU0sTUFBTSxDQUFDO0FBS2pFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNyRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0NBQW9DLENBQUE7QUFDN0QsT0FBTyxFQUF5QixPQUFPLEVBQTZCLE1BQU0sbUNBQW1DLENBQUM7QUFDOUcsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBR2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQU1oRSxNQUFNLE9BQU8sV0FBVztJQWF0QixZQUNtQixJQUFnQjtJQUNqQyxnREFBZ0Q7SUFDdkIsUUFBZ0IsRUFDVixhQUFxQixFQUMxQixRQUFnQixFQUN6QixhQUE0QixFQUNkLE9BQW9CLEVBQ3JCLFlBQW9CO1FBUGpDLFNBQUksR0FBSixJQUFJLENBQVk7UUFFUixhQUFRLEdBQVIsUUFBUSxDQUFRO1FBQ1Ysa0JBQWEsR0FBYixhQUFhLENBQVE7UUFDMUIsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUN6QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUNkLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFDckIsaUJBQVksR0FBWixZQUFZLENBQVE7UUFuQnBELDBEQUEwRDtRQUMxRCxxRUFBcUU7UUFDckUsMkVBQTJFO1FBQzNFLGdFQUFnRTtRQUNoRSwyRUFBMkU7UUFDbkUsOEJBQXlCLEdBQXdCLElBQUksQ0FBQztRQUc5RCxnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUM3QixvQkFBZSxHQUFHLHFDQUFxQyxDQUFBO1FBMkJ2RCxnQkFBVyxHQUFXLHlDQUF5QyxDQUFDO1FBZjlELCtGQUErRjtRQUMvRiw2QkFBNkI7UUFDN0IsbURBQW1EO1FBQ25ELDhEQUE4RDtRQUM5RCxNQUFNO1FBQ04sb0NBQW9DO1FBQ3BDLGdFQUFnRTtRQUNoRSxxREFBcUQ7UUFDckQsTUFBTTtRQUNOLFdBQVc7UUFDWCx1REFBdUQ7UUFDdkQsK0RBQStEO1FBQy9ELE1BQU07UUFDTixLQUFLO0lBQ1AsQ0FBQztJQUVELDJEQUEyRDtJQUMzRCxrQkFBa0I7UUFDaEIsNkRBQTZEO1FBQzdELHNDQUFzQztRQUN0QywrREFBK0Q7UUFDL0QsbUVBQW1FO1FBQ25FLHdGQUF3RjtRQUN4RixNQUFNO1FBQ04sSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQy9ELElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUkscUJBQXFCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ2xGLENBQUM7SUFFSCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLHlCQUF5QjtZQUNoQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELGtCQUFrQixDQUFDLFlBQXVDO1FBQ3hELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksYUFBYSxHQUFrQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsYUFBYTtZQUNoQixhQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxnREFBZ0QsWUFBWSxJQUFJLEVBQUUsZ0JBQWdCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0TyxDQUFDO0lBQ0QsMkJBQTJCLENBQUMsWUFBb0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLDBEQUEwRCxZQUFZLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3TSxDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsT0FBWTtRQUNqQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDOUIsZUFBZSxFQUFFLFVBQVUsS0FBSyxFQUFFO1NBQ25DLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxpREFBaUQsT0FBTyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDakksQ0FBQztJQUNELDRCQUE0QixDQUFDLFVBQWtCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLFVBQVUsRUFBRSxDQUNsRCxDQUFBO0lBQ0gsQ0FBQztJQUNELGFBQWEsQ0FBQyxNQUFZLEVBQUUsT0FBYTtRQUN2QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsaUNBQWlDLE1BQU0sWUFBWSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFDRCx1QkFBdUI7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLHVEQUF1RCxDQUFDLENBQUM7SUFDbkcsQ0FBQztJQUNELGlCQUFpQixDQUFDLFlBQTJCLElBQUk7UUFDL0MsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsTUFBTSxPQUFPLEdBQVE7WUFDbkIsTUFBTSxFQUFFLENBQUM7WUFDVCxRQUFRLEVBQUUsQ0FBQztZQUNYLE1BQU0sRUFBRSxTQUFTO1lBQ2pCLGFBQWEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDcEQsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUk7WUFDN0MsT0FBTyxFQUFFLE1BQU07U0FDaEIsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyw2Q0FBNkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOU0sQ0FBQztJQUNELGtCQUFrQixDQUFDLGFBQXVCO1FBQ3hDLE1BQU0sT0FBTyxHQUFHO1lBQ2QsR0FBRyxFQUFFLGFBQWE7U0FDbkIsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyx5Q0FBeUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFVBQWUsRUFBRSxFQUFFLENBQUMsSUFBSSxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0wsQ0FBQztJQUVELGdCQUFnQjtRQUVkLE1BQU0sVUFBVSxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRyxNQUFNLGFBQWEsR0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLDJDQUEyQyxVQUFVLFVBQVUsYUFBYSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsSUFBSSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbk4sQ0FBQztJQUNELGlCQUFpQjtRQUNmLE1BQU0sT0FBTyxHQUFRO1lBQ25CLE1BQU0sRUFBRSxDQUFDO1lBQ1QsUUFBUSxFQUFFLEVBQUU7WUFDWixPQUFPLEVBQUUsTUFBTTtZQUNmLFVBQVUsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7U0FDOUUsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQ0FBb0MsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxVQUFlLEVBQUUsRUFBRSxDQUFDLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxhQUF1QixFQUFFLFdBQXFCLEVBQUUsVUFBa0IsRUFBRSxRQUFnQixFQUFFLFFBQWdCLEVBQUUsTUFBYyxFQUFFLE1BQWMsRUFBRSxJQUFZO1FBQ3JLLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzFCLElBQUksT0FBTyxHQUFRO1lBQ2pCLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDL0UsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUN0RCxjQUFjLEVBQUUsYUFBYTtZQUM3QixZQUFZLEVBQUUsV0FBVztZQUN6QixZQUFZLEVBQUUsVUFBVTtZQUN4QixRQUFRLEVBQUUsTUFBTTtZQUNoQixRQUFRLEVBQUUsTUFBTTtZQUNoQixVQUFVLEVBQUUsSUFBSTtZQUNoQixRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSTtZQUMvQyxPQUFPLEVBQUUsTUFBTTtTQUNoQixDQUFBO1FBQ0QsSUFBSSxRQUFRLEdBQUcsQ0FBQztZQUNkLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDakMsSUFBSSxRQUFRLEdBQUcsQ0FBQztZQUNkLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLDZDQUE2QyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3hJLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSztnQkFDMUIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEUsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBQ0Qsc0JBQXNCLENBQUMsVUFBa0I7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsTUFBTSxPQUFPLEdBQVE7WUFDbkIsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUMvRSxZQUFZLEVBQUUsQ0FBQyxVQUFVLENBQUM7WUFDMUIsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUN0RCxRQUFRLEVBQUUsQ0FBQztZQUNYLFVBQVUsRUFBRSxFQUFFO1lBQ2QsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUk7WUFDL0MsT0FBTyxFQUFFLE1BQU07U0FDaEIsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyw2Q0FBNkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUN4SSxPQUFPO2dCQUNMLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztnQkFDckIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEUsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBQ0Qsd0JBQXdCLENBQUMsWUFBb0I7UUFDM0MsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsTUFBTSxPQUFPLEdBQVE7WUFDbkIsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUMvRSxjQUFjLEVBQUUsQ0FBQyxZQUFZLENBQUM7WUFDOUIsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQztZQUN0RCxRQUFRLEVBQUUsQ0FBQztZQUNYLFVBQVUsRUFBRSxFQUFFO1lBQ2QsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUk7WUFDL0MsT0FBTyxFQUFFLE1BQU07U0FDaEIsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyw2Q0FBNkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUN4SSxPQUFPO2dCQUNMLEtBQUssRUFBRSxRQUFRLENBQUMsS0FBSztnQkFDckIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdEUsQ0FBQTtRQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsU0FBUyxDQUFDLE9BQWU7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLDJCQUEyQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFDRCxhQUFhLENBQUMsU0FBaUI7UUFDN0IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLDJDQUEyQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxXQUFtQjtRQUM3QyxNQUFNLFVBQVUsR0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkcsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLHFDQUFxQyxNQUFNLGdCQUFnQixXQUFXLGVBQWUsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDakosQ0FBQztJQUNELFNBQVMsQ0FBQyxNQUFjLEVBQUUsR0FBVyxFQUFFLFVBQXNCO1FBQzNELE1BQU0sVUFBVSxHQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsc0NBQXNDLE1BQU0sUUFBUSxHQUFHLGVBQWUsVUFBVSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdkksQ0FBQztJQUNELFNBQVMsQ0FBQyxNQUFjLEVBQUUsV0FBbUI7UUFDM0MsTUFBTSxVQUFVLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25HLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQ0FBZ0MsTUFBTSxnQkFBZ0IsV0FBVyxlQUFlLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzVJLENBQUM7SUFDRCxzQkFBc0IsQ0FBQyxNQUFjO1FBQ25DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxtQ0FBbUMsTUFBTSxxQkFBcUIsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFFRCxXQUFXLENBQUMsUUFBYTtRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsc0JBQXNCLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUNELFlBQVksQ0FBQyxNQUFjLEVBQUUsUUFBNEM7UUFDdkUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLCtCQUErQixNQUFNLGFBQWEsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNyRyxDQUFDO0lBQ0QsV0FBVyxDQUFDLE1BQWM7UUFDeEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLGtDQUFrQyxNQUFNLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBQ0QsY0FBYyxDQUFDLElBQVM7UUFDdEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLDRCQUE0QixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFDRCxhQUFhLENBQUMsT0FBWTtRQUN4QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsNEJBQTRCLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUNELGFBQWEsQ0FBQyxPQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyw0QkFBNEIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBQ0QsZUFBZSxDQUFDLE1BQWM7UUFDNUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLCtCQUErQixNQUFNLG9CQUFvQixDQUFDLENBQUE7SUFDakcsQ0FBQztJQUNELGNBQWMsQ0FBQyxNQUFjLEVBQUUsT0FBWTtRQUN6QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsc0NBQXNDLE1BQU0sRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxVQUFVO0lBQ1Ysa0JBQWtCLENBQUMsT0FBWTtRQUM3QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEdBQUcsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxPQUFZO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBQ0Qsb0JBQW9CLENBQUMsTUFBYztRQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsb0NBQW9DLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFBLENBQUM7SUFDdEwsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxtQ0FBbUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQVk7UUFDMUIsTUFBTSxVQUFVLEdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ25HLHNDQUFzQztRQUN0QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsb0NBQW9DLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFhO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxtQ0FBbUMsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUN0RixDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBUztRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDcEUsQ0FBQztJQUVELGNBQWMsQ0FBQyxVQUFlLEVBQUUsSUFBWSxFQUFFLElBQVk7UUFDeEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyw4Q0FBOEMsVUFBVSxTQUFTLElBQUksU0FBUyxJQUFJLEVBQUUsQ0FDckcsQ0FBQTtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsVUFBZSxFQUFFLElBQVU7UUFDekMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRywrQ0FBK0MsVUFBVSxTQUFTLElBQUksRUFBRSxDQUN6RixDQUFBO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxVQUFlLEVBQUUsSUFBUyxFQUFFLElBQVMsRUFBRSxVQUFnQjtRQUNuRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyw2Q0FBNkMsVUFBVSxTQUFTLElBQUksU0FBUyxJQUFJLEVBQUUsQ0FDcEcsQ0FBQTtRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyw2Q0FBNkMsVUFBVSxTQUFTLElBQUksU0FBUyxJQUFJLGVBQWUsVUFBVSxFQUFFLENBQzdILENBQUE7UUFFSCxDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLFVBQWUsRUFBRSxJQUFZLEVBQUUsSUFBWSxFQUFFLFVBQWtCLEVBQUUsU0FBaUI7UUFDdEcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRywyQ0FBMkMsVUFBVSxTQUFTLElBQUksU0FBUyxJQUFJLGVBQWUsVUFBVSxFQUFFLENBQzNILENBQUE7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsMkNBQTJDLFVBQVUsU0FBUyxJQUFJLFNBQVMsSUFBSSxlQUFlLFVBQVUsY0FBYyxTQUFTLEVBQUUsQ0FDbEosQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBUztRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLDRDQUE0QyxFQUFFLElBQUksQ0FDbkUsQ0FBQTtJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxHQUFRLEVBQUUsU0FBYyxFQUFFLFFBQWE7UUFDM0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyx5QkFBeUIsR0FBRywyQkFBMkIsU0FBUyxxQ0FBcUMsUUFBUSxFQUFFLENBQ2hJLENBQUE7SUFDSCxDQUFDO0lBRUQsb0NBQW9DLENBQUMsVUFBZSxFQUFFLE9BQVk7UUFDaEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyx5Q0FBeUMsVUFBVSxZQUFZLE9BQU8sOEJBQThCLENBQ3JILENBQUE7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQVk7UUFDMUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyw2Q0FBNkMsT0FBTyxFQUFFLGNBQWMsSUFBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLENBQ3RHLENBQUE7SUFDSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBUztRQUN6QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUNuQixJQUFJLENBQUMsUUFBUSxHQUFHLHNEQUFzRCxFQUFFLElBQUksQ0FDN0UsQ0FBQTtJQUNILENBQUM7SUFFRCw0QkFBNEIsQ0FBQyxPQUFZO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsdUNBQXVDLEVBQUUsT0FBTyxDQUNqRSxDQUFBO0lBQ0gsQ0FBQztJQUdELDhCQUE4QixDQUFDLE9BQVk7UUFDekMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFdEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyx5Q0FBeUMsVUFBVSxZQUFZLE9BQU8sRUFBRSxDQUN6RixDQUFBO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsbUJBQW1CLEVBQUUsT0FBTyxDQUM3QyxDQUFBO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUFDLElBQVM7UUFDOUIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyw2QkFBNkIsRUFBRSxJQUFJLENBQ3BELENBQUE7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQVk7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQ0FBZ0MsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUM5RCxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyw0QkFBNEIsTUFBTSxFQUFFLENBQ3JELENBQUE7SUFDSCxDQUFDO0lBRUQsbUJBQW1CLENBQUMsT0FBWTtRQUM5QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLHlCQUF5QixFQUFFLE9BQU8sQ0FDbkQsQ0FBQTtJQUNILENBQUM7SUFFRCx5QkFBeUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQ0FBb0MsQ0FDckQsQ0FBQTtJQUNILENBQUM7SUFFTyxTQUFTLENBQUksR0FBa0I7UUFDckMsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUM7WUFBQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFNLENBQUM7UUFBQyxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQUMsT0FBTyxJQUFJLENBQUM7UUFBQyxDQUFDO0lBQzdELENBQUM7SUFFRCxXQUFXO1FBQ1QsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDckQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBMEIsV0FBVyxDQUFDLENBQUM7UUFFckUsa0JBQWtCO1FBQ2xCLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQTBCLGNBQWMsQ0FBQyxDQUFDO1FBRTVFLDJFQUEyRTtRQUMzRSxNQUFNLFVBQVUsR0FBRyxDQUFDLE9BQU8sRUFBRSxVQUFVLElBQUksV0FBVyxFQUFFLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUVyRixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLFVBQVUsYUFBYSxDQUFDLENBQUM7SUFDdkYsQ0FBQztJQUdELG1CQUFtQjtRQUNqQixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxzQ0FBc0MsQ0FBQztRQUNoRyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLDZDQUE2QyxVQUFVLEVBQUUsQ0FDMUUsQ0FBQztJQUNKLENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsdUNBQXVDLEVBQUUsT0FBTyxDQUNqRSxDQUFBO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUFDLE9BQVk7UUFDakMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxrQ0FBa0MsT0FBTyxlQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQzdHLENBQUE7SUFDSCxDQUFDO0lBRUQsMkJBQTJCLENBQUMsWUFBaUI7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxrQ0FBa0MsRUFDbEQsWUFBWSxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsY0FBYyxDQUFDLE9BQVk7UUFDekIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FDbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyw2Q0FBNkMsRUFBRSxPQUFPLENBQ3ZFLENBQUE7SUFDSCxDQUFDO0lBQ0QsdUJBQXVCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQ2xGLENBQUE7SUFDSCxDQUFDO0lBQ0QsWUFBWSxDQUFDLE9BQVk7UUFDdkIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFBO1FBQ1osSUFBSSxPQUFPLEVBQUUsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9ELEdBQUcsR0FBRyxHQUFHLEdBQUcsYUFBYSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDNUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcscUNBQXFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUNwRixDQUFBO0lBQ0gsQ0FBQztJQUVELHdCQUF3QixDQUFDLE9BQVk7UUFDbkMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxjQUFjLEVBQUUsT0FBTyxDQUMvQyxDQUFBO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFZO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsMENBQTBDLE9BQU8sQ0FBQyxTQUFTLFlBQVksT0FBTyxDQUFDLE9BQU8sZUFBZSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQzFJLENBQUE7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWU7UUFDMUIsSUFBSSxPQUFPLEdBQUc7WUFDWixPQUFPLEVBQUUsT0FBTztZQUNoQixVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRTtZQUNwRCxNQUFNLEVBQUUsQ0FBQztZQUNULFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDbkQsQ0FBQztJQUNELGNBQWMsQ0FBQyxLQUFVO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsMERBQTBELEtBQUssZUFBZSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDdkksQ0FBQTtJQUNILENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxPQUFZO1FBQzdCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcscUNBQXFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQ2hGLENBQUE7SUFDSCxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBVyxFQUFFLElBQVM7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsdURBQXVELE1BQU0sU0FBUyxJQUFJLEVBQUUsQ0FDN0UsQ0FBQTtJQUNILENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxPQUFZO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLG9EQUFvRCxPQUFPLEVBQUUsQ0FDOUQsQ0FBQTtJQUNILENBQUM7SUFHRCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FDbEIsdUVBQXVFLENBQ3hFLENBQUE7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLHFEQUFxRCxDQUN0RCxDQUFBO0lBQ0gsQ0FBQztJQUVELHlCQUF5QixDQUFDLE9BQVksRUFBRSxNQUFXLEVBQUUsSUFBUztRQUM1RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixrRUFBa0UsT0FBTyxXQUFXLE1BQU0sU0FBUyxJQUFJLEVBQUUsQ0FDMUcsQ0FBQTtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsSUFBUztRQUN0QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQixzREFBc0QsRUFBRSxJQUFJLENBQzdELENBQUE7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLE9BQWtDO1FBQzdDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcseUJBQXlCLEVBQUUsT0FBTyxDQUNuRCxDQUFBO0lBQ0gsQ0FBQztJQUVELHFCQUFxQixDQUFDLE9BQThCO1FBQ2xELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsaUNBQWlDLEVBQUUsT0FBTyxDQUMzRCxDQUFBO0lBQ0gsQ0FBQztJQUVELGtCQUFrQixDQUFDLE9BQThCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsdUJBQXVCLEVBQUUsT0FBTyxDQUNqRCxDQUFBO0lBQ0gsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcseUJBQXlCLEVBQUUsT0FBTyxDQUNuRCxDQUFBO0lBQ0gsQ0FBQztJQUVELHNCQUFzQixDQUFDLFdBQWdCO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CO0NBQ0wsRUFBRSxXQUFXLENBQ1QsQ0FBQTtJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxNQUFjO1FBQ25DLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9DLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsa0NBQWtDLE1BQU0sZUFBZSxVQUFVLEVBQUUsQ0FDcEYsQ0FBQTtJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUNsQiw4RkFBOEYsQ0FDL0YsQ0FBQTtJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYyxFQUFFLE1BQVcsRUFBRSxNQUFlO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsMENBQTBDLE1BQU0saUJBQWlCLE1BQU0sRUFBRSxFQUFFLE1BQU0sQ0FDbEcsQ0FBQTtJQUNILENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxTQUFpQixFQUFFLFVBQWtCO1FBQ3pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQ2xCLElBQUksQ0FBQyxRQUFRLEdBQUcsMkNBQTJDLFNBQVMsZUFBZSxVQUFVLGFBQWEsRUFBRSxFQUFFLENBQy9HLENBQUE7SUFDSCxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsVUFBaUI7UUFDbEMsSUFBSSxHQUFHLEdBQVEsRUFBRSxDQUFDO1FBRWxCLEtBQUssSUFBSSxLQUFLLElBQUksVUFBVSxFQUFFLENBQUM7WUFDN0IsS0FBSyxJQUFJLFVBQVUsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVztvQkFDekIsU0FBUztnQkFFWCxJQUFJLFFBQVEsR0FBRyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUM7Z0JBQ2pGLElBQUksU0FBUyxHQUFHLFVBQVUsQ0FBQyxjQUFjLENBQUM7Z0JBRTFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztvQkFDbkIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztnQkFDckIsQ0FBQztnQkFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7b0JBQzlCLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ2hDLENBQUM7Z0JBQ0QsS0FBSyxDQUFDLGFBQWEsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUM7Z0JBQzlDLEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO2dCQUVoRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztnQkFDbkQsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQUVELGVBQWUsQ0FBQyxPQUFZO1FBQzFCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyx5QkFBeUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsaUJBQWlCLENBQUMsT0FBWTtRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEdBQUcsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxPQUFZO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUNELGFBQWEsQ0FBQyxHQUFRLEVBQUUsTUFBVztRQUNqQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsc0NBQXNDLEdBQUcsV0FBVyxNQUFNLHlCQUF5QixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3JJLENBQUM7SUFDRCxxQkFBcUIsQ0FBQyxPQUFZO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRywrQkFBK0IsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNwRixDQUFDO0lBQ0QsWUFBWSxDQUFDLE9BQVksRUFBRSxZQUFxQjtRQUM5QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDOUIsZUFBZSxFQUFFLFVBQVUsS0FBSyxFQUFFO1NBQ25DLENBQUMsQ0FBQztRQUNILElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLCtDQUErQyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQzNILENBQUM7YUFDSSxDQUFDO1lBQ0osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLDBDQUEwQyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQ3RILENBQUM7SUFDSCxDQUFDO0lBQ0QsY0FBYyxDQUFDLFVBQWdCO1FBQzdCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM5QixlQUFlLEVBQUUsVUFBVSxLQUFLLEVBQUU7U0FDbkMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLDJDQUEyQyxVQUFVLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUM5SCxDQUFDO0lBQ0QsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxvQkFBb0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLHFCQUFxQixDQUFDLENBQUE7SUFDbkgsQ0FBQztJQUNELGtCQUFrQixDQUFDLFVBQWU7UUFDaEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlCLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDO1lBQzlCLGVBQWUsRUFBRSxVQUFVLEtBQUssRUFBRTtTQUNuQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsMENBQTBDLFVBQVUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzVILENBQUM7SUFDRCxpQkFBaUIsQ0FBQyxHQUFRO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxnQ0FBZ0MsR0FBRyxtQkFBbUIsQ0FBQyxDQUFBO0lBQzlGLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxHQUFRLEVBQUUsTUFBVztRQUN0QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDOUIsTUFBTSxPQUFPLEdBQUcsSUFBSSxXQUFXLENBQUM7WUFDOUIsZUFBZSxFQUFFLFVBQVUsS0FBSyxFQUFFO1NBQ25DLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxxREFBcUQsR0FBRyxXQUFXLE1BQU0sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDN0ksQ0FBQztJQUNELFFBQVE7UUFDTixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUNuRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFDRCxrQkFBa0IsQ0FBQyxPQUFZO1FBQzdCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM5QixlQUFlLEVBQUUsVUFBVSxLQUFLLEVBQUU7U0FDbkMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLGdDQUFnQyxFQUFFLE9BQU8sRUFBRSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzNHLENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxRQUFhO1FBQzVCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxtQ0FBbUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUE7SUFDOUYsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFZO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxxQ0FBcUMsT0FBTyxFQUFFLENBQUMsQ0FBQTtJQUMxRixDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQVk7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ3BFLENBQUM7K0dBaHFCVSxXQUFXLDRDQWdCWixPQUFPLGFBQ1AsYUFBYSxhQUNiLFFBQVEsMENBRVIsYUFBYSxhQUNiLFlBQVk7bUhBckJYLFdBQVcsY0FGVixNQUFNOzs0RkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBaUJJLE1BQU07MkJBQUMsT0FBTzs7MEJBQ2QsTUFBTTsyQkFBQyxhQUFhOzswQkFDcEIsTUFBTTsyQkFBQyxRQUFROzswQkFFZixNQUFNOzJCQUFDLGFBQWE7OzBCQUNwQixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBTdWJzY3JpYmVyLCBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgUmV2aWV3IH0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvcmV2aWV3Lm1vZGFsXCI7XG5pbXBvcnQgeyBEZXZpY2VJbmZvIH0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvdXNlci5tb2RhbFwiO1xuaW1wb3J0IHsgUGluQ29kZUxvY2F0aW9uSW50ZXIgfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy9QaW5jb2RlTG9jYXRpb25JbnRlci5tb2RlbFwiO1xuaW1wb3J0IHsgUGluY29kZUxvY2F0aW9uIH0gZnJvbSBcIi4uL2Vjb21tZXJjZS9zdHlsZXMvUGluY29kZUxvY2F0aW9uLm1vZGVsXCI7XG5pbXBvcnQgeyBBUElfVVJMLCBDTUlTX1VSTCwgRUNPTU1FUkNFX1VSTCwgUEFTU0JPT0tfVVJMIH0gZnJvbSAnLi4vdG9rZW5zL2FwaS10b2tlbic7XG5pbXBvcnQgeyBDYXRlZ29yeSB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL2NhdGVnb3J5Lm1vZGFsXCJcbmltcG9ydCB7IGNoZWNrSXRlbUFscmVhZHlBZGRlZCwgUHJvZHVjdCwgc3luY0l0ZW1Ub1NlcnZlckRCUmVxdWVzdCB9IGZyb20gXCIuLi9lY29tbWVyY2Uvc3R5bGVzL3Byb2R1Y3QubW9kYWxcIjtcbmltcG9ydCB7IENvbGxlY3Rpb24gfSBmcm9tIFwiLi4vZWNvbW1lcmNlL3N0eWxlcy9Db2xsZWN0aW9uLm1vZGFsXCI7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZVNlcnZpY2UgfSBmcm9tIFwiLi9zdG9yYWdlLnNlcnZpY2VcIjtcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tIFwibmd4LWNvb2tpZS1zZXJ2aWNlXCI7XG5pbXBvcnQgeyBMT0NBTF9TVE9SQUdFIH0gZnJvbSAnLi4vc2VydmljZXMvbG9jYWwtc3RvcmFnZS50b2tlbic7XG5pbXBvcnQgeyBTdG9yYWdlTGlrZSB9IGZyb20gJy4uL3NlcnZpY2VzL3N0b3JhZ2UtbGlrZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBSZXN0U2VydmljZSBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG5cbiAgLy8gcHJpdmF0ZSBCQVNFX1VSTDogc3RyaW5nID0gXCJodHRwczovL2Rldi1hcGkuc2ltcG8uYWkvXCI7XG4gIC8vIHByaXZhdGUgRUNPTU1FUkNFX1VSTDogc3RyaW5nID0gXCJodHRwczovL2Rldi1lY29tbWVyY2Uuc2ltcG8uYWkvXCI7XG4gIC8vIHByaXZhdGUgQ01JU19VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9hcGktY21pcy50ZWpzb2Z0LmNvbS9cIjsgLy9wcm9kdWN0aW9uXG4gIC8vIHByaXZhdGUgQ01JU19VUkw6IHN0cmluZyA9IFwiaHR0cHM6Ly9kZXYtYXBpLnNpbXBvLmFpL1wiOyAvL2RldlxuICAvLyBwcml2YXRlIENNSVNfVVJMOiBzdHJpbmcgPSBcImh0dHBzOi8vc3RhZ2VhcGktY21pcy50ZWpzb2Z0LmNvbS9cIjsgLy9zdGFnZVxuICBwcml2YXRlIGVudmlyb25tZW50VHlwZVN1YnNjcmliZXI6IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuICBidXNpbmVzc0RldGFpbHM6IGFueTtcbiAgc3ViSW5kdXN0cnlOYW1lOiBhbnk7XG4gIGlzSmV3ZWxsZXJ5OiBib29sZWFuID0gZmFsc2U7XG4gIEFQUE9JTlRNRU5UX1VSTCA9IFwiaHR0cHM6Ly9zdGFnZS1hcHBvaW50bWVudC5zaW1wby5haS9cIlxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICAvLyBwcml2YXRlIHJlYWRvbmx5IGV2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcbiAgICBASW5qZWN0KEFQSV9VUkwpIHByaXZhdGUgQkFTRV9VUkw6IHN0cmluZyxcbiAgICBASW5qZWN0KEVDT01NRVJDRV9VUkwpIHByaXZhdGUgRUNPTU1FUkNFX1VSTDogc3RyaW5nLFxuICAgIEBJbmplY3QoQ01JU19VUkwpIHByaXZhdGUgQ01JU19VUkw6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXG4gICAgQEluamVjdChMT0NBTF9TVE9SQUdFKSBwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2VMaWtlLFxuICAgIEBJbmplY3QoUEFTU0JPT0tfVVJMKSBwcml2YXRlIFBBU1NCT09LX1VSTDogc3RyaW5nLFxuICApIHtcbiAgICAvLyB0aGlzLmVudmlyb25tZW50VHlwZVN1YnNjcmliZXIgPSB0aGlzLmV2ZW50U2VydmljZS5lbnZpcm9ubWVudFR5cGUuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xuICAgIC8vICAgaWYgKHJlc3BvbnNlID09IFwiREVWXCIpIHtcbiAgICAvLyAgICAgdGhpcy5CQVNFX1VSTCA9IFwiaHR0cHM6Ly9kZXYtYXBpLnNpbXBvLmFpL1wiO1xuICAgIC8vICAgICB0aGlzLkVDT01NRVJDRV9VUkwgPSBcImh0dHBzOi8vZGV2LWVjb21tZXJjZS5zaW1wby5haS9cIjtcbiAgICAvLyAgIH1cbiAgICAvLyAgIGVsc2UgaWYgKHJlc3BvbnNlID09IFwiU1RBR0VcIikge1xuICAgIC8vICAgICB0aGlzLkVDT01NRVJDRV9VUkwgPSBcImh0dHBzOi8vc3RhZ2UtZWNvbW1lcmNlLnNpbXBvLmFpL1wiO1xuICAgIC8vICAgICB0aGlzLkJBU0VfVVJMID0gXCJodHRwczovL3N0YXRlLWFwaS5zaW1wby5haS9cIjtcbiAgICAvLyAgIH1cbiAgICAvLyAgIGVsc2Uge1xuICAgIC8vICAgICB0aGlzLkJBU0VfVVJMID0gXCJodHRwczovL2FwaS1jbWlzLnRlanNvZnQuY29tL1wiO1xuICAgIC8vICAgICB0aGlzLkVDT01NRVJDRV9VUkwgPSBcImh0dHBzOi8vcHJvZC1lY29tbWVyY2Uuc2ltcG8uYWkvXCI7XG4gICAgLy8gICB9XG4gICAgLy8gfSlcbiAgfVxuICBvcnJhQmFzZVVybDogc3RyaW5nID0gJ2h0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tLyc7XG4gIC8vIHBhc3NCb29rVXJsOiBzdHJpbmcgPSBcImh0dHBzOi8vcHJvZC1wYXNzYm9vay5zaW1wby5haS9cIjtcbiAgZ2V0QnVzaW5lc3NEZXRhaWxzKCkge1xuICAgIC8vICAgdGhpcy5idXNpbmVzc0RldGFpbHMgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImJEZXRhaWxzXCIpO1xuICAgIC8vICBpZih0aGlzLmJ1c2luZXNzRGV0YWlscyAhPSBudWxsKSB7XG4gICAgLy8gICAgIHRoaXMuYnVzaW5lc3NEZXRhaWxzID0gSlNPTi5wYXJzZSh0aGlzLmJ1c2luZXNzRGV0YWlscyk7XG4gICAgLy8gICAgIHRoaXMuc3ViSW5kdXN0cnlOYW1lID0gdGhpcy5idXNpbmVzc0RldGFpbHMuc3ViSW5kdXN0cnlOYW1lO1xuICAgIC8vICAgICB0aGlzLmlzSmV3ZWxsZXJ5ID0gIHRoaXMuc3ViSW5kdXN0cnlOYW1lID09ICdFY29tbWVyY2UgSmV3ZWxsZXJ5JyA/IHRydWUgOiBmYWxzZTtcbiAgICAvLyAgIH1cbiAgICB0aGlzLnN1YkluZHVzdHJ5TmFtZSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdzdWJJbmR1c3RyeU5hbWUnKTtcbiAgICBpZiAodGhpcy5zdWJJbmR1c3RyeU5hbWUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5pc0pld2VsbGVyeSA9IHRoaXMuc3ViSW5kdXN0cnlOYW1lID09ICdFY29tbWVyY2UgSmV3ZWxsZXJ5JyA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG5cbiAgfVxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5lbnZpcm9ubWVudFR5cGVTdWJzY3JpYmVyKVxuICAgICAgdGhpcy5lbnZpcm9ubWVudFR5cGVTdWJzY3JpYmVyPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZ2V0RmVhdHVyZWRQcm9kdWN0KGNvbGxlY3Rpb25JZDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCkge1xuICAgIHRoaXMuZ2V0QnVzaW5lc3NEZXRhaWxzKCk7XG4gICAgbGV0IHN1YkluZHVzdHJ5SWQ6IHN0cmluZyB8IG51bGwgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIik7XG4gICAgaWYgKCFzdWJJbmR1c3RyeUlkKVxuICAgICAgc3ViSW5kdXN0cnlJZCA9IFwiXCI7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC9jb2xsZWN0aW9uL2lkP2NvbGxlY3Rpb25JZD0ke2NvbGxlY3Rpb25JZCB8fCAnJ30maXNKZXdlbGxlcnk9JHt0aGlzLmlzSmV3ZWxsZXJ5fWApLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5kYXRhPy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpKSk7XG4gIH1cbiAgZ2V0Q2F0ZWdvcmllc0J5Q29sbGVjdGlvbklkKGNvbGxlY3Rpb25JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvaW52ZW50b3J5L2NhdGVnb3J5L2NvbGxlY3Rpb25JZD9jb2xsZWN0aW9uSWQ9JHtjb2xsZWN0aW9uSWR9YCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGE/Lm1hcCgoY2F0ZWdvcnk6IGFueSkgPT4gbmV3IENhdGVnb3J5KGNhdGVnb3J5KSkpKTtcbiAgfVxuICBnZXRQYXNzYm9va09yZGVyU3RhdHVzKG9yZGVySWQ6IGFueSkge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRUb2tlbigpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLlBBU1NCT09LX1VSTCArIGBwYXNzYm9vay9tYW51YWwvcGF5bWVudC9zdGF0dXM/cGF5bWVudE9yZGVySWQ9JHtvcmRlcklkfWAsIHt9LCB7IGhlYWRlcnM6IGhlYWRlcnMgfSlcbiAgfVxuICBnZXRQcm9kdWN0QnlTZWxlY3RlZENhdGVnb3J5KGNhdGVnb3J5SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC8ke2NhdGVnb3J5SWR9YFxuICAgIClcbiAgfVxuICBnZXRBbGxTY2hlbWVzKHVzZXJJZD86IGFueSwgc3RvcmVJZD86IGFueSk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5QQVNTQk9PS19VUkwgKyBgZXh0L2Nvbm5lY3Qvc2ltcG8vdXNlcj91c2VySWQ9JHt1c2VySWR9JnN0b3JlSWQ9JHtzdG9yZUlkfWApO1xuICB9XG4gIGdldEFsbFJlZGVtcHRpb25TY2hlbWVzKCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMub3JyYUJhc2VVcmwgKyBgcGFzc0Jvb2svcmVkZW1wdGlvbi9hbW91bnQvY2hlY2s/dXNlckNvZGU9Q18wMDAzMTM4ODVgKTtcbiAgfVxuICBnZXRQcm9kdWN0RGV0YWlscyhwcm9kdWN0SWQ6IHN0cmluZyB8IG51bGwgPSBudWxsKSB7XG4gICAgdGhpcy5nZXRCdXNpbmVzc0RldGFpbHMoKTtcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XG4gICAgICBwYWdlTm86IDAsXG4gICAgICBwYWdlU2l6ZTogMSxcbiAgICAgIGl0ZW1JZDogcHJvZHVjdElkLFxuICAgICAgc3ViSW5kdXN0cnlJZDogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJzdWJJbmR1c3RyeUlkXCIpLFxuICAgICAgdXNlcklkOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInBlcklkXCIpID8/IG51bGwsXG4gICAgICByZXF1ZXN0OiBcIlVTRVJcIlxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9wcm9kdWN0L2l0ZW0vc2VhcmNoP2lzSmV3ZWxsZXJ5PSR7dGhpcy5pc0pld2VsbGVyeX1gLCBwYXlsb2FkKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YS5kYXRhLm1hcCgocHJvZHVjdDogYW55KSA9PiBuZXcgUHJvZHVjdChwcm9kdWN0KSkpKTtcbiAgfVxuICBnZXRDb2xsZWN0aW9uQnlJZHMoY29sbGVjdGlvbklkczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgaWRzOiBjb2xsZWN0aW9uSWRzXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2ludmVudG9yeS9jb2xsZWN0aW9uL2xpc3QvYWxsYCwgcGF5bG9hZCkucGlwZShtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHJlc3BvbnNlLmRhdGE/Lm1hcCgoY29sbGVjdGlvbjogYW55KSA9PiBuZXcgQ29sbGVjdGlvbihjb2xsZWN0aW9uKSkpKTtcbiAgfVxuXG4gIGdldEFsbENhdGVnb3JpZXMoKSB7XG5cbiAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcbiAgICBjb25zdCBzdWJJbmR1c3RyeUlkOiBzdHJpbmcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIikgPz8gXCJcIjtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9pbnZlbnRvcnkvZmVhdHVyZWQ/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnN1YklkPSR7c3ViSW5kdXN0cnlJZH1gKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChjYXRlZ29yeTogYW55KSA9PiBuZXcgQ2F0ZWdvcnkoY2F0ZWdvcnkpKSkpO1xuICB9XG4gIGdldEFsbENvbGxlY3Rpb25zKCkge1xuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcbiAgICAgIHBhZ2VObzogMCxcbiAgICAgIHBhZ2VTaXplOiAxMCxcbiAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiLFxuICAgICAgYnVzaW5lc3NJZDogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyAnZWNvbW1lcmNlL2ludmVudG9yeS9nZXQvY29sbGVjdGlvbicsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiByZXNwb25zZS5kYXRhLmRhdGE/Lm1hcCgoY29sbGVjdGlvbjogYW55KSA9PiBuZXcgQ29sbGVjdGlvbihjb2xsZWN0aW9uKSkpKTtcbiAgfVxuXG4gIGdldEZpbHRlcmVkUHJvZHVjdChjb2xsZWN0aW9uSWRzOiBzdHJpbmdbXSwgY2F0ZWdvcnlJZHM6IHN0cmluZ1tdLCBzZWFyY2hUZXh0OiBzdHJpbmcsIG1pblByaWNlOiBudW1iZXIsIG1heFByaWNlOiBudW1iZXIsIHNvcnRCeTogc3RyaW5nLCBwYWdlTm86IG51bWJlciwgc2l6ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5nZXRCdXNpbmVzc0RldGFpbHMoKTtcbiAgICBsZXQgcGF5bG9hZDogYW55ID0ge1xuICAgICAgXCJidXNpbmVzc0lkXCI6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYklkXCIpID8/IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwiYnVzaW5lc3NJZFwiKSxcbiAgICAgIFwic3ViSW5kdXN0cnlJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXG4gICAgICBcImNvbGxlY3Rpb25JZFwiOiBjb2xsZWN0aW9uSWRzLFxuICAgICAgXCJjYXRlZ29yeUlkXCI6IGNhdGVnb3J5SWRzLFxuICAgICAgXCJzZWFyY2hUZXh0XCI6IHNlYXJjaFRleHQsXG4gICAgICBcInNvcnRCeVwiOiBzb3J0QnksXG4gICAgICBcInBhZ2VOb1wiOiBwYWdlTm8sXG4gICAgICBcInBhZ2VTaXplXCI6IHNpemUsXG4gICAgICBcInVzZXJJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInBlcklkXCIpID8/IG51bGwsXG4gICAgICByZXF1ZXN0OiBcIlVTRVJcIlxuICAgIH1cbiAgICBpZiAobWluUHJpY2UgPiAwKVxuICAgICAgcGF5bG9hZFtcIm1pblByaWNlXCJdID0gbWluUHJpY2U7XG4gICAgaWYgKG1heFByaWNlID4gMClcbiAgICAgIHBheWxvYWRbXCJtYXhQcmljZVwiXSA9IG1heFByaWNlO1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvaXRlbS9zZWFyY2g/aXNKZXdlbGxlcnk9JHt0aGlzLmlzSmV3ZWxsZXJ5fWAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb3VudDogcmVzcG9uc2UuZGF0YS5jb3VudCxcbiAgICAgICAgZGF0YTogcmVzcG9uc2UuZGF0YS5kYXRhPy5tYXAoKHByb2R1Y3Q6IGFueSkgPT4gbmV3IFByb2R1Y3QocHJvZHVjdCkpXG4gICAgICB9XG4gICAgfSkpO1xuICB9XG4gIGdldFByb2R1Y3RCeUNhdGVnb3J5SWQoY2F0ZWdvcnlJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5nZXRCdXNpbmVzc0RldGFpbHMoKTtcbiAgICBjb25zdCBwYXlsb2FkOiBhbnkgPSB7XG4gICAgICBcImJ1c2luZXNzSWRcIjogdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpLFxuICAgICAgXCJjYXRlZ29yeUlkXCI6IFtjYXRlZ29yeUlkXSxcbiAgICAgIFwic3ViSW5kdXN0cnlJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXG4gICAgICBcInBhZ2VOb1wiOiAwLFxuICAgICAgXCJwYWdlU2l6ZVwiOiAxMCxcbiAgICAgIFwidXNlcklkXCI6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwicGVySWRcIikgPz8gbnVsbCxcbiAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvaXRlbS9zZWFyY2g/aXNKZXdlbGxlcnk9JHt0aGlzLmlzSmV3ZWxsZXJ5fWAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb3VudDogcmVzcG9uc2UuY291bnQsXG4gICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKVxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuICBnZXRQcm9kdWN0QnlDb2xsZWN0aW9uSWQoY29sbGVjdGlvbklkOiBzdHJpbmcpIHtcbiAgICB0aGlzLmdldEJ1c2luZXNzRGV0YWlscygpO1xuICAgIGNvbnN0IHBheWxvYWQ6IGFueSA9IHtcbiAgICAgIFwiYnVzaW5lc3NJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIiksXG4gICAgICBcImNvbGxlY3Rpb25JZFwiOiBbY29sbGVjdGlvbklkXSxcbiAgICAgIFwic3ViSW5kdXN0cnlJZFwiOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcInN1YkluZHVzdHJ5SWRcIiksXG4gICAgICBcInBhZ2VOb1wiOiAwLFxuICAgICAgXCJwYWdlU2l6ZVwiOiAxMCxcbiAgICAgIFwidXNlcklkXCI6IHRoaXMuc3RvcmFnZS5nZXRJdGVtKFwicGVySWRcIikgPz8gbnVsbCxcbiAgICAgIHJlcXVlc3Q6IFwiVVNFUlwiXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3Byb2R1Y3QvaXRlbS9zZWFyY2g/aXNKZXdlbGxlcnk9JHt0aGlzLmlzSmV3ZWxsZXJ5fWAsIHBheWxvYWQpLnBpcGUobWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb3VudDogcmVzcG9uc2UuY291bnQsXG4gICAgICAgIGRhdGE6IHJlc3BvbnNlLmRhdGEuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKVxuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIGFkZFJldmlldyhwYXlsb2FkOiBSZXZpZXcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9hZGQvcmV2aWV3YCwgcGF5bG9hZCk7XG4gIH1cbiAgZ2V0QWxsUmV2aWV3cyhwcm9kdWN0SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvZmlsdGVyL3Jldmlld3M/cHJvZHVjdElkPSR7cHJvZHVjdElkfWAsIG51bGwpO1xuICB9XG5cbiAgZ2VuZXJhdGVPVFAobW9iaWxlOiBzdHJpbmcsIGNvdW50cnlDb2RlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9vdHAvdHJpZ2dlcj9tb2JpbGU9JHttb2JpbGV9JmNvdW50cnlDb2RlPSR7Y291bnRyeUNvZGV9JmJ1c2luZXNzSWQ9JHtidXNpbmVzc0lkfWAsIG51bGwpO1xuICB9XG4gIHZlcmlmeU9UUChtb2JpbGU6IHN0cmluZywgb3RwOiBzdHJpbmcsIGRldmljZUluZm86IERldmljZUluZm8pIHtcbiAgICBjb25zdCBidXNpbmVzc0lkOiBzdHJpbmcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJJZFwiKSA/PyB0aGlzLnN0b3JhZ2UuZ2V0SXRlbShcImJ1c2luZXNzSWRcIikgPz8gXCJcIjtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGhlbnRpY2F0ZT9tb2JpbGU9JHttb2JpbGV9Jm90cD0ke290cH0mYnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YCwgZGV2aWNlSW5mbyk7XG4gIH1cbiAgcmVzZW5kT1RQKG1vYmlsZTogc3RyaW5nLCBjb3VudHJ5Q29kZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/IFwiXCI7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvcmVzZW5kP21vYmlsZT0ke21vYmlsZX0mY291bnRyeUNvZGU9JHtjb3VudHJ5Q29kZX0mYnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YCwgbnVsbCk7XG4gIH1cbiAgYXBwbGljYWJsZURpc2NvdW50TGlzdChjYXJ0SWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2Rpc2NvdW50LWNvdXBvbi8ke2NhcnRJZH0vYXBwbGljYWJpbGl0eS9saXN0YCk7XG4gIH1cblxuICBhZGRJdGVtVG9EQih1c2VyQ2FydDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnRgLCB1c2VyQ2FydCk7XG4gIH1cbiAgZ2V0VXNlckl0ZW1zKHVzZXJJZDogc3RyaW5nLCBjYXJ0VHlwZTogJ0NBUlQnIHwgJ1dJU0hMSVNUJyB8ICdUUklBTF9DQVJUJykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnQ/dXNlcklkPSR7dXNlcklkfSZjYXJ0VHlwZT0ke2NhcnRUeXBlfWApO1xuICB9XG4gIGdldFVzZXJJbmZvKHVzZXJJZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9nZXQvdXNlcj91c2VySWQ9JHt1c2VySWR9YCwgbnVsbCk7XG4gIH1cbiAgYWRkVXNlckFkZHJlc3ModXNlcjogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci91cGRhdGUvdXNlcmAsIHVzZXIpO1xuICB9XG4gIHVwZGF0ZVByb2ZpbGUocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci91cGRhdGUvdXNlcmAsIHBheWxvYWQpO1xuICB9XG4gIGdldFVzZXJPcmRlcnMocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvdXNlci9vcmRlcmAsIHBheWxvYWQpO1xuICB9XG4gIGdldFVzZXJXaXNobGlzdCh1c2VySWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL2NhcnQ/dXNlcklkPSR7dXNlcklkfSZjYXJ0VHlwZT1XSVNITElTVGApXG4gIH1cbiAgbW92ZUl0ZW1Ub0NhcnQodXNlcklkOiBzdHJpbmcsIHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL29yZGVyL3VwZGF0ZS9jYXJ0P3VzZXJJZD0ke3VzZXJJZH1gLCBwYXlsb2FkKTtcbiAgfVxuXG4gIC8vIFBheW1lbnRcbiAgY3JlYXRlUGF5bWVudFRva2VuKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkVDT01NRVJDRV9VUkwgKyBgcGF5bWVudC9vcmRlcmAsIHBheWxvYWQpO1xuICB9XG4gIGNoZWNrUGF5bWVudFN0YXR1cyhwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5FQ09NTUVSQ0VfVVJMICsgYHBheW1lbnQvc3RhdHVzYCwgcGF5bG9hZCk7XG4gIH1cbiAgZ2V0UmVjZW50Vmlld1Byb2R1Y3QodXNlcklkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvdXNlci9yZWNlbnRWaWV3P3VzZXJJZD0ke3VzZXJJZH1gLCBudWxsKS5waXBlKG1hcCgocmVzcG9uc2U6IGFueSkgPT4gcmVzcG9uc2UuZGF0YT8ubWFwKChwcm9kdWN0OiBhbnkpID0+IG5ldyBQcm9kdWN0KHByb2R1Y3QpKSkpOztcbiAgfVxuXG4gIHNlbmRTaWdudXBPVFAocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvc2lnbnVwL290cC90cmlnZ2VyYCwgcGF5bG9hZCk7XG4gIH1cblxuICB2ZXJpZnlTaWdudXBPVFAocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgYnVzaW5lc3NJZDogc3RyaW5nID0gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJiSWRcIikgPz8gdGhpcy5zdG9yYWdlLmdldEl0ZW0oXCJidXNpbmVzc0lkXCIpID8/ICcnO1xuICAgIC8vIHBheWxvYWRbXCJidXNpbmVzc0lkXCJdID0gYnVzaW5lc3NJZDtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGhlbnRpY2F0ZS9zaWdudXBgLCBwYXlsb2FkKTtcbiAgfVxuXG4gIHNpZ25pblBhc3N3b3JkKHBhc3NEYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2F1dGhlbnRpY2F0ZS9sb2dpbmAsIHBhc3NEYXRhKTtcbiAgfVxuXG4gIGNyZWF0ZUFwcG9pbnRtZW50KGRhdGE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9hZGRgLCBkYXRhKVxuICB9XG5cbiAgZ2V0QWxsTG9jYXRpb24oYnVzaW5lc3NJZDogYW55LCBzaXplOiBudW1iZXIsIHBhZ2U6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL2xvY2F0aW9uP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZzaXplPSR7c2l6ZX0mcGFnZT0ke3BhZ2V9YFxuICAgIClcbiAgfVxuXG4gIGdldEFsbFRpbWVTbG90cyhsb2NhdGlvbklkOiBhbnksIGRhdGU6IERhdGUpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy90aW1lc2xvdHM/bG9jYXRpb25JZD0ke2xvY2F0aW9uSWR9JmRhdGU9JHtkYXRlfWBcbiAgICApXG4gIH1cblxuICBnZXRBbGxTZXJ2aWNlKGJ1c2luZXNzSWQ6IGFueSwgc2l6ZTogYW55LCBwYWdlOiBhbnksIGxvY2F0aW9uSWQ/OiBhbnkpIHtcbiAgICBpZiAoIWxvY2F0aW9uSWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvc2VydmljZT9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mc2l6ZT0ke3NpemV9JnBhZ2U9JHtwYWdlfWBcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICAgIHRoaXMuQkFTRV9VUkwgKyBgY3JtL2FwcG9pbnRtZW50L2NvbmZpZy9zZXJ2aWNlP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZzaXplPSR7c2l6ZX0mcGFnZT0ke3BhZ2V9JmxvY2F0aW9uSWQ9JHtsb2NhdGlvbklkfWBcbiAgICAgIClcblxuICAgIH1cbiAgfVxuXG4gIGdldEFsbFN0YWZmQnlMb2NhdGlvbihidXNpbmVzc0lkOiBhbnksIHNpemU6IG51bWJlciwgcGFnZTogbnVtYmVyLCBsb2NhdGlvbklkOiBzdHJpbmcsIHNlcnZpY2VJZDogc3RyaW5nKSB7XG4gICAgaWYgKCFzZXJ2aWNlSWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgICB0aGlzLkJBU0VfVVJMICsgYGNybS9hcHBvaW50bWVudC9jb25maWcvc3RhZmY/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JnNpemU9JHtzaXplfSZwYWdlPSR7cGFnZX0mbG9jYXRpb25JZD0ke2xvY2F0aW9uSWR9YFxuICAgICAgKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL3N0YWZmP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfSZzaXplPSR7c2l6ZX0mcGFnZT0ke3BhZ2V9JmxvY2F0aW9uSWQ9JHtsb2NhdGlvbklkfSZzZXJ2aWNlSWQ9JHtzZXJ2aWNlSWR9YFxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIGdldEF2YWlsYWJsZVNsb3RzKGRhdGE6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBjcm0vYXBwb2ludG1lbnQvY29uZmlnL2F2YWlsYWJsZS90aW1lc2xvdHNgLCBkYXRhXG4gICAgKVxuICB9XG5cbiAgZ2V0U2VsZWN0ZWRMaXN0RmllbGRzKGJJZDogYW55LCBzaG93SW5FcnA6IGFueSwgZm9ybU5hbWU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vZmllbGRzP2J1c2luZXNzSWQ9JHtiSWR9JnN0YXR1cz10cnVlJnNob3dJbkZvcm09JHtzaG93SW5FcnB9JmlzUGFnaW5hdGlvbj1mYWxzZSZmaWVsZENhdGVnb3J5PSR7Zm9ybU5hbWV9YFxuICAgIClcbiAgfVxuXG4gIGdldEFjdGl2ZVN1YnNjcmlwdGlvbkZvckZlZVN0cnVjdHVyZShidXNpbmVzc0lkOiBhbnksIGdyYWRlSWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vc3Vic2NyaXB0aW9uL3BsYW4vbGlzdD9idXNpbmVzc0lkPSR7YnVzaW5lc3NJZH0mZ3JhZGVJZD0ke2dyYWRlSWR9JnN0YXR1cz10cnVlJmlzRGVsZXRlZD1mYWxzZWBcbiAgICApXG4gIH1cblxuICBjcmVhdGVBZG1pc3Npb24ocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgdGhpcy5DTUlTX1VSTCArIGBjcm0vcmVnaXN0cmF0aW9uL2FkbWlzc2lvbj9yZWdpc3RyYXRpb25JZD0ke3BheWxvYWQ/LnJlZ2lzdHJhdGlvbklkIHx8ICcnfWAsIHBheWxvYWRcbiAgICApXG4gIH1cblxuICBjcmVhdGVQYXltZW50TGluayhkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vYWRtaXNzaW9uL3YyL3BheW1lbnQ/aXNGcm9tV2ViPXRydWVgLCBkYXRhXG4gICAgKVxuICB9XG5cbiAgY3JlYXRlUmVnaXN0cmF0aW9uRm9yUGF5bWVudChwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9yZWdpc3RyYXRpb24vcmVnaXN0cmF0aW9uL3BheW1lbnRgLCBwYXlsb2FkXG4gICAgKVxuICB9XG5cblxuICBnZXRTdWJzY3JpcHRpb25Gb3JGZWVTdHJ1Y3R1cmUoZ3JhZGVJZDogYW55KSB7XG4gICAgY29uc3QgYnVzaW5lc3NJZCA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3N1YnNjcmlwdGlvbi9wbGFuL2xpc3Q/YnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9JmdyYWRlSWQ9JHtncmFkZUlkfWBcbiAgICApXG4gIH1cblxuICBnZXRGZWVTdHJ1Y3R1cmUocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9mZWUvc3RydWN0dXJlYCwgcGF5bG9hZFxuICAgIClcbiAgfVxuXG4gIG5ld0ZlZVN0cnVjdHVyZUdldExpc3QoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9mZWUvc3RydWN0dXJlL3YyL2ZpbHRlcmAsIGRhdGFcbiAgICApXG4gIH1cblxuICBnZXRBbGxEb2N1bWVudChwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL21hc3Rlci9kb2N1bWVudFR5cGUvZmlsdGVyYCwgcGF5bG9hZClcbiAgfVxuXG4gIGdldExlYWRCeUlkKGxlYWRJZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICB0aGlzLkNNSVNfVVJMICsgYGNybS9sZWFkcy9nZXQtb25lP2xlYWRJZD0ke2xlYWRJZH1gXG4gICAgKVxuICB9XG5cbiAgZ2V0UmVnaXN0cmF0aW9uTGlzdChwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcbiAgICAgIHRoaXMuQ01JU19VUkwgKyBgY3JtL3JlZ2lzdHJhdGlvbi9nZXRBbGxgLCBwYXlsb2FkXG4gICAgKVxuICB9XG5cbiAgZ2V0QWxsQ29tcG9uZW50Q2F0ZWdvcmllcygpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgYWRtaW4vbWFzdGVyL3RlbXBsYXRlL2NhdGVnb3J5L2FsbGBcbiAgICApXG4gIH1cblxuICBwcml2YXRlIHNhZmVQYXJzZTxUPihyYXc6IHN0cmluZyB8IG51bGwpOiBUIHwgbnVsbCB7XG4gICAgaWYgKCFyYXcpIHJldHVybiBudWxsO1xuICAgIHRyeSB7IHJldHVybiBKU09OLnBhcnNlKHJhdykgYXMgVDsgfSBjYXRjaCB7IHJldHVybiBudWxsOyB9XG4gIH1cblxuICBnZXRUZW1wbGF0ZSgpIHtcbiAgICBjb25zdCBiRGV0YWlsc1JhdyA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdiRGV0YWlscycpO1xuICAgIGNvbnN0IGRldGFpbHMgPSB0aGlzLnNhZmVQYXJzZTx7IHRlbXBsYXRlSWQ/OiBzdHJpbmcgfT4oYkRldGFpbHNSYXcpO1xuXG4gICAgLy8gZmFsbGJhY2sgc291cmNlXG4gICAgY29uc3Qgd2Vic2l0ZURhdGFSYXcgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnd2Vic2l0ZURhdGEnKTtcbiAgICBjb25zdCB3ZWJzaXRlRGF0YSA9IHRoaXMuc2FmZVBhcnNlPHsgaG9tZVBhZ2VJZD86IHN0cmluZyB9Pih3ZWJzaXRlRGF0YVJhdyk7XG5cbiAgICAvLyBwcmVmZXIgdGVtcGxhdGVJZCBmcm9tIGJEZXRhaWxzOyBlbHNlIGZhbGxiYWNrIHRvIHdlYnNpdGVEYXRhLmhvbWVQYWdlSWRcbiAgICBjb25zdCB0ZW1wbGF0ZUlkID0gKGRldGFpbHM/LnRlbXBsYXRlSWQgPz8gd2Vic2l0ZURhdGE/LmhvbWVQYWdlSWQgPz8gJycpLnRvU3RyaW5nKCk7XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYGJ1c2luZXNzL3YzL3dlYnNpdGUvJHt0ZW1wbGF0ZUlkfS9wYWdlcy9saXN0YCk7XG4gIH1cblxuXG4gIGdldEVjb21tZXJjZUNvbmZpZ3MoKSB7XG4gICAgY29uc3QgYnVzaW5lc3NJZCA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJykgPz8gXCIxZjA3Y2QwOS1jZjYxLTYwMDgtOTg1NC0wNTRiOThhMTYyN2FcIjtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2Vjb21tZXJjZS9jb25maWcvYWxsP2J1c2luZXNzSWQ9JHtidXNpbmVzc0lkfWBcbiAgICApO1xuICB9XG5cbiAgcG9zdFZpZGVvQ2FsbERldGFpbHMocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvZWNvbW1lcmNlL2NvbmZpZy92aWRlby1jYWxsYCwgcGF5bG9hZFxuICAgIClcbiAgfVxuXG4gIGdldFN0b3JlTG9jYXRvckRldGFpbHMocGluY29kZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9zdG9yZS9uZWFyYnk/cGluY29kZT0ke3BpbmNvZGV9JmJ1c2luZXNzSWQ9JHt0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpfWBcbiAgICApXG4gIH1cblxuICBzYXZlSW1hZ2VzVG9CdXNpbmVzc0xpYnJhcnkobWVkaWFSZXF1ZXN0OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGFkbWluL2xpYnJhcnkvaW1hZ2UvbGlicmFyeS9zYXZlYCxcbiAgICAgIG1lZGlhUmVxdWVzdFxuICAgICk7XG4gIH1cblxuICByZWdlbmVyYXRlVGV4dChyZXF1ZXN0OiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGFkbWluL2NvbnRlbnQvc3VnZ2VzdC92Mi93ZWJzaXRlL2luZGl2aWR1YWxgLCByZXF1ZXN0XG4gICAgKVxuICB9XG4gIGdldENhdGVnb3JpZXNIZWFkZXJEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvcHJvZHVjdC8ke3RoaXMuc3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyl9L2hlYWRlcnNgXG4gICAgKVxuICB9XG4gIGdldEFsbFN0b3JlcyhwYXlsb2FkOiBhbnkpIHtcbiAgICBsZXQgdXJsID0gJydcbiAgICBpZiAocGF5bG9hZD8ucGluY29kZSAmJiBwYXlsb2FkLnBpbmNvZGUudG9TdHJpbmcoKS5sZW5ndGggPT0gNikge1xuICAgICAgdXJsID0gdXJsICsgYCAmcGluY29kZT0ke3BheWxvYWQucGluY29kZX1gXG4gICAgfVxuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvc3RvcmUvZ2V0L3YyP2J1c2luZXNzSWQ9JHtwYXlsb2FkLmJ1c2luZXNzSWR9JHt1cmx9YCwgJydcbiAgICApXG4gIH1cblxuICBnZXRBbGxBcHBvaW50bWVudFNlcnZpY2UocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXG4gICAgICB0aGlzLkFQUE9JTlRNRU5UX1VSTCArICdzZXJ2aWNlL2xpc3QnLCBwYXlsb2FkXG4gICAgKVxuICB9XG5cbiAgZ2V0QWxsU3RhZmYocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYHN0YWZmL3N0YWZmL3N0b3JlLXN0YWZmLWxpc3Q/c2VydmljZUlkPSR7cGF5bG9hZC5zZXJ2aWNlSWR9JnN0b3JlSWQ9JHtwYXlsb2FkLnN0b3JlSWR9JmJ1c2luZXNzSWQ9JHtwYXlsb2FkLmJ1c2luZXNzSWR9YFxuICAgIClcbiAgfVxuXG4gIGdldFN0b3JlQnlJZChzdG9yZUlkOiBzdHJpbmcpIHtcbiAgICBsZXQgcGF5bG9hZCA9IHtcbiAgICAgIHN0b3JlSWQ6IHN0b3JlSWQsXG4gICAgICBidXNpbmVzc0lkOiB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpID8/IFwiXCIsXG4gICAgICBwYWdlTm86IDAsXG4gICAgICBwYWdlU2l6ZTogMTAwMFxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3N0b3JlL2dldGAsIHBheWxvYWQpXG4gIH1cbiAgcG9zdE5ld3NMZXR0ZXIoZW1haWw6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL2Vjb21tZXJjZS9jb25maWcvcmVnaXN0ZXJlZC9uZXdzbGV0dGVyP2VtYWlsPSR7ZW1haWx9JmJ1c2luZXNzSWQ9JHt0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpfWAsICcnXG4gICAgKVxuICB9XG4gIGFkZFJldmlld1RvUHJvZHVjdChwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2FkZC9yZXZpZXc/b3JkZXJJZD0ke3BheWxvYWQub3JkZXJJZH1gLCBwYXlsb2FkXG4gICAgKVxuICB9XG5cbiAgZ2V0QWxsU3RvcmVzT3JyYShwYWdlTm86IGFueSwgc2l6ZTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgaHR0cHM6Ly9zdGFnZWFwaS1vcnJhLmxldHNtb2JpbGl0eS5jb20vc3RvcmU/cGFnZU5vPSR7cGFnZU5vfSZzaXplPSR7c2l6ZX1gXG4gICAgKVxuICB9XG5cbiAgZ2V0c3RhZmZCeVN0b3JlSWQoc3RvcmVJZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgaHR0cHM6Ly9zdGFnZWFwaS1vcnJhLmxldHNtb2JpbGl0eS5jb20vc3RhZmYvZ2V0LyR7c3RvcmVJZH1gXG4gICAgKVxuICB9XG5cblxuICBnZXRBbGxTY2hlbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgaHR0cHM6Ly9zdGFnZWFwaS1vcnJhLmxldHNtb2JpbGl0eS5jb20vc2NoZW1lL2dldEFsbFNjaGVtZXMvZGFzaGJvYXJkYFxuICAgIClcbiAgfVxuXG4gIGdldEFsbFN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL3N0YXRlL2dldEFsbGBcbiAgICApXG4gIH1cblxuICBnZXRDaXR5QnlTdGF0ZUJ5cGFnaW5hdGVkKHN0YXRlSWQ6IGFueSwgcGFnZU5vOiBhbnksIHNpemU6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KFxuICAgICAgYGh0dHBzOi8vc3RhZ2VhcGktb3JyYS5sZXRzbW9iaWxpdHkuY29tL2NpdHkvZ2V0QnlTdGF0ZT9zdGF0ZUlkPSR7c3RhdGVJZH0mcGFnZU5vPSR7cGFnZU5vfSZzaXplPSR7c2l6ZX1gXG4gICAgKVxuICB9XG5cbiAgZ2V0U3RvcmVCeVNsYWIoZGF0YTogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXG4gICAgICBgaHR0cHM6Ly9zdGFnZWFwaS1vcnJhLmxldHNtb2JpbGl0eS5jb20vc3RvcmUvZ2V0U2xhYmAsIGRhdGFcbiAgICApXG4gIH1cblxuICBhZGRUcmlhbEl0ZW0ocmVxdWVzdDogc3luY0l0ZW1Ub1NlcnZlckRCUmVxdWVzdCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvY2FydC92MmAsIHJlcXVlc3RcbiAgICApXG4gIH1cblxuICBjaGVja0l0ZW1BbHJlYWR5QWRkZWQocmVxdWVzdDogY2hlY2tJdGVtQWxyZWFkeUFkZGVkKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS9vcmRlci9jYXJ0L2NoZWNrL2l0ZW1gLCByZXF1ZXN0XG4gICAgKVxuICB9XG5cbiAgZGVsZXRlSXRlbUZyb21DYXJ0KHJlcXVlc3Q6IGNoZWNrSXRlbUFscmVhZHlBZGRlZCkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2UvY2FydC9yZW1vdmVgLCByZXF1ZXN0XG4gICAgKVxuICB9XG5cbiAgYm9va0FwcG9pbnRtZW50KHJlcXVlc3Q6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcbiAgICAgIHRoaXMuQkFTRV9VUkwgKyBgZWNvbW1lcmNlL3VzZXIvdHJ5LWhvbWVgLCByZXF1ZXN0XG4gICAgKVxuICB9XG5cbiAgY3JlYXRlRW5yb2xsbWVudFNjaGVtZShlbnJvbGxlbWVudDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgYCAgaHR0cHM6Ly9zdGFnZWFwaS1vcnJhLmxldHNtb2JpbGl0eS5jb20vZW5yb2xsbWVudC9jcmVhdGUvbmV3L3RlbXA/bWFudWFsUGF5PXRydWUmaXNXZWJSZXF1ZXN0PXRydWVcbmAsIGVucm9sbGVtZW50XG4gICAgKVxuICB9XG5cbiAgZ2V0SG9tZUFwcG9pbnRtZW50TGlzdCh1c2VySWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGJ1c2luZXNzSWQgPSB0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYklkJyk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL3RyeS1ob21lP3VzZXJJZD0ke3VzZXJJZH0mYnVzaW5lc3NJZD0ke2J1c2luZXNzSWR9YFxuICAgIClcbiAgfVxuXG4gIGdldEFsbE9ycmFTY2hlbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICAnaHR0cHM6Ly9zdGFnZWFwaS1vcnJhLmxldHNtb2JpbGl0eS5jb20vcGFzc0Jvb2svcmVkZW1wdGlvbi9hbW91bnQvY2hlY2s/dXNlckNvZGU9Q18wMDAzMTM4ODUnXG4gICAgKVxuICB9XG5cbiAgcmVkZWVtU2NoZW1lKHNjaGVtZTogc3RyaW5nLCBjYXJ0SWQ6IGFueSwgYWN0aW9uOiBib29sZWFuKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFxuICAgICAgdGhpcy5CQVNFX1VSTCArIGBlY29tbWVyY2Uvb3JkZXIvY2FydC9yZWRlbXB0aW9uP2NhcnRJZD0ke2NhcnRJZH0mcmVtb3ZlU2NoZW1lPSR7YWN0aW9ufWAsIHNjaGVtZVxuICAgIClcbiAgfVxuXG4gIGdldFJldmlld3NCeVByb2R1Y3RJZChwcm9kdWN0SWQ6IHN0cmluZywgcGFnZU51bWJlcjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoXG4gICAgICB0aGlzLkJBU0VfVVJMICsgYGVjb21tZXJjZS91c2VyL2ZpbHRlci9yZXZpZXdzP3Byb2R1Y3RJZD0ke3Byb2R1Y3RJZH0mcGFnZU51bWJlcj0ke3BhZ2VOdW1iZXJ9JnBhZ2VTaXplPTNgLCB7fVxuICAgIClcbiAgfVxuICBnZXRGaWVsZHNUb0Rpc3BsYXkoZmllbGRzTGlzdDogYW55W10pIHtcbiAgICBsZXQgbWFwOiBhbnkgPSB7fTtcblxuICAgIGZvciAobGV0IGZpZWxkIG9mIGZpZWxkc0xpc3QpIHtcbiAgICAgIGZvciAobGV0IGZpZWxkR3JvdXAgb2YgZmllbGQuZmllbGRHcm91cCkge1xuICAgICAgICBpZiAoIWZpZWxkR3JvdXAuZmllbGRTdGVwSWQpXG4gICAgICAgICAgY29udGludWU7XG5cbiAgICAgICAgbGV0IHN0ZXBOYW1lID0gZmllbGRHcm91cC5maWVsZFN0ZXBOYW1lID8gZmllbGRHcm91cC5maWVsZFN0ZXBOYW1lIDogJ3VuZGVmaW5lZCc7XG4gICAgICAgIGxldCBncm91cE5hbWUgPSBmaWVsZEdyb3VwLmZpZWxkR3JvdXBOYW1lO1xuXG4gICAgICAgIGlmICghbWFwW3N0ZXBOYW1lXSkge1xuICAgICAgICAgIG1hcFtzdGVwTmFtZV0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW1hcFtzdGVwTmFtZV1bZ3JvdXBOYW1lXSkge1xuICAgICAgICAgIG1hcFtzdGVwTmFtZV1bZ3JvdXBOYW1lXSA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkWydmaWVsZFN0ZXBJZCddID0gZmllbGRHcm91cC5maWVsZFN0ZXBJZDtcbiAgICAgICAgZmllbGRbJ2ZpZWxkR3JvdXBJZCddID0gZmllbGRHcm91cC5maWVsZEdyb3VwSWQ7XG5cbiAgICAgICAgY29uc3QgbmV3RmllbGQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGZpZWxkKSk7XG4gICAgICAgIG1hcFtzdGVwTmFtZV1bZ3JvdXBOYW1lXS5wdXNoKG5ld0ZpZWxkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWFwO1xuICB9XG5cbiAgZ2V0Qm9va2luZ1Nsb3RzKHBheWxvYWQ6IGFueSkge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KHRoaXMuQVBQT0lOVE1FTlRfVVJMICsgJ2Jvb2tpbmcvYXZhaWxhYmxlLXNsb3RzJywgcGF5bG9hZCk7XG4gIH1cblxuICBib29rQXBwb2ludG1lbnRWMihwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5BUFBPSU5UTUVOVF9VUkwgKyAnYm9va2luZycsIHBheWxvYWQpO1xuICB9XG4gIHBheW1lbnRGb3JBcHBvaW50bWVudChwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5BUFBPSU5UTUVOVF9VUkwgKyAncGF5bWVudC90b2tlbicsIHBheWxvYWQpO1xuICB9XG4gIGdlbmVyYXRlVG9rZW4oYklkOiBhbnksIHVzZXJJZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuUEFTU0JPT0tfVVJMICsgYGV4dC9jb25uZWN0L3NpbXBvL3Rva2VuP2J1c2luZXNzSWQ9JHtiSWR9JnVzZXJJZD0ke3VzZXJJZH0mdXNlclR5cGU9RVhURVJOQUxfVVNFUmAsIHt9KTtcbiAgfVxuICBnZXRBbGxFbnJvbGxlZFNjaGVtZXMocGF5bG9hZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5QQVNTQk9PS19VUkwgKyAnZXh0L2Nvbm5lY3Qvc2ltcG8vc2NoZW1lL2xpc3QnLCBwYXlsb2FkKVxuICB9XG4gIGVucm9sbFNjaGVtZShwYXlsb2FkOiBhbnksIGNoZWNrQ2hhcmdlczogYm9vbGVhbikge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy5nZXRUb2tlbigpO1xuICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxuICAgIH0pO1xuICAgIGlmIChjaGVja0NoYXJnZXMpIHtcbiAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdCh0aGlzLlBBU1NCT09LX1VSTCArICdwYXNzYm9vay9jYXJ0L2luaXRpYXRlL3BheW1lbnQ/bWFudWFsUGF5PXRydWUnLCBwYXlsb2FkLCB7IGhlYWRlcnM6IGhlYWRlcnMgfSlcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5QQVNTQk9PS19VUkwgKyAncGFzc2Jvb2svaW5pdGlhdGUvcGF5bWVudD9tYW51YWxQYXk9dHJ1ZScsIHBheWxvYWQsIHsgaGVhZGVyczogaGVhZGVycyB9KVxuICAgIH1cbiAgfVxuICBnZXRCZW5lZml0U2xhYihwYXNzYm9va0lkPzogYW55KSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuUEFTU0JPT0tfVVJMICsgYHBhc3Nib29rL2JlbmVmaXQvcGVyY2VudGFnZXM/cGFzc2Jvb2tJZD0ke3Bhc3Nib29rSWR9YCwge30sIHsgaGVhZGVyczogaGVhZGVycyB9KVxuICB9XG4gIGdldEFsbFN0YWZmTGlzdCgpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldCh0aGlzLkJBU0VfVVJMICsgYHN0YWZmL3N0YWZmL2xpc3QvJHt0aGlzLnN0b3JhZ2UuZ2V0SXRlbSgnYnVzaW5lc3NJZCcpfT9pc1BhZ2luYXRpb249ZmFsc2VgKVxuICB9XG4gIHJlcXVlc3RSZWRlZW1wdGlvbihwYXNzYm9va0lkOiBhbnkpIHtcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuZ2V0VG9rZW4oKTtcbiAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcbiAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dCh0aGlzLlBBU1NCT09LX1VSTCArIGBwYXNzYm9vay9yZXF1ZXN0L3JlZGVtcHRpb24/cGFzc0Jvb2tJZD0ke3Bhc3Nib29rSWR9YCwge30sIHsgaGVhZGVyczogaGVhZGVycyB9KVxuICB9XG4gIFBhc3Nib29rQXBwU3RhdHVzKGJJZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5CQVNFX1VSTCArIGBhcHAvYXBwL2NoZWNrLWFwcD9idXNpbmVzc0lkPSR7YklkfSZhcHBOYW1lPVBhc3Nib29rYClcbiAgfVxuICBnZXRBbGxQYXNzYm9va0R1ZXMoYklkOiBhbnksIHVzZXJJZDogYW55KSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5QQVNTQk9PS19VUkwgKyBgcGFzc2Jvb2svcGF5bWVudC9kdWVzP3BhZ2U9MCZzaXplPTEwMDAmYnVzaW5lc3NJZD0ke2JJZH0mdXNlcklkPSR7dXNlcklkfWAsIHsgaGVhZGVyczogaGVhZGVycyB9KVxuICB9XG4gIGdldFRva2VuKCkge1xuICAgIGxldCB0b2tlbiA9IHRoaXMuY29va2llU2VydmljZS5nZXQoJ3Bhc3NCb29rVG9rZW4nKVxuICAgIHJldHVybiB0b2tlbjtcbiAgfVxuICBnZXRBbGxUcmFuc2FjdGlvbnMocGF5bG9hZDogYW55KSB7XG4gICAgY29uc3QgdG9rZW4gPSB0aGlzLmdldFRva2VuKCk7XG4gICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XG4gICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQodGhpcy5QQVNTQk9PS19VUkwgKyBgZGFzaGJvYXJkL3YzL3RyYW5zYWN0aW9ucy9wYWdlYCwgcGF5bG9hZCwgeyBoZWFkZXJzOiBoZWFkZXJzIH0pXG4gIH1cbiAgZ2V0U2NoZW1lRGV0YWlscyhzY2hlbWVJZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KHRoaXMuUEFTU0JPT0tfVVJMICsgYGV4dC9jb25uZWN0L3NpbXBvL2dldC9zY2hlbWU/aWQ9JHtzY2hlbWVJZH1gLCB7fSlcbiAgfVxuXG4gIGdldE1ldGFsUHJpY2Uoc3RvcmVJZDogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodGhpcy5QQVNTQk9PS19VUkwgKyBgZXh0L2Nvbm5lY3Qvc2ltcG8vbWV0YWwvcHJpY2VzP2lkPSR7c3RvcmVJZH1gKVxuICB9XG5cbiAgY3JlYXRlTGVhZChwYXlsb2FkOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5CQVNFX1VSTCArIGBidXNpbmVzcy9jb250YWN0YCwgcGF5bG9hZClcbiAgfVxufVxuIl19
@@ -21,4 +21,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
21
21
  standalone: true
22
22
  }]
23
23
  }], ctorParameters: () => [{ type: i1.DomSanitizer }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRpemVIdG1sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9zYW5pdGl6ZUh0bWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQU9wRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLFlBQW9CLFVBQXVCO1FBQXZCLGVBQVUsR0FBVixVQUFVLENBQWE7SUFDM0MsQ0FBQztJQUVELFNBQVMsQ0FBQyxDQUFRO1FBQ2hCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLE9BQU8sRUFBRSxDQUFDLENBQUUsK0RBQStEO1FBQzdFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQzsrR0FWVSxnQkFBZ0I7NkdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFKNUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsY0FBYztvQkFDcEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuXHJcbkBQaXBlKHtcclxuICBuYW1lOiAnc2FuaXRpemVIdG1sJyxcclxuICBzdGFuZGFsb25lOiB0cnVlXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTYW5pdGl6ZUh0bWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3Nhbml0aXplcjpEb21TYW5pdGl6ZXIpIHtcclxuICB9XHJcblxyXG4gIHRyYW5zZm9ybSh2OnN0cmluZyk6U2FmZUh0bWwge1xyXG4gICAgaWYgKCF2KSB7XHJcbiAgICAgIHJldHVybiAnJzsgIC8vIFJldHVybiBhbiBlbXB0eSBzdHJpbmcgaWYgdmFsdWUgaXMgbnVsbCwgdW5kZWZpbmVkLCBvciBlbXB0eVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX3Nhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbCh2KTtcclxuICB9XHJcbn1cclxuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FuaXRpemVIdG1sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9zYW5pdGl6ZUh0bWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBaUIsTUFBTSxlQUFlLENBQUM7OztBQU9wRCxNQUFNLE9BQU8sZ0JBQWdCO0lBRTNCLFlBQW9CLFVBQXVCO1FBQXZCLGVBQVUsR0FBVixVQUFVLENBQWE7SUFDM0MsQ0FBQztJQUVELFNBQVMsQ0FBQyxDQUFRO1FBQ2hCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNQLE9BQU8sRUFBRSxDQUFDLENBQUUsK0RBQStEO1FBQzdFLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQzsrR0FWVSxnQkFBZ0I7NkdBQWhCLGdCQUFnQjs7NEZBQWhCLGdCQUFnQjtrQkFKNUIsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsY0FBYztvQkFDcEIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5cbkBQaXBlKHtcbiAgbmFtZTogJ3Nhbml0aXplSHRtbCcsXG4gIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgU2FuaXRpemVIdG1sUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3Nhbml0aXplcjpEb21TYW5pdGl6ZXIpIHtcbiAgfVxuXG4gIHRyYW5zZm9ybSh2OnN0cmluZyk6U2FmZUh0bWwge1xuICAgIGlmICghdikge1xuICAgICAgcmV0dXJuICcnOyAgLy8gUmV0dXJuIGFuIGVtcHR5IHN0cmluZyBpZiB2YWx1ZSBpcyBudWxsLCB1bmRlZmluZWQsIG9yIGVtcHR5XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwodik7XG4gIH1cbn1cbiJdfQ==
@@ -250,4 +250,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
250
250
  type: Inject,
251
251
  args: [PLATFORM_ID]
252
252
  }] }] });
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUtuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUtwRCxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQ21CLFlBQTJCLEVBQzNCLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ2pDLE1BQWMsRUFDTyxVQUFrQjtRQUo5QixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUMzQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ08sZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQVd6QyxtQkFBYyxHQUFXLENBQUMsQ0FBQztRQVFuQyxpQkFBWSxHQUFXLE1BQU0sQ0FBQztRQUM5QixvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUM1Qix1QkFBa0IsR0FBVyxXQUFXLENBQUM7UUFDekMsNEJBQXVCLEdBQVcsZ0JBQWdCLENBQUM7UUFDbkQsNEJBQXVCLEdBQVcsWUFBWSxDQUFBO1FBQzlDLHVCQUFrQixHQUFXLE1BQU0sQ0FBQztRQUdwQyxzQkFBaUIsR0FBMEIsSUFBSSxDQUFDO1FBQ2hELDJCQUFzQixHQUEwQixJQUFJLENBQUM7UUFDckQsc0JBQWlCLEdBQTBCLElBQUksQ0FBQztR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O21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBUUksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9yZGVyZWRJdGVtcyB9IGZyb20gJy4uL2Vjb21tZXJjZS9zdHlsZXMvT3JkZXJlZEl0ZW1zLm1vZGFsJztcclxuaW1wb3J0IHsgVXNlciB9IGZyb20gJy4uL2Vjb21tZXJjZS9zdHlsZXMvdXNlci5tb2RhbCc7XHJcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuL2V2ZW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XHJcbmltcG9ydCB7IGZvcmtKb2luIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDYXJ0LCBjYXJ0VHlwZSB9IGZyb20gJy4vLi4vZWNvbW1lcmNlL3N0eWxlcy9jYXJ0Lm1vZGFsJztcclxuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSW5qZWN0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29va2llU2VydmljZTogQ29va2llU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzdFNlcnZpY2U6IFJlc3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0XHJcbiAgKSB7XHJcbiAgICB0aGlzLmNyZWF0ZURhdGFCYXNlKCk7XHJcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9IHRoaXMuZ2V0VXNlcigpO1xyXG4gICAgaWYgKCEhdXNlckRldGFpbHMpIHtcclxuICAgICAgdGhpcy5yZXN0U2VydmljZS5nZXRVc2VySW5mbyh1c2VyRGV0YWlscy51c2VySWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2V0VXNlcihyZXNwb25zZS5kYXRhKTtcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG90YWxDYXJ0SXRlbXM6IG51bWJlciA9IDA7XHJcbiAgZ2V0IGdldFRvdGFsQ2FydEl0ZW1zKCkge1xyXG4gICAgaWYgKHRoaXMudG90YWxDYXJ0SXRlbXMgPCAwKVxyXG4gICAgICB0aGlzLnRvdGFsQ2FydEl0ZW1zID0gMDtcclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dCYWdJY29uLmVtaXQodGhpcy50b3RhbENhcnRJdGVtcyA+IDApO1xyXG4gICAgcmV0dXJuIHRoaXMudG90YWxDYXJ0SXRlbXM7XHJcbiAgfVxyXG5cclxuICBkYXRhYmFzZU5hbWU6IHN0cmluZyA9IFwiVVNFUlwiO1xyXG4gIGRhdGFiYXNlVmVyc2lvbjogbnVtYmVyID0gMTtcclxuICBjYXJ0Q29sbGVjdGlvbk5hbWU6IHN0cmluZyA9IFwiVVNFUl9DQVJUXCI7XHJcbiAgZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWU6IHN0cmluZyA9IFwiVVNFUl9GQVZPVVJJVEVcIjtcclxuICB0cmlhbENhcnRDb2xsZWN0aW9uTmFtZTogc3RyaW5nID0gJ1RSSUFMX0NBUlQnXHJcbiAgdXNlckNvbGxlY3Rpb25OYW1lOiBzdHJpbmcgPSBcIlVTRVJcIjtcclxuICBkYXRhYmFzZSE6IElEQkRhdGFiYXNlO1xyXG5cclxuICBjYXJ0Q29sbGVjdGlvblJlZjogSURCT2JqZWN0U3RvcmUgfCBudWxsID0gbnVsbDtcclxuICBmYXZvdXJpdGVDb2xsZWN0aW9uUmVmOiBJREJPYmplY3RTdG9yZSB8IG51bGwgPSBudWxsO1xyXG4gIHVzZXJDb2xsZWN0aW9uUmVmOiBJREJPYmplY3RTdG9yZSB8IG51bGwgPSBudWxsO1xyXG4gIHRyaWFsQ2FydENvbGxlY3Rpb25SZWY6IElEQk9iamVjdFN0b3JlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGFzeW5jIGNyZWF0ZURhdGFCYXNlKCkge1xyXG4gIC8vIFNTUi1zYWZlIEluZGV4ZWREQiBpbml0aWFsaXphdGlvblxyXG4gIGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmIHdpbmRvdy5pbmRleGVkREIpIHtcclxuICAgIGNvbnN0IHJlcXVlc3Q6IElEQk9wZW5EQlJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4odGhpcy5kYXRhYmFzZU5hbWUsIDEpO1xyXG5cclxuICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLmVtaXQodHJ1ZSk7XHJcblxyXG4gICAgcmVxdWVzdC5vbmVycm9yID0gKCkgPT4geyBcclxuICAgICAgY29uc29sZS5lcnJvcignW0luZGV4ZWREQl0gRmFpbGVkIHRvIG9wZW4gZGF0YWJhc2UnKTtcclxuICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uZW1pdChmYWxzZSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXN5bmMgKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0YWJhc2UgPSAoZXZlbnQudGFyZ2V0IGFzIElEQk9wZW5EQlJlcXVlc3QpLnJlc3VsdDtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgdXNlckNhcnRSZXF1ZXN0ID0gYXdhaXQgdGhpcy5nZXRVc2VyQ2FydCgpO1xyXG4gICAgICAgIHVzZXJDYXJ0UmVxdWVzdC5vbnN1Y2Nlc3MgPSAodXNlckNhcnRSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsQ2FydEl0ZW1zID0gdXNlckNhcnRSZXNwb25zZS50YXJnZXQucmVzdWx0Lmxlbmd0aDtcclxuXHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHRoaXMuYWRkQWxsUHJvZHVjdHNUb0NhcnQodXNlckNhcnRSZXNwb25zZS50YXJnZXQucmVzdWx0KTtcclxuICAgICAgICAgICAgcmVzcG9uc2Uub25jb21wbGV0ZSA9ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgcmVzcG9uc2Uub25lcnJvciA9ICgpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5lbWl0KGZhbHNlKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbjogYW55KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLmVtaXQoZmFsc2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLmVtaXQoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHJlcXVlc3Qub251cGdyYWRlbmVlZGVkID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgIHRoaXMuZGF0YWJhc2UgPSAoZXZlbnQudGFyZ2V0IGFzIElEQk9wZW5EQlJlcXVlc3QpLnJlc3VsdDtcclxuICAgICAgdGhpcy5jYXJ0Q29sbGVjdGlvblJlZiA9IHRoaXMuZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUodGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUsIHsga2V5UGF0aDogXCJ2YXJpZW50SWRcIiB9KTtcclxuICAgICAgdGhpcy50cmlhbENhcnRDb2xsZWN0aW9uUmVmID0gdGhpcy5kYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSh0aGlzLnRyaWFsQ2FydENvbGxlY3Rpb25OYW1lLCB7IGtleVBhdGg6IFwidmFyaWVudElkXCIgfSk7XHJcbiAgICAgIHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvblJlZiA9IHRoaXMuZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUodGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSwgeyBrZXlQYXRoOiBcInZhcmllbnRJZFwiIH0pO1xyXG4gICAgICB0aGlzLnVzZXJDb2xsZWN0aW9uUmVmID0gdGhpcy5kYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSh0aGlzLnVzZXJDb2xsZWN0aW9uTmFtZSwgeyBrZXlQYXRoOiBcInVzZXJJZFwiIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgfSBlbHNlIHtcclxuICAgIC8vIFNTUiBtb2RlIOKAlCBza2lwIEluZGV4ZWREQlxyXG4gICAgY29uc29sZS53YXJuKCdbU1NSXSBJbmRleGVkREIgbm90IGF2YWlsYWJsZSwgY3JlYXRlRGF0YUJhc2UoKSBza2lwcGVkLicpO1xyXG4gIH1cclxufVxyXG5cclxuICBzZXRUb2tlbih0b2tlbjogYW55KSB7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KFwicGFzc0Jvb2tUb2tlblwiLCB0b2tlbilcclxuICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKFwidG9rZW5cIiwgdG9rZW4pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9rZW4oKSB7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCdwYXNzQm9va1Rva2VuJylcclxuICB9XHJcblxyXG4gIHVwZGF0ZUFsbERhdGEoKSB7XHJcbiAgICBpZiAodGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdjYXJ0JykpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICBjb25zdCB1c2VyRGV0YWlscyA9IHRoaXMuZ2V0VXNlcigpO1xyXG4gICAgaWYgKCEhdXNlckRldGFpbHMpIHtcclxuICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uZW1pdCh0cnVlKTtcclxuICAgICAgY29uc3QgcmVxdWVzdCA9IGZvcmtKb2luKFtcclxuICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJdGVtcyh1c2VyRGV0YWlscy51c2VySWQsIFwiQ0FSVFwiKSxcclxuICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJdGVtcyh1c2VyRGV0YWlscy51c2VySWQsIFwiV0lTSExJU1RcIilcclxuICAgICAgXSk7XHJcbiAgICAgIHJlcXVlc3Quc3Vic2NyaWJlKChjYXJ0UmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHVzZXJEZXRhaWxzID0gdGhpcy5nZXRVc2VyKCkgYXMgVXNlcjtcclxuICAgICAgICBjb25zdCB1c2VyQ2FydDogQ2FydCA9IGNhcnRSZXNwb25zZT8uWzBdLmRhdGFbMF0gPyBjYXJ0UmVzcG9uc2U/LlswXS5kYXRhWzBdIGFzIENhcnQgOiBuZXcgQ2FydCh7ICdjYXJ0VHlwZSc6IGNhcnRUeXBlLkNBUlQsICd1c2VyRGV0YWlscyc6IHVzZXJEZXRhaWxzLCAncGxhdGZvcm0nOiAnV0VCJyB9KTtcclxuXHJcbiAgICAgICAgaWYgKHVzZXJDYXJ0Py5jYXJ0SWQpXHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcImNhcnRJZFwiLCB1c2VyQ2FydD8uY2FydElkKTtcclxuICAgICAgICB0aGlzLmdldFVzZXJDYXJ0KCkudGhlbigodXNlckNhcnRSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdXNlckNhcnRSZXNwb25zZS5vbnN1Y2Nlc3MgPSAodXNlckNhcnRJbmRleERCOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdXNlckNhcnQub3JkZXJlZEl0ZW1zID0gdGhpcy5tZXJnZUFsbEl0ZW1zKHVzZXJDYXJ0SW5kZXhEQi50YXJnZXQucmVzdWx0ID8/IFtdLCB1c2VyQ2FydD8ub3JkZXJlZEl0ZW1zID8/IFtdKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuYWRkQWxsUHJvZHVjdHNUb0NhcnQodXNlckNhcnQub3JkZXJlZEl0ZW1zKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih1c2VyQ2FydCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgIGlmKHJlcz8uZGF0YT8uY2FydElkICYmICFsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY2FydElkJykpXHJcbiAgICAgICAgICAgIC8vICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2FydElkJywgcmVzLmRhdGEuY2FydElkKTtcclxuICAgICAgICAgICAgLy8gfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICBjb25zdCB1c2VyV2lzaGxpc3Q6IENhcnQgPSBjYXJ0UmVzcG9uc2U/LlsxXS5kYXRhIGFzIENhcnQ7XHJcbiAgICAgICAgaWYgKHVzZXJXaXNobGlzdC5jYXJ0SWQpXHJcbiAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIndpc2hsaXN0SWRcIiwgdXNlcldpc2hsaXN0LmNhcnRJZCk7XHJcbiAgICAgICAgdGhpcy5nZXRVc2VyV2hpc2hsaXN0KCkudGhlbigodXNlcldpc2hsaXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHVzZXJXaXNobGlzdFJlc3BvbnNlLm9uc3VjY2VzcyA9ICh1c2VyV2lzaGxpc3RJbmRleERCOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdXNlcldpc2hsaXN0Lm9yZGVyZWRJdGVtcyA9IFsuLi4odXNlcldpc2hsaXN0SW5kZXhEQi50YXJnZXQucmVzdWx0ID8/IFtdKSwgLi4uKHVzZXJXaXNobGlzdC5vcmRlcmVkSXRlbXMgPz8gW10pXTtcclxuICAgICAgICAgICAgdGhpcy5hZGRBbGxQcm9kdWN0VG9XaXNobGlzdCh1c2VyV2lzaGxpc3Qub3JkZXJlZEl0ZW1zKTtcclxuICAgICAgICAgICAgdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih1c2VyV2lzaGxpc3QpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLmVtaXQoZmFsc2UpO1xyXG4gICAgICB9KVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gdGhpcy5zdG9yZURhdGFUb0pTT04oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG1lcmdlQWxsSXRlbXModW5TeW5jZWRJdGVtOiBhbnlbXSwgc3luY2VkSXRlbTogYW55W10pIHtcclxuICAgIGZvciAobGV0IHByb2R1Y3Qgb2Ygc3luY2VkSXRlbSkge1xyXG4gICAgICBsZXQgaXRlbUZvdW5kID0gZmFsc2U7XHJcbiAgICAgIGZvciAobGV0IGNhcnRJdGVtIG9mIHVuU3luY2VkSXRlbSkge1xyXG4gICAgICAgIGlmIChjYXJ0SXRlbS52YXJpZW50SWQgPT09IHByb2R1Y3QudmFyaWVudElkKSB7XHJcbiAgICAgICAgICBpdGVtRm91bmQgPSB0cnVlO1xyXG4gICAgICAgICAgLy8gY2FydEl0ZW0ucXVhbnRpdHkgPSBwcm9kdWN0LnF1YW50aXR5O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoIWl0ZW1Gb3VuZCkge1xyXG4gICAgICAgIHVuU3luY2VkSXRlbS5wdXNoKHByb2R1Y3QpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdW5TeW5jZWRJdGVtO1xyXG4gIH1cclxuXHJcbiAgLy8gQ0FSVCBTRVJWSUNFXHJcbiAgYXN5bmMgZ2V0VXNlckNhcnQoKTogUHJvbWlzZTxJREJSZXF1ZXN0PE9yZGVyZWRJdGVtc1tdPj4ge1xyXG5cclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZT8udHJhbnNhY3Rpb24odGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUgPz8gXCJVU0VSX0NBUlRcIiwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICByZXR1cm4gYXdhaXQgdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUpLmdldEFsbCgpO1xyXG4gIH1cclxuXHJcbiAgYWRkUHJvZHVjdFRvQ2FydChwcm9kdWN0OiBPcmRlcmVkSXRlbXMpIHtcclxuXHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2U/LnRyYW5zYWN0aW9uKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lID8/IFwiVVNFUl9DQVJUXCIsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSkuZ2V0KHByb2R1Y3QudmFyaWVudElkKVxyXG4gICAgcmVzcG9uc2Uub25zdWNjZXNzID0gKGNhcnRSZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChjYXJ0UmVzcG9uc2UudGFyZ2V0LnJlc3VsdCkgeyB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMudG90YWxDYXJ0SXRlbXMgKz0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSkucHV0KHByb2R1Y3QpO1xyXG4gIH1cclxuXHJcbiAgYWRkQWxsUHJvZHVjdFRvV2lzaGxpc3QocHJvZHVjdHM6IE9yZGVyZWRJdGVtc1tdKTogSURCVHJhbnNhY3Rpb24ge1xyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlPy50cmFuc2FjdGlvbih0aGlzLmZhdm91cml0ZUNvbGxlY3Rpb25OYW1lID8/IFwiVVNFUl9GQVZPVVJJVEVcIiwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICBwcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSkucHV0KHByb2R1Y3QpO1xyXG4gICAgfSlcclxuICAgIHJldHVybiB0cmFuc2FjdGlvbjtcclxuICB9XHJcbiAgYWRkQWxsUHJvZHVjdHNUb0NhcnQocHJvZHVjdHM6IE9yZGVyZWRJdGVtc1tdKTogSURCVHJhbnNhY3Rpb24ge1xyXG5cclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZT8udHJhbnNhY3Rpb24odGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUgPz8gXCJVU0VSX0NBUlRcIiwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICBwcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUpLnB1dChwcm9kdWN0KTtcclxuICAgIH0pXHJcbiAgICByZXR1cm4gdHJhbnNhY3Rpb247XHJcbiAgfVxyXG4gIHJlbW92ZVByb2R1Y3RGcm9tQ2FydChwcm9kdWN0SWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy50b3RhbENhcnRJdGVtcyAtPSAxO1xyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlPy50cmFuc2FjdGlvbih0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSA/PyBcIlVTRVJfQ0FSVFwiLCBcInJlYWR3cml0ZVwiKTtcclxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSkuZGVsZXRlKHByb2R1Y3RJZCk7XHJcbiAgfVxyXG4gIGFzeW5jIGdldFByb2R1Y3RGcm9tQ2FydChwcm9kdWN0SWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlPy50cmFuc2FjdGlvbih0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSA/PyBcIlVTRVJfQ0FSVFwiLCBcInJlYWR3cml0ZVwiKTtcclxuICAgIHJldHVybiBhd2FpdCB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSkuZ2V0KHByb2R1Y3RJZCk7XHJcbiAgfVxyXG5cclxuICAvLyBXSVNITElTVCBTRVJWSUNFXHJcbiAgYXN5bmMgZ2V0VXNlcldoaXNobGlzdCgpOiBQcm9taXNlPElEQlJlcXVlc3Q8T3JkZXJlZEl0ZW1zW10+PiB7XHJcblxyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlLnRyYW5zYWN0aW9uKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIGF3YWl0IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUpLmdldEFsbCgpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0VHJpYWxDYXJ0KCk6IFByb21pc2U8SURCUmVxdWVzdDxPcmRlcmVkSXRlbXNbXT4+IHtcclxuXHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy50cmlhbENhcnRDb2xsZWN0aW9uTmFtZSwgXCJyZWFkd3JpdGVcIik7XHJcbiAgICByZXR1cm4gYXdhaXQgdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy50cmlhbENhcnRDb2xsZWN0aW9uTmFtZSkuZ2V0QWxsKCk7XHJcbiAgfVxyXG5cclxuICBhZGRQcm9kdWN0VG9XaXNobGlzdChwcm9kdWN0OiBPcmRlcmVkSXRlbXMpIHtcclxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZS50cmFuc2FjdGlvbih0aGlzLmZhdm91cml0ZUNvbGxlY3Rpb25OYW1lLCBcInJlYWR3cml0ZVwiKTtcclxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmZhdm91cml0ZUNvbGxlY3Rpb25OYW1lKS5wdXQocHJvZHVjdCk7XHJcbiAgfVxyXG4gIGFkZFByb2R1Y3RUb1RyaWFsKHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlLnRyYW5zYWN0aW9uKHRoaXMudHJpYWxDYXJ0Q29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMudHJpYWxDYXJ0Q29sbGVjdGlvbk5hbWUpLnB1dChwcm9kdWN0KTtcclxuICB9XHJcbiAgcmVtb3ZlUHJvZHVjdEZyb21XaXNobGlzdChwcm9kdWN0SWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlLnRyYW5zYWN0aW9uKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUpLmRlbGV0ZShwcm9kdWN0SWQpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJVc2VyQ2FydCgpIHtcclxuICAgIHRoaXMudG90YWxDYXJ0SXRlbXMgPSAwO1xyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlPy50cmFuc2FjdGlvbih0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSA/PyBcIlVTRVJfQ0FSVFwiLCBcInJlYWR3cml0ZVwiKTtcclxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSkuY2xlYXIoKTtcclxuICB9XHJcblxyXG4gIGNsZWFyVHJpYWxDYXJ0KCkge1xyXG4gICAgdGhpcy50b3RhbENhcnRJdGVtcyA9IDA7XHJcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2U/LnRyYW5zYWN0aW9uKHRoaXMudHJpYWxDYXJ0Q29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMudHJpYWxDYXJ0Q29sbGVjdGlvbk5hbWUpLmNsZWFyKCk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVQcm9kdWN0RnJvbVRyaWFsQ2FydChwcm9kdWN0SWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlLnRyYW5zYWN0aW9uKHRoaXMudHJpYWxDYXJ0Q29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xyXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMudHJpYWxDYXJ0Q29sbGVjdGlvbk5hbWUpLmRlbGV0ZShwcm9kdWN0SWQpO1xyXG4gIH1cclxuXHJcbiAgLy8gVVNFUiBTRVJWSUNFXHJcbiAgc2V0VXNlcih1c2VyOiBVc2VyKTogVXNlciB7XHJcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2Uuc2V0KFwidXNlclwiLCBKU09OLnN0cmluZ2lmeSh1c2VyID8/IFwie31cIiksIDcpO1xyXG4gICAgcmV0dXJuIHVzZXI7XHJcbiAgfVxyXG4gIGdldFVzZXIoKTogVXNlciB8IG51bGwge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdXNlcjogVXNlciA9IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChcInVzZXJcIikpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInBlcklkXCIsIHVzZXI/LnVzZXJJZCk7XHJcbiAgICAgIHJldHVybiB1c2VyO1xyXG4gICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7IH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUtuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRWhDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFbEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7OztBQUtwRCxNQUFNLE9BQU8scUJBQXFCO0lBRWhDLFlBQ21CLFlBQTJCLEVBQzNCLGFBQTRCLEVBQzVCLFdBQXdCLEVBQ2pDLE1BQWMsRUFDTyxVQUFrQjtRQUo5QixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQUMzQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ08sZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQVd6QyxtQkFBYyxHQUFXLENBQUMsQ0FBQztRQVFuQyxpQkFBWSxHQUFXLE1BQU0sQ0FBQztRQUM5QixvQkFBZSxHQUFXLENBQUMsQ0FBQztRQUM1Qix1QkFBa0IsR0FBVyxXQUFXLENBQUM7UUFDekMsNEJBQXVCLEdBQVcsZ0JBQWdCLENBQUM7UUFDbkQsNEJBQXVCLEdBQVcsWUFBWSxDQUFBO1FBQzlDLHVCQUFrQixHQUFXLE1BQU0sQ0FBQztRQUdwQyxzQkFBaUIsR0FBMEIsSUFBSSxDQUFDO1FBQ2hELDJCQUFzQixHQUEwQixJQUFJLENBQUM7UUFDckQsc0JBQWlCLEdBQTBCLElBQUksQ0FBQztR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O21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBUUksTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPcmRlcmVkSXRlbXMgfSBmcm9tICcuLi9lY29tbWVyY2Uvc3R5bGVzL09yZGVyZWRJdGVtcy5tb2RhbCc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vZWNvbW1lcmNlL3N0eWxlcy91c2VyLm1vZGFsJztcbmltcG9ydCB7IEV2ZW50c1NlcnZpY2UgfSBmcm9tICcuL2V2ZW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xuaW1wb3J0IHsgZm9ya0pvaW4gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2FydCwgY2FydFR5cGUgfSBmcm9tICcuLy4uL2Vjb21tZXJjZS9zdHlsZXMvY2FydC5tb2RhbCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEluamVjdCwgUExBVEZPUk1fSUQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGV2ZW50U2VydmljZTogRXZlbnRzU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvb2tpZVNlcnZpY2U6IENvb2tpZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXN0U2VydmljZTogUmVzdFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcbiAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdFxuICApIHtcbiAgICB0aGlzLmNyZWF0ZURhdGFCYXNlKCk7XG4gICAgY29uc3QgdXNlckRldGFpbHMgPSB0aGlzLmdldFVzZXIoKTtcbiAgICBpZiAoISF1c2VyRGV0YWlscykge1xuICAgICAgdGhpcy5yZXN0U2VydmljZS5nZXRVc2VySW5mbyh1c2VyRGV0YWlscy51c2VySWQpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnNldFVzZXIocmVzcG9uc2UuZGF0YSk7XG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdG90YWxDYXJ0SXRlbXM6IG51bWJlciA9IDA7XG4gIGdldCBnZXRUb3RhbENhcnRJdGVtcygpIHtcbiAgICBpZiAodGhpcy50b3RhbENhcnRJdGVtcyA8IDApXG4gICAgICB0aGlzLnRvdGFsQ2FydEl0ZW1zID0gMDtcbiAgICB0aGlzLmV2ZW50U2VydmljZS5zaG93QmFnSWNvbi5lbWl0KHRoaXMudG90YWxDYXJ0SXRlbXMgPiAwKTtcbiAgICByZXR1cm4gdGhpcy50b3RhbENhcnRJdGVtcztcbiAgfVxuXG4gIGRhdGFiYXNlTmFtZTogc3RyaW5nID0gXCJVU0VSXCI7XG4gIGRhdGFiYXNlVmVyc2lvbjogbnVtYmVyID0gMTtcbiAgY2FydENvbGxlY3Rpb25OYW1lOiBzdHJpbmcgPSBcIlVTRVJfQ0FSVFwiO1xuICBmYXZvdXJpdGVDb2xsZWN0aW9uTmFtZTogc3RyaW5nID0gXCJVU0VSX0ZBVk9VUklURVwiO1xuICB0cmlhbENhcnRDb2xsZWN0aW9uTmFtZTogc3RyaW5nID0gJ1RSSUFMX0NBUlQnXG4gIHVzZXJDb2xsZWN0aW9uTmFtZTogc3RyaW5nID0gXCJVU0VSXCI7XG4gIGRhdGFiYXNlITogSURCRGF0YWJhc2U7XG5cbiAgY2FydENvbGxlY3Rpb25SZWY6IElEQk9iamVjdFN0b3JlIHwgbnVsbCA9IG51bGw7XG4gIGZhdm91cml0ZUNvbGxlY3Rpb25SZWY6IElEQk9iamVjdFN0b3JlIHwgbnVsbCA9IG51bGw7XG4gIHVzZXJDb2xsZWN0aW9uUmVmOiBJREJPYmplY3RTdG9yZSB8IG51bGwgPSBudWxsO1xuICB0cmlhbENhcnRDb2xsZWN0aW9uUmVmOiBJREJPYmplY3RTdG9yZSB8IG51bGwgPSBudWxsO1xuXG4gIGFzeW5jIGNyZWF0ZURhdGFCYXNlKCkge1xuICAvLyBTU1Itc2FmZSBJbmRleGVkREIgaW5pdGlhbGl6YXRpb25cbiAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgJiYgd2luZG93LmluZGV4ZWREQikge1xuICAgIGNvbnN0IHJlcXVlc3Q6IElEQk9wZW5EQlJlcXVlc3QgPSB3aW5kb3cuaW5kZXhlZERCLm9wZW4odGhpcy5kYXRhYmFzZU5hbWUsIDEpO1xuXG4gICAgdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uZW1pdCh0cnVlKTtcblxuICAgIHJlcXVlc3Qub25lcnJvciA9ICgpID0+IHsgXG4gICAgICBjb25zb2xlLmVycm9yKCdbSW5kZXhlZERCXSBGYWlsZWQgdG8gb3BlbiBkYXRhYmFzZScpO1xuICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uZW1pdChmYWxzZSk7XG4gICAgfTtcblxuICAgIHJlcXVlc3Qub25zdWNjZXNzID0gYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICB0aGlzLmRhdGFiYXNlID0gKGV2ZW50LnRhcmdldCBhcyBJREJPcGVuREJSZXF1ZXN0KS5yZXN1bHQ7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHVzZXJDYXJ0UmVxdWVzdCA9IGF3YWl0IHRoaXMuZ2V0VXNlckNhcnQoKTtcbiAgICAgICAgdXNlckNhcnRSZXF1ZXN0Lm9uc3VjY2VzcyA9ICh1c2VyQ2FydFJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICB0aGlzLnRvdGFsQ2FydEl0ZW1zID0gdXNlckNhcnRSZXNwb25zZS50YXJnZXQucmVzdWx0Lmxlbmd0aDtcblxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHRoaXMuYWRkQWxsUHJvZHVjdHNUb0NhcnQodXNlckNhcnRSZXNwb25zZS50YXJnZXQucmVzdWx0KTtcbiAgICAgICAgICAgIHJlc3BvbnNlLm9uY29tcGxldGUgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHJlc3BvbnNlLm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9IGNhdGNoIChleGNlcHRpb246IGFueSkge1xuICAgICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uZW1pdChmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnNob3dMb2FkaW5nU2NyZWVuLmVtaXQoZmFsc2UpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXF1ZXN0Lm9udXBncmFkZW5lZWRlZCA9IChldmVudCkgPT4ge1xuICAgICAgdGhpcy5kYXRhYmFzZSA9IChldmVudC50YXJnZXQgYXMgSURCT3BlbkRCUmVxdWVzdCkucmVzdWx0O1xuICAgICAgdGhpcy5jYXJ0Q29sbGVjdGlvblJlZiA9IHRoaXMuZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUodGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUsIHsga2V5UGF0aDogXCJ2YXJpZW50SWRcIiB9KTtcbiAgICAgIHRoaXMudHJpYWxDYXJ0Q29sbGVjdGlvblJlZiA9IHRoaXMuZGF0YWJhc2UuY3JlYXRlT2JqZWN0U3RvcmUodGhpcy50cmlhbENhcnRDb2xsZWN0aW9uTmFtZSwgeyBrZXlQYXRoOiBcInZhcmllbnRJZFwiIH0pO1xuICAgICAgdGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uUmVmID0gdGhpcy5kYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSh0aGlzLmZhdm91cml0ZUNvbGxlY3Rpb25OYW1lLCB7IGtleVBhdGg6IFwidmFyaWVudElkXCIgfSk7XG4gICAgICB0aGlzLnVzZXJDb2xsZWN0aW9uUmVmID0gdGhpcy5kYXRhYmFzZS5jcmVhdGVPYmplY3RTdG9yZSh0aGlzLnVzZXJDb2xsZWN0aW9uTmFtZSwgeyBrZXlQYXRoOiBcInVzZXJJZFwiIH0pO1xuICAgIH07XG5cbiAgfSBlbHNlIHtcbiAgICAvLyBTU1IgbW9kZSDigJQgc2tpcCBJbmRleGVkREJcbiAgICBjb25zb2xlLndhcm4oJ1tTU1JdIEluZGV4ZWREQiBub3QgYXZhaWxhYmxlLCBjcmVhdGVEYXRhQmFzZSgpIHNraXBwZWQuJyk7XG4gIH1cbn1cblxuICBzZXRUb2tlbih0b2tlbjogYW55KSB7XG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChcInBhc3NCb29rVG9rZW5cIiwgdG9rZW4pXG4gICAgLy8gbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJ0b2tlblwiLCB0b2tlbik7XG4gIH1cblxuICBnZXRUb2tlbigpIHtcbiAgICB0aGlzLmNvb2tpZVNlcnZpY2UuZ2V0KCdwYXNzQm9va1Rva2VuJylcbiAgfVxuXG4gIHVwZGF0ZUFsbERhdGEoKSB7XG4gICAgaWYgKHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnY2FydCcpKVxuICAgICAgcmV0dXJuO1xuXG4gICAgY29uc3QgdXNlckRldGFpbHMgPSB0aGlzLmdldFVzZXIoKTtcbiAgICBpZiAoISF1c2VyRGV0YWlscykge1xuICAgICAgdGhpcy5ldmVudFNlcnZpY2Uuc2hvd0xvYWRpbmdTY3JlZW4uZW1pdCh0cnVlKTtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSBmb3JrSm9pbihbXG4gICAgICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0VXNlckl0ZW1zKHVzZXJEZXRhaWxzLnVzZXJJZCwgXCJDQVJUXCIpLFxuICAgICAgICB0aGlzLnJlc3RTZXJ2aWNlLmdldFVzZXJJdGVtcyh1c2VyRGV0YWlscy51c2VySWQsIFwiV0lTSExJU1RcIilcbiAgICAgIF0pO1xuICAgICAgcmVxdWVzdC5zdWJzY3JpYmUoKGNhcnRSZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXJEZXRhaWxzID0gdGhpcy5nZXRVc2VyKCkgYXMgVXNlcjtcbiAgICAgICAgY29uc3QgdXNlckNhcnQ6IENhcnQgPSBjYXJ0UmVzcG9uc2U/LlswXS5kYXRhWzBdID8gY2FydFJlc3BvbnNlPy5bMF0uZGF0YVswXSBhcyBDYXJ0IDogbmV3IENhcnQoeyAnY2FydFR5cGUnOiBjYXJ0VHlwZS5DQVJULCAndXNlckRldGFpbHMnOiB1c2VyRGV0YWlscywgJ3BsYXRmb3JtJzogJ1dFQicgfSk7XG5cbiAgICAgICAgaWYgKHVzZXJDYXJ0Py5jYXJ0SWQpXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJjYXJ0SWRcIiwgdXNlckNhcnQ/LmNhcnRJZCk7XG4gICAgICAgIHRoaXMuZ2V0VXNlckNhcnQoKS50aGVuKCh1c2VyQ2FydFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgdXNlckNhcnRSZXNwb25zZS5vbnN1Y2Nlc3MgPSAodXNlckNhcnRJbmRleERCOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHVzZXJDYXJ0Lm9yZGVyZWRJdGVtcyA9IHRoaXMubWVyZ2VBbGxJdGVtcyh1c2VyQ2FydEluZGV4REIudGFyZ2V0LnJlc3VsdCA/PyBbXSwgdXNlckNhcnQ/Lm9yZGVyZWRJdGVtcyA/PyBbXSk7XG5cbiAgICAgICAgICAgIHRoaXMuYWRkQWxsUHJvZHVjdHNUb0NhcnQodXNlckNhcnQub3JkZXJlZEl0ZW1zKTtcbiAgICAgICAgICAgIC8vIHRoaXMucmVzdFNlcnZpY2UuYWRkSXRlbVRvREIodXNlckNhcnQpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIC8vICAgaWYocmVzPy5kYXRhPy5jYXJ0SWQgJiYgIWxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjYXJ0SWQnKSlcbiAgICAgICAgICAgIC8vICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2FydElkJywgcmVzLmRhdGEuY2FydElkKTtcbiAgICAgICAgICAgIC8vIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHVzZXJXaXNobGlzdDogQ2FydCA9IGNhcnRSZXNwb25zZT8uWzFdLmRhdGEgYXMgQ2FydDtcbiAgICAgICAgaWYgKHVzZXJXaXNobGlzdC5jYXJ0SWQpXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJ3aXNobGlzdElkXCIsIHVzZXJXaXNobGlzdC5jYXJ0SWQpO1xuICAgICAgICB0aGlzLmdldFVzZXJXaGlzaGxpc3QoKS50aGVuKCh1c2VyV2lzaGxpc3RSZXNwb25zZSkgPT4ge1xuICAgICAgICAgIHVzZXJXaXNobGlzdFJlc3BvbnNlLm9uc3VjY2VzcyA9ICh1c2VyV2lzaGxpc3RJbmRleERCOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHVzZXJXaXNobGlzdC5vcmRlcmVkSXRlbXMgPSBbLi4uKHVzZXJXaXNobGlzdEluZGV4REIudGFyZ2V0LnJlc3VsdCA/PyBbXSksIC4uLih1c2VyV2lzaGxpc3Qub3JkZXJlZEl0ZW1zID8/IFtdKV07XG4gICAgICAgICAgICB0aGlzLmFkZEFsbFByb2R1Y3RUb1dpc2hsaXN0KHVzZXJXaXNobGlzdC5vcmRlcmVkSXRlbXMpO1xuICAgICAgICAgICAgdGhpcy5yZXN0U2VydmljZS5hZGRJdGVtVG9EQih1c2VyV2lzaGxpc3QpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcblxuICAgICAgICB0aGlzLmV2ZW50U2VydmljZS5zaG93TG9hZGluZ1NjcmVlbi5lbWl0KGZhbHNlKTtcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRoaXMuc3RvcmVEYXRhVG9KU09OKCk7XG4gICAgfVxuICB9XG5cbiAgbWVyZ2VBbGxJdGVtcyh1blN5bmNlZEl0ZW06IGFueVtdLCBzeW5jZWRJdGVtOiBhbnlbXSkge1xuICAgIGZvciAobGV0IHByb2R1Y3Qgb2Ygc3luY2VkSXRlbSkge1xuICAgICAgbGV0IGl0ZW1Gb3VuZCA9IGZhbHNlO1xuICAgICAgZm9yIChsZXQgY2FydEl0ZW0gb2YgdW5TeW5jZWRJdGVtKSB7XG4gICAgICAgIGlmIChjYXJ0SXRlbS52YXJpZW50SWQgPT09IHByb2R1Y3QudmFyaWVudElkKSB7XG4gICAgICAgICAgaXRlbUZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAvLyBjYXJ0SXRlbS5xdWFudGl0eSA9IHByb2R1Y3QucXVhbnRpdHk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICghaXRlbUZvdW5kKSB7XG4gICAgICAgIHVuU3luY2VkSXRlbS5wdXNoKHByb2R1Y3QpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5TeW5jZWRJdGVtO1xuICB9XG5cbiAgLy8gQ0FSVCBTRVJWSUNFXG4gIGFzeW5jIGdldFVzZXJDYXJ0KCk6IFByb21pc2U8SURCUmVxdWVzdDxPcmRlcmVkSXRlbXNbXT4+IHtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZT8udHJhbnNhY3Rpb24odGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUgPz8gXCJVU0VSX0NBUlRcIiwgXCJyZWFkd3JpdGVcIik7XG4gICAgcmV0dXJuIGF3YWl0IHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lKS5nZXRBbGwoKTtcbiAgfVxuXG4gIGFkZFByb2R1Y3RUb0NhcnQocHJvZHVjdDogT3JkZXJlZEl0ZW1zKSB7XG5cbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2U/LnRyYW5zYWN0aW9uKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lID8/IFwiVVNFUl9DQVJUXCIsIFwicmVhZHdyaXRlXCIpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUpLmdldChwcm9kdWN0LnZhcmllbnRJZClcbiAgICByZXNwb25zZS5vbnN1Y2Nlc3MgPSAoY2FydFJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIGlmIChjYXJ0UmVzcG9uc2UudGFyZ2V0LnJlc3VsdCkgeyB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgdGhpcy50b3RhbENhcnRJdGVtcyArPSAxO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSkucHV0KHByb2R1Y3QpO1xuICB9XG5cbiAgYWRkQWxsUHJvZHVjdFRvV2lzaGxpc3QocHJvZHVjdHM6IE9yZGVyZWRJdGVtc1tdKTogSURCVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZT8udHJhbnNhY3Rpb24odGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSA/PyBcIlVTRVJfRkFWT1VSSVRFXCIsIFwicmVhZHdyaXRlXCIpO1xuICAgIHByb2R1Y3RzLmZvckVhY2goKHByb2R1Y3QpID0+IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSkucHV0KHByb2R1Y3QpO1xuICAgIH0pXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uO1xuICB9XG4gIGFkZEFsbFByb2R1Y3RzVG9DYXJ0KHByb2R1Y3RzOiBPcmRlcmVkSXRlbXNbXSk6IElEQlRyYW5zYWN0aW9uIHtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZT8udHJhbnNhY3Rpb24odGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUgPz8gXCJVU0VSX0NBUlRcIiwgXCJyZWFkd3JpdGVcIik7XG4gICAgcHJvZHVjdHMuZm9yRWFjaCgocHJvZHVjdCkgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSkucHV0KHByb2R1Y3QpO1xuICAgIH0pXG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uO1xuICB9XG4gIHJlbW92ZVByb2R1Y3RGcm9tQ2FydChwcm9kdWN0SWQ6IHN0cmluZykge1xuICAgIHRoaXMudG90YWxDYXJ0SXRlbXMgLT0gMTtcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2U/LnRyYW5zYWN0aW9uKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lID8/IFwiVVNFUl9DQVJUXCIsIFwicmVhZHdyaXRlXCIpO1xuICAgIHJldHVybiB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSkuZGVsZXRlKHByb2R1Y3RJZCk7XG4gIH1cbiAgYXN5bmMgZ2V0UHJvZHVjdEZyb21DYXJ0KHByb2R1Y3RJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlPy50cmFuc2FjdGlvbih0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSA/PyBcIlVTRVJfQ0FSVFwiLCBcInJlYWR3cml0ZVwiKTtcbiAgICByZXR1cm4gYXdhaXQgdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5jYXJ0Q29sbGVjdGlvbk5hbWUpLmdldChwcm9kdWN0SWQpO1xuICB9XG5cbiAgLy8gV0lTSExJU1QgU0VSVklDRVxuICBhc3luYyBnZXRVc2VyV2hpc2hsaXN0KCk6IFByb21pc2U8SURCUmVxdWVzdDxPcmRlcmVkSXRlbXNbXT4+IHtcblxuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZS50cmFuc2FjdGlvbih0aGlzLmZhdm91cml0ZUNvbGxlY3Rpb25OYW1lLCBcInJlYWR3cml0ZVwiKTtcbiAgICByZXR1cm4gYXdhaXQgdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSkuZ2V0QWxsKCk7XG4gIH1cblxuICBhc3luYyBnZXRUcmlhbENhcnQoKTogUHJvbWlzZTxJREJSZXF1ZXN0PE9yZGVyZWRJdGVtc1tdPj4ge1xuXG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0aGlzLmRhdGFiYXNlLnRyYW5zYWN0aW9uKHRoaXMudHJpYWxDYXJ0Q29sbGVjdGlvbk5hbWUsIFwicmVhZHdyaXRlXCIpO1xuICAgIHJldHVybiBhd2FpdCB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLnRyaWFsQ2FydENvbGxlY3Rpb25OYW1lKS5nZXRBbGwoKTtcbiAgfVxuXG4gIGFkZFByb2R1Y3RUb1dpc2hsaXN0KHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZS50cmFuc2FjdGlvbih0aGlzLmZhdm91cml0ZUNvbGxlY3Rpb25OYW1lLCBcInJlYWR3cml0ZVwiKTtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSkucHV0KHByb2R1Y3QpO1xuICB9XG4gIGFkZFByb2R1Y3RUb1RyaWFsKHByb2R1Y3Q6IE9yZGVyZWRJdGVtcykge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZS50cmFuc2FjdGlvbih0aGlzLnRyaWFsQ2FydENvbGxlY3Rpb25OYW1lLCBcInJlYWR3cml0ZVwiKTtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy50cmlhbENhcnRDb2xsZWN0aW9uTmFtZSkucHV0KHByb2R1Y3QpO1xuICB9XG4gIHJlbW92ZVByb2R1Y3RGcm9tV2lzaGxpc3QocHJvZHVjdElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2UudHJhbnNhY3Rpb24odGhpcy5mYXZvdXJpdGVDb2xsZWN0aW9uTmFtZSwgXCJyZWFkd3JpdGVcIik7XG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMuZmF2b3VyaXRlQ29sbGVjdGlvbk5hbWUpLmRlbGV0ZShwcm9kdWN0SWQpO1xuICB9XG5cbiAgY2xlYXJVc2VyQ2FydCgpIHtcbiAgICB0aGlzLnRvdGFsQ2FydEl0ZW1zID0gMDtcbiAgICBjb25zdCB0cmFuc2FjdGlvbiA9IHRoaXMuZGF0YWJhc2U/LnRyYW5zYWN0aW9uKHRoaXMuY2FydENvbGxlY3Rpb25OYW1lID8/IFwiVVNFUl9DQVJUXCIsIFwicmVhZHdyaXRlXCIpO1xuICAgIHJldHVybiB0cmFuc2FjdGlvbi5vYmplY3RTdG9yZSh0aGlzLmNhcnRDb2xsZWN0aW9uTmFtZSkuY2xlYXIoKTtcbiAgfVxuXG4gIGNsZWFyVHJpYWxDYXJ0KCkge1xuICAgIHRoaXMudG90YWxDYXJ0SXRlbXMgPSAwO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZT8udHJhbnNhY3Rpb24odGhpcy50cmlhbENhcnRDb2xsZWN0aW9uTmFtZSwgXCJyZWFkd3JpdGVcIik7XG4gICAgcmV0dXJuIHRyYW5zYWN0aW9uLm9iamVjdFN0b3JlKHRoaXMudHJpYWxDYXJ0Q29sbGVjdGlvbk5hbWUpLmNsZWFyKCk7XG4gIH1cblxuICByZW1vdmVQcm9kdWN0RnJvbVRyaWFsQ2FydChwcm9kdWN0SWQ6IHN0cmluZykge1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdGhpcy5kYXRhYmFzZS50cmFuc2FjdGlvbih0aGlzLnRyaWFsQ2FydENvbGxlY3Rpb25OYW1lLCBcInJlYWR3cml0ZVwiKTtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb24ub2JqZWN0U3RvcmUodGhpcy50cmlhbENhcnRDb2xsZWN0aW9uTmFtZSkuZGVsZXRlKHByb2R1Y3RJZCk7XG4gIH1cblxuICAvLyBVU0VSIFNFUlZJQ0VcbiAgc2V0VXNlcih1c2VyOiBVc2VyKTogVXNlciB7XG4gICAgdGhpcy5jb29raWVTZXJ2aWNlLnNldChcInVzZXJcIiwgSlNPTi5zdHJpbmdpZnkodXNlciA/PyBcInt9XCIpLCA3KTtcbiAgICByZXR1cm4gdXNlcjtcbiAgfVxuICBnZXRVc2VyKCk6IFVzZXIgfCBudWxsIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgdXNlcjogVXNlciA9IEpTT04ucGFyc2UodGhpcy5jb29raWVTZXJ2aWNlLmdldChcInVzZXJcIikpO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oXCJwZXJJZFwiLCB1c2VyPy51c2VySWQpO1xuICAgICAgcmV0dXJuIHVzZXI7XG4gICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7IH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG59XG4iXX0=