simpo-component-library 3.5.52 → 3.6.2

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 (309) 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/hover-elements/hover-elements.component.mjs +3 -3
  5. package/esm2022/lib/components/image-loading/image-loading.component.mjs +3 -3
  6. package/esm2022/lib/components/payment-details/payment-details.component.mjs +3 -3
  7. package/esm2022/lib/constants/business.constant.mjs +1 -1
  8. package/esm2022/lib/directive/alignment.directive.mjs +23 -0
  9. package/esm2022/lib/directive/background-directive.mjs +130 -5
  10. package/esm2022/lib/directive/blur-content.directive.mjs +1 -1
  11. package/esm2022/lib/directive/border-directive.mjs +2 -2
  12. package/esm2022/lib/directive/borderlessImage.directive.mjs +4 -1
  13. package/esm2022/lib/directive/button-directive.directive.mjs +72 -17
  14. package/esm2022/lib/directive/button-editor.directive.mjs +22 -4
  15. package/esm2022/lib/directive/color.directive.mjs +1 -1
  16. package/esm2022/lib/directive/column-directive.directive.mjs +1 -1
  17. package/esm2022/lib/directive/container-alignment.directive.mjs +1 -1
  18. package/esm2022/lib/directive/container-fir.directive.mjs +1 -1
  19. package/esm2022/lib/directive/content-title-spacing.directive.mjs +4 -4
  20. package/esm2022/lib/directive/contenteditable.directive.mjs +1 -1
  21. package/esm2022/lib/directive/corner-directive.mjs +1 -1
  22. package/esm2022/lib/directive/height.directive.mjs +29 -0
  23. package/esm2022/lib/directive/hover-animation.directive.mjs +142 -0
  24. package/esm2022/lib/directive/hoverborder.directive.mjs +1 -1
  25. package/esm2022/lib/directive/image-container.directive.mjs +1 -1
  26. package/esm2022/lib/directive/image-directive.directive.mjs +1 -1
  27. package/esm2022/lib/directive/image-editor.directive.mjs +25 -5
  28. package/esm2022/lib/directive/image-position.directive.mjs +1 -1
  29. package/esm2022/lib/directive/position-layout-directive.directive.mjs +1 -1
  30. package/esm2022/lib/directive/set-dynamic-background.directive.mjs +66 -0
  31. package/esm2022/lib/directive/spacing-around.directive.mjs +40 -3
  32. package/esm2022/lib/directive/spacing-horizontal.directive.mjs +5 -1
  33. package/esm2022/lib/directive/spacing.directive.mjs +29 -0
  34. package/esm2022/lib/directive/sticky-directive.mjs +2 -2
  35. package/esm2022/lib/directive/text-background-directive.directive.mjs +1 -1
  36. package/esm2022/lib/directive/text-size.directive.mjs +1 -1
  37. package/esm2022/lib/directive/translate-onhover.directive.mjs +47 -0
  38. package/esm2022/lib/directive/wrap-containers.directive.mjs +1 -1
  39. package/esm2022/lib/ecommerce/sections/address/address.component.mjs +96 -59
  40. package/esm2022/lib/ecommerce/sections/authenticate-user/authenticate-user.component.mjs +3 -3
  41. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.component.mjs +128 -14
  42. package/esm2022/lib/ecommerce/sections/authentication-required/authentication-required.model.mjs +1 -1
  43. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.component.mjs +199 -0
  44. package/esm2022/lib/ecommerce/sections/book-appointment/book-appointment.model.mjs +2 -0
  45. package/esm2022/lib/ecommerce/sections/cart/cart.component.mjs +214 -36
  46. package/esm2022/lib/ecommerce/sections/cart/cart.modal.mjs +1 -1
  47. package/esm2022/lib/ecommerce/sections/category-product/category-product.component.mjs +3 -3
  48. package/esm2022/lib/ecommerce/sections/category-product/category-product.model.mjs +1 -1
  49. package/esm2022/lib/ecommerce/sections/checkout/checkout.component.mjs +3 -3
  50. package/esm2022/lib/ecommerce/sections/checkout/checkout.modal.mjs +1 -1
  51. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.component.mjs +3 -3
  52. package/esm2022/lib/ecommerce/sections/customer-review/customer-review.model.mjs +1 -1
  53. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.component.mjs +405 -0
  54. package/esm2022/lib/ecommerce/sections/enrollment-form/enrollment-form.model.mjs +2 -0
  55. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.component.mjs +6 -4
  56. package/esm2022/lib/ecommerce/sections/featured-category/featured-category.modal.mjs +1 -1
  57. package/esm2022/lib/ecommerce/sections/featured-category/featured-collection.component.mjs +7 -5
  58. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.component.mjs +42 -7
  59. package/esm2022/lib/ecommerce/sections/featured-products/featured-products.modal.mjs +1 -1
  60. package/esm2022/lib/ecommerce/sections/item-varient/item-varient.component.mjs +3 -3
  61. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.component.mjs +144 -0
  62. package/esm2022/lib/ecommerce/sections/new-collection/new-collection.modal.mjs +2 -0
  63. package/esm2022/lib/ecommerce/sections/order-details/order-details.component.mjs +99 -11
  64. package/esm2022/lib/ecommerce/sections/pagnination/pagnination.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 +395 -21
  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 +626 -142
  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 +95 -0
  72. package/esm2022/lib/ecommerce/sections/returns-calculator/returns-calculator.model.mjs +2 -0
  73. package/esm2022/lib/ecommerce/sections/scheme-details/scheme-details.component.mjs +57 -0
  74. package/esm2022/lib/ecommerce/sections/scheme-selection/scheme-selection.component.mjs +36 -0
  75. package/esm2022/lib/ecommerce/sections/small-product-listing/small-product-listing.component.mjs +49 -4
  76. package/esm2022/lib/ecommerce/sections/store-list/store-list.component.mjs +157 -0
  77. package/esm2022/lib/ecommerce/sections/store-list/store-list.modal.mjs +2 -0
  78. package/esm2022/lib/ecommerce/sections/store-page/store-page.component.mjs +120 -0
  79. package/esm2022/lib/ecommerce/sections/store-page/store-page.model.mjs +2 -0
  80. package/esm2022/lib/ecommerce/sections/user-basic-info/user-basic-info.component.mjs +5 -4
  81. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.component.mjs +66 -16
  82. package/esm2022/lib/ecommerce/sections/user-profile/user-profile.modal.mjs +1 -1
  83. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.component.mjs +3 -3
  84. package/esm2022/lib/ecommerce/sections/verify-payment/verify-payment.model.mjs +1 -1
  85. package/esm2022/lib/ecommerce/sections/whislist/whislist.component.mjs +17 -12
  86. package/esm2022/lib/ecommerce/styles/BaseCollection.modal.mjs +1 -1
  87. package/esm2022/lib/ecommerce/styles/Collection.modal.mjs +5 -3
  88. package/esm2022/lib/ecommerce/styles/OrderedItems.modal.mjs +1 -1
  89. package/esm2022/lib/ecommerce/styles/PincodeLocation.model.mjs +1 -1
  90. package/esm2022/lib/ecommerce/styles/PincodeLocationInter.model.mjs +1 -1
  91. package/esm2022/lib/ecommerce/styles/cart.modal.mjs +1 -1
  92. package/esm2022/lib/ecommerce/styles/category.modal.mjs +1 -1
  93. package/esm2022/lib/ecommerce/styles/order.modal.mjs +1 -1
  94. package/esm2022/lib/ecommerce/styles/product.modal.mjs +22 -1
  95. package/esm2022/lib/ecommerce/styles/review.modal.mjs +1 -1
  96. package/esm2022/lib/ecommerce/styles/user.modal.mjs +3 -1
  97. package/esm2022/lib/elements/add-section/add-section.component.mjs +3 -4
  98. package/esm2022/lib/elements/address-list/address-list.component.mjs +98 -0
  99. package/esm2022/lib/elements/below-image-card/below-image-card.component.mjs +13 -8
  100. package/esm2022/lib/elements/button/button.component.mjs +3 -3
  101. package/esm2022/lib/elements/button/button.model.mjs +1 -1
  102. package/esm2022/lib/elements/card-skeleton-loader/card-skeleton-loader.component.mjs +3 -3
  103. package/esm2022/lib/elements/covering-image-card/covering-image-card.component.mjs +8 -4
  104. package/esm2022/lib/elements/editor-service.service.mjs +29 -12
  105. package/esm2022/lib/elements/heading-element/heading-element.component.mjs +3 -3
  106. package/esm2022/lib/elements/image-editor/image-editor.component.mjs +147 -15
  107. package/esm2022/lib/elements/index.mjs +1 -1
  108. package/esm2022/lib/elements/link-editor/link-editor.component.mjs +108 -10
  109. package/esm2022/lib/elements/list-home-appointment/list-home-appointment.component.mjs +94 -0
  110. package/esm2022/lib/elements/media-selector/media-selector.component.mjs +3 -3
  111. package/esm2022/lib/elements/navbar-button-element/navbar-button-element.component.mjs +1 -2
  112. package/esm2022/lib/elements/portfolio/portfolio.component.mjs +3 -3
  113. package/esm2022/lib/elements/pricing-s1/pricing-s1.component.mjs +80 -0
  114. package/esm2022/lib/elements/property/property.component.mjs +3 -3
  115. package/esm2022/lib/elements/schedule-video-call/schedule-video-call.component.mjs +187 -0
  116. package/esm2022/lib/elements/simpo-button/simpo-button.component.mjs +3 -3
  117. package/esm2022/lib/elements/svg-divider/svg-divider.component.mjs +3 -3
  118. package/esm2022/lib/elements/text/text.component.mjs +3 -3
  119. package/esm2022/lib/elements/text-editor/text-editor.component.mjs +72 -27
  120. package/esm2022/lib/elements/top-of-image-card/top-of-image-card.component.mjs +7 -3
  121. package/esm2022/lib/pipes/amount.pipe.mjs +1 -1
  122. package/esm2022/lib/pipes/gender.pipe.mjs +5 -1
  123. package/esm2022/lib/sections/BaseSection.mjs +1 -1
  124. package/esm2022/lib/sections/add-new-section/add-new-section.component.mjs +3 -3
  125. package/esm2022/lib/sections/appointment-form/appointment-form.component.mjs +164 -98
  126. package/esm2022/lib/sections/appointment-form/appointment-form.model.mjs +1 -1
  127. package/esm2022/lib/sections/banner-carousel/banner-carousel.component.mjs +6 -32
  128. package/esm2022/lib/sections/banner-carousel/banner-carousel.model.mjs +1 -1
  129. package/esm2022/lib/sections/banner-grid-section/banner-grid-section.component.mjs +52 -17
  130. package/esm2022/lib/sections/banner-section/banner-section.component.mjs +6 -25
  131. package/esm2022/lib/sections/blog-list/blog-list.component.mjs +4 -4
  132. package/esm2022/lib/sections/blog-list/blog-list.model.mjs +1 -1
  133. package/esm2022/lib/sections/carousel-banner/carousel-banner.component.mjs +8 -7
  134. package/esm2022/lib/sections/carousel-banner/carousel-banner.model.mjs +1 -1
  135. package/esm2022/lib/sections/choose-us-section/choose-us-section.component.mjs +6 -4
  136. package/esm2022/lib/sections/choose-us-section/choose-us-section.model.mjs +1 -1
  137. package/esm2022/lib/sections/contact-us/contact-us.component.mjs +37 -7
  138. package/esm2022/lib/sections/contact-us/contact-us.modal.mjs +1 -1
  139. package/esm2022/lib/sections/faq-section/faq-section.component.mjs +4 -4
  140. package/esm2022/lib/sections/faq-section/faq-section.modal.mjs +1 -1
  141. package/esm2022/lib/sections/features-section/features-section.component.mjs +6 -4
  142. package/esm2022/lib/sections/features-section/features-section.model.mjs +1 -1
  143. package/esm2022/lib/sections/footer/footer.component.mjs +6 -9
  144. package/esm2022/lib/sections/footer/footer.modal.mjs +1 -1
  145. package/esm2022/lib/sections/header-section/header-section.component.mjs +95 -13
  146. package/esm2022/lib/sections/header-section/header-section.model.mjs +1 -1
  147. package/esm2022/lib/sections/header-text/header-text.component.mjs +3 -3
  148. package/esm2022/lib/sections/header-text/header-text.model.mjs +1 -1
  149. package/esm2022/lib/sections/image-carousel-section/image-carousel-section.component.mjs +12 -22
  150. package/esm2022/lib/sections/image-carousel-section/image-carousel.model.mjs +1 -1
  151. package/esm2022/lib/sections/image-grid-section/image-grid-section.component.mjs +9 -4
  152. package/esm2022/lib/sections/image-grid-section/image-grid-section.model.mjs +1 -1
  153. package/esm2022/lib/sections/image-section/image-section.component.mjs +12 -5
  154. package/esm2022/lib/sections/image-section/image-section.model.mjs +1 -1
  155. package/esm2022/lib/sections/location-section/location-section.component.mjs +3 -3
  156. package/esm2022/lib/sections/location-section/location-section.modal.mjs +1 -1
  157. package/esm2022/lib/sections/logo-gallery/logo-gallery.component.mjs +9 -4
  158. package/esm2022/lib/sections/logo-showcase/logo-showcase.component.mjs +9 -3
  159. package/esm2022/lib/sections/logo-showcase/logo-showcase.modal.mjs +1 -1
  160. package/esm2022/lib/sections/moving-text/moving-text.component.mjs +119 -0
  161. package/esm2022/lib/sections/moving-text/moving-text.modal.mjs +2 -0
  162. package/esm2022/lib/sections/new-services/new-services.component.mjs +4 -4
  163. package/esm2022/lib/sections/new-services/new-services.model.mjs +1 -1
  164. package/esm2022/lib/sections/new-testimonials/new-testimonials.component.mjs +12 -6
  165. package/esm2022/lib/sections/new-testimonials/new-testimonials.model.mjs +1 -1
  166. package/esm2022/lib/sections/news-letter-component/news-letter-component.component.mjs +108 -0
  167. package/esm2022/lib/sections/news-letter-component/news-letter.modal.mjs +2 -0
  168. package/esm2022/lib/sections/pricing-section/pricing-section.component.mjs +28 -4
  169. package/esm2022/lib/sections/pricing-section/pricing-section.modal.mjs +1 -1
  170. package/esm2022/lib/sections/process-modern/process-modern.component.mjs +12 -4
  171. package/esm2022/lib/sections/process-modern/process-modern.model.mjs +1 -1
  172. package/esm2022/lib/sections/process-section/process-section.component.mjs +6 -3
  173. package/esm2022/lib/sections/process-section/process-section.modal.mjs +1 -1
  174. package/esm2022/lib/sections/property-component/property-component.component.mjs +3 -3
  175. package/esm2022/lib/sections/property-component/property-component.modal.mjs +1 -1
  176. package/esm2022/lib/sections/property-list/property-list.component.mjs +3 -3
  177. package/esm2022/lib/sections/property-list/property-list.modal.mjs +1 -1
  178. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.component.mjs +6 -4
  179. package/esm2022/lib/sections/recent-blog-post-section/recent-blog-post-section.model.mjs +1 -1
  180. package/esm2022/lib/sections/registration-form/registration-form.component.mjs +9 -9
  181. package/esm2022/lib/sections/registration-form/registrationForm.model.mjs +1 -1
  182. package/esm2022/lib/sections/service-section/service-section.component.mjs +4 -4
  183. package/esm2022/lib/sections/service-section/service-section.model.mjs +1 -1
  184. package/esm2022/lib/sections/skeleton-loader-section/skeleton-loader-section.component.mjs +3 -3
  185. package/esm2022/lib/sections/team-member-section/team-member-section.component.mjs +3 -3
  186. package/esm2022/lib/sections/team-member-section/team-member-section.model.mjs +1 -1
  187. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.mjs +6 -3
  188. package/esm2022/lib/sections/testimonial-fullwidth/testimonial-fullwidth.model.mjs +1 -1
  189. package/esm2022/lib/sections/testimonial-section/testimonial-section.component.mjs +18 -3
  190. package/esm2022/lib/sections/testimonial-section/testimonial-section.model.mjs +1 -1
  191. package/esm2022/lib/sections/testimonial-video/testimonial-video.component.mjs +3 -3
  192. package/esm2022/lib/sections/testimonial-video/testimonial-video.model.mjs +1 -1
  193. package/esm2022/lib/sections/text-image-section/text-image-section.component.mjs +3 -17
  194. package/esm2022/lib/sections/text-section/text-section.component.mjs +3 -21
  195. package/esm2022/lib/sections/text-section/text-section.model.mjs +1 -1
  196. package/esm2022/lib/sections/usp-video-section/usp-video-section.component.mjs +3 -3
  197. package/esm2022/lib/sections/usp-video-section/usp-video-section.model.mjs +1 -1
  198. package/esm2022/lib/sections/video-section/video-section.component.mjs +16 -16
  199. package/esm2022/lib/sections/video-section/video-section.model.mjs +1 -1
  200. package/esm2022/lib/sections/view-blog/view-blog.component.mjs +3 -3
  201. package/esm2022/lib/services/cart.service.mjs +38 -35
  202. package/esm2022/lib/services/endUser.service.mjs +1 -1
  203. package/esm2022/lib/services/events.service.mjs +3 -8
  204. package/esm2022/lib/services/image-upload-service.service.mjs +7 -4
  205. package/esm2022/lib/services/rest.service.mjs +125 -68
  206. package/esm2022/lib/services/sanitizeHtml.mjs +1 -1
  207. package/esm2022/lib/services/storage.service.mjs +27 -44
  208. package/esm2022/lib/styles/index.mjs +8 -1
  209. package/esm2022/lib/styles/style.model.mjs +3 -2
  210. package/esm2022/lib/styles/types.mjs +1 -1
  211. package/esm2022/lib/tokens/api-token.mjs +1 -1
  212. package/esm2022/public-api.mjs +14 -2
  213. package/fesm2022/simpo-component-library.mjs +5815 -1711
  214. package/fesm2022/simpo-component-library.mjs.map +1 -1
  215. package/lib/directive/alignment.directive.d.ts +11 -0
  216. package/lib/directive/button-directive.directive.d.ts +2 -0
  217. package/lib/directive/button-editor.directive.d.ts +6 -2
  218. package/lib/directive/height.directive.d.ts +11 -0
  219. package/lib/directive/hover-animation.directive.d.ts +19 -0
  220. package/lib/directive/image-editor.directive.d.ts +6 -1
  221. package/lib/directive/set-dynamic-background.directive.d.ts +14 -0
  222. package/lib/directive/spacing-around.directive.d.ts +7 -2
  223. package/lib/directive/spacing.directive.d.ts +12 -0
  224. package/lib/directive/translate-onhover.directive.d.ts +11 -0
  225. package/lib/ecommerce/sections/address/address.component.d.ts +11 -3
  226. package/lib/ecommerce/sections/authentication-required/authentication-required.component.d.ts +23 -5
  227. package/lib/ecommerce/sections/book-appointment/book-appointment.component.d.ts +70 -0
  228. package/lib/ecommerce/sections/book-appointment/book-appointment.model.d.ts +14 -0
  229. package/lib/ecommerce/sections/cart/cart.component.d.ts +35 -3
  230. package/lib/ecommerce/sections/enrollment-form/enrollment-form.component.d.ts +54 -0
  231. package/lib/ecommerce/sections/enrollment-form/enrollment-form.model.d.ts +29 -0
  232. package/lib/ecommerce/sections/featured-category/featured-category.modal.d.ts +2 -0
  233. package/lib/ecommerce/sections/featured-products/featured-products.component.d.ts +6 -1
  234. package/lib/ecommerce/sections/featured-products/featured-products.modal.d.ts +6 -2
  235. package/lib/ecommerce/sections/new-collection/new-collection.component.d.ts +36 -0
  236. package/lib/ecommerce/sections/new-collection/new-collection.modal.d.ts +23 -0
  237. package/lib/ecommerce/sections/order-details/order-details.component.d.ts +18 -1
  238. package/lib/ecommerce/sections/product-desc/product-desc.component.d.ts +61 -2
  239. package/lib/ecommerce/sections/product-desc/product-desc.modal.d.ts +5 -0
  240. package/lib/ecommerce/sections/product-list/product-list.component.d.ts +110 -17
  241. package/lib/ecommerce/sections/returns-calculator/returns-calculator.component.d.ts +31 -0
  242. package/lib/ecommerce/sections/returns-calculator/returns-calculator.model.d.ts +14 -0
  243. package/lib/ecommerce/sections/scheme-details/scheme-details.component.d.ts +16 -0
  244. package/lib/ecommerce/sections/scheme-selection/scheme-selection.component.d.ts +18 -0
  245. package/lib/ecommerce/sections/small-product-listing/small-product-listing.component.d.ts +6 -1
  246. package/lib/ecommerce/sections/store-list/store-list.component.d.ts +43 -0
  247. package/lib/ecommerce/sections/store-list/store-list.modal.d.ts +11 -0
  248. package/lib/ecommerce/sections/store-page/store-page.component.d.ts +27 -0
  249. package/lib/ecommerce/sections/store-page/store-page.model.d.ts +11 -0
  250. package/lib/ecommerce/sections/user-profile/user-profile.component.d.ts +10 -1
  251. package/lib/ecommerce/sections/whislist/whislist.component.d.ts +4 -1
  252. package/lib/ecommerce/styles/Collection.modal.d.ts +1 -0
  253. package/lib/ecommerce/styles/product.modal.d.ts +19 -0
  254. package/lib/ecommerce/styles/user.modal.d.ts +3 -0
  255. package/lib/elements/address-list/address-list.component.d.ts +27 -0
  256. package/lib/elements/below-image-card/below-image-card.component.d.ts +3 -0
  257. package/lib/elements/covering-image-card/covering-image-card.component.d.ts +3 -0
  258. package/lib/elements/editor-service.service.d.ts +4 -4
  259. package/lib/elements/image-editor/image-editor.component.d.ts +29 -3
  260. package/lib/elements/link-editor/link-editor.component.d.ts +13 -1
  261. package/lib/elements/list-home-appointment/list-home-appointment.component.d.ts +27 -0
  262. package/lib/elements/pricing-s1/pricing-s1.component.d.ts +21 -0
  263. package/lib/elements/schedule-video-call/schedule-video-call.component.d.ts +33 -0
  264. package/lib/elements/text-editor/text-editor.component.d.ts +3 -0
  265. package/lib/elements/top-of-image-card/top-of-image-card.component.d.ts +3 -0
  266. package/lib/sections/appointment-form/appointment-form.component.d.ts +11 -4
  267. package/lib/sections/banner-carousel/banner-carousel.component.d.ts +1 -1
  268. package/lib/sections/banner-grid-section/banner-grid-section.component.d.ts +8 -1
  269. package/lib/sections/carousel-banner/carousel-banner.model.d.ts +1 -0
  270. package/lib/sections/contact-us/contact-us.component.d.ts +2 -1
  271. package/lib/sections/contact-us/contact-us.modal.d.ts +5 -1
  272. package/lib/sections/features-section/features-section.model.d.ts +2 -0
  273. package/lib/sections/header-section/header-section.component.d.ts +29 -2
  274. package/lib/sections/header-section/header-section.model.d.ts +14 -2
  275. package/lib/sections/header-text/header-text.model.d.ts +2 -1
  276. package/lib/sections/image-carousel-section/image-carousel-section.component.d.ts +2 -1
  277. package/lib/sections/image-grid-section/image-grid-section.component.d.ts +1 -0
  278. package/lib/sections/image-grid-section/image-grid-section.model.d.ts +3 -1
  279. package/lib/sections/image-section/image-section.component.d.ts +2 -1
  280. package/lib/sections/logo-gallery/logo-gallery.component.d.ts +2 -1
  281. package/lib/sections/logo-showcase/logo-showcase.component.d.ts +3 -1
  282. package/lib/sections/logo-showcase/logo-showcase.modal.d.ts +11 -2
  283. package/lib/sections/moving-text/moving-text.component.d.ts +28 -0
  284. package/lib/sections/moving-text/moving-text.modal.d.ts +19 -0
  285. package/lib/sections/new-testimonials/new-testimonials.component.d.ts +2 -1
  286. package/lib/sections/news-letter-component/news-letter-component.component.d.ts +26 -0
  287. package/lib/sections/news-letter-component/news-letter.modal.d.ts +19 -0
  288. package/lib/sections/pricing-section/pricing-section.component.d.ts +2 -0
  289. package/lib/sections/pricing-section/pricing-section.modal.d.ts +3 -0
  290. package/lib/sections/process-modern/process-modern.component.d.ts +2 -0
  291. package/lib/sections/process-section/process-section.component.d.ts +1 -0
  292. package/lib/sections/process-section/process-section.modal.d.ts +2 -0
  293. package/lib/sections/service-section/service-section.model.d.ts +5 -1
  294. package/lib/sections/testimonial-fullwidth/testimonial-fullwidth.component.d.ts +1 -0
  295. package/lib/sections/testimonial-section/testimonial-section.component.d.ts +1 -0
  296. package/lib/sections/video-section/video-section.component.d.ts +4 -3
  297. package/lib/sections/video-section/video-section.model.d.ts +1 -1
  298. package/lib/services/cart.service.d.ts +1 -6
  299. package/lib/services/events.service.d.ts +2 -6
  300. package/lib/services/rest.service.d.ts +29 -18
  301. package/lib/services/storage.service.d.ts +6 -5
  302. package/lib/styles/index.d.ts +7 -1
  303. package/lib/styles/style.model.d.ts +15 -1
  304. package/lib/styles/types.d.ts +10 -2
  305. package/package.json +1 -1
  306. package/public-api.d.ts +13 -0
  307. package/simpo-component-library-3.6.2.tgz +0 -0
  308. package/src/lib/styles/global-styles.css +251 -191
  309. package/simpo-component-library-3.5.52.tgz +0 -0
@@ -0,0 +1,94 @@
1
+ import { Component } from '@angular/core';
2
+ import { MatIconModule } from '@angular/material/icon';
3
+ import { BUSINESS_CONSTANTS } from '../../constants/business.constant';
4
+ import { CommonModule } from '@angular/common';
5
+ import { SimpoComponentModule } from '../../components/index';
6
+ import { TimelineModule } from 'primeng/timeline';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "../../services/rest.service";
9
+ import * as i2 from "../../services/storage.service";
10
+ import * as i3 from "@angular/material/icon";
11
+ import * as i4 from "@angular/common";
12
+ import * as i5 from "ngx-skeleton-loader";
13
+ import * as i6 from "primeng/timeline";
14
+ import * as i7 from "primeng/api";
15
+ export class ListHomeAppointmentComponent {
16
+ constructor(restService, storageService) {
17
+ this.restService = restService;
18
+ this.storageService = storageService;
19
+ this.sectionsVisible = {
20
+ billDetails: true,
21
+ deliveryDetails: false,
22
+ timeline: false
23
+ };
24
+ this.currentTab = 'BOOKING_LIST';
25
+ this.orderTimiline = [
26
+ {
27
+ "brandOrderId": "1f0692b5-bc37-6aef-9797-33718ca9034d",
28
+ "userOrderId": "1f0692b5-bc24-626e-9797-21dfaac3c452",
29
+ "businessId": "1f05f085-d865-6bc5-82b4-0570667d6f5e",
30
+ "title": "Order Created",
31
+ "body": "Order #CAR009 Created on 25-07-2025",
32
+ "date": "2025-07-25T07:45:39.256+00:00",
33
+ "orderStatus": "ORDER_PLACED",
34
+ "timelineFor": "ORDER"
35
+ }
36
+ ];
37
+ this.homeAppointmentList = [];
38
+ }
39
+ ngOnInit() {
40
+ this.getHomeAppointmentList();
41
+ }
42
+ getHomeAppointmentList() {
43
+ const user = this.storageService.getUser();
44
+ // const user = {userId: '5ad40df5-6005-401d-9223-24d336acfddf'}
45
+ this.restService.getHomeAppointmentList(user?.userId ?? '').subscribe((res) => {
46
+ this.homeAppointmentList = res.data;
47
+ });
48
+ }
49
+ getIcon(type) {
50
+ switch (type) {
51
+ case "PENDING":
52
+ case "CONFIRMED":
53
+ return "widgets";
54
+ case "NO_SHOW":
55
+ return "local_shipping";
56
+ case "COMPLETED":
57
+ return "inbox";
58
+ case "CANCELLED":
59
+ return "cancel";
60
+ }
61
+ }
62
+ toggleSection(section) {
63
+ this.sectionsVisible[section] = !this.sectionsVisible[section];
64
+ }
65
+ get currency() {
66
+ return BUSINESS_CONSTANTS.CURRENCY;
67
+ }
68
+ get isMobile() {
69
+ return window.innerWidth <= 475;
70
+ }
71
+ viewBookingDetail(appointmentDetail) {
72
+ this.currentTab = 'BOOKING_DETAIL';
73
+ this.appointmentDetails = appointmentDetail;
74
+ this.orderTimiline = this.appointmentDetails?.timeLineList?.map((timeline) => {
75
+ return {
76
+ icon: this.getIcon(timeline.appointmentStatus),
77
+ name: timeline.title,
78
+ desc: timeline.body,
79
+ status: timeline.appointmentStatus
80
+ };
81
+ });
82
+ }
83
+ backToAppointmentList() {
84
+ this.currentTab = 'BOOKING_LIST';
85
+ this.appointmentDetails = null;
86
+ }
87
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ListHomeAppointmentComponent, deps: [{ token: i1.RestService }, { token: i2.StorageServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
88
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ListHomeAppointmentComponent, isStandalone: true, selector: "simpo-list-home-appointment", ngImport: i0, template: "<section>\r\n <div class=\"row\" *ngIf=\"currentTab === 'BOOKING_LIST'\">\r\n <div *ngIf=\"homeAppointmentList.length == 0\">\r\n <ng-container *ngTemplateOutlet=\"showEmptyScreen\"></ng-container>\r\n </div>\r\n <div *ngFor=\"let appointment of homeAppointmentList\" class=\"col-md-4 col-12\">\r\n <ng-container *ngTemplateOutlet=\"appointmentCard;context:{data: appointment}\"></ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"currentTab === 'BOOKING_DETAIL'\">\r\n <ng-container *ngTemplateOutlet=\"BookingDetail\"></ng-container>\r\n </div>\r\n</section>\r\n<ng-template #appointmentCard let-appointment=\"data\">\r\n <div class=\"card shadow-sm border-0 mb-2 cursor-pointer order-card\" (click)=\"viewBookingDetail(appointment)\">\r\n <div class=\"card-body p-3\">\r\n <!-- Header Section -->\r\n <div class=\"d-flex justify-content-between align-items-center mb-3\">\r\n <div class=\"order-number\">\r\n <h4 class=\"mb-0 fw-semibold\">{{appointment.appointmentDisplayId}}</h4>\r\n </div>\r\n <div class=\"arrow-icon\">\r\n <mat-icon class=\"text-muted\">arrow_forward_ios</mat-icon>\r\n </div>\r\n </div>\r\n <!-- Middle Section -->\r\n <div class=\"order-details\">\r\n <div class=\"d-flex flex-column flex-sm-row justify-content-between align-items-start mb-3\">\r\n <span class=\"text-muted small mb-3 mb-sm-0\">\r\n {{appointment.time}} {{appointment.date}}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <!-- <div class=\"amount-section\">\r\n <span class=\"h5 mb-0 text-success fw-bold\">\r\n <span [innerHTML]=\"currency\"></span>\r\n 123\r\n </span>\r\n </div> -->\r\n <div class=\"status-section\">\r\n <span [attr.class]=\"appointment.status + ' order-status'\">\r\n {{appointment.status.replaceAll('_', ' ')}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #BookingDetail>\r\n <ng-container>\r\n <div class=\"container-fluid\">\r\n\r\n <!-- Header Section -->\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <mat-icon (click)=\"backToAppointmentList()\" class=\"cursor-pointer\">keyboard_backspace</mat-icon>\r\n <h3 class=\"fw-bold text-dark mb-0\">{{appointmentDetails.appointmentDisplayId}}</h3>\r\n </div>\r\n <div class=\"d-flex flex-wrap gap-2 mb-2\">\r\n <span class=\"d-flex align-items-center text-muted\">\r\n <mat-icon class=\"fs-5 d-flex align-items-center justify-content-start\">schedule</mat-icon>\r\n <small>{{appointmentDetails.time}} {{appointmentDetails.date}}</small>\r\n </span>\r\n <span class=\"d-flex align-items-center text-muted\">\r\n <mat-icon class=\"fs-5 d-flex align-items-center justify-content-center\">shopping_bag</mat-icon>\r\n <small>{{appointmentDetails?.items?.length ?? 0}}\r\n items</small>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Mobile Header -->\r\n <div class=\"card border-0 shadow-sm mb-3\" *ngIf=\"isMobile\">\r\n <div class=\"card-body d-flex justify-content-between align-items-center py-3\">\r\n <h2 class=\"h4 mb-0 fw-semibold\">{{appointmentDetails.appointmentDisplayId}}</h2>\r\n <div></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row g-4\">\r\n <!-- Left Column -->\r\n <div class=\"col-12\" [ngClass]=\"{'col-lg-8': !isMobile}\">\r\n\r\n <!-- Timeline for Desktop -->\r\n\r\n <!-- Items Section -->\r\n <div class=\"card border-0 shadow-sm mb-4\">\r\n <div class=\"card-header py-3\">\r\n <h4 class=\"h5 mb-0 d-flex align-items-center gap-2 f-16\">\r\n <mat-icon>shopping_cart</mat-icon>\r\n Items\r\n </h4>\r\n </div>\r\n <div class=\"card-body p-4 scroll-45\">\r\n <div class=\"row g-3\">\r\n <div class=\"col-12\" *ngFor=\"let item of appointmentDetails?.items ?? []\">\r\n <div class=\"item\">\r\n <div class=\"item-image\" *ngIf=\"!item.imgUrl\">\r\n NO IMAGE<br>AVAILABLE\r\n </div>\r\n <img class=\"item-image\" [src]=\"item.imgUrl\" alt=\"\" *ngIf=\"item.imgUrl\">\r\n <div class=\"item-details\">\r\n <div class=\"item-name\">{{item.itemName}}</div>\r\n <!-- <div class=\"item-description\">High-quality test item with advanced features and premium materials</div> -->\r\n <!-- <div class=\"item-meta\">\r\n <span>SKU: TST-001</span>\r\n <span>Qty: 1</span>\r\n <span>Weight: 2.5 lbs</span>\r\n </div> -->\r\n </div>\r\n <div class=\"item-price\">\r\n <div class=\"current-price\">\u20B9{{item.discountedPrice}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Timeline for Mobile -->\r\n <!-- <ng-container *ngIf=\"isMobile\">\r\n <ng-container *ngTemplateOutlet=\"timelineContainer\"></ng-container>\r\n </ng-container> -->\r\n </div>\r\n\r\n <!-- Right Column -->\r\n <div class=\"col-12 scroll-60\" [ngClass]=\"{'col-lg-4': !isMobile}\">\r\n\r\n <!-- Bill Details -->\r\n <div class=\"card border-0 shadow-sm mb-4\">\r\n <div class=\"card-header py-3 cursor-pointer\" (click)=\"toggleSection('billDetails')\">\r\n <h4 class=\"h5 mb-0 d-flex align-items-center justify-content-between f-16\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <mat-icon>receipt</mat-icon>\r\n Bill Details\r\n </div>\r\n <mat-icon class=\"transition-transform\" [class.rotate-180]=\"!sectionsVisible.billDetails\">\r\n expand_more\r\n </mat-icon>\r\n </h4>\r\n </div>\r\n <div class=\"card-body p-4\" [class.d-none]=\"!sectionsVisible.billDetails\">\r\n <div class=\"d-flex justify-content-between align-items-center py-2 border-bottom\">\r\n <span class=\"d-flex align-items-center gap-2 text-muted\">\r\n Free Trial\r\n </span>\r\n <span class=\"fw-semibold text-success h6 mb-0\">\r\n <span [innerHTML]=\"currency\"></span>0\r\n </span>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center py-2 border-bottom\">\r\n <span class=\"d-flex align-items-center gap-2 text-muted\">\r\n Service Charge\r\n </span>\r\n <span class=\"fw-bold text-success h6 mb-0\">FREE</span>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center py-3 rounded\">\r\n <span class=\"fw-bold h5 mb-0 text-dark fs-1\">Grand Total</span>\r\n <span class=\"fw-bold h4 mb-0 fs-1\">\r\n <span [innerHTML]=\"currency\"></span>0\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Customer Details -->\r\n <div class=\"card border-0 shadow-sm mb-4\">\r\n <div class=\"card-header py-3 cursor-pointer\" (click)=\"toggleSection('deliveryDetails')\">\r\n <h4 class=\"h5 mb-0 d-flex align-items-center justify-content-between f-16\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <mat-icon>person</mat-icon>\r\n Customer Details\r\n </div>\r\n <mat-icon class=\"transition-transform\" [class.rotate-180]=\"!sectionsVisible.deliveryDetails\">\r\n expand_more\r\n </mat-icon>\r\n </h4>\r\n </div>\r\n <div class=\"card-body p-4\" [class.d-none]=\"!sectionsVisible.deliveryDetails\">\r\n <div class=\"mb-3\">\r\n <div class=\"d-flex align-items-center gap-3 p-2 bg-light rounded\">\r\n <div>\r\n <small class=\"text-muted d-block\">Name</small>\r\n <span class=\"fw-semibold\">{{appointmentDetails.addressDetails.receiverName}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <div class=\"d-flex align-items-center gap-3 p-2 bg-light rounded\">\r\n <div>\r\n <small class=\"text-muted d-block\">Phone</small>\r\n <span class=\"fw-semibold\">{{appointmentDetails.addressDetails.receiverPhone}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <div class=\"d-flex align-items-start gap-3 p-2 bg-light rounded\">\r\n <div>\r\n <small class=\"text-muted d-block\">Address</small>\r\n <span class=\"fw-semibold\">{{appointmentDetails.addressDetails.addressLine1}}\r\n {{appointmentDetails.addressDetails.zipCode}} {{appointmentDetails.addressDetails.cityName}}\r\n {{appointmentDetails.addressDetails.stateName}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Timeline Section for Desktop -->\r\n <div class=\"card border-0 shadow-sm mb-4\" *ngIf=\"!isMobile\">\r\n <div class=\"card-header py-3 cursor-pointer\" (click)=\"toggleSection('timeline')\">\r\n <h4 class=\"h5 mb-0 d-flex align-items-center justify-content-between f-16\r\n\r\n \">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <mat-icon>timeline</mat-icon>\r\n Order Timeline\r\n </div>\r\n <mat-icon class=\"transition-transform\" [class.rotate-180]=\"!sectionsVisible.timeline\">\r\n expand_more\r\n </mat-icon>\r\n </h4>\r\n </div>\r\n <div class=\"card-body p-4\" [class.d-none]=\"!sectionsVisible.timeline\">\r\n <p-timeline [value]=\"orderTimiline\">\r\n <ng-template pTemplate=\"content\" let-event>\r\n <div class=\"d-flex align-items-start gap-3 py-3\">\r\n <div class=\"rounded-circle p-2 d-flex align-items-center justify-content-center\"\r\n style=\"width: 40px; height: 40px;\">\r\n <mat-icon class=\"fs-6 d-flex align-items-center justify-content-center\">{{\r\n event.icon }}</mat-icon>\r\n </div>\r\n <div class=\"flex-grow-1\">\r\n <h6 class=\"fw-semibold text-dark mb-1\">{{ event.name?.replaceAll(\"_\", \" \") |\r\n titlecase }} {{event.status.replaceAll('_', ' ')}}</h6>\r\n <p class=\"text-muted mb-0 small\">{{ event.desc?.replaceAll(\"_\", \" \") }}</p>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-timeline>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Timeline Template -->\r\n <ng-template #timelineContainer>\r\n <div class=\"card border-0 shadow-sm mb-4\">\r\n <div class=\"card-header bg-warning text-dark py-2 f-16\">\r\n <h4 class=\"h5 mb-0 d-flex align-items-center gap-2\">\r\n <mat-icon>timeline</mat-icon>\r\n Order Timeline\r\n </h4>\r\n </div>\r\n <div class=\"card-body p-4\">\r\n <p-timeline [value]=\"orderTimiline\">\r\n <ng-template pTemplate=\"content\" let-event>\r\n <div class=\"d-flex align-items-start gap-3 py-3\">\r\n <div class=\"bg-primary rounded-circle p-2 d-flex align-items-center justify-content-center\"\r\n style=\"width: 40px; height: 40px;\">\r\n <mat-icon class=\"text-white fs-6 d-flex align-items-center justify-content-center\">{{\r\n event.icon }}</mat-icon>\r\n </div>\r\n <div class=\"flex-grow-1\">\r\n <h6 class=\"fw-semibold text-dark mb-1\">{{ event.name?.replaceAll(\"_\", \" \") | titlecase }}\r\n </h6>\r\n <p class=\"text-muted mb-0 small\">{{ event.desc?.replaceAll(\"_\", \" \") | titlecase }}</p>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-timeline>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Loading Skeleton -->\r\n <div class=\"container-fluid py-4\" *ngIf=\"false\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <ngx-skeleton-loader count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '60vh',\r\n 'border-radius': '12px',\r\n 'margin': '20px 0'\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #showEmptyScreen>\r\n <section class=\"empty-cart m-auto\">\r\n <div>\r\n <div class=\"cart-image\">\r\n <img loading=\"lazy\" src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/107213c1716543334040empty-cart.png\"\r\n >\r\n </div>\r\n <div class=\"cart-text \">\r\n <!-- <ng-container *ngFor=\"let text of content?.inputText\"> -->\r\n <div class=\"heading-medium d-flex justify-content-center content-side\">\r\n <div class=\"heading-medium\">No Booked Appointment</div>\r\n </div>\r\n <!-- </ng-container> -->\r\n </div>\r\n </div>\r\n </section>\r\n</ng-template>\r\n", styles: [".order-card{transition:all .3s ease;border-radius:12px!important;background:linear-gradient(135deg,#fff,#f8f9fa)}.order-card:hover{transform:translateY(-2px);box-shadow:0 8px 25px #0000001a!important;border-color:#007bff!important}.order-card .card-body{position:relative;overflow:hidden}.order-card:before{content:\"\";position:absolute;top:0;left:0;width:4px;height:100%;background:var(--background-color);border-radius:0 4px 4px 0}.arrow-icon mat-icon{font-size:16px;transition:transform .3s ease}.order-card:hover .arrow-icon mat-icon{transform:translate(3px)}@media (max-width: 576px){.order-card .card-body{padding:1rem!important}.order-details .d-flex{flex-direction:column!important}.amount-section,.status-section{text-align:center}}.right{height:250px;padding:15px;background-color:#f8f8f8;border-radius:8px;color:#000}*{font-family:var(--website-font-family)}hr{border-top-width:2px;margin:15px 0}.f-13{font-size:13px}.f-16{font-size:16px}.fw-800{font-weight:800}.br-6{border-radius:6px}textarea{resize:unset}.action-btn>button{font-size:14px!important;border:none;width:fit-content!important;margin-top:5px;border-radius:3px;padding:5px 10px;background-color:tomato;color:#fff}.mat-icon{height:30px;width:30px;font-size:30px}.timeline{margin:25px 0}.onlyMobile{display:none}.track-order{background-color:#000;color:#fff;border:1px solid black;width:auto;border-radius:3px;padding:5px}@media only screen and (max-width: 475px){.onlyDesktop{display:none!important}.onlyMobile{display:block}.mat-icon{width:46px}.time-line{padding-bottom:6px}.right{width:98%!important;margin-bottom:4px!important;height:auto!important;padding:15px!important;margin-top:5%}.main-section{width:100%!important;flex-direction:column!important}.left{width:100%!important;padding:3%}.orderNum{margin-bottom:25px}}@media (min-width:768px) and (max-width:1024px){.left{padding:3%;width:70%}.right{width:28%!important;padding:2%;margin-top:10%;margin-right:3%}}.mt-25{margin-top:25px}.cp{cursor:pointer}.item-summary{box-shadow:0 0 4px #00000040;border-radius:12px}mat-icon{font-family:Material Icons!important}::ng-deep .p-rating-icon{color:#ffc107!important;font-size:1.25rem!important}::ng-deep .p-timeline-event-content{padding:0!important}::ng-deep .p-timeline-event-connector{background:#000!important;width:3px!important;position:absolute;bottom:-20px;height:55px;left:18px}.sbt-btn{border-radius:8px}::ng-deep .p-timeline-event-marker{display:none!important}@media screen and (min-width: 1200px){.scroll-45{overflow-y:scroll;height:45vh}.scroll-60{overflow-y:scroll;height:60vh}}.f-16{font-size:16px!important}.f-13{font-size:13px!important}@media (max-width: 575.98px){.display-6{font-size:1.5rem}.h3{font-size:1.25rem}}.gap-3{gap:1rem!important}.shadow-sm{box-shadow:0 .125rem .5rem #0000001a!important}.card-header{border-bottom:unset!important}.btn:hover{transform:translateY(-1px);transition:all .2s ease}.card:hover{transform:translateY(-2px);transition:all .3s ease}.bg-opacity-10{background-color:rgba(var(--bs-primary-rgb),.1)!important}.cursor-pointer{cursor:pointer}.transition-transform{transition:transform .3s ease}.rotate-180{transform:rotate(180deg)}.card-header:hover{opacity:.9;transition:opacity .2s ease}.card-body{transition:all .3s ease}.item{padding:0 10px;border-bottom:1px solid #f1f5f9;display:flex;align-items:center;gap:20px}.item:last-child{border-bottom:none}.item-image{width:80px;height:80px;background:#f1f5f9;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#94a3b8;font-size:12px;text-align:center;border:2px dashed #cbd5e1}.item-details{flex:1}.item-name{font-size:16px;font-weight:600;color:#0f172a;margin-bottom:4px}.item-description{color:#64748b;font-size:14px;margin-bottom:8px}.item-meta{display:flex;gap:16px;font-size:12px;color:#94a3b8}.item-price{text-align:right}.current-price{font-size:18px;font-weight:700;color:#0f172a}.original-price{font-size:14px;color:#94a3b8;text-decoration:line-through;margin-bottom:4px}.fs-1{font-size:1rem!important}.PENDING{background-color:#fffce1;color:#bdad18}.CONFIRMED{background-color:#ffe5d1;color:#d97a3b}.NO_SHOW{background-color:#d1e7ff;color:#3b82d9}.COMPLETED{color:#097d5f;background-color:#edfffa}.CANCELLED{background-color:#ffdddb;color:#c11a0f}.order-status{border-radius:2px;padding:5px 10px;font-size:12px}.cart-image{display:flex;justify-content:center}.cart-image img{width:17%}\n"], dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i4.TitleCasePipe, name: "titlecase" }, { kind: "ngmodule", type: SimpoComponentModule }, { kind: "component", type: i5.NgxSkeletonLoaderComponent, selector: "ngx-skeleton-loader", inputs: ["count", "loadingText", "appearance", "animation", "ariaLabel", "theme"] }, { kind: "ngmodule", type: TimelineModule }, { kind: "component", type: i6.Timeline, selector: "p-timeline", inputs: ["value", "style", "styleClass", "align", "layout"] }, { kind: "directive", type: i7.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }] }); }
89
+ }
90
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ListHomeAppointmentComponent, decorators: [{
91
+ type: Component,
92
+ args: [{ selector: 'simpo-list-home-appointment', standalone: true, imports: [MatIconModule, CommonModule, SimpoComponentModule, TimelineModule], template: "<section>\r\n <div class=\"row\" *ngIf=\"currentTab === 'BOOKING_LIST'\">\r\n <div *ngIf=\"homeAppointmentList.length == 0\">\r\n <ng-container *ngTemplateOutlet=\"showEmptyScreen\"></ng-container>\r\n </div>\r\n <div *ngFor=\"let appointment of homeAppointmentList\" class=\"col-md-4 col-12\">\r\n <ng-container *ngTemplateOutlet=\"appointmentCard;context:{data: appointment}\"></ng-container>\r\n </div>\r\n </div>\r\n <div *ngIf=\"currentTab === 'BOOKING_DETAIL'\">\r\n <ng-container *ngTemplateOutlet=\"BookingDetail\"></ng-container>\r\n </div>\r\n</section>\r\n<ng-template #appointmentCard let-appointment=\"data\">\r\n <div class=\"card shadow-sm border-0 mb-2 cursor-pointer order-card\" (click)=\"viewBookingDetail(appointment)\">\r\n <div class=\"card-body p-3\">\r\n <!-- Header Section -->\r\n <div class=\"d-flex justify-content-between align-items-center mb-3\">\r\n <div class=\"order-number\">\r\n <h4 class=\"mb-0 fw-semibold\">{{appointment.appointmentDisplayId}}</h4>\r\n </div>\r\n <div class=\"arrow-icon\">\r\n <mat-icon class=\"text-muted\">arrow_forward_ios</mat-icon>\r\n </div>\r\n </div>\r\n <!-- Middle Section -->\r\n <div class=\"order-details\">\r\n <div class=\"d-flex flex-column flex-sm-row justify-content-between align-items-start mb-3\">\r\n <span class=\"text-muted small mb-3 mb-sm-0\">\r\n {{appointment.time}} {{appointment.date}}\r\n </span>\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between align-items-center\">\r\n <!-- <div class=\"amount-section\">\r\n <span class=\"h5 mb-0 text-success fw-bold\">\r\n <span [innerHTML]=\"currency\"></span>\r\n 123\r\n </span>\r\n </div> -->\r\n <div class=\"status-section\">\r\n <span [attr.class]=\"appointment.status + ' order-status'\">\r\n {{appointment.status.replaceAll('_', ' ')}}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #BookingDetail>\r\n <ng-container>\r\n <div class=\"container-fluid\">\r\n\r\n <!-- Header Section -->\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div class=\"d-flex align-items-center gap-3\">\r\n <mat-icon (click)=\"backToAppointmentList()\" class=\"cursor-pointer\">keyboard_backspace</mat-icon>\r\n <h3 class=\"fw-bold text-dark mb-0\">{{appointmentDetails.appointmentDisplayId}}</h3>\r\n </div>\r\n <div class=\"d-flex flex-wrap gap-2 mb-2\">\r\n <span class=\"d-flex align-items-center text-muted\">\r\n <mat-icon class=\"fs-5 d-flex align-items-center justify-content-start\">schedule</mat-icon>\r\n <small>{{appointmentDetails.time}} {{appointmentDetails.date}}</small>\r\n </span>\r\n <span class=\"d-flex align-items-center text-muted\">\r\n <mat-icon class=\"fs-5 d-flex align-items-center justify-content-center\">shopping_bag</mat-icon>\r\n <small>{{appointmentDetails?.items?.length ?? 0}}\r\n items</small>\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Mobile Header -->\r\n <div class=\"card border-0 shadow-sm mb-3\" *ngIf=\"isMobile\">\r\n <div class=\"card-body d-flex justify-content-between align-items-center py-3\">\r\n <h2 class=\"h4 mb-0 fw-semibold\">{{appointmentDetails.appointmentDisplayId}}</h2>\r\n <div></div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row g-4\">\r\n <!-- Left Column -->\r\n <div class=\"col-12\" [ngClass]=\"{'col-lg-8': !isMobile}\">\r\n\r\n <!-- Timeline for Desktop -->\r\n\r\n <!-- Items Section -->\r\n <div class=\"card border-0 shadow-sm mb-4\">\r\n <div class=\"card-header py-3\">\r\n <h4 class=\"h5 mb-0 d-flex align-items-center gap-2 f-16\">\r\n <mat-icon>shopping_cart</mat-icon>\r\n Items\r\n </h4>\r\n </div>\r\n <div class=\"card-body p-4 scroll-45\">\r\n <div class=\"row g-3\">\r\n <div class=\"col-12\" *ngFor=\"let item of appointmentDetails?.items ?? []\">\r\n <div class=\"item\">\r\n <div class=\"item-image\" *ngIf=\"!item.imgUrl\">\r\n NO IMAGE<br>AVAILABLE\r\n </div>\r\n <img class=\"item-image\" [src]=\"item.imgUrl\" alt=\"\" *ngIf=\"item.imgUrl\">\r\n <div class=\"item-details\">\r\n <div class=\"item-name\">{{item.itemName}}</div>\r\n <!-- <div class=\"item-description\">High-quality test item with advanced features and premium materials</div> -->\r\n <!-- <div class=\"item-meta\">\r\n <span>SKU: TST-001</span>\r\n <span>Qty: 1</span>\r\n <span>Weight: 2.5 lbs</span>\r\n </div> -->\r\n </div>\r\n <div class=\"item-price\">\r\n <div class=\"current-price\">\u20B9{{item.discountedPrice}}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Timeline for Mobile -->\r\n <!-- <ng-container *ngIf=\"isMobile\">\r\n <ng-container *ngTemplateOutlet=\"timelineContainer\"></ng-container>\r\n </ng-container> -->\r\n </div>\r\n\r\n <!-- Right Column -->\r\n <div class=\"col-12 scroll-60\" [ngClass]=\"{'col-lg-4': !isMobile}\">\r\n\r\n <!-- Bill Details -->\r\n <div class=\"card border-0 shadow-sm mb-4\">\r\n <div class=\"card-header py-3 cursor-pointer\" (click)=\"toggleSection('billDetails')\">\r\n <h4 class=\"h5 mb-0 d-flex align-items-center justify-content-between f-16\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <mat-icon>receipt</mat-icon>\r\n Bill Details\r\n </div>\r\n <mat-icon class=\"transition-transform\" [class.rotate-180]=\"!sectionsVisible.billDetails\">\r\n expand_more\r\n </mat-icon>\r\n </h4>\r\n </div>\r\n <div class=\"card-body p-4\" [class.d-none]=\"!sectionsVisible.billDetails\">\r\n <div class=\"d-flex justify-content-between align-items-center py-2 border-bottom\">\r\n <span class=\"d-flex align-items-center gap-2 text-muted\">\r\n Free Trial\r\n </span>\r\n <span class=\"fw-semibold text-success h6 mb-0\">\r\n <span [innerHTML]=\"currency\"></span>0\r\n </span>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center py-2 border-bottom\">\r\n <span class=\"d-flex align-items-center gap-2 text-muted\">\r\n Service Charge\r\n </span>\r\n <span class=\"fw-bold text-success h6 mb-0\">FREE</span>\r\n </div>\r\n\r\n <div class=\"d-flex justify-content-between align-items-center py-3 rounded\">\r\n <span class=\"fw-bold h5 mb-0 text-dark fs-1\">Grand Total</span>\r\n <span class=\"fw-bold h4 mb-0 fs-1\">\r\n <span [innerHTML]=\"currency\"></span>0\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Customer Details -->\r\n <div class=\"card border-0 shadow-sm mb-4\">\r\n <div class=\"card-header py-3 cursor-pointer\" (click)=\"toggleSection('deliveryDetails')\">\r\n <h4 class=\"h5 mb-0 d-flex align-items-center justify-content-between f-16\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <mat-icon>person</mat-icon>\r\n Customer Details\r\n </div>\r\n <mat-icon class=\"transition-transform\" [class.rotate-180]=\"!sectionsVisible.deliveryDetails\">\r\n expand_more\r\n </mat-icon>\r\n </h4>\r\n </div>\r\n <div class=\"card-body p-4\" [class.d-none]=\"!sectionsVisible.deliveryDetails\">\r\n <div class=\"mb-3\">\r\n <div class=\"d-flex align-items-center gap-3 p-2 bg-light rounded\">\r\n <div>\r\n <small class=\"text-muted d-block\">Name</small>\r\n <span class=\"fw-semibold\">{{appointmentDetails.addressDetails.receiverName}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <div class=\"d-flex align-items-center gap-3 p-2 bg-light rounded\">\r\n <div>\r\n <small class=\"text-muted d-block\">Phone</small>\r\n <span class=\"fw-semibold\">{{appointmentDetails.addressDetails.receiverPhone}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-3\">\r\n <div class=\"d-flex align-items-start gap-3 p-2 bg-light rounded\">\r\n <div>\r\n <small class=\"text-muted d-block\">Address</small>\r\n <span class=\"fw-semibold\">{{appointmentDetails.addressDetails.addressLine1}}\r\n {{appointmentDetails.addressDetails.zipCode}} {{appointmentDetails.addressDetails.cityName}}\r\n {{appointmentDetails.addressDetails.stateName}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Timeline Section for Desktop -->\r\n <div class=\"card border-0 shadow-sm mb-4\" *ngIf=\"!isMobile\">\r\n <div class=\"card-header py-3 cursor-pointer\" (click)=\"toggleSection('timeline')\">\r\n <h4 class=\"h5 mb-0 d-flex align-items-center justify-content-between f-16\r\n\r\n \">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <mat-icon>timeline</mat-icon>\r\n Order Timeline\r\n </div>\r\n <mat-icon class=\"transition-transform\" [class.rotate-180]=\"!sectionsVisible.timeline\">\r\n expand_more\r\n </mat-icon>\r\n </h4>\r\n </div>\r\n <div class=\"card-body p-4\" [class.d-none]=\"!sectionsVisible.timeline\">\r\n <p-timeline [value]=\"orderTimiline\">\r\n <ng-template pTemplate=\"content\" let-event>\r\n <div class=\"d-flex align-items-start gap-3 py-3\">\r\n <div class=\"rounded-circle p-2 d-flex align-items-center justify-content-center\"\r\n style=\"width: 40px; height: 40px;\">\r\n <mat-icon class=\"fs-6 d-flex align-items-center justify-content-center\">{{\r\n event.icon }}</mat-icon>\r\n </div>\r\n <div class=\"flex-grow-1\">\r\n <h6 class=\"fw-semibold text-dark mb-1\">{{ event.name?.replaceAll(\"_\", \" \") |\r\n titlecase }} {{event.status.replaceAll('_', ' ')}}</h6>\r\n <p class=\"text-muted mb-0 small\">{{ event.desc?.replaceAll(\"_\", \" \") }}</p>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-timeline>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Timeline Template -->\r\n <ng-template #timelineContainer>\r\n <div class=\"card border-0 shadow-sm mb-4\">\r\n <div class=\"card-header bg-warning text-dark py-2 f-16\">\r\n <h4 class=\"h5 mb-0 d-flex align-items-center gap-2\">\r\n <mat-icon>timeline</mat-icon>\r\n Order Timeline\r\n </h4>\r\n </div>\r\n <div class=\"card-body p-4\">\r\n <p-timeline [value]=\"orderTimiline\">\r\n <ng-template pTemplate=\"content\" let-event>\r\n <div class=\"d-flex align-items-start gap-3 py-3\">\r\n <div class=\"bg-primary rounded-circle p-2 d-flex align-items-center justify-content-center\"\r\n style=\"width: 40px; height: 40px;\">\r\n <mat-icon class=\"text-white fs-6 d-flex align-items-center justify-content-center\">{{\r\n event.icon }}</mat-icon>\r\n </div>\r\n <div class=\"flex-grow-1\">\r\n <h6 class=\"fw-semibold text-dark mb-1\">{{ event.name?.replaceAll(\"_\", \" \") | titlecase }}\r\n </h6>\r\n <p class=\"text-muted mb-0 small\">{{ event.desc?.replaceAll(\"_\", \" \") | titlecase }}</p>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-timeline>\r\n </div>\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Loading Skeleton -->\r\n <div class=\"container-fluid py-4\" *ngIf=\"false\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <ngx-skeleton-loader count=\"1\" appearance=\"circle\" [theme]=\"{\r\n width: '100%',\r\n height: '60vh',\r\n 'border-radius': '12px',\r\n 'margin': '20px 0'\r\n }\"></ngx-skeleton-loader>\r\n </div>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #showEmptyScreen>\r\n <section class=\"empty-cart m-auto\">\r\n <div>\r\n <div class=\"cart-image\">\r\n <img loading=\"lazy\" src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/107213c1716543334040empty-cart.png\"\r\n >\r\n </div>\r\n <div class=\"cart-text \">\r\n <!-- <ng-container *ngFor=\"let text of content?.inputText\"> -->\r\n <div class=\"heading-medium d-flex justify-content-center content-side\">\r\n <div class=\"heading-medium\">No Booked Appointment</div>\r\n </div>\r\n <!-- </ng-container> -->\r\n </div>\r\n </div>\r\n </section>\r\n</ng-template>\r\n", styles: [".order-card{transition:all .3s ease;border-radius:12px!important;background:linear-gradient(135deg,#fff,#f8f9fa)}.order-card:hover{transform:translateY(-2px);box-shadow:0 8px 25px #0000001a!important;border-color:#007bff!important}.order-card .card-body{position:relative;overflow:hidden}.order-card:before{content:\"\";position:absolute;top:0;left:0;width:4px;height:100%;background:var(--background-color);border-radius:0 4px 4px 0}.arrow-icon mat-icon{font-size:16px;transition:transform .3s ease}.order-card:hover .arrow-icon mat-icon{transform:translate(3px)}@media (max-width: 576px){.order-card .card-body{padding:1rem!important}.order-details .d-flex{flex-direction:column!important}.amount-section,.status-section{text-align:center}}.right{height:250px;padding:15px;background-color:#f8f8f8;border-radius:8px;color:#000}*{font-family:var(--website-font-family)}hr{border-top-width:2px;margin:15px 0}.f-13{font-size:13px}.f-16{font-size:16px}.fw-800{font-weight:800}.br-6{border-radius:6px}textarea{resize:unset}.action-btn>button{font-size:14px!important;border:none;width:fit-content!important;margin-top:5px;border-radius:3px;padding:5px 10px;background-color:tomato;color:#fff}.mat-icon{height:30px;width:30px;font-size:30px}.timeline{margin:25px 0}.onlyMobile{display:none}.track-order{background-color:#000;color:#fff;border:1px solid black;width:auto;border-radius:3px;padding:5px}@media only screen and (max-width: 475px){.onlyDesktop{display:none!important}.onlyMobile{display:block}.mat-icon{width:46px}.time-line{padding-bottom:6px}.right{width:98%!important;margin-bottom:4px!important;height:auto!important;padding:15px!important;margin-top:5%}.main-section{width:100%!important;flex-direction:column!important}.left{width:100%!important;padding:3%}.orderNum{margin-bottom:25px}}@media (min-width:768px) and (max-width:1024px){.left{padding:3%;width:70%}.right{width:28%!important;padding:2%;margin-top:10%;margin-right:3%}}.mt-25{margin-top:25px}.cp{cursor:pointer}.item-summary{box-shadow:0 0 4px #00000040;border-radius:12px}mat-icon{font-family:Material Icons!important}::ng-deep .p-rating-icon{color:#ffc107!important;font-size:1.25rem!important}::ng-deep .p-timeline-event-content{padding:0!important}::ng-deep .p-timeline-event-connector{background:#000!important;width:3px!important;position:absolute;bottom:-20px;height:55px;left:18px}.sbt-btn{border-radius:8px}::ng-deep .p-timeline-event-marker{display:none!important}@media screen and (min-width: 1200px){.scroll-45{overflow-y:scroll;height:45vh}.scroll-60{overflow-y:scroll;height:60vh}}.f-16{font-size:16px!important}.f-13{font-size:13px!important}@media (max-width: 575.98px){.display-6{font-size:1.5rem}.h3{font-size:1.25rem}}.gap-3{gap:1rem!important}.shadow-sm{box-shadow:0 .125rem .5rem #0000001a!important}.card-header{border-bottom:unset!important}.btn:hover{transform:translateY(-1px);transition:all .2s ease}.card:hover{transform:translateY(-2px);transition:all .3s ease}.bg-opacity-10{background-color:rgba(var(--bs-primary-rgb),.1)!important}.cursor-pointer{cursor:pointer}.transition-transform{transition:transform .3s ease}.rotate-180{transform:rotate(180deg)}.card-header:hover{opacity:.9;transition:opacity .2s ease}.card-body{transition:all .3s ease}.item{padding:0 10px;border-bottom:1px solid #f1f5f9;display:flex;align-items:center;gap:20px}.item:last-child{border-bottom:none}.item-image{width:80px;height:80px;background:#f1f5f9;border-radius:8px;display:flex;align-items:center;justify-content:center;color:#94a3b8;font-size:12px;text-align:center;border:2px dashed #cbd5e1}.item-details{flex:1}.item-name{font-size:16px;font-weight:600;color:#0f172a;margin-bottom:4px}.item-description{color:#64748b;font-size:14px;margin-bottom:8px}.item-meta{display:flex;gap:16px;font-size:12px;color:#94a3b8}.item-price{text-align:right}.current-price{font-size:18px;font-weight:700;color:#0f172a}.original-price{font-size:14px;color:#94a3b8;text-decoration:line-through;margin-bottom:4px}.fs-1{font-size:1rem!important}.PENDING{background-color:#fffce1;color:#bdad18}.CONFIRMED{background-color:#ffe5d1;color:#d97a3b}.NO_SHOW{background-color:#d1e7ff;color:#3b82d9}.COMPLETED{color:#097d5f;background-color:#edfffa}.CANCELLED{background-color:#ffdddb;color:#c11a0f}.order-status{border-radius:2px;padding:5px 10px;font-size:12px}.cart-image{display:flex;justify-content:center}.cart-image img{width:17%}\n"] }]
93
+ }], ctorParameters: () => [{ type: i1.RestService }, { type: i2.StorageServiceService }] });
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1ob21lLWFwcG9pbnRtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWxlbWVudHMvbGlzdC1ob21lLWFwcG9pbnRtZW50L2xpc3QtaG9tZS1hcHBvaW50bWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL2xpc3QtaG9tZS1hcHBvaW50bWVudC9saXN0LWhvbWUtYXBwb2ludG1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDdkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7O0FBWWxELE1BQU0sT0FBTyw0QkFBNEI7SUFzQnZDLFlBQW9CLFdBQXdCLEVBQVUsY0FBcUM7UUFBdkUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBdUI7UUFyQjNGLG9CQUFlLEdBQUc7WUFDaEIsV0FBVyxFQUFFLElBQUk7WUFDakIsZUFBZSxFQUFFLEtBQUs7WUFDdEIsUUFBUSxFQUFFLEtBQUs7U0FDaEIsQ0FBQztRQUNGLGVBQVUsR0FBc0MsY0FBYyxDQUFBO1FBQ3ZELGtCQUFhLEdBQVE7WUFDMUI7Z0JBQ0UsY0FBYyxFQUFFLHNDQUFzQztnQkFDdEQsYUFBYSxFQUFFLHNDQUFzQztnQkFDckQsWUFBWSxFQUFFLHNDQUFzQztnQkFDcEQsT0FBTyxFQUFFLGVBQWU7Z0JBQ3hCLE1BQU0sRUFBRSxxQ0FBcUM7Z0JBQzdDLE1BQU0sRUFBRSwrQkFBK0I7Z0JBQ3ZDLGFBQWEsRUFBRSxjQUFjO2dCQUM3QixhQUFhLEVBQUUsT0FBTzthQUN2QjtTQUNGLENBQUM7UUFDRix3QkFBbUIsR0FBVSxFQUFFLENBQUE7SUFHK0QsQ0FBQztJQUUvRixRQUFRO1FBRU4sSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFBO1FBQzFDLGdFQUFnRTtRQUNoRSxJQUFJLENBQUMsV0FBVyxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDakYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUE7UUFDckMsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDO0lBRU8sT0FBTyxDQUFDLElBQXFFO1FBQ25GLFFBQVEsSUFBSSxFQUFFLENBQUM7WUFDYixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssV0FBVztnQkFDZCxPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFNBQVM7Z0JBQ1osT0FBTyxnQkFBZ0IsQ0FBQztZQUMxQixLQUFLLFdBQVc7Z0JBQ2QsT0FBTyxPQUFPLENBQUM7WUFDakIsS0FBSyxXQUFXO2dCQUNkLE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxDQUFDLE9BQTBDO1FBQ3RELElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixPQUFPLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztJQUNyQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxNQUFNLENBQUMsVUFBVSxJQUFJLEdBQUcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsaUJBQWlCLENBQUMsaUJBQXNCO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUE7UUFDbEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGlCQUFpQixDQUFDO1FBRTVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFlBQVksRUFBRSxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNoRixPQUFPO2dCQUNMLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztnQkFDOUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLO2dCQUNwQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7Z0JBQ25CLE1BQU0sRUFBRSxRQUFRLENBQUMsaUJBQWlCO2FBQ25DLENBQUE7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxjQUFjLENBQUE7UUFDaEMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQTtJQUNoQyxDQUFDOytHQWhGVSw0QkFBNEI7bUdBQTVCLDRCQUE0Qix1RkNqQnpDLCswY0ErVEEsMDJJRGxUWSxhQUFhLG1MQUFFLFlBQVksaWtCQUFFLG9CQUFvQiw4TUFBRSxjQUFjOzs0RkFJaEUsNEJBQTRCO2tCQVB4QyxTQUFTOytCQUNFLDZCQUE2QixjQUMzQixJQUFJLFdBQ1AsQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IEJVU0lORVNTX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9idXNpbmVzcy5jb25zdGFudCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFNpbXBvQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9pbmRleCc7XHJcbmltcG9ydCB7IFRpbWVsaW5lTW9kdWxlIH0gZnJvbSAncHJpbWVuZy90aW1lbGluZSc7XHJcbmltcG9ydCB7IFJlc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVzdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgdGltZSB9IGZyb20gJ2NvbnNvbGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1saXN0LWhvbWUtYXBwb2ludG1lbnQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW01hdEljb25Nb2R1bGUsIENvbW1vbk1vZHVsZSwgU2ltcG9Db21wb25lbnRNb2R1bGUsIFRpbWVsaW5lTW9kdWxlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1ob21lLWFwcG9pbnRtZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybDogJy4vbGlzdC1ob21lLWFwcG9pbnRtZW50LmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBMaXN0SG9tZUFwcG9pbnRtZW50Q29tcG9uZW50IHtcclxuICBzZWN0aW9uc1Zpc2libGUgPSB7XHJcbiAgICBiaWxsRGV0YWlsczogdHJ1ZSxcclxuICAgIGRlbGl2ZXJ5RGV0YWlsczogZmFsc2UsXHJcbiAgICB0aW1lbGluZTogZmFsc2VcclxuICB9O1xyXG4gIGN1cnJlbnRUYWI6ICdCT09LSU5HX0xJU1QnIHwgJ0JPT0tJTkdfREVUQUlMJyA9ICdCT09LSU5HX0xJU1QnXHJcbiAgcHVibGljIG9yZGVyVGltaWxpbmU6IGFueSA9IFtcclxuICAgIHtcclxuICAgICAgXCJicmFuZE9yZGVySWRcIjogXCIxZjA2OTJiNS1iYzM3LTZhZWYtOTc5Ny0zMzcxOGNhOTAzNGRcIixcclxuICAgICAgXCJ1c2VyT3JkZXJJZFwiOiBcIjFmMDY5MmI1LWJjMjQtNjI2ZS05Nzk3LTIxZGZhYWMzYzQ1MlwiLFxyXG4gICAgICBcImJ1c2luZXNzSWRcIjogXCIxZjA1ZjA4NS1kODY1LTZiYzUtODJiNC0wNTcwNjY3ZDZmNWVcIixcclxuICAgICAgXCJ0aXRsZVwiOiBcIk9yZGVyIENyZWF0ZWRcIixcclxuICAgICAgXCJib2R5XCI6IFwiT3JkZXIgI0NBUjAwOSBDcmVhdGVkIG9uIDI1LTA3LTIwMjVcIixcclxuICAgICAgXCJkYXRlXCI6IFwiMjAyNS0wNy0yNVQwNzo0NTozOS4yNTYrMDA6MDBcIixcclxuICAgICAgXCJvcmRlclN0YXR1c1wiOiBcIk9SREVSX1BMQUNFRFwiLFxyXG4gICAgICBcInRpbWVsaW5lRm9yXCI6IFwiT1JERVJcIlxyXG4gICAgfVxyXG4gIF07XHJcbiAgaG9tZUFwcG9pbnRtZW50TGlzdDogYW55W10gPSBbXVxyXG4gIGFwcG9pbnRtZW50RGV0YWlsczogYW55O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlc3RTZXJ2aWNlOiBSZXN0U2VydmljZSwgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2VTZXJ2aWNlKSB7fVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuXHJcbiAgICB0aGlzLmdldEhvbWVBcHBvaW50bWVudExpc3QoKTtcclxuICB9XHJcblxyXG4gIGdldEhvbWVBcHBvaW50bWVudExpc3QoKSB7XHJcbiAgICBjb25zdCB1c2VyID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXRVc2VyKClcclxuICAgIC8vIGNvbnN0IHVzZXIgPSB7dXNlcklkOiAnNWFkNDBkZjUtNjAwNS00MDFkLTkyMjMtMjRkMzM2YWNmZGRmJ31cclxuICAgIHRoaXMucmVzdFNlcnZpY2UuZ2V0SG9tZUFwcG9pbnRtZW50TGlzdCh1c2VyPy51c2VySWQgPz8gJycpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5ob21lQXBwb2ludG1lbnRMaXN0ID0gcmVzLmRhdGFcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEljb24odHlwZTogXCJQRU5ESU5HXCIgfCBcIkNPTkZJUk1FRFwiIHwgXCJOT19TSE9XXCIgfCBcIkNPTVBMRVRFRFwiIHwgXCJDQU5DRUxMRURcIikge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgXCJQRU5ESU5HXCI6XHJcbiAgICAgIGNhc2UgXCJDT05GSVJNRURcIjpcclxuICAgICAgICByZXR1cm4gXCJ3aWRnZXRzXCI7XHJcbiAgICAgIGNhc2UgXCJOT19TSE9XXCI6XHJcbiAgICAgICAgcmV0dXJuIFwibG9jYWxfc2hpcHBpbmdcIjtcclxuICAgICAgY2FzZSBcIkNPTVBMRVRFRFwiOlxyXG4gICAgICAgIHJldHVybiBcImluYm94XCI7XHJcbiAgICAgIGNhc2UgXCJDQU5DRUxMRURcIjpcclxuICAgICAgICByZXR1cm4gXCJjYW5jZWxcIjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRvZ2dsZVNlY3Rpb24oc2VjdGlvbjoga2V5b2YgdHlwZW9mIHRoaXMuc2VjdGlvbnNWaXNpYmxlKSB7XHJcbiAgICB0aGlzLnNlY3Rpb25zVmlzaWJsZVtzZWN0aW9uXSA9ICF0aGlzLnNlY3Rpb25zVmlzaWJsZVtzZWN0aW9uXTtcclxuICB9XHJcblxyXG4gIGdldCBjdXJyZW5jeSgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIEJVU0lORVNTX0NPTlNUQU5UUy5DVVJSRU5DWTtcclxuICB9XHJcblxyXG4gIGdldCBpc01vYmlsZSgpIHtcclxuICAgIHJldHVybiB3aW5kb3cuaW5uZXJXaWR0aCA8PSA0NzU7XHJcbiAgfVxyXG5cclxuICB2aWV3Qm9va2luZ0RldGFpbChhcHBvaW50bWVudERldGFpbDogYW55KSB7XHJcbiAgICB0aGlzLmN1cnJlbnRUYWIgPSAnQk9PS0lOR19ERVRBSUwnXHJcbiAgICB0aGlzLmFwcG9pbnRtZW50RGV0YWlscyA9IGFwcG9pbnRtZW50RGV0YWlsO1xyXG5cclxuICAgIHRoaXMub3JkZXJUaW1pbGluZSA9IHRoaXMuYXBwb2ludG1lbnREZXRhaWxzPy50aW1lTGluZUxpc3Q/Lm1hcCgodGltZWxpbmU6IGFueSkgPT4ge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGljb246IHRoaXMuZ2V0SWNvbih0aW1lbGluZS5hcHBvaW50bWVudFN0YXR1cyksXHJcbiAgICAgICAgbmFtZTogdGltZWxpbmUudGl0bGUsXHJcbiAgICAgICAgZGVzYzogdGltZWxpbmUuYm9keSxcclxuICAgICAgICBzdGF0dXM6IHRpbWVsaW5lLmFwcG9pbnRtZW50U3RhdHVzXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBiYWNrVG9BcHBvaW50bWVudExpc3QoKSB7XHJcbiAgICB0aGlzLmN1cnJlbnRUYWIgPSAnQk9PS0lOR19MSVNUJ1xyXG4gICAgdGhpcy5hcHBvaW50bWVudERldGFpbHMgPSBudWxsXHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImN1cnJlbnRUYWIgPT09ICdCT09LSU5HX0xJU1QnXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiaG9tZUFwcG9pbnRtZW50TGlzdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic2hvd0VtcHR5U2NyZWVuXCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGFwcG9pbnRtZW50IG9mIGhvbWVBcHBvaW50bWVudExpc3RcIiBjbGFzcz1cImNvbC1tZC00IGNvbC0xMlwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYXBwb2ludG1lbnRDYXJkO2NvbnRleHQ6e2RhdGE6IGFwcG9pbnRtZW50fVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cImN1cnJlbnRUYWIgPT09ICdCT09LSU5HX0RFVEFJTCdcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJCb29raW5nRGV0YWlsXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcbjwvc2VjdGlvbj5cclxuPG5nLXRlbXBsYXRlICNhcHBvaW50bWVudENhcmQgbGV0LWFwcG9pbnRtZW50PVwiZGF0YVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIHNoYWRvdy1zbSBib3JkZXItMCBtYi0yIGN1cnNvci1wb2ludGVyIG9yZGVyLWNhcmRcIiAoY2xpY2spPVwidmlld0Jvb2tpbmdEZXRhaWwoYXBwb2ludG1lbnQpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtM1wiPlxyXG4gICAgICA8IS0tIEhlYWRlciBTZWN0aW9uIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0zXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm9yZGVyLW51bWJlclwiPlxyXG4gICAgICAgICAgPGg0IGNsYXNzPVwibWItMCAgZnctc2VtaWJvbGRcIj57e2FwcG9pbnRtZW50LmFwcG9pbnRtZW50RGlzcGxheUlkfX08L2g0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcnJvdy1pY29uXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ZXh0LW11dGVkXCI+YXJyb3dfZm9yd2FyZF9pb3M8L21hdC1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLSBNaWRkbGUgU2VjdGlvbiAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cIm9yZGVyLWRldGFpbHNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtc20tcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLXN0YXJ0IG1iLTNcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtYi0zIG1iLXNtLTBcIj5cclxuICAgICAgICAgICAge3thcHBvaW50bWVudC50aW1lfX0ge3thcHBvaW50bWVudC5kYXRlfX1cclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYW1vdW50LXNlY3Rpb25cIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaDUgbWItMCB0ZXh0LXN1Y2Nlc3MgZnctYm9sZFwiPlxyXG4gICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImN1cnJlbmN5XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAxMjNcclxuICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1cy1zZWN0aW9uXCI+XHJcbiAgICAgICAgICA8c3BhbiBbYXR0ci5jbGFzc109XCJhcHBvaW50bWVudC5zdGF0dXMgKyAnIG9yZGVyLXN0YXR1cydcIj5cclxuICAgICAgICAgICAge3thcHBvaW50bWVudC5zdGF0dXMucmVwbGFjZUFsbCgnXycsICcgJyl9fVxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNCb29raW5nRGV0YWlsPlxyXG4gIDxuZy1jb250YWluZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcblxyXG4gICAgICA8IS0tIEhlYWRlciBTZWN0aW9uIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTNcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIChjbGljayk9XCJiYWNrVG9BcHBvaW50bWVudExpc3QoKVwiIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIj5rZXlib2FyZF9iYWNrc3BhY2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8aDMgY2xhc3M9XCJmdy1ib2xkIHRleHQtZGFyayBtYi0wXCI+e3thcHBvaW50bWVudERldGFpbHMuYXBwb2ludG1lbnREaXNwbGF5SWR9fTwvaDM+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGdhcC0yIG1iLTJcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHRleHQtbXV0ZWRcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmcy01IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LXN0YXJ0XCI+c2NoZWR1bGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgIDxzbWFsbD57e2FwcG9pbnRtZW50RGV0YWlscy50aW1lfX0ge3thcHBvaW50bWVudERldGFpbHMuZGF0ZX19PC9zbWFsbD5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgdGV4dC1tdXRlZFwiPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImZzLTUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+c2hvcHBpbmdfYmFnPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8c21hbGw+e3thcHBvaW50bWVudERldGFpbHM/Lml0ZW1zPy5sZW5ndGggPz8gMH19XHJcbiAgICAgICAgICAgICAgICBpdGVtczwvc21hbGw+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gTW9iaWxlIEhlYWRlciAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLTAgc2hhZG93LXNtIG1iLTNcIiAqbmdJZj1cImlzTW9iaWxlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHB5LTNcIj5cclxuICAgICAgICAgIDxoMiBjbGFzcz1cImg0IG1iLTAgZnctc2VtaWJvbGRcIj57e2FwcG9pbnRtZW50RGV0YWlscy5hcHBvaW50bWVudERpc3BsYXlJZH19PC9oMj5cclxuICAgICAgICAgIDxkaXY+PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTRcIj5cclxuICAgICAgICA8IS0tIExlZnQgQ29sdW1uIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiBbbmdDbGFzc109XCJ7J2NvbC1sZy04JzogIWlzTW9iaWxlfVwiPlxyXG5cclxuICAgICAgICAgIDwhLS0gVGltZWxpbmUgZm9yIERlc2t0b3AgLS0+XHJcblxyXG4gICAgICAgICAgPCEtLSBJdGVtcyBTZWN0aW9uIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgYm9yZGVyLTAgc2hhZG93LXNtIG1iLTRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHB5LTNcIj5cclxuICAgICAgICAgICAgICA8aDQgY2xhc3M9XCJoNSBtYi0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgZi0xNlwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPnNob3BwaW5nX2NhcnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgSXRlbXNcclxuICAgICAgICAgICAgICA8L2g0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTQgc2Nyb2xsLTQ1XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhcHBvaW50bWVudERldGFpbHM/Lml0ZW1zID8/IFtdXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIml0ZW0taW1hZ2VcIiAqbmdJZj1cIiFpdGVtLmltZ1VybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgTk8gSU1BR0U8YnI+QVZBSUxBQkxFXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cIml0ZW0taW1hZ2VcIiBbc3JjXT1cIml0ZW0uaW1nVXJsXCIgYWx0PVwiXCIgKm5nSWY9XCJpdGVtLmltZ1VybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLWRldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLW5hbWVcIj57e2l0ZW0uaXRlbU5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaXRlbS1kZXNjcmlwdGlvblwiPkhpZ2gtcXVhbGl0eSB0ZXN0IGl0ZW0gd2l0aCBhZHZhbmNlZCBmZWF0dXJlcyBhbmQgcHJlbWl1bSBtYXRlcmlhbHM8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJpdGVtLW1ldGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlNLVTogVFNULTAwMTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlF0eTogMTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPldlaWdodDogMi41IGxiczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpdGVtLXByaWNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VycmVudC1wcmljZVwiPuKCuXt7aXRlbS5kaXNjb3VudGVkUHJpY2V9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gVGltZWxpbmUgZm9yIE1vYmlsZSAtLT5cclxuICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTW9iaWxlXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0aW1lbGluZUNvbnRhaW5lclwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIFJpZ2h0IENvbHVtbiAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHNjcm9sbC02MFwiIFtuZ0NsYXNzXT1cInsnY29sLWxnLTQnOiAhaXNNb2JpbGV9XCI+XHJcblxyXG4gICAgICAgICAgPCEtLSBCaWxsIERldGFpbHMgLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZCBib3JkZXItMCBzaGFkb3ctc20gbWItNFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgcHktMyBjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJ0b2dnbGVTZWN0aW9uKCdiaWxsRGV0YWlscycpXCI+XHJcbiAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiaDUgbWItMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGYtMTZcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5yZWNlaXB0PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgQmlsbCBEZXRhaWxzXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRyYW5zaXRpb24tdHJhbnNmb3JtXCIgW2NsYXNzLnJvdGF0ZS0xODBdPVwiIXNlY3Rpb25zVmlzaWJsZS5iaWxsRGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgICAgICBleHBhbmRfbW9yZVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2g0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBwLTRcIiBbY2xhc3MuZC1ub25lXT1cIiFzZWN0aW9uc1Zpc2libGUuYmlsbERldGFpbHNcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBweS0yIGJvcmRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiB0ZXh0LW11dGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIEZyZWUgVHJpYWxcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1zdWNjZXNzIGg2IG1iLTBcIj5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJjdXJyZW5jeVwiPjwvc3Bhbj4wXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHB5LTIgYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHRleHQtbXV0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgU2VydmljZSBDaGFyZ2VcclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZCB0ZXh0LXN1Y2Nlc3MgaDYgbWItMFwiPkZSRUU8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIHB5LTMgIHJvdW5kZWRcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctYm9sZCBoNSBtYi0wIHRleHQtZGFyayBmcy0xXCI+R3JhbmQgVG90YWw8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ3LWJvbGQgaDQgbWItMCBmcy0xXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiY3VycmVuY3lcIj48L3NwYW4+MFxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gQ3VzdG9tZXIgRGV0YWlscyAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci0wIHNoYWRvdy1zbSBtYi00XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBweS0zIGN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cInRvZ2dsZVNlY3Rpb24oJ2RlbGl2ZXJ5RGV0YWlscycpXCI+XHJcbiAgICAgICAgICAgICAgPGg0IGNsYXNzPVwiaDUgbWItMCBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGYtMTZcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5wZXJzb248L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICBDdXN0b21lciBEZXRhaWxzXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cInRyYW5zaXRpb24tdHJhbnNmb3JtXCIgW2NsYXNzLnJvdGF0ZS0xODBdPVwiIXNlY3Rpb25zVmlzaWJsZS5kZWxpdmVyeURldGFpbHNcIj5cclxuICAgICAgICAgICAgICAgICAgZXhwYW5kX21vcmVcclxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC00XCIgW2NsYXNzLmQtbm9uZV09XCIhc2VjdGlvbnNWaXNpYmxlLmRlbGl2ZXJ5RGV0YWlsc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMyBwLTIgYmctbGlnaHQgcm91bmRlZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWQgZC1ibG9ja1wiPk5hbWU8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctc2VtaWJvbGRcIj57e2FwcG9pbnRtZW50RGV0YWlscy5hZGRyZXNzRGV0YWlscy5yZWNlaXZlck5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zIHAtMiBiZy1saWdodCByb3VuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCBkLWJsb2NrXCI+UGhvbmU8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnctc2VtaWJvbGRcIj57e2FwcG9pbnRtZW50RGV0YWlscy5hZGRyZXNzRGV0YWlscy5yZWNlaXZlclBob25lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGdhcC0zIHAtMiBiZy1saWdodCByb3VuZGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCBkLWJsb2NrXCI+QWRkcmVzczwvc21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmdy1zZW1pYm9sZFwiPnt7YXBwb2ludG1lbnREZXRhaWxzLmFkZHJlc3NEZXRhaWxzLmFkZHJlc3NMaW5lMX19XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2FwcG9pbnRtZW50RGV0YWlscy5hZGRyZXNzRGV0YWlscy56aXBDb2RlfX0ge3thcHBvaW50bWVudERldGFpbHMuYWRkcmVzc0RldGFpbHMuY2l0eU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAge3thcHBvaW50bWVudERldGFpbHMuYWRkcmVzc0RldGFpbHMuc3RhdGVOYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwhLS0gVGltZWxpbmUgU2VjdGlvbiBmb3IgRGVza3RvcCAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci0wIHNoYWRvdy1zbSBtYi00XCIgKm5nSWY9XCIhaXNNb2JpbGVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHB5LTMgY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwidG9nZ2xlU2VjdGlvbigndGltZWxpbmUnKVwiPlxyXG4gICAgICAgICAgICAgIDxoNCBjbGFzcz1cImg1IG1iLTAgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBmLTE2XHJcblxyXG4gICAgXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGltZWxpbmU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICBPcmRlciBUaW1lbGluZVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0cmFuc2l0aW9uLXRyYW5zZm9ybVwiIFtjbGFzcy5yb3RhdGUtMTgwXT1cIiFzZWN0aW9uc1Zpc2libGUudGltZWxpbmVcIj5cclxuICAgICAgICAgICAgICAgICAgZXhwYW5kX21vcmVcclxuICAgICAgICAgICAgICAgIDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPC9oND5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcC00XCIgW2NsYXNzLmQtbm9uZV09XCIhc2VjdGlvbnNWaXNpYmxlLnRpbWVsaW5lXCI+XHJcbiAgICAgICAgICAgICAgPHAtdGltZWxpbmUgW3ZhbHVlXT1cIm9yZGVyVGltaWxpbmVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjb250ZW50XCIgbGV0LWV2ZW50PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGdhcC0zIHB5LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm91bmRlZC1jaXJjbGUgcC0yIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJmcy02IGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Lmljb24gfX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwiZnctc2VtaWJvbGQgdGV4dC1kYXJrIG1iLTFcIj57eyBldmVudC5uYW1lPy5yZXBsYWNlQWxsKFwiX1wiLCBcIiBcIikgfFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZWNhc2UgfX0ge3tldmVudC5zdGF0dXMucmVwbGFjZUFsbCgnXycsICcgJyl9fTwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtbXV0ZWQgbWItMCBzbWFsbFwiPnt7IGV2ZW50LmRlc2M/LnJlcGxhY2VBbGwoXCJfXCIsIFwiIFwiKSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvcC10aW1lbGluZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDwhLS0gVGltZWxpbmUgVGVtcGxhdGUgLS0+XHJcbiAgPG5nLXRlbXBsYXRlICN0aW1lbGluZUNvbnRhaW5lcj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGJvcmRlci0wIHNoYWRvdy1zbSBtYi00XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBiZy13YXJuaW5nIHRleHQtZGFyayBweS0yIGYtMTZcIj5cclxuICAgICAgICA8aDQgY2xhc3M9XCJoNSBtYi0wIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICAgIDxtYXQtaWNvbj50aW1lbGluZTwvbWF0LWljb24+XHJcbiAgICAgICAgICBPcmRlciBUaW1lbGluZVxyXG4gICAgICAgIDwvaDQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHAtNFwiPlxyXG4gICAgICAgIDxwLXRpbWVsaW5lIFt2YWx1ZV09XCJvcmRlclRpbWlsaW5lXCI+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiY29udGVudFwiIGxldC1ldmVudD5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1zdGFydCBnYXAtMyBweS0zXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXByaW1hcnkgcm91bmRlZC1jaXJjbGUgcC0yIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICBzdHlsZT1cIndpZHRoOiA0MHB4OyBoZWlnaHQ6IDQwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJ0ZXh0LXdoaXRlIGZzLTYgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+e3tcclxuICAgICAgICAgICAgICAgICAgZXZlbnQuaWNvbiB9fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xXCI+XHJcbiAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJmdy1zZW1pYm9sZCB0ZXh0LWRhcmsgbWItMVwiPnt7IGV2ZW50Lm5hbWU/LnJlcGxhY2VBbGwoXCJfXCIsIFwiIFwiKSB8IHRpdGxlY2FzZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9oNj5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1tdXRlZCBtYi0wIHNtYWxsXCI+e3sgZXZlbnQuZGVzYz8ucmVwbGFjZUFsbChcIl9cIiwgXCIgXCIpIHwgdGl0bGVjYXNlIH19PC9wPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9wLXRpbWVsaW5lPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gIDwhLS0gTG9hZGluZyBTa2VsZXRvbiAtLT5cclxuICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIHB5LTRcIiAqbmdJZj1cImZhbHNlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cclxuICAgICAgICA8bmd4LXNrZWxldG9uLWxvYWRlciBjb3VudD1cIjFcIiBhcHBlYXJhbmNlPVwiY2lyY2xlXCIgW3RoZW1lXT1cIntcclxuICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICc2MHZoJyxcclxuICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEycHgnLFxyXG4gICAgICAgICAgICAgICAgJ21hcmdpbic6ICcyMHB4IDAnXHJcbiAgICAgICAgICAgIH1cIj48L25neC1za2VsZXRvbi1sb2FkZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3Nob3dFbXB0eVNjcmVlbj5cclxuICA8c2VjdGlvbiBjbGFzcz1cImVtcHR5LWNhcnQgbS1hdXRvXCI+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FydC1pbWFnZVwiPlxyXG4gICAgICAgIDxpbWcgbG9hZGluZz1cImxhenlcIiBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzEwNzIxM2MxNzE2NTQzMzM0MDQwZW1wdHktY2FydC5wbmdcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcnQtdGV4dCBcIj5cclxuICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRleHQgb2YgY29udGVudD8uaW5wdXRUZXh0XCI+IC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhlYWRpbmctbWVkaXVtIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGNvbnRlbnQtc2lkZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZy1tZWRpdW1cIj5ObyBCb29rZWQgQXBwb2ludG1lbnQ8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwhLS0gPC9uZy1jb250YWluZXI+IC0tPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuIl19
@@ -187,11 +187,11 @@ export class MediaSelectorComponent {
187
187
  });
188
188
  }
189
189
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MediaSelectorComponent, deps: [{ token: i1.ImageUplaodService }, { token: i2.MatDialogRef }, { token: MAT_DIALOG_DATA }, { token: i3.MatSnackBar }, { token: i4.ElementServiceService }], target: i0.ɵɵFactoryTarget.Component }); }
190
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MediaSelectorComponent, isStandalone: true, selector: "simpo-media-selector", viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<section>\n <div class=\"header d-flex justify-content-between align-items-center\">\n <div class=\"heading\">Upload Image</div>\n <mat-icon (click)=\"_dialogRef.close()\" class=\"d-flex align-items-center justify-content-center f-18 cp\">close</mat-icon>\n </div>\n <div class=\"tabs d-flex align-items-center justify-content-between\">\n <div *ngFor=\"let tab of tabs\" [ngClass]=\"{'selectedTab': activeTab === tab}\" (click)=\"activeTab = tab\">{{tab}}</div>\n </div>\n\n <ng-container *ngIf=\"activeTab === 'Unsplash'\">\n <ng-container *ngTemplateOutlet=\"unsplashImagesTemplate\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"activeTab === 'Upload'\">\n <ng-container *ngTemplateOutlet=\"uploadImageTemplate\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"activeTab === 'Library'\">\n <ng-container *ngTemplateOutlet=\"imageLibraryTemplate\"></ng-container>\n </ng-container>\n\n <div class=\"uploadButton d-flex\" *ngIf=\"this.selectedImage.size > 0\">\n <button (click)=\"uploadImage()\" [disabled]=\"buttonLoader\">\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i>&nbsp;Loading</span>\n <span *ngIf=\"!buttonLoader\" >Upload Image</span></button>\n </div>\n</section>\n\n<ng-template #unsplashImagesTemplate>\n\n <div class=\"input-container d-flex align-items-center\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/314661c1741844234442Vector%20%281%29.png\"\n alt=\"search-bar-icon\">\n <input type=\"text\" placeholder=\"Search images\" [formControl]=\"searchControl\">\n </div>\n <cdk-virtual-scroll-viewport [itemSize]=\"imageSize\" [minBufferPx]=\"800\" [maxBufferPx]=\"1600\"\n class=\"scroll-container\">\n <div class=\"row image-container\">\n <div class=\"col-md-4 col-6\" *cdkVirtualFor=\"let image of unsplashImages\">\n <img [lazyLoad]=\"image.urls.thumb\" [errorImage]=\"'assets/error.jpg'\" (click)=\"selectUnsplashImage(image)\"\n [ngClass]=\"{'selectedImage': selectedImage.has(image.id)}\" alt=\"Image\" class=\"cp\" />\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n\n <p *ngIf=\"isLoading\">Loading more results...</p>\n\n</ng-template>\n\n<ng-template #uploadImageTemplate>\n <div>\n <div class=\"image-upload-container\">\n <div class=\"upload-img-container d-flex align-items-center justify-content-center\">\n <img lazy src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/547500c1744698830343upload-one%20%281%29.png\" alt=\"upload-image\" class=\"upload-img\">\n </div>\n <div class=\"text-container text-center\">\n <div class=\"top-text\">Choose a file or drag and drop it here</div>\n <div class=\"middle-text\">JPEG, PNG formats up to 50MB</div>\n <div class=\"upload-btn d-flex align-items-center justify-content-center\">\n <div class=\"uploads cp\" (click)=\"fileInput.click()\">\n Upload\n </div>\n </div>\n </div>\n </div>\n\n <input type=\"file\" style=\"display: none\" (change)=\"uploadImageFromSystem($event)\" [multiple]=\"multiple\"\n accept=\"image/png, image/jpeg, image/jpg, image/gif\" #fileInput />\n\n <div class=\"row image-container mt-3 h-30-overflow\">\n <ng-container *ngFor=\"let image of selectedImage | keyvalue\">\n <div class=\"col-md-4 systemImage\" *ngIf=\"image.value.file\">\n <img [src]=\"image.value.assets[0].url\" alt=\"Image\" />\n <mat-icon (click)=\"deleteSystemImage(image.key)\">delete</mat-icon>\n </div>\n </ng-container>\n </div>\n\n </div>\n</ng-template>\n\n<ng-template #imageLibraryTemplate>\n <div class=\"row image-container mt-3 h-75-overflow\">\n <ng-container *ngIf=\"imageLibrary.length > 0; else emptyScreen\">\n <ng-container *ngFor=\"let image of imageLibrary\">\n <div class=\"col-md-4 col-6\">\n <img [src]=\"image.assets[0].url\" alt=\"Image\" (click)=\"selectFromImageLibrary(image)\" [ngClass]=\"{'selectedImage': selectedImage.has(image.uniqueId)}\"/>\n </div>\n </ng-container>\n </ng-container>\n </div>\n <ng-template #emptyScreen>\n <div class=\"empty-container d-flex justify-content-center align-items-center w-100 flex-column\">\n <div class=\"empty-img-container d-flex justify-content-center align-items-center\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/935737c1743411798188image%20%287%29.png\" alt=\"\">\n </div>\n <div class=\"empty-main-text\">\n Uh-oh!\n </div>\n <div class=\"sub-text-1\">\n No images here\n </div>\n <div class=\"sub-text-2\">\n I looked left, right\u2026 even turned around! Still nothing\n </div>\n </div>\n </ng-template>\n</ng-template>\n", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}section{height:100%;position:relative}img{width:100%;height:200px}.scroll-container{height:calc(66vh + -0px);width:100%;overflow-y:scroll}.selectedImage{position:relative;border-radius:10px;overflow:hidden;border:3px solid hsl(227,52%,36%)}.uploadButton{position:absolute;bottom:0;padding:10px;background:#fff;width:100%;justify-content:end;box-shadow:0 0 4px #00000040}.uploadButton button{background:var(--primary-bg-color);color:#fff;font-weight:600;border:unset;font-size:15px!important;padding:8px;border-radius:8px;width:15%!important}.systemImage{position:relative}.systemImage mat-icon{display:none}.systemImage:hover mat-icon{display:inline;position:absolute;right:15px;top:5px;color:red;cursor:pointer}.f-18{font-size:18px}.header{padding:10px;box-shadow:0 0 4px #00000040}.header .heading{font-size:15px;font-weight:600;line-height:24px}.header mat-icon{color:#2d264b}.tabs{padding:20px 40px}.tabs div{width:22%;cursor:pointer;text-align:center;padding:8px}.selectedTab{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-weight:500;color:#fff;box-shadow:0 0 4px #00000040;border-radius:10px;font-weight:600;position:relative}.selectedTab:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.input-container{padding:6px 10px;gap:10px;margin:0 40px 20px;box-shadow:0 0 4px #00000040;border-radius:13px}.input-container input{width:90%;border:unset;appearance:unset;outline:unset}.input-container img{width:20px;height:20px}.image-container{margin:0 40px 20px}.image-container div{margin-bottom:20px}.image-container div img{border-radius:13px}.image-upload-container{margin:0 40px;border-radius:17px;padding:15px;border:3px dashed rgba(44,44,44,.6)}.upload-img{width:12%;height:10%}.cp{cursor:pointer}.middle-text{font-size:15px;color:#686868}.top-text{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600}.uploads{width:20%;padding:8px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600;position:relative;margin-top:15px}.uploads:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.h-30-overflow{height:calc(30vh + -0px);overflow-y:scroll}.h-75-overflow{height:calc(75vh + -0px);overflow-y:scroll}.empty-main-text{font-weight:900;font-size:42px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent}.sub-text-1{font-size:19px;font-weight:600;color:#101010e5}.sub-text-2{font-size:16px;font-weight:600;color:#101010e5}@media screen and (max-width : 475px){.tabs div{width:30%!important}.uploadButton button{width:35%!important}.uploads{width:30%!important}.sub-text-2{text-align:center!important}img{height:150px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: LazyLoadImageModule }, { kind: "directive", type: i7.LazyLoadImageDirective, selector: "[lazyLoad]", inputs: ["lazyLoad", "defaultImage", "errorImage", "scrollTarget", "customObservable", "offset", "useSrcset", "decode", "debug"], outputs: ["onStateChange"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i8.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i8.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
190
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: MediaSelectorComponent, isStandalone: true, selector: "simpo-media-selector", viewQueries: [{ propertyName: "viewport", first: true, predicate: CdkVirtualScrollViewport, descendants: true }], ngImport: i0, template: "<section>\r\n <div class=\"header d-flex justify-content-between align-items-center\">\r\n <div class=\"heading\">Upload Image</div>\r\n <mat-icon (click)=\"_dialogRef.close()\" class=\"d-flex align-items-center justify-content-center f-18 cp\">close</mat-icon>\r\n </div>\r\n <div class=\"tabs d-flex align-items-center justify-content-between\">\r\n <div *ngFor=\"let tab of tabs\" [ngClass]=\"{'selectedTab': activeTab === tab}\" (click)=\"activeTab = tab\">{{tab}}</div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"activeTab === 'Unsplash'\">\r\n <ng-container *ngTemplateOutlet=\"unsplashImagesTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeTab === 'Upload'\">\r\n <ng-container *ngTemplateOutlet=\"uploadImageTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeTab === 'Library'\">\r\n <ng-container *ngTemplateOutlet=\"imageLibraryTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <div class=\"uploadButton d-flex\" *ngIf=\"this.selectedImage.size > 0\">\r\n <button (click)=\"uploadImage()\" [disabled]=\"buttonLoader\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i>&nbsp;Loading</span>\r\n <span *ngIf=\"!buttonLoader\" >Upload Image</span></button>\r\n </div>\r\n</section>\r\n\r\n<ng-template #unsplashImagesTemplate>\r\n\r\n <div class=\"input-container d-flex align-items-center\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/314661c1741844234442Vector%20%281%29.png\"\r\n alt=\"search-bar-icon\">\r\n <input type=\"text\" placeholder=\"Search images\" [formControl]=\"searchControl\">\r\n </div>\r\n <cdk-virtual-scroll-viewport [itemSize]=\"imageSize\" [minBufferPx]=\"800\" [maxBufferPx]=\"1600\"\r\n class=\"scroll-container\">\r\n <div class=\"row image-container\">\r\n <div class=\"col-md-4 col-6\" *cdkVirtualFor=\"let image of unsplashImages\">\r\n <img [lazyLoad]=\"image.urls.thumb\" [errorImage]=\"'assets/error.jpg'\" (click)=\"selectUnsplashImage(image)\"\r\n [ngClass]=\"{'selectedImage': selectedImage.has(image.id)}\" alt=\"Image\" class=\"cp\" />\r\n </div>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n\r\n <p *ngIf=\"isLoading\">Loading more results...</p>\r\n\r\n</ng-template>\r\n\r\n<ng-template #uploadImageTemplate>\r\n <div>\r\n <div class=\"image-upload-container\">\r\n <div class=\"upload-img-container d-flex align-items-center justify-content-center\">\r\n <img lazy src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/547500c1744698830343upload-one%20%281%29.png\" alt=\"upload-image\" class=\"upload-img\">\r\n </div>\r\n <div class=\"text-container text-center\">\r\n <div class=\"top-text\">Choose a file or drag and drop it here</div>\r\n <div class=\"middle-text\">JPEG, PNG formats up to 50MB</div>\r\n <div class=\"upload-btn d-flex align-items-center justify-content-center\">\r\n <div class=\"uploads cp\" (click)=\"fileInput.click()\">\r\n Upload\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <input type=\"file\" style=\"display: none\" (change)=\"uploadImageFromSystem($event)\" [multiple]=\"multiple\"\r\n accept=\"image/png, image/jpeg, image/jpg, image/gif\" #fileInput />\r\n\r\n <div class=\"row image-container mt-3 h-30-overflow\">\r\n <ng-container *ngFor=\"let image of selectedImage | keyvalue\">\r\n <div class=\"col-md-4 systemImage\" *ngIf=\"image.value.file\">\r\n <img [src]=\"image.value.assets[0].url\" alt=\"Image\" />\r\n <mat-icon (click)=\"deleteSystemImage(image.key)\">delete</mat-icon>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #imageLibraryTemplate>\r\n <div class=\"row image-container mt-3 h-75-overflow\">\r\n <ng-container *ngIf=\"imageLibrary.length > 0; else emptyScreen\">\r\n <ng-container *ngFor=\"let image of imageLibrary\">\r\n <div class=\"col-md-4 col-6\">\r\n <img [src]=\"image.assets[0].url\" alt=\"Image\" (click)=\"selectFromImageLibrary(image)\" [ngClass]=\"{'selectedImage': selectedImage.has(image.uniqueId)}\"/>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-template #emptyScreen>\r\n <div class=\"empty-container d-flex justify-content-center align-items-center w-100 flex-column\">\r\n <div class=\"empty-img-container d-flex justify-content-center align-items-center\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/935737c1743411798188image%20%287%29.png\" alt=\"\">\r\n </div>\r\n <div class=\"empty-main-text\">\r\n Uh-oh!\r\n </div>\r\n <div class=\"sub-text-1\">\r\n No images here\r\n </div>\r\n <div class=\"sub-text-2\">\r\n I looked left, right\u2026 even turned around! Still nothing\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ng-template>\r\n", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}section{height:100%;position:relative}img{width:100%;height:200px}.scroll-container{height:calc(66vh + -0px);width:100%;overflow-y:scroll}.selectedImage{position:relative;border-radius:10px;overflow:hidden;border:3px solid hsl(227,52%,36%)}.uploadButton{position:absolute;bottom:0;padding:10px;background:#fff;width:100%;justify-content:end;box-shadow:0 0 4px #00000040}.uploadButton button{background:var(--primary-bg-color);color:#fff;font-weight:600;border:unset;font-size:15px!important;padding:8px;border-radius:8px;width:15%!important}.systemImage{position:relative}.systemImage mat-icon{display:none}.systemImage:hover mat-icon{display:inline;position:absolute;right:15px;top:5px;color:red;cursor:pointer}.f-18{font-size:18px}.header{padding:10px;box-shadow:0 0 4px #00000040}.header .heading{font-size:15px;font-weight:600;line-height:24px}.header mat-icon{color:#2d264b}.tabs{padding:20px 40px}.tabs div{width:22%;cursor:pointer;text-align:center;padding:8px}.selectedTab{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-weight:500;color:#fff;box-shadow:0 0 4px #00000040;border-radius:10px;font-weight:600;position:relative}.selectedTab:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.input-container{padding:6px 10px;gap:10px;margin:0 40px 20px;box-shadow:0 0 4px #00000040;border-radius:13px}.input-container input{width:90%;border:unset;appearance:unset;outline:unset}.input-container img{width:20px;height:20px}.image-container{margin:0 40px 20px}.image-container div{margin-bottom:20px}.image-container div img{border-radius:13px}.image-upload-container{margin:0 40px;border-radius:17px;padding:15px;border:3px dashed rgba(44,44,44,.6)}.upload-img{width:12%;height:10%}.cp{cursor:pointer}.middle-text{font-size:15px;color:#686868}.top-text{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600}.uploads{width:20%;padding:8px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600;position:relative;margin-top:15px}.uploads:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.h-30-overflow{height:calc(30vh + -0px);overflow-y:scroll}.h-75-overflow{height:calc(75vh + -0px);overflow-y:scroll}.empty-main-text{font-weight:900;font-size:42px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent}.sub-text-1{font-size:19px;font-weight:600;color:#101010e5}.sub-text-2{font-size:16px;font-weight:600;color:#101010e5}@media screen and (max-width : 475px){.tabs div{width:30%!important}.uploadButton button{width:35%!important}.uploads{width:30%!important}.sub-text-2{text-align:center!important}img{height:150px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i5.KeyValuePipe, name: "keyvalue" }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "ngmodule", type: LazyLoadImageModule }, { kind: "directive", type: i7.LazyLoadImageDirective, selector: "[lazyLoad]", inputs: ["lazyLoad", "defaultImage", "errorImage", "scrollTarget", "customObservable", "offset", "useSrcset", "decode", "debug"], outputs: ["onStateChange"] }, { kind: "ngmodule", type: ScrollingModule }, { kind: "directive", type: i8.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: i8.CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i9.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] }); }
191
191
  }
192
192
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MediaSelectorComponent, decorators: [{
193
193
  type: Component,
194
- args: [{ selector: 'simpo-media-selector', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule, CdkVirtualScrollViewport, LazyLoadImageModule, ScrollingModule, MatIconModule], template: "<section>\n <div class=\"header d-flex justify-content-between align-items-center\">\n <div class=\"heading\">Upload Image</div>\n <mat-icon (click)=\"_dialogRef.close()\" class=\"d-flex align-items-center justify-content-center f-18 cp\">close</mat-icon>\n </div>\n <div class=\"tabs d-flex align-items-center justify-content-between\">\n <div *ngFor=\"let tab of tabs\" [ngClass]=\"{'selectedTab': activeTab === tab}\" (click)=\"activeTab = tab\">{{tab}}</div>\n </div>\n\n <ng-container *ngIf=\"activeTab === 'Unsplash'\">\n <ng-container *ngTemplateOutlet=\"unsplashImagesTemplate\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"activeTab === 'Upload'\">\n <ng-container *ngTemplateOutlet=\"uploadImageTemplate\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"activeTab === 'Library'\">\n <ng-container *ngTemplateOutlet=\"imageLibraryTemplate\"></ng-container>\n </ng-container>\n\n <div class=\"uploadButton d-flex\" *ngIf=\"this.selectedImage.size > 0\">\n <button (click)=\"uploadImage()\" [disabled]=\"buttonLoader\">\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i>&nbsp;Loading</span>\n <span *ngIf=\"!buttonLoader\" >Upload Image</span></button>\n </div>\n</section>\n\n<ng-template #unsplashImagesTemplate>\n\n <div class=\"input-container d-flex align-items-center\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/314661c1741844234442Vector%20%281%29.png\"\n alt=\"search-bar-icon\">\n <input type=\"text\" placeholder=\"Search images\" [formControl]=\"searchControl\">\n </div>\n <cdk-virtual-scroll-viewport [itemSize]=\"imageSize\" [minBufferPx]=\"800\" [maxBufferPx]=\"1600\"\n class=\"scroll-container\">\n <div class=\"row image-container\">\n <div class=\"col-md-4 col-6\" *cdkVirtualFor=\"let image of unsplashImages\">\n <img [lazyLoad]=\"image.urls.thumb\" [errorImage]=\"'assets/error.jpg'\" (click)=\"selectUnsplashImage(image)\"\n [ngClass]=\"{'selectedImage': selectedImage.has(image.id)}\" alt=\"Image\" class=\"cp\" />\n </div>\n </div>\n </cdk-virtual-scroll-viewport>\n\n <p *ngIf=\"isLoading\">Loading more results...</p>\n\n</ng-template>\n\n<ng-template #uploadImageTemplate>\n <div>\n <div class=\"image-upload-container\">\n <div class=\"upload-img-container d-flex align-items-center justify-content-center\">\n <img lazy src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/547500c1744698830343upload-one%20%281%29.png\" alt=\"upload-image\" class=\"upload-img\">\n </div>\n <div class=\"text-container text-center\">\n <div class=\"top-text\">Choose a file or drag and drop it here</div>\n <div class=\"middle-text\">JPEG, PNG formats up to 50MB</div>\n <div class=\"upload-btn d-flex align-items-center justify-content-center\">\n <div class=\"uploads cp\" (click)=\"fileInput.click()\">\n Upload\n </div>\n </div>\n </div>\n </div>\n\n <input type=\"file\" style=\"display: none\" (change)=\"uploadImageFromSystem($event)\" [multiple]=\"multiple\"\n accept=\"image/png, image/jpeg, image/jpg, image/gif\" #fileInput />\n\n <div class=\"row image-container mt-3 h-30-overflow\">\n <ng-container *ngFor=\"let image of selectedImage | keyvalue\">\n <div class=\"col-md-4 systemImage\" *ngIf=\"image.value.file\">\n <img [src]=\"image.value.assets[0].url\" alt=\"Image\" />\n <mat-icon (click)=\"deleteSystemImage(image.key)\">delete</mat-icon>\n </div>\n </ng-container>\n </div>\n\n </div>\n</ng-template>\n\n<ng-template #imageLibraryTemplate>\n <div class=\"row image-container mt-3 h-75-overflow\">\n <ng-container *ngIf=\"imageLibrary.length > 0; else emptyScreen\">\n <ng-container *ngFor=\"let image of imageLibrary\">\n <div class=\"col-md-4 col-6\">\n <img [src]=\"image.assets[0].url\" alt=\"Image\" (click)=\"selectFromImageLibrary(image)\" [ngClass]=\"{'selectedImage': selectedImage.has(image.uniqueId)}\"/>\n </div>\n </ng-container>\n </ng-container>\n </div>\n <ng-template #emptyScreen>\n <div class=\"empty-container d-flex justify-content-center align-items-center w-100 flex-column\">\n <div class=\"empty-img-container d-flex justify-content-center align-items-center\">\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/935737c1743411798188image%20%287%29.png\" alt=\"\">\n </div>\n <div class=\"empty-main-text\">\n Uh-oh!\n </div>\n <div class=\"sub-text-1\">\n No images here\n </div>\n <div class=\"sub-text-2\">\n I looked left, right\u2026 even turned around! Still nothing\n </div>\n </div>\n </ng-template>\n</ng-template>\n", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}section{height:100%;position:relative}img{width:100%;height:200px}.scroll-container{height:calc(66vh + -0px);width:100%;overflow-y:scroll}.selectedImage{position:relative;border-radius:10px;overflow:hidden;border:3px solid hsl(227,52%,36%)}.uploadButton{position:absolute;bottom:0;padding:10px;background:#fff;width:100%;justify-content:end;box-shadow:0 0 4px #00000040}.uploadButton button{background:var(--primary-bg-color);color:#fff;font-weight:600;border:unset;font-size:15px!important;padding:8px;border-radius:8px;width:15%!important}.systemImage{position:relative}.systemImage mat-icon{display:none}.systemImage:hover mat-icon{display:inline;position:absolute;right:15px;top:5px;color:red;cursor:pointer}.f-18{font-size:18px}.header{padding:10px;box-shadow:0 0 4px #00000040}.header .heading{font-size:15px;font-weight:600;line-height:24px}.header mat-icon{color:#2d264b}.tabs{padding:20px 40px}.tabs div{width:22%;cursor:pointer;text-align:center;padding:8px}.selectedTab{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-weight:500;color:#fff;box-shadow:0 0 4px #00000040;border-radius:10px;font-weight:600;position:relative}.selectedTab:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.input-container{padding:6px 10px;gap:10px;margin:0 40px 20px;box-shadow:0 0 4px #00000040;border-radius:13px}.input-container input{width:90%;border:unset;appearance:unset;outline:unset}.input-container img{width:20px;height:20px}.image-container{margin:0 40px 20px}.image-container div{margin-bottom:20px}.image-container div img{border-radius:13px}.image-upload-container{margin:0 40px;border-radius:17px;padding:15px;border:3px dashed rgba(44,44,44,.6)}.upload-img{width:12%;height:10%}.cp{cursor:pointer}.middle-text{font-size:15px;color:#686868}.top-text{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600}.uploads{width:20%;padding:8px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600;position:relative;margin-top:15px}.uploads:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.h-30-overflow{height:calc(30vh + -0px);overflow-y:scroll}.h-75-overflow{height:calc(75vh + -0px);overflow-y:scroll}.empty-main-text{font-weight:900;font-size:42px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent}.sub-text-1{font-size:19px;font-weight:600;color:#101010e5}.sub-text-2{font-size:16px;font-weight:600;color:#101010e5}@media screen and (max-width : 475px){.tabs div{width:30%!important}.uploadButton button{width:35%!important}.uploads{width:30%!important}.sub-text-2{text-align:center!important}img{height:150px}}\n"] }]
194
+ args: [{ selector: 'simpo-media-selector', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule, CdkVirtualScrollViewport, LazyLoadImageModule, ScrollingModule, MatIconModule], template: "<section>\r\n <div class=\"header d-flex justify-content-between align-items-center\">\r\n <div class=\"heading\">Upload Image</div>\r\n <mat-icon (click)=\"_dialogRef.close()\" class=\"d-flex align-items-center justify-content-center f-18 cp\">close</mat-icon>\r\n </div>\r\n <div class=\"tabs d-flex align-items-center justify-content-between\">\r\n <div *ngFor=\"let tab of tabs\" [ngClass]=\"{'selectedTab': activeTab === tab}\" (click)=\"activeTab = tab\">{{tab}}</div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"activeTab === 'Unsplash'\">\r\n <ng-container *ngTemplateOutlet=\"unsplashImagesTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeTab === 'Upload'\">\r\n <ng-container *ngTemplateOutlet=\"uploadImageTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <ng-container *ngIf=\"activeTab === 'Library'\">\r\n <ng-container *ngTemplateOutlet=\"imageLibraryTemplate\"></ng-container>\r\n </ng-container>\r\n\r\n <div class=\"uploadButton d-flex\" *ngIf=\"this.selectedImage.size > 0\">\r\n <button (click)=\"uploadImage()\" [disabled]=\"buttonLoader\">\r\n <span *ngIf=\"buttonLoader\" ><i class=\"fas fa-circle-notch fa-spin\"></i>&nbsp;Loading</span>\r\n <span *ngIf=\"!buttonLoader\" >Upload Image</span></button>\r\n </div>\r\n</section>\r\n\r\n<ng-template #unsplashImagesTemplate>\r\n\r\n <div class=\"input-container d-flex align-items-center\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/314661c1741844234442Vector%20%281%29.png\"\r\n alt=\"search-bar-icon\">\r\n <input type=\"text\" placeholder=\"Search images\" [formControl]=\"searchControl\">\r\n </div>\r\n <cdk-virtual-scroll-viewport [itemSize]=\"imageSize\" [minBufferPx]=\"800\" [maxBufferPx]=\"1600\"\r\n class=\"scroll-container\">\r\n <div class=\"row image-container\">\r\n <div class=\"col-md-4 col-6\" *cdkVirtualFor=\"let image of unsplashImages\">\r\n <img [lazyLoad]=\"image.urls.thumb\" [errorImage]=\"'assets/error.jpg'\" (click)=\"selectUnsplashImage(image)\"\r\n [ngClass]=\"{'selectedImage': selectedImage.has(image.id)}\" alt=\"Image\" class=\"cp\" />\r\n </div>\r\n </div>\r\n </cdk-virtual-scroll-viewport>\r\n\r\n <p *ngIf=\"isLoading\">Loading more results...</p>\r\n\r\n</ng-template>\r\n\r\n<ng-template #uploadImageTemplate>\r\n <div>\r\n <div class=\"image-upload-container\">\r\n <div class=\"upload-img-container d-flex align-items-center justify-content-center\">\r\n <img lazy src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/547500c1744698830343upload-one%20%281%29.png\" alt=\"upload-image\" class=\"upload-img\">\r\n </div>\r\n <div class=\"text-container text-center\">\r\n <div class=\"top-text\">Choose a file or drag and drop it here</div>\r\n <div class=\"middle-text\">JPEG, PNG formats up to 50MB</div>\r\n <div class=\"upload-btn d-flex align-items-center justify-content-center\">\r\n <div class=\"uploads cp\" (click)=\"fileInput.click()\">\r\n Upload\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <input type=\"file\" style=\"display: none\" (change)=\"uploadImageFromSystem($event)\" [multiple]=\"multiple\"\r\n accept=\"image/png, image/jpeg, image/jpg, image/gif\" #fileInput />\r\n\r\n <div class=\"row image-container mt-3 h-30-overflow\">\r\n <ng-container *ngFor=\"let image of selectedImage | keyvalue\">\r\n <div class=\"col-md-4 systemImage\" *ngIf=\"image.value.file\">\r\n <img [src]=\"image.value.assets[0].url\" alt=\"Image\" />\r\n <mat-icon (click)=\"deleteSystemImage(image.key)\">delete</mat-icon>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #imageLibraryTemplate>\r\n <div class=\"row image-container mt-3 h-75-overflow\">\r\n <ng-container *ngIf=\"imageLibrary.length > 0; else emptyScreen\">\r\n <ng-container *ngFor=\"let image of imageLibrary\">\r\n <div class=\"col-md-4 col-6\">\r\n <img [src]=\"image.assets[0].url\" alt=\"Image\" (click)=\"selectFromImageLibrary(image)\" [ngClass]=\"{'selectedImage': selectedImage.has(image.uniqueId)}\"/>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n <ng-template #emptyScreen>\r\n <div class=\"empty-container d-flex justify-content-center align-items-center w-100 flex-column\">\r\n <div class=\"empty-img-container d-flex justify-content-center align-items-center\">\r\n <img src=\"https://prod-simpo.s3.ap-south-1.amazonaws.com/prod-images/935737c1743411798188image%20%287%29.png\" alt=\"\">\r\n </div>\r\n <div class=\"empty-main-text\">\r\n Uh-oh!\r\n </div>\r\n <div class=\"sub-text-1\">\r\n No images here\r\n </div>\r\n <div class=\"sub-text-2\">\r\n I looked left, right\u2026 even turned around! Still nothing\r\n </div>\r\n </div>\r\n </ng-template>\r\n</ng-template>\r\n", styles: ["*{font-family:var(--primary-font-family)}mat-icon{font-family:Material Icons!important}section{height:100%;position:relative}img{width:100%;height:200px}.scroll-container{height:calc(66vh + -0px);width:100%;overflow-y:scroll}.selectedImage{position:relative;border-radius:10px;overflow:hidden;border:3px solid hsl(227,52%,36%)}.uploadButton{position:absolute;bottom:0;padding:10px;background:#fff;width:100%;justify-content:end;box-shadow:0 0 4px #00000040}.uploadButton button{background:var(--primary-bg-color);color:#fff;font-weight:600;border:unset;font-size:15px!important;padding:8px;border-radius:8px;width:15%!important}.systemImage{position:relative}.systemImage mat-icon{display:none}.systemImage:hover mat-icon{display:inline;position:absolute;right:15px;top:5px;color:red;cursor:pointer}.f-18{font-size:18px}.header{padding:10px;box-shadow:0 0 4px #00000040}.header .heading{font-size:15px;font-weight:600;line-height:24px}.header mat-icon{color:#2d264b}.tabs{padding:20px 40px}.tabs div{width:22%;cursor:pointer;text-align:center;padding:8px}.selectedTab{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-weight:500;color:#fff;box-shadow:0 0 4px #00000040;border-radius:10px;font-weight:600;position:relative}.selectedTab:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.input-container{padding:6px 10px;gap:10px;margin:0 40px 20px;box-shadow:0 0 4px #00000040;border-radius:13px}.input-container input{width:90%;border:unset;appearance:unset;outline:unset}.input-container img{width:20px;height:20px}.image-container{margin:0 40px 20px}.image-container div{margin-bottom:20px}.image-container div img{border-radius:13px}.image-upload-container{margin:0 40px;border-radius:17px;padding:15px;border:3px dashed rgba(44,44,44,.6)}.upload-img{width:12%;height:10%}.cp{cursor:pointer}.middle-text{font-size:15px;color:#686868}.top-text{background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600}.uploads{width:20%;padding:8px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent;font-size:17px;font-weight:600;position:relative;margin-top:15px}.uploads:before{content:\"\";position:absolute;inset:0;padding:1px;border-radius:10px;background:var(--primary-bg-color);mask:linear-gradient(white 0 0) content-box,linear-gradient(white 0 0);mask-composite:xor;mask-composite:exclude}.h-30-overflow{height:calc(30vh + -0px);overflow-y:scroll}.h-75-overflow{height:calc(75vh + -0px);overflow-y:scroll}.empty-main-text{font-weight:900;font-size:42px;background:var(--primary-bg-color);background-clip:text;-webkit-text-fill-color:transparent}.sub-text-1{font-size:19px;font-weight:600;color:#101010e5}.sub-text-2{font-size:16px;font-weight:600;color:#101010e5}@media screen and (max-width : 475px){.tabs div{width:30%!important}.uploadButton button{width:35%!important}.uploads{width:30%!important}.sub-text-2{text-align:center!important}img{height:150px}}\n"] }]
195
195
  }], ctorParameters: () => [{ type: i1.ImageUplaodService }, { type: i2.MatDialogRef }, { type: undefined, decorators: [{
196
196
  type: Inject,
197
197
  args: [MAT_DIALOG_DATA]
@@ -199,4 +199,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
199
199
  type: ViewChild,
200
200
  args: [CdkVirtualScrollViewport]
201
201
  }] } });
202
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy9tZWRpYS1zZWxlY3Rvci9tZWRpYS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL21lZGlhLXNlbGVjdG9yL21lZGlhLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFXdkQsTUFBTSxPQUFPLHNCQUFzQjtJQWVqQyxZQUFvQixrQkFBc0MsRUFDaEQsVUFBZ0QsRUFDdkIsVUFBZSxFQUN4QyxRQUFxQixFQUNyQixhQUFxQztRQUozQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ2hELGVBQVUsR0FBVixVQUFVLENBQXNDO1FBQ3ZCLGVBQVUsR0FB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ZUFBZTttR0FqQmQsc0JBQXNCLDBIQUN0Qix3QkFBd0IsZ0RDckJyQyxxd0pBNEdBLDBxR0Q1RlksWUFBWSwrakJBQUUsV0FBVyxzWkFBRSxtQkFBbUIsa05BQUUsd0JBQXdCLGdKQUFFLG1CQUFtQiw0UUFBRSxlQUFlLCtZQUFFLGFBQWE7OzRGQUk1SCxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQzs7MEJBcUJySSxNQUFNOzJCQUFDLGVBQWU7dUdBaEJZLFFBQVE7c0JBQTVDLFNBQVM7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJbWFnZVVwbGFvZFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9pbWFnZS11cGxvYWQtc2VydmljZS5zZXJ2aWNlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHN0YXJ0V2l0aCwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBMYXp5TG9hZEltYWdlTW9kdWxlIH0gZnJvbSAnbmctbGF6eWxvYWQtaW1hZ2UnO1xuaW1wb3J0IHsgTUFUX0RJQUxPR19EQVRBLCBNYXREaWFsb2dSZWYgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgUmVzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgRWxlbWVudFNlcnZpY2VTZXJ2aWNlIH0gZnJvbSAnLi4vZWRpdG9yLXNlcnZpY2Uuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3NpbXBvLW1lZGlhLXNlbGVjdG9yJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgTGF6eUxvYWRJbWFnZU1vZHVsZSwgU2Nyb2xsaW5nTW9kdWxlLCBNYXRJY29uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL21lZGlhLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL21lZGlhLXNlbGVjdG9yLmNvbXBvbmVudC5jc3MnXG59KVxuZXhwb3J0IGNsYXNzIE1lZGlhU2VsZWN0b3JDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpIHZpZXdwb3J0ITogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gIHRhYnM6IHN0cmluZ1tdID0gWydVbnNwbGFzaCcsICdVcGxvYWQnLCAnTGlicmFyeSddO1xuICBhY3RpdmVUYWI6IHN0cmluZyA9ICdVbnNwbGFzaCc7XG4gIHNlYXJjaENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2woJycpO1xuICBwYWdlTm86IG51bWJlciA9IDE7XG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICB1bnNwbGFzaEltYWdlczogYW55W10gPSBbXTtcbiAgaW1hZ2VMaWJyYXJ5OiBhbnlbXSA9IFtdO1xuICBpbWFnZVNpemUgPSA1MDtcbiAgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRJbWFnZTogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+O1xuICBidXR0b25Mb2FkZXI6IGJvb2xlYW49IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaW1hZ2VVcGxvYWRTZXJ2aWNlOiBJbWFnZVVwbGFvZFNlcnZpY2UsXG4gICAgcHVibGljICBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8TWVkaWFTZWxlY3RvckNvbXBvbmVudD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHByaXZhdGUgZGlhbG9nRGF0YTogYW55LFxuICAgIHByaXZhdGUgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxuICAgIHByaXZhdGUgZWRpdG9yU2VydmljZSA6IEVsZW1lbnRTZXJ2aWNlU2VydmljZVxuICApIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubXVsdGlwbGUgPSB0aGlzLmRpYWxvZ0RhdGE/Lm11bHRpcGxlID8/IHRydWU7XG4gICAgdGhpcy5zZWFyY2hVbnNwbGFzaEltYWdlcygpO1xuICAgIHRoaXMuZ2V0SW1hZ2VMaWJyYXJ5KCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5zZXR1cEluZmluaXRlU2Nyb2xsKCk7XG4gIH1cblxuICBnZXRJbWFnZUxpYnJhcnkoKSB7XG4gICAgdGhpcy5lZGl0b3JTZXJ2aWNlLmdldEltYWdlTGlicmFyeSgpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuaW1hZ2VMaWJyYXJ5ID0gcmVzPy5kYXRhPy5jb250ZW50IHx8IFtdO1xuICAgIH0pXG4gIH1cblxuICAvKiog4pyFIFNlYXJjaCBBUEkgd2l0aCBkZWJvdW5jZSB0byByZWR1Y2UgdW5uZWNlc3NhcnkgY2FsbHMgKi9cbiAgc2VhcmNoVW5zcGxhc2hJbWFnZXMoKSB7XG4gICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgLnBpcGUoXG4gICAgICAgIHN0YXJ0V2l0aCgnJyksIC8vIExvYWQgaW1hZ2VzIGluaXRpYWxseVxuICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSwgLy8gV2FpdCA1MDBtcyBhZnRlciB0eXBpbmcgc3RvcHNcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgLy8gT25seSBjYWxsIEFQSSBpZiB2YWx1ZSBjaGFuZ2VzXG4gICAgICAgIHN3aXRjaE1hcCh2YWx1ZSA9PiB7XG4gICAgICAgICAgdGhpcy5wYWdlTm8gPSAxO1xuICAgICAgICAgIHJldHVybiB0aGlzLmltYWdlVXBsb2FkU2VydmljZS5zZWFyY2hQaG90b3NJblVuc3BsYXNoKHZhbHVlIHx8ICdUZWNobm9sb2d5JywgdGhpcy5wYWdlTm8pO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgocmVzdWx0czogYW55KSA9PiB7XG4gICAgICAgIHRoaXMudW5zcGxhc2hJbWFnZXMgPSByZXN1bHRzLnJlc3VsdHM7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKiDinIUgSW5maW5pdGUgU2Nyb2xsICovXG4gIHNldHVwSW5maW5pdGVTY3JvbGwoKSB7XG4gICAgdGhpcy52aWV3cG9ydC5lbGVtZW50U2Nyb2xsZWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgyMDApLCAvLyDinIUgV2FpdCAyMDBtcyBiZWZvcmUgY2hlY2tpbmdcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSAvLyDinIUgT25seSB0cmlnZ2VyIGlmIHZhbHVlIGNoYW5nZXNcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBlbmQgPSB0aGlzLnZpZXdwb3J0Lm1lYXN1cmVTY3JvbGxPZmZzZXQoJ2JvdHRvbScpO1xuXG4gICAgICAgIGlmIChlbmQgPCAzMDAgJiYgIXRoaXMuaXNMb2FkaW5nKSB7IC8vIOKchSBUcmlnZ2VyIG9ubHkgd2hlbiBjbG9zZSB0byB0aGUgYm90dG9tXG4gICAgICAgICAgdGhpcy5sb2FkTW9yZUltYWdlcygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKiDinIUgTG9hZCBNb3JlIEltYWdlcyAqL1xuICBsb2FkTW9yZUltYWdlcygpIHtcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcpIHJldHVybjsgLy8g4pyFIFByZXZlbnQgbXVsdGlwbGUgcmVxdWVzdHNcblxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnBhZ2VObysrO1xuXG4gICAgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2Uuc2VhcmNoUGhvdG9zSW5VbnNwbGFzaCh0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUgfHwgJ1RlY2hub2xvZ3knLCB0aGlzLnBhZ2VObylcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdHM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnVuc3BsYXNoSW1hZ2VzID0gWy4uLnRoaXMudW5zcGxhc2hJbWFnZXMsIC4uLnJlc3VsdHMucmVzdWx0c107XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICB9LCAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7IC8vIOKchSBFbnN1cmUgaXQncyByZXNldCBldmVuIG9uIGZhaWx1cmVcbiAgICAgIH0pO1xuICB9XG5cbiAgc2VsZWN0VW5zcGxhc2hJbWFnZShpbWFnZTogYW55KSB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKVxuICAgICAgdGhpcy5zZWxlY3RlZEltYWdlID0gbmV3IE1hcDxhbnksIGFueT47XG5cbiAgICBsZXQgdXBsb2FkSW1hZ2U6IGFueSA9IHtcbiAgICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyksXG4gICAgICB1bmlxdWVJZDogaW1hZ2UuaWQsXG4gICAgICBhc3NldHM6IFt7XG4gICAgICAgIHVybDogaW1hZ2UudXJscy5yYXcsXG4gICAgICAgIHdpZHRoOiBpbWFnZS53aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBpbWFnZS5oZWlnaHRcbiAgICAgIH1dLFxuICAgICAgYXV0aG9yOiB7XG4gICAgICAgIGlkOiBpbWFnZS51c2VyLmlkLFxuICAgICAgICB1c2VyTmFtZTogaW1hZ2UudXNlci51c2VybmFtZSxcbiAgICAgICAgbmFtZTogaW1hZ2UudXNlci5uYW1lLFxuICAgICAgICB0d2l0dGVyVXNlck5hbWU6IGltYWdlLnVzZXIudHdpdHRlcl91c2VybmFtZSxcbiAgICAgICAgcG9ydEZvbGlvVXJsOiBpbWFnZS51c2VyLnBvcnRmb2xpb191cmwsXG4gICAgICAgIGluc3RhZ3JhbVVzZXJOYW1lOiBpbWFnZS51c2VyLmluc3RhZ3JhbV91c2VybmFtZSxcbiAgICAgIH0sXG4gICAgICBtZWRpYTogXCJVTlNQTEFTSFwiLFxuICAgIH1cblxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW1hZ2UuaGFzKGltYWdlLmlkKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEltYWdlLmRlbGV0ZShpbWFnZS5pZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZS5zZXQoaW1hZ2UuaWQsIHVwbG9hZEltYWdlKTtcbiAgICB9XG4gIH1cblxuICB1cGxvYWRJbWFnZUZyb21TeXN0ZW0oZXZlbnQ6IGFueSkge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSlcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IG5ldyBNYXA8YW55LCBhbnk+O1xuXG4gICAgbGV0IGZpbGVzID0gZXZlbnQudGFyZ2V0LmZpbGVzO1xuICAgIGNvbnN0IG1heGltdW1GaWxlU2l6ZSA9IDQgKiAxMDI0ICogMTAyNDsgLy8gTWF4IGlzIDRtYlxuXG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xuICAgICAgaWYgKG1heGltdW1GaWxlU2l6ZSA8IGZpbGUuc2l6ZSkge1xuICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ01heGltdW0gZmlsZSBzaXplIGxpbWl0IGlzIDRNQicsICdjbG9zZScsIHsgZHVyYXRpb246IDE1MDAgfSlcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG5cbiAgICAgIGNvbnN0IGltYWdlOiBhbnkgPSB7XG4gICAgICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyksXG4gICAgICAgIHVuaXF1ZUlkOiBmaWxlLm5hbWUgKyAnXycgKyBmaWxlLnNpemUsXG4gICAgICAgIGJsdXJIYXNoOiBudWxsLFxuICAgICAgICBhc3NldHM6IFt7XG4gICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgaGVpZ2h0OiAwLFxuICAgICAgICAgIGJsdXJoYXNoOiAnJyxcbiAgICAgICAgICB1cmw6ICcnLFxuICAgICAgICB9XSxcbiAgICAgICAgYXV0aG9yOiBudWxsLFxuICAgICAgICBtZWRpYTogJ0RFVklDRScsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBmaWxlLm5hbWUsXG4gICAgICAgIGFsdERlc2NyaXB0aW9uOiBmaWxlLm5hbWUsXG4gICAgICAgIGZpbGU6IGZpbGUsXG4gICAgICB9O1xuXG4gICAgICByZWFkZXIub25sb2FkID0gKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgaW1hZ2UuYXNzZXRzWzBdLnVybCA9IHJlc3BvbnNlLnRhcmdldC5yZXN1bHQ7XG4gICAgICB9O1xuICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG5cbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZEltYWdlLmhhcyhpbWFnZS51bmlxdWVJZCkpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEltYWdlLnNldChpbWFnZS51bmlxdWVJZCwgaW1hZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRlbGV0ZVN5c3RlbUltYWdlKGltYWdlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuc2VsZWN0ZWRJbWFnZS5kZWxldGUoaW1hZ2VJZCk7XG4gIH1cblxuICBzZWxlY3RGcm9tSW1hZ2VMaWJyYXJ5KGltYWdlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpXG4gICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBuZXcgTWFwPGFueSwgYW55PjtcblxuICAgIGlmICh0aGlzLnNlbGVjdGVkSW1hZ2UuaGFzKGltYWdlLnVuaXF1ZUlkKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEltYWdlLmRlbGV0ZShpbWFnZS51bmlxdWVJZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZS5zZXQoaW1hZ2UudW5pcXVlSWQsIGltYWdlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyB1cGxvYWRJbWFnZSgpIHtcbiAgICB0aGlzLmJ1dHRvbkxvYWRlciA9dHJ1ZTtcbiAgICBsZXQgcmVxdWVzdDogYW55W10gPSBbXTtcblxuICAgIGZvcihsZXQgaW1hZ2Ugb2YgdGhpcy5zZWxlY3RlZEltYWdlLnZhbHVlcygpKSB7XG4gICAgICBpZiAoaW1hZ2UuZmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlVXJsOiBhbnkgPVxuICAgICAgICAgIGF3YWl0IHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnVwbG9hZEZpbGVJbkFXUyhcbiAgICAgICAgICAgIGltYWdlLmZpbGUsXG4gICAgICAgICAgICAnbGlicmFyeS1tZWRpYSdcbiAgICAgICAgICApO1xuXG4gICAgICAgIGltYWdlLmFzc2V0c1swXS51cmwgPSBmaWxlVXJsO1xuICAgICAgfVxuXG4gICAgICByZXF1ZXN0LnB1c2goaW1hZ2UpO1xuICAgIH1cbiAgICB0aGlzLmVkaXRvclNlcnZpY2Uuc2F2ZUltYWdlc1RvQnVzaW5lc3NMaWJyYXJ5KHtkYXRhOiByZXF1ZXN0fSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHJlcXVlc3QpO1xuICAgICAgICB0aGlzLmJ1dHRvbkxvYWRlcj0gZmFsc2U7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5idXR0b25Mb2FkZXI9ZmFsc2U7XG4gICAgICB9XG4gICAgfSlcbiAgfVxufVxuIiwiPHNlY3Rpb24+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkaW5nXCI+VXBsb2FkIEltYWdlPC9kaXY+XG4gICAgPG1hdC1pY29uIChjbGljayk9XCJfZGlhbG9nUmVmLmNsb3NlKClcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmLTE4IGNwXCI+Y2xvc2U8L21hdC1pY29uPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInRhYnMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRhYic6IGFjdGl2ZVRhYiA9PT0gdGFifVwiIChjbGljayk9XCJhY3RpdmVUYWIgPSB0YWJcIj57e3RhYn19PC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdVbnNwbGFzaCdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidW5zcGxhc2hJbWFnZXNUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnVXBsb2FkJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1cGxvYWRJbWFnZVRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdMaWJyYXJ5J1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbWFnZUxpYnJhcnlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8ZGl2IGNsYXNzPVwidXBsb2FkQnV0dG9uIGQtZmxleFwiICpuZ0lmPVwidGhpcy5zZWxlY3RlZEltYWdlLnNpemUgPiAwXCI+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwidXBsb2FkSW1hZ2UoKVwiIFtkaXNhYmxlZF09XCJidXR0b25Mb2FkZXJcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiYnV0dG9uTG9hZGVyXCIgPjxpIGNsYXNzPVwiZmFzIGZhLWNpcmNsZS1ub3RjaCBmYS1zcGluXCI+PC9pPiZuYnNwO0xvYWRpbmc8L3NwYW4+XG4gICAgICA8c3BhbiAqbmdJZj1cIiFidXR0b25Mb2FkZXJcIiA+VXBsb2FkIEltYWdlPC9zcGFuPjwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvc2VjdGlvbj5cblxuPG5nLXRlbXBsYXRlICN1bnNwbGFzaEltYWdlc1RlbXBsYXRlPlxuXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIDxpbWcgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy8zMTQ2NjFjMTc0MTg0NDIzNDQ0MlZlY3RvciUyMCUyODElMjkucG5nXCJcbiAgICBhbHQ9XCJzZWFyY2gtYmFyLWljb25cIj5cbiAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBpbWFnZXNcIiBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiPlxuICA8L2Rpdj5cbiAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBbaXRlbVNpemVdPVwiaW1hZ2VTaXplXCIgW21pbkJ1ZmZlclB4XT1cIjgwMFwiIFttYXhCdWZmZXJQeF09XCIxNjAwXCJcbiAgICBjbGFzcz1cInNjcm9sbC1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGltYWdlLWNvbnRhaW5lclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC02XCIgKmNka1ZpcnR1YWxGb3I9XCJsZXQgaW1hZ2Ugb2YgdW5zcGxhc2hJbWFnZXNcIj5cbiAgICAgICAgPGltZyBbbGF6eUxvYWRdPVwiaW1hZ2UudXJscy50aHVtYlwiIFtlcnJvckltYWdlXT1cIidhc3NldHMvZXJyb3IuanBnJ1wiIChjbGljayk9XCJzZWxlY3RVbnNwbGFzaEltYWdlKGltYWdlKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydzZWxlY3RlZEltYWdlJzogc2VsZWN0ZWRJbWFnZS5oYXMoaW1hZ2UuaWQpfVwiIGFsdD1cIkltYWdlXCIgY2xhc3M9XCJjcFwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG5cbiAgPHAgKm5nSWY9XCJpc0xvYWRpbmdcIj5Mb2FkaW5nIG1vcmUgcmVzdWx0cy4uLjwvcD5cblxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICN1cGxvYWRJbWFnZVRlbXBsYXRlPlxuICA8ZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbWFnZS11cGxvYWQtY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLWltZy1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgIDxpbWcgbGF6eSBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzU0NzUwMGMxNzQ0Njk4ODMwMzQzdXBsb2FkLW9uZSUyMCUyODElMjkucG5nXCIgYWx0PVwidXBsb2FkLWltYWdlXCIgY2xhc3M9XCJ1cGxvYWQtaW1nXCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNvbnRhaW5lciB0ZXh0LWNlbnRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidG9wLXRleHRcIj5DaG9vc2UgYSBmaWxlIG9yIGRyYWcgYW5kIGRyb3AgaXQgaGVyZTwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlkZGxlLXRleHRcIj5KUEVHLCBQTkcgZm9ybWF0cyB1cCB0byA1ME1CPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtYnRuIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWRzIGNwXCIgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiPlxuICAgICAgICAgICAgVXBsb2FkXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiAoY2hhbmdlKT1cInVwbG9hZEltYWdlRnJvbVN5c3RlbSgkZXZlbnQpXCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcbiAgICAgIGFjY2VwdD1cImltYWdlL3BuZywgaW1hZ2UvanBlZywgaW1hZ2UvanBnLCBpbWFnZS9naWZcIiAjZmlsZUlucHV0IC8+XG5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGltYWdlLWNvbnRhaW5lciBtdC0zIGgtMzAtb3ZlcmZsb3dcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGltYWdlIG9mIHNlbGVjdGVkSW1hZ2UgfCBrZXl2YWx1ZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgc3lzdGVtSW1hZ2VcIiAqbmdJZj1cImltYWdlLnZhbHVlLmZpbGVcIj5cbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2UudmFsdWUuYXNzZXRzWzBdLnVybFwiIGFsdD1cIkltYWdlXCIgLz5cbiAgICAgICAgICA8bWF0LWljb24gKGNsaWNrKT1cImRlbGV0ZVN5c3RlbUltYWdlKGltYWdlLmtleSlcIj5kZWxldGU8L21hdC1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbWFnZUxpYnJhcnlUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cInJvdyBpbWFnZS1jb250YWluZXIgbXQtMyBoLTc1LW92ZXJmbG93XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImltYWdlTGlicmFyeS5sZW5ndGggPiAwOyBlbHNlIGVtcHR5U2NyZWVuXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbWFnZSBvZiBpbWFnZUxpYnJhcnlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IGNvbC02XCI+XG4gICAgICAgICAgPGltZyBbc3JjXT1cImltYWdlLmFzc2V0c1swXS51cmxcIiBhbHQ9XCJJbWFnZVwiIChjbGljayk9XCJzZWxlY3RGcm9tSW1hZ2VMaWJyYXJ5KGltYWdlKVwiIFtuZ0NsYXNzXT1cInsnc2VsZWN0ZWRJbWFnZSc6IHNlbGVjdGVkSW1hZ2UuaGFzKGltYWdlLnVuaXF1ZUlkKX1cIi8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI2VtcHR5U2NyZWVuPlxuICAgIDxkaXYgY2xhc3M9XCJlbXB0eS1jb250YWluZXIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHctMTAwIGZsZXgtY29sdW1uXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktaW1nLWNvbnRhaW5lciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzkzNTczN2MxNzQzNDExNzk4MTg4aW1hZ2UlMjAlMjg3JTI5LnBuZ1wiIGFsdD1cIlwiPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktbWFpbi10ZXh0XCI+XG4gICAgICAgIFVoLW9oIVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHQtMVwiPlxuICAgICAgICBObyBpbWFnZXMgaGVyZVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHQtMlwiPlxuICAgICAgICBJIGxvb2tlZCBsZWZ0LCByaWdodOKApiBldmVuIHR1cm5lZCBhcm91bmQhIFN0aWxsIG5vdGhpbmdcbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
202
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWEtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc2ltcG8tdWkvc3JjL2xpYi9lbGVtZW50cy9tZWRpYS1zZWxlY3Rvci9tZWRpYS1zZWxlY3Rvci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL21lZGlhLXNlbGVjdG9yL21lZGlhLXNlbGVjdG9yLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBaUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzVFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNuRixPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9FLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZUFBZSxFQUFnQixNQUFNLDBCQUEwQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFXdkQsTUFBTSxPQUFPLHNCQUFzQjtJQWVqQyxZQUFvQixrQkFBc0MsRUFDaEQsVUFBZ0QsRUFDdkIsVUFBZSxFQUN4QyxRQUFxQixFQUNyQixhQUFxQztRQUozQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ2hELGVBQVUsR0FBVixVQUFVLENBQXNDO1FBQ3ZCLGVBQVUsR0FB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ZUFBZTttR0FqQmQsc0JBQXNCLDBIQUN0Qix3QkFBd0IsZ0RDckJyQyw2OUpBNEdBLDBxR0Q1RlksWUFBWSwrakJBQUUsV0FBVyxzWkFBRSxtQkFBbUIsa05BQUUsd0JBQXdCLGdKQUFFLG1CQUFtQiw0UUFBRSxlQUFlLCtZQUFFLGFBQWE7OzRGQUk1SCxzQkFBc0I7a0JBUGxDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsd0JBQXdCLEVBQUUsbUJBQW1CLEVBQUUsZUFBZSxFQUFFLGFBQWEsQ0FBQzs7MEJBcUJySSxNQUFNOzJCQUFDLGVBQWU7dUdBaEJZLFFBQVE7c0JBQTVDLFNBQVM7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3Q2hpbGQsIEFmdGVyVmlld0luaXQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQsIFNjcm9sbGluZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zY3JvbGxpbmcnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEltYWdlVXBsYW9kU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ltYWdlLXVwbG9hZC1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBzdGFydFdpdGgsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBMYXp5TG9hZEltYWdlTW9kdWxlIH0gZnJvbSAnbmctbGF6eWxvYWQtaW1hZ2UnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7IEVsZW1lbnRTZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL2VkaXRvci1zZXJ2aWNlLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1tZWRpYS1zZWxlY3RvcicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCBMYXp5TG9hZEltYWdlTW9kdWxlLCBTY3JvbGxpbmdNb2R1bGUsIE1hdEljb25Nb2R1bGVdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tZWRpYS1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL21lZGlhLXNlbGVjdG9yLmNvbXBvbmVudC5jc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBNZWRpYVNlbGVjdG9yQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQFZpZXdDaGlsZChDZGtWaXJ0dWFsU2Nyb2xsVmlld3BvcnQpIHZpZXdwb3J0ITogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xyXG5cclxuICB0YWJzOiBzdHJpbmdbXSA9IFsnVW5zcGxhc2gnLCAnVXBsb2FkJywgJ0xpYnJhcnknXTtcclxuICBhY3RpdmVUYWI6IHN0cmluZyA9ICdVbnNwbGFzaCc7XHJcbiAgc2VhcmNoQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgnJyk7XHJcbiAgcGFnZU5vOiBudW1iZXIgPSAxO1xyXG4gIGlzTG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHVuc3BsYXNoSW1hZ2VzOiBhbnlbXSA9IFtdO1xyXG4gIGltYWdlTGlicmFyeTogYW55W10gPSBbXTtcclxuICBpbWFnZVNpemUgPSA1MDtcclxuICBtdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkSW1hZ2U6IE1hcDxzdHJpbmcsIGFueT4gPSBuZXcgTWFwPHN0cmluZywgYW55PjtcclxuICBidXR0b25Mb2FkZXI6IGJvb2xlYW49IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGltYWdlVXBsb2FkU2VydmljZTogSW1hZ2VVcGxhb2RTZXJ2aWNlLFxyXG4gICAgcHVibGljICBfZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8TWVkaWFTZWxlY3RvckNvbXBvbmVudD4sXHJcbiAgICBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHJpdmF0ZSBkaWFsb2dEYXRhOiBhbnksXHJcbiAgICBwcml2YXRlIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcclxuICAgIHByaXZhdGUgZWRpdG9yU2VydmljZSA6IEVsZW1lbnRTZXJ2aWNlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5tdWx0aXBsZSA9IHRoaXMuZGlhbG9nRGF0YT8ubXVsdGlwbGUgPz8gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoVW5zcGxhc2hJbWFnZXMoKTtcclxuICAgIHRoaXMuZ2V0SW1hZ2VMaWJyYXJ5KCk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLnNldHVwSW5maW5pdGVTY3JvbGwoKTtcclxuICB9XHJcblxyXG4gIGdldEltYWdlTGlicmFyeSgpIHtcclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5nZXRJbWFnZUxpYnJhcnkoKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuaW1hZ2VMaWJyYXJ5ID0gcmVzPy5kYXRhPy5jb250ZW50IHx8IFtdO1xyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIC8qKiDinIUgU2VhcmNoIEFQSSB3aXRoIGRlYm91bmNlIHRvIHJlZHVjZSB1bm5lY2Vzc2FyeSBjYWxscyAqL1xyXG4gIHNlYXJjaFVuc3BsYXNoSW1hZ2VzKCkge1xyXG4gICAgdGhpcy5zZWFyY2hDb250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAucGlwZShcclxuICAgICAgICBzdGFydFdpdGgoJycpLCAvLyBMb2FkIGltYWdlcyBpbml0aWFsbHlcclxuICAgICAgICBkZWJvdW5jZVRpbWUoNTAwKSwgLy8gV2FpdCA1MDBtcyBhZnRlciB0eXBpbmcgc3RvcHNcclxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLCAvLyBPbmx5IGNhbGwgQVBJIGlmIHZhbHVlIGNoYW5nZXNcclxuICAgICAgICBzd2l0Y2hNYXAodmFsdWUgPT4ge1xyXG4gICAgICAgICAgdGhpcy5wYWdlTm8gPSAxO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnNlYXJjaFBob3Rvc0luVW5zcGxhc2godmFsdWUgfHwgJ1RlY2hub2xvZ3knLCB0aGlzLnBhZ2VObyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHRzOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnVuc3BsYXNoSW1hZ2VzID0gcmVzdWx0cy5yZXN1bHRzO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiDinIUgSW5maW5pdGUgU2Nyb2xsICovXHJcbiAgc2V0dXBJbmZpbml0ZVNjcm9sbCgpIHtcclxuICAgIHRoaXMudmlld3BvcnQuZWxlbWVudFNjcm9sbGVkKClcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZGVib3VuY2VUaW1lKDIwMCksIC8vIOKchSBXYWl0IDIwMG1zIGJlZm9yZSBjaGVja2luZ1xyXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkgLy8g4pyFIE9ubHkgdHJpZ2dlciBpZiB2YWx1ZSBjaGFuZ2VzXHJcbiAgICAgIClcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgZW5kID0gdGhpcy52aWV3cG9ydC5tZWFzdXJlU2Nyb2xsT2Zmc2V0KCdib3R0b20nKTtcclxuXHJcbiAgICAgICAgaWYgKGVuZCA8IDMwMCAmJiAhdGhpcy5pc0xvYWRpbmcpIHsgLy8g4pyFIFRyaWdnZXIgb25seSB3aGVuIGNsb3NlIHRvIHRoZSBib3R0b21cclxuICAgICAgICAgIHRoaXMubG9hZE1vcmVJbWFnZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqIOKchSBMb2FkIE1vcmUgSW1hZ2VzICovXHJcbiAgbG9hZE1vcmVJbWFnZXMoKSB7XHJcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcpIHJldHVybjsgLy8g4pyFIFByZXZlbnQgbXVsdGlwbGUgcmVxdWVzdHNcclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLnBhZ2VObysrO1xyXG5cclxuICAgIHRoaXMuaW1hZ2VVcGxvYWRTZXJ2aWNlLnNlYXJjaFBob3Rvc0luVW5zcGxhc2godGhpcy5zZWFyY2hDb250cm9sLnZhbHVlIHx8ICdUZWNobm9sb2d5JywgdGhpcy5wYWdlTm8pXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdHM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudW5zcGxhc2hJbWFnZXMgPSBbLi4udGhpcy51bnNwbGFzaEltYWdlcywgLi4ucmVzdWx0cy5yZXN1bHRzXTtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTsgLy8g4pyFIEVuc3VyZSBpdCdzIHJlc2V0IGV2ZW4gb24gZmFpbHVyZVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHNlbGVjdFVuc3BsYXNoSW1hZ2UoaW1hZ2U6IGFueSkge1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKVxyXG4gICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBuZXcgTWFwPGFueSwgYW55PjtcclxuXHJcbiAgICBsZXQgdXBsb2FkSW1hZ2U6IGFueSA9IHtcclxuICAgICAgYnVzaW5lc3NJZDogbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2J1c2luZXNzSWQnKSxcclxuICAgICAgdW5pcXVlSWQ6IGltYWdlLmlkLFxyXG4gICAgICBhc3NldHM6IFt7XHJcbiAgICAgICAgdXJsOiBpbWFnZS51cmxzLnJhdyxcclxuICAgICAgICB3aWR0aDogaW1hZ2Uud2lkdGgsXHJcbiAgICAgICAgaGVpZ2h0OiBpbWFnZS5oZWlnaHRcclxuICAgICAgfV0sXHJcbiAgICAgIGF1dGhvcjoge1xyXG4gICAgICAgIGlkOiBpbWFnZS51c2VyLmlkLFxyXG4gICAgICAgIHVzZXJOYW1lOiBpbWFnZS51c2VyLnVzZXJuYW1lLFxyXG4gICAgICAgIG5hbWU6IGltYWdlLnVzZXIubmFtZSxcclxuICAgICAgICB0d2l0dGVyVXNlck5hbWU6IGltYWdlLnVzZXIudHdpdHRlcl91c2VybmFtZSxcclxuICAgICAgICBwb3J0Rm9saW9Vcmw6IGltYWdlLnVzZXIucG9ydGZvbGlvX3VybCxcclxuICAgICAgICBpbnN0YWdyYW1Vc2VyTmFtZTogaW1hZ2UudXNlci5pbnN0YWdyYW1fdXNlcm5hbWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIG1lZGlhOiBcIlVOU1BMQVNIXCIsXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRJbWFnZS5oYXMoaW1hZ2UuaWQpKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRJbWFnZS5kZWxldGUoaW1hZ2UuaWQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEltYWdlLnNldChpbWFnZS5pZCwgdXBsb2FkSW1hZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdXBsb2FkSW1hZ2VGcm9tU3lzdGVtKGV2ZW50OiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5tdWx0aXBsZSlcclxuICAgICAgdGhpcy5zZWxlY3RlZEltYWdlID0gbmV3IE1hcDxhbnksIGFueT47XHJcblxyXG4gICAgbGV0IGZpbGVzID0gZXZlbnQudGFyZ2V0LmZpbGVzO1xyXG4gICAgY29uc3QgbWF4aW11bUZpbGVTaXplID0gNCAqIDEwMjQgKiAxMDI0OyAvLyBNYXggaXMgNG1iXHJcblxyXG4gICAgZm9yIChsZXQgZmlsZSBvZiBmaWxlcykge1xyXG4gICAgICBpZiAobWF4aW11bUZpbGVTaXplIDwgZmlsZS5zaXplKSB7XHJcbiAgICAgICAgdGhpcy5zbmFja0Jhci5vcGVuKCdNYXhpbXVtIGZpbGUgc2l6ZSBsaW1pdCBpcyA0TUInLCAnY2xvc2UnLCB7IGR1cmF0aW9uOiAxNTAwIH0pXHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcblxyXG4gICAgICBjb25zdCBpbWFnZTogYW55ID0ge1xyXG4gICAgICAgIGJ1c2luZXNzSWQ6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdidXNpbmVzc0lkJyksXHJcbiAgICAgICAgdW5pcXVlSWQ6IGZpbGUubmFtZSArICdfJyArIGZpbGUuc2l6ZSxcclxuICAgICAgICBibHVySGFzaDogbnVsbCxcclxuICAgICAgICBhc3NldHM6IFt7XHJcbiAgICAgICAgICB3aWR0aDogMCxcclxuICAgICAgICAgIGhlaWdodDogMCxcclxuICAgICAgICAgIGJsdXJoYXNoOiAnJyxcclxuICAgICAgICAgIHVybDogJycsXHJcbiAgICAgICAgfV0sXHJcbiAgICAgICAgYXV0aG9yOiBudWxsLFxyXG4gICAgICAgIG1lZGlhOiAnREVWSUNFJyxcclxuICAgICAgICBkZXNjcmlwdGlvbjogZmlsZS5uYW1lLFxyXG4gICAgICAgIGFsdERlc2NyaXB0aW9uOiBmaWxlLm5hbWUsXHJcbiAgICAgICAgZmlsZTogZmlsZSxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGltYWdlLmFzc2V0c1swXS51cmwgPSByZXNwb25zZS50YXJnZXQucmVzdWx0O1xyXG4gICAgICB9O1xyXG4gICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcclxuXHJcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZEltYWdlLmhhcyhpbWFnZS51bmlxdWVJZCkpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkSW1hZ2Uuc2V0KGltYWdlLnVuaXF1ZUlkLCBpbWFnZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRlbGV0ZVN5c3RlbUltYWdlKGltYWdlSWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5zZWxlY3RlZEltYWdlLmRlbGV0ZShpbWFnZUlkKTtcclxuICB9XHJcblxyXG4gIHNlbGVjdEZyb21JbWFnZUxpYnJhcnkoaW1hZ2U6IGFueSkge1xyXG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKVxyXG4gICAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBuZXcgTWFwPGFueSwgYW55PjtcclxuXHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEltYWdlLmhhcyhpbWFnZS51bmlxdWVJZCkpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEltYWdlLmRlbGV0ZShpbWFnZS51bmlxdWVJZCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkSW1hZ2Uuc2V0KGltYWdlLnVuaXF1ZUlkLCBpbWFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGxvYWRJbWFnZSgpIHtcclxuICAgIHRoaXMuYnV0dG9uTG9hZGVyID10cnVlO1xyXG4gICAgbGV0IHJlcXVlc3Q6IGFueVtdID0gW107XHJcblxyXG4gICAgZm9yKGxldCBpbWFnZSBvZiB0aGlzLnNlbGVjdGVkSW1hZ2UudmFsdWVzKCkpIHtcclxuICAgICAgaWYgKGltYWdlLmZpbGUpIHtcclxuICAgICAgICBjb25zdCBmaWxlVXJsOiBhbnkgPVxyXG4gICAgICAgICAgYXdhaXQgdGhpcy5pbWFnZVVwbG9hZFNlcnZpY2UudXBsb2FkRmlsZUluQVdTKFxyXG4gICAgICAgICAgICBpbWFnZS5maWxlLFxyXG4gICAgICAgICAgICAnbGlicmFyeS1tZWRpYSdcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgaW1hZ2UuYXNzZXRzWzBdLnVybCA9IGZpbGVVcmw7XHJcbiAgICAgIH1cclxuICAgICAgcmVxdWVzdC5wdXNoKGltYWdlKTtcclxuICAgIH1cclxuICAgIHRoaXMuZWRpdG9yU2VydmljZS5zYXZlSW1hZ2VzVG9CdXNpbmVzc0xpYnJhcnkoe2RhdGE6IHJlcXVlc3R9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmNsb3NlKHJlcXVlc3QpO1xyXG4gICAgICAgIHRoaXMuYnV0dG9uTG9hZGVyPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmJ1dHRvbkxvYWRlcj1mYWxzZTtcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIiwiPHNlY3Rpb24+XHJcbiAgPGRpdiBjbGFzcz1cImhlYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPlVwbG9hZCBJbWFnZTwvZGl2PlxyXG4gICAgPG1hdC1pY29uIChjbGljayk9XCJfZGlhbG9nUmVmLmNsb3NlKClcIiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlciBmLTE4IGNwXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ0YWJzIGQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cclxuICAgIDxkaXYgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCIgW25nQ2xhc3NdPVwieydzZWxlY3RlZFRhYic6IGFjdGl2ZVRhYiA9PT0gdGFifVwiIChjbGljayk9XCJhY3RpdmVUYWIgPSB0YWJcIj57e3RhYn19PC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdVbnNwbGFzaCdcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1bnNwbGFzaEltYWdlc1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJhY3RpdmVUYWIgPT09ICdVcGxvYWQnXCI+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXBsb2FkSW1hZ2VUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnTGlicmFyeSdcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbWFnZUxpYnJhcnlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG5cclxuICA8ZGl2IGNsYXNzPVwidXBsb2FkQnV0dG9uIGQtZmxleFwiICpuZ0lmPVwidGhpcy5zZWxlY3RlZEltYWdlLnNpemUgPiAwXCI+XHJcbiAgICA8YnV0dG9uIChjbGljayk9XCJ1cGxvYWRJbWFnZSgpXCIgW2Rpc2FibGVkXT1cImJ1dHRvbkxvYWRlclwiPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cImJ1dHRvbkxvYWRlclwiID48aSBjbGFzcz1cImZhcyBmYS1jaXJjbGUtbm90Y2ggZmEtc3BpblwiPjwvaT4mbmJzcDtMb2FkaW5nPC9zcGFuPlxyXG4gICAgICA8c3BhbiAqbmdJZj1cIiFidXR0b25Mb2FkZXJcIiA+VXBsb2FkIEltYWdlPC9zcGFuPjwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcblxyXG48bmctdGVtcGxhdGUgI3Vuc3BsYXNoSW1hZ2VzVGVtcGxhdGU+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXIgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgPGltZyBzcmM9XCJodHRwczovL3Byb2Qtc2ltcG8uczMuYXAtc291dGgtMS5hbWF6b25hd3MuY29tL3Byb2QtaW1hZ2VzLzMxNDY2MWMxNzQxODQ0MjM0NDQyVmVjdG9yJTIwJTI4MSUyOS5wbmdcIlxyXG4gICAgYWx0PVwic2VhcmNoLWJhci1pY29uXCI+XHJcbiAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlNlYXJjaCBpbWFnZXNcIiBbZm9ybUNvbnRyb2xdPVwic2VhcmNoQ29udHJvbFwiPlxyXG4gIDwvZGl2PlxyXG4gIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQgW2l0ZW1TaXplXT1cImltYWdlU2l6ZVwiIFttaW5CdWZmZXJQeF09XCI4MDBcIiBbbWF4QnVmZmVyUHhdPVwiMTYwMFwiXHJcbiAgICBjbGFzcz1cInNjcm9sbC1jb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3cgaW1hZ2UtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBjb2wtNlwiICpjZGtWaXJ0dWFsRm9yPVwibGV0IGltYWdlIG9mIHVuc3BsYXNoSW1hZ2VzXCI+XHJcbiAgICAgICAgPGltZyBbbGF6eUxvYWRdPVwiaW1hZ2UudXJscy50aHVtYlwiIFtlcnJvckltYWdlXT1cIidhc3NldHMvZXJyb3IuanBnJ1wiIChjbGljayk9XCJzZWxlY3RVbnNwbGFzaEltYWdlKGltYWdlKVwiXHJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J3NlbGVjdGVkSW1hZ2UnOiBzZWxlY3RlZEltYWdlLmhhcyhpbWFnZS5pZCl9XCIgYWx0PVwiSW1hZ2VcIiBjbGFzcz1cImNwXCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cclxuXHJcbiAgPHAgKm5nSWY9XCJpc0xvYWRpbmdcIj5Mb2FkaW5nIG1vcmUgcmVzdWx0cy4uLjwvcD5cclxuXHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI3VwbG9hZEltYWdlVGVtcGxhdGU+XHJcbiAgPGRpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJpbWFnZS11cGxvYWQtY29udGFpbmVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaW1nLWNvbnRhaW5lciBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICA8aW1nIGxhenkgc3JjPVwiaHR0cHM6Ly9wcm9kLXNpbXBvLnMzLmFwLXNvdXRoLTEuYW1hem9uYXdzLmNvbS9wcm9kLWltYWdlcy81NDc1MDBjMTc0NDY5ODgzMDM0M3VwbG9hZC1vbmUlMjAlMjgxJTI5LnBuZ1wiIGFsdD1cInVwbG9hZC1pbWFnZVwiIGNsYXNzPVwidXBsb2FkLWltZ1wiPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY29udGFpbmVyIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRvcC10ZXh0XCI+Q2hvb3NlIGEgZmlsZSBvciBkcmFnIGFuZCBkcm9wIGl0IGhlcmU8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlkZGxlLXRleHRcIj5KUEVHLCBQTkcgZm9ybWF0cyB1cCB0byA1ME1CPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1idG4gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkcyBjcFwiICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIj5cclxuICAgICAgICAgICAgVXBsb2FkXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiAoY2hhbmdlKT1cInVwbG9hZEltYWdlRnJvbVN5c3RlbSgkZXZlbnQpXCIgW211bHRpcGxlXT1cIm11bHRpcGxlXCJcclxuICAgICAgYWNjZXB0PVwiaW1hZ2UvcG5nLCBpbWFnZS9qcGVnLCBpbWFnZS9qcGcsIGltYWdlL2dpZlwiICNmaWxlSW5wdXQgLz5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGltYWdlLWNvbnRhaW5lciBtdC0zIGgtMzAtb3ZlcmZsb3dcIj5cclxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaW1hZ2Ugb2Ygc2VsZWN0ZWRJbWFnZSB8IGtleXZhbHVlXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IHN5c3RlbUltYWdlXCIgKm5nSWY9XCJpbWFnZS52YWx1ZS5maWxlXCI+XHJcbiAgICAgICAgICA8aW1nIFtzcmNdPVwiaW1hZ2UudmFsdWUuYXNzZXRzWzBdLnVybFwiIGFsdD1cIkltYWdlXCIgLz5cclxuICAgICAgICAgIDxtYXQtaWNvbiAoY2xpY2spPVwiZGVsZXRlU3lzdGVtSW1hZ2UoaW1hZ2Uua2V5KVwiPmRlbGV0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNpbWFnZUxpYnJhcnlUZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwicm93IGltYWdlLWNvbnRhaW5lciBtdC0zIGgtNzUtb3ZlcmZsb3dcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbWFnZUxpYnJhcnkubGVuZ3RoID4gMDsgZWxzZSBlbXB0eVNjcmVlblwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpbWFnZSBvZiBpbWFnZUxpYnJhcnlcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgY29sLTZcIj5cclxuICAgICAgICAgIDxpbWcgW3NyY109XCJpbWFnZS5hc3NldHNbMF0udXJsXCIgYWx0PVwiSW1hZ2VcIiAoY2xpY2spPVwic2VsZWN0RnJvbUltYWdlTGlicmFyeShpbWFnZSlcIiBbbmdDbGFzc109XCJ7J3NlbGVjdGVkSW1hZ2UnOiBzZWxlY3RlZEltYWdlLmhhcyhpbWFnZS51bmlxdWVJZCl9XCIvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDxuZy10ZW1wbGF0ZSAjZW1wdHlTY3JlZW4+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZW1wdHktY29udGFpbmVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciB3LTEwMCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktaW1nLWNvbnRhaW5lciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vcHJvZC1zaW1wby5zMy5hcC1zb3V0aC0xLmFtYXpvbmF3cy5jb20vcHJvZC1pbWFnZXMvOTM1NzM3YzE3NDM0MTE3OTgxODhpbWFnZSUyMCUyODclMjkucG5nXCIgYWx0PVwiXCI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZW1wdHktbWFpbi10ZXh0XCI+XHJcbiAgICAgICAgVWgtb2ghXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHQtMVwiPlxyXG4gICAgICAgIE5vIGltYWdlcyBoZXJlXHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3ViLXRleHQtMlwiPlxyXG4gICAgICAgIEkgbG9va2VkIGxlZnQsIHJpZ2h04oCmIGV2ZW4gdHVybmVkIGFyb3VuZCEgU3RpbGwgbm90aGluZ1xyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
@@ -13,7 +13,6 @@ export class NavbarButtonElementComponent {
13
13
  this.HeaderButtonStyle = HeaderButtonStyle;
14
14
  }
15
15
  ngOnInit() {
16
- console.log(this.accentColor);
17
16
  }
18
17
  changePage(pageData) {
19
18
  this._eventService.pageRedirectionButton.emit({ data: pageData ? pageData : this.buttonData });
@@ -37,4 +36,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
37
36
  }], accentColor: [{
38
37
  type: Input
39
38
  }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLWJ1dHRvbi1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWxlbWVudHMvbmF2YmFyLWJ1dHRvbi1lbGVtZW50L25hdmJhci1idXR0b24tZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL25hdmJhci1idXR0b24tZWxlbWVudC9uYXZiYXItYnV0dG9uLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBU2pFLE1BQU0sT0FBTyw0QkFBNEI7SUFTdkMsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFEaEQsc0JBQWlCLEdBQUcsaUJBQWlCLENBQUE7SUFDYSxDQUFDO0lBRW5ELFFBQVE7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtJQUMvQixDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQWM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUMsQ0FBQyxDQUFBO0lBQzlGLENBQUM7K0dBakJVLDRCQUE0QjttR0FBNUIsNEJBQTRCLGlRQ2Z6QyxvbFFBOEdBLDJzQkRuR1ksWUFBWSxvVkFBRSxlQUFlLDROQUFFLGNBQWM7OzRGQUk1Qyw0QkFBNEI7a0JBUHhDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBQzNCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDO2tGQUsvQyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IEhlYWRlckJ1dHRvbk1vZGVsLCBIZWFkZXJCdXR0b25TdHlsZU1vZGVsLCBOYXZiYXJCdXR0b24gfSBmcm9tICcuLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IEhlYWRlckJ1dHRvblN0eWxlIH0gZnJvbSAnLi8uLi8uLi9zdHlsZXMvaW5kZXgnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb2xvci5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1uYXZiYXItYnV0dG9uLWVsZW1lbnQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBDb2xvckRpcmVjdGl2ZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25hdmJhci1idXR0b24tZWxlbWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL25hdmJhci1idXR0b24tZWxlbWVudC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2YmFyQnV0dG9uRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuICBASW5wdXQoKSBidXR0b25EYXRhPzogTmF2YmFyQnV0dG9uO1xyXG4gIEBJbnB1dCgpIGJ1dHRvblN0eWxlPzogSGVhZGVyQnV0dG9uU3R5bGVNb2RlbFxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkU3R5bGU/OiBIZWFkZXJCdXR0b25TdHlsZVxyXG4gIEBJbnB1dCgpIGJnQ29sb3I/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2VjdGlvbklkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFjY2VudENvbG9yPzogc3RyaW5nO1xyXG5cclxuICBIZWFkZXJCdXR0b25TdHlsZSA9IEhlYWRlckJ1dHRvblN0eWxlXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlKXt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2codGhpcy5hY2NlbnRDb2xvcilcclxuICB9XHJcblxyXG4gIGNoYW5nZVBhZ2UocGFnZURhdGE/OiBhbnkpe1xyXG4gICAgdGhpcy5fZXZlbnRTZXJ2aWNlLnBhZ2VSZWRpcmVjdGlvbkJ1dHRvbi5lbWl0KHtkYXRhOiBwYWdlRGF0YSA/IHBhZ2VEYXRhIDogdGhpcy5idXR0b25EYXRhfSlcclxuICB9XHJcbn1cclxuIiwiPGRpdiAqbmdJZj1cImZhbHNlXCI+XHJcbiAgPGRpdiAqbmdJZj1cInNlbGVjdGVkU3R5bGUgPT09IEhlYWRlckJ1dHRvblN0eWxlLlRBQlwiPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFidXR0b25EYXRhPy5mb2xkZXJcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gc3R5bGU9XCJib3JkZXI6IG5vbmU7IHdoaXRlLXNwYWNlOiBub3dyYXA7XCIgW2lkXT1cInNlY3Rpb25JZFwiIFtzaW1wb0NvbG9yXT1cImJnQ29sb3JcIlxyXG4gICAgICBbbmdTdHlsZV09XCJ7Y29sb3I6YnV0dG9uU3R5bGU/LmNvbG9yfVwiIGNsYXNzPVwibmF2YmFyLWJ1dHRvblwiPnt7YnV0dG9uRGF0YT8ubGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6JzFweCBzb2xpZCcrYnV0dG9uU3R5bGU/LmNvbG9yfVwiIChjbGljayk9XCJjaGFuZ2VQYWdlKClcIiBbaWRdPVwic2VjdGlvbklkXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiICpuZ0lmPVwiYnV0dG9uRGF0YT8uZm9sZGVyICYmIChidXR0b25EYXRhPy5mb2xkZXI/LnBhZ2VzPy5sZW5ndGggfHwgMCkgPiAwXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwibmF2YmFyLWJ1dHRvbiBkcm9wZG93bi10b2dnbGVcIiBbc2ltcG9Db2xvcl09XCJiZ0NvbG9yXCIgc3R5bGU9XCJib3JkZXI6IG5vbmU7IHdoaXRlLXNwYWNlOiBub3dyYXA7XCJcclxuICAgICAgW25nU3R5bGVdPVwie2NvbG9yOmJ1dHRvblN0eWxlPy5jb2xvcn1cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBpZD1cImhlYWRlckRyb3Bkb3duQnV0dG9uXCIgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAge3tidXR0b25EYXRhPy5sYWJlbH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6JzFweCBzb2xpZCcrYnV0dG9uU3R5bGU/LmNvbG9yfVwiIFtpZF09XCJzZWN0aW9uSWRcIj48L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJoZWFkZXJEcm9wZG93bkJ1dHRvblwiPlxyXG4gICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiICpuZ0Zvcj1cImxldCBwYWdlIG9mIGJ1dHRvbkRhdGE/LmZvbGRlcj8ucGFnZXNcIiAoY2xpY2spPVwiY2hhbmdlUGFnZShwYWdlKVwiPnt7cGFnZS5sYWJlbH19PC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFN0eWxlID09PSBIZWFkZXJCdXR0b25TdHlsZS5ST1VORF9TVUJUTEVcIj5cclxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwicHJpbWFyeSBidG4tbGcgcHgtNCBtZS1tZC0yIG5hdmJhci1idXR0b25cIiAqbmdJZj1cIiFidXR0b25EYXRhPy5mb2xkZXJcIlxyXG4gICAgICBzdHlsZT1cImJvcmRlcjogbm9uZTt3aWR0aDogbWF4LWNvbnRlbnQhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOiA4cHg7XCJcclxuICAgICAgW25nU3R5bGVdPVwie2NvbG9yOmJ1dHRvblN0eWxlPy5jb2xvciwnYmFja2dyb3VuZC1jb2xvcic6YnV0dG9uU3R5bGU/LnN1YnRsZUNvbG9yfVwiIChjbGljayk9XCJjaGFuZ2VQYWdlKClcIlxyXG4gICAgICBbaWRdPVwic2VjdGlvbklkXCI+e3tidXR0b25EYXRhPy5sYWJlbH19PC9idXR0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAqbmdJZj1cImJ1dHRvbkRhdGE/LmZvbGRlciAmJiAoYnV0dG9uRGF0YT8uZm9sZGVyPy5wYWdlcz8ubGVuZ3RoIHx8IDApID4gMFwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInByaW1hcnkgYnRuLWxnIHB4LTQgbWUtbWQtMiBuYXZiYXItYnV0dG9uIGRyb3Bkb3duLXRvZ2dsZVwiXHJcbiAgICAgICAgc3R5bGU9XCJib3JkZXI6IG5vbmU7d2lkdGg6IG1heC1jb250ZW50IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czogOHB4O1wiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie2NvbG9yOmJ1dHRvblN0eWxlPy5jb2xvciwnYmFja2dyb3VuZC1jb2xvcic6YnV0dG9uU3R5bGU/LnN1YnRsZUNvbG9yfVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIGlkPVwiaGVhZGVyRHJvcGRvd25CdXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cclxuICAgICAgICB7e2J1dHRvbkRhdGE/LmxhYmVsfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiaGVhZGVyRHJvcGRvd25CdXR0b25cIj5cclxuICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAqbmdGb3I9XCJsZXQgcGFnZSBvZiBidXR0b25EYXRhPy5mb2xkZXI/LnBhZ2VzXCIgKGNsaWNrKT1cImNoYW5nZVBhZ2UocGFnZSlcIj57e3BhZ2UubGFiZWx9fTwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRTdHlsZSA9PT0gSGVhZGVyQnV0dG9uU3R5bGUuUk9VTkRfQk9MRFwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJwcmltYXJ5IGJ0bi1sZyBweC00IG1lLW1kLTIgbmF2YmFyLWJ1dHRvblwiICpuZ0lmPVwiIWJ1dHRvbkRhdGE/LmZvbGRlclwiXHJcbiAgICAgIHN0eWxlPVwiYm9yZGVyOiBub25lO3dpZHRoOiBtYXgtY29udGVudCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6IDhweDtcIlxyXG4gICAgICBbbmdTdHlsZV09XCJ7Y29sb3I6YnV0dG9uU3R5bGU/LmJvbGRDb2xvciwnYmFja2dyb3VuZC1jb2xvcic6YnV0dG9uU3R5bGU/LmJhY2tncm91bmRDb2xvcn1cIiAoY2xpY2spPVwiY2hhbmdlUGFnZSgpXCJcclxuICAgICAgW2lkXT1cInNlY3Rpb25JZFwiPnt7YnV0dG9uRGF0YT8ubGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCIgKm5nSWY9XCJidXR0b25EYXRhPy5mb2xkZXIgJiYgKGJ1dHRvbkRhdGE/LmZvbGRlcj8ucGFnZXM/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJwcmltYXJ5IGJ0bi1sZyBweC00IG1lLW1kLTIgbmF2YmFyLWJ1dHRvbiBkcm9wZG93bi10b2dnbGVcIlxyXG4gICAgICAgIHN0eWxlPVwiYm9yZGVyOiBub25lO3dpZHRoOiBtYXgtY29udGVudCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6IDhweDtcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntjb2xvcjpidXR0b25TdHlsZT8uYm9sZENvbG9yLCdiYWNrZ3JvdW5kLWNvbG9yJzpidXR0b25TdHlsZT8uYmFja2dyb3VuZENvbG9yfVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIGlkPVwiaGVhZGVyRHJvcGRvd25CdXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cclxuICAgICAgICB7e2J1dHRvbkRhdGE/LmxhYmVsfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiaGVhZGVyRHJvcGRvd25CdXR0b25cIj5cclxuICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAqbmdGb3I9XCJsZXQgcGFnZSBvZiBidXR0b25EYXRhPy5mb2xkZXI/LnBhZ2VzXCIgKGNsaWNrKT1cImNoYW5nZVBhZ2UocGFnZSlcIj57e3BhZ2UubGFiZWx9fTwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRTdHlsZSA9PT0gSGVhZGVyQnV0dG9uU3R5bGUuU1FVQVJFX1NVQlRMRVwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJwcmltYXJ5IGJ0bi1sZyBweC00IG1lLW1kLTIgbmF2YmFyLWJ1dHRvblwiICpuZ0lmPVwiIWJ1dHRvbkRhdGE/LmZvbGRlclwiXHJcbiAgICAgIHN0eWxlPVwiYm9yZGVyOiBub25lO2JvcmRlci1yYWRpdXM6IDBweCAhaW1wb3J0YW50O3dpZHRoOiBtYXgtY29udGVudCFpbXBvcnRhbnQ7XCJcclxuICAgICAgW25nU3R5bGVdPVwie2NvbG9yOmJ1dHRvblN0eWxlPy5jb2xvciwnYmFja2dyb3VuZC1jb2xvcic6YnV0dG9uU3R5bGU/LnN1YnRsZUNvbG9yfVwiIChjbGljayk9XCJjaGFuZ2VQYWdlKClcIlxyXG4gICAgICBbaWRdPVwic2VjdGlvbklkXCI+e3tidXR0b25EYXRhPy5sYWJlbH19PC9idXR0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAqbmdJZj1cImJ1dHRvbkRhdGE/LmZvbGRlciAmJiAoYnV0dG9uRGF0YT8uZm9sZGVyPy5wYWdlcz8ubGVuZ3RoIHx8IDApID4gMFwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInByaW1hcnkgYnRuLWxnIHB4LTQgbWUtbWQtMiBuYXZiYXItYnV0dG9uIGRyb3Bkb3duLXRvZ2dsZVwiXHJcbiAgICAgICAgc3R5bGU9XCJib3JkZXI6IG5vbmU7Ym9yZGVyLXJhZGl1czogMHB4ICFpbXBvcnRhbnQ7d2lkdGg6IG1heC1jb250ZW50IWltcG9ydGFudDtcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cIntjb2xvcjpidXR0b25TdHlsZT8uY29sb3IsJ2JhY2tncm91bmQtY29sb3InOmJ1dHRvblN0eWxlPy5zdWJ0bGVDb2xvcn1cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBpZD1cImhlYWRlckRyb3Bkb3duQnV0dG9uXCIgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAge3tidXR0b25EYXRhPy5sYWJlbH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImhlYWRlckRyb3Bkb3duQnV0dG9uXCI+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgYnV0dG9uRGF0YT8uZm9sZGVyPy5wYWdlc1wiIChjbGljayk9XCJjaGFuZ2VQYWdlKHBhZ2UpXCI+e3twYWdlLmxhYmVsfX08L2E+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInNlbGVjdGVkU3R5bGUgPT09IEhlYWRlckJ1dHRvblN0eWxlLlNRVUFSRV9CT0xEXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInByaW1hcnkgYnRuLWxnIHB4LTQgbWUtbWQtMiBuYXZiYXItYnV0dG9uXCIgKm5nSWY9XCIhYnV0dG9uRGF0YT8uZm9sZGVyXCJcclxuICAgICAgc3R5bGU9XCJib3JkZXI6IG5vbmU7d2lkdGg6IG1heC1jb250ZW50IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czogMHB4ICFpbXBvcnRhbnQ7XCJcclxuICAgICAgW25nU3R5bGVdPVwie2NvbG9yOmJ1dHRvblN0eWxlPy5ib2xkQ29sb3IsJ2JhY2tncm91bmQtY29sb3InOmJ1dHRvblN0eWxlPy5iYWNrZ3JvdW5kQ29sb3J9XCIgKGNsaWNrKT1cImNoYW5nZVBhZ2UoKVwiXHJcbiAgICAgIFtpZF09XCJzZWN0aW9uSWRcIj57e2J1dHRvbkRhdGE/LmxhYmVsfX08L2J1dHRvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiICpuZ0lmPVwiYnV0dG9uRGF0YT8uZm9sZGVyICYmIChidXR0b25EYXRhPy5mb2xkZXI/LnBhZ2VzPy5sZW5ndGggfHwgMCkgPiAwXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwicHJpbWFyeSBidG4tbGcgcHgtNCBtZS1tZC0yIG5hdmJhci1idXR0b24gZHJvcGRvd24tdG9nZ2xlXCJcclxuICAgICAgc3R5bGU9XCJib3JkZXI6IG5vbmU7d2lkdGg6IG1heC1jb250ZW50IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czogMHB4ICFpbXBvcnRhbnQ7XCJcclxuICAgICAgW25nU3R5bGVdPVwie2NvbG9yOmJ1dHRvblN0eWxlPy5ib2xkQ29sb3IsJ2JhY2tncm91bmQtY29sb3InOmJ1dHRvblN0eWxlPy5iYWNrZ3JvdW5kQ29sb3J9XCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgaWQ9XCJoZWFkZXJEcm9wZG93bkJ1dHRvblwiIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxyXG4gICAgICAgIHt7YnV0dG9uRGF0YT8ubGFiZWx9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJoZWFkZXJEcm9wZG93bkJ1dHRvblwiPlxyXG4gICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiICpuZ0Zvcj1cImxldCBwYWdlIG9mIGJ1dHRvbkRhdGE/LmZvbGRlcj8ucGFnZXNcIiAoY2xpY2spPVwiY2hhbmdlUGFnZShwYWdlKVwiPnt7cGFnZS5sYWJlbH19PC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0gPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY29sb3I9XCJwcmltYXJ5IGJ0bi1sZyBweC00IG1lLW1kLTJcIj57e2J1dHRvbkRhdGE/LmNvbnRlbnQ/LmxhYmVsfX08L2J1dHRvbj4gLS0+XHJcblxyXG48L2Rpdj5cclxuPGRpdj5cclxuICA8IS0tIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHN0eWxlPVwiYm9yZGVyOiBub25lO3dpZHRoOiBtYXgtY29udGVudCFpbXBvcnRhbnQ7XCIgKm5nSWY9XCIhYnV0dG9uRGF0YT8uZm9sZGVyXCIgW3NpbXBvQ29sb3JdPVwiYnV0dG9uRGF0YT8uc3RhdHVzID8gJycgOiBiZ0NvbG9yXCJcclxuICAgIChjbGljayk9XCJjaGFuZ2VQYWdlKClcIiBbaWRdPVwic2VjdGlvbklkXCIgW3N0eWxlLmNvbG9yXT1cImJ1dHRvbkRhdGE/LnN0YXR1cyA/IGFjY2VudENvbG9yIDogJydcIiAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiYnV0dG9uRGF0YT8uc3RhdHVzID8gJzcwMCcgOiAnJ1wiXHJcbiAgICBjbGFzcz1cInN0YXR1cy1uYXZiYXItYnV0dG9uXCI+e3tidXR0b25EYXRhPy5sYWJlbH19PC9idXR0b24+IC0tPlxyXG4gICAgPGJ1dHRvbiBjICpuZ0lmPVwiIWJ1dHRvbkRhdGE/LmZvbGRlclwiIFtzaW1wb0NvbG9yXT1cImJ1dHRvbkRhdGE/LnN0YXR1cyA/ICcnIDogYmdDb2xvclwiXHJcbiAgICAoY2xpY2spPVwiY2hhbmdlUGFnZSgpXCIgW2lkXT1cInNlY3Rpb25JZFwiIFtzdHlsZS5jb2xvcl09XCJidXR0b25EYXRhPy5zdGF0dXMgPyBhY2NlbnRDb2xvciA6ICcnXCIgIFtzdHlsZS5mb250V2VpZ2h0XT1cImJ1dHRvbkRhdGE/LnN0YXR1cyA/ICc3MDAnIDogJydcIlxyXG4gICAgY2xhc3M9XCJzdGF0dXMtbmF2YmFyLWJ1dHRvbiBidXR0b25cIj5cclxuICAgIHt7YnV0dG9uRGF0YT8ubGFiZWx9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCIgKm5nSWY9XCJidXR0b25EYXRhPy5mb2xkZXIgJiYgKGJ1dHRvbkRhdGE/LmZvbGRlcj8ucGFnZXM/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cclxuICAgIDxidXR0b24gY2xhc3M9XCJzdGF0dXMtbmF2YmFyLWJ1dHRvbiBub3Qtc2VsZWN0ZWQtZHJvcGRvd24gZHJvcGRvd24tdG9nZ2xlXCIgW3N0eWxlLmZvbnRXZWlnaHRdPVwiYnV0dG9uRGF0YT8uc3RhdHVzID8gJzcwMCcgOiAnJ1wiIFtzaW1wb0NvbG9yXT1cImJ1dHRvbkRhdGE/LnN0YXR1cyA/ICcnIDogYmdDb2xvclwiXHJcbiAgICAgIHN0eWxlPVwiYm9yZGVyOiBub25lO3dpZHRoOiBtYXgtY29udGVudCFpbXBvcnRhbnQ7XCIgW3N0eWxlLmNvbG9yXT1cImJ1dHRvbkRhdGE/LnN0YXR1cyA/IGFjY2VudENvbG9yIDogJydcIiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJoZWFkZXJEcm9wZG93bkJ1dHRvblwiXHJcbiAgICAgIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxyXG4gICAgICB7e2J1dHRvbkRhdGE/LmxhYmVsfX1cclxuICAgIDwvYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJoZWFkZXJEcm9wZG93bkJ1dHRvblwiPlxyXG4gICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAqbmdGb3I9XCJsZXQgcGFnZSBvZiBidXR0b25EYXRhPy5mb2xkZXI/LnBhZ2VzXCIgKGNsaWNrKT1cImNoYW5nZVBhZ2UocGFnZSlcIj57e3BhZ2UubGFiZWx9fTwvYT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
39
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2YmFyLWJ1dHRvbi1lbGVtZW50LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NpbXBvLXVpL3NyYy9saWIvZWxlbWVudHMvbmF2YmFyLWJ1dHRvbi1lbGVtZW50L25hdmJhci1idXR0b24tZWxlbWVudC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaW1wby11aS9zcmMvbGliL2VsZW1lbnRzL25hdmJhci1idXR0b24tZWxlbWVudC9uYXZiYXItYnV0dG9uLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV6RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7O0FBU2pFLE1BQU0sT0FBTyw0QkFBNEI7SUFTdkMsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFEaEQsc0JBQWlCLEdBQUcsaUJBQWlCLENBQUE7SUFDYSxDQUFDO0lBRW5ELFFBQVE7SUFDUixDQUFDO0lBRUQsVUFBVSxDQUFDLFFBQWM7UUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUMsQ0FBQyxDQUFBO0lBQzlGLENBQUM7K0dBaEJVLDRCQUE0QjttR0FBNUIsNEJBQTRCLGlRQ2Z6QyxvbFFBOEdBLDJzQkRuR1ksWUFBWSxvVkFBRSxlQUFlLDROQUFFLGNBQWM7OzRGQUk1Qyw0QkFBNEI7a0JBUHhDLFNBQVM7K0JBQ0UsNkJBQTZCLGNBQzNCLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDO2tGQUsvQyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IEhlYWRlckJ1dHRvbk1vZGVsLCBIZWFkZXJCdXR0b25TdHlsZU1vZGVsLCBOYXZiYXJCdXR0b24gfSBmcm9tICcuLy4uLy4uL3N0eWxlcy9zdHlsZS5tb2RlbCc7XHJcbmltcG9ydCB7IEhlYWRlckJ1dHRvblN0eWxlIH0gZnJvbSAnLi8uLi8uLi9zdHlsZXMvaW5kZXgnO1xyXG5pbXBvcnQgeyBFdmVudHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXZlbnRzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb2xvckRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZS9jb2xvci5kaXJlY3RpdmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzaW1wby1uYXZiYXItYnV0dG9uLWVsZW1lbnQnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTWF0QnV0dG9uTW9kdWxlLCBDb2xvckRpcmVjdGl2ZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL25hdmJhci1idXR0b24tZWxlbWVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL25hdmJhci1idXR0b24tZWxlbWVudC5jb21wb25lbnQuY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgTmF2YmFyQnV0dG9uRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdHtcclxuICBASW5wdXQoKSBidXR0b25EYXRhPzogTmF2YmFyQnV0dG9uO1xyXG4gIEBJbnB1dCgpIGJ1dHRvblN0eWxlPzogSGVhZGVyQnV0dG9uU3R5bGVNb2RlbFxyXG4gIEBJbnB1dCgpIHNlbGVjdGVkU3R5bGU/OiBIZWFkZXJCdXR0b25TdHlsZVxyXG4gIEBJbnB1dCgpIGJnQ29sb3I/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2VjdGlvbklkPzogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGFjY2VudENvbG9yPzogc3RyaW5nO1xyXG5cclxuICBIZWFkZXJCdXR0b25TdHlsZSA9IEhlYWRlckJ1dHRvblN0eWxlXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZXZlbnRTZXJ2aWNlOiBFdmVudHNTZXJ2aWNlKXt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFnZShwYWdlRGF0YT86IGFueSl7XHJcbiAgICB0aGlzLl9ldmVudFNlcnZpY2UucGFnZVJlZGlyZWN0aW9uQnV0dG9uLmVtaXQoe2RhdGE6IHBhZ2VEYXRhID8gcGFnZURhdGEgOiB0aGlzLmJ1dHRvbkRhdGF9KVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2ICpuZ0lmPVwiZmFsc2VcIj5cclxuICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRTdHlsZSA9PT0gSGVhZGVyQnV0dG9uU3R5bGUuVEFCXCI+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWJ1dHRvbkRhdGE/LmZvbGRlclwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBzdHlsZT1cImJvcmRlcjogbm9uZTsgd2hpdGUtc3BhY2U6IG5vd3JhcDtcIiBbaWRdPVwic2VjdGlvbklkXCIgW3NpbXBvQ29sb3JdPVwiYmdDb2xvclwiXHJcbiAgICAgIFtuZ1N0eWxlXT1cIntjb2xvcjpidXR0b25TdHlsZT8uY29sb3J9XCIgY2xhc3M9XCJuYXZiYXItYnV0dG9uXCI+e3tidXR0b25EYXRhPy5sYWJlbH19PC9idXR0b24+XHJcbiAgICAgIDxkaXYgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzonMXB4IHNvbGlkJytidXR0b25TdHlsZT8uY29sb3J9XCIgKGNsaWNrKT1cImNoYW5nZVBhZ2UoKVwiIFtpZF09XCJzZWN0aW9uSWRcIj48L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCIgKm5nSWY9XCJidXR0b25EYXRhPy5mb2xkZXIgJiYgKGJ1dHRvbkRhdGE/LmZvbGRlcj8ucGFnZXM/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJuYXZiYXItYnV0dG9uIGRyb3Bkb3duLXRvZ2dsZVwiIFtzaW1wb0NvbG9yXT1cImJnQ29sb3JcIiBzdHlsZT1cImJvcmRlcjogbm9uZTsgd2hpdGUtc3BhY2U6IG5vd3JhcDtcIlxyXG4gICAgICBbbmdTdHlsZV09XCJ7Y29sb3I6YnV0dG9uU3R5bGU/LmNvbG9yfVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIGlkPVwiaGVhZGVyRHJvcGRvd25CdXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cclxuICAgICAgICB7e2J1dHRvbkRhdGE/LmxhYmVsfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxkaXYgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzonMXB4IHNvbGlkJytidXR0b25TdHlsZT8uY29sb3J9XCIgW2lkXT1cInNlY3Rpb25JZFwiPjwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImhlYWRlckRyb3Bkb3duQnV0dG9uXCI+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgYnV0dG9uRGF0YT8uZm9sZGVyPy5wYWdlc1wiIChjbGljayk9XCJjaGFuZ2VQYWdlKHBhZ2UpXCI+e3twYWdlLmxhYmVsfX08L2E+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cInNlbGVjdGVkU3R5bGUgPT09IEhlYWRlckJ1dHRvblN0eWxlLlJPVU5EX1NVQlRMRVwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJwcmltYXJ5IGJ0bi1sZyBweC00IG1lLW1kLTIgbmF2YmFyLWJ1dHRvblwiICpuZ0lmPVwiIWJ1dHRvbkRhdGE/LmZvbGRlclwiXHJcbiAgICAgIHN0eWxlPVwiYm9yZGVyOiBub25lO3dpZHRoOiBtYXgtY29udGVudCFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6IDhweDtcIlxyXG4gICAgICBbbmdTdHlsZV09XCJ7Y29sb3I6YnV0dG9uU3R5bGU/LmNvbG9yLCdiYWNrZ3JvdW5kLWNvbG9yJzpidXR0b25TdHlsZT8uc3VidGxlQ29sb3J9XCIgKGNsaWNrKT1cImNoYW5nZVBhZ2UoKVwiXHJcbiAgICAgIFtpZF09XCJzZWN0aW9uSWRcIj57e2J1dHRvbkRhdGE/LmxhYmVsfX08L2J1dHRvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiICpuZ0lmPVwiYnV0dG9uRGF0YT8uZm9sZGVyICYmIChidXR0b25EYXRhPy5mb2xkZXI/LnBhZ2VzPy5sZW5ndGggfHwgMCkgPiAwXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwicHJpbWFyeSBidG4tbGcgcHgtNCBtZS1tZC0yIG5hdmJhci1idXR0b24gZHJvcGRvd24tdG9nZ2xlXCJcclxuICAgICAgICBzdHlsZT1cImJvcmRlcjogbm9uZTt3aWR0aDogbWF4LWNvbnRlbnQhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOiA4cHg7XCJcclxuICAgICAgICBbbmdTdHlsZV09XCJ7Y29sb3I6YnV0dG9uU3R5bGU/LmNvbG9yLCdiYWNrZ3JvdW5kLWNvbG9yJzpidXR0b25TdHlsZT8uc3VidGxlQ29sb3J9XCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgaWQ9XCJoZWFkZXJEcm9wZG93bkJ1dHRvblwiIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxyXG4gICAgICAgIHt7YnV0dG9uRGF0YT8ubGFiZWx9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJoZWFkZXJEcm9wZG93bkJ1dHRvblwiPlxyXG4gICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiICpuZ0Zvcj1cImxldCBwYWdlIG9mIGJ1dHRvbkRhdGE/LmZvbGRlcj8ucGFnZXNcIiAoY2xpY2spPVwiY2hhbmdlUGFnZShwYWdlKVwiPnt7cGFnZS5sYWJlbH19PC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFN0eWxlID09PSBIZWFkZXJCdXR0b25TdHlsZS5ST1VORF9CT0xEXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInByaW1hcnkgYnRuLWxnIHB4LTQgbWUtbWQtMiBuYXZiYXItYnV0dG9uXCIgKm5nSWY9XCIhYnV0dG9uRGF0YT8uZm9sZGVyXCJcclxuICAgICAgc3R5bGU9XCJib3JkZXI6IG5vbmU7d2lkdGg6IG1heC1jb250ZW50IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czogOHB4O1wiXHJcbiAgICAgIFtuZ1N0eWxlXT1cIntjb2xvcjpidXR0b25TdHlsZT8uYm9sZENvbG9yLCdiYWNrZ3JvdW5kLWNvbG9yJzpidXR0b25TdHlsZT8uYmFja2dyb3VuZENvbG9yfVwiIChjbGljayk9XCJjaGFuZ2VQYWdlKClcIlxyXG4gICAgICBbaWRdPVwic2VjdGlvbklkXCI+e3tidXR0b25EYXRhPy5sYWJlbH19PC9idXR0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAqbmdJZj1cImJ1dHRvbkRhdGE/LmZvbGRlciAmJiAoYnV0dG9uRGF0YT8uZm9sZGVyPy5wYWdlcz8ubGVuZ3RoIHx8IDApID4gMFwiPlxyXG4gICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInByaW1hcnkgYnRuLWxnIHB4LTQgbWUtbWQtMiBuYXZiYXItYnV0dG9uIGRyb3Bkb3duLXRvZ2dsZVwiXHJcbiAgICAgICAgc3R5bGU9XCJib3JkZXI6IG5vbmU7d2lkdGg6IG1heC1jb250ZW50IWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czogOHB4O1wiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie2NvbG9yOmJ1dHRvblN0eWxlPy5ib2xkQ29sb3IsJ2JhY2tncm91bmQtY29sb3InOmJ1dHRvblN0eWxlPy5iYWNrZ3JvdW5kQ29sb3J9XCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgaWQ9XCJoZWFkZXJEcm9wZG93bkJ1dHRvblwiIGRhdGEtYnMtdG9nZ2xlPVwiZHJvcGRvd25cIiBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPlxyXG4gICAgICAgIHt7YnV0dG9uRGF0YT8ubGFiZWx9fVxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiBhcmlhLWxhYmVsbGVkYnk9XCJoZWFkZXJEcm9wZG93bkJ1dHRvblwiPlxyXG4gICAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiICpuZ0Zvcj1cImxldCBwYWdlIG9mIGJ1dHRvbkRhdGE/LmZvbGRlcj8ucGFnZXNcIiAoY2xpY2spPVwiY2hhbmdlUGFnZShwYWdlKVwiPnt7cGFnZS5sYWJlbH19PC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgKm5nSWY9XCJzZWxlY3RlZFN0eWxlID09PSBIZWFkZXJCdXR0b25TdHlsZS5TUVVBUkVfU1VCVExFXCI+XHJcbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjbGFzcz1cInByaW1hcnkgYnRuLWxnIHB4LTQgbWUtbWQtMiBuYXZiYXItYnV0dG9uXCIgKm5nSWY9XCIhYnV0dG9uRGF0YT8uZm9sZGVyXCJcclxuICAgICAgc3R5bGU9XCJib3JkZXI6IG5vbmU7Ym9yZGVyLXJhZGl1czogMHB4ICFpbXBvcnRhbnQ7d2lkdGg6IG1heC1jb250ZW50IWltcG9ydGFudDtcIlxyXG4gICAgICBbbmdTdHlsZV09XCJ7Y29sb3I6YnV0dG9uU3R5bGU/LmNvbG9yLCdiYWNrZ3JvdW5kLWNvbG9yJzpidXR0b25TdHlsZT8uc3VidGxlQ29sb3J9XCIgKGNsaWNrKT1cImNoYW5nZVBhZ2UoKVwiXHJcbiAgICAgIFtpZF09XCJzZWN0aW9uSWRcIj57e2J1dHRvbkRhdGE/LmxhYmVsfX08L2J1dHRvbj5cclxuICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93blwiICpuZ0lmPVwiYnV0dG9uRGF0YT8uZm9sZGVyICYmIChidXR0b25EYXRhPy5mb2xkZXI/LnBhZ2VzPy5sZW5ndGggfHwgMCkgPiAwXCI+XHJcbiAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwicHJpbWFyeSBidG4tbGcgcHgtNCBtZS1tZC0yIG5hdmJhci1idXR0b24gZHJvcGRvd24tdG9nZ2xlXCJcclxuICAgICAgICBzdHlsZT1cImJvcmRlcjogbm9uZTtib3JkZXItcmFkaXVzOiAwcHggIWltcG9ydGFudDt3aWR0aDogbWF4LWNvbnRlbnQhaW1wb3J0YW50O1wiXHJcbiAgICAgICAgW25nU3R5bGVdPVwie2NvbG9yOmJ1dHRvblN0eWxlPy5jb2xvciwnYmFja2dyb3VuZC1jb2xvcic6YnV0dG9uU3R5bGU/LnN1YnRsZUNvbG9yfVwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgIGlkPVwiaGVhZGVyRHJvcGRvd25CdXR0b25cIiBkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCIgYXJpYS1oYXNwb3B1cD1cInRydWVcIiBhcmlhLWV4cGFuZGVkPVwiZmFsc2VcIj5cclxuICAgICAgICB7e2J1dHRvbkRhdGE/LmxhYmVsfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1tZW51XCIgYXJpYS1sYWJlbGxlZGJ5PVwiaGVhZGVyRHJvcGRvd25CdXR0b25cIj5cclxuICAgICAgICA8YSBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIiAqbmdGb3I9XCJsZXQgcGFnZSBvZiBidXR0b25EYXRhPy5mb2xkZXI/LnBhZ2VzXCIgKGNsaWNrKT1cImNoYW5nZVBhZ2UocGFnZSlcIj57e3BhZ2UubGFiZWx9fTwvYT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwic2VsZWN0ZWRTdHlsZSA9PT0gSGVhZGVyQnV0dG9uU3R5bGUuU1FVQVJFX0JPTERcIj5cclxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIGNsYXNzPVwicHJpbWFyeSBidG4tbGcgcHgtNCBtZS1tZC0yIG5hdmJhci1idXR0b25cIiAqbmdJZj1cIiFidXR0b25EYXRhPy5mb2xkZXJcIlxyXG4gICAgICBzdHlsZT1cImJvcmRlcjogbm9uZTt3aWR0aDogbWF4LWNvbnRlbnQhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOiAwcHggIWltcG9ydGFudDtcIlxyXG4gICAgICBbbmdTdHlsZV09XCJ7Y29sb3I6YnV0dG9uU3R5bGU/LmJvbGRDb2xvciwnYmFja2dyb3VuZC1jb2xvcic6YnV0dG9uU3R5bGU/LmJhY2tncm91bmRDb2xvcn1cIiAoY2xpY2spPVwiY2hhbmdlUGFnZSgpXCJcclxuICAgICAgW2lkXT1cInNlY3Rpb25JZFwiPnt7YnV0dG9uRGF0YT8ubGFiZWx9fTwvYnV0dG9uPlxyXG4gICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duXCIgKm5nSWY9XCJidXR0b25EYXRhPy5mb2xkZXIgJiYgKGJ1dHRvbkRhdGE/LmZvbGRlcj8ucGFnZXM/Lmxlbmd0aCB8fCAwKSA+IDBcIj5cclxuICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJwcmltYXJ5IGJ0bi1sZyBweC00IG1lLW1kLTIgbmF2YmFyLWJ1dHRvbiBkcm9wZG93bi10b2dnbGVcIlxyXG4gICAgICBzdHlsZT1cImJvcmRlcjogbm9uZTt3aWR0aDogbWF4LWNvbnRlbnQhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOiAwcHggIWltcG9ydGFudDtcIlxyXG4gICAgICBbbmdTdHlsZV09XCJ7Y29sb3I6YnV0dG9uU3R5bGU/LmJvbGRDb2xvciwnYmFja2dyb3VuZC1jb2xvcic6YnV0dG9uU3R5bGU/LmJhY2tncm91bmRDb2xvcn1cIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICBpZD1cImhlYWRlckRyb3Bkb3duQnV0dG9uXCIgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgICAge3tidXR0b25EYXRhPy5sYWJlbH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImhlYWRlckRyb3Bkb3duQnV0dG9uXCI+XHJcbiAgICAgICAgPGEgY2xhc3M9XCJkcm9wZG93bi1pdGVtXCIgKm5nRm9yPVwibGV0IHBhZ2Ugb2YgYnV0dG9uRGF0YT8uZm9sZGVyPy5wYWdlc1wiIChjbGljayk9XCJjaGFuZ2VQYWdlKHBhZ2UpXCI+e3twYWdlLmxhYmVsfX08L2E+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPCEtLSA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnkgYnRuLWxnIHB4LTQgbWUtbWQtMlwiPnt7YnV0dG9uRGF0YT8uY29udGVudD8ubGFiZWx9fTwvYnV0dG9uPiAtLT5cclxuXHJcbjwvZGl2PlxyXG48ZGl2PlxyXG4gIDwhLS0gPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gc3R5bGU9XCJib3JkZXI6IG5vbmU7d2lkdGg6IG1heC1jb250ZW50IWltcG9ydGFudDtcIiAqbmdJZj1cIiFidXR0b25EYXRhPy5mb2xkZXJcIiBbc2ltcG9Db2xvcl09XCJidXR0b25EYXRhPy5zdGF0dXMgPyAnJyA6IGJnQ29sb3JcIlxyXG4gICAgKGNsaWNrKT1cImNoYW5nZVBhZ2UoKVwiIFtpZF09XCJzZWN0aW9uSWRcIiBbc3R5bGUuY29sb3JdPVwiYnV0dG9uRGF0YT8uc3RhdHVzID8gYWNjZW50Q29sb3IgOiAnJ1wiICBbc3R5bGUuZm9udFdlaWdodF09XCJidXR0b25EYXRhPy5zdGF0dXMgPyAnNzAwJyA6ICcnXCJcclxuICAgIGNsYXNzPVwic3RhdHVzLW5hdmJhci1idXR0b25cIj57e2J1dHRvbkRhdGE/LmxhYmVsfX08L2J1dHRvbj4gLS0+XHJcbiAgICA8YnV0dG9uIGMgKm5nSWY9XCIhYnV0dG9uRGF0YT8uZm9sZGVyXCIgW3NpbXBvQ29sb3JdPVwiYnV0dG9uRGF0YT8uc3RhdHVzID8gJycgOiBiZ0NvbG9yXCJcclxuICAgIChjbGljayk9XCJjaGFuZ2VQYWdlKClcIiBbaWRdPVwic2VjdGlvbklkXCIgW3N0eWxlLmNvbG9yXT1cImJ1dHRvbkRhdGE/LnN0YXR1cyA/IGFjY2VudENvbG9yIDogJydcIiAgW3N0eWxlLmZvbnRXZWlnaHRdPVwiYnV0dG9uRGF0YT8uc3RhdHVzID8gJzcwMCcgOiAnJ1wiXHJcbiAgICBjbGFzcz1cInN0YXR1cy1uYXZiYXItYnV0dG9uIGJ1dHRvblwiPlxyXG4gICAge3tidXR0b25EYXRhPy5sYWJlbH19XHJcbiAgICA8L2J1dHRvbj5cclxuICA8ZGl2IGNsYXNzPVwiZHJvcGRvd25cIiAqbmdJZj1cImJ1dHRvbkRhdGE/LmZvbGRlciAmJiAoYnV0dG9uRGF0YT8uZm9sZGVyPy5wYWdlcz8ubGVuZ3RoIHx8IDApID4gMFwiPlxyXG4gICAgPGJ1dHRvbiBjbGFzcz1cInN0YXR1cy1uYXZiYXItYnV0dG9uIG5vdC1zZWxlY3RlZC1kcm9wZG93biBkcm9wZG93bi10b2dnbGVcIiBbc3R5bGUuZm9udFdlaWdodF09XCJidXR0b25EYXRhPy5zdGF0dXMgPyAnNzAwJyA6ICcnXCIgW3NpbXBvQ29sb3JdPVwiYnV0dG9uRGF0YT8uc3RhdHVzID8gJycgOiBiZ0NvbG9yXCJcclxuICAgICAgc3R5bGU9XCJib3JkZXI6IG5vbmU7d2lkdGg6IG1heC1jb250ZW50IWltcG9ydGFudDtcIiBbc3R5bGUuY29sb3JdPVwiYnV0dG9uRGF0YT8uc3RhdHVzID8gYWNjZW50Q29sb3IgOiAnJ1wiIHR5cGU9XCJidXR0b25cIiBpZD1cImhlYWRlckRyb3Bkb3duQnV0dG9uXCJcclxuICAgICAgZGF0YS1icy10b2dnbGU9XCJkcm9wZG93blwiIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCIgYXJpYS1leHBhbmRlZD1cImZhbHNlXCI+XHJcbiAgICAgIHt7YnV0dG9uRGF0YT8ubGFiZWx9fVxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIGFyaWEtbGFiZWxsZWRieT1cImhlYWRlckRyb3Bkb3duQnV0dG9uXCI+XHJcbiAgICAgIDxhIGNsYXNzPVwiZHJvcGRvd24taXRlbVwiICpuZ0Zvcj1cImxldCBwYWdlIG9mIGJ1dHRvbkRhdGE/LmZvbGRlcj8ucGFnZXNcIiAoY2xpY2spPVwiY2hhbmdlUGFnZShwYWdlKVwiPnt7cGFnZS5sYWJlbH19PC9hPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=