{"version":3,"sources":["webpack:///../../../src/utilities/utils.ts?fbc0","webpack:///../../src/get-selected-variant.ts?f0c0","webpack:///../../src/get-wishlist-by-customer-id.ts?e873","webpack:///../../src/get-attribute-definitions.ts?cc6b","webpack:///../../src/get-org-unit-configuration.ts?4793","webpack:///src/actions/getById-product-telemetry.action.ts?3e17","webpack:///./src/modules/family-and-friends/actions/get-friends-and-family-list.action.ts?fa0a","webpack:///src/actions/inputs/get-product-reviews-input.ts?bfba","webpack:///../../src/get-delivery-options-for-selected-variant.ts?3f6c","webpack:///../../src/get-customer.ts?8319","webpack:///./src/modules/wine-club-management/actions/get-membership.action.ts?373b","webpack:///./src/dataActions/get-attributes-for-selected-variant.ts?c216","webpack:///src/actions/purchase-telemetry.action.ts?c1a6","webpack:///../../src/get-feature-state.ts?1a1d","webpack:///src/modules/search-result-container/actions/get-mapped-search-configuration.ts?978c","webpack:///../../../src/invoices/get-invoices.ts?22cb","webpack:///./src/dataActions/get-country-state.ts?1d9c","webpack:///../../src/search-org-unit-locations.ts?d18d","webpack:///src/modules/wishlist-items/actions/get-items-in-wishlists.ts?d05a","webpack:///src/modules/list-page-summary/list-page-summary.action.ts?9732","webpack:///src/actions/getVariantsByDimensionValues-telemetry.action.ts?acda","webpack:///../../../src/utilities/input-data-parser.ts?027a","webpack:///src/dataActions/get-attributes-for-selected-variant.ts?5b72","webpack:///src/actions/get-sales-order-with-hydrations.ts?9c2c","webpack:///src/data-actions/tab-state-data-action.ts?8dcc","webpack:///../../../src/utilities/QueryResultSettingsProxy.ts?5e44","webpack:///../../src/get-categories-hierarchy.ts?acde","webpack:///src/modules/order-template/actions/get-order-template.ts?4d59","webpack:///src/actions/addToCart-telemetry.action.ts?ceef","webpack:///src/store-selector-state-manager/base-store-selector-state-manager.ts?edbe","webpack:///src/store-selector-state-manager/map-store-selector-state-manager.ts?d1f8","webpack:///src/store-selector-state-manager/store-selector-state-manager-data-action.ts?22fb","webpack:///../../src/get-simple-products.ts?fed7","webpack:///src/actions/get-org-unit-locations.ts?3eeb","webpack:///../../../src/order-templates/get-order-templates-preview.ts?b8c3","webpack:///../../src/get-channel-delivery-option-configuration.ts?a716","webpack:///src/actions/get-channels.ts?9c62","webpack:///src/actions/get-tender-types.ts?c899","webpack:///./src/actions/products-by-category.action.ts?197d","webpack:///./src/modules/wine-club-management/actions/membership-edit.action.ts?239b","webpack:///../../src/get-dimensions-for-selected-variant.ts?6bf4","webpack:///./src/actions/products-by-recommendation.action.ts?8dd0","webpack:///src/actions/ratings-reviews-state-data-action.ts?6daf","webpack:///./lib/component-registration.js?266e","webpack:///src/actions/removeFromCart-telemetry.action.ts?f9cf","webpack:///./src/dataActions/sku-selector-container-classes.ts?3050","webpack:///./src/dataActions/hide-club-price.ts?6f90","webpack:///./src/dataActions/search-result-container/list-page-state.ts?e654","webpack:///./src/dataActions/DataServiceEntities.g.ts?8792","webpack:///./src/dataActions/DataActionExtension.g.ts?8b01","webpack:///../../src/get-checkout-cart.ts?79bc","webpack:///src/modules/search-result-container/actions/url-utils.ts?6091","webpack:///src/modules/search-result-container/actions/base-collection-action.ts?32fc","webpack:///src/modules/product-page-summary/product-page-summary.action.ts?836c","webpack:///./lib/module-registration.js?44dd","webpack:///./src/dataActions/get-products-with-attributes-by-category.ts?2c36","webpack:///src/actions/copyCart-checkOut-telemetry.action.ts?b241","webpack:///../../src/get-full-available-inventory-nearby.ts?20be","webpack:///../../src/get-items-in-wishlist.ts?0d27","webpack:///src/modules/checkout-payment-instrument/actions/get-card-payment-accept-point.ts?e5ef","webpack:///../../src/get-price-for-selected-variant.ts?9e79","webpack:///src/actions/telemetry.action.helper.ts?4cd3","webpack:///./src/dataActions/search-result-container/smwe-get-full-products-by-collection.ts?248d","webpack:///../../src/checkout-state.ts?acd8","webpack:///../../../../src/utilities/Url-builder/parameterize.ts?f5a5","webpack:///../../../../src/utilities/Url-builder/category-url-builder.ts?e564","webpack:///../../../../src/utilities/Url-builder/product-url-builder.ts?baf1","webpack:///../../src/get-loyalty-transaction-estimation.ts?e254","webpack:///../../src/add-address.ts?fb17","webpack:///../../src/add-organization-user.ts?ed86","webpack:///../../src/checkout.ts?57e0","webpack:///../../src/delete-address.ts?f9a3","webpack:///../../src/delete-organization-user.ts?7f5d","webpack:///../../src/edit-organization-user.ts?d2ac","webpack:///../../src/generic-data-action.ts?f887","webpack:///../../src/get-customer-loyalty-cards.ts?2466","webpack:///../../src/get-full-products-by-refine-search-text.ts?2ad7","webpack:///../../../src/utilities/refiner-utils.ts?1e61","webpack:///../../src/get-list.ts?4fd5","webpack:///../../src/get-media-locations-for-selected-variant.ts?fd54","webpack:///../../src/get-order-history.ts?76fd","webpack:///../../src/get-organization-wide-order-history.ts?92b8","webpack:///../../src/get-products-by-category.ts?accf","webpack:///../../src/get-promotion-options-for-cartlines.ts?1a35","webpack:///../../src/get-ratings-summary-input.ts?3ccb","webpack:///../../src/get-refiners-by-category.ts?6d4e","webpack:///../../src/get-refiners-by-text.ts?c52a","webpack:///../../src/get-related-products.ts?6f93","webpack:///../../src/get-search-configuration.ts?acd1","webpack:///../../src/issue-loyalty.ts?f8fa","webpack:///../../../src/order-templates/add-item-to-order-template.ts?fff3","webpack:///../../../src/order-templates/get-paginated-order-template-lines.ts?9b12","webpack:///../../../src/order-templates/add-order-template-to-cart.ts?6ee4","webpack:///../../../src/order-templates/create-order-template.ts?03c1","webpack:///../../../src/order-templates/get-full-order-template.ts?72c6","webpack:///../../../src/order-templates/update-order-template-header.ts?1f77","webpack:///../../../src/order-templates/update-order-template-line.ts?527b","webpack:///../../src/refine-search-by-category.ts?3e65","webpack:///../../src/search-by-text.ts?ebe1","webpack:///../../src/update-address.ts?3e4d","webpack:///../../src/update-customer-attributes.ts?8d49","webpack:///../../src/update-customer-personalization.ts?4aa9","webpack:///../../src/update-primary-address.ts?83fa","webpack:///../../../../src/utilities/promise-queue/promise-queue.ts?e362","webpack:///../../../../src/utilities/promise-queue/finite-promise-queue.ts?77bf","webpack:///../../../../src/utilities/extensions/object-extensions.ts?6388","webpack:///../../../../src/utilities/extensions/array-extensions.ts?1a2a","webpack:///../../../../src/utilities/extensions/enum-extensions.ts?cf51","webpack:///../../../../src/utilities/extensions/string-extensions.ts?ab9f","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/rng.js?b47d","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/regex.js?08ba","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/stringify.js?6cb1","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/validate.js?acea","webpack:///./node_modules/@msdyn365-commerce-modules/retail-actions/node_modules/uuid/dist/esm-browser/v4.js?0101","webpack:///../../../../src/utilities/random/guid.ts?1947","webpack:///../../../../src/utilities/random/index.ts?1f9d","webpack:///../../src/get-ratings-summary.ts?49bc","webpack:///./src/dataActions/wine-club-offers-bus.ts?fe0e","webpack:///./lib/module-registration.local.js?540f","webpack:///./src/modules/subscription-management/actions/subscription-update.action.ts?57e7","webpack:///../../src/get-full-products-by-refine-search-category.ts?30ab","webpack:///../../src/get-delivery-options-for-cartlines.ts?4dfe","webpack:///src/actions/inputs/get-user-review-input.ts?f98a","webpack:///./src/actions/get-product-availabilities-for-selected-variant.override.action.ts?428a","webpack:///../../src/get-address.ts?20a3","webpack:///../../../src/utilities/product-inventory-utils.ts?58b5","webpack:///../../src/get-store-location-information.ts?1df0","webpack:///../../src/get-full-products.ts?ba9a","webpack:///src/actions/getByIds-product-telemetry.action.ts?a77c","webpack:///./src/dataActions/search-result-container/base-collection-action.ts?a4d7","webpack:///external \"React\"?c481","webpack:///./src/modules/wine-club-management/actions/membership-state.action.ts?ba82","webpack:///src/modules/category-page-summary/category-page-summary.action.ts?be94","webpack:///src/actions/get-product-reviews.ts?ca83","webpack:///./src/dataActions/search-result-container/url-utils.ts?e0b5","webpack:///../../src/get-organization-users-count.ts?b5f7","webpack:///src/modules/search-result-container/actions/get-product-refiner-hierarchy.ts?bc3c","webpack:///src/modules/search-result-container/actions/get-refiners-for-collection.ts?3c89","webpack:///./src/modules/smwe-checkout/actions/get-products-in-active-smwe-checkout-cart.ts?fdaa","webpack:///external \"ReactDOM\"?4b2d","webpack:///src/actions/readCart-telemetry.action.ts?562f","webpack:///../../../src/order-templates/get-order-templates.ts?a3b1","webpack:///./src/modules/smwe-breadcrumb/actions/smwe-breadcrumb_data_action.ts?2333","webpack:///../../src/get-loyalty-card.ts?7213","webpack:///src/modules/search-result-container/actions/get-full-products-by-collection.ts?5cc2","webpack:///../../src/get-products-in-active-cart.ts?3376","webpack:///./lib/connector-registration.js?87e5","webpack:///../../src/get-current-category-hierarchy.ts?d48e","webpack:///src/actions/get-user-review.ts?1a29","webpack:///../../src/get-current-category.ts?354d","webpack:///../../src/get-media-locations-by-id.ts?8462","webpack:///./src/dataActions/search-result-container/get-mapped-search-configuration.ts?e115","webpack:///../../src/get-category-paths.ts?b007","webpack:///./src/actions/get-availabilities-cartlines.overide.action.ts?4e65","webpack:///../../../src/utilities/order-templates.ts?d593","webpack:///../../src/get-organization-users.ts?b72e","webpack:///./src/dataActions/get-keyed-in-price.ts?f634","webpack:///./src/dataActions/get-keyed-in-price-error.ts?f78a","webpack:///./lib/view-registration.js?92f2","webpack:///src/actions/updateCart-telemetry.action.ts?2995","webpack:///./src/modules/subscription-management/actions/get-subscriptions.action.ts?88ca","webpack:///./src/modules/product-price/data-actions/get-price-for-selected-variant.ts?1651","webpack:///../../src/get-customer-balance.ts?d165","webpack:///./src/modules/subscription-management/actions/get-subscription-cards.action.ts?e034","webpack:///./src/dataActions/get-notification-message.ts?adb4","webpack:///../../src/get-availabilities-cartlines.ts?b8e8","webpack:///src/actions/get-state-provinces.ts?d329","webpack:///src/actions/get-address-purposes.ts?30ca","webpack:///src/actions/get-country-state.ts?3926","webpack:///../../src/get-product-availabilities-for-selected-variant.ts?0abd","webpack:///./src/modules/family-and-friends/actions/validate-friends-and-family.action.ts?5b36","webpack:///./src/modules/wine-club-management/actions/wine-shipment-state.action.ts?3b3b","webpack:///../../src/get-categories.ts?8dc6","webpack:///./src/modules/subscription-management/actions/subscription-state.action.ts?23b4","webpack:///src/search-state-data-action.ts?8823","webpack:///src/actions/get-country-regions.ts?a1d1","webpack:///src/modules/default-page-summary/default-page-summary.action.ts?121d","webpack:///src/modules/wishlist-items/actions/get-product-availabilities-wishlist-items.ts?4a20","webpack:///./src/dataActions/get-country-regions.ts?0b98","webpack:///../../../src/utilities/getRnrKeys.ts?700f","webpack:///./src/modules/single-product-container/data-actions/get-single-product.ts?6b8d","webpack:///./src/dataActions/search-result-container/get-product-refiner-hierarchy.ts?2f02","webpack:///./src/dataActions/search-result-container/get-refiners-for-collection.ts?fc99","webpack:///./src/dataActions/get-state-provinces.ts?e970","webpack:///src/modules/search-result-container/list-page-state.ts?90c8","webpack:///src/data-actions/accordion-state-data-action.ts?0c51","webpack:///./src/dataActions/get-event-description.ts?cefb","webpack:///./src/actions/get-ratings-summary.override.action.ts?924f","webpack:///../../src/checkout-state-data-action.ts?8344","webpack:///../../../src/order-templates/get-full-order-templates.ts?b553","webpack:///src/modules/checkout/actions/get-products-in-active-checkout-cart.ts?e0ab"],"names":["wrapInResolvedAsyncResult","input","status","result","metadata","wrapInRejectedAsyncResult","buildQueryResultSettings","inputData","searchInputData","parseSearchData","q","Error","Paging","Top","maxItems","Number","top","Skip","skip","e","getSelectedProductIdFromActionInput","requestContext","query","productId","urlTokens","itemId","config","generateImageUrl","imageUrl","apiSettings","startsWith","baseImageUrl","encodeURIComponent","generateProductImageUrl","product","PrimaryImageUrl","buildCartLine","quantity","catalogId","CatalogId","Description","EntryMethodTypeValue","ItemId","ProductId","RecordId","Quantity","TrackingId","UnitOfMeasureSymbol","DefaultUnitOfMeasure","buildWishlistLine","customerId","wishlistId","CommerceListId","CustomerId","getProductDetailsCriteriaFromActionInput","getPrice","hidePrice","getRating","hideRating","buildCacheKey","base","locale","channelId","buildCacheKeyWithUrlTokens","defaultCacheKey","recordId","pageType","generateKey","args","options","handler","separator","undefined","map","arg","join","getFallbackImageUrl","SelectedVariantInput","constructor","matchingDimensionValues","getCacheKey","getCacheObjectType","dataCacheType","this","createObservableDataAction","id","action","async","ctx","response","getByIdAsync","callerContext","baseProduct","Array","isArray","baseProductHadUnmatchedDimension","Dimensions","dimension","matchedTargetDimension","find","targetDimension","DimensionTypeValue","DimensionValue","length","variants","getVariantsByDimensionValuesAsync","queryResultSettings","newImageUrl","retailAction","user","isAuthenticated","createGetByCustomerInput","GetAttributeDefinitionsInput","attributeDefinitionCriteria","channel","CustomerAttributeGroupId","getAttributeDefinitionsAsync","then","trace","AttributeGroupIdentifier","createGetOrgUnitConfigurationInput","createDataActionHook","actionId","postReaderHook","_inputs","simpleProduct","actionContext","Promise","resolve","productInfo","getProductInfoFromSimpleProduct","telemetryData","productSku","TelemetryEvent","ProductPageView","preReaderHook","GetFriendsAndFamilyListInput","shouldCacheOutput","Msdyn365","execute","friendsAndFamilyListInput","GetProductReviewsInput","tenantId","localeListFilter","serviceEndpoint","orderBy","starFilters","skipItems","pageSize","pageToken","dataSources","GetDeliveryOptionsForSelectedVariantInput","selectedProduct","featureState","getFeatureState","context","getFeatureStateAction","FeatureStateInput","createDeliveryOptionsForSelectedVariantInput","getDeliveryOptionsForSelectedVariantAction","item","Name","IsEnabled","activeProduct","selectedVariantInput","getSelectedVariant","productResult","getDeliveryOptionsAsync","IsGiftCard","catch","error","message","telemetry","exception","debug","GetCustomerInput","accountNumber","customerAccountNumber","readAsync","token","GetMembershipInput","createGetMembershipInput","accNumber","clubMembershipGetDataInput","getMembershipAction","AttributesForSelectedVariantInput","createAttributesForSelectedVariantInput","getAttributesForSelectedVariantAction","getAttributeValuesAsync","attributeValues","console","log","salesOrder","window","_msdyn365","salesObject","saleLineProductUnits","SalesLines","getProductInfoFromCartLinesAsync","Purchase","Id","affiliation","ChannelId","toString","revenue","NetAmountWithoutTax","tax","TaxAmount","products","logEvent","featureNames","createGetFeatureStateInput","getFeatureStatesAsync","sortOptions","sortByOptionRelevanceDesc","sortByOptionRatingAsc","sortByOptionRatingDesc","sortByOptionNameAsc","sortByOptionNameDesc","sortByOptionPriceAsc","sortByOptionPriceDesc","MappedSearchInput","getMappedSearchConfiguration","getSearchConfigurationAsync","searchConfiguration","ProductSortColumns","sortColumn","key","ColumnName","toUpperCase","IsDescending","warning","filter","Boolean","createInput","GetInvoicesInput","searchCriteria","CreateGetInvoicesInput","getDefaultSearchCriteria","getInvoices","getInvoicesAsync","GetCountryStateInput","getCountryStateAction","countryInput","GetCountryRegionsInput","countryRegionsInfo","getCountryRegionsAction","channelConfiguration","marketISOCode","ChannelCountryRegionISOCode","currentCountryRegion","countryRegion","ISOCode","countryRegionId","CountryRegionId","stateInput","GetStateProvincesInput","getStateProvinceAction","createSearchOrgUnitLocationsInputFunc","createSearchOrgUnitLocationsInput","ActiveWishlistInput","getActiveWishlistItems","wishlists","getByCustomerAsync","productInputs","forEach","currWishlist","CommerceListLines","commerceListLine","push","FullProductInput","getFullProducts","ListPageSummaryInput","getSubListItem","sitePathOfRequest","imageList","getImages","fields","content","images","sublistHref","listName","_name","sitePath","Title","title","description","ShortDescription","shortDescription","BackgroundColor","backgroundColor","ForegroundColor","foregroundColor","Href","Images","getSitePath","resultImageList","image","href","imageItem","altText","width","height","createGetListInput","listData","pageData","list","items","_id","data","getInputListData","listItems","productList","parentImageList","itemsPerPage","isNaN","getItemsPerPage","skipCount","getSkipCount","productItems","sum","index","type","clonedList","productItem","ListInput","getList","simpleProducts","QueryResultSettingsProxy","fromInputData","QueryResultSettings","GetSalesOrderWithHydrationsInput","orderType","orderId","getSalesOrderWithHydrationsAction","getSalesOrderDetailsBySalesIdAsync","getSalesOrderDetailsByTransactionIdAsync","getSalesOrder","TransactionTypeValue","productIds","salesLine","ProductInput","getSimpleProducts","getProducts","deliveryOptions","x","salesId","transactionId","createTabStateInput","GenericInput","getGenericAction","Sorting","Columns","column","fromModuleData","sortingCriteria","CategoriesInput","mappedToHierarchy","_mappedToHierarchy","getLocale","mapCategoryToHierarchy","categoryList","categoryMap","reduce","memo","category","localName","nameTranslations","nameTranslation","Language","toLowerCase","Text","getFriendlyName","NameTranslations","categoryHierarchy","NeutralizedName","zeroCategory","Object","keys","element","parentId","ParentCategory","Url","getCategoryUrl","parent","Children","createCategoriesHierarchyInput","topItems","topCategories","parseInt","getCategoryHierarchyAction","categories","getCategoryAction","RawCategoriesInput","ActiveOrderTemplateLinesInput","orderTemplateId","count","getActiveOrderTemplateLines","getFullOrderTemplate","GetFullOrderTemplateInput","cart","cartObject","addedCartLines","addedProducts","AddToCart","cartId","cartVersion","Version","OrderNumber","inputs","actionInput","queryParams","addCartLinesParams","cartLines","BaseStoreSelectorStateManager","listMapViewState","displayList","displayMap","preferredStoreLocalStorageKey","isMapModuleLoaded","value","_readFromToCookie","storeInfo","JSON","parse","preferredStore","_context","storeId","selectedStoreLocationId","storeName","writeToCookie","StoreId","StoreName","Latitude","Longitude","_writeToCookie","stringify","latitude","longitude","lastInlineShownStoreInfo","_removeCookie","MsDyn365","isBrowser","localStorage","removeItem","setItem","cookieValue","getItem","__decorate","computed","observable","MapStoreSelectorStateManager","SERVICE_ENDPOINT","MAP_API_ENDPOINT","searchTerm","BingMapsApiKey","BingMapsEnabled","jsonp","crypto","getRandomValues","Uint32Array","encodeURI","geolocationApiUrl","app","requestUrl","script","document","createElement","setAttribute","body","removeChild","resourceSets","resources","point","coordinates","appendChild","getElementById","url","lang","market","reject","defer","src","mapAPIReady","isMapApiLoaded","onerror","createStoreSelectorStateInput","productIdMapping","idx","getByIdsAsync","getDefault","mappedProducts","split","isBatched","searchArea","Radius","Math","max","DistanceUnitValue","GetOrgUnitLocationsInput","getOrgUnitLocationsAction","orgUnitLocations","getOrgUnitLocationsByAreaAsync","getOrgUnitLocations","GetOrderTemplatesPreviewInput","createGetOrderTemplatesPreviewInput","getOrderTemplatesPreview","getFullOrderTemplates","GetFullOrderTemplatesInput","GetChannelDeliveryConfigurationInput","getChannelDeliveryOptionConfigurationAsync","GetChannelIdentitiesInput","getChannelsAction","channels","getChannelsAsync","getChannels","channelIdentities","createGetTenderTypesInput","getProductsByCategoryList","categoryId","listMetadata","categoryIds","CATEGORY_PAGE_NAME","productSearchCriteria","Context","CategoryIds","IncludeAttributes","searchByCriteriaAsync","getProductImageUrls","getProductsByCategoryListAction","MembershipEditInput","createEditMembershipInput","WineClubId","CreditCard","DeliveryPreference","ShipToAddress","PickupLocationId","clubMembershipUpdateInput","getEditMembershipAction","GetDimensionsForSelectedVariantInput","results","dimensionValues","getDimensionValuesAsync","MasterProductId","fullDimension","DimensionValues","CartTokenPrefix","getProductIdForReco","recommendationCriteria","includeCart","cookies","cartCookieParts","getCartCookie","Auth","Anon","readCart","getCart","CartLines","cartProductIds","includePageContext","PDP_PAGE_NAME","ProductIds","getProductsByRecommendationList","recommendationListId","PICKS_FOR_YOU_LIST","proxyContext","reccomendationListId","missingType","actionInputError","getCategoryIdForReco","personalization","CustomerAccountNumber","bypassCache","getElementsAsync","recommendedElements","productTypeId","i","ElementId","ElementTypeValue","semver","retailServerProxyVersion","itemIds","Ids","productSearchResults","orderProductSearchResults","productRatingsPromise","getProductRatingsAsync","productInput","productRatings","productRating","unratedProduct","mappedProduct","TotalRatings","AverageRating","getProductsByRecommendationListAction","createRatingsReviewsStateInput","filterKey","componentDictionary","c","cn","removeCartLineIds","removedCartLineIds","activeCart","productTransaction","removedCartLines","removedProducts","cartLine","indexOf","LineId","some","RemoveFromCart","removeCartLinesParams","cartLineIds","createSkuSelectorContainerClasses","HideClubPriceInput","createHideClubPriceInput","hideClubPrice","getOrgUnitConfigurationAsync","GiftCardItemId","skuSelectorContainerClasses","ListPageState","activeFilters","activeProducts","sortingCritera","currentPageNumber","ListPageStateInput","listPageStateAction","createListPageInput","rsmWineClubSignUpEntityExtensionClass","odataObject","IsGifted","AddressFirstName","AddressLastName","AddressEmail","AddressPhone","AddressLine1","AddressLine2","City","State","Zipcode","Country","ExtensionProperties","className","substr","lastIndexOf","concat","EntityClasses","rsmClubMembershipPauseResumeResponseExtensionClass","Status","Result","rsmClubMembershipSkipShipmentResponseExtensionClass","rsmClubMembershipUpdateResponseExtensionClass","rsmClubMemberMgmtGetDataResponseExtensionClass","WineClubMemberDataExtensionClass","rsmVerifyEmployeeResponseExtensionClass","Message","rsmFriendsAndFamilyValidateProgramResponseExtensionClass","rsmFriendsAndFamilyValidateProgramDataExtensionClass","rsmFriendsAndFamilyListResponseExtensionClass","rsmFriendsAndFamilyListObjectExtensionClass","rsmInsertMailingListResponseExtensionClass","IsSaved","rsmOfferSelectionsResponseExtensionClass","rsmSubscriptionCancelResponseExtensionClass","rsmSubscriptionDataExtensionClass","rsmSubscriptionPauseResponseExtensionClass","rsmSubscriptionResumeResponseExtensionClass","rsmSubscriptionUpdateResponseExtensionClass","rsmSubscriptionCardsResponseExtensionClass","rsmSubscriptionCardExtensionClass","rsmSubscriptionListResponseExtensionClass","rsmWineClubSignUpResponseExtensionClass","Code","rsmFriendsAndFamilyCodeExtensionClass","RecipientEmailAddress","SentDate","ActivationDate","QuantityAvailable","Codes","SubscriptionID","SubStatus","SubscriptionName","Frequency","NextOrderDate","LockoutPeriod","DeliveryAddress","ActiveCreditCardID","Lines","rsmSubscriptionLineExtensionClass","SubLineID","Qty","CardID","CardNumber","WineClubMemberNum","WineClubName","WineClubDisplay","NextClubRunDate","CustomerName","MemberStatus","ShowStatus","DeactivationDate","GiftMembershipEndDate","ShowMemberSince","GiftCustName","CanSkip","IsBlackoutPeriod","PickUpLocationId","CreditCardExtensionClass","ShipToAddressExtensionClass","MembershipProducts","MembershipProductsExtensionClass","HasOfferSelections","OfferSelections","OfferSelectionsExtensionClass","RecId","CreditCardNum","IsPrimary","ShipToAddressRecId","StreetAddress","ZipCode","DateBirth","Company","ItemName","OfferId","OfferName","EndDate","Date","jsonLightReadStringPropertyValue","clubMembershipPauseResumeInput","wineClubId","pauseResume","DataServiceQuery","createDataServiceRequestForOperation","DataServiceEntities","returnEntity","PauseResume","clubMembershipSkipShipmentInput","skipShipment","SkipShipment","creditCard","shipToAddress","deliveryPreference","pickupLocationId","verifyEmployeeInput","customerAccount","employeeNumber","lastName","birthYear","CustomerAccount","EmployeeNumber","LastName","BirthYear","friendsAndFamilyValidateProgramInput","code","emailListID","sourceID","EmailListID","SourceID","insertMailingListInput","mailingListId","sourceId","email","name","zipCode","MailingListId","SourceId","Email","offerSelectionInput","offerId","subscriptionCancelInput","subscriptionId","SubscriptionId","subscriptionPauseInput","subscriptionResumeInput","subscriptionUpdateInput","subscriptionName","nextOrderDate","deliveryPostalAddress","frequency","cardId","DeliveryPostalAddress","CardId","subscriptionCardsInput","subscriptionListInput","createWineClubSignUpInput","entityData","rSMWineClubSignUpEntityControllerQuery","GetCheckoutCartInput","CartCookieName","msdyn365Commerce","CartCookie","getCheckoutCart","Cookie","get","getCartState","checkoutCart","copyAsync","compressedRefinerKeys","hydrateRefinersFromUrl","compressedRefinerArray","parseQueryParam","compressedRefiner","parsedRefiner","refinerKey","buildListPageUrl","fullUrl","refiners","sortingColumns","searchParams","set","compressedRefiners","refiner","compressRefiners","delete","decodeURIComponent","getCurrentUrl","URL","location","BaseCollectionInput","searchText","includeAttributes","toJS","RefinerRecordId","LeftValueBoundString","RightValueBoundString","convertToString","createBaseCollectionInput","inputClassConstuctor","queryRefiners","sorting","ProductPageSummaryInput","simpleProductData","createGetSelectedVariantInput","productUrl","getProductUrlSync","canonicalDomain","sharingImageUrl","canonicalUrl","faviconUrl","sharingImage","registerAllModules","requiredModules","binding","modules","dataActions","handleError","modPath","errObject","errorObject","process","exit","module","isNotRegistered","moduleName","findIndex","registerActionId","actionPath","default","prototype","registerSanitizedActionPath","sanitizedActionPath","dataAction","RegistrationId","$type","da","iNM","ns","n","p","pdp","md","path","runOn","definitionExtensions","themeSettings","require","ProductsByCategoryInput","queryResultSettingsProxy","categorySlug","cacheKeyHint","currentCategory","ProductsWithAttributesByCategoryInput","categoryInput","productsInput","criteria","CurrentCategoryInput","eventCategoryId","productSearchResult","getProductsByCategory","fullProductInputs","searchResult","isMaxDepthExceeded","all","attribute","ProductDetails","ProductAttributes","cartLineProductUnits","CheckOut","GetFullAvailableInventoryNearbyInput","_productId","_latitude","_longitude","_radius","_DistanceUnitValue","_IgnoreLocation","radius","IgnoreLocation","createGetFullAvailableInventoryNearbyInput","getFullAvailableInventoryNearbyAction","retailMulitplePickupMFeatureState","getEstimatedAvailabilityAsync","SearchArea","DefaultWarehouseOnly","FilterByChannelFulfillmentGroup","productInventoryInformation","mapProductInventoryInformation","productWarehouseInformation","ProductWarehouseInventoryAvailabilities","storeMap","Map","stores","store","InventoryLocationId","locationDeliveryOptions","orgUnitChannel","channelCollection","channelIdList","getChannelDeliveryOptionsAsync","channelDeliveryOptions","_getLocationPickUpDeliveryModes","availabilityPromiseList","locationDeliveryOption","_channeldeliveryoption","orgUnitLocation","channelDeleiveryOptions","OrgUnitNumber","OrgUnitAvailability","getStoreHoursAsync","hours","itemAvailabilities","InventLocationId","has","AvailableQuantity","ProductAvailableQuantity","availability","OrgUnitLocation","ItemAvailabilities","ProductInventoryInformation","OrgUnitPickUpDeliveryModes","StoreHours","_getAvailabilityWithHours","GetCardPaymentAcceptPointInput","paymenTenderType","showBillingAddress","createCheckoutPaymentInstrumentInput","getCardPaymentAcceptPointInput","showBillingAddres","getCardPaymentAcceptPointAction","checkoutState","getCheckoutState","isEmptyOrNullObject","origin","cardPaymentAcceptSettings","HostPageOrigin","AdaptorPath","CardPaymentEnabled","CardTokenizationEnabled","HideBillingAddress","TenderTypeId","PaymentAmount","getCardPaymentAcceptPointAsync","cardPaymentAcceptPoint","AcceptPageUrl","AcceptPageContent","PriceForSelectedVariantInput","createActivePriceForSelectedVariantInput","getPriceForSelectedVariantAction","affliations","customerInput","customer","getCustomer","CustomerAffiliations","affliation","aff","AffiliationId","RetailAffiliationId","AccountNumber","projectDomain","getActivePricesAsync","productPrice","CustomerContextualPrice","AdjustedPrice","productPromises","Price","productQuantity","reason","productName","productChannelId","productChannelName","productCategoryId","productCategoryName","productCurrency","GetFullProductsByCollectionInput","promise","searchCriteriaInput","Refinement","SearchCondition","update","totalProductCount","showSortBy","sortName","showSortingByRelevance","sortColumName","ranking","showSortingByName","showSortingByPrice","price","showSortingByRating","averageRating","_giftCards","_giftCardExtends","_loyaltyAmount","_guestCheckoutEmail","_isTermsAndConditionAccepted","_customerAccountAmount","CheckoutState","_tokenizedPaymentCard","_tenderLine","_billingAddress","_shippingAddress","_cardPrefix","_loyaltyCardNumber","newTokenizedPaymentCard","newTenderLine","newShippingAddress","newBillingAddress","newCardPrefix","giftCardNumber","giftCard","__spreadArrays","newLoyaltyCardNumber","newAmount","newGuestCheckoutEmail","newIsTermsAndConditionAccepted","parameterize","sep","parameterizeFeatureFlags","neutralizedName","candidateName","platformSettings","enableUrlLocalization","enableUrlEncoding","replace","trim","getCategorySlug","categoryName","Slug","getParameterizeFeatureFlags","getUrlSync","getProductPageUrlSync","GetLoyaltyTransactionEstimationInput","userAccountNumber","createGetLoyaltyTransactionEstimationInput","getLoyaltyTransactionEstimationAction","promises","_getCart","_getLoyalty","_getOrgUnits","getMaxLoyaltyPointsToRedeemForTransactionBalanceAsync","Currency","points","loyaltyCardInput","GetLoyaltyCardInput","getLoyalty","AddressManagementInput","address","createAddressManagementInput","doAddressManagementOperation","operationHandler","newCustomer","updatedCustomer","updateAsync","createReadAsync","Addresses","addAddressHandler","AddOrganizationUserInput","newUser","getCurrentAsync","businessPartner","BusinessPartnerId","createBusinessPartnerUserAsync","CheckOutInput","receiptEmail","cartTenderLines","billingAddress","baseUrl","requestOptions","headers","oun","Authorization","cartTenderLineItem","TokenizedPaymentCard","House","CardTokenInfo","Phone","ThreeLetterISORegionName","Street","Address1","Zip","requestBody","sendCommerceRequest","deleteAddressHandler","cur","DeleteOrganizationUserInput","deleteAsync","EditOrganizationUserInput","updatedUser","cacheKey","cacheObjectType","createGetCustomerLoyaltyCardsInput","FullProductsRefineSearchByTextInput","refinementCriteria","productDetailsCriteria","getRefinedProducts","searchResults","ProductDetailsCriteria","getRefinedFullProducts","refineSearchByTextAsync","documentId","itemsCount","DocumentId","ItemsCount","ItemsPerPage","SkipCount","Items","ProductItems","inputArray","GetProducts","productMap","listitem","getInutListData","MediaLocationsForSelectedVariantInput","AsyncResult","getMediaLocationsAsync","mediaLocation","Uri","AltText","createGetOrderShipmentsHistoryInput","GetOrganizationWideOrderHistoryInput","getOrderHistoryAsync","getCurrentCategory","searchByCategoryAsync","PromotionOptionsForCartLineItems","cartState","hasInvoiceLine","getActiveCartProductsAction","ActiveCartProductsInput","getAvailablePromotionsAsync","GetRatingsSummaryInput","RefinersByCategoryInput","createRefinersByCategoryInput","getRefinersByCategoryAsync","RefinersByTextInput","createRefinersByTextInput","getRefinersByTextAsync","GetRelatedProductsInput","relationType","querySettings","productRelationTypes","getRelationTypesAsync","productRelationTypeId","_productRelationType","foundProductRelationTypeId","productRelationType","searchProductRelationType","getRelatedProductsAsync","stack","SearchConfigurationInput","IssueLoyaltyInput","getLoyaltyAction","updateCart","card","updateLoyaltyCardId","loyaltyCardNumber","issueLoyaltyCardAsync","issuedCard","AddItemToOrderTemplateInput","unitOfMeasure","productListLineToAdd","ProductListId","UnitOfMeasure","productListLine","addProductListLinesAsync","GetPaginatedOrderTemplateLinesInput","getPaginatedOrderTemplateLinesAction","orderTemplateLinesState","lines","totalCount","getProductListLinesAsync","productListLines","listLine","OrderTemplateLine","fullProductsInfo","line","fullProduct","AddOrderTemplateToCartInput","getPaginatedOrderTemplateLinesInput","orderTemplateLines","productLine","addCartLinesAsync","refreshCart","CreateOrderTemplateInput","templateName","orderTemplate","ProductListTypeValue","createdProductList","createProductListAsync","inputParams","GetOrderTemplatesInput","productLists","getOrderTemplates","inputLines","linesState","OrderTemplate","UpdateOrderTemplateHeaderInput","updatedProductList","UpdateOrderTemplateInput","getLinesInput","getPaginatedOrderTemplateLines","linesToUpdate","lineToUpdate","updatedLines","updateProductListLinesAsync","updatedLine","RefineSearchByCriteriaInput","createRefineSearchByCategoryInput","refinementCriterion","search","querySettingsProxy","createSearchByTextInput","updateAddressHandler","updateCustomerAttributesInput","customerAttributes","phone","vatNumber","VatNumber","Attributes","updateCustomerPersonalizationInput","isOptOut","preferenceType","OptOutWebActivityTracking","OptOutPersonalization","updatePrimaryAddressHandler","setPrimaryAddress","primaryAddresses","addresses","addr","PromiseQueueElement","PromiseQueue","_queue","_isBusy","promiseBody","_dequeue","_canProcess","shift","_processElement","_processNext","FinitePromiseQueueError","ObjectExtensions","ArrayExtensions","EnumExtensions","StringExtensions","FinitePromiseQueue","maxQueueLength","InvalidMaxQueueLengthPassed","super","_maxQueueLength","totalElementsCount","ProcessWasDiscardedFromTheQueue","enqueue","hasElements","isNullOrUndefined","from","Set","predicate","getValues","enumClass","getNumericValues","isNumber","isString","isNullOrEmpty","rnds8","Uint8Array","rng","bind","msCrypto","validate","uuid","REGEX","test","byteToHex","arr","offset","arguments","TypeError","v4","Guid","Random","buf","rnds","random","uuidv4","_guid","getRnrPartnerId","getRnrEndpointId","inputIsValid","sendRequest","WineClubOffersBusInput","IWineClubOffersBusAction","offerTaken","offerAcceptedText","offerIdUsed","SubscriptionUpdateInput","createSubscriptionUpdateInput","addressId","subscriptionUpdateAction","FullProductsRefineSearchByCategoryInput","createFullProductsRefineSearchByCategoryInput","getFullProductsByRefineSearchCategoryAction","hasSortingColumn","refineSearchByCategoryAsync","ProductDeliveryOptionsForCartLineItems","getDeliveryOptionsForCartLineItems","GetUserReviewInput","authorization","ProductAvailabilitiesForSelectedVariantInput","createProductAvailabilitiesForSelectedVariantInput","getProductAvailabilitiesForSelectedVariantAction","PhysicalAvailable","AddressInput","createGetAddressInput","getAddressAction","productsWarehouseInventory","enableStockCheck","inventoryLevel","physicalProductMap","mapInventoryWithPhysicalBufferEnabled","totalAvailableProductMap","mapInventoryWithTotalAvailableBufferEnabled","mapInventoryWithThresholdEnabled","productWarehouseInventoryAvailability","TotalAvailable","productQty","outOfStockThreshold","productAvailableQuantity","IsProductAvailable","shouldRenderLabel","displayLabelEnabled","PhysicalAvailableInventoryLevelCode","StockLevelCode","StockLevelLabel","PhysicalAvailableInventoryLevelLabel","TotalAvailableInventoryLevelCode","TotalAvailableInventoryLevelLabel","inventoryCode","inventoryRanges","GetOrgUnitLocationsByAreaInput","_Latitude","_Longitude","_Radius","createGetOrgUnitLocationsByAreaInput","getOrgUnitLocationsByArea","locationPromiseList","_getLocationWithHours","_getActivePrices","validProductIds","productCollection","validInputs","ProductPrice","_getProductRatings","ProductRating","err","ratingsAndPricePromises","exports","React","MembershipStateInput","createMembershipStateInput","getMembershipStateAction","CategoryPageSummaryInput","createGetCurrentCategoryInput","categoryUrl","OfflineImage","createInputForProductReviews","getReviewsForGivenProduct","isTakenDown","pagingInfo","OrganizationUsersCountInput","createGetOrganizationUsersCountInput","getOrganizationUsersCount","getUsersAsync","users","getProductRefinerHierarchy","getProductSearchRefinersAsync","productRefiners","productRefiner","RefinersByCollectionInput","searchProductId","RecommendationListId","ActiveCheckoutCartProductsInput","getActiveCheckoutCartProductsAction","ReactDOM","productListId","createGetOrderTemplatesInput","getOrderTemplatesAction","productListSearchCriteria","searchAsync","GetInput","CommerceEntityInput","dataSource","getbreadcrumbByProductIdAction","text","prodIds","getbreadcrumbByCategoryIdAction","getbreadcrumbDataAction","breadcrumbData","createGetLoyaltyCardInput","getCustomerLoyaltyCardsAsync","cards","firstCard","getLoyaltyCardAsync","LoyaltyEnrollmentDate","LoyaltyEnrollmentDateLocal","SkipVariantExpansion","connectorDictionary","validateConnectorRegistration","CurrentCategoryHierarchyInput","activeCategoryId","getCurrentCategoryHierarchyAction","fullCategoryHierarchy","getCategoriesHierarchy","categoryArray","findCategory","childCategory","reverse","errorMessage","userInfo","getRnrAuthEndpointId","tempActionContext","searchCategory","foundCategory","cat","matchingChild","getCurrentCategoryAction","getCategoryHierarchy","MediaLocationsByIdInput","createMediaLocationsByIdInput","getMediaLocationsByIdAction","GetCategoryPathsInput","categoryPathLooksups","constructedCacheKey","categoryPath","createGetCategoryPathsInput","getCategoryPathsAction","categoryPathResults","getCategoryPathsAsync","CategoryPath","getCategoriesUrlSync","ProductAvailabilitiesForCartLineItems","ProductAvailableQuantityMerge","getDeliveryMode","featureSate","channelDeliveryOptionConfig","pickupDeliveryMode","DeliveryMode","PickupDeliveryModeCodes","deliveryMode","getAvailabilitiesForCartLineItems","shippingItems","bopisItems","productAvailabilities","featureStateInput","getFeature","retailMultiplePickUpOptionEnabled","PickupDeliveryModeCode","EmailDeliveryModeCode","unique","shippingProductAvailabilities","bopisItem","productWarehouse","WarehouseId","DataAreaId","InventLocationDataAreaId","getProductWarehouseAvail","getEstimatedProductWarehouseAvailabilityAsync","productWarehouseMapping","totalLines","OrganizationUsersInput","createGetOrganizationUsersInput","getOrganizationUsers","createKeyedInPrice","createKeyedInPriceError","viewDictionary","updatedCartLines","updatedProducts","UpdateInCart","updateCartLinesParams","GetSubscriptionsInput","createGetSubscriptionsInput","String","affiliationId","affiliations","customerAffiliations","GetCustomerBalanceInput","createGetCustomerBalanceInput","getCustomerBalanceAction","getCustomerBalanceAsync","InvoiceAccount","GetSubscriptionCardsInput","createNotificationMessage","getStateProvincesAsync","GetAddressPurposesInput","getAddressPurposesAction","getAddressPurposesAsync","ItemTypeValue","ProductTypeValue","mergeProductWarehouseToProductAvailabities","productAvailable","ValidateFriendsAndFamilyInput","createValidateFriendsAndFamilyInput","emailListId","validateFriendsAndFamilyAction","WineShipmentStateInput","createWineShipmentStateInput","getWineShipmentStateAction","getCategoriesAsync","SubscriptionState","createSubscriptionStateInput","newState","createSubscriptionStateAction","createSearchStateInput","getCountryRegionsByLanguageIdAsync","PageSummaryInput","keywords","ProductAvailabilitiesForWishlistItems","getAvailabilitiesForWishlistItems","validProducts","rnr","endpoint","proxyUrl","charAt","substring","SingleProductInput","singleProduct","createSingleProductInput","singleProductAction","getSimpleProductVariant","attributesForSelectedVariantInput","getAttributesFromSimpleProduct","configuration","remappers","refinerRemappers","entry","remap","remapRecord","originalName","KeyName","newName","featureProduct","productPrices","createAccordionStateInput","EventDescriptionInput","attrib","attributesInput","getEventDescription","attributes","getAttributesForSelectedVariant","eventDescription","intro","eventIntro","TextValue","eventBody","selectedVariant","_this","checkoutStateAction","CheckoutStateInput","orderTemplates"],"mappings":"irCAYO,MAAMA,EAA0CC,IAC5B,CACnBC,OAAQ,UACRC,OAAQF,EACRG,SAAU,KAILC,EAA0CJ,IAC5B,CACnBC,OAAQ,SACRC,OAAQF,EACRG,SAAU,KAILE,EAA4BC,IACrC,IACI,MAAMC,EAAkBC,YAAgBF,GAExC,IADeC,EAAgBE,EAE3B,MAAM,IAAIC,MAAM,8DAGpB,MAAO,CAAEC,OAAQ,CAAEC,IADNL,EAAgBM,UAAYC,OAAOP,EAAgBM,WAAcN,EAAgBQ,IACjEC,KAAMT,EAAgBU,OACrD,MAAOC,GACL,MAAO,KASFC,EAAuCb,GAC5CA,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMC,UACnGhB,EAAUc,eAAeC,MAAMC,UAC/BhB,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeG,WAAajB,EAAUc,eAAeG,UAAUC,OAClHlB,EAAUc,eAAeG,UAAUC,OACnClB,GAAaA,EAAUmB,QAAUnB,EAAUmB,OAAOH,UAClDhB,EAAUmB,OAAOH,eADrB,EAWEI,EAAmB,CAACC,EAA8BC,IACvDD,EAEIA,EAASE,WAAW,QACbF,EAIJC,EAAYE,aAAeC,mBAAmBJ,QAGrD,EASKK,EAA0B,CACnCC,EACAL,IAEOF,EAAiBO,EAAQC,gBAAiBN,GASxCO,EAAgB,CAACF,EAAwBG,EAAmBC,KAC9D,CACHC,UAAWD,GAAa,EACxBE,YAAaN,EAAQM,YAErBC,qBAAsB,EACtBC,OAAQR,EAAQQ,OAChBC,UAAWT,EAAQU,SACnBC,SAAUR,GAAY,EACtBS,WAAY,GACZC,oBAAqBb,EAAQc,uBAUxBC,EAAoB,CAAC1B,EAAmB2B,EAAoBC,KAC9D,CACHC,eAAgBD,EAChBR,UAAWpB,EACX8B,WAAYH,IAQPI,EAA4C/C,GACjDA,GAAaA,EAAUmB,OAChB,CACH6B,UAAWhD,EAAUmB,OAAO8B,UAC5BC,WAAYlD,EAAUmB,OAAOgC,YAG9B,CACHH,UAAU,EACVE,WAAW,GAkBNE,EAAgB,CAACC,EAAc/B,EAAmCgC,IACpE,GAAGD,YAAe/B,EAAYiC,mBAAmBjC,EAAYS,YAAYuB,EAAO,IAAIA,EAAS,KAG3FE,EAA6B,CAACH,EAAcvC,KACrD,MAAMG,EAAYH,EAAeG,UAC3BwC,EAAkBL,EAAcC,EAAMvC,EAAeQ,YAAaR,EAAewC,QACvF,OAAOrC,EACD,GAAGwC,KAAmBxC,EAAUC,UAAUD,EAAUyC,YAAYzC,EAAU0C,WAC1EF,GAeGG,EAAc,CAACC,EAAmBC,KAC3C,MAAM,QAAEC,EAAF,UAAWC,GAAX,OAAmD,CAAEA,UAAW,IAAKD,aAASE,IAAiBH,GAAW,IAChH,OAAOD,EACFK,IAAIC,GACGA,SACIJ,EACOA,EAAQI,GAGhBA,GAEVC,KAAKJ,IAQDK,EAAsB,CAACnD,EAA4BI,KAC5D,IAAKJ,EACD,MAAO,GAIX,OAAOE,EADY,YAAYF,gBACKI,K,wYClMjC,MAAMgD,EAKTC,YAAYvD,EAAmBuC,EAAmBiB,GAM3C,KAAAC,YAAc,IAAM,kBACpB,KAAAC,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAAiB,OAPpCC,KAAK5D,UAAYA,EACjB4D,KAAKrB,UAAYA,EACjBqB,KAAKJ,wBAA0BA,GAA2B,IAmFnDK,+CAA2B,CACtCC,GAAI,iEACJC,OA1DJC,eAAwCtF,EAA6BuF,GACjE,IAAItD,EAAgC,KAEpC,MAAMuD,QAAiBC,YAAa,CAAEC,cAAeH,GAAOvF,EAAMsB,UAAWtB,EAAM6D,WAE7E8B,EAA6BC,MAAMC,QAAQL,GAAYA,EAAS,GAAKA,EAS3E,GAFAvD,E,yWAAO,IAAQ0D,GAEX1D,EAAS,CACT,IAAI6D,GAA4C,EAehD,GAdI7D,EAAQ8D,YACR9D,EAAQ8D,WAAWvB,IAAIwB,IACnB,MAAMC,EAAyBjG,EAAM8E,wBAAwBoB,KACzDC,GAAmBA,EAAgBC,qBAAuBJ,EAAUI,oBAGpEH,EACAD,EAAUK,eAAiBJ,EAAuBI,eAElDP,GAAmC,KAK1CA,GAAoC9F,EAAM8E,wBAAwBwB,OAAS,EAAG,CAC/E,MAAMC,QAAiBC,YACnB,CAAEd,cAAeH,EAAKkB,oBAAqB,IAC3Cd,EAAYhD,SACZ3C,EAAM6D,UACN7D,EAAM8E,yBAGNyB,GAAYA,EAASD,OAAS,IAC9BrE,EAAUsE,EAAS,IAI3B,MAAMG,EAAc1E,YAAwBC,EAASsD,EAAInE,eAAeQ,aAEpE8E,IACAzE,EAAQC,gBAAkBwE,GAIlC,OAAOzE,GASPjC,MA1EiBM,IACjB,MAAMgB,EAAYH,YAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIsD,GAAsBtD,GAAYhB,EAAUc,eAAeQ,YAAYiC,UAAW,IAE7F,MAAM,IAAInD,MAAM,2F,oCCnCxB,2DAqBeyE,+CAA2B,CACtCC,GAAI,wEACJC,OAAiCsB,eACjC3G,MAlByBM,IACzB,GACIA,EAAUc,gBACVd,EAAUc,eAAewF,MACzBtG,EAAUc,eAAewF,KAAKC,gBAE9B,OAAOC,YAAyBzG,YAAyBC,GAAY,MAGzE,MAAM,IAAII,MAAM,6E,0JCLb,MAAMqG,EAITlC,YAAYjD,EAAmCoF,GAKxC,KAAAjC,YAAc,IAAMrB,YAAc,uBAAwBwB,KAAKtD,aAC/D,KAAAoD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAK8B,4BAA8BA,EACnC9B,KAAKtD,YAAcA,GA+BZuD,+CAA2B,CACtCC,GAAI,kEACJC,OAbkCC,MAAOtF,EAAqCuF,IAC1EvF,GAASuF,EAAInE,eAAe6F,SAAW1B,EAAInE,eAAe6F,QAAQC,yBAC3DC,YAA6B,CAAEzB,cAAeH,GAAOvF,EAAMgH,6BAA+B,MAAMI,KAAK5B,GAChGA,IAIhBD,EAAI8B,MAAM,2DACH,IAMPrH,MAvBiBM,IACjB,MAAM,YAAEsB,EAAF,QAAeqF,GAAY3G,EAAUc,eAC3C,IAAK6F,IAAYA,EAAQC,yBACrB,MAAM,IAAIxG,MAAM,qFAGpB,OAAO,IAAIqG,EAA6BnF,EAAa,CAAC0F,yBAA0BL,EAAQC,+B,qFCjC5F,+CAQe/B,+CAA2B,CACtCC,GAAI,uEACJC,OAAwCsB,eACxC3G,MAAO,IACIuH,iB,+GCgBfC,+BAAqB,CACjBC,SAAU,mDACVC,eAjBiBpC,MACjBqC,EACAC,EACAC,KAKA,GAHAD,QAAsBE,QAAQC,QAAQnC,MAAMC,QAAQ+B,GAAiBA,EAAc,GAAKA,GAGrE,CACf,MAAMI,EAAcC,YAAgCL,GACpDC,EAAczG,eAAe8G,cAAcF,EAAYG,YAAcH,EACrEH,EAAczG,eAAe8G,cAAcE,IAAeC,iBAAmBL,EAAc,CAACA,GAAe,KAO/GM,cAtBkBhD,e,qKCGhB,MAAOiD,EAET1D,YAAY7E,GAGL,KAAAwI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,gCACpB,KAAAC,mBAAqB,IAAM,gCAC3B,KAAAC,cAAgB,IAA0B,cAN7CC,KAAKlF,MAAQA,GA+DNyI,uCAAoC,CAC/CpD,OAjDJC,eAAsBtF,EAAqCuF,GACvD,OAAOvF,EAAMA,MAAM0I,QAAQnD,IAiD3BvF,MAxDiBmE,GACV,IAAIoE,EACPI,kB,oCCPR,kCAAO,MAAMC,EAmDT/D,YACIvD,EACAuH,EACAC,EACAC,GAMiC,IALjCC,EAKiC,uDALf,cAClBC,EAIiC,uDAJX,GACtBC,EAGiC,uDAHb,EACpBC,EAEiC,uDAFd,GACnBC,EACiC,uDADN,KAC3BC,EAAiC,uDAAJ,KAgB1B,KAAAtE,YAAc,IAAM,GAAGG,KAAK5D,aAAa4D,KAAK2D,YAAY3D,KAAK4D,oBAAoB5D,KAAKiE,YAAYjE,KAAK8D,WAAW9D,KAAK+D,eAAe/D,KAAKgE,YAC7I,KAAAlE,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAAiB,UAhBpCC,KAAK5D,UAAYA,EACjB4D,KAAK2D,SAAWA,EAChB3D,KAAK4D,iBAAmBA,EAGxB5D,KAAKiE,SAAWA,EAAW,GAAK,GAAKA,EACrCjE,KAAK8D,QAAUA,EACf9D,KAAK+D,YAAcA,EACnB/D,KAAKgE,UAAYA,EACjBhE,KAAKkE,UAAYA,EACjBlE,KAAKmE,YAAcA,EACnBnE,KAAK6D,gBAAkBA,K,2XCnFxB,MAAMO,EAOTzE,YAAYvD,EAAmBuC,EAAmB0F,EAAiCtG,EAAqBuG,GAQjG,KAAAzE,YAAc,IAAM,oCACpB,KAAAC,mBAAqB,IAAM,kBAC3B,KAAAC,cAAgB,IAAiB,OATpCC,KAAK5D,UAAYA,EACjB4D,KAAKrB,UAAYA,EACjBqB,KAAKqE,gBAAkBA,EACvBrE,KAAKjC,WAAaA,GAAc,GAChCiC,KAAKsE,aAAeA,GAWrBlE,eAAemE,EAAgBC,GAClC,OAAOC,gCAAsB,IAAIC,oBAAqBF,GAOnD,MAAMG,EAAgDvJ,IACzD,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIgI,GACNhI,GACAhB,EAAUc,eAAeQ,YAAYiC,eACtCU,OACAA,GAGJ,MAAM,IAAI7D,MAAM,gGASjB4E,eAAewE,EAClB9J,EACAuF,GAEA,QAA0BhB,IAAvBvE,EAAMwJ,aAA4B,CAAC,IAAD,EACjC,MAAMA,QAAqBC,EAAgBlE,GAC3CvF,EAAMwJ,aAAeA,SAArB,UAAqBA,EAActD,KAAK6D,GAAsB,oEAAdA,EAAKC,aAArD,aAAqB,EAA6GC,UAGtI,OAAOnC,QAAQC,UAEVX,KAAK,KACF,MAAM8C,EAA2ClK,EAAMuJ,gBAEvD,IAAKW,EAAe,CAChB,MAAMC,EAAuB,IAAIvF,uBAAqB5E,EAAMsB,UAAWtB,EAAM6D,WAE7E,OAAOuG,6BAAmBD,EAAsB5E,GAGpD,OAAO2E,IAEV9C,KAAMiD,IACH,MAAMH,EAAsEG,EAE5E,GAAIH,EACA,OAAOI,YACH,CAAE5E,cAAeH,EAAKkB,oBAAqB,IAC3C,CAACyD,EAAcvH,UACf,IAEC3C,EAAMwJ,cAAiBa,WAAeE,WAAwE,KAA3D,GACtDnD,KAAK5B,IACH,GAAGA,GAAYA,EAASc,OAAS,EAC7B,OAAOd,EAAS,OAS/BgF,MAAOC,IAIJ,MAHAlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,sEACd,IAAInK,MAAM,wEAIbyE,+CAA2B,CACtCC,GAAI,sFACJC,OAAqDyE,EACrD9J,MAAO6J,K,8IC3GJ,MAAMiB,EAITjG,YAAYjD,EAAmCmJ,GAKxC,KAAAhG,YAAc,IAAMrB,YAAc,YAAYwB,KAAK8F,sBAAyB9F,KAAKtD,aACjF,KAAAoD,mBAAqB,IAAM,WAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAK8F,sBAAwBD,EAC7B7F,KAAKtD,YAAcA,GAgCZuD,+CAA2B,CACtCC,GAAI,yDACJC,OAdsBC,MAAOtF,EAAyBuF,IAClDvF,GAASuF,EAAInE,eAAewF,KAAKC,gBAE1BoE,YAAU,CAAEvF,cAAeH,GAAOvF,EAAMgL,uBAAyB,IAAI5D,KAAK5B,GACtEI,MAAMC,QAAQL,GAAYA,EAAS,GAAKA,IAIvDD,EAAI8B,MAAM,+CACO,IAMjBrH,MAxBiBM,IACjB,MAAM,KAAEsG,EAAF,YAAQhF,GAAgBtB,EAAUc,eACxC,IAAKwF,EAAKsE,QAAUtE,EAAKC,gBACrB,MAAM,IAAInG,MAAM,0DAGpB,OAAO,IAAIoK,EAAiBlJ,O,iPCnB1B,MAAOuJ,EAEXtG,YAAY7E,GAIL,KAAAwI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,sBACpB,KAAAC,mBAAqB,IAAM,sBAC3B,KAAAC,cAAgB,IAA0B,cAP/CC,KAAKlF,MAAQA,GAgBV,MAAMoL,EACXjH,IAEA,MAAMkH,EAAYlH,EAAK/C,eAAewF,KAAKoE,uBAAyB,GACpE,OAAO,IAAIG,EACTG,YACED,KAKC/F,eAAeiG,EACpBvL,EACAuF,GAEA,OAAOvF,EAAMA,MAAM0I,QAAQnD,GAGdkD,uCAAoC,CACjDpD,OAA+CkG,EAC/CvL,MAAOoL,K,6SC3CH,MAAOI,EAKX3G,YACEvD,EACAuC,EACA0F,EACAlH,GAOK,KAAA0C,YAAc,IAAM,GAAGG,KAAK5D,aAAa4D,KAAKrB,aAAaqB,KAAK7C,yCAChE,KAAA2C,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAiB,OAPtCC,KAAK5D,UAAYA,EACjB4D,KAAKrB,UAAYA,EACjBqB,KAAKqE,gBAAkBA,EACvBrE,KAAK7C,UAAYA,GAAa,GAO3B,MAAMoJ,EACXnL,IAEA,MAAMgB,EAAYH,8CAAoCb,GACtD,GAAIgB,EACF,OAAO,IAAIkK,GACRlK,GAEAhB,EAAUc,eAAeQ,YAAYiC,WAGxC,MAAM,IAAInD,MACR,qGAQC4E,eAAeoG,EACpB1L,EACAuF,GAIA,OAAOuC,QAAQC,UAAUX,KAAK,KAC1B,MAAM8C,EAA2ClK,EAAMuJ,gBACvD,IAAKW,EAAe,CAClB,MAAMC,EAAuB,IAAIvF,uBAC/B5E,EAAMsB,UACNtB,EAAM6D,WAGR,OAAOuG,6BAAmBD,EAAsB5E,GAElD,OAAO2E,IAER9C,KAA+BiD,IAC9B,MAAMH,EAAsEG,EAE5E,OAAIH,EACKyB,YACL,CAAEjG,cAAeH,EAAKkB,oBAAqB,IAC3CyD,EAAcvH,SACd3C,EAAM6D,UACN7D,EAAMqC,WAGH,OAER+E,KAAMwE,GACiCA,GAI/B,IAERpB,MAAOC,IAKN,MAJAoB,QAAQC,IAAIrB,GACZoB,QAAQC,IAAIrB,EAAMC,SAClBnF,EAAI8B,MAAMoD,EAAMC,SAEV,IAAIhK,MACR,8DAKOyE,+CAA2B,CACxCE,OAAmCqG,EACnC1L,MAAOyL,K,uGCvCTjE,+BAAqB,CACjBC,SAAU,iDACVC,eAtCkBpC,MAClBqC,EACAoE,EACAlE,KAEA,GAAImE,QAAUA,OAAOC,WAAaD,OAAOC,UAAUtB,UAAW,CAC1D,MAAMuB,EAActG,MAAMC,QAAQkG,GAAcA,EAAW,GAAKA,EAChE,IAAII,EAAuC,GAG3C,GAAID,GAAeA,EAAYE,YAAcxG,MAAMC,QAAQqG,EAAYE,aAAeF,EAAYE,WAAW9F,OAAS,EAClH,IACI6F,QAA6BE,YAAiCH,EAAYE,WAAYvE,GACxF,MAAO4C,GACL5C,EAAc8C,UAAUF,MAAM,+DAAgEA,GAKtG5C,EAAczG,eAAe8G,cAAcE,IAAekE,UAAY,CAClElH,GAAI8G,EAAYK,GAChBC,YAAaN,EAAYO,UAAYP,EAAYO,UAAUC,WAAa,GACxEC,QAAST,EAAYU,oBACrBC,IAAKX,EAAYY,UAEjBC,SAAUZ,GAIdH,OAAOC,UAAUtB,UAAUqC,SACvB5E,IAAekE,SACMzE,EAAczG,eAAe8G,cAAcE,IAAekE,aAQvFhE,cAjDmBhD,e,oPCRhB,MAAMsE,EAAb/E,cAEoB,KAAAoI,aAAyB,CACrC,oDACA,kEACA,mEAGG,KAAAlI,YAAc,IAAM,eACpB,KAAAC,mBAAqB,IAAM,eAC3B,KAAAC,cAAgB,IAAiB,eAOrC,MAAMiI,EAA8B5M,GAChC,IAAIsJ,EAQRtE,eAAeqE,EAAsB3J,EAA0BuF,GAGlE,aAD2B4H,YAAsB,CAAEzH,cAAeH,GAAOvF,EAAMiN,cASpE9H,+CAA2C,CACtDC,GAAI,8DACJC,OAAiCsE,EACjC3J,MAAOkN,K,oSC/BJ,MAAME,EAAc,CACvBC,0BAA2B,eAC3BC,sBAAuB,oBACvBC,uBAAwB,qBACxBC,oBAAqB,WACrBC,qBAAsB,YACtBC,qBAAsB,YACtBC,sBAAuB,cAMpB,MAAMC,EAGT/I,YAAYjD,GAIL,KAAAmD,YAAc,IAAMrB,wBAAc,oBAAqBwB,KAAKtD,aAC5D,KAAAoD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKtD,YAAcA,GAWpB0D,eAAeuI,EAA6B7N,EAA0BuF,GACzE,OAAOuI,YAA4B,CAAEpI,cAAeH,IAAO6B,KAAM2G,IACvBA,EAAoBC,oBAAsB,IAAIxJ,IAA4CyJ,IAC5H,IAAIC,EAAM,GACV,GAAID,EAAWE,WACX,OAAOF,EAAWE,WAAWC,eACzB,IAAK,OACDF,EAAMD,EAAWI,aAAejB,EAAYK,qBAAuBL,EAAYI,oBAC/E,MACJ,IAAK,QACDU,EAAMD,EAAWI,aAAejB,EAAYO,sBAAwBP,EAAYM,qBAChF,MACJ,IAAK,gBACDQ,EAAMD,EAAWI,aAAejB,EAAYG,uBAAyBH,EAAYE,sBACjF,MACJ,IAAK,UACDY,EAAMd,EAAYC,+BAK1B9H,EAAIoF,UAAU2D,QAAQ,2DAE1B,OAAIJ,EACO,CACHA,MACAD,mBAGJ,IAELM,OAAOC,UAIX,MAAMC,EAAenO,GACjB,IAAIsN,EAAkBtN,EAAUc,eAAeQ,aAG3CuD,+CAA2B,CACtCC,GAAI,qFACJC,OAA8CwI,EAC9C7N,MAAOyO,K,qOCxEJ,MAAMC,EAGT7J,YAAY8J,GAIL,KAAA5J,YAAc,IAAM,0BACpB,KAAAC,mBAAqB,IAAM,eAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAKyJ,eAAiBA,GAQvB,MAAMC,EAA0BtO,IACnC,MAAM,eAAEc,GAAmBd,EAG3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,0BAGpB,OAAO,IAAIgO,EA9BkB,MAC7B,MAAMC,EAAwC,CAC9CA,kBAAmC,CAAC,GACpCA,wBAAyC,CAAC,IAC1C,OAAOA,GA0BqBE,KAGzBvJ,eAAewJ,EAAY9O,EAAyB0J,GAAuB,QAC9E,GAAKA,SAAD,UAACA,EAAStI,sBAAV,iBAAC,EAAyBwF,YAA1B,QAAC,EAA+BC,gBAChC,MAAM,IAAInG,MAAM,8DAGpB,OAAOqO,YAAiB,CAAErJ,cAAegE,GAAW1J,EAAM2O,gBAG/CxJ,+CAA2B,CACtCC,GAAI,eACJC,OAAiCyJ,EACjC9O,MAAO4O,K,oNClCL,MAAOI,EAITnK,YAAYjB,EAAgBhC,GAKrB,KAAAmD,YAAc,IAAMrB,wBAAc,oBAAoBwB,KAAKtB,OAAUsB,KAAKtD,aAC1E,KAAAoD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKtB,OAASA,EACdsB,KAAKtD,YAAcA,GAmBpB0D,eAAe2J,EAAsBjP,EAA6BuF,GACrE,MAAM2J,EAAe,IAAIC,yBAAuBnP,EAAM4D,OAAQ5D,EAAM4B,aAC9DwN,QAA2BC,kCAAwBH,EAAc3J,GAEjE+J,EAAuB/J,EAAInE,eAAe6F,QAE1CsI,EAAgBD,GAAwBA,EAAqBE,6BAA+B,KAC5FC,EAAuBL,EAAmBlJ,KAAKwJ,IAAkBA,EAAcC,SAAW,MAAQJ,GAClGK,EAAmBH,GAAwBA,EAAqBI,iBAAoB,MAEpFC,EAAa,IAAIC,IAAuBH,EAAiB5P,EAAM4B,aACrE,OAAOoO,YAAuBF,EAAYvK,GAG/BJ,+CAA2B,CACtCC,GAAI,uDACJC,OAAsC4J,EACtCjP,MAzBiBM,IACjB,MAAM,OAAEsD,EAAF,YAAUhC,GAAgBtB,EAAUc,eAC1C,IAAMd,EAAUc,iBAAkBwC,EAC9B,MAAM,IAAIlD,MAAM,oEAEpB,OAAO,IAAIsO,EAAqBpL,EAAQhC,O,oCCpC5C,iIAUO,SAASqO,EAAsC3P,GAClD,OAAO4P,YAAkC7P,YAAyBC,GAAY,IAGnE6E,+CAA2B,CACtCC,GAAI,sEACJC,OAAwCsB,eACxC3G,MAAOiQ,K,kNCRJ,MAAME,EAAbtL,cACW,KAAAE,YAAc,IAAM,sBACpB,KAAAC,mBAAqB,IAAM,sBAC3B,KAAAC,cAAgB,IAAiB,QAUrCK,eAAe8K,EAAuBpQ,EAA4BuF,GAErE,IAAKvF,EACD,MAAM,IAAIU,MAAM,gEAGpB,GAAI6E,EAAInE,eAAewF,KAAKC,gBAAiB,CACzC,MAAMwJ,QAAkBC,YAAmB,CAAE5K,cAAeH,EAAKkB,oBAAqB,IAAM,MAE5F,KAAI4J,GAAaA,EAAU/J,OAAS,GAgChC,OADAf,EAAI8B,MAAM,sEACY,GAhCa,CACnC,MAAMkJ,EAAoC,GAW1C,GAVAF,EAAUG,QAASC,IACXA,EAAaC,mBACbD,EAAaC,kBAAkBF,QAASG,IAChCA,EAAiBjO,WACjB6N,EAAcK,KAAK,IAAIC,mBAAiBF,EAAiBjO,UAAW6C,EAAInE,eAAeQ,YAAayB,mDAAyCkC,SAMzJgL,EAAcjK,OAAS,EACvB,OAAOwK,0BAAgBP,EAAehL,GACjC6B,KAAK2F,GACEA,GAGsB,IAG7BvC,MAAMC,IAIH,MAHAlF,EAAI8B,MAAMoD,GACVlF,EAAIoF,UAAUF,MAAMA,EAAMC,SAC1BnF,EAAIoF,UAAUE,MAAM,2EACd,IAAInK,MAAM,6EAGxB6E,EAAI8B,MAAM,qCAQtB,OADA9B,EAAI8B,MAAM,8DACY,GAGXlC,+CAA2B,CACtCC,GAAI,2EACJC,OAAgC+K,EAChCpQ,MA1DiBM,GACV,IAAI6P,K,oKCCR,MAAMY,EAITlM,YAAYpD,EAAmCL,GAKxC,KAAA4D,mBAAqB,IAAc,kBACnC,KAAAD,YAAc,IAAcjB,qCAA2B,kBAAmBoB,KAAK9D,gBAC/E,KAAA6D,cAAgB,IAAiB,UANpCC,KAAKzD,OAASA,GAAU,GACxByD,KAAK9D,eAAiBA,GAmC9B,SAAS4P,EAAejH,EAAsBkH,GAC1C,MAAMC,EAAqBC,EAAUpH,EAAKqH,OAAOC,QAAQC,QAEnDC,GAnBaC,EAmBezH,EAAKqH,OAAOK,MAnBTC,EAmBgBT,EAlBhDO,EAIAE,EAKE,GAAGA,KAAYF,MAJX,IAAIA,MAJJ,IAFf,IAAuBA,EAAkBE,EAoBrC,MAAO,CACHC,MAAO5H,EAAKqH,OAAOC,QAAQO,MAC3BrP,YAAawH,EAAKqH,OAAOC,QAAQQ,YACjCC,iBAAkB/H,EAAKqH,OAAOC,QAAQU,iBACtCC,gBAAiBjI,EAAKqH,OAAOC,QAAQY,gBACrCC,gBAAiBnI,EAAKqH,OAAOC,QAAQc,gBACrCC,KAAMb,EACNc,OAAQnB,GAOhB,SAASoB,EAAYhS,GAEjB,OAAOA,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAesQ,SAAWpR,EAAUc,eAAesQ,SAAW,GA+B5H,SAASP,EAAUG,GACf,MAAMiB,EAA2B,GAEjC,OAAKjB,GAILA,EAAOd,QAAQzG,IACX,GAAIA,GAAQA,EAAKyI,OAASzI,EAAKyI,MAAMC,KAAM,CAEvC,MAAMC,EAAmB,CACrBD,KAAM1I,EAAKyI,MAAMC,KACjBE,QAAS5I,EAAKyI,MAAMG,QACpBf,MAAO7H,EAAKyI,MAAMZ,MAClBgB,MAAO7I,EAAKyI,MAAMI,MAClBC,OAAQ9I,EAAKyI,MAAMK,QAGvBN,EAAgB3B,KAAK8B,MAItBH,GAlBIA,EAuDf,MAAMO,EAAsBxS,IACxB,MAAMyS,EAhCV,SAA0BzS,GACtB,IAAIyS,EACCzS,GAAcA,EAAUc,gBAAmBd,EAAUc,eAAe4R,SAAkB1S,EAAUc,eAAe4R,SAASC,KAAzC,KACpF,KACK3S,GACAA,EAAUc,gBACVd,EAAUc,eAAe4R,UACzB1S,EAAUc,eAAe4R,SAASC,MAClC3S,EAAUc,eAAe4R,SAASC,KAAK5B,SACvC/Q,EAAUc,eAAe4R,SAASC,KAAK5B,QAAQ6B,OAC/C5S,EAAUc,eAAe4R,SAASC,KAAK5B,QAAQO,OAC/CtR,EAAUc,eAAe4R,SAASC,KAAKE,KAC1C,CACE,KACK7S,GACAA,EAAU8S,MACV9S,EAAU8S,KAAKH,MACf3S,EAAU8S,KAAKH,KAAK5B,SACpB/Q,EAAU8S,KAAKH,KAAK5B,QAAQ6B,OAC5B5S,EAAU8S,KAAKH,KAAK5B,QAAQO,OAC5BtR,EAAU8S,KAAKH,KAAKE,KAGrB,MADAtH,QAAQpB,MAAM,kDACR,IAAI/J,MAAM,kDAGpBqS,EAAWzS,EAAU8S,KAAKH,KAE9B,OAAOF,EAI0BM,CAAiB/S,GAC5CgT,EAA2C,GACjD,IAAIC,EAA8B,GAElC,MAAMC,EAA2BrC,EAAU4B,EAAS1B,QAAQC,QAEtDmC,EA3FV,SAAyBnT,GACrB,IAAKA,IAAcA,EAAUmB,SAAWnB,EAAUmB,OAAOgS,aACrD,OAAO,GAGX,MAAMvT,EAASY,OAAOR,EAAUmB,OAAOgS,cACvC,OAAIC,MAAMxT,GACC,GAGJA,EAiFcyT,CAAgBrT,GAC/BsT,EA5EV,SAAsBtT,GAClB,OAAOA,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMuS,UAC3G9S,OAAOR,EAAUc,eAAeC,MAAMuS,WACtC,EAyEYC,CAAavT,GAGzBwT,EAA+B,GAC/BC,EAAMH,EAAYH,EACxB,IAAK,IAAIO,EAAQJ,EAAWI,EAAQjB,EAAS1B,QAAQ6B,MAAM5M,QAAU0N,EAAQD,EAAKC,IAAS,CACvF,MAAMjK,EAAOgJ,EAAS1B,QAAQ6B,MAAMc,GACpC,GAAa,SAATjK,EAAKkK,KAA4B,CACjC,IAAKlK,EAAKqH,SAAWrH,EAAKqH,OAAOC,UAAYtH,EAAKqH,OAAOC,QAAQO,MAAO,CACpE/F,QAAQpB,MAAM,yDAAyDsI,EAASI,KAChF,SAIJ,GAA6B,IAAvBI,EAAYjN,OAAe,CAC7B,MAAM4N,EAAa,IAAIX,GACvBD,EAAU1C,KAAKsD,GACfX,EAAc,GAIlBD,EAAU1C,KAAKI,EAAejH,EAAMuI,EAAYhS,KAGpD,GAAa,YAATyJ,EAAKkK,KAA+B,CACpC,IAAKlK,EAAKqH,SAAWrH,EAAKqH,OAAOpN,SAAU,CACvC6H,QAAQpB,MAAM,yCAAyCsI,EAASI,KAChE,SAIJ,MAAMgB,EAA4B,CAC9BxR,SAAUoH,EAAKqH,OAAOpN,SACtB1B,UAAWyH,EAAKqH,OAAO/O,WAAa,KAGxCkR,EAAY3C,KAAKuD,GACjBL,EAAalD,KAAKuD,IAS1B,OAJ6B,IAAvBZ,EAAYjN,QACdgN,EAAU1C,KAAK2C,GAGZ,IAAIa,YACPrB,EAASI,IACTJ,EAAS1B,QAAQO,MACjBmB,EAAS1B,QAAQQ,YACjBkB,EAAS1B,QAAQU,iBACjBgB,EAAS1B,QAAQY,gBACjBc,EAAS1B,QAAQc,gBACjBqB,EACAF,EACAQ,EACAf,EAAS1B,QAAQ6B,MAAM5M,OACvBmN,EACAG,IA4BOzO,+CAA2B,CACtCC,GAAI,4DACJC,OA1BWC,MAAOtF,EAA6B0J,KAC/C,MAAM,OAAEjI,GAAWzB,EACnB,IAAI+S,EACJ,IACIA,QAAiBsB,kBAAQvB,EAAmBpJ,GAAUA,GACxD,MAAOxI,IAGT,OAAI6R,GAAYA,EAASpB,MACd,CACHC,MAAOmB,EAASpB,MAChBE,YAAakB,EAASxQ,aAGnBd,EACA,CACHmQ,MAAOnQ,EAAOmQ,MACdC,YAAapQ,EAAOoQ,aAGjB,IAOX7R,MAAQmE,GACG,IAAI4M,EAAgD5M,EAAK1C,OAAQ0C,EAAK/C,mB,2FC5OrFoG,+BAAqB,CACjBC,SAAU,wEACVC,eApBsCpC,MACtCqC,EACA2M,EACAzM,KAEKjC,MAAMC,QAAQyO,KACfA,EAAiB,CAACA,IAGtBA,EAAe9D,QAAQlL,UACnB,GAAIrD,EAAS,CACTA,QAAgB6F,QAAQC,QAAQ9F,GAChC,MAAM+F,EAAcC,YAAgChG,GACpD4F,EAAczG,eAAe8G,cAAcF,EAAYG,YAAcH,MAQ7EM,cAzBuChD,e,oCCP3C,kDAYO,MAAM9E,EAAmBF,IAG5B,MAAQc,gBAAiBC,OAAO,EAACZ,EAAD,IAAIM,EAAJ,KAASE,GAAOW,aAAa,UAACiC,IAAapC,QAAQ,SAACZ,EAAD,aAAW4S,IAAiBnT,EACzGmG,EAAsB8N,IAAyBC,cAAclU,GAAWmU,oBAC9E,MAAO,CACHhU,IACAQ,KAAOA,GAAQH,OAAOG,IAAS,EAC/BF,IAAMA,GAAOD,OAAOC,IAAQ,GAC5B0S,eACA5S,WACAgD,YACA4C,yB,2SCjBD,MAAM+E,EAMT3G,YAAYvD,EAAmBuC,EAAmB0F,EAAiClH,GAO5E,KAAA0C,YAAc,IAAM,+BACpB,KAAAC,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAK5D,UAAYA,EACjB4D,KAAKrB,UAAYA,EACjBqB,KAAKqE,gBAAkBA,EACvBrE,KAAK7C,UAAYA,GAAa,GAQ/B,MAAMoJ,EAA2CnL,IACpD,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIkK,GAAmClK,GAAYhB,EAAUc,eAAeQ,YAAYiC,WAE/F,MAAM,IAAInD,MAAM,gGAOjB4E,eAAeoG,EAClB1L,EACAuF,GAGA,OAAOuC,QAAQC,UAAUX,KAAK,KAC1B,MAAM8C,EAA0ClK,EAAMuJ,gBAEtD,IAAKW,EAAe,CAChB,MAAMC,EAAuB,IAAIvF,uBAAqB5E,EAAMsB,UAAWtB,EAAM6D,WAE7E,OAAOuG,6BAAmBD,EAAsB5E,GAGpD,OAAO2E,IACR9C,KAA+BiD,IAC9B,MAAMH,EAAqEG,EAE3E,OAAIH,EACOyB,YAAwB,CAAEjG,cAAeH,EAAKkB,oBAAqB,IAAMyD,EAAcvH,SAAU3C,EAAM6D,UAAW7D,EAAMqC,WAG5H,OACR+E,KAAMwE,GACiCA,GAK/B,IACRpB,MAAOC,IAEN,MADAlF,EAAI8B,MAAMoD,EAAMC,SACV,IAAIhK,MAAM,8DAITyE,+CAA2B,CACtCC,GAAI,8EACJC,OAAmCqG,EACnC1L,MAAOyL,K,0OCrCJ,MAAMiJ,EAKT7P,YAAY8P,EAAoBC,EAAiBhT,GAM1C,KAAAmD,YAAc,IAAMrB,wBAAc,2BAA4BwB,KAAKtD,aACnE,KAAAoD,mBAAqB,IAAM,4BAA4BE,KAAKyP,aAAazP,KAAK0P,UAC9E,KAAA3P,cAAgB,IAAiB,UAPpCC,KAAKyP,UAAYA,EACjBzP,KAAK0P,QAAUA,EACf1P,KAAKtD,YAAcA,GAwBpB0D,eAAeuP,EAClB7U,EACAuF,GAEA,IAAKA,EACD,MAAM,IAAI7E,MAAM,+EAGpB,MAAM,UAAEiU,EAAF,QAAaC,GAAY5U,EAE/B,IAAK2U,IAAcC,EAEf,OADArP,EAAI8B,MAAM,yEACwB,GAGtC,MAAM0E,QAlEY,eAAC4I,EAAD,uDAAqB,GAAIC,EAAzB,uDAA2C,GAA3C,OAAkDtP,SACpD,eAATqP,EACDG,YAAmC,CAAEpP,cAAeH,GAAOqP,GAG3DG,YAAyC,CAAErP,cAAeH,GAAOqP,EAAS,GA6DvDI,CAAcL,EAAWC,EAAzBI,CAAkCzP,GAE3D,IAAKwG,EAED,OADAxG,EAAI8B,MAAM,4DACwB,GAKtC,GAAwC,KAApC0E,EAAWkJ,qBACX,MAAkC,CAC9BlJ,aACAgB,SAAU,IAIlB,IAAKhB,EAAWK,aAAeL,EAAWK,WAAW9F,OAEjD,OADAf,EAAI8B,MAAM,2DACwB,GAGtC,MAAM6N,EAAuBnJ,EAAWK,WAAW5H,IAAI2Q,GAAaA,EAAUzS,WAAa,GAAG6L,OAAOjN,GAAaA,GAElH,IAAK4T,IAAeA,EAAW5O,OAE3B,OADAf,EAAI8B,MAAM,wEACwB,GAGtC,MAAM0F,QAnFU,eAACmI,EAAD,uDAAwB,GAAIrR,EAA5B,8CAAmDyB,UACnE,MAAMiL,EAAgB2E,EAAW1Q,IAAIlD,GAAa,IAAI8T,eAAa9T,EAAWiE,EAAInE,eAAeQ,YAAaiC,IAC9G,OAAOwR,4BAAkB9E,EAAehL,IAiFjB+P,CAAYJ,EAAYnJ,EAAWU,UAAnC6I,CAA8C/P,GAErE,IAAKwH,IAAaA,EAASzG,OAEvB,OADAf,EAAI8B,MAAM,yDACwB,GAGtC,MAAMkO,QAAyBjL,YAAwB,CAAE5E,cAAeH,EAAKkB,oBAAqB,IAAMsG,EAASvI,IAAIgR,GAAKA,EAAE7S,UAAW,GAAI,GACtIyE,KAAKlH,GACCA,GACRsK,MAAOC,IAIN,MAHAlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,8DACd,IAAInK,MAAM,gEAGpB,MAAkC,CAC9BqL,aACAgB,WACAwI,mBAIOpQ,+CAA2B,CACtCC,GAAI,8EACJC,OAA4CwP,EAC5C7U,MAnFyCM,IACzC,MAAM,QAAEmV,EAAU,GAAZ,cAAgBC,EAAgB,IAAQpV,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,OAAU,GACnH,GAAIoU,EACA,OAAO,IAAIf,EAAgC,aAAwBe,EAASnV,EAAUc,eAAeQ,aAClG,GAAI8T,EACP,OAAO,IAAIhB,EAAgC,cAAyBgB,EAAepV,EAAUc,eAAeQ,aAEhH,MAAM,IAAIlB,MAAM,mF,kCCpEpB,uFAIO,SAASiV,EAAoBzV,GAChC,OAAO,IAAI0V,eAA8B,iBAAkB1V,EAAQ,mBAOxDiF,+CAA2B,CACtCE,OAAkCwQ,mBAClC7V,MANgC,IACzB2V,EAAoB,O,kCCL/B,kCAIO,MAAMpB,EA+DT1P,YACI4B,GAEAvB,KAAKuB,oBAAsBA,EA9DP,0BACpB,OAAOvB,KAAKuB,oBAMA,mBAQZ,MAAO,GANS,OAAOvB,KAAKuB,oBAAoB9F,OAAQC,OACvC,QAAQsE,KAAKuB,oBAAoB9F,OAAQK,QAItC,YAHKkE,KAAKuB,oBAAoBqP,QAASC,SAAW,IAAIvR,IAAKwR,GACpE,GAAGA,EAAO7H,eAAe6H,EAAO3H,aAAgB,OAAU,SAClE3J,KAAK,WAAQH,KASO,qBAACjE,GACxB,MAAM,eAAEc,EAAF,OAAkBK,GAAWnB,EACnC,OAAOiU,EAAyB0B,eAAe7U,EAAgBK,GAQvC,sBAACL,EAAiCK,GAC1D,MAAMyU,EAAkBzU,GAAUA,EAAOyU,sBAAmB3R,EACtDlD,EAAQD,GAAkBA,EAAeC,MACzCN,EAAMM,GAASA,EAAMN,UAAOwD,EAC5BtD,EAAOI,GAASA,EAAMJ,WAAQsD,EAE9BkC,EAAsB,CACxB9F,OAAQ,CACJK,KAAOC,GAAQH,OAAOG,IAAS,EAC/BL,IAAMG,GAAOD,OAAOC,KAAQU,aAAtB,EAAsBA,EAAQgS,eAAgB,IAExDqC,QAASI,GAAmB,IAGhC,OAAO,IAAI3B,EAAyB9N,GAMhB,oBACpB,OAAO,IAAI8N,EAAyB,CAAE5T,OAAQ,GAAImV,QAAS,Q,wkBCrD5D,MAAMK,EAQTtR,YAAY6E,EAA0B0M,EAA4BvV,GAS3D,KAAAkE,YAAc,IAAMrB,YAAc,GAAGwB,KAAKrB,aAAaqB,KAAKwM,gBAAgBxM,KAAKrE,UAAY,MAAOqE,KAAKtD,YAAasD,KAAKtB,QAC3H,KAAAoB,mBAAqB,IAAOE,KAAKmR,mBAAqB,oBAAsB,WAC5E,KAAApR,cAAgB,IAAiB,cACjC,KAAAqR,UAAY,IAAapR,KAAKtB,QAAU,GAX3CsB,KAAKmR,mBAAqBD,EAC1BlR,KAAKrE,SAAWA,GAAY,IAC5BqE,KAAKrB,UAAY6F,GAAWA,EAAQ9H,aAAe8H,EAAQ9H,YAAYiC,WAAa6F,EAAQ9H,YAAYiC,UAAY,EACpHqB,KAAKwM,SAAWhI,GAAWA,EAAQgI,UAAY,GAC/CxM,KAAKtD,YAAc8H,EAAQ9H,YAC3BsD,KAAKtB,OAAS8F,EAAQ9F,QAAU,IASxC,MAkBa2S,EAAyB,CAACC,EAA0BjR,EAAqB3B,KAClF,IAAK4S,IAAiBA,EAAalQ,OAC/B,MAAO,GAGX,MAAMmQ,EAA4BD,EAAaE,OAAO,CAACC,EAAoBC,KACvE,MAAMC,EAxBU,EAACjT,EAAiBkT,KACtC,IAAIC,EAKJ,OAJInT,GAAUkT,GAAoBA,EAAiBxQ,OAAS,IACxDyQ,EAAkBD,EAAiB5Q,KAAK6D,GAAQA,EAAKiN,SAAUC,gBAAkBrT,EAAOqT,gBAGrFF,GAAmBA,EAAgBG,MAkBpBC,CAAgBvT,EAAQgT,EAASQ,kBAC7CC,E,yWAAiB,IAA4BT,GAInD,OAHAS,EAAkBC,gBAAkBV,EAAS5M,KAC7CqN,EAAkBrN,KAAO6M,GAAaQ,EAAkBC,gBACxDX,EAAKC,EAASjU,UAAY0U,EACnBV,GACR,IAEH,IAAIY,EAAed,EAAY,GAkB/B,OAhBAe,OAAOC,KAAKhB,GAAajG,QAASpL,IAC9B,MAAMsS,EAAUjB,GAAarR,GACvBuS,EAAWD,EAAQE,eAEzB,GADAF,EAAQG,IAAMC,YAAeJ,EAASnS,EAAKkR,GAC1B,IAAbkB,EAEA,YADAJ,EAAeG,GAInB,MAAMK,EAASJ,GAAYlB,EAAYkB,GACnCI,IACAA,EAAOC,SAAWD,EAAOC,UAAY,GACrCD,EAAOC,SAASpH,KAAK8G,MAIrBH,GAAgBA,EAAaS,UAAa,IAMzCC,EAAkC3X,IAC3C,MAAM4X,EAAW5X,EAAUmB,QAAUnB,EAAUmB,OAAO0W,eAAiBC,SAAS9X,EAAUmB,OAAO0W,cAAe,IAChH,OAAO,IAAIhC,EAAgB7V,EAAUc,gBAAgB,EAAM8W,IAMxD5S,eAAe+S,EAA2BrY,EAAwBuF,GACrE,MAAM+S,QAAmBC,YACrB,IAAIC,IAAmBjT,EAAInE,gBAAgB,EAAOpB,EAAMa,UACxD0E,GAEJ,OAAOgR,EAAuB+B,EAAY/S,EAAKvF,EAAMsW,aAG1CnR,+CAA2B,CACtCC,GAAI,qEACJC,OAAsCgT,EACtCrY,MAAOiY,K,yMCxFJ,MAAMQ,EAKT5T,YAAYzD,EAAiCK,GAAwC,MACjF,GAaG,KAAAsD,YAAc,IAAejB,qCAA2B,2BAA4BoB,KAAK9D,gBACzF,KAAA4D,mBAAqB,IAAc,2BACnC,KAAAC,cAAgB,IAAiB,WACjC,KAAAuD,kBAAoB,KAAM,EAhBzB,UAACpH,EAAeC,aAAhB,QAAC,EAAsB+D,GACvB,MAAM,IAAI1E,MAAM,mDAEpB,IAAKe,EACD,MAAM,IAAIf,MAAM,qDAEpBwE,KAAKwT,gBAAkBtX,EAAeC,MAAM+D,GAC5CF,KAAKuB,oBAAsB8N,2BAAyB0B,eAAe7U,EAAgBK,GAAQgT,oBAE3FvP,KAAKuB,oBAAoBkS,OAAQ,EACjCzT,KAAK9D,eAAiBA,GAYvBkE,eAAesT,EAA4B5Y,EAAsC0J,GACpF,OAAOmP,+BAAqB,IAAIC,4BAA0B9Y,EAAM0Y,gBAAiB1Y,EAAMyG,qBAAsBiD,GAGlGvE,+CAA2B,CACtCC,GAAI,oFACJC,OAAgCuT,EAChC5Y,MAAQ0J,IACJ,IAAKA,EAAQjI,OACT,MAAM,IAAIf,MAAM,qDAEpB,OAAO,IAAI+X,EAA8B/O,EAAQtI,eAAgBsI,EAAQjI,Y,qGCOjF+F,+BAAqB,CACjBC,SAAU,qDACVC,eA3BmBpC,MAAOqC,EAAwCoR,EAAqBlR,KACvF,GAAImE,QAAUA,OAAOC,WAAaD,OAAOC,UAAUtB,UAAW,CAC1D,MAAMqO,EAAapT,MAAMC,QAAQkT,GAAQA,EAAK,GAAKA,EAC7CE,EAA6BpR,EAAczG,eAAe8G,cAAc+Q,eAC9E,IAAIC,EAAgC,GAGpC,GAAID,EACA,IACIC,QAAsB7M,YAAiC4M,EAAgBpR,GACzE,MAAO4C,GACL5C,EAAc8C,UAAUF,MAAM,mEAAoEA,GAK1GuB,OAAOC,UAAUtB,UAAUqC,SAAS5E,IAAe+Q,UAAW,CAC1DC,OAAQJ,EAAWzM,GACnB8M,YAAaL,EAAWM,QAAUN,EAAWM,QAAQ5M,WAAa,GAClEK,SAAUmM,EACVtE,QAASoE,EAAWO,YAAcP,EAAWO,YAAY7M,WAAa,OAQ9EpE,cArDoBhD,MAAOkU,EAAuC3R,KAClE,IACI,MAAM4R,EAAc7T,MAAMC,QAAQ2T,GAA+BA,EAAO,GAA0BA,EAGlG,GAAIC,EAAYC,aAAkD,mBAA5BD,EAAYC,YAA4B,CAC1E,MAAMC,EAAqBF,EAAYC,cACvC,GAAIC,GAAsBA,EAAmBC,UAGzC,YADA/R,EAAczG,eAAe8G,cAAc+Q,eAAiBU,EAAmBC,WAIvF/R,EAAc8C,UAAUE,MAAM,qEAChC,MAAO3J,GACL2G,EAAc8C,UAAUE,MAAM,yCAA0C3J,Q,yNCxBzE,MAAe2Y,EAkBlBhV,cANmB,KAAAiV,iBAAsC,CAAEC,aAAa,EAAMC,YAAY,GAIlF,KAAAC,8BAAwC,6BAG5C/U,KAAKgV,mBAAoB,EACzB,MAAMC,EAAQjV,KAAKkV,kBAAkBlV,KAAK+U,+BAC1C,IACI,MAAMI,EAAoCF,EAAQG,KAAKC,MAAMJ,QAAS5V,EACnE8V,IACCnV,KAAKsV,eAAiBH,GAE5B,SACEnV,KAAKsV,oBAAiBjW,GAzBG,mBAC7B,YAAyBA,IAAlBW,KAAKuV,SAEY,cACxB,OAAOvV,KAAKuV,SA+BmB,+BAC/BvV,KAAK4U,iBAAmB,CACpBC,aAAc7U,KAAK4U,iBAAiBC,YACpCC,YAAa9U,KAAK4U,iBAAiBE,YAKZ,yBAACha,GAC5BkF,KAAKgV,kBAAoBla,EAIU,iCAACA,GACpCkF,KAAKuV,SAAWza,EAImB,iCAAC0a,GACpCxV,KAAKyV,wBAA0BD,EAIG,gCAACA,EAAkBE,GAAqG,IAArEC,EAAqE,wDAC1J,MAAMR,EAAwB,CAAES,QAASJ,EAASK,UAAWH,EAAWI,SADkF,uCAC9DC,UAD8D,wCAE1J/V,KAAKsV,eAAiBH,EAClBQ,GACA3V,KAAKgW,eAAehW,KAAK+U,8BAA+BK,KAAKa,UAAUd,IAK5C,6BAACe,EAAmBC,GACnD,MAAMhB,EAAwB,CAAES,QAAS,GAAIC,UAAW,GAAIC,SAAUI,EAAUH,UAAWI,GAC3FnW,KAAKoW,yBAA2BjB,EAIJ,0BAACQ,GAC7B3V,KAAKsV,oBAAiBjW,EAClBsW,GACA3V,KAAKqW,cAAcrW,KAAK+U,+BAKT,iBAACja,GACpB,GAAIkF,KAAKuV,UAAYvV,KAAKuV,SAASrV,KAAOpF,EAAMoF,GAC5C,MAAM,IAAI1E,MAAM,4BAGpBwE,KAAKuV,SAAWza,EAII,oBACpBkF,KAAKuV,cAAWlW,EAGZgX,cAAcrN,GAClB,GAAKA,GAGDsN,UAASC,UAAW,CACJzP,OAAO0P,aACfC,WAAWzN,IAInBgN,eAAehN,EAAaiM,GAChC,GAAKjM,GAAQiM,GAGTqB,UAASC,UAAW,CACJzP,OAAO0P,aACfE,QAAQ1N,EAAKiM,IAIrBC,kBAAkBlM,GACtB,GAAKA,GAGDsN,UAASC,UAAW,CACpB,MACMI,EADU7P,OAAO0P,aACKI,QAAQ5N,GACpC,GAAI2N,EACA,OAAOA,IA1HTE,sBAATC,KAAS,iCAGAD,sBAATC,KAAS,4BAIED,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,8CACAF,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,uCACAF,sBAAXE,KAAW,wCACAF,sBAAXE,KAAW,+CACAF,sBAAXE,KAAW,+BAsBZF,sBADC1W,KACD,2CAQA0W,sBADC1W,KACD,uCAKA0W,sBADC1W,KACD,+CAKA0W,sBADC1W,KACD,+CAKA0W,sBADC1W,KACD,8CASA0W,sBADC1W,KACD,2CAMA0W,sBADC1W,KACD,wCAQA0W,sBADC1W,KACD,+BASA0W,sBADC1W,KACD,gCCzFG,MAAM6W,UAAqCrC,EAAlDhV,kCACqB,KAAAsX,iBAA2B,wCAC3B,KAAAC,iBAA2B,gEAGtB,gBAACC,EAAoBxU,GACvC,KAAKwU,GACAxU,EAAczG,eAAe6F,SAC7BY,EAAczG,eAAe6F,QAAQqV,gBACrCzU,EAAczG,eAAe6F,QAAQsV,iBACtC,OAGJ,MAAMC,EAAQ,qBAAqBC,OAAOC,gBAAgB,IAAIC,YAAY,IAAI,GACxEtb,EAAQub,UAAUP,GAClBnO,EAAM0O,UAAU/U,EAAczG,eAAe6F,QAAQqV,gBAErDO,EAAoBhV,EAAczG,eAAe0b,KAAOjV,EAAczG,eAAe0b,IAAIrb,QAAUoG,EAAczG,eAAe0b,IAAIrb,OAAOob,kBAC3IE,EAAa,GAAGF,GAAwC3X,KAAKiX,oCAAoC9a,SAAa6M,WAAasO,IAEjI,OAAO,IAAI1U,QAA6CC,IACpD,MAAMiV,EAASC,SAASC,cAAc,UACtCF,EAAOG,aAAa,OAAQ,mBAC5BH,EAAOG,aAAa,MAAOJ,GAE3B/Q,OAAOwQ,GAAUpJ,WACNpH,OAAOwQ,GACdS,SAASG,KAAKC,YAAYL,GAEtB5J,GAAQA,EAAKkK,cAAgBlK,EAAKkK,aAAahX,OAAS,GAAK8M,EAAKkK,aAAa,GAAGC,UAAUjX,OAAS,GACrGyB,EAAQ,CACJqT,SAAUhI,EAAKkK,aAAa,GAAGC,UAAU,GAAGC,MAAMC,YAAY,GAC9DpC,UAAWjI,EAAKkK,aAAa,GAAGC,UAAU,GAAGC,MAAMC,YAAY,KAIvE1V,OAAQxD,IAGZ0Y,SAASG,KAAKM,YAAYV,KAMX,iBAAChd,GAAuB,MAG3C,KAFsC,QAAR,EAAAid,gBAAA,UAAUU,eAAe,yBAInD,OAAO7V,QAAQC,UAGnB,MAAM6V,EAAM,GAAG1Y,KAAKkX,mBAAmBpc,EAAMkO,IAAM,QAAQlO,EAAMkO,IAAQ,KAAKlO,EAAM6d,KAAO,YAAY7d,EAAM6d,KAAS,KAAK7d,EAAM8d,OAAS,WAAW9d,EAAM8d,OAAW,KAEtK,OAAO,IAAIhW,QAAQ,CAACC,EAASgW,KAAU,UACnC,MAAMf,EAAM,UAAGC,gBAAH,aAAG,EAAUC,cAAc,UACvCF,EAAO/I,KAAO,kBACd+I,EAAO1X,OAAQ,EACf0X,EAAOgB,OAAQ,EACfhB,EAAOiB,IAAML,EACbZ,EAAO5X,GAAK,uBACR4G,SACAA,OAAOkS,YAAc,KACjBhZ,KAAKiZ,gBAAiB,EACtBpW,MAGRiV,EAAOoB,QAAW3T,IACdsT,EAAOtT,IAEH,QAAR,EAAAwS,gBAAA,mBAAUG,YAAV,SAAgBM,YAAYV,MC7EjC,SAASqB,EAA8Bne,GAC1C,OAAO,IAAI0V,eAAyC,UAAW1V,EAAQ,8BDUvE6b,sBADC1W,KACD,8BAwCA0W,sBADC1W,KACD,+BC3CWF,+CAA2B,CACtCE,OAA6CwQ,mBAC7C7V,MAN2CM,GACpC+d,EAA8B,IAAInC,M,8ICAtC,MAAM9G,EAKTvQ,YAAYvD,EAA4BM,EAAmCiC,GAMpE,KAAAkB,YAAc,IAAOrB,YAAc,YAAYwB,KAAK5D,UAAUoL,wBAAwBxH,KAAKrB,UAAU6I,aAAcxH,KAAKtD,aACxH,KAAAoD,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAAiB,cAPpCC,KAAKtD,YAAcA,EACnBsD,KAAK5D,WAAaA,EAClB4D,KAAKrB,UAAYA,GAAajC,EAAYiC,WAuEnCsB,yCAA2B,CACtCC,GAAI,gEACJC,OA7CGC,eAAuCkU,EAAwBjU,GAClE,IAAKK,MAAMC,QAAQ2T,IAA6B,IAAlBA,EAAOlT,OAEjC,OADAf,EAAI8B,MAAM,6DACH,GAGX,MAAMiX,EAAwC,GACxCpJ,EAAasE,EAAOhV,IAAI,CAACxE,EAAOue,KAClCD,EAAiBte,EAAMsB,WAAaid,EAC7Bve,EAAMsB,YAGjB,OAAOkd,YAAc,CAAE9Y,cAAeH,EAAKkB,oBAAqB8N,IAAyBkK,aAAahK,qBAAuB+E,EAAO,GAAG3V,UAAWqR,GAAY9N,KAAK2F,IAC/J,MAAM2R,EAAiB3R,EAASvI,IAAIvC,IAC5B,IACI,MAAMyE,EAAc1E,YAAwBC,EAASsD,EAAInE,eAAeQ,aAMxE,OAJI8E,IACAzE,EAAQC,gBAAkBwE,GAGvBzE,EACT,MAAOf,GACLqE,EAAI8B,MAAM,sEAGjBqP,OAAO,CAACC,EAAuB1U,KAC5B,IAAKA,EACD,OAAO0U,EAIX,OADAA,EADY2H,EAAiBrc,EAAQU,WACzBV,EACL0U,GACR,IAGP,OAAO6C,EAAOhV,IAAIxE,GACO0e,EAAexY,KAAKjE,GAAWA,GAAWA,EAAQU,WAAa3C,EAAMsB,YACpD,OAQ9CtB,MA/DsCM,IACtC,IAAI4U,EAAa5U,EAAUmB,QAAUnB,EAAUmB,OAAOyT,WACtD,OAAKA,GAILA,EAAmC,iBAAfA,EAA0BA,EAAWyJ,MAAM,KAAOzJ,EAC9DtP,MAAMC,QAAQqP,GAEhBA,EAAW1Q,IAAKlD,GACL,IAAI8T,EAAa9T,EAAWhB,EAAUc,eAAeQ,cAFhE,IALK,IA6DXgd,WAAW,K,8MC3Ef,MAAMC,EAAyB,CAC3BC,OAAQC,KAAKC,MACbC,kBAAmB,GAmBhB,MAAMC,EAGTra,YAAYjD,GAIL,KAAAmD,YAAc,IAAMrB,wBAAc,mBAAoBwB,KAAKtD,aAC3D,KAAAoD,mBAAqB,IAAM,mBAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKtD,YAAcA,GAkBpB0D,eAAe6Z,EAClBnf,EACAuF,GAEA,IAAKA,EACD,MAAM,IAAI7E,MAAM,uEAGpB,IAAI0e,EAAsC,GAE1C,IACIA,OA9C0B9Z,UACvB+Z,YACH,CACI3Z,cAAeH,EACfkB,oBAAqB,IAEzBoY,GAwCyBS,CAAsB/Z,GACjD,MAAOkF,GACL,MAAMA,EAGV,MAAO,CAAE2U,iBAAkBA,GAGhBja,+CAA2B,CACtCC,GAAI,qEACJC,OAAoC8Z,EACpCnf,MA7BiCM,GAC1B,IAAI4e,EAAyB5e,EAAUc,eAAeQ,gB,sRC1C1D,MAAM2d,EAGT1a,YAAY4B,GAML,KAAA1B,YAAc,IAAM,2BACpB,KAAAC,mBAAqB,IAAM,2BAC3B,KAAAC,cAAgB,IAAiB,OAPpCC,KAAKuB,oBAAsBA,EAC3BvB,KAAKuB,oBAAoBkS,OAAQ,EACjCzT,KAAKuB,oBAAoB9F,OAAQC,IAAM,GAYxC,MAAM4e,EAAuClf,IAChD,MAAMmG,EAA4C8N,IAAyBC,cAAclU,GAAWmU,oBACpG,OAAO,IAAI8K,EAA8B9Y,IAQtCnB,eAAema,EAAyBzf,EAAsC0J,GACjF,OAAOgW,YAAsB,IAAIC,IAA2B3f,EAAMyG,qBAAsBiD,GAO7EvE,+CAA4C,CACvDC,GAAI,wFACJC,OAAkCoa,EAClCzf,MAAOwf,K,gKC5CJ,MAAMI,EAGT/a,YAAYjD,EAAmCmJ,GAIxC,KAAAhG,YAAc,IAAMrB,YAAc,+BAAgCwB,KAAKtD,aACvE,KAAAoD,mBAAqB,IAAM,+BAC3B,KAAAC,cAAgB,IAAiB,cALpCC,KAAKtD,YAAcA,GA+BZuD,+CAA2B,CACtCC,GAAI,sFACJC,OAbgDC,MAAOtF,EAA6CuF,IAChGvF,EACO6f,YAA2C,CAAEna,cAAeH,IAAO6B,KAAK5B,GACpEA,IAIfD,EAAI8B,MAAM,6EACiC,IAM3CrH,MAvBiBM,IACjB,MAAM,YAAEsB,GAAgBtB,EAAUc,eAClC,IAAKQ,EACD,MAAM,IAAIlB,MAAM,oFAGpB,OAAO,IAAIkf,EAAqChe,O,uMCG7C,MAAMke,EAGTjb,YAAYjD,GAIL,KAAAmD,YAAc,IAAMrB,wBAAc,oBAAqBwB,KAAKtD,aAC5D,KAAAoD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKtD,YAAcA,GAkBpB0D,eAAeya,EAClB/f,EACAuF,GAEA,IAAKA,EACD,MAAM,IAAI7E,MAAM,+DAGpB,IAAIsf,EAA8B,GAElC,IACIA,OA5CkB1a,UACf2a,YACH,CACIva,cAAeH,IAyCF2a,CAAc3a,GACjC,MAAOkF,GACL,MAAMA,EAGV,MAAO,CAAE0V,kBAAmBH,GAGjB7a,+CAA2B,CACtCC,GAAI,2DACJC,OAAmC0a,EACnC/f,MA7BkCM,GAC3B,IAAIwf,EAA0Bxf,EAAUc,eAAeQ,gB,kCCjDlE,+CAQeuD,+CAA2B,CACtCE,OAA+BsB,eAC/B3G,MAAO,IAAMogB,YAA0B,O;;;;;ACKpC,MAAMC,EAA4B/a,MAAOtF,EAAyB0J,KACrE,IAAI4W,EACJ,MAAM/e,EAAYmI,EAAQtI,eAAeG,UAGzC,GAAIvB,EAAMugB,aAAaC,aAAexgB,EAAMugB,aAAaC,YAAYla,OAAS,EAC1Ega,EAAatgB,EAAMugB,aAAaC,YAAY,QACzC,GAAIjf,GAAaA,EAAU0C,UAAY1C,EAAU0C,SAASgT,gBAAkBwJ,KAAsBlf,EAAUyC,SAC/Gsc,GAAc/e,EAAUyC,aACrB,MAAIzC,GAAaA,EAAU+W,YAAc/W,EAAU+W,WAAWhS,OAAS,GAI1E,MAAM,IAAI5F,MAAM,kDAHhB4f,GAAc/e,EAAU+W,WAAW,GAKvC5O,EAAQiB,UAAUE,MAAM,oDAAoDyV,GAC5E,MAAMI,EAA+C,CACjDC,QAAS,CACLlU,WAAYzM,EAAM6D,UAClBvB,WAAYtC,EAAMqC,WAEtBue,YAAa,CAACN,GACdO,mBAAmB,GAGvB,OAAOC,YACH,CAAEpb,cAAegE,EAASjD,oBAAqB,CAAE9F,OAAQ,CAAEC,IAAKZ,EAAMugB,aAAapX,UAAY,MAC/FuX,GAECtZ,KAAM2F,IACHrD,EAAQiB,UAAUE,MAAM,gDAAiDkC,GAClEgU,YAAoBhU,EAAUrD,EAAQtI,eAAeQ,eAE/D4I,MAAMC,IAEH,MADAf,EAAQiB,UAAUF,MAAM,2CAA2CA,GAC7D,IAAI/J,MAAM+J,MAIfuW,EAAkC7b,YAA2B,CACtEE,OAAwCgb,EACxCjb,GAAI,6C,qPC3CF,MAAO6b,EAETpc,YAAY7E,GAIL,KAAAwI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,uBACpB,KAAAC,mBAAqB,IAAM,uBAC3B,KAAAC,cAAgB,IAA0B,OAP7CC,KAAKlF,MAAQA,GAoBd,MAAMkhB,EAA4B,CACrC/c,EADqC,KAGhB,IADrB,WAAEgd,EAAF,WAAcC,EAAd,mBAA0BC,EAA1B,cAA8CC,EAA9C,iBAA6DC,GACxC,EACrB,OAAO,IAAIN,EACPO,YACIL,EACAC,EACAE,EACAD,EACAE,KAKLjc,eAAemc,EAClBzhB,EACAuF,GAEA,OAAOvF,EAAMA,MAAM0I,QAAQnD,GAGhBkD,uCAAoC,CAC/CpD,OAA0Doc,EAC1DzhB,MAAOkhB,K,uxBChDJ,MAAMQ,EAKT7c,YAAYvD,EAAmBuC,EAAmBiB,GAM3C,KAAAC,YAAc,IAAM,+BACpB,KAAAC,mBAAqB,IAAM,oCAC3B,KAAAC,cAAgB,IAAiB,OAPpCC,KAAK5D,UAAYA,EACjB4D,KAAKrB,UAAYA,EACjBqB,KAAKJ,wBAA0BA,GAA2B,IAkEnDK,+CAA2B,CACtCC,GAAI,gFACJC,OA3CJC,eACItF,EACAuF,GAEA,MAAM4E,EAAuB,IAAIvF,uBAAqB5E,EAAMsB,UAAWtB,EAAM6D,UAAW7D,EAAM8E,yBAExFoF,QAA4CE,kBAAmBD,EAAsB5E,GAE3F,GAAI2E,GAAiBA,EAAcnE,YAAcmE,EAAcnE,WAAWO,OAAS,EAAG,CAClF,MAAMqb,EAAkC,GAExC,IAAK,MAAM3b,KAAakE,EAAcnE,WAAY,CAC9C,MAAM6b,QAAwBC,YAC1B,CAAEnc,cAAeH,EAAKkB,oBAAqB,IAC3CyD,EAAc4X,gBAAkB5X,EAAc4X,gBAAkB5X,EAAcvH,SAC9E3C,EAAM6D,UACNmC,EAAUI,mBACVpG,EAAM8E,wBAAwByJ,OAAO4L,GAASA,EAAM/T,qBAAuBJ,EAAUI,oBAErF,MAGE2b,EAAa,OACZ/b,GADY,IAEfgc,gBAAiBJ,IAGrBD,EAAQ/Q,KAAKmR,GAGjB,OAAOJ,EAGX,MAAO,IAWP3hB,MAzD6CM,IAC7C,MAAMgB,EAAYH,YAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIogB,GAAsCpgB,GAAYhB,EAAUc,eAAeQ,YAAYiC,UAAW,IAE7G,MAAM,IAAInD,MAAM,wG,ySCLxB,IAAWuhB,GAAX,SAAWA,GACPA,WACAA,WAFJ,CAAWA,MAAe,KAK1B,MAmEMC,EAAsB5c,MAAO6c,EAAgDniB,EAAyB0J,KACxG,IAAIwL,EAAuB,GAE3B,GAAIlV,EAAMugB,aAAa6B,YAAa,CAChC,MAAMrJ,OAlCEzT,WACZ,IAAIyT,EACJ,GAAIxT,EAAInE,gBAAkBmE,EAAInE,eAAeihB,QAAS,CAClD,MAEMC,GAFU/c,EAAInE,gBAAkBmE,EAAInE,eAAeihB,SAC9BE,gBACQ5D,MAAM,KACzC,GAAI2D,GAA8C,IAA3BA,EAAgBhc,SAE9Bf,EAAInE,eAAewF,KAAKC,iBAAmByb,EAAgB,KAAOL,EAAgBO,OACjFjd,EAAInE,eAAewF,KAAKC,iBAAmByb,EAAgB,KAAOL,EAAgBQ,MACtF,CACE,MAAMC,QAAiBzX,YAAU,CAAEvF,cAAeH,GAAO+c,EAAgB,IACrEI,GAAYA,EAASnW,KACrBwM,EAAO2J,IAKvB,OAAO3J,GAgBgB4J,CAAQjZ,GAC3B,GAAIqP,GAAQA,EAAK6J,UAAW,CACxB,MACMC,EADiB9J,EAAK6J,UAAUrU,OAAOmJ,QAAiCnT,IAAtBmT,EAAQhV,WAC1B8B,IAAIvC,GAAWA,EAAQS,WAC7DgH,EAAQiB,UAAUE,MAAM,qBAAqBgY,GAEzCA,GAAkBA,EAAevc,OAAS,IAG1C4O,EAAa2N,SAGlB,GAAI7iB,EAAMugB,aAAauC,qBAAuB9iB,EAAMugB,aAAarL,YAAuD,IAAzClV,EAAMugB,aAAarL,WAAW5O,OAAc,CAC9H,MAAM/E,EAAYmI,EAAQtI,eAAeG,UAErCA,GAAaA,EAAUyC,UAAYzC,EAAU0C,UAAY1C,EAAU0C,SAASgT,gBAAkB8L,MAC9F7N,EAAa,EAAE3T,EAAUyC,gBAIzBhE,EAAMugB,aAAarL,YAAclV,EAAMugB,aAAarL,WAAW5O,OAAS,IACxE4O,EAAa,CAAClV,EAAMugB,aAAarL,WAAW,KAIpDiN,EAAuBa,WAAa9N,GAI3B+N,EAAkC3d,MAAOtF,EAAyB0J,KAE3E,MAAMsB,EACFtB,EAAQtI,gBAAkBsI,EAAQtI,eAAewF,MAAQ8C,EAAQtI,eAAewF,KAAKoE,sBACzF,GAAIhL,EAAMugB,aAAa2C,uBAAyBC,MAAuBnY,EACnE,MAAO,GAGX,MAAMmX,EAAiD,GACjDiB,EAAyB,CAAE1d,cAAegE,EAASjD,oBAAqB,CAAE9F,OAAQ,CAAEC,IAAKZ,EAAMugB,aAAapX,UAAY,MAG9H,IAAIka,EAkBJ,OApBAlB,EAAuB7f,UAAYtC,EAAMqC,UAGrCrC,EAAMugB,aAAa2C,qBACnBG,EAAuBrjB,EAAMugB,aAAa2C,qBA3HxBI,KACtB,MAAM,IAAI5iB,MAAM,SAAS4iB,0EA4HrBC,CAAiB,4CA1GI,EAACpB,EAAgDniB,EAAyB0J,KACnG,IAAI8W,EAAwB,GAE5B,GAAIxgB,EAAMugB,aAAauC,qBAAuB9iB,EAAMugB,aAAaC,aAAyD,IAA1CxgB,EAAMugB,aAAaC,YAAYla,OAAc,CACzH,MAAM/E,EAAYmI,EAAQtI,eAAeG,UAErCA,GAAaA,EAAU0C,UAAY1C,EAAU0C,SAASgT,gBAAkBwJ,KACpElf,EAAUyC,WACVwc,EAAc,EAAEjf,EAAUyC,gBAK9BhE,EAAMugB,aAAaC,aAAexgB,EAAMugB,aAAaC,YAAYla,OAAS,IAC1Eka,EAAcxgB,EAAMugB,aAAaC,aAIzC2B,EAAuBvB,YAAcJ,GA2FrCgD,CAAqBrB,EAAwBniB,EAAO0J,SAC9CwY,EAAoBC,EAAwBniB,EAAO0J,IAEpD1J,EAAMugB,aAAakD,iBAAmBJ,IAAyBF,MAAuBnY,IACvFmX,EAAuBuB,sBAAwB1Y,EAC/CoY,EAAaO,YAAc,OAG/Bja,EAAQiB,UAAUE,MAAM,4BAA4ByP,KAAKa,UAAUgH,IAG5DyB,YAAiBR,EAAcC,EAAsBlB,GACvD/a,KAAK9B,UACF,GAAIue,EAAqB,CACrB,MAAMtT,EAAgC,GAChCuT,EAA0B,GAEhC,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAoBvd,OAAQyd,IAAK,CACjD,MAAMrM,EAAUmM,EAAoBE,GAEhCrM,EAAQsM,WAA0C,IAA7BtM,EAAQuM,mBAC7B1T,EAAcwT,GAAK,IAAI3O,gBAAcsC,EAAQsM,UAAWta,EAAQtI,eAAeQ,aAC/EkiB,EAAcC,GAAKrM,EAAQsM,WAOnC,GAJAta,EAAQiB,UAAUE,MAAM,0CAA0C7K,EAAMugB,aAAa2C,sBACrFxZ,EAAQiB,UAAUE,MAAM,gCAAgCiZ,EAAcxd,QACtEoD,EAAQiB,UAAUE,MAAM,uBAAwBiZ,GAE5CvT,EAAcjK,OAAQ,CAEtB,GACI4d,MACIA,SAAcxa,EAAQtI,eAAeQ,YAAYuiB,2BAA6B,GAxJ9C,UA2JtC,CACE,MAAMC,EAAoB7T,EAAc/L,IAAI2V,GAASA,EAAM7Y,WACrDof,EAA+C,CACjD2D,IAAKD,EACLzD,QAAS,CACLlU,WAAY/C,EAAQtI,eAAeQ,YAAYiC,UAC/CvB,WAAYoH,EAAQtI,eAAeQ,YAAYS,WAEnDue,YAAauB,GAA0BA,EAAuBvB,aAAeuB,EAAuBvB,YAAYta,OAAS,EAAI6b,EAAuBvB,YAAc,GAClKC,mBAAmB,GAEvB,IACI,IAAIyD,QAA6BxD,YAAsB,CAAEpb,cAAegE,GAAWgX,GAInF,GADAhX,EAAQiB,UAAUE,MAAM,kCAAmCyP,KAAKa,UAAUmJ,IACtEA,EAAqBhe,OAAS,EAG9B,OAFAya,YAAoBuD,EAAsB5a,EAAQtI,eAAeQ,aACjE0iB,EAAuBC,YAA0BH,EAASE,GACnDA,EAEb,MAAOpjB,GAELwI,EAAQiB,UAAUF,MAAM,4CAA4CvJ,IAK5E,MAAMsjB,EAAwBC,YAC1B,CAAE/e,cAAegE,GACjB6G,EAAc/L,IAAIkgB,GAAgBA,EAAapjB,YAGnD,OAAO+T,EAAkB9E,EAAe7G,GAAStC,KAAM2F,IACnDgU,YAAoBhU,EAAUrD,EAAQtI,eAAeQ,aACrDmL,EAAWwX,YACPhU,EAAc/L,IAAI2V,GAASA,EAAM7Y,WACjCyL,GAEGyX,EAAsBpd,KAAKud,IAC9BA,EAAenU,QAAQoU,IACnB,MAAMC,EACF9X,EAAS7G,KAAK4e,GAAiBA,EAAcniB,WAAaiiB,EAAcliB,WAExEmiB,IACAA,EAAeE,aAAeH,EAAcG,aAC5CF,EAAeG,cAAgBJ,EAAcI,iBAI9CjY,OAKvB,MAAO,KAGVvC,MAAOC,IAEJ,MADAf,EAAQiB,UAAUF,MAAM,iDAAiDA,GACnE,IAAI/J,MAAM+J,MAIfwa,EAAwC9f,YAA2B,CAC5EE,OAAwC4d,EACxC7d,GAAI,mD,kCC9PR,kGAOO,SAAS8f,EAA+BhlB,GAC3C,OAAO,IAAI0V,eAAmC,sBAAuB1V,EAAQ,4BAOlEiF,+CAA2B,CACtCE,OAAuCwQ,mBACvC7V,MAN2C,IACpCklB,EAA+B,CAACC,UAAW,iB,iHCX/C,MAAMC,EAAsB,GAEnCA,EAAoB,4CAA8C,CACtDC,EAAG/f,SAAY,+DAIfggB,GAAI,iCAEhBF,EAAoB,uDAAyD,CACjEC,EAAG/f,SAAY,8DAIfggB,GAAI,4CAEhBF,EAAoB,+CAAiD,CACzDC,EAAG/f,SAAY,iCAIfggB,GAAI,oCAEhBF,EAAoB,wDAA0D,CAClEC,EAAG/f,SAAY,+DAIfggB,GAAI,6CAEhBF,EAAoB,sDAAwD,CAChEC,EAAG/f,SAAY,+DAIfggB,GAAI,2CAEhBF,EAAoB,0CAA4C,CACpDC,EAAG/f,SAAY,8EAIfggB,GAAI,+BAEhBF,EAAoB,sFAAwF,CAChGC,EAAG/f,SAAY,iCAIfggB,GAAI,4CAEhBF,EAAoB,0EAA4E,CACpFC,EAAG/f,SAAY,sEAIfggB,GAAI,gCAEhBF,EAAoB,8EAAgF,CACxFC,EAAG/f,SAAY,sEAIfggB,GAAI,oCAEhBF,EAAoB,6FAA+F,CACvGC,EAAG/f,SAAY,kCAIfggB,GAAI,mDAEhBF,EAAoB,sEAAwE,CAChFC,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBF,EAAoB,mEAAqE,CAC7EC,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBF,EAAoB,gEAAkE,CAC1EC,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBF,EAAoB,8DAAgE,CACxEC,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBF,EAAoB,oEAAsE,CAC9EC,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBF,EAAoB,0EAA4E,CACpFC,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBF,EAAoB,mEAAqE,CAC7EC,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBF,EAAoB,iEAAmE,CAC3EC,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBF,EAAoB,+EAAiF,CACzFC,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBF,EAAoB,kEAAoE,CAC5EC,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBF,EAAoB,oEAAsE,CAC9EC,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBF,EAAoB,iGAAmG,CAC3GC,EAAG/f,SAAY,8DAIfggB,GAAI,+DAEhBF,EAAoB,8FAAgG,CACxGC,EAAG/f,SAAY,8DAIfggB,GAAI,6D,mGC7EhB9d,+BAAqB,CACjBC,SAAU,wDACVC,eAlDwBpC,MAAOqC,EAAwCoR,EAAqBlR,KAC5F,GAAImE,QAAUA,OAAOC,WAAaD,OAAOC,UAAUtB,UAAW,CAC1D,MAAMqO,EAAapT,MAAMC,QAAQkT,GAAQA,EAAK,GAAKA,EAC7CwM,EAA8B1d,EAAczG,eAAe8G,cAAcsd,mBACzEC,EAAmB5d,EAAczG,eAAe8G,cAAcud,WAC9DC,EAA0C7d,EAAczG,eAAe8G,cAAcE,iBAAekE,UACpGqZ,EAA+B,GACrC,IAAIC,EAAkC,GAGtC,GAAIL,GAAqBE,GAAcA,EAAW7C,YAC9C6C,EAAW7C,UAAUpS,QAASqV,KAEtBA,EAASnjB,YAC8D,IAAvE6iB,EAAkBO,QAAQD,EAASE,OAASF,EAASE,OAAS,KAE1DL,GACAA,EAAmB3Y,UACnB2Y,EAAmB3Y,SAASiZ,KAAK/jB,IAAYA,EAAQkG,aAAe0d,EAASnjB,YAGjFijB,EAAiB/U,KAAKiV,KAI1BF,EAAiBrf,OAAS,GAC1B,IACIsf,QAAwBvZ,YAAiCsZ,EAAkB9d,GAC7E,MAAO4C,GACL5C,EAAc8C,UAAUF,MAAM,sEAAuEA,GAM7Gkb,GAAoBA,EAAiBrf,OAAS,EAC9C0F,OAAOC,UAAUtB,UAAUqC,SAAS5E,iBAAe6d,eAAgB,CAC/D7M,OAAQJ,EAAWzM,GACnB8M,YAAaL,EAAWM,QAAUN,EAAWM,QAAQ5M,WAAa,GAClEK,SAAU6Y,EACVhR,QAASoE,EAAWO,YAAcP,EAAWO,YAAY7M,WAAa,KAG1E7E,EAAc8C,UAAUE,MAAM,gEAQtCvC,cA5EyBhD,MAAOkU,EAAuC3R,KACvE,IACI,MAAM4R,EAAc7T,MAAMC,QAAQ2T,GAA+BA,EAAO,GAA0BA,EAGlG,GAAIC,EAAYC,aAAkD,mBAA5BD,EAAYC,YAA4B,CAC1E,MAAMwM,EAAwBzM,EAAYC,cAC1C,GAAIwM,GAAyBA,EAAsBC,YAG/C,YADAte,EAAczG,eAAe8G,cAAcsd,mBAAqBU,EAAsBC,aAI9Fte,EAAc8C,UAAUE,MAAM,4EAChC,MAAO3J,GACL2G,EAAc8C,UAAUE,MAAM,8CAA+C3J,Q,qPCnB/E,SAAUklB,EACdlmB,GAEA,OAAO,IAAI0V,eAAqB,qBAAsB1V,EAAQ,UASjDiF,2CAA2B,CACxCE,OAAyBwQ,mBACzB7V,MAPAM,GAEO8lB,EAAkC,MCdrC,MAAOC,EAITxhB,YAAYvD,EAA4BuC,GAKjC,KAAAkB,YAAc,IAAM,iBAAiBG,KAAK5D,aAAa4D,KAAKrB,YAC5D,KAAAmB,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAK5D,UAAiC,iBAAdA,GAA0BA,EAAYA,EAC9D4D,KAAKrB,UAAYA,GAYlB,MAAMyiB,EACThmB,IAEA,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAI+kB,GAAoB/kB,GAAYhB,EAAUc,eAAeQ,YAAYiC,WAEhF,MAAM,IAAInD,MAAM,sFAOjB4E,eAAeihB,EAClBvmB,EACAuF,GAEA,MAAM4E,EAAuB,IAAIvF,uBAAqB5E,EAAMsB,UAAWtB,EAAM6D,WACvE5B,QAAgBmI,6BAAmBD,EAAsB5E,GACzD+J,QAA6BkX,YAA6B,CAAE9gB,cAAeH,IAG/EtD,GACCA,EAAQQ,SAAW6M,EAAqBmX,sBAEnCC,EACJN,EAAkC,WAClC7gB,GAUOJ,+CAA2B,CACtCE,OAAuBkhB,EACvBvmB,MAAOsmB,K,oSC7CL,MAAOK,EAAb9hB,cACuB,KAAA+hB,cAA8C,KAC9C,KAAAC,eAAwC,GACxC,KAAAC,eAAqC,KACrC,KAAAC,kBAAmC,KAEnC,KAAA5d,SAAmB,GACnB,KAAAlF,SAAyB,WANhC8X,sBAAXE,KAAW,oCACAF,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,wCACAF,sBAAXE,KAAW,wCACAF,sBAAXE,KAAW,+BACAF,sBAAXE,KAAW,+BAMV,MAAO+K,EAAbniB,cACW,KAAAE,YAAc,IAAM,gBACpB,KAAAC,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAAiB,WAGrCK,eAAe2hB,EAClBjnB,EACAuF,GAEA,OAAO,IAAIohB,EAMR,MAAMO,EACT5mB,GAEO,IAAI0mB,EAMA7hB,+CAA0C,CACrDE,OAAgC4hB,EAChCjnB,MAAOknB,K,snBC4QH,MAAOC,EAqDTtiB,YAAYuiB,GA8CV,GA7CFA,EAAcA,GAAe,GAEvBliB,KAAKic,WAAaiG,EAAYjG,WAG9Bjc,KAAK9B,WAAagkB,EAAYhkB,WAG9B8B,KAAKmiB,SAAWD,EAAYC,SAG5BniB,KAAKmc,mBAAqB+F,EAAY/F,mBAGtCnc,KAAKoiB,iBAAmBF,EAAYE,iBAGpCpiB,KAAKqiB,gBAAkBH,EAAYG,gBAGnCriB,KAAKsiB,aAAeJ,EAAYI,aAGhCtiB,KAAKuiB,aAAeL,EAAYK,aAGhCviB,KAAKwiB,aAAeN,EAAYM,aAGhCxiB,KAAKyiB,aAAeP,EAAYO,aAGhCziB,KAAK0iB,KAAOR,EAAYQ,KAGxB1iB,KAAK2iB,MAAQT,EAAYS,MAGzB3iB,KAAK4iB,QAAUV,EAAYU,QAG3B5iB,KAAK6iB,QAAUX,EAAYW,QAG/B7iB,KAAK8iB,yBAAsBzjB,EACvB6iB,EAAYY,oBAAqB,CACnC9iB,KAAK8iB,oBAAsB,GAC3B,IAAK,IAAIjE,EAAI,EAAGA,EAAIqD,EAAYY,oBAAoB1hB,OAAQyd,IAC1D,GAAIqD,EAAYY,oBAAoBjE,GACxC,GAAIqD,EAAYY,oBAAoBjE,GAAG,eAAgB,CACrD,IAAIkE,EAAoBb,EAAYY,oBAAoBjE,GAAG,eAC3DkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAK8iB,oBAAoBjE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYY,oBAAoBjE,UAG7F7e,KAAK8iB,oBAAoBjE,GAAK,IAAIsE,wBAAoCjB,EAAYY,oBAAoBjE,SAKlG7e,KAAK8iB,oBAAoBjE,QAAKxf,IAWpC,MAAO+jB,EAcTzjB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAKqjB,OAASnB,EAAYmB,OAG1BrjB,KAAKsjB,OAASpB,EAAYoB,QAQ9B,MAAOC,EAcT5jB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAKqjB,OAASnB,EAAYmB,OAG1BrjB,KAAKsjB,OAASpB,EAAYoB,QAgE9B,MAAOE,EAcT7jB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAKqjB,OAASnB,EAAYmB,OAG1BrjB,KAAKsjB,OAASpB,EAAYoB,QAQ9B,MAAOG,EAeT9jB,YAAYuiB,GAOV,GANFA,EAAcA,GAAe,GAEvBliB,KAAKqjB,OAASnB,EAAYmB,OAG9BrjB,KAAKsjB,YAASjkB,EACV6iB,EAAYoB,OAAQ,CACtBtjB,KAAKsjB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOliB,OAAQyd,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKsjB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnE7e,KAAKsjB,OAAOzE,GAAK,IAAI6E,EAAiCxB,EAAYoB,OAAOzE,SAKrE7e,KAAKsjB,OAAOzE,QAAKxf,IAuCvB,MAAOskB,EAcThkB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAKsjB,OAASpB,EAAYoB,OAG1BtjB,KAAK4jB,QAAU1B,EAAY0B,SAQ/B,MAAOC,EAeTlkB,YAAYuiB,GAKV,GAJFA,EAAcA,GAAe,GAEvBliB,KAAKqjB,OAASnB,EAAYmB,OAEH,OAAvBnB,EAAYoB,OAEdtjB,KAAKsjB,YAASjkB,OACT,GAAyC,MAArC6iB,EAAYoB,OAAO,eAC5BtjB,KAAKsjB,OAAS,IAAIQ,EAAqD5B,EAAYoB,YAC9E,CACL,IAAIP,EAAoBb,EAAYoB,OAAO,eAC3CP,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKsjB,OAAS,IAAIH,EAAcJ,GAAWb,EAAYoB,WAW3D,MAAOS,EAeTpkB,YAAYuiB,GAKV,GAJFA,EAAcA,GAAe,GAEvBliB,KAAKqjB,OAASnB,EAAYmB,OAEH,OAAvBnB,EAAYoB,OAEdtjB,KAAKsjB,YAASjkB,OACT,GAAyC,MAArC6iB,EAAYoB,OAAO,eAC5BtjB,KAAKsjB,OAAS,IAAIU,EAA4C9B,EAAYoB,YACrE,CACL,IAAIP,EAAoBb,EAAYoB,OAAO,eAC3CP,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKsjB,OAAS,IAAIH,EAAcJ,GAAWb,EAAYoB,WAW3D,MAAOW,EAcTtkB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAKkkB,QAAUhC,EAAYgC,QAG3BlkB,KAAK4jB,QAAU1B,EAAY0B,SAoC/B,MAAOO,EAWTxkB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAKhF,OAASknB,EAAYlnB,QAQ9B,MAAOopB,EAeTzkB,YAAYuiB,GAOV,GANFA,EAAcA,GAAe,GAEvBliB,KAAKqjB,OAASnB,EAAYmB,OAG9BrjB,KAAKsjB,YAASjkB,EACV6iB,EAAYoB,OAAQ,CACtBtjB,KAAKsjB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOliB,OAAQyd,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKsjB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnE7e,KAAKsjB,OAAOzE,GAAK,IAAIwF,EAAkCnC,EAAYoB,OAAOzE,SAKtE7e,KAAKsjB,OAAOzE,QAAKxf,IAWvB,MAAOilB,EAeT3kB,YAAYuiB,GAOV,GANFA,EAAcA,GAAe,GAEvBliB,KAAKqjB,OAASnB,EAAYmB,OAG9BrjB,KAAKsjB,YAASjkB,EACV6iB,EAAYoB,OAAQ,CACtBtjB,KAAKsjB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOliB,OAAQyd,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKsjB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnE7e,KAAKsjB,OAAOzE,GAAK,IAAIwF,EAAkCnC,EAAYoB,OAAOzE,SAKtE7e,KAAKsjB,OAAOzE,QAAKxf,IAWvB,MAAOklB,EAeT5kB,YAAYuiB,GAOV,GANFA,EAAcA,GAAe,GAEvBliB,KAAKqjB,OAASnB,EAAYmB,OAG9BrjB,KAAKsjB,YAASjkB,EACV6iB,EAAYoB,OAAQ,CACtBtjB,KAAKsjB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOliB,OAAQyd,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKsjB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnE7e,KAAKsjB,OAAOzE,GAAK,IAAIwF,EAAkCnC,EAAYoB,OAAOzE,SAKtE7e,KAAKsjB,OAAOzE,QAAKxf,IAWvB,MAAOmlB,EAeT7kB,YAAYuiB,GAOV,GANFA,EAAcA,GAAe,GAEvBliB,KAAKqjB,OAASnB,EAAYmB,OAG9BrjB,KAAKsjB,YAASjkB,EACV6iB,EAAYoB,OAAQ,CACtBtjB,KAAKsjB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOliB,OAAQyd,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKsjB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnE7e,KAAKsjB,OAAOzE,GAAK,IAAIwF,EAAkCnC,EAAYoB,OAAOzE,SAKtE7e,KAAKsjB,OAAOzE,QAAKxf,IAWvB,MAAOolB,EAeT9kB,YAAYuiB,GAOV,GANFA,EAAcA,GAAe,GAEvBliB,KAAKqjB,OAASnB,EAAYmB,OAG9BrjB,KAAKsjB,YAASjkB,EACV6iB,EAAYoB,OAAQ,CACtBtjB,KAAKsjB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOliB,OAAQyd,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKsjB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnE7e,KAAKsjB,OAAOzE,GAAK,IAAI6F,EAAkCxC,EAAYoB,OAAOzE,SAKtE7e,KAAKsjB,OAAOzE,QAAKxf,IAWvB,MAAOslB,EAeThlB,YAAYuiB,GAOV,GANFA,EAAcA,GAAe,GAEvBliB,KAAKqjB,OAASnB,EAAYmB,OAG9BrjB,KAAKsjB,YAASjkB,EACV6iB,EAAYoB,OAAQ,CACtBtjB,KAAKsjB,OAAS,GACd,IAAK,IAAIzE,EAAI,EAAGA,EAAIqD,EAAYoB,OAAOliB,OAAQyd,IAC7C,GAAIqD,EAAYoB,OAAOzE,GAC3B,GAAIqD,EAAYoB,OAAOzE,GAAG,eAAgB,CACxC,IAAIkE,EAAoBb,EAAYoB,OAAOzE,GAAG,eAC9CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKsjB,OAAOzE,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYoB,OAAOzE,UAGnE7e,KAAKsjB,OAAOzE,GAAK,IAAIwF,EAAkCnC,EAAYoB,OAAOzE,SAKtE7e,KAAKsjB,OAAOzE,QAAKxf,IAWvB,MAAOulB,EAcTjlB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAKhF,OAASknB,EAAYlnB,OAG1BgF,KAAK4jB,QAAU1B,EAAY0B,SAQ/B,MAAOE,EAeTnkB,YAAYuiB,GAKV,GAJFA,EAAcA,GAAe,GAEvBliB,KAAK4jB,QAAU1B,EAAY0B,QAEN,OAArB1B,EAAY2C,KAEd7kB,KAAK6kB,UAAOxlB,OACP,GAAuC,MAAnC6iB,EAAY2C,KAAK,eAC1B7kB,KAAK6kB,KAAO,IAAIC,EAAsC5C,EAAY2C,UAC7D,CACL,IAAI9B,EAAoBb,EAAY2C,KAAK,eACzC9B,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAK6kB,KAAO,IAAI1B,EAAcJ,GAAWb,EAAY2C,SAWzD,MAAOC,EAuBTnlB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAK+kB,sBAAwB7C,EAAY6C,sBAGzC/kB,KAAKqjB,OAASnB,EAAYmB,OAG1BrjB,KAAK6kB,KAAO3C,EAAY2C,KAGxB7kB,KAAKglB,SAAW9C,EAAY8C,SAG5BhlB,KAAKilB,eAAiB/C,EAAY+C,gBAQtC,MAAOjB,EAeTrkB,YAAYuiB,GAOV,GANFA,EAAcA,GAAe,GAEvBliB,KAAKklB,kBAAoBhD,EAAYgD,kBAGzCllB,KAAKmlB,WAAQ9lB,EACT6iB,EAAYiD,MAAO,CACrBnlB,KAAKmlB,MAAQ,GACb,IAAK,IAAItG,EAAI,EAAGA,EAAIqD,EAAYiD,MAAM/jB,OAAQyd,IAC5C,GAAIqD,EAAYiD,MAAMtG,GAC1B,GAAIqD,EAAYiD,MAAMtG,GAAG,eAAgB,CACvC,IAAIkE,EAAoBb,EAAYiD,MAAMtG,GAAG,eAC7CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKmlB,MAAMtG,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYiD,MAAMtG,UAGjE7e,KAAKmlB,MAAMtG,GAAK,IAAIiG,EAAsC5C,EAAYiD,MAAMtG,SAKxE7e,KAAKmlB,MAAMtG,QAAKxf,IAWtB,MAAOglB,EAoCT1kB,YAAYuiB,GA4BV,GA3BFA,EAAcA,GAAe,GAEvBliB,KAAKolB,eAAiBlD,EAAYkD,eAGlCplB,KAAKqlB,UAAYnD,EAAYmD,UAG7BrlB,KAAKslB,iBAAmBpD,EAAYoD,iBAGpCtlB,KAAKulB,UAAYrD,EAAYqD,UAG7BvlB,KAAKwlB,cAAgBtD,EAAYsD,cAGjCxlB,KAAKylB,cAAgBvD,EAAYuD,cAGjCzlB,KAAK0lB,gBAAkBxD,EAAYwD,gBAGnC1lB,KAAK2lB,mBAAqBzD,EAAYyD,mBAG1C3lB,KAAK4lB,WAAQvmB,EACT6iB,EAAY0D,MAAO,CACrB5lB,KAAK4lB,MAAQ,GACb,IAAK,IAAI/G,EAAI,EAAGA,EAAIqD,EAAY0D,MAAMxkB,OAAQyd,IAC5C,GAAIqD,EAAY0D,MAAM/G,GAC1B,GAAIqD,EAAY0D,MAAM/G,GAAG,eAAgB,CACvC,IAAIkE,EAAoBb,EAAY0D,MAAM/G,GAAG,eAC7CkE,EAAYA,EAAUC,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAK4lB,MAAM/G,GAAK,IAAIsE,EAAcJ,GAAWb,EAAY0D,MAAM/G,UAGjE7e,KAAK4lB,MAAM/G,GAAK,IAAIgH,EAAkC3D,EAAY0D,MAAM/G,SAKpE7e,KAAK4lB,MAAM/G,QAAKxf,IAWtB,MAAOwmB,EAiBTlmB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAK8lB,UAAY5D,EAAY4D,UAG7B9lB,KAAK3C,YAAc6kB,EAAY7kB,YAG/B2C,KAAK+lB,IAAM7D,EAAY6D,KAQ3B,MAAOrB,EAcT/kB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAKgmB,OAAS9D,EAAY8D,OAG1BhmB,KAAKimB,WAAa/D,EAAY+D,YA0ClC,MAAOvC,EA8ET/jB,YAAYuiB,GAuDV,GAtDFA,EAAcA,GAAe,GAEvBliB,KAAKkmB,kBAAoBhE,EAAYgE,kBAGrClmB,KAAKic,WAAaiG,EAAYjG,WAG9Bjc,KAAKmmB,aAAejE,EAAYiE,aAGhCnmB,KAAKomB,gBAAkBlE,EAAYkE,gBAGnCpmB,KAAKqmB,gBAAkBnE,EAAYmE,gBAGnCrmB,KAAKsmB,aAAepE,EAAYoE,aAGhCtmB,KAAKumB,aAAerE,EAAYqE,aAGhCvmB,KAAKwmB,WAAatE,EAAYsE,WAG9BxmB,KAAKilB,eAAiB/C,EAAY+C,eAGlCjlB,KAAKymB,iBAAmBvE,EAAYuE,iBAGpCzmB,KAAK0mB,sBAAwBxE,EAAYwE,sBAGzC1mB,KAAK2mB,gBAAkBzE,EAAYyE,gBAGnC3mB,KAAK4mB,aAAe1E,EAAY0E,aAGhC5mB,KAAK6mB,QAAU3E,EAAY2E,QAG3B7mB,KAAK8mB,iBAAmB5E,EAAY4E,iBAGpC9mB,KAAKmc,mBAAqB+F,EAAY/F,mBAGtCnc,KAAK+mB,iBAAmB7E,EAAY6E,iBAGxC/mB,KAAKkc,gBAAa7c,EACd6iB,EAAYhG,WAAY,CAC1Blc,KAAKkc,WAAa,GAClB,IAAK,IAAI2C,EAAI,EAAGA,EAAIqD,EAAYhG,WAAW9a,OAAQyd,IAAK,CACtD,GAAIqD,EAAYhG,WAAW2C,GAC/B,GAAIqD,EAAYhG,WAAW2C,GAAG,eAE5BkE,GADIA,EAAoBb,EAAYhG,WAAW2C,GAAG,gBAC5BmE,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKkc,WAAW2C,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYhG,WAAW2C,UAG3E7e,KAAKkc,WAAW2C,GAAK,IAAImI,EAAyB9E,EAAYhG,WAAW2C,SAKrE7e,KAAKkc,WAAW2C,QAAKxf,GAO3B,GADAW,KAAKoc,mBAAgB/c,EACjB6iB,EAAY9F,cAAe,CAC7Bpc,KAAKoc,cAAgB,GACrB,IAASyC,EAAI,EAAGA,EAAIqD,EAAY9F,cAAchb,OAAQyd,IAAK,CACzD,GAAIqD,EAAY9F,cAAcyC,GAClC,GAAIqD,EAAY9F,cAAcyC,GAAG,eAE/BkE,GADIA,EAAoBb,EAAY9F,cAAcyC,GAAG,gBAC/BmE,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKoc,cAAcyC,GAAK,IAAIsE,EAAcJ,GAAWb,EAAY9F,cAAcyC,UAGjF7e,KAAKoc,cAAcyC,GAAK,IAAIoI,EAA4B/E,EAAY9F,cAAcyC,SAK9E7e,KAAKoc,cAAcyC,QAAKxf,GAO9B,GADAW,KAAKknB,wBAAqB7nB,EACtB6iB,EAAYgF,mBAAoB,CAClClnB,KAAKknB,mBAAqB,GAC1B,IAASrI,EAAI,EAAGA,EAAIqD,EAAYgF,mBAAmB9lB,OAAQyd,IAAK,CAC9D,GAAIqD,EAAYgF,mBAAmBrI,GACvC,GAAIqD,EAAYgF,mBAAmBrI,GAAG,eAEpCkE,GADIA,EAAoBb,EAAYgF,mBAAmBrI,GAAG,gBACpCmE,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKknB,mBAAmBrI,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYgF,mBAAmBrI,UAG3F7e,KAAKknB,mBAAmBrI,GAAK,IAAIsI,EAAiCjF,EAAYgF,mBAAmBrI,SAK7F7e,KAAKknB,mBAAmBrI,QAAKxf,GAUnC,GAJIW,KAAKonB,mBAAqBlF,EAAYkF,mBAG1CpnB,KAAKqnB,qBAAkBhoB,EACnB6iB,EAAYmF,gBAAiB,CAC/BrnB,KAAKqnB,gBAAkB,GACvB,IAASxI,EAAI,EAAGA,EAAIqD,EAAYmF,gBAAgBjmB,OAAQyd,IAAK,CAG7D,IAAIkE,EAFF,GAAIb,EAAYmF,gBAAgBxI,GACpC,GAAIqD,EAAYmF,gBAAgBxI,GAAG,eAEjCkE,GADIA,EAAoBb,EAAYmF,gBAAgBxI,GAAG,gBACjCmE,OAAOD,EAAUE,YAAY,KAAO,GAAGC,OAAO,SAChEC,EAAcJ,KAChB/iB,KAAKqnB,gBAAgBxI,GAAK,IAAIsE,EAAcJ,GAAWb,EAAYmF,gBAAgBxI,UAGrF7e,KAAKqnB,gBAAgBxI,GAAK,IAAIyI,EAA8BpF,EAAYmF,gBAAgBxI,SAKpF7e,KAAKqnB,gBAAgBxI,QAAKxf,KAWhC,MAAO2nB,EAiBTrnB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAKunB,MAASrF,EAAYqF,MAASrU,SAASgP,EAAYqF,MAAO,IAAM,EAGrEvnB,KAAKwnB,cAAgBtF,EAAYsF,cAGjCxnB,KAAKynB,UAAYvF,EAAYuF,WAQjC,MAAOR,EAmCTtnB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAK0nB,mBAAsBxF,EAAYwF,mBAAsBxU,SAASgP,EAAYwF,mBAAoB,IAAM,EAG5G1nB,KAAK8E,KAAOod,EAAYpd,KAGxB9E,KAAK2nB,cAAgBzF,EAAYyF,cAGjC3nB,KAAK4nB,QAAU1F,EAAY0F,QAG3B5nB,KAAK0iB,KAAOR,EAAYQ,KAGxB1iB,KAAK2iB,MAAQT,EAAYS,MAGzB3iB,KAAK6nB,UAAY3F,EAAY2F,UAG7B7nB,KAAK8nB,QAAU5F,EAAY4F,QAG3B9nB,KAAKynB,UAAYvF,EAAYuF,WAQjC,MAAON,EAoBTxnB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAKzC,OAAS2kB,EAAY3kB,OAG1ByC,KAAK+nB,SAAW7F,EAAY6F,SAG5B/nB,KAAK+lB,IAAM7D,EAAY6D,IAGvB/lB,KAAKgoB,QAAU9F,EAAY8F,SAQ/B,MAAOV,EAoBT3nB,YAAYuiB,GACZA,EAAcA,GAAe,GAEvBliB,KAAKgoB,QAAU9F,EAAY8F,QAG3BhoB,KAAKioB,UAAY/F,EAAY+F,UAG7BjoB,KAAKkoB,QAAWhG,EAAYgG,mBAAmBC,KAAQjG,EAAYgG,QAC5DhG,EAAYgG,QAAWE,YAAiClG,EAAYgG,QAAS,sBAAsB,QAAU7oB,EAGpHW,KAAKzC,OAAS2kB,EAAY3kB;;;;;;ECp2D5B,SAAU8qB,EACZtqB,EAEIuqB,EAEAC,GAIN,OAbW,IAAIC,oBAaFC,qCACT,6BACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,6DACpC,CACAzqB,WAAYH,EACVke,WAAYqM,EACZM,YAAaL,IAsBf,SAAUM,EACZ9qB,EAEIuqB,EAEAQ,GAIN,OAbW,IAAIN,oBAaFC,qCACT,8BACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,8DACpC,CACAzqB,WAAYH,EACVke,WAAYqM,EACZS,aAAcD,IAwGhB,SAAUxM,EACZgM,EAEIU,EAEAC,EAEAC,EAEAC,GAIN,OAjBW,IAAIX,oBAiBFC,qCACT,wBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,wDACpC,CACA1M,WAAYqM,EACVpM,WAAY8M,EACZ5M,cAAe6M,EACf9M,mBAAoB+M,EACpB7M,iBAAkB8M,IA0BpB,SAAU/iB,EACZrI,GAIF,OATW,IAAIyqB,oBASFC,qCACT,yBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,yDACpC,CACAzqB,WAAYH,IAsDZ,SAAUqrB,EACZC,EAEIC,EAEAC,EAEAC,GAIN,OAfW,IAAIhB,oBAeFC,qCACT,kBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,kDACpC,CACAc,gBAAiBJ,EACfK,eAAgBJ,EAChBK,SAAUJ,EACVK,UAAWJ,IAwBb,SAAUK,EACZC,EAEIC,EAEAC,GAIN,OAbW,IAAIxB,oBAaFC,qCACT,mCACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,mEACpC,CACA9D,KAAMiF,EACJG,YAAaF,EACbG,SAAUF,IAsBZ,SAAUvmB,IAId,OARW,IAAI+kB,oBAQFC,qCACT,wBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,wDACpC,IAkBA,SAAUwB,EACZC,EAEIC,EAEAC,EAEAC,EAEAC,GAIN,OAjBW,IAAIhC,oBAiBFC,qCACT,qBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,qDACpC,CACA8B,cAAeL,EACbM,SAAUL,EACVM,MAAOL,EACPxlB,KAAMylB,EACN3C,QAAS4C,IAmEX,SAAUI,EACZ7sB,EAEIuqB,EAEAuC,GAIN,OAbW,IAAIrC,oBAaFC,qCACT,kBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,mDACpC,CACAzqB,WAAYH,EACVke,WAAYqM,EACZN,QAAS6C,IAmFX,SAAUC,EACZC,EAEIhtB,GAIN,OAXW,IAAIyqB,oBAWFC,qCACT,sBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,sDACpC,CACAqC,eAAgBD,EACd7sB,WAAYH,IAoBd,SAAUktB,EACZF,EAEIhtB,GAIN,OAXW,IAAIyqB,oBAWFC,qCACT,qBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,qDACpC,CACAqC,eAAgBD,EACd7sB,WAAYH,IAoBd,SAAUmtB,EACZH,EAEIhtB,GAIN,OAXW,IAAIyqB,oBAWFC,qCACT,sBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,sDACpC,CACAqC,eAAgBD,EACd7sB,WAAYH,IAoBd,SAAUotB,EACZJ,EAEIK,EAEAC,EAEAC,EAEAC,EAEAxtB,EAEAytB,GAIN,OArBW,IAAIhD,oBAqBFC,qCACT,sBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,sDACpC,CACAqC,eAAgBD,EACdzF,iBAAkB8F,EAClB5F,cAAe6F,EACfI,sBAAuBH,EACvB/F,UAAWgG,EACXrtB,WAAYH,EACZ2tB,OAAQF,IA8BV,SAAUG,EACZ5tB,GAIF,OATW,IAAIyqB,oBASFC,qCACT,qBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,qDACpC,CACAzqB,WAAYH,IAkBZ,SAAU6tB,EACZ7tB,GAIF,OATW,IAAIyqB,oBASFC,qCACT,oBACA,EACEC,EAEF,QACA,CAAEjK,YAAa,MAAOkK,aAAc,oDACpC,CACAzqB,WAAYH,IAqBZ,SAAU8tB,EAA0BC,GAE1C,OARI,SAAgDxD,GAChD,MAAMtf,EAAOsf,EAAc,CAAErM,WAAYqM,GAAc,KACvD,OAAO,IAAIE,mBAAiB,oCAAqC,0BAA2BE,EAA2D1f,GAK7I+iB,GACDtD,qCAAqC,kBAAkB,EAAMC,EAA6D,QAAS,CAACjK,YAAa,MAAOkK,aAAc,kDAAmD,CAACmD,WAAYA,M,iOCn0BhP,MAAME,EAGTrsB,YAAYjD,GAIL,KAAAmD,YAAc,IAAMrB,YAAc,qBAAsBwB,KAAKtD,aAC7D,KAAAoD,mBAAqB,IAAM,qBAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKtD,YAAcA,GAQ3B,MAKMuvB,EAAyBC,mBAAiBC,YAAc,OAKvD/rB,eAAegsB,EAAgBtxB,EAA6BuF,GAE/D,GADegsB,IAAOC,IAAIL,IAAmB,GACjC,CACR,MACM1L,SADyBgM,YAAalsB,IACRwT,KAGpC,GAAI0M,GAAcjO,OAAOC,KAAKgO,GAAYnf,OAAS,EAAG,CAClD,MAAMorB,QAAqBC,YAAU,CAAEjsB,cAAeH,GAAOkgB,EAAWlZ,GAAI,GAE5E,GAAImlB,EACA,OAAO9rB,MAAMC,QAAQ6rB,GAAgBA,EAAa,GAAKA,OAG3DnsB,EAAI8B,MAAM,+EAIlB,MAAa,GAGFlC,+CAA2B,CACtCC,GAAI,8DACJC,OAAuBisB,EACvBtxB,MAlCiBM,GACV,IAAI4wB,EAAqB5wB,EAAUc,eAAeQ,gB,4OCX7D,MAAMgwB,EAAwB,CAAC,gBAAiB,uBAAwB,kBAAmB,qBAAsB,wBAAyB,YAM7HC,EAA0BzwB,IACnC,MAAM0wB,EAAyBC,EAAuC,WAAY3wB,GAClF,OAAK0wB,GAA2BA,EAAuBxrB,OAIzBwrB,EAAuBttB,IAAKwtB,IACtD,IACI,MAAMC,EAAqC,GAK3C,OAJAL,EAAsBphB,QAAQ,CAAC0hB,EAAYle,KAEvCie,EAAcC,GAAcF,EAAkBhe,KAE3Cie,EACT,MAAM/wB,GACJ,UAELqN,OAAOC,SAdC,IAyCF2jB,EAAmB,CAACC,EAAcC,EAAkCC,EAA+B1e,SAE3FrP,IAAb8tB,GACKA,EAAS/rB,OAGV8rB,EAAQG,aAAaC,IAAI,WAAYlY,KAAKa,UA1BrBkX,KAC7B,MAAMI,EAA4C,GAWlD,OATAJ,EAAS7hB,QAASkiB,IACd,MAAMV,EAAyC,GAC/CJ,EAAsBphB,QAAS0hB,IAE3BF,EAAkBphB,KAAK8hB,EAAQR,MAEnCO,EAAmB7hB,KAAKohB,KAGrBS,GAcqDE,CAAiBN,KAFrED,EAAQG,aAAaK,OAAO,YAMhCR,EAAQG,aAAaK,OAAO,QACrBR,EAAQ3f,WAGIlO,IAAnB+tB,GACIA,EAAehsB,OAGf8rB,EAAQG,aAAaC,IAAI,UAAWlY,KAAKa,UAAUmX,IAFnDF,EAAQG,aAAaK,OAAO,WAMhCR,EAAQG,aAAaK,OAAO,QACrBR,EAAQ3f,OAGfmB,GACAwe,EAAQG,aAAaC,IAAI,OAAQ5e,EAAUlH,YAGxC0lB,EAAQ3f,MAQNsf,EAAkB,CAAI7jB,EAAa9M,IACzCA,EAAeC,OAASD,EAAeC,MAAM6M,GAClCoM,KAAKC,MAAMsY,mBAAmBzxB,EAAeC,MAAM6M,KAE1D,KAOE4kB,EAAiB1xB,GACvBoa,UAASC,UACD,IAAIsX,IAAI/mB,OAAOgnB,SAASvgB,MAG3BrR,EAAewc,IAAIb,WAAWtK,KACvB,IAAIsgB,IAAI3xB,EAAewc,IAAIb,WAAWtK,MAEtC,IAAIsgB,IAAsB3xB,EAAewc,IAAIb,a,yvBCpFzD,MAAMkW,EAUTpuB,YACIZ,EACArC,EACA6E,EACA4rB,EACAzb,EACAsc,EACAC,EACAvvB,GAWG,KAAAmB,YAAc,KACjB,MAAM0B,EAAmB,OAClBvB,KAAKuB,oBAAoB9F,QACzByyB,YAAKluB,KAAKuB,oBAAoBqP,UAOrC,OAJiBpS,wBACb,GAAGwB,KAAKjB,YAAYiB,KAAKtB,UAAUsB,KAAK0R,UAAY1R,KAAKguB,cAAchuB,KAAKmtB,SAAS7tB,IAAIkuB,GAAcA,EAAQW,iBAAmBX,EAAQY,sBAAwB,KAAOZ,EAAQa,uBAAyB,IAAtG,QAAiHC,0BAAgB/sB,KACrOvB,KAAKtD,YAAasD,KAAKtB,SAKxB,KAAAoB,mBAAqB,IAAM,yBAC3B,KAAAC,cAAgB,IAAiB,UAvBpCC,KAAKjB,SAAWA,EAChBiB,KAAKtD,YAAcA,EACnBsD,KAAK0R,SAAWA,EAChB1R,KAAKguB,WAAaA,EAClBhuB,KAAKuB,oBAAsBA,EAC3BvB,KAAKmtB,SAAWA,EAChBntB,KAAKiuB,kBAAkBA,EACvBjuB,KAAKtB,OAASA,GAuCf,MAAM6vB,EAA4B,CACrCtvB,EACAuvB,KAEA,MAAMzvB,EACyC,aAA3CE,EAAK/C,eAAeG,UAAU0C,UAA4BE,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMif,WAC3G,WACA,SAEJ7Z,EAAsB8N,2BAAyBC,cAAcrQ,GAAMsQ,oBACnEkf,EAAgB9B,YAAuB1tB,EAAK/C,gBAC5C+xB,MA1FoB7yB,EA0FmB6D,KAxFzC7D,EAAUmB,aAC6B8C,IAAvCjE,EAAUmB,OAAO0xB,oBACsB,IAAvC7yB,EAAUmB,OAAO0xB,mBAJzB,IAA8B7yB,EAgG1B,GAJG6D,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMuyB,UACtDntB,EAAoBqP,QAAU,CAAEC,QAAuBuE,KAAKC,MAAMsY,mBAAmB1uB,EAAK/C,eAAeC,MAAMuyB,YAGlG,aAAb3vB,EACA,OAAO,IAAIyvB,EACPzvB,EACAE,EAAK/C,eAAeQ,YACpB6E,EACAktB,IACExvB,EAAK/C,eAAeG,UAAUC,QAAW2C,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMif,YAAe,QACjH/b,EACA4uB,EACAhvB,EAAK/C,eAAewC,QAErB,GAAiB,WAAbK,GAAyBE,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMZ,EACvF,OAAO,IAAIizB,EACPzvB,EACAE,EAAK/C,eAAeQ,YACpB6E,EACAktB,OACApvB,EACAJ,EAAK/C,eAAeC,MAAMZ,EAC1B0yB,EACAhvB,EAAK/C,eAAewC,QAErB,GAAiB,WAAbK,GAAyBE,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMC,UACvF,OAAO,IAAIoyB,EACPzvB,EACAE,EAAK/C,eAAeQ,YACpB6E,EACAktB,OACApvB,EACAJ,EAAK/C,eAAeC,MAAMC,UAC1B6xB,EACAhvB,EAAK/C,eAAewC,QAI5B,MAAM,IAAIlD,MAAM,0D,iJCtJb,MAAMmzB,EAIThvB,YAAYpD,EAAmCG,GAKxC,KAAAoD,mBAAqB,IAAc,qBACnC,KAAAD,YAAc,IAAc,GAAGrB,wBAAc,qBAAsBwB,KAAKtD,gBAAgBsD,KAAKzD,OAAOmQ,QACpG,KAAA3M,cAAgB,IAAiB,UANpCC,KAAKzD,OAASA,GAAU,GACxByD,KAAKtD,YAAcA,GA4DZuD,+CAA2B,CACtCC,GAAI,+DACJC,OA5CWC,MAAOtF,EAAgC0J,KAClD,MAAM,OAAEjI,GAAWzB,EACnB,IAAI8zB,EACJ,IACIA,QAA0B1pB,6BAdK9J,KACnC,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIsD,wBAAsBtD,GAAYhB,EAAUc,eAAeQ,YAAYiC,UAAW,IAE7F,MAAM,IAAInD,MAAM,wFAQ6BqzB,CAA8BrqB,GAAUA,GACvF,MAAOxI,IAGT,GAAI4yB,EAAmB,CACnB,IAAIE,EACJ,IACIA,EAAaC,4BAAkBH,EAAmBpqB,GAElD,MAAMwqB,EAAkBxqB,EAAQtI,eAAe8yB,gBAE3CF,EADAA,GAAcE,EACD,WAAWA,IAAkBF,SAE7BzvB,EAEnB,MAAOrD,GACL8yB,OAAazvB,EAEjB,MAAO,CACHqN,MAAOkiB,EAAkB9pB,KACzB6H,YAAaiiB,EAAkBvxB,YAC/B4xB,gBAAiBL,EAAkB5xB,gBACnCkyB,aAAcJ,EACdK,WAAY5yB,GAAUA,EAAO4yB,YAG9B,OAAI5yB,EACA,CACHmQ,MAAOnQ,EAAOmQ,MACdC,YAAapQ,EAAOoQ,YACpBsiB,gBAAiB1yB,EAAO6yB,cAAgB7yB,EAAO6yB,aAAarW,IAC5DoW,WAAY5yB,GAAUA,EAAO4yB,YAG1B,IAOXr0B,MAAQmE,GACG,IAAI0vB,EAAmD1vB,EAAK1C,OAAQ0C,EAAK/C,eAAeQ,gB,gJClEhG,MAAM2yB,EAAsBC,IAC/B,IAAIC,EAAU,CAAEC,QAAS,GAAIC,YAAa,IAC1C,MAAM,IAAE7oB,EAAF,MAAOrB,GAAWoB,QAElB+oB,EAAc,CAACC,EAASC,KADD,IAAMC,IAEqBD,EAFHrqB,EAE5B,oBAAsBoqB,GAFkBpqB,EAAMsqB,GAAwDtqB,EAAM,8CAA+CuqB,EAAQC,KAAK,KAI7LT,IACAA,EAAkBA,EAAgBhwB,IAAK0wB,GAAWA,EAAOje,gBAE7D,MAAMke,EAAmBC,IACbZ,GAAmBA,EAAgBluB,QAAU,IAAuE,IAAlEkuB,EAAgBa,UAAWH,GAAWA,IAAWE,GAIzGE,EAAoBC,IAClBd,EAAQE,YAAYY,IACpBd,EAAQE,YAAYY,GAAYC,SAChCf,EAAQE,YAAYY,GAAYC,QAAQC,WACxChB,EAAQE,YAAYY,GAAYC,QAAQC,UAAUrwB,KAClDqvB,EAAQE,YAAYF,EAAQE,YAAYY,GAAYC,QAAQC,UAAUrwB,IAAMqvB,EAAQE,YAAYY,KAIlGG,EAA8B,CAACC,EAAqBC,KAUlD,GADAnB,EAAQE,YAAYgB,GAAuBC,GACtCnB,EAAQE,YAAYgB,GAAqBH,QAC1C,MAAM,IAAI90B,MAAM,oBAAsBi1B,EAAsB,mCAEhElB,EAAQE,YAAYgB,GAAqBH,QAAQC,UAAUI,eAAiBF,EACxElB,EAAQE,YAAYgB,GAAqBH,QAAQC,UAAUrwB,KAC3DqvB,EAAQE,YAAYF,EAAQE,YAAYgB,GAAqBH,QAAQC,UAAUrwB,IAAMuwB,IAKjG,IAGAR,EAAgB,iBAAmBV,EAAQC,QAAQ,eAAiB,CAChErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,cACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,4FAIRlB,EAAgB,eAAiBV,EAAQC,QAAR,UAA+B,CAC5DrP,EAAG/f,SAAY,8DAKfwwB,MAAO,mBACPC,GAAI,CAAC,CAACtG,KAAK,yBAA2B6G,KAAK,yFAA0FC,MAAO,IAE5IP,KAAK,EACLC,GAAI,6BACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iFAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtErP,EAAG/f,SAAY,8DAKfwwB,MAAO,mBACPC,GAAI,CAAC,CAACtG,KAAK,yBAA2B6G,KAAK,yFAA0FC,MAAO,IAE5IP,KAAK,EACLC,GAAI,6BACJC,EAAG,iBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,sFAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,iEAAkEC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,kEAAmEC,MAAO,IAErNP,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,8BAAgCV,EAAQC,QAAQ,4BAA8B,CAC1FrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,kEAAmEC,MAAO,IAE9NP,KAAK,EACLC,GAAI,6BACJC,EAAG,2BACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,yGAIRlB,EAAgB,mCAAqCV,EAAQC,QAAQ,iCAAmC,CACpGrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,kEAAmEC,MAAO,IAE9NP,KAAK,EACLC,GAAI,6BACJC,EAAG,gCACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,8GAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,2EAA4EC,MAAO,IAEhHP,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,cAAgB6G,KAAK,sEAAuEC,MAAO,IAE9GP,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,cAAgB6G,KAAK,sEAAuEC,MAAO,IAE9GP,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,gCAAkCV,EAAQC,QAAQ,8BAAgC,CAC9FrP,EAAG/f,SAAY,uEAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,iEAAkEC,MAAO,GAAG,CAAC9G,KAAK,kBAAoB6G,KAAK,2EAA4EC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,4BAA8B6G,KAAK,4HAA6HC,MAAO,IAE7fP,KAAK,EACLC,GAAI,6BACJC,EAAG,6BACHC,EAAG,UAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,kCAAoCV,EAAQC,QAAQ,gCAAkC,CAClGrP,EAAG/f,SAAY,sEAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,sBAAwB6G,KAAK,kEAAmEC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,yFAA0FC,MAAO,IAElWP,KAAK,EACLC,GAAI,6BACJC,EAAG,+BACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,6GAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,uBAAyB6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,kEAAmEC,MAAO,IAEhPP,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,qBAAuB6G,KAAK,kEAAmEC,MAAO,IAEjHP,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,YAAc6G,KAAK,iFAAkFC,MAAO,IAEvHP,KAAK,EACLC,GAAI,6BACJC,EAAG,wBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,sGAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,oFAIRlB,EAAgB,gBAAkBV,EAAQC,QAAR,WAAgC,CAC9DrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,oBAAsB6G,KAAK,oFAAqFC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,wEAAyEC,MAAO,GAAG,CAAC9G,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,IAE9VP,KAAK,EACLC,GAAI,6BACJC,EAAG,aACHC,EAAG,aAEHC,IAAK,GAGLC,GAAI,mFAIRlB,EAAgB,8BAAgCV,EAAQC,QAAQ,4BAA8B,CAC1FrP,EAAG/f,SAAY,uEAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,iEAAkEC,MAAO,GAAG,CAAC9G,KAAK,kBAAoB6G,KAAK,2EAA4EC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,wEAAyEC,MAAO,IAE7bP,KAAK,EACLC,GAAI,6BACJC,EAAG,2BACHC,EAAG,UAEHC,IAAK,GAGLC,GAAI,8FAIRlB,EAAgB,gCAAkCV,EAAQC,QAAQ,8BAAgC,CAC9FrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,QAAU6G,KAAK,4EAA6EC,MAAO,IAE9GP,KAAK,EACLC,GAAI,6BACJC,EAAG,6BACHC,EAAG,6BAEHC,IAAK,GAGLC,GAAI,mHAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,mBACHC,EAAG,8BAEHC,IAAK,GAGLC,GAAI,0GAIRlB,EAAgB,YAAcV,EAAQC,QAAR,OAA4B,CACtDrP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,kEAAmEC,MAAO,GAAG,CAAC9G,KAAK,kBAAoB6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,iGAAkGC,MAAO,GAAG,CAAC9G,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,2BAA6B6G,KAAK,qGAAsGC,MAAO,GAAG,CAAC9G,KAAK,oBAAsB6G,KAAK,yFAA0FC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,oFAAqFC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,yEAA0EC,MAAO,GAAG,CAAC9G,KAAK,4BAA8B6G,KAAK,4HAA6HC,MAAO,GAAG,CAAC9G,KAAK,YAAc6G,KAAK,iFAAkFC,MAAO,IAE5/CP,KAAK,EACLC,GAAI,6BACJC,EAAG,SACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,2EAIRlB,EAAgB,cAAgBV,EAAQC,QAAR,SAA8B,CAC1DrP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,WACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,+EAIRlB,EAAgB,UAAYV,EAAQC,QAAR,KAA0B,CAClDrP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,8BAAgC6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,kEAAmEC,MAAO,GAAG,CAAC9G,KAAK,kBAAoB6G,KAAK,wFAAyFC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,iGAAkGC,MAAO,GAAG,CAAC9G,KAAK,mBAAqB6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,uBAAyB6G,KAAK,kFAAmFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,iFAAkFC,MAAO,GAAG,CAAC9G,KAAK,4BAA8B6G,KAAK,4HAA6HC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,2EAA4EC,MAAO,GAAG,CAAC9G,KAAK,YAAc6G,KAAK,iFAAkFC,MAAO,IAEt/CP,KAAK,EACLC,GAAI,6BACJC,EAAG,OACHC,EAAG,OAEHC,IAAK,GAGLC,GAAI,uEAIRlB,EAAgB,eAAiBV,EAAQC,QAAQ,aAAe,CAC5DrP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,8BAAgC6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,mBAAqB6G,KAAK,+EAAgFC,MAAO,IAEjfP,KAAK,EACLC,GAAI,6BACJC,EAAG,YACHC,EAAG,OAEHC,IAAK,GAGLC,GAAI,4EAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFrP,EAAG/f,SAAY,kCAKfwwB,MAAO,qBACPC,GAAI,CAAC,CAACtG,KAAK,cAAgB6G,KAAK,8GAA+GC,MAAO,IAEtJP,KAAK,EACLC,GAAI,6BACJC,EAAG,wBACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,cAAgBV,EAAQC,QAAR,SAA8B,CAC1DrP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,8BAAgC6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,kEAAmEC,MAAO,GAAG,CAAC9G,KAAK,kBAAoB6G,KAAK,wFAAyFC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,mBAAqB6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,6GAA8GC,MAAO,IAEv3BP,KAAK,EACLC,GAAI,6BACJC,EAAG,WACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,+EAIRlB,EAAgB,8BAAgCV,EAAQC,QAAQ,4BAA8B,CAC1FrP,EAAG/f,SAAY,uEAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,kBAAoB6G,KAAK,2EAA4EC,MAAO,GAAG,CAAC9G,KAAK,8BAAgC6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,wEAAyEC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,4BAA8B6G,KAAK,4HAA6HC,MAAO,IAEn4BP,KAAK,EACLC,GAAI,6BACJC,EAAG,2BACHC,EAAG,UAEHC,IAAK,GAGLC,GAAI,8FAIRlB,EAAgB,uCAAyCV,EAAQC,QAAQ,qCAAuC,CAC5GrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,kEAAmEC,MAAO,IAE3VP,KAAK,EACLC,GAAI,6BACJC,EAAG,oCACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,wGAIRlB,EAAgB,+BAAiCV,EAAQC,QAAQ,6BAA+B,CAC5FrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,8BAAgC6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,IAE3XP,KAAK,EACLC,GAAI,6BACJC,EAAG,4BACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,IAExHP,KAAK,EACLC,GAAI,6BACJC,EAAG,qBACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,yFAIRlB,EAAgB,4BAA8BV,EAAQC,QAAQ,0BAA4B,CACtFrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,IAEtOP,KAAK,EACLC,GAAI,6BACJC,EAAG,yBACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,6FAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,cAAgB6G,KAAK,sEAAuEC,MAAO,GAAG,CAAC9G,KAAK,+BAAiC6G,KAAK,wFAAyFC,MAAO,IAEnXP,KAAK,EACLC,GAAI,6BACJC,EAAG,mBACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,uFAIRlB,EAAgB,iCAAmCV,EAAQC,QAAQ,+BAAiC,CAChGrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,8BAAgC6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,cAAgB6G,KAAK,sEAAuEC,MAAO,GAAG,CAAC9G,KAAK,cAAgB6G,KAAK,gFAAiFC,MAAO,IAE7lBP,KAAK,EACLC,GAAI,6BACJC,EAAG,8BACHC,EAAG,mBAEHC,IAAK,GAGLC,GAAI,0GAIRlB,EAAgB,iCAAmCV,EAAQC,QAAQ,+BAAiC,CAChGrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,yBAA2B6G,KAAK,yHAA0HC,MAAO,GAAG,CAAC9G,KAAK,8BAAgC6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,IAEriBP,KAAK,EACLC,GAAI,6BACJC,EAAG,8BACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,kGAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,8BAAgC6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,kBAAoB6G,KAAK,wFAAyFC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,mBAAqB6G,KAAK,+EAAgFC,MAAO,IAEvnBP,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,sFAIRlB,EAAgB,gCAAkCV,EAAQC,QAAQ,8BAAgC,CAC9FrP,EAAG/f,SAAY,+DAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,6BACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,iGAIRlB,EAAgB,+BAAiCV,EAAQC,QAAQ,6BAA+B,CAC5FrP,EAAG/f,SAAY,uEAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,iEAAkEC,MAAO,GAAG,CAAC9G,KAAK,kBAAoB6G,KAAK,2EAA4EC,MAAO,GAAG,CAAC9G,KAAK,8BAAgC6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,wEAAyEC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,4BAA8B6G,KAAK,4HAA6HC,MAAO,IAEt+BP,KAAK,EACLC,GAAI,6BACJC,EAAG,4BACHC,EAAG,UAEHC,IAAK,GAGLC,GAAI,+FAIRlB,EAAgB,mCAAqCV,EAAQC,QAAQ,iCAAmC,CACpGrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,IAExHP,KAAK,EACLC,GAAI,6BACJC,EAAG,gCACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,oGAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,gBACHC,EAAG,gBAEHC,IAAK,GAGLC,GAAI,yFAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,oBACHC,EAAG,oBAEHC,IAAK,GAGLC,GAAI,iGAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5ErP,EAAG/f,SAAY,kCAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,oBACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,+FAIRlB,EAAgB,+BAAiCV,EAAQC,QAAQ,6BAA+B,CAC5FrP,EAAG/f,SAAY,kCAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,4BACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,uGAIRlB,EAAgB,+BAAiCV,EAAQC,QAAQ,6BAA+B,CAC5FrP,EAAG/f,SAAY,kCAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,4BACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,uGAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFrP,EAAG/f,SAAY,kCAKfwwB,MAAO,eACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,0BACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,qGAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFrP,EAAG/f,SAAY,kCAKfwwB,MAAO,eACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,wBACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,mGAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1ErP,EAAG/f,SAAY,kCAKfwwB,MAAO,qBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,mBACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,8FAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClErP,EAAG/f,SAAY,iCAKfwwB,MAAO,aACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,0FAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFrP,EAAG/f,SAAY,kCAKfwwB,MAAO,qBACPC,GAAI,CAAC,CAACtG,KAAK,cAAgB6G,KAAK,4GAA6GC,MAAO,IAEpJP,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,+FAIRlB,EAAgB,cAAgBV,EAAQC,QAAR,SAA8B,CAC1DrP,EAAG/f,SAAY,kCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,gBAAgB,eAAe,cAC/DR,KAAK,EACLC,GAAI,6BACJC,EAAG,WACHC,EAAG,sBAEHC,IAAK,GAELK,cAAe,+BACfJ,GAAI,0FAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,oFAIRlB,EAAgB,iBAAmBV,EAAQC,QAAQ,eAAiB,CAChErP,EAAG/f,SAAY,8DAKfwwB,MAAO,mBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,cACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,gFAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,0BACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,8FAIRlB,EAAgB,YAAcV,EAAQC,QAAR,OAA4B,CACtDrP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,qBAAuB6G,KAAK,kEAAmEC,MAAO,GAAG,CAAC9G,KAAK,OAAS6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,4BAA8B6G,KAAK,4HAA6HC,MAAO,IAEnZP,KAAK,EACLC,GAAI,6BACJC,EAAG,SACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,2EAIRlB,EAAgB,YAAcV,EAAQC,QAAR,OAA4B,CACtDrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,SACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,2EAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpErP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,kEAAmEC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,2EAA4EC,MAAO,IAErNP,KAAK,EACLC,GAAI,6BACJC,EAAG,gBACHC,EAAG,UAEHC,IAAK,GAGLC,GAAI,mFAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5ErP,EAAG/f,SAAY,kCAKfwwB,MAAO,qBACPC,GAAI,CAAC,CAACtG,KAAK,cAAgB6G,KAAK,sGAAuGC,MAAO,IAE9IP,KAAK,EACLC,GAAI,6BACJC,EAAG,oBACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,4FAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,cAAgB6G,KAAK,sEAAuEC,MAAO,IAE9GP,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpErP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,cAAgB6G,KAAK,sEAAuEC,MAAO,IAE9GP,KAAK,EACLC,GAAI,6BACJC,EAAG,gBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,8FAIRlB,EAAgB,SAAWV,EAAQC,QAAR,IAAyB,CAChDrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,4BAA8B6G,KAAK,4HAA6HC,MAAO,IAElLP,KAAK,EACLC,GAAI,6BACJC,EAAG,MACHC,EAAG,MAEHC,IAAK,GAGLC,GAAI,qEAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,iBAAmB6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,IAEtOP,KAAK,EACLC,GAAI,6BACJC,EAAG,gBACHC,EAAG,gBAEHC,IAAK,GAGLC,GAAI,yFAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,aAAe6G,KAAK,8EAA+EC,MAAO,IAErHP,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,6FAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,8BAAgC6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,cAAgB6G,KAAK,sEAAuEC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,cAAgB6G,KAAK,gFAAiFC,MAAO,IAE/mBP,KAAK,EACLC,GAAI,6BACJC,EAAG,qBACHC,EAAG,mBAEHC,IAAK,GAGLC,GAAI,iGAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,8BAAgC6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,4EAA6EC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,cAAgB6G,KAAK,sEAAuEC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,mBAAqB6G,KAAK,sFAAuFC,MAAO,GAAG,CAAC9G,KAAK,cAAgB6G,KAAK,gFAAiFC,MAAO,IAE/1BP,KAAK,EACLC,GAAI,6BACJC,EAAG,gBACHC,EAAG,mBAEHC,IAAK,GAGLC,GAAI,4FAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,8BAAgC6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,4EAA6EC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,kEAAmEC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,mBAAqB6G,KAAK,sFAAuFC,MAAO,IAErmBP,KAAK,EACLC,GAAI,6BACJC,EAAG,gBACHC,EAAG,mBAEHC,IAAK,GAGLC,GAAI,4FAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,uGAAwGC,MAAO,IAE/PP,KAAK,EACLC,GAAI,6BACJC,EAAG,iBACHC,EAAG,iBAEHC,IAAK,GAGLC,GAAI,2FAIRlB,EAAgB,yBAA2BV,EAAQC,QAAQ,uBAAyB,CAChFrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,iBAAmB6G,KAAK,iGAAkGC,MAAO,IAE5IP,KAAK,EACLC,GAAI,6BACJC,EAAG,sBACHC,EAAG,iBAEHC,IAAK,GAGLC,GAAI,gGAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,QAAU6G,KAAK,kFAAmFC,MAAO,IAEpHP,KAAK,EACLC,GAAI,6BACJC,EAAG,0BACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,wGAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtErP,EAAG/f,SAAY,sEAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,iBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,+FAIRlB,EAAgB,iCAAmCV,EAAQC,QAAQ,+BAAiC,CAChGrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,8BACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,4GAIRlB,EAAgB,wCAA0CV,EAAQC,QAAQ,sCAAwC,CAC9GrP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,qCACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,gHAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,qBACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,mGAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFrP,EAAG/f,SAAY,kCAKfwwB,MAAO,qBACPC,GAAI,CAAC,CAACtG,KAAK,cAAgB6G,KAAK,4GAA6GC,MAAO,IAEpJP,KAAK,EACLC,GAAI,6BACJC,EAAG,uBACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,+FAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,2BAA6B6G,KAAK,4GAA6GC,MAAO,IAE7QP,KAAK,EACLC,GAAI,6BACJC,EAAG,wBACHC,EAAG,wBAEHC,IAAK,GAGLC,GAAI,yGAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,uFAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,sBAAwB6G,KAAK,gGAAiGC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,yEAA0EC,MAAO,IAElQP,KAAK,EACLC,GAAI,6BACJC,EAAG,oBACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,+FAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,gGAAiGC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,yEAA0EC,MAAO,GAAG,CAAC9G,KAAK,cAAgB6G,KAAK,kFAAmFC,MAAO,GAAG,CAAC9G,KAAK,aAAe6G,KAAK,8EAA+EC,MAAO,IAEzlBP,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,0FAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,uDAKfwwB,MAAO,eACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,kBACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,6FAIRlB,EAAgB,YAAcV,EAAQC,QAAR,OAA4B,CACtDrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,cAAgB6G,KAAK,gFAAiFC,MAAO,IAExHP,KAAK,EACLC,GAAI,6BACJC,EAAG,SACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,2EAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,oBAAsB6G,KAAK,oFAAqFC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,8GAA+GC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,sIAAuIC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,kIAAmIC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,sIAAuIC,MAAO,IAE1/BP,KAAK,EACLC,GAAI,6BACJC,EAAG,0BACHC,EAAG,0BAEHC,IAAK,GAGLC,GAAI,6GAIRlB,EAAgB,aAAeV,EAAQC,QAAQ,WAAa,CACxDrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,UACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,wFAIRlB,EAAgB,aAAeV,EAAQC,QAAQ,WAAa,CACxDrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,UACHC,EAAG,qBAEHC,IAAK,GAGLC,GAAI,wFAIRlB,EAAgB,iBAAmBV,EAAQC,QAAQ,eAAiB,CAChErP,EAAG/f,SAAY,sEAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,cACHC,EAAG,cAEHC,IAAK,GAGLC,GAAI,qFAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClErP,EAAG/f,SAAY,sEAKfwwB,MAAO,mBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,uFAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,oBACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,4FAIRlB,EAAgB,YAAcV,EAAQC,QAAR,OAA4B,CACtDrP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,SACHC,EAAG,SAEHC,IAAK,GAGLC,GAAI,2EAIRlB,EAAgB,aAAeV,EAAQC,QAAR,QAA6B,CACxDrP,EAAG/f,SAAY,kCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,gBAAgB,eAAe,cACtDR,KAAK,EACLC,GAAI,6BACJC,EAAG,UACHC,EAAG,qBAEHC,IAAK,GAELK,cAAe,8BACfJ,GAAI,wFAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtErP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,0BAA4B6G,KAAK,yFAA0FC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,oFAAqFC,MAAO,GAAG,CAAC9G,KAAK,4BAA8B6G,KAAK,4HAA6HC,MAAO,IAE1bP,KAAK,EACLC,GAAI,6BACJC,EAAG,iBACHC,EAAG,iBAEHC,IAAK,GAGLC,GAAI,2FAIRlB,EAAgB,SAAWV,EAAQC,QAAR,IAAyB,CAChDrP,EAAG/f,SAAY,8DAKfwwB,MAAO,mBACPC,GAAI,CAAC,CAACtG,KAAK,iBAAmB6G,KAAK,6EAA8EC,MAAO,IAExHP,KAAK,EACLC,GAAI,6BACJC,EAAG,MACHC,EAAG,MAEHC,IAAK,GAGLC,GAAI,qEAIRlB,EAAgB,cAAgBV,EAAQC,QAAQ,YAAc,CAC1DrP,EAAG/f,SAAY,8DAKfwwB,MAAO,mBACPC,GAAI,CAAC,CAACtG,KAAK,iBAAmB6G,KAAK,6EAA8EC,MAAO,IAExHP,KAAK,EACLC,GAAI,6BACJC,EAAG,WACHC,EAAG,MAEHC,IAAK,GAGLC,GAAI,0EAIRlB,EAAgB,gBAAkBV,EAAQC,QAAQ,cAAgB,CAC9DrP,EAAG/f,SAAY,iCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,aACHC,EAAG,aAEHC,IAAK,GAGLC,GAAI,mFAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,eAEHC,IAAK,GAGLC,GAAI,uFAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,kEAAmEC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,wHAAyHC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,qGAAsGC,MAAO,GAAG,CAAC9G,KAAK,YAAc6G,KAAK,iFAAkFC,MAAO,IAEjvBP,KAAK,EACLC,GAAI,6BACJC,EAAG,iBACHC,EAAG,WAEHC,IAAK,GAGLC,GAAI,qFAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,aAAe6G,KAAK,8EAA+EC,MAAO,IAEjOP,KAAK,EACLC,GAAI,6BACJC,EAAG,eACHC,EAAG,kBAEHC,IAAK,GAGLC,GAAI,0FAIJ,CACI,MAAMd,EAAa,yFACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,iGACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,+FACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,gGACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,4GACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,wFACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,wFACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,8FACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,0FACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,8GACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,4GACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,sGACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,4GACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,GAAIJ,EAAgB,aAAa,CAG7BO,EAF4B,yFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,yFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,8BAA8B,CAG9CO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,8BAA8B,CAG9CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,8BAA8B,CAG9CO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,8BAA8B,CAG9CO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,yFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,yBAAyB,CAGzCO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,wEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,wEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,8BAA8B,CAG9CO,EAF4B,4EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,yFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,qGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,yEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,iGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,kFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,iGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,QAAQ,CAGxBO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,yBAAyB,CAGzCO,EAF4B,8GACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,6GACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,wEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qCAAqC,CAGrDO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qCAAqC,CAGrDO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qCAAqC,CAGrDO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,yHACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,wEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,6BAA6B,CAG7CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,4GACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qBAAqB,CAGrCO,EAF4B,sGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,OAAO,CAGvBO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,8EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,4EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,sFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,4EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,sFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,uGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,uBAAuB,CAGvCO,EAF4B,iGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,kFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,4GACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,yBAAyB,CAGzCO,EAF4B,4GACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,yBAAyB,CAGzCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qBAAqB,CAGrCO,EAF4B,gGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qBAAqB,CAGrCO,EAF4B,yEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,kFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,8EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,gGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,yEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,UAAU,CAG1BO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,sIACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,sIACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,kIACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,8GACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,yFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,OAAO,CAGvBO,EAF4B,6EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,YAAY,CAG5BO,EAF4B,6EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,qGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,wHACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,8EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,0EACXgB,EAAQ,UAM/B,MAAOx1B,GACL0zB,EAAY,IAAK1zB,GAGrB,OAAOuzB,I,yVC5tGX,MAAMkC,EASJ9xB,YACE+R,EACAhV,EACAg1B,GAUK,KAAA7xB,YAAc,IA/BD,EACpBpB,EACA/B,IAEO,GAAG+B,YAAe/B,EAAYiC,mBAAmBjC,EAAYS,YA4BlEqB,CACE,GAAGwB,KAAKob,YAAcpb,KAAK2xB,gBAAgB3xB,KAAK7C,aAC9C6C,KAAK0xB,yBAAyBE,eAEhC5xB,KAAKtD,aAEF,KAAAoD,mBAAqB,IAAM,uBAC3B,KAAAC,cAAgB,IAAiB,cAhBtCC,KAAKtD,YAAcA,EACnBsD,KAAK6xB,gBAAkBngB,EACvB1R,KAAK0xB,yBAA2BA,EAChC1xB,KAAK7C,UAAYT,EAAYS,UAC7B6C,KAAKob,WAAa1J,EAAS0J,WAC3Bpb,KAAK2xB,aAAejgB,EAASigB,cAgB3B,MAAOG,EAQXnyB,YACEhB,EACAyc,EACA2W,EACAC,EACAC,EACA90B,GASK,KAAA0C,YAAc,IACnB,GAAGG,KAAKob,cAAcpb,KAAKrB,aAAaqB,KAAK7C,6CACxC,KAAA2C,mBAAqB,IAAM,mCAC3B,KAAAC,cAAgB,IAAiB,UAVtCC,KAAKrB,UAAYA,EACjBqB,KAAKgyB,cAAgBA,EACrBhyB,KAAKob,WAAaA,EAClBpb,KAAK+xB,cAAgBA,EACrB/xB,KAAKiyB,SAAWA,EAChBjyB,KAAK7C,UAAYA,GAAa,GAU3B,MAAMoJ,EACXnL,IAEA,GAAIA,GAAaA,EAAUc,eAAgB,CACrCd,EAAUc,eAAeC,QAAUf,EAAUc,eAAeC,MAAMN,MACpET,EAAUc,eAAeC,MAAMN,IAAM,QAEvC,MAAMg2B,EAAkB,IAAIK,uBAAqB92B,EAAUc,gBAEvDd,EAAUmB,QAAUnB,EAAUmB,OAAO41B,kBACvCN,EAAgBzW,WAAahgB,EAAUmB,OAAO41B,iBAEhD,MAAMT,EAA2BriB,2BAAyBC,cACxDlU,GAEF,OAAO,IAAI02B,GACR12B,EAAUc,eAAeQ,YAAYiC,YACpCkzB,EAAgBzW,YAAc,GAChCyW,EACA,IAAIJ,EACFI,EACAz2B,EAAUc,eAAeQ,YACzBg1B,GAEFvzB,mDAAyC/C,IAI7C,MAAM,IAAII,MAAM,uDAKX4E,eAAeoG,EACpB1L,EACAuF,GAEA,MAAM+xB,QAA4BC,gCAChCv3B,EAAMk3B,cACN3xB,GAEIiyB,EAAwC,GAY9C,GAXAF,EAAoB9mB,QAASinB,SACGlzB,IAA1BkzB,EAAa90B,UACf60B,EAAkB5mB,KAChB,IAAIC,mBACF4mB,EAAa90B,SACb4C,EAAInE,eAAeQ,YACnB5B,EAAMm3B,cAKTK,EACH,MAAsB,GAExB,MAAMzqB,QAAiB+D,0BAAgB0mB,EAAmBjyB,GAI1D,OAFAA,EAAImyB,mBAAqB,KAAM,EAExB5vB,QAAQ6vB,IAAI5qB,EAASvI,IAAIc,UAC9B,MAAMsyB,QAAkBjsB,YACtB,CAAEjG,cAAeH,EAAKkB,oBAAqB,IAC3CxE,EAAQ41B,eAAel1B,SACvB3C,EAAM6D,UACN7D,EAAMqC,WAKR,OADAJ,EAAQ61B,kBAAoBF,EACrB31B,KAIIkD,+CAA2B,CACxCE,OAAgCqG,EAChC1L,MAAOyL,K,qGC7HTjE,+BAAqB,CACjBC,SAAU,6CACVC,eA1BkBpC,MAAOqC,EAAwCoR,EAAqBlR,KACtF,GAAImE,QAAUA,OAAOC,WAAaD,OAAOC,UAAUtB,UAAW,CAC1D,MAAMqO,EAAapT,MAAMC,QAAQkT,GAAQA,EAAK,GAAKA,EACnD,IAAIgf,EAAuC,GAG3C,GAAI/e,GAAcA,EAAW4J,WAAahd,MAAMC,QAAQmT,EAAW4J,YAAc5J,EAAW4J,UAAUtc,OAAS,EAC3G,IACIyxB,QAA6B1rB,YAAiC2M,EAAW4J,UAAW/a,GACtF,MAAO4C,GACL5C,EAAc8C,UAAUF,MAAM,+DAAgEA,GAKtGuB,OAAOC,UAAUtB,UAAUqC,SAAS5E,IAAe4vB,SAAU,CACzD5e,OAAQJ,EAAWzM,GACnB8M,YAAaL,EAAWM,QAAUN,EAAWM,QAAQ5M,WAAa,GAClEK,SAAUgrB,EACVnjB,QAASoE,EAAWO,YAAcP,EAAWO,YAAY7M,WAAa,OAQ9EpE,cArCmBhD,e,+YCJhB,MAAM2yB,EAQVpzB,YAAYqzB,EAAqBC,EAAoBC,EAAqBC,EAAkBC,EAA6BC,GASlH,KAAAxzB,YAAc,IAAM,4CACpB,KAAAC,mBAAqB,IAAM,uCAC3B,KAAAC,cAAgB,IAAiB,OAVpCC,KAAK5D,UAAY42B,EACjBhzB,KAAKkW,SAAW+c,EAChBjzB,KAAKmW,UAAY+c,EACjBlzB,KAAKszB,OAASH,EACdnzB,KAAK+Z,kBAAoBqZ,EACzBpzB,KAAKuzB,eAAiBF,GAYtB,MAAMG,EAA8Cp4B,GAChD,IAAI23B,EAMR3yB,eAAemE,EAAgBC,GAClC,OAAOC,gCAAsB,IAAIC,oBAAqBF,GAQnDpE,eAAeqzB,EAClB34B,EACAuF,GAAmB,MAGnB,IAAKvF,EAAMsB,UACP,OAGJ,MAAOtB,EAAMw4B,QAA2B,IAAjBx4B,EAAMw4B,SAAkBx4B,EAAMob,UAAapb,EAAMqb,WAAerb,EAAMy4B,gBAEzF,MAAO,GAGX,MAAM5Z,EAAyB,CAC3B7D,SAAUhb,EAAMob,SAChBH,UAAWjb,EAAMqb,UACjByD,OAAQ9e,EAAMw4B,OACdvZ,kBAAmBjf,EAAMif,mBAAqB,GAG7CzV,QAAqBC,EAAgBlE,GACrCqzB,EAAoCpvB,SAAH,UAAGA,EAActD,KAAK6D,GAAsB,oEAAdA,EAAKC,aAAnC,aAAG,EAA6GC,UAEtJ,OAAO4uB,YAA8B,CAACnzB,cAAeH,GAAM,CAACyd,WAAY,CAAChjB,EAAMsB,WAAYw3B,WAAYja,EAAYka,sBAAqB,EAAOC,iCAAiC,IAC/K5xB,KAAK9B,UACF,MAAM2zB,EAA8BC,YAA+B3zB,EAAK4zB,aAAN,EAAMA,EAA6BC,yCACrG,OAAO/Z,YAA+B,CAAC3Z,cAAeH,GAAMsZ,GAC3DzX,KAAK9B,UAEF,MAAM+zB,EAAW,IAAIC,IACrBC,EAAO/oB,QAAQgpB,IACRA,EAAMC,qBACLJ,EAAS7G,IAAIgH,EAAMC,oBAAqBD,KAIhD,IAAIE,EAA+D,GAEnE,GAAGd,EAAmC,CAClC,MAAMe,EAAiBJ,EAAO/0B,IAAIg1B,GAASA,EAAM/sB,WAChDitB,QAgFjBp0B,eACIs0B,EACAr0B,GACA,GAAkC,KAA9Bq0B,aAAA,EAAAA,EAAmBtzB,cAAuC/B,IAAtBq1B,EAChC,OAGJ,MAAMC,EAA0B,GAQpC,OAPKD,WAAmBp1B,IAAIY,IACnB,QAAUb,IAAPa,EACC,OAAOy0B,EAAcjpB,KAAKxL,KAKhC00B,YAA+B,CAAEp0B,cAAeH,GAAOs0B,EAAe,GACxEzyB,KAAM2yB,IAEH,GAAIA,KAA4BA,aAAkCr5B,OAC9D,OAAOq5B,IAKdvvB,MAAOC,IACJlF,EAAI8B,MAAM,8HACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,+HACb,KA7G8BmvB,CAAgCL,EAAgBp0B,GAGrF,MAAM00B,EAA0BV,EAAO/0B,IAAIg1B,IAAQ,MAC/C,MAAMU,EAAsB,UAAGR,SAAH,aAAG,EAAyBxzB,KAAKi0B,GAA0BA,EAAuB1tB,YAAc+sB,EAAM/sB,WAClI,OA6BhBnH,eACI80B,EACAnB,EACAI,EACA9zB,EAAqB80B,GACjB,IAAKD,IAAoBA,EAAgBE,cACrC,MAAO,CAAEC,yBAAqBh2B,GAGlC,OAAOi2B,YAAmB,CAAE90B,cAAeH,GAAM60B,EAAgBE,eAC5DlzB,KAAMqzB,IACH,MAAMC,EAAyC,GAC5CzB,GACAI,GACKJ,EAA4BzoB,QAAQkH,IAC4G,IAAD,EAAxIA,EAAQijB,kBAAoBtB,EAASuB,IAAIljB,EAAQijB,mBAAqBjjB,EAAQijB,mBAAqBP,EAAgBX,qBAClHiB,EAAmB9pB,KAAK,CAACiqB,kBAAiB,UAACnjB,EAAQojB,gCAAT,aAAC,EAAkCD,sBAK7F,MAAME,EAAoC,CACtCC,gBAAiBZ,EACjBa,mBAAoBP,GAGxB,OAAID,GAAWA,aAAiB/5B,MAIzB,CAAE65B,oBAAqBQ,EAAcG,4BAA6BjC,EAA6BkC,2BAA4Bd,GAHvH,CAAEE,oBAAqBQ,EAAcK,WAAYX,EAAOS,4BAA6BjC,EAA6BkC,2BAA6Bd,KAK7J7vB,MAAOC,IACJlF,EAAI8B,MAAM,2EACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,2EACb,CAAE0vB,oBAAqB,MAlEvBc,CAA0B7B,EAAOP,EAA6BI,EAAS9zB,EAAK20B,KAGvF,OAAOpyB,QAAQ6vB,IAAIsC,KAEtBzvB,MAAOC,IACJlF,EAAI8B,MAAM,8EACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUF,MAAMA,EAAMC,SAC1BnF,EAAIoF,UAAUE,MAAM,8EACb,OAGdL,MAAOC,IACJlF,EAAI8B,MAAM,8HACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUF,MAAMA,EAAMC,SAC1BnF,EAAIoF,UAAUE,MAAM,8HACb,KA6FA1F,+CAA2B,CACtCC,GAAI,gFACJC,OAAyDszB,EACzD34B,MAAO04B,K,gNC5MJ,MAAMvoB,EAAbtL,cACW,KAAAE,YAAc,IAAM,sBACpB,KAAAC,mBAAqB,IAAM,sBAC3B,KAAAC,cAAgB,IAAiB,QAUrCK,eAAe8K,EAAuBpQ,EAA4BuF,GAErE,IAAKvF,EACD,MAAM,IAAIU,MAAM,gEAGpB,GAAG6E,EAAInE,eAAewF,KAAKC,gBAAiB,CACxC,MAAMwJ,QAAkBC,YAAmB,CAAE5K,cAAeH,EAAKkB,oBAAqB,IAAM,MAE5F,KAAG4J,GAAaA,EAAU/J,OAAS,GA8B/B,OADAf,EAAI8B,MAAM,sEACY,GA9BY,CAClC,MAAMkJ,EAAoC,GAS1C,GARGF,EAAU,GAAGK,mBACZL,EAAU,GAAGK,kBAAkBF,QAASG,IACjCA,EAAiBjO,WAChB6N,EAAcK,KAAK,IAAIC,mBAAiBF,EAAiBjO,UAAW6C,EAAInE,eAAeQ,YAAayB,mDAAyCkC,OAKtJgL,EAAcjK,OAAS,EACtB,OAAOwK,0BAAgBP,EAAehL,GACjC6B,KAAK2F,GACEA,GAGsB,IAG7BvC,MAAMC,IAIH,MAHAlF,EAAI8B,MAAMoD,GACVlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,2EACd,IAAInK,MAAM,6EAGxB6E,EAAI8B,MAAM,qCAQtB,OADA9B,EAAI8B,MAAM,8DACY,GAGXlC,+CAA2B,CACtCC,GAAI,kEACJC,OAAgC+K,EAChCpQ,MAxDiBM,GACV,IAAI6P,K,+7BCUR,MAAMmrB,EAKTz2B,YAAY7E,GAML,KAAA+E,YAAc,IAAMrB,wBAAc,0BAAyBwB,KAAKq2B,iBAAmB,IAAIr2B,KAAKq2B,iBAAqB,IAAMr2B,KAAKtD,aAC5H,KAAAoD,mBAAqB,IAAM,yBAC3B,KAAAC,cAAgB,IAAiB,OAPpCC,KAAKs2B,mBAAqBx7B,EAAMw7B,mBAChCt2B,KAAKq2B,iBAAmBv7B,EAAMu7B,iBAC9Br2B,KAAKtD,YAAc5B,EAAM4B,aAQ1B,MAAM65B,EAAwCn7B,IAEjD,MAAM,mBAAEk7B,EAAF,iBAAsBD,GAAqBj7B,EAAUmB,OACrDi6B,EAAiC,CACnCC,kBAAmBH,EACnBD,iBAAkBA,EAClB35B,YAAatB,EAAUc,eAAeQ,aAG1C,OAAO,IAAI05B,EAA+BI,IAMvCp2B,eAAes2B,EAClB57B,EACAuF,GAGA,IAAKvF,EAED,MADAuF,EAAIoF,UAAUC,UAAU,IAAIlK,MAAM,2EAC5B,IAAIA,MAAM,0EAGpB,MAAM,mBAAE86B,EAAF,iBAAsBD,GAAqBv7B,EAC3C67B,QAAsCC,YAAiBv2B,GAAKiF,MAAOC,IAErE,MADAlF,EAAIoF,UAAUC,UAAUH,GAClBA,IAGV,GACIsxB,8BAAoBF,IACpBE,8BAAoBF,EAAcnK,eAClCqK,8BAAoBF,EAAcnK,aAAa3Y,MAG/C,MADAxT,EAAIoF,UAAUC,UAAU,IAAIlK,MAAM,yDAC5B,IAAIA,MAAM,wDAGpB,IAAKm7B,EAAcnK,aAAa3Y,KAAK6J,YAAciZ,EAAcnK,aAAa3Y,KAAK6J,UAAUtc,OAEzF,MADAf,EAAIoF,UAAUC,UAAU,IAAIlK,MAAM,oDAC5B,IAAIA,MAAM,mDAGpB,MAAMqc,EAC2C,iBAAtCxX,EAAInE,eAAewc,IAAIb,WACxB,IAAIgW,IAAIxtB,EAAInE,eAAewc,IAAIb,YAC/BxX,EAAInE,eAAewc,IAAIb,WAC3Bif,EAASxK,IAAIxlB,OAAQ,oBAAsB+Q,EAAWif,OAEtDC,EAAyB,OAC3B,cAAe,2EACfC,eAAgBF,EAChBG,YAAgBH,EAAH,gBAA2BA,EACxCI,oBAAoB,EACpBC,yBAAyB,IACpBb,GAAsB,CAAEc,oBAAoB,IAC7Cf,GAAoB,CAAEgB,aAAchB,IAPb,IAQ3BiB,cAAe,IAGnB,OAAOC,YACH,CAAE/2B,cAAeH,EAAKoe,YAAa,OACnCkY,EAAcnK,aAAa3Y,KAAKxM,GAChC0vB,EACA,IAEC70B,KAAKs1B,IACF,IAAKA,EAAuBC,gBAAkBD,EAAuBE,kBACjE,MAAM,IAAIl8B,MACN,+IAGR,OAAOg8B,IAEVlyB,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,2CACdJ,IAIHtF,+CAA2B,CACtCC,GAAI,+EACJC,OAAyCu2B,EACzC57B,MAAOy7B,K,sUCrHJ,MAAMoB,EAMTh4B,YAAYvD,EAAmBuC,EAAmB0F,EAAiCtG,GAO5E,KAAA8B,YAAc,IAAM,0BACpB,KAAAC,mBAAqB,IAAM,QAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAK5D,UAAYA,EACjB4D,KAAKrB,UAAYA,EACjBqB,KAAKqE,gBAAkBA,EACvBrE,KAAKjC,WAAaA,GAAc,IAYjC,MAAM65B,EAA4Cx8B,IACrD,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIu7B,GACNv7B,GACAhB,EAAUc,eAAeQ,YAAYiC,eACtCU,GAEJ,MAAM,IAAI7D,MAAM,gGASjB4E,eAAey3B,EAClB/8B,EACAuF,GAEA,IAAIy3B,EAAuC,GAC3C,GAAGz3B,EAAInE,gBAAkBmE,EAAInE,eAAewF,MAAQrB,EAAInE,eAAewF,KAAKC,gBAC5E,CACI,MAAMo2B,EAAgB,IAAInyB,mBAAiBvF,EAAInE,eAAeQ,aACxDs7B,QAAiBC,sBAAYF,EAAe13B,GAC/C23B,GAAYA,EAASE,sBAEpBF,EAASE,qBAAqB5sB,QAAS6sB,IACnC,IAAIC,EAA6B,CAACC,cAAcF,EAAWG,oBAAqBp6B,WAAY85B,EAASO,eACrGT,EAAYpsB,KAAK0sB,KAK7B,OAAOx1B,QAAQC,UAEVX,KAAK,KACF,MAAM8C,EAA2ClK,EAAMuJ,gBAEvD,IAAKW,EAAe,CAChB,MAAMC,EAAuB,IAAIvF,uBAAqB5E,EAAMsB,UAAWtB,EAAM6D,WAE7E,OAAOuG,6BAAmBD,EAAsB5E,GAGpD,OAAO2E,IAEV9C,KAA2BiD,IACxB,MAAMqzB,EAAkC,CAAEjxB,WAAYlH,EAAInE,eAAeQ,YAAYiC,UAAWvB,WAAYiD,EAAInE,eAAeQ,YAAYS,WAErI6H,EAAsEG,EAC5E,OAAIH,EAEOyzB,YACH,CAAEj4B,cAAeH,EAAKkB,oBAAqB,IAC3Ci3B,EACA,CAACxzB,EAAcvH,UACf,IAAI0qB,KACJrtB,EAAMiD,YAAc,KACpB+5B,GACA,GAEF51B,KAAK5B,IACH,GAAGA,GAAYA,EAASc,OAAS,EAAG,CAChC,MAAMs3B,EAAep4B,EAAS,GAQ9B,OAJI0e,KAAU3e,EAAInE,eAAeQ,YAAYuiB,yBAA0B,YACnEyZ,EAAaC,wBAA0BD,EAAaE,eAGjDF,EAEX,MAAM,IAAIl9B,MAAM,4FAIjB,OAEV8J,MAAOC,IAIJ,MAHAlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,4DACd,IAAInK,MAAM,8DAIbyE,+CAA2B,CACtCC,GAAI,2EACJC,OAAsC03B,EACtC/8B,MAAO88B,K;;;;;AC/GJ,MAAMzwB,EAAmC/G,MAAOsU,EAAuB/R,KAC1E,QAA6CtD,IAAzCsD,EAAczG,eAAe6F,QAC7B,MAAM,IAAIvG,MAAM,wDAGpB,MAAMq9B,EAA2C,GAGjD,IAAK,IAAIha,EAAI,EAAGA,EAAInK,EAAUtT,OAAQyd,IAAK,CACvC,MAAM8B,EAAqBjM,EAAUmK,GAEjC8B,EAASnjB,WAETq7B,EAAgBntB,KACZnL,YAAa,CAAEC,cAAemC,GAAiBge,EAASnjB,UAAWmF,EAAczG,eAAe6F,QAAQtE,UAAUyE,KAC9GlH,IAEI,MAAM8H,EAAcC,EAAgC/H,GAMpD,OAHA8H,EAAY41B,aAAe/X,EAASmY,MAAQnY,EAASmY,MAAMtxB,WAAa,GACxE1E,EAAYi2B,gBAAkBpY,EAASjjB,SAAWijB,EAASjjB,SAAS8J,WAAa,GAE1E1E,GAEXk2B,IACI,MAAM,IAAIx9B,MAAM,6CAA6CmlB,EAASnjB,eAAew7B,QAQzG,OAAOp2B,QAAQ6vB,IAAIoG,IAQV91B,EAAmCL,IAC5C,MAAM5D,EAAW4D,EAAcjF,UAAY,GAE3C,MAAO,CAEHrB,UAAWsG,EAAcka,gBAAkBla,EAAcka,gBAAgBpV,WAAa1I,EAAS0I,WAC/FvE,WAAYnE,EAAWA,EAAS0I,WAAa,GAC7CyxB,YAAav2B,EAAcoC,MAAQpC,EAAcrF,aAAe,GAChEq7B,aAAch2B,EAAco2B,MAAQp2B,EAAco2B,MAAMtxB,WAAa,GACrE0xB,iBAAkB,GAClBC,mBAAoB,GACpBC,kBAAmB,GACnBC,oBAAqB,GACrBN,gBAAiB,GACjBO,gBAAiB,M,0MCpDnB,MAAOC,UAAyCxL,IAAtDpuB,c,oBACW,KAAAG,mBAAqB,IAAM,0BAC3B,KAAAC,cAAgB,IAEG,aAAlBC,KAAKjB,UACJiB,KAAKmtB,UAAYntB,KAAKmtB,SAAS/rB,OAAS,GACxCpB,KAAKuB,qBAAuBvB,KAAKuB,oBAAoBqP,SAAW5Q,KAAKuB,oBAAoBqP,QAAQC,SAAW7Q,KAAKuB,oBAAoBqP,QAAQC,QAAQzP,OAAS,EAExJ,UAEA,eAsIJnB,+CAA2B,CACtCE,OArEJC,eACItF,EACAuF,GAEA,IAAIm5B,EACJ,MAAMC,EAA6C,GAKnD,GAJAA,EAAoBhe,QAAU,CAAElU,UAAWlH,EAAInE,eAAeQ,YAAYiC,UAAWvB,UAAWiD,EAAInE,eAAeQ,YAAYS,WAC/Hs8B,EAAoBC,WAAa5+B,EAAMqyB,SACvCsM,EAAoB9d,mBAAoB,EAEjB,aAAnB7gB,EAAMiE,UAA4BsB,EAAInE,eAAeC,OAASkE,EAAInE,eAAeC,MAAMif,WAAa,CACpG,IAAItgB,EAAM4W,SAUN,MAAM,IAAIlW,MACN,wFAVJi+B,EAAoB/d,YAAc,CAAC5gB,EAAM4W,UAAY,GACrD8nB,EAAU5d,YACN,CACIpb,cAAeH,EACfkB,oBAAqBzG,EAAMyG,qBAE/Bk4B,OAOL,CACH,IAAI3+B,EAAMkzB,WAUN,MAAM,IAAIxyB,MACN,uFAVJi+B,EAAoBE,gBAAkB7+B,EAAMkzB,WAC5CwL,EAAU5d,YACN,CACIpb,cAAeH,EACfkB,oBAAqBzG,EAAMyG,qBAE/Bk4B,GASZ,MAEMjgB,SAF6BggB,GAESl6B,IAAI8yB,IAC5C,MAAM5wB,EAAc1E,kCAChBs1B,EACA/xB,EAAInE,eAAeQ,aAOvB,OAJI8E,IACA4wB,EAAoBp1B,gBAAkBwE,GAGlC4wB,IAQZ,OAJK9b,UAASC,WACVlW,EAAIu5B,OAAO,IAAI9X,qBAAsB,CAAE+X,kBAAmBL,EAAQv+B,SAASwY,OAAS,EAAGiO,cAAe5mB,EAAMqyB,WAGzG,CACHtlB,SAAU2R,EACV/F,MAAO+lB,EAAQv+B,SAASwY,OAAS,IAMrC3Y,MAjHiBmE,IACjB,MAAMnE,EAAQyzB,YAA0BtvB,EAAMs6B,GAY9C,GATIz+B,EAAMyG,oBAAoB9F,QAAUwD,EAAK1C,SACzCzB,EAAMyG,oBAAoB9F,OAAOC,IAAMuD,EAAK1C,OAAOgS,cAAgB,GAInEzT,EAAMyG,oBAAoB9F,QAAUwD,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMJ,OAC3FjB,EAAMyG,oBAAoB9F,OAAOK,MAAQmD,EAAK/C,eAAeC,MAAMJ,MAGnEkD,EAAK1C,OAAQu9B,YAAch/B,EAAMyG,oBAAoBqP,cAAyDvR,IAA9CvE,EAAMyG,oBAAoBqP,QAAQC,QAAuB,CAEzH,IAAIkpB,EAAkB,GACnB96B,EAAK1C,OAAQy9B,uBACZD,EAAWE,gBAAcC,QACnBj7B,EAAK1C,OAAQ49B,kBACnBJ,EAAWE,gBAAc1P,KACnBtrB,EAAK1C,OAAQ69B,mBACnBL,EAAWE,gBAAcI,MACnBp7B,EAAK1C,OAAQ+9B,sBACnBP,EAAWE,gBAAcM,eAG1BR,IACCj/B,EAAMyG,oBAAoBqP,QAAU,CAAEC,QAAU,CAC5C,CACI5H,WAAY8wB,MAQ5B,OAFAj/B,EAAMyG,oBAAoBkS,OAAQ,EAE3B3Y,M,gGCnFX,0BA0BwB,KAAA0/B,WAAyB,GAKzB,KAAAC,iBAAsC,GAUtC,KAAAC,eAAyB,EAKzB,KAAAC,oBAA8B,GAK9B,KAAAC,8BAAwC,EAKxC,KAAAC,uBAAiC,EA0EzD,OAhIcvoB,sBAAWwoB,YAAA,uBAAoB,KAA/B,WACN,OAAO96B,KAAK+6B,uBADyB,gCAK/BzoB,sBAAWwoB,YAAA,aAAU,KAArB,WACN,OAAO96B,KAAKg7B,aADe,gCAKrB1oB,sBAAWwoB,YAAA,iBAAc,KAAzB,WACN,OAAO96B,KAAKi7B,iBADmB,gCAKzB3oB,sBAAWwoB,YAAA,kBAAe,KAA1B,WACN,OAAO96B,KAAKk7B,kBADoB,gCAK1B5oB,sBAAWwoB,YAAA,aAAU,KAArB,WACN,OAAO96B,KAAKm7B,aADe,gCAKrB7oB,sBAAWwoB,YAAA,YAAS,KAApB,WACN,OAAO96B,KAAKw6B,YADc,gCAKpBloB,sBAAWwoB,YAAA,kBAAe,KAA1B,WACN,OAAO96B,KAAKy6B,kBADoB,gCAK1BnoB,sBAAWwoB,YAAA,oBAAiB,KAA5B,WACN,OAAO96B,KAAKo7B,oBADsB,gCAK5B9oB,sBAAWwoB,YAAA,gBAAa,KAAxB,WACN,OAAO96B,KAAK06B,gBADkB,gCAKxBpoB,sBAAWwoB,YAAA,qBAAkB,KAA7B,WACN,OAAO96B,KAAK26B,qBADuB,gCAK7BroB,sBAAWwoB,YAAA,8BAA2B,KAAtC,WACN,OAAO96B,KAAK46B,8BADgC,gCAKtCtoB,sBAAWwoB,YAAA,wBAAqB,KAAhC,WACN,OAAO96B,KAAK66B,wBAD0B,gCAKnCC,uCAAP,SAAkCO,GAC9Br7B,KAAK+6B,sBAAwBM,GAI1BP,6BAAP,SAAwBQ,GACpBt7B,KAAKg7B,YAAcM,GAIhBR,kCAAP,SAA6BS,GACzBv7B,KAAKk7B,iBAAmBK,GAIrBT,iCAAP,SAA4BU,GACxBx7B,KAAKi7B,gBAAkBO,GAIpBV,6BAAP,SAAwBW,GACpBz7B,KAAKm7B,YAAcM,GAIhBX,2BAAP,SAAsBY,GAClB17B,KAAKw6B,WAAax6B,KAAKw6B,WAAWnxB,QAAO,SAAAsyB,GAAY,OAAAA,EAASt0B,KAAOq0B,MAIlEZ,iCAAP,SAA4BY,GACxB17B,KAAKy6B,iBAAmBz6B,KAAKy6B,iBAAiBpxB,QAAO,SAAAsyB,GAAY,OAAAA,EAASt0B,KAAOq0B,MAI9EZ,wBAAP,SAAmBa,GACf37B,KAAKw6B,WAAUoB,0BAAID,GAAa37B,KAAKw6B,aAIlCM,8BAAP,SAAyBa,GACrB37B,KAAKy6B,iBAAgBmB,0BAAID,GAAa37B,KAAKw6B,aAIxCM,oCAAP,SAA+Be,GAC3B77B,KAAKo7B,mBAAqBS,GAIvBf,gCAAP,SAA2BgB,GACvB97B,KAAK06B,eAAiBoB,GAInBhB,qCAAP,SAAgCiB,GAC5B/7B,KAAK26B,oBAAsBoB,GAIxBjB,+CAAP,SAA0CkB,GACtCh8B,KAAK46B,6BAA+BoB,GAIjClB,wCAAP,SAAmCgB,GAC/B97B,KAAK66B,uBAAyBiB,GA/HtBjlB,sBAAXE,IAAW,wFACFF,sBAATC,IAAS,kIAIED,sBAAXE,IAAW,8EACFF,sBAATC,IAAS,wHAIED,sBAAXE,IAAW,kFACFF,sBAATC,IAAS,4HAIED,sBAAXE,IAAW,mFACFF,sBAATC,IAAS,6HAIED,sBAAXE,IAAW,8EACFF,sBAATC,IAAS,wHAIED,sBAAXE,IAAW,4EACFF,sBAATC,IAAS,uHAIED,sBAAXE,IAAW,kFACFF,sBAATC,IAAS,6HAIED,sBAAXE,IAAW,qFACFF,sBAATC,IAAS,+HAIED,sBAAXE,IAAW,iFACFF,sBAATC,IAAS,2HAIED,sBAAXE,IAAW,sFACFF,sBAATC,IAAS,gIAIED,sBAAXE,IAAW,gGACFF,sBAATC,IAAS,yIAIED,sBAAXE,IAAW,yFACFF,sBAATC,IAAS,mIAKVD,sBADC1W,IACD,iMAKA0W,sBADC1W,IACD,uLAKA0W,sBADC1W,IACD,4LAKA0W,sBADC1W,IACD,2LAKA0W,sBADC1W,IACD,uLAKA0W,sBADC1W,IACD,qLAKA0W,sBADC1W,IACD,2LAKA0W,sBADC1W,IACD,kLAKA0W,sBADC1W,IACD,wLAKA0W,sBADC1W,IACD,8LAKA0W,sBADC1W,IACD,0LAKA0W,sBADC1W,IACD,+LAKA0W,sBADC1W,IACD,0MAKA0W,sBADC1W,IACD,kMAGJ,EAlIA,I,gPCLO,SAAS87B,IAA2H,IAA9G1R,EAA8G,uDAA/F,GAAI2R,EAA2F,uDAArF,IAAKC,EAAgF,uDAA3B,GAAIC,EAAuB,uCAEvI,MAAMC,EAAiBnQ,UAAiBoQ,kBAAoBpQ,UAAiBoQ,iBAAiBC,uBAAyBJ,EAAyBI,sBAAwBhS,EAAM6R,GAAmB7R,EAUjM,OAAI4R,EAAyBK,mBAAqBtQ,UAAiBoQ,kBAAoBpQ,UAAiBoQ,iBAAiBE,kBAG9G3/B,mBAAmBw/B,EAActqB,cAAc0qB,QAAQ,eAAgB,KAAKC,OAAOD,QAAQ,OAAQ,KAAKA,QAAQ,aAAc,KAElIlS,EACFxY,cACA0qB,QAAQ,iBAAkB,KAC1BC,OACAD,QAAQ,OAAQP,GCZlB,SAASS,EAAgBjrB,EAA6BH,EAA2B4qB,GACpF,IAAKzqB,IAAaA,EAAS5M,KAEvB,MAAO,GAEX,MAAM83B,EAAeX,EAAavqB,EAAS5M,UAAMzF,EAAW88B,EAA0BzqB,EAASU,iBAQ/F,OAPKV,EAASgB,gBAA8C,IAA5BhB,EAASgB,eAG9BhB,EAASgB,iBAChBhB,EAASmrB,KAAOnrB,EAASmrB,MAAQ,GAAGF,EAAgBprB,EAAYG,EAASgB,gBAAiBnB,EAAa4qB,MAA6BS,KAFpIlrB,EAASmrB,KAAOnrB,EAASmrB,MAAQ,IAAID,EAKlClrB,EAASmrB,MAAQ,GAQrB,SAASjqB,EAAelB,EAA6BrR,EAAsBkR,GAC9E,IAAKG,EAASiB,KAAOtS,GAAOkR,EAAa,CACrC,IAAKG,EAASmrB,KAAM,CAChB,MAAMV,EAAsD97B,EAAInE,eAAgB4gC,sCAA4Bz8B,GAAK,GACjHqR,EAASmrB,KAAOF,EAAgBjrB,EAAUH,EAAa4qB,GAE3DzqB,EAASiB,IAAMoqB,qBAAW,WAAY18B,EAAK,CAAEqR,aAEjD,OAAOA,EAASiB,I,mmBC/Bb,SAASoc,EAAkBhyB,EAAwBsD,EAAqBqR,GAC3E,MAAMrN,EAAe,OAAQtH,GAAR,IAAiBU,SAAUV,EAAQ6f,iBAAmB7f,EAAQU,WAEnF,OAAOu/B,EAAsB34B,EAAgBS,MAAQ,GAAIT,EAAgB5G,SAAU4C,EAAKqR,GAQrF,SAASsrB,EAAsBzS,EAAczrB,EAAkBuB,EAAqBqR,GACvF,OAAOqrB,qBAAW,UAAW18B,EAAK,CAC9BtD,QAAS,CAAC+H,KAAMylB,GAAQ,GAAI9sB,SAAUqB,GACtC4S,e,mVCZD,MAAMurB,EAITt9B,YAAYjD,EAAmCwgC,GAKxC,KAAAr9B,YAAc,IAAMrB,wBAAc,uCAAuCwB,KAAKk9B,kBAAqBl9B,KAAKtD,aACxG,KAAAoD,mBAAqB,IAAM,sCAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKk9B,kBAAoBA,EACzBl9B,KAAKtD,YAAcA,GAYpB,MAAMygC,EAA8C/hC,IACvD,MAAM,eAAEc,GAAmBd,EAC3B,OAAKc,EAAewF,KAAKC,gBAIlB,IAAIs7B,EAAqC7hC,EAAUc,eAAeQ,cAQtE0D,eAAeg9B,EAAsCtiC,EAA6CuF,GAErG,IAAMA,EAAInE,eAAewF,KAAKC,gBAC1B,MAAuC,GAG3C,MAAM07B,EAAgF,CAAEC,EAASj9B,GAAMk9B,EAAYziC,EAAOuF,GAAMm9B,EAAan9B,IAC7I,OAAOuC,QAAQ6vB,IAAI4K,GACdn7B,KAAMlH,GACAA,GAAUA,EAAOoG,QAAS,GAAKpG,EAAO,GAAGirB,WAErCwX,YAAsD,CAAEj9B,cAAeH,GAAOrF,EAAO,GAAGqM,GAAIrM,EAAO,GAAGirB,WAAajrB,EAAO,GAAG0iC,UAAY,IAC3Ix7B,KAAKy7B,GACKA,GAEVr4B,MAAMtJ,IAGH,MAFAqE,EAAIoF,UAAUC,UAAU1J,GACxBqE,EAAIoF,UAAUE,MAAM,mDACd,IAAInK,MAAM,qDAGe,IAE1C8J,MAAMtJ,IACoC,KAInDoE,eAAek9B,EAASj9B,GAGpB,aAFwBksB,YAAalsB,IAEpBwT,KAGrBzT,eAAem9B,EAAYziC,EAA6CuF,GACpE,MAAMu9B,EAAmB,IAAIC,sBAAoB/iC,EAAM4B,aACvD,OAAOohC,qBAAWF,EAAkBv9B,GAGxCD,eAAeo9B,EAAan9B,GACxB,OAAOihB,YAA6B,CAAC9gB,cAAeH,EAAKkB,oBAAqB,KAOnEtB,+CAAwC,CACnDC,GAAI,+EACJC,OAA8Bi9B,EAC9BtiC,MAAqDqiC,K,6+UCzElD,MAAMY,EAITp+B,YAAYq+B,EAAkBd,GAKvB,KAAAr9B,YAAc,IAAM,aACpB,KAAAC,mBAAqB,IAAM,aAC3B,KAAAC,cAAgB,IAAiB,OANpCC,KAAKk9B,kBAAoBA,EACzBl9B,KAAKg+B,QAAUA,GAYhB,MAAMC,EACT7iC,IAEI,GAAIA,EAAUc,eAAewF,KAAKC,gBAClC,MAAM,IAAInG,MAAM,4DAGpB,MAAM,QAAEwiC,GAAY5iC,EAAU8S,MAAQ,CAAE8vB,aAAS3+B,GAEjD,IAAK2+B,EACD,MAAM,IAAIxiC,MAAM,0DAGpB,OAAO,IAAIuiC,EAAuBC,IAG/B59B,eAAe89B,EAClBpjC,EACAuF,EACA89B,GAEA,MAAM,kBAAEjB,EAAF,QAAqBc,GAAYljC,EACjCi9B,EAAgB,IAAInyB,mBAAiBvF,EAAInE,eAAeQ,YAAawgC,GACrElF,QAAiBC,kBAAYF,EAAe13B,GAElD,IAAK23B,EACD,MAAM,IAAIx8B,MAAM,+BAGpB,MAAM4iC,EAAcD,E,yWAAiB,CAAD,GAAMnG,GAAYgG,GAChDK,QAAwBC,YAAY,CAAE99B,cAAeH,GAAO+9B,GAElE,IAAKC,EACD,MAAM,IAAI7iC,MAAM,+BAKpB,OAFA6E,EAAIu5B,OAAO2E,YAAgBF,EAAgB9F,eAAgB8F,GAEpDA,EAAgBG,WAAa,GAGjC,SAASC,EAAkBzG,EAAoBgG,GAGlD,OAFAhG,EAASwG,UAAY,IAAKxG,EAASwG,WAAa,IAChDxG,EAASwG,UAAU9yB,KAAKsyB,GACjBhG,EAaI/3B,2CAAsC,CACjDC,GAAI,wDACJC,OAZGC,eAAgCtF,EAAgCuF,GACnE,OAAO69B,EAA6BpjC,EAAOuF,EAAKo+B,IAYhD3jC,MAA4DmjC,EAC5DvkB,WAAW,I,wBC5FR,MAAMglB,EAGT/+B,YAAYg/B,GAIL,KAAA9+B,YAAc,IAAM,sBACpB,KAAAC,mBAAqB,IAAM,sBAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAK0B,KAAOi9B,GA4DL1+B,2CAAgD,CAC3DC,GAAI,kEACJC,OAjCGC,eAAmCtF,EAAiCuF,GACvE,MAAM,KAAEqB,GAAS5G,EAEjB,OAAO8jC,YAAgB,CAAEp+B,cAAeH,IACnC6B,KAAM28B,IAEHn9B,EAAKo9B,kBAAoBD,EAAgBC,kBAElCC,YAA+B,CAAEv+B,cAAeH,GAAMqB,GACxDQ,KAAKy8B,GACKA,GAEVr5B,MAAM,KAEH,MADAjF,EAAIoF,UAAUE,MAAM,wEACd,IAAInK,MAAM,4EAG3B8J,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,uEACd,IAAInK,MAAM,0EAcxBV,MApD0C,CAACM,EAAiDujC,KAC5F,MAAM,eAAEziC,GAAmBd,EAG3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,0BAGpB,OAAO,IAAIkjC,EAAyBC,M,ykBCfjC,MAAMK,EAOTr/B,YAAYuU,EAAgBC,EAAqB8qB,EAAuBC,EAAoCC,GAQrG,KAAAt/B,YAAc,IAAM,GAAGG,KAAKkU,UAAUlU,KAAKmU,cAC3C,KAAArU,mBAAqB,IAAM,WAC3B,KAAAC,cAAgB,IAAiB,OATpCC,KAAKkU,OAASA,EACdlU,KAAKmU,YAAcA,EACnBnU,KAAKi/B,aAAeA,EACpBj/B,KAAKk/B,gBAAkBA,EACvBl/B,KAAKm/B,eAAiBA,GAyFfl/B,2CAA2B,CACtCC,GAAI,qDACJC,OAhFGC,eAA8BtF,EAAsBuF,GACvD,MAAM,YAAE3D,GAAgB2D,EAAInE,eACtB2b,EAAa,GAAGnb,EAAY0iC,0BAA0BtkC,EAAMoZ,oCAC5DmrB,EAAsC,CACxCC,QAAS,CACLC,IAAK7iC,EAAY6iC,IACjB,eAAgB,qBAIpBF,EAAeC,SAAWj/B,EAAInE,eAAewF,KAAKsE,QAClDq5B,EAAeC,QAAQE,cAAgB,YAAYn/B,EAAInE,eAAewF,KAAKsE,OAG3ElL,EAAMokC,iBAAmBpkC,EAAMokC,gBAAgB99B,SAC/CtG,EAAMokC,gBAAkBpkC,EAAMokC,gBAAgB5/B,IAAKmgC,IAQ/C,GALAA,EAAmB,eAAiB,gEAGpCA,EAAmB,qBAAuB,WAEtCA,EAAmBC,uBAGnBD,EAAmBC,qBAAqB,eACpC,sEAICD,EAAmBC,qBAAqBC,QAEzCF,EAAmBC,qBAAqBC,MAAQ,OAGhDF,EAAmBC,qBAAqBE,gBAGxCH,EAAmBC,qBAAqBE,cAAc,eAClD,gEAGJ9kC,EAAMqkC,gBAAgB,CACtB,MAAM,MAAEU,EAAF,yBAASC,EAA2B,GAApC,OAAwCC,EAAxC,KAAgDrd,EAAhD,MAAsDC,EAAtD,QAA6DiF,GAAY9sB,EAAMqkC,eACrFM,EAAmBC,qBAAnB,OACOD,EAAmBC,sBAD1B,IAEIG,QACAhd,QAASid,EAAyB52B,cAClC82B,SAAUD,EACVrd,OACAC,QACAsd,IAAKrY,IAKjB,OAAO6X,KAIf,MAAMS,EAAW,GACbjB,aAAcnkC,EAAMmkC,aACpB9qB,YAAarZ,EAAMqZ,aAAe,MAC9BrZ,EAAMokC,iBAAmB,CAAEA,gBAAiBpkC,EAAMokC,kBAI1D,OAAOiB,8BAAgCtoB,EAAY,OAAQqoB,EAAab,GAAgBn9B,KAAM5B,IAC1F,GAAIA,EAASvF,QAAU,KAAOuF,EAASvF,OAAS,KAAOuF,EAAS4N,KAC5D,OAAO5N,EAAS4N,KACb,GAAI5N,EAAS4N,KAChB,MAAM5N,EAAS4N,KAEnB,MAAM,IAAI1S,MAAM,qEC3GjB,SAAS4kC,EAAqBpI,EAAoBgG,GAGrD,OAFAhG,EAASwG,UAAYxG,EAASwG,WAAa,GAC3CxG,EAASwG,UAAY,IAAIxG,EAASwG,UAAUn1B,OAAOg3B,GAAOA,EAAI5iC,WAAaugC,EAAQvgC,WAC5Eu6B,EAaI/3B,2CAAsC,CACjDC,GAAI,2DACJC,OAZGC,eAAmCtF,EAAgCuF,GACtE,OAAO69B,EAA6BpjC,EAAOuF,EAAK+/B,IAYhDtlC,MAA4DmjC,EAC5DvkB,WAAW,ICnBR,MAAM4mB,EAGT3gC,YAAYg/B,GAIL,KAAA9+B,YAAc,IAAM,yBACpB,KAAAC,mBAAqB,IAAM,yBAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAK0B,KAAOi9B,GA+CL1+B,2CAAgD,CAC3DC,GAAI,qEACJC,OApBGC,eAAsCtF,EAAoCuF,GAC7E,MAAM,KAAEqB,GAAS5G,EAEjB,OAAOylC,YAAY,CAAE//B,cAAeH,GAAMqB,GACrC4D,MAAMC,IAGH,MAFAoB,QAAQC,IAAIrB,GACZlF,EAAIoF,UAAUE,MAAM,2EACd,IAAInK,MAAM,8EAcxBV,MAvC6C,CAACM,EAAiDujC,KAC/F,MAAM,eAAEziC,GAAmBd,EAG3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,0BAGpB,OAAO,IAAI8kC,EAA4B3B,MCvBpC,MAAM6B,EAGT7gC,YAAYg/B,GAIL,KAAA9+B,YAAc,IAAM,uBACpB,KAAAC,mBAAqB,IAAM,uBAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAK0B,KAAOi9B,GAwCL1+B,2CAAgD,CAC3DC,GAAI,mEACJC,OApBGC,eAAoCtF,EAAkCuF,GACzE,MAAM,KAAEqB,GAAS5G,EAEjB,OAAOwjC,YAAY,CAAE99B,cAAeH,GAAMqB,GACrCQ,KAAKu+B,GACKA,GAEVn7B,MAAM,KAEH,MADAjF,EAAIoF,UAAUE,MAAM,yEACd,IAAInK,MAAM,4EAYxBV,MAhC2C,CAACM,EAAiDujC,KAC7F,MAAM,eAAEziC,GAAmBd,EAG3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,0BAGpB,OAAO,IAAIglC,EAA0B7B,MCvBlC,MAAMjuB,EAKT/Q,YAAY+gC,EAAkB1lC,EAAW2lC,GAMlC,KAAA9gC,YAAc,IAAM,WAAWG,KAAK0gC,SACpC,KAAA5gC,mBAAqB,IAAM,GAAGE,KAAK2gC,gBACnC,KAAA5gC,cAAgB,IAAiB,OAPpCC,KAAK0gC,SAAWA,EAChB1gC,KAAK2gC,gBAAkBA,EACvB3gC,KAAKhF,OAASA,GAcfoF,eAAeuQ,EAAoB7V,EAAwBuF,GAC9D,OAAOvF,EAAME,O,gKCTFiF,2CAA2B,CACtCC,GAAI,uEACJC,OAAgCsB,eAChC3G,MAfqCM,IACrC,GACIA,EAAUc,gBACVd,EAAUc,eAAewF,MACzBtG,EAAUc,eAAewF,KAAKC,gBAE9B,OAAOi/B,YAAmC,GAAI,MAGlD,MAAM,IAAIplC,MAAM,wE,wICHb,MAAMqlC,GAUTlhC,YACI+xB,EACA1D,EACArvB,EACAmiC,EACA3jC,EACA80B,GAUG,KAAApyB,YAAc,IAAM,2CACpB,KAAAC,mBAAqB,IAAM,sCAC3B,KAAAC,cAAgB,IAAiB,OAVpCC,KAAK0xB,yBAA2BA,EAChC1xB,KAAKguB,WAAaA,GAAc,GAChChuB,KAAKrB,UAAYA,EACjBqB,KAAK8gC,mBAAqBA,GAAsB,GAChD9gC,KAAK7C,UAAYA,GAAa,EAC9B6C,KAAK+gC,uBAAyB9O,GAuDvBhyB,4CAA2B,CACtCC,GAAI,oFACJC,OArBG,SACHrF,EACAuF,GAEA,OCzDGD,eACHtF,EACAuF,EACA2gC,GAGA,IAAKlmC,IAAUA,EAAMgmC,mBAEjB,OADAzgC,EAAI8B,MAAM,gEAC6B,GAG3C,IAAKrH,EAAMgmC,mBAAmB1/B,OAE1B,OADAf,EAAI8B,MAAM,wEAC6B,GAE3C,MAAM,YAAEzF,GAAgB2D,EAAInE,eAE5B,IAAIo2B,EAAwC,GAE5C,MAAM2O,QAAsBD,IAW5B,GAVKC,EAGD3O,EAAoB2O,EAAc3hC,IAC7BvC,GACU,IAAI4O,IAAiB5O,EAAQU,SAAUf,EAAa5B,EAAMimC,wBAA0B,IAAIG,MAJvG7gC,EAAIoF,UAAUF,MAAM,2EASpB+sB,EAAkBlxB,OAAQ,CAE1B,MAAO,CACHgxB,0BAFwBxmB,YAAgB0mB,EAAmBjyB,GAG3DygC,mBAAoBhmC,EAAMgmC,oBAG9B,MAAO,CACH1O,oBAAqB,GACrB0O,mBAAoBhmC,EAAMgmC,oBDkB3BK,CACHrmC,EACAuF,EAEA,IACW+gC,YACH,CAAE5gC,cAAeH,EAAKkB,oBAAqBzG,EAAM42B,yBAAyBniB,qBAC1EzU,EAAM6D,WAAa,EACnB7D,EAAMqC,UACNrC,EAAMkzB,WACNlzB,EAAMgmC,sBAQlBhmC,MA/CsDM,IACtD,MAAM0lC,EAAqB1lC,EAAUmB,QAAUnB,EAAUmB,OAAOukC,mBAC1DpP,EAA2BriB,IAAyBC,cAAclU,GACxE,IAAKsF,MAAMC,QAAQmgC,GACf,OAAO,IAAID,GAAoCnP,GAGnD,MAAMr2B,EAAkBC,YAAgBF,GAClC+B,EAAY/B,EAAUc,eAAeQ,YAAYS,UACjD4jC,EAAyB5iC,YAAyC/C,GAExE,OAAO,IAAIylC,GACPnP,EACAr2B,EAAgBE,EAChBF,EAAgBsD,UACOmiC,EACvB3jC,EACA4jC,IA+BJrnB,WAAW,I,sCEtFR,MAAMxK,GAcTvP,YACI0hC,EACA30B,EACAC,EACAE,EACAE,EACAE,EACAb,EACA4B,EACAY,EACA0yB,EACA/yB,EACAG,GAgBG,KAAApL,kBAAoB,KAAM,EAC1B,KAAAxD,mBAAqB,IAAM,OAC3B,KAAAD,YAAc,IAAM,GAAGG,KAAKuhC,cAAcvhC,KAAKwhC,cAAcxhC,KAAKyhC,gBAAgBzhC,KAAK0hC,YAhB1F1hC,KAAKuhC,WAAaF,EAClBrhC,KAAKyM,MAAQC,EACb1M,KAAK3C,YAAcsP,EACnB3M,KAAK4M,iBAAmBC,EACxB7M,KAAK8M,gBAAkBC,EACvB/M,KAAKgN,gBAAkBC,EACvBjN,KAAKmN,OAASf,EACdpM,KAAK2hC,MAAQ3zB,EACbhO,KAAK4hC,aAAehzB,EACpB5O,KAAKwhC,WAAaF,EAClBthC,KAAKyhC,aAAelzB,EACpBvO,KAAK0hC,UAAYhzB,GAmFzB,SAASzC,GAAUG,GACf,MAAMiB,EAA2B,GAEjC,OAAKjB,GAILA,EAAOd,QAAQzG,IACX,GAAIA,GAAQA,EAAKyI,OAASzI,EAAKyI,MAAMC,KAAM,CAEvC,MAAMC,EAAmB,CACrBD,KAAM1I,EAAKyI,MAAMC,KACjBE,QAAS5I,EAAKyI,MAAMG,QACpBf,MAAO7H,EAAKyI,MAAMZ,MAClBgB,MAAO7I,EAAKyI,MAAMI,MAClBC,OAAQ9I,EAAKyI,MAAMK,QAGvBN,EAAgB3B,KAAK8B,MAItBH,GAlBIA,EA0Ef,SAASvB,GAAejH,EAAsBkH,GAC1C,MAAMC,EAAqBC,GAAUpH,EAAKqH,OAAOC,QAAQC,QAEnDC,GArDaC,EAqDezH,EAAKqH,OAAOK,MArDTC,EAqDgBT,EApDhDO,EAIDE,EAKG,GAAGA,KAAYF,MAJX,IAAIA,MAJJ,IAFf,IAAuBA,EAAkBE,EAsDrC,MAAO,CACHC,MAAO5H,EAAKqH,OAAOC,QAAQO,MAC3BrP,YAAawH,EAAKqH,OAAOC,QAAQQ,YACjCC,iBAAkB/H,EAAKqH,OAAOC,QAAQU,iBACtCC,gBAAiBjI,EAAKqH,OAAOC,QAAQY,gBACrCC,gBAAiBnI,EAAKqH,OAAOC,QAAQc,gBACrCC,KAAMb,EACNc,OAAQnB,GAOhB,SAASoB,GAAYhS,GAEjB,OAAOA,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAesQ,SAAWpR,EAAUc,eAAesQ,SAAW,GAqG7GvM,4CAA2B,CACtCC,GAAI,qDACJC,OApQGC,eAA2BtF,EAAkBuF,GAChDA,EAAI8B,MAAM,eAAerH,EAAM2R,OAG/B,MAAM,YAAE/P,GAAgB2D,EAAInE,eAGtBlB,EAAe,CACjByR,MAAO3R,EAAM2R,MACbpP,YAAavC,EAAMuC,YACnBuP,iBAAkB9R,EAAM8R,iBACxBE,gBAAiBhS,EAAMgS,gBACvBE,gBAAiBlS,EAAMkS,gBACvB20B,MAP2C,GAQ3CH,WAAY1mC,EAAM0mC,YAGtB,GAAI1mC,GAASA,EAAM6mC,OAAS7mC,EAAM6mC,MAAMvgC,OAAQ,CAE5C,IAAIyG,EAA4B,GAChC,GAAI/M,EAAM8mC,cAAgB9mC,EAAM8mC,aAAaxgC,OAAQ,CACjD,MAAMygC,EAAa/mC,EAAM8mC,aAAatiC,IAAIuF,GAAQ,IAAIqL,MAAcrL,EAAKpH,SAAUf,IACnFmL,QAAkCi6B,aAAYD,EAAYxhC,GAI9D,MAAM0hC,EAAoD,GAC1Dl6B,EAASyD,QAAQzG,IACTA,IACAk9B,EAAW,GAAGl9B,EAAKpH,UAAcoH,KAIzC,IAAK,MAAMm9B,KAAYlnC,EAAM6mC,WAoBMtiC,IAnBjB2iC,EAmBM70B,OAlBhBnS,EAAO2mC,MAAMj2B,KAAKs2B,GAElBA,EAAS12B,QAAQzG,IACTk9B,EAAWl9B,EAAKpH,WAChBzC,EAAO2mC,MAAMj2B,KAAKq2B,EAAWl9B,EAAKpH,aAOtD,OAAOzC,GAuNPF,MAzEqBM,IACrB,MAAMyS,EAtFV,SAAyBzS,GACrB,IAAIyS,EACCzS,GAAcA,EAAUc,gBAAmBd,EAAUc,eAAe4R,SAAkB1S,EAAUc,eAAe4R,SAASC,KAAzC,KACpF,KACK3S,GACAA,EAAUc,gBACVd,EAAUc,eAAe4R,UACzB1S,EAAUc,eAAe4R,SAASC,MAClC3S,EAAUc,eAAe4R,SAASC,KAAK5B,SACvC/Q,EAAUc,eAAe4R,SAASC,KAAK5B,QAAQ6B,OAC/C5S,EAAUc,eAAe4R,SAASC,KAAK5B,QAAQO,OAC/CtR,EAAUc,eAAe4R,SAASC,KAAKE,KAC1C,CACE,KACK7S,GACAA,EAAU8S,MACV9S,EAAU8S,KAAKH,MACf3S,EAAU8S,KAAKH,KAAK5B,SACpB/Q,EAAU8S,KAAKH,KAAK5B,QAAQ6B,OAC5B5S,EAAU8S,KAAKH,KAAK5B,QAAQO,OAC5BtR,EAAU8S,KAAKH,KAAKE,KAGrB,MADAtH,QAAQpB,MAAM,kDACR,IAAI/J,MAAM,kDAGpBqS,EAAWzS,EAAU8S,KAAKH,KAE9B,OAAOF,EA0D0Bo0B,CAAgB7mC,GAC3CgT,EAA2C,GACjD,IAAIC,EAA8B,GAElC,MAAMC,EAA2BrC,GAAU4B,EAAS1B,QAAQC,QAEtDmC,EAhCV,SAAyBnT,GACrB,IAAKA,IAAcA,EAAUmB,SAAWnB,EAAUmB,OAAOgS,aACrD,OAAO,GAGX,MAAMvT,EAASY,OAAOR,EAAUmB,OAAOgS,cACvC,OAAIC,MAAMxT,GACC,GAGJA,EAsBcyT,CAAgBrT,GAC/BsT,EAjBV,SAAsBtT,GAClB,OAAOA,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMuS,UAC3G9S,OAAOR,EAAUc,eAAeC,MAAMuS,WACtC,EAcYC,CAAavT,GAGzBwT,EAA+B,GAC/BC,EAAMH,EAAYH,EACxB,IAAK,IAAIO,EAAQJ,EAAWI,EAAQjB,EAAS1B,QAAQ6B,MAAM5M,QAAU0N,EAAQD,EAAKC,IAAS,CACvF,MAAMjK,EAAOgJ,EAAS1B,QAAQ6B,MAAMc,GACpC,GAAa,SAATjK,EAAKkK,KAA4B,CACjC,IAAKlK,EAAKqH,SAAWrH,EAAKqH,OAAOC,UAAYtH,EAAKqH,OAAOC,QAAQO,MAAO,CACpE/F,QAAQpB,MAAM,yDAAyDsI,EAASI,KAChF,SAIJ,GAA6B,IAAvBI,EAAYjN,OAAe,CAC7B,MAAM4N,EAAa,IAAIX,GACvBD,EAAU1C,KAAKsD,GACfX,EAAc,GAIlBD,EAAU1C,KAAKI,GAAejH,EAAMuI,GAAYhS,KAGpD,GAAa,YAATyJ,EAAKkK,KAA+B,CACpC,IAAKlK,EAAKqH,SAAWrH,EAAKqH,OAAOpN,SAAU,CACvC6H,QAAQpB,MAAM,yCAAyCsI,EAASI,KAChE,SAIJ,MAAMgB,EAA4B,CAC9BxR,SAAUoH,EAAKqH,OAAOpN,SACtB1B,UAAWyH,EAAKqH,OAAO/O,WAAa,KAGxCkR,EAAY3C,KAAKuD,GACjBL,EAAalD,KAAKuD,IAS1B,OAJ6B,IAAvBZ,EAAYjN,QACdgN,EAAU1C,KAAK2C,GAGZ,IAAIa,GACPrB,EAASI,IACTJ,EAAS1B,QAAQO,MACjBmB,EAAS1B,QAAQQ,YACjBkB,EAAS1B,QAAQU,iBACjBgB,EAAS1B,QAAQY,gBACjBc,EAAS1B,QAAQc,gBACjBqB,EACAF,EACAQ,EACAf,EAAS1B,QAAQ6B,MAAM5M,OACvBmN,EACAG,M,uCCzTD,MAAMwzB,GAMTviC,YAAYvD,EAAmBuC,EAAmB0F,EAAiClH,GAO5E,KAAA0C,YAAc,IAAM,mCACpB,KAAAC,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAK5D,UAAYA,EACjB4D,KAAKrB,UAAYA,EACjBqB,KAAK7C,UAAYA,GAAa,EAC9B6C,KAAKqE,gBAAkBA,GA0EhBpE,4CAA2B,CACtCC,GAAI,qFACJC,OAjDGC,eACHtF,EACAuF,GAEA,OAAO8hC,cAAYt/B,UACdX,KAAK,KACF,MAAM8C,EAA2ClK,EAAMuJ,gBAEvD,IAAKW,EAAe,CAChB,MAAMC,EAAuB,IAAIvF,wBAAqB5E,EAAMsB,UAAWtB,EAAM6D,WAG7E,OAAmCuG,mBAAmBD,EAAsB5E,GAGhF,OAAO2E,IAEV9C,KAAKiD,IACF,MAAMH,EAAsEG,EAE5E,OAAIH,EACOo9B,YAAuB,CAAE5hC,cAAeH,EAAKkB,oBAAqB,IAAMyD,EAAcvH,SAAU3C,EAAM6D,UAAW7D,EAAMqC,WAAW+E,KAAK5B,GACnIA,EAAShB,IACX+iC,IACGA,EAAcC,IAAM9lC,YAAiB6lC,EAAcC,IAAKjiC,EAAInE,eAAeQ,aAC3E2lC,EAAcE,QAAUF,EAAcE,QAAUF,EAAcE,QAAUv9B,EAAcF,KAC/Eu9B,KAMhB,KAEV/8B,MAAMC,IAIH,MAHAlF,EAAI8B,MAAMoD,GACVlF,EAAIoF,UAAUF,MAAMA,EAAMC,SAC1BnF,EAAIoF,UAAUE,MAAM,qEACd,IAAInK,MAAM,wEAYxBV,MAhEAM,IAEA,MAAMgB,EAAYH,YAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAI8lC,IAAuC9lC,GAAYhB,EAAUc,eAAeQ,YAAYiC,WAEnG,MAAM,IAAInD,MAAM,2GCjBTyE,4CAA2B,CACtCC,GAAI,8DACJC,OAAmCsB,eACnC3G,MAtBiBM,IACjB,GACIA,EAAUc,gBACVd,EAAUc,eAAewF,MACzBtG,EAAUc,eAAewF,KAAKC,gBAE9B,OAAO6gC,YAAoC,CACvC/mC,OAAQ,CACJC,IAAK,IACLI,KAAM,IAId,MAGJ,MAAM,IAAIN,MAAM,wE,uCCRb,MAAMinC,GAGT9iC,YAAY4B,GAIL,KAAA1B,YAAc,IAAM,wCAAwCyuB,0BAAgBtuB,KAAKuB,qBACjF,KAAAzB,mBAAqB,IAAM,uCAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKuB,oBAAsBA,GAyCpBtB,4CAA2B,CACtCC,GAAI,gFACJC,OAfGC,eAA+CtF,EAA6C0J,GAAuB,QACtH,GAAKA,SAAD,UAACA,EAAStI,sBAAV,iBAAC,EAAyBwF,YAA1B,QAAC,EAA+BC,gBAChC,MAAM,IAAInG,MAAM,2DAGpB,MAAMqjC,QAAwBD,YAAgB,CAAEp+B,cAAegE,IAC/D,IAAKq6B,EACD,MAAM,IAAIrjC,MAAM,wEAGpB,OAAOknC,YAAqB,CAAEliC,cAAegE,EAASjD,oBAAqBzG,EAAMyG,qBAAuBs9B,EAAgBC,oBAMxHhkC,MA/BAM,IAAyE,QAEzE,GAAKA,SAAD,UAACA,EAAWc,sBAAZ,iBAAC,EAA2BwF,YAA5B,QAAC,EAAiCC,gBAClC,MAAM,IAAInG,MAAM,2DAGpB,MAAM+F,EAA4C8N,IAAyBC,cAAclU,GAAWmU,oBACpG,OAAO,IAAIkzB,GAAqClhC,M,0BC3B7C,MAAMkwB,GAST9xB,YAAY+R,EAAgChV,EAAmCg1B,GASxE,KAAA7xB,YAAc,IAAMrB,YAAc,GAAGwB,KAAKob,YAAcpb,KAAK2xB,gBAAgB3xB,KAAK7C,aAAa6C,KAAK0xB,yBAAyBE,eAAgB5xB,KAAKtD,aAClJ,KAAAoD,mBAAqB,IAAM,uBAC3B,KAAAC,cAAgB,IAAiB,cAVpCC,KAAKtD,YAAcA,EACnBsD,KAAK6xB,gBAAkBngB,EACvB1R,KAAK0xB,yBAA2BA,EAChC1xB,KAAK7C,UAAYT,EAAYS,UAC7B6C,KAAKob,WAAa1J,EAAS0J,WAC3Bpb,KAAK2xB,aAAejgB,EAASigB,cAmEtB1xB,4CAA2B,CACtCC,GAAI,qEACJC,OAzCGC,eAA2CtF,EAAgCuF,GAC9E,MAAM,YAAE3D,GAAgB2D,EAAInE,eAC5B,IAAIkf,EAAatgB,EAAM+2B,gBAAgBzW,WACvC,GAAItgB,EAAM+2B,gBAAgBF,eAAiBvW,EAAY,CACnD,MAAM1J,QAAiBixB,kBAAmB7nC,EAAM+2B,gBAAiBxxB,GACjE,IAAKqR,EAED,OADArR,EAAI8B,MAAM,yDACc,GAE5BiZ,EAAa1J,EAASjU,SAG1B,MAAM4N,QAAsBu3B,YACxB,CAAEpiC,cAAeH,EAAKkB,oBAAqBzG,EAAM42B,yBAAyBniB,sBACzE7S,EAAYiC,UACb7D,EAAMqC,UACNie,GAAc,GAChBlZ,KAAKkd,GACIA,EAAqB9f,IACvBvC,GACU,IAAImT,KAAanT,EAAQU,SAAUf,KAKtD,OAAI2O,EAAcjK,OAAS,QACOgP,aAAY/E,EAAehL,GAEjC,IAc5BvF,MA3D6CM,IAC7C,GAAIA,GAAaA,EAAUc,eAAgB,CACvC,MAAM21B,EAAkB,IAAIK,uBAAqB92B,EAAUc,gBACrDw1B,EAA2BriB,IAAyBC,cAAclU,GACxE,OAAO,IAAIq2B,GACPI,EACAz2B,EAAUc,eAAeQ,YACzBg1B,GAIR,MAAM,IAAIl2B,MAAM,yD,uCCxCb,MAAMqnC,GAGTljC,YAAYjD,GAIL,KAAAmD,YAAc,IAAMrB,YAAc,sCAAuCwB,KAAKtD,aAC9E,KAAAoD,mBAAqB,IAAM,sCAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAKtD,YAAcA,GA+CZuD,4CAA2B,CACtCC,GAAI,gFACJC,OAlCGC,eAAmDtF,EAAyCuF,GAE/F,IAAKvF,EACD,MAAM,IAAIU,MAAM,6EAEpB,MAAMsnC,QAAkBvW,aAAalsB,GACrC,GAAGyiC,EAAUC,eAET,OADA1iC,EAAI8B,MAAM,+DACkB,GAEhC,MAAM0R,EAAOivB,EAAUjvB,KACjBhM,QAAiBm7B,mBAA4B,IAAIC,2BAA2B5iC,GAElF,IAAIwT,IAASA,EAAK6J,YAAc7V,GAAgC,IAApBA,EAASzG,OAGjD,OAFAuF,QAAQC,IAAI,6GACZvG,EAAI8B,MAAM,6GACkB,GAGhC,MAAM8e,EAAcpN,EAAK6J,UAAUpe,IAAI6gB,GAAKA,EAAEU,QAAU,IAExD,OAAOqiB,aAA4B,CAAE1iC,cAAeH,EAAKkB,oBAAqB,GAAIkd,YAAa,OAAS5K,EAAKxM,GAAI4Z,GAAe,MAC3H/e,KAAKlH,GACKA,GACRsK,MAAOC,IAIN,MAHAlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,+DACd,IAAInK,MAAM,kEAOxBV,MA1CiBM,GACV,IAAIynC,GAAiCznC,EAAUc,eAAeQ,e,aClBlE,MAAMymC,GAgBTxjC,YACIvD,EACAuH,EACAE,GAQG,KAAAhE,YAAc,IAAM,GAAGG,KAAK5D,aAAa4D,KAAK2D,WAC9C,KAAA7D,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAAiB,cARpCC,KAAK5D,UAAYA,EACjB4D,KAAK2D,SAAWA,EAChB3D,KAAK6D,gBAAkBA,GCjBxB,MAAMu/B,GAITzjC,YAAY+R,EAAgCggB,EAAoDv0B,GAMzF,KAAA0C,YAAc,IAAM,GAAGG,KAAK6xB,gBAAgBhyB,iBAAiBG,KAAK7C,aAAa6C,KAAK0xB,yBAAyBE,eAC7G,KAAA9xB,mBAAqB,IAAM,iBAC3B,KAAAwD,kBAAoB,KAAM,EAP7BtD,KAAK0xB,yBAA2BA,EAChC1xB,KAAK7C,UAAYA,GAAa,EAC9B6C,KAAK6xB,gBAAkBngB,GAWxB,MAAM2xB,GAAiCjoC,IAC1C,GAAIA,GAAaA,EAAUc,eAAgB,CACvC,MAAMiB,EAAY/B,EAAUmB,OAASX,OAAOR,EAAUmB,OAAOY,WAAa,EACpE00B,EAAkB,IAAIK,uBAAqB92B,EAAUc,gBAE3D,OAAO,IAAIknC,GACPvR,EACAxiB,IAAyBC,cAAclU,GACvCQ,OAAO4S,MAAMrR,GAAa,EAAIA,GAItC,MAAM,IAAI3B,MAAM,uDAwBLyE,4CAA2B,CACtCC,GAAI,qEACJC,OApBGC,eAA2CtF,EAAgCuF,GAC9E,IAAI+a,EAAatgB,EAAM+2B,gBAAgBzW,WACvC,GAAItgB,EAAM+2B,gBAAgBF,eAAiBvW,EAAY,CACnD,MAAM1J,QAAiBixB,kBAAmB7nC,EAAM+2B,gBAAiBxxB,GACjE,IAAKqR,EAED,OADArR,EAAI8B,MAAM,yDACe,GAE7BiZ,EAAa1J,EAASjU,SAG1B,OAAO6lC,YACH,CAAE9iC,cAAeH,EAAKkB,oBAAqBzG,EAAM42B,yBAAyBniB,qBAC1EzU,EAAMqC,UACNie,GAAc,IAOlBtgB,MAAOuoC,KCxDJ,MAAME,GAMT5jC,YACIquB,EACA7wB,EACAu0B,EACAh1B,GAOG,KAAAmD,YAAc,IAAMrB,YAAc,GAAGwB,KAAKguB,cAAchuB,KAAK7C,aAAa6C,KAAK0xB,yBAAyBE,eAAgB5xB,KAAKtD,aAC7H,KAAAoD,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAAiB,UARpCC,KAAK7C,UAAYA,EACjB6C,KAAKguB,WAAaA,EAClBhuB,KAAK0xB,yBAA2BA,EAChC1xB,KAAKtD,YAAcA,GAWpB,MAAM8mC,GAA6BpoC,IACtC,MAAMC,EAAkBC,YAAgBF,GAClC+B,EAAY/B,EAAUmB,OAASX,OAAOR,EAAUmB,OAAOY,WAAa,EAE1E,OAAO,IAAIomC,GACPloC,EAAgBE,EAChBK,OAAO4S,MAAMrR,GAAa,EAAIA,EAC9BkS,IAAyBC,cAAclU,GACvCA,EAAUc,eAAeQ,cAclBuD,4CAA2B,CACtCC,GAAI,iEACJC,OATGC,eAAuCtF,EAA4BuF,GACtE,OAAOojC,YACH,CAAEjjC,cAAeH,EAAKkB,oBAAqBzG,EAAM42B,yBAAyBniB,qBAC1EzU,EAAMqC,UACNrC,EAAMkzB,aAMVlzB,MAAO0oC,KC5CJ,MAAME,GAOT/jC,YACIvD,EACAe,EACAwmC,EACAjS,EACAO,GASG,KAAApyB,YAAc,IACjB,GAAGG,KAAK5D,aAAa4D,KAAK7C,aAAa6C,KAAK2jC,aAAa5xB,iBAAiB/R,KAAK0xB,yBAAyBE,gBACpG5xB,KAAKkhC,uBAAuB9iC,WAE7B,KAAA0B,mBAAqB,IAAM,qBAC3B,KAAAC,cAAgB,IAAiB,OAZpCC,KAAK5D,UAAYA,EACjB4D,KAAK7C,UAAYA,EACjB6C,KAAK2jC,aAAeA,EACpB3jC,KAAK0xB,yBAA2BA,EAChC1xB,KAAKkhC,uBAAyBjP,GAuHvBhyB,4CAA2B,CACtCC,GAAI,iEACJC,OA/DJC,eAAwCtF,EAAgCuF,GACpE,MAAM3D,EAAc2D,EAAInE,eAAeQ,YACjCknC,EAAgB9oC,EAAM42B,yBAAyBniB,oBAE/Cs0B,QAA6BC,YAC/B,CAAEtjC,cAAeH,EAAKkB,oBAAqBqiC,GAC3C9oC,EAAMsB,WACLM,EAAYiC,UACb7D,EAAMqC,WAEV,IAAK0mC,EAED,OADAxjC,EAAI8B,MAAM,6EAA6ErH,EAAMsB,WACvE,GAE1B,MAAM2nC,EA1BH,SAAmCF,EAA6CG,GACnF,IAAIC,EAQJ,OAPAD,EAAuBA,EAAqBjyB,cAC5C8xB,EAAqBv4B,QAAS44B,IAC1B,GAAIA,EAAoBp/B,MAAQo/B,EAAoBp/B,KAAKiN,gBAAkBiyB,EACvE,OAAQC,EAA6BC,EAAoBzmC,WAI1DwmC,EAiBuBE,CAA0BN,EAAsB/oC,EAAM6oC,cACpF,IAAKI,EAED,OADA1jC,EAAI8B,MAAM,qDAAqDrH,EAAM6oC,4BAA4B7oC,EAAMsB,aACjF,GAG1B,MAAMiP,QAAsB+4B,YACxB,CAAE5jC,cAAeH,EAAKkB,oBAAqBqiC,GAC3C9oC,EAAMsB,WACLM,EAAYiC,UACb7D,EAAMqC,UACN4mC,GAEC7hC,KAAK5B,GACEA,GAAYA,EAASc,OACdd,EAAShB,IACXvC,GACU,IAAI4O,IAAiB5O,EAAQU,SAAUf,EAAa5B,EAAMomC,0BAK7E7gC,EAAI8B,MAAM,2DACiB,KAE9BmD,MAAOC,IACJlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAI8B,MAAMoD,EAAM8+B,OAAS,IACzBhkC,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,wDACpBtF,EAAI8B,MAAM,wDACiB,KAGnC,OAAIkJ,EAAcjK,OAAS,EAChBwK,YAAgBP,EAAehL,GAEhB,IAa1BvF,MA5G0CM,IAC1C,GAAIA,GAAaA,EAAUc,gBAAkBd,EAAUmB,OAAQ,CAC3D,MAAMY,EAAY/B,EAAUc,eAAeQ,YAAYS,UACjDwmC,EAAevoC,EAAUmB,OAAOonC,aAGtC,IAAIvnC,EAAYhB,EAAUc,eAAeG,UAAYT,OAAOR,EAAUc,eAAeG,UAAUyC,UAAY,EAC3G,MAAMiiC,EAAyB5iC,YAAyC/C,GACxE,IAAKuoC,EACD,MAAM,IAAInoC,MAAM,mCAQpB,GAJIJ,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMC,YACjEA,EAAYR,OAAOR,EAAUc,eAAeC,MAAMC,YAGlDR,OAAO4S,MAAMpS,IAAcA,GAAa,EACxC,MAAM,IAAIZ,MAAM,yDAGpB,GAAII,OAAO4S,MAAMrR,GACb,MAAM,IAAI3B,MAAM,4CAGpB,MAAMk2B,EAA2BriB,IAAyBC,cAAclU,GACxE,OAAO,IAAIsoC,GAAwBtnC,EAAWe,EAAWwmC,EAAcjS,EAA0BqP,GAGrG,MAAM,IAAIvlC,MAAM,4CC/Db,MAAM8oC,GAGT3kC,YAAYjD,GAIL,KAAAmD,YAAc,IAAMrB,YAAc,eAAgBwB,KAAKtD,aACvD,KAAAoD,mBAAqB,IAAM,sBAC3B,KAAAC,cAAgB,IAAiB,UALtCC,KAAKtD,YAAcA,GAsBVuD,4CAA2B,CACtCC,GAAI,sEACJC,OANGC,eAA4CtF,EAAiCuF,GAChF,OAAOuI,YAA4B,CAAEpI,cAAeH,KAMpDvF,MAd2CM,GACpC,IAAIkpC,GAAyBlpC,EAAUc,eAAeQ,e,uCCtB1D,MAAM6nC,GAIT5kC,YAAYjD,EAAmCwgC,GAKxC,KAAAr9B,YAAc,IAAMrB,YAAc,gBAAgBwB,KAAKk9B,kBAAqBl9B,KAAKtD,aACjF,KAAAoD,mBAAqB,IAAM,kBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKk9B,kBAAoBA,EACzBl9B,KAAKtD,YAAcA,GA0D3B0D,eAAem9B,GAAYziC,EAA0BuF,GACjD,MAAMu9B,EAAmB,IAAIC,uBAAoB/iC,EAAM4B,aACvD,OAAO8nC,4BAAiB5G,EAAkBv9B,GAG9C,SAASokC,GAAW3B,EAAuB4B,GACvC5B,EAAU6B,oBAAoB,CAACC,kBAAmBF,EAAKze,aAO5ChmB,4CAAwC,CACnDC,GAAI,0DACJC,OA9CGC,eAAkCtF,EAA0BuF,GAC/D,MAAMg9B,EAAuD,CAAE9Q,aAAalsB,GAAMk9B,GAAYziC,EAAOuF,IACrG,OAAOuC,QAAQ6vB,IAAI4K,GACVn7B,KAAMlH,IACH,MAAM8nC,EAAY9nC,EAAO,GACnB0pC,EAAO1pC,EAAO,GACpB,OAAI0pC,GAAQA,EAAKze,YACbwe,GAAW3B,EAAW4B,GACfA,GAIJG,YAAsB,CAAErkC,cAAeH,GAAO,CAAEopB,gBAAiB3uB,EAAMoiC,mBAAqB,OAC9Fh7B,KAAM4iC,IACHL,GAAW3B,EAAWgC,GACfA,IAGVx/B,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,+BACd,IAAInK,MAAM,mCAG3B8J,MAAOC,IAGJ,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,gCACd,IAAInK,MAAM,mCAoB5BV,MA9DoCM,IACpC,MAAM,eAAEc,GAAmBd,EAE3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,qEAGpB,OAAO,IAAI+oC,GAAkBnpC,EAAUc,eAAeQ,gB,aCvBnD,MAAMqoC,GAMTplC,YAAY6T,EAAyBpX,EAAmBc,EAAkB8nC,GAOnE,KAAAnlC,YAAc,IAAM,8BACpB,KAAAC,mBAAqB,IAAM,8BAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAKwT,gBAAkBA,EACvBxT,KAAK5D,UAAYA,EACjB4D,KAAK9C,SAAWA,EAChB8C,KAAKglC,cAAgBA,GAAiB,MA2D/B/kC,4CAA4C,CACvDC,GAAI,uFACJC,OA/BGC,eAA4CtF,EAAoCuF,GACnF,IACI,MAAM4kC,EAAwC,CAC1CC,cAAepqC,EAAM0Y,gBACrBhW,UAAW1C,EAAMsB,UACjBsB,SAAU5C,EAAMoC,SAChBioC,cAAerqC,EAAMkqC,eAGnBI,QAA2CC,aAAyB,CACtE7kC,cAAeH,GAChBvF,EAAM0Y,gBAAiB,CAACyxB,IAE3B,GAAIG,GAA8C,IAA3BA,EAAgBhkC,QAAgBgkC,EAAgB,IAAMA,EAAgB,GAAGF,cAC5F,OAAOE,EAAgB,GAGvB,MADA/kC,EAAIoF,UAAUF,MAAM,uEACd/J,MAAM,uEAElB,MAAO+J,GAEL,MADAlF,EAAIoF,UAAUF,MAAM,4CAA6CA,GAC3DA,IAWVzK,MA/CuC,CACvCM,EAAiCoY,EAAyBpX,EAAmBc,EAAkB8nC,KAE/F,MAAM,eAAE9oC,GAAmBd,EAC3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,+DAEpB,OAAO,IAAIupC,GAA4BvxB,EAAiBpX,EAAWc,EAAU8nC,M,yBC9B1E,MAAMM,GAKT3lC,YAAY6T,EAAyBjS,EAA2CysB,GAMzE,KAAAnuB,YAAc,IAAM,kCAAkCG,KAAKwT,mBAAmB8a,0BAAgBtuB,KAAKuB,wBAAwBvB,KAAKguB,aAChI,KAAAluB,mBAAqB,IAAM,iCAC3B,KAAAC,cAAgB,IAAiB,OAPpCC,KAAKwT,gBAAkBA,EACvBxT,KAAKuB,oBAAsBA,EAC3BvB,KAAKguB,WAAaA,GAAc,IAyBjC5tB,eAAemlC,GAAqCzqC,EAA4C0J,GACnG,IAAKA,EAAQtI,eAAewF,KAAKC,gBAC7B,MAAM,IAAInG,MAAM,kEAGpB,MAAMgqC,EAAoD,CACtDC,MAAO,GACPC,WAAY,GAEVlM,EAAUmM,aAAyB,CACrCnlC,cAAegE,EAASjD,oBAAqBzG,EAAMyG,qBACpDzG,EAAM0Y,gBAAiB1Y,EAAMkzB,YAC1B4X,QAAyBpM,EACzBnuB,EAAoC,GAC1C,GAAIu6B,GAAoBA,EAAiBxkC,OAAS,EAAG,CAQjD,GAPAokC,EAAwBE,WAAalM,EAAQv+B,SAASwY,OAAS+xB,EAAwBC,MAAMrkC,OAC7FwkC,EAAiBt6B,QAASu6B,IAClBA,EAASroC,YACTgoC,EAAwBC,MAAM/5B,KAAK,IAAIo6B,KAAkBD,IACzDx6B,EAAcK,KAAK,IAAIC,IAAiBk6B,EAASroC,UAAWgH,EAAQtI,eAAeQ,YAAayB,YAAyCqG,QAG7I6G,EAAcjK,OAAS,EAAG,CAC1B,MAAM2kC,QAAyBn6B,YAAgBP,EAAe7G,GACzDtC,KAAM2F,GACCA,GAGsB,IAG7BvC,MAAMC,IACHf,EAAQrC,MAAMoD,GACdf,EAAQiB,UAAUF,MAAMA,EAAMC,SAC9BhB,EAAQiB,UAAUF,MAAM,6EAYhC,OAVIwgC,GACAP,EAAwBC,MAAMn6B,QAAQ06B,IAClC,MAAMC,EAAcF,EAAiB/kC,KAAKjE,GAAWA,EAAQ41B,eAAel1B,WAAauoC,EAAKZ,gBAAgB5nC,WACzGyoC,EAILD,EAAKC,YAAcA,EAHfzhC,EAAQiB,UAAUF,MAAM,oGAM7BigC,EAGX,OADAhhC,EAAQrC,MAAMqjC,EAAwBC,MAAMrkC,OAAOoG,YAC5Cg+B,EAEX,OAAOA,EAOIvlC,4CAAqD,CAChEC,GAAI,+FACJC,OAA2ColC,GAC3CzqC,MA1EqD,CACrDM,EAAiCoY,EAAyBwa,KAE1D,MAAMzsB,EAA4C8N,IAAyBC,cAAclU,GAAWmU,oBAEpG,OADAhO,EAAoBkS,OAAQ,EACrB,IAAI6xB,GAAoC9xB,EAAiBjS,EAAqBysB,MCvBlF,MAAMkY,GAGTvmC,YAAY6T,GAIL,KAAA3T,YAAc,IAAM,8BACpB,KAAAC,mBAAqB,IAAM,8BAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAKwT,gBAAkBA,GAmEhBvT,4CAAuC,CAClDC,GAAI,uFACJC,OA3CGC,eAA4CtF,EAAoC0J,GACnF,MAAMs+B,QAAkBvW,aAAa/nB,GAE/BjD,EAA2C,CAC7C9F,OAAQ,CACJC,IAHW,IAIXI,KAAM,IAGRqqC,EAAsC,IAAIb,GAAoCxqC,EAAM0Y,gBAAiBjS,GAC3G,IAAI6kC,QAA2Bb,GAAqCY,EAAqC3hC,GACrGuP,EAA6B,GACjC,IAAK,IAAIhY,EAVU,IAU6C,IAApCqqC,EAAmBX,MAAMrkC,OAAcrF,GAVhD,IAUoE,CACnF,MAAM2Y,EAAwB0xB,EAAmBX,MAAMnmC,IAAI+mC,IAAc,MASrE,MAP2B,CACvB9oC,OAAM,UAAE8oC,EAAYJ,mBAAd,aAAE,EAAyBtT,eAAep1B,OAChDC,UAAW6oC,EAAYjB,gBAAgB5nC,UACvCE,SAAU2oC,EAAYjB,gBAAgB1nC,SACtCC,WAAY,GACZC,oBAAqByoC,EAAYjB,gBAAgBD,uBAInDmB,aAAkB,CAAE9lC,cAAegE,GAAWs+B,EAAUjvB,KAAKxM,GAAIqN,EAAWouB,EAAUjvB,KAAKO,SAAU9O,MAAMC,IAG7G,MAFAf,EAAQiB,UAAUtD,MAAMoD,GACxBf,EAAQiB,UAAUtD,MAAM,yCAClBoD,IAEVwO,EAAiBA,EAAemP,OAAOxO,GACvCyxB,EAAoC5kC,oBAAoB9F,OAAQK,KAAOC,EACvEqqC,QAA2Bb,GAAqCY,EAAqC3hC,GAGzG,aADMs+B,EAAUyD,YAAY,IACrBxyB,GAUPjZ,MAzDuC,CAACM,EAAiCoY,KACzE,MAAM,eAAEtX,GAAmBd,EAC3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,+DAEpB,OAAO,IAAI0qC,GAA4B1yB,MCxBpC,MAAMgzB,GAGT7mC,YAAY8mC,GAIL,KAAA5mC,YAAc,IAAM,2BACpB,KAAAC,mBAAqB,IAAM,2BAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAKymC,aAAeA,GAoDbxmC,4CAAwC,CACnDC,GAAI,kFACJC,OA5BGC,eAAyCtF,EAAiCuF,GAC7E,IACI,MAAMqmC,EAA6B,CAC/Br/B,GAAI,GACJvC,KAAMhK,EAAM2rC,aACZE,qBAAqB,GAEnBC,QAA2BC,aAAuB,CACpDrmC,cAAeH,GAChBqmC,GACH,GAAIE,GAAgD,KAA1BA,EAAmBv/B,GACzC,OAAOu/B,EAGP,MADAvmC,EAAIoF,UAAUF,MAAM,iCACd/J,MAAM,iCAElB,MAAO+J,GAEL,MADAlF,EAAIoF,UAAUF,MAAM,oCAAqCA,GACnDA,IAWVzK,MA1CoC,CAACM,EAAiCqrC,KACtE,MAAM,eAAEvqC,GAAmBd,EAC3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,+DAEpB,OAAO,IAAIgrC,GAAyBC,MCrBjC,MAAM7yB,GAITjU,YAAY6T,EAAyBjS,GAK9B,KAAA1B,YAAc,IAAM,wBAAwBG,KAAKwT,gBACjD,KAAA1T,mBAAqB,IAAM,uBAC3B,KAAAC,cAAgB,IAAiB,OANpCC,KAAKwT,gBAAkBA,EACvBxT,KAAKuB,oBAAsBA,GAiDpBtB,4CAA0C,CACrDC,GAAI,oFACJC,OAvBGC,eAA0CtF,EAAkCuF,GAC/E,IAAKA,EAAInE,eAAewF,KAAKC,gBACzB,MAAM,IAAInG,MAAM,iEAGpB,MAAMsrC,EAAc,IAAIC,0BAAuBjsC,EAAM0Y,iBAC/CwzB,QAAoCC,mBAAkBH,EAAazmC,GAEzE,IAAK2mC,GAAwC,IAAxBA,EAAa5lC,OAC9B,MAAM,IAAI5F,MAAM,oEAGpB,MAAM0rC,EAAa,IAAI5B,GAAoC0B,EAAa,GAAG3/B,GAAIvM,EAAMyG,qBAC/E4lC,QAAmB5B,GAAqC2B,EAAY7mC,GAC1E,OAAO,IAAI+mC,KAAcJ,EAAa,GAAIG,EAAW1B,MAAO0B,EAAWzB,aAUvE5qC,MAxC2C,CAACM,EAAiCoY,KAC7E,MAAM,eAAEtX,GAAmBd,EAC3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,kEAEpB,MAAM+F,EAA4C8N,IAAyBC,cAAclU,GAAWmU,oBAGpG,OAFAhO,EAAoBkS,OAAQ,EAErB,IAAIG,GAA0BJ,EAAiBjS,M,uCC7BnD,MAAM8lC,GAGT1nC,YAAY+mC,GAIL,KAAA7mC,YAAc,IAAM,iCACpB,KAAAC,mBAAqB,IAAM,iCAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAK0mC,cAAgBA,GAgDdzmC,4CAAwC,CACnDC,GAAI,yFACJC,OAxBGC,eAA+CtF,EAAuCuF,GACzF,IACI,MAAM,cAAEqmC,GAAkB5rC,EACpBwsC,QAA2BhJ,aAAY,CACzC99B,cAAeH,GAChBqmC,GACH,GAAIY,EACA,OAAOA,EAGP,MADAjnC,EAAIoF,UAAUF,MAAM,wBAAwBmhC,EAAcr/B,yBACpD7L,MAAM,kCAElB,MAAO+J,GAEL,MADAlF,EAAIoF,UAAUF,MAAM,oCAAqCA,GACnDA,IAWVzK,MAtC0C,CAACM,EAAiCsrC,KAC5E,MAAM,eAAExqC,GAAmBd,EAC3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,+DAEpB,OAAO,IAAI6rC,GAA+BX,MCrBvC,MAAMa,GAMT5nC,YAAY6T,EAAyBpX,EAAmBc,EAAkB8nC,GAOnE,KAAAnlC,YAAc,IAAM,2BACpB,KAAAC,mBAAqB,IAAM,2BAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAKwT,gBAAkBA,EACvBxT,KAAK5D,UAAYA,EACjB4D,KAAK9C,SAAWA,EAChB8C,KAAKglC,cAAgBA,GAAiB,MAyE/B/kC,4CAA4C,CACvDC,GAAI,uFACJC,OA7CGC,eAAyCtF,EAAiCuF,GAC7E,IACI,IAAKA,EAAInE,eAAewF,KAAKC,gBACzB,MAAMnG,MAAM,6DAEhB,MAAMgsC,EAAgB,IAAIlC,GAAoCxqC,EAAM0Y,gBAAiB,GAAI1Y,EAAMsB,UAAUoL,YACnG2/B,QAAmBM,GAA+BD,EAAennC,GACvE,IAAK8mC,EACD,MAAM3rC,MAAM,iEAGhB,MAAMksC,EAAgBP,EAAW1B,MAAMp8B,OAAO28B,GAAQA,EAAKZ,gBAAgB5nC,YAAc1C,EAAMsB,WAC/F,GAA6B,IAAzBsrC,EAActmC,OACd,MAAM5F,MAAM,sEAGhB,MAAMmsC,EAAeD,EAAc,GAAGtC,gBAEtCuC,EAAaxC,cAAgBrqC,EAAMkqC,cACnC2C,EAAajqC,SAAW5C,EAAMoC,SAE9B,MAAM0qC,QAAwCC,aAA4B,CACtErnC,cAAeH,GAChBvF,EAAM0Y,gBAAiB,CAACm0B,IAE3B,IAAKC,GAAwC,IAAxBA,EAAaxmC,OAC9B,MAAM5F,MAAM,8DAEhB,MAAMssC,EAAcF,EAAav+B,OAAO28B,GAAQA,EAAKxoC,YAAc1C,EAAMsB,WACzE,GAA2B,IAAvB0rC,EAAY1mC,QAAgB0mC,EAAY,GAAGpqC,WAAa5C,EAAMoC,UAAY4qC,EAAY,GAAG3C,gBAAkBrqC,EAAMkqC,cACjH,MAAMxpC,MAAM,+DAEhB,OAAOssC,EAAY,GACrB,MAAOviC,GAEL,MADAlF,EAAIoF,UAAUF,MAAM,4CAA6CA,GAC3DA,IAWVzK,MA7DoC,CACpCM,EAAiCoY,EAAyBpX,EAAmBc,EAAkB8nC,KAE/F,MAAM,eAAE9oC,GAAmBd,EAC3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,+DAEpB,OAAO,IAAI+rC,GAAyB/zB,EAAiBpX,EAAWc,EAAU8nC,M,aC5BvE,MAAM+C,GAQTpoC,YACI+xB,EACAh1B,EACA0e,EACAzc,EACAmiC,EACA3jC,GAUG,KAAA0C,YAAc,IAAMrB,YAAc,mCAAoCwB,KAAKtD,aAC3E,KAAAoD,mBAAqB,IAAM,8BAC3B,KAAAC,cAAgB,IAAiB,UAVpCC,KAAKob,WAAaA,EAClBpb,KAAKrB,UAAYA,EACjBqB,KAAK8gC,mBAAqBA,GAAsB,GAChD9gC,KAAK0xB,yBAA2BA,EAChC1xB,KAAK7C,UAAYA,GAAa,EAC9B6C,KAAKtD,YAAcA,GAgCZuD,4CAA2B,CACtCC,GAAI,qEACJC,OAAwCsB,KACxC3G,MAxBwBM,IACxB,MAAM0lC,EAAqB1lC,EAAUmB,QAAUnB,EAAUmB,OAAOukC,mBAEhE,GAAI1lC,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMif,WAC1G,OAAO4sB,YACH34B,IAAyBC,cAAclU,GAAWmU,qBACjDnU,EAAUc,eAAeQ,YAAYiC,UACtCvD,EAAUmB,OAASX,OAAOR,EAAUmB,OAAOY,WAAa,GACvD/B,EAAUc,eAAeC,MAAMif,WAC/B1a,MAAMC,QAAQmgC,GAA2BA,EAAmBxhC,IAAK2oC,GAA6CA,GAA1E,IAI7C,MAAM,IAAIzsC,MAAM,4FClCLyE,4CAA2B,CACtCC,GAAI,2DACJC,OAAwCsB,eACxC3G,MArBG,SAAsCM,GACzC,MAAQc,gBAAgB,MAACC,EAAOO,aAAa,UAACiC,KAAevD,EAEvD8sC,EAAS/rC,GAASA,EAAMZ,EAE9B,IAAK2sC,EACD,MAAM,IAAI1sC,MAAM,qIAGpB,MAAM2sC,EAAqB94B,IAAyBC,cAAclU,GAClE,OAAOgtC,YAAwBD,EAAmB54B,oBAAqB3T,OAAO+C,GAAY,EAAGupC,MCd1F,SAASG,GAAqBrQ,EAAoBgG,GAMrD,OALAhG,EAASwG,UAAYxG,EAASwG,WAAa,GACvCR,EAAQvW,WACRuQ,EAASwG,UAAUlzB,QAAQ+0B,GAAOA,EAAI5Y,WAAY,GAEtDuQ,EAASwG,UAAY,IAAIxG,EAASwG,UAAUn1B,OAAOg3B,GAAOA,EAAI5iC,WAAaugC,EAAQvgC,UAAWugC,GACvFhG,EAaI/3B,4CAAsC,CACjDC,GAAI,2DACJC,OAZGC,eAAmCtF,EAAgCuF,GACtE,OAAO69B,EAA6BpjC,EAAOuF,EAAKgoC,KAYhDvtC,MAA4DmjC,I,+NCLzD,MAAMqK,GAOT3oC,YAAYu9B,EAA2BqL,EAAyC7rC,EAAmC8rC,EAAgBC,GAQ5H,KAAA5oC,YAAc,IAAcrB,YAAc,GAAGwB,KAAKk9B,kBAAqBl9B,KAAKtD,aAC5E,KAAAoD,mBAAqB,IAAM,WAC3B,KAAAC,cAAgB,IAAiB,OATpCC,KAAKk9B,kBAAoBA,EACzBl9B,KAAKtD,YAAcA,EACnBsD,KAAKuoC,mBAAqBA,EAC1BvoC,KAAKwoC,MAAQA,EACbxoC,KAAKyoC,UAAYA,GA4CVxoC,4CAAqC,CAChDC,GAAI,uEACJC,OAjCGC,eAA8CtF,EAAuCuF,GACxF,MAAM,mBAAEkoC,EAAF,MAAsBC,EAAtB,UAA6BC,EAA7B,kBAAwCvL,GAAsBpiC,EAE9Dk9B,QAAiBjyB,YAAU,CAAEvF,cAAeH,GAAO68B,GAEzD,IAAKlF,EAED,MADA33B,EAAIoF,UAAUE,MAAM,wDACd,IAAInK,MAAM,2BAGpB,MAAM4iC,E,2WAAW,IAAQpG,GACzBoG,EAAYyB,MAAQ2I,EACpBpK,EAAYsK,UAAYD,EACxBrK,EAAYuK,WAAaJ,EAEzB,MAAMlK,QAAwBC,YAAY,CAAE99B,cAAeH,GAAO+9B,GAElE,IAAKC,EAED,MADAh+B,EAAIoF,UAAUE,MAAM,qEACd,IAAInK,MAAM,wCAKpB,OAFA6E,EAAIu5B,OAAO,IAAIh0B,mBAAiBvF,EAAInE,eAAeQ,aAAc2hC,GAE1DA,K,+NClDJ,MAAMuK,GAMTjpC,YAAYu9B,EAA2B2L,EAAmBnsC,EAAmCosC,GAOtF,KAAAjpC,YAAc,IAAcrB,YAAc,GAAGwB,KAAKk9B,kBAAqBl9B,KAAKtD,aAC5E,KAAAoD,mBAAqB,IAAM,WAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAKk9B,kBAAoBA,EACzBl9B,KAAKtD,YAAcA,EACnBsD,KAAK6oC,SAAWA,EAChB7oC,KAAK8oC,eAAiBA,GAiDf7oC,4CAAqC,CAChDC,GAAI,4EACJC,OAtCGC,eAAmDtF,EAA4CuF,GAClG,MAAM,kBAAE68B,EAAF,SAAqB2L,EAArB,eAA+BC,GAAmBhuC,EAElDk9B,QAAiBjyB,YAAU,CAAEvF,cAAeH,GAAO68B,GAEzD,IAAKlF,EACD,MAAM,IAAIx8B,MAAM,2BAGpB,MAAM4iC,E,2WAAW,IAAQpG,GAEzB,OAAQ8Q,GACJ,IAAK,eACD1K,EAAY2K,0BAA4BF,EACxC,MACJ,UAAKxpC,EACL,IAAK,kBACL,QACI++B,EAAY4K,sBAAwBH,EAG5C,MAAMxK,QAAwBC,YAAY,CAAE99B,cAAeH,GAAO+9B,GAElE,IAAKC,EACD,MAAM,IAAI7iC,MAAM,6BAKpB,OAFA6E,EAAIu5B,OAAO,IAAIh0B,mBAAiBvF,EAAInE,eAAeQ,aAAc2hC,GAE1DA,K,+NCrEJ,SAAS4K,GAA4BjR,EAAoBgG,GAE5D,OADAhG,EAASwG,UAAY0K,G,2WAAkB,IAAKlL,GAAW,IAAKhG,EAASwG,WAAa,KAC3ExG,EAaI/3B,4CAAsC,CACjDC,GAAI,mEACJC,OAZGC,eAA0CtF,EAAgCuF,GAC7E,OAAO69B,EAA6BpjC,EAAOuF,EAAK4oC,KAYhDnuC,MAA4DmjC,EAC5DvkB,WAAW,IAGf,MAAMwvB,GAAoB,CAACC,EAA2BC,IAC3CA,EAAU9pC,IAAI+pC,IACbA,EAAK5rC,WAAa0rC,EAAiB1rC,SACnC4rC,EAAK5hB,WAAY,EAEjB4hB,EAAK5hB,WAAY,EAEd4hB,IC3Bf,MAAMC,GAsBF3pC,YACIuY,EACArV,EACAgW,GAEA7Y,KAAKkY,KAAOA,EACZlY,KAAK6C,QAAUA,EACf7C,KAAK6Y,OAASA,GAQf,MAAM0wB,GAqBT5pC,cACIK,KAAKwpC,OAAS,GACdxpC,KAAKypC,SAAU,EATI,kBACnB,OAAQzpC,KAAKypC,SAAkC,IAAvBzpC,KAAKwpC,OAAOpoC,OAgBpB,cAACsoC,GAEjB,OAAO,IAAI9mC,QAA2BxC,MAAOyC,EAASgW,KAClD7Y,KAAKwpC,OAAO99B,KAAK,IAAI49B,GAAoBI,EAAa7mC,EAASgW,UACzD7Y,KAAK2pC,aAQG,iBAElB,IAAK3pC,KAAK4pC,YACN,OAIJ5pC,KAAKypC,SAAU,EAGf,MAAMj3B,EAAkDxS,KAAKwpC,OAAOK,cAC9D7pC,KAAK8pC,gBAAgBt3B,SAGrBxS,KAAK+pC,eAOc,sBAACv3B,GAC1B,UACUA,EAAQ0F,OAAOhW,KAAKsQ,EAAQ3P,SAASyC,MAAMkN,EAAQqG,QAC3D,MAAOtT,GACLiN,EAAQqG,OAAOtT,IAOG,qBACtBvF,KAAKypC,SAAU,QACTzpC,KAAK2pC,YCtHZ,IAAKK,GCAKC,GCEAC,GCAAC,GCAAC,IJFjB,SAAYJ,GACRA,wIACAA,uFAFJ,CAAYA,QAAuB,KAc5B,MAAMK,WAA8Cd,GAcvD5pC,YAAmB2qC,GACf,GAAIA,EAAiB,EACjB,MAAM,IAAI9uC,MAAMwuC,GAAwBO,6BAG5CC,QACAxqC,KAAKyqC,gBAAkBH,EASP,cAACZ,GACjB,IAAIgB,EAAqB1qC,KAAKwpC,OAAOpoC,OAWrC,GAPIpB,KAAKypC,WACHiB,EAMFA,IAAuB1qC,KAAKyqC,gBAAiB,CAC7C,MAAMj4B,EAAUxS,KAAKwpC,OAAOK,QACxBr3B,GACAA,EAAQqG,OAAOmxB,GAAwBW,iCAI/C,OAAOH,MAAMI,QAAQlB,KC9D7B,SAAiBO,GAQGA,oBAAhB,SAAkCh1B,GAC9B,OAAOA,SAQKg1B,WAAhB,SAAyBh1B,GACrB,MAAwB,iBAAVA,GAQFg1B,WAAhB,SAAyBh1B,GACrB,MAAwB,iBAAVA,GAQFg1B,aAAhB,SAA2Bh1B,GACvB,MAAwB,mBAAVA,GApCtB,CAAiBg1B,QAAgB,KCEjC,SAAiBC,GAmBb,SAAgBW,EAAe51B,GAC3B,OAAQg1B,GAAiBa,kBAAkB71B,IAAUA,EAAM7T,OAAS,EAdxD8oC,SAAhB,SAA0Bj1B,GACtB,OAAK41B,EAAY51B,GAIVvU,MAAMqqC,KAAK,IAAIC,IAAI/1B,IAHf,IAWCi1B,cAAWW,EAWXX,MAAhB,SAAuBj1B,EAAYg2B,GAC/B,OAAKJ,EAAY51B,IAIVA,EAAM5L,OAAO4hC,GAAW7pC,SAAW6T,EAAM7T,QAnCxD,CAAiB8oC,QAAe,KCAhC,SAAiBC,GAQb,SAAgBe,EAAUC,GACtB,OAAIlB,GAAiBa,kBAAkBK,GAC5B,GAGJ74B,OAAOC,KAAK44B,GAAW7rC,IAAIuF,GAAQsmC,EAAUtmC,IAiBxD,SAAgBumC,EAAiBD,GAC7B,OAAOD,EAAUC,GAAW9hC,OAAO4gC,GAAiBoB,UAvBxClB,YAASe,EAaTf,WAAhB,SAAyBgB,GACrB,OAAOD,EAAUC,GAAW9hC,OAAO4gC,GAAiBqB,WAQxCnB,mBAAgBiB,EAShBjB,gBAAhB,SAAgDgB,GAC5C,OAAOC,EAAiBD,GAAW7rC,IAAI2V,GAAYA,IAxC3D,CAAiBk1B,QAAc,KCA/B,SAAiBC,GAeb,SAAgBmB,EAAct2B,GAC1B,GAAIg1B,GAAiBa,kBAAkB71B,GACnC,OAAO,EAGX,IAAKg1B,GAAiBqB,SAASr2B,GAC3B,MAAM,IAAIzZ,MAAM,qDAGpB,MAAiB,KAAVyZ,EAlBKm1B,qBAAhB,SAAmCn1B,GAC/B,OAAOs2B,EAAct2B,IAA4B,KAAlBA,EAAOynB,QAQ1B0N,gBAAamB,EAfjC,CAAiBnB,QAAgB,K,4CCF7B5yB,GACAg0B,GAAQ,IAAIC,WAAW,IACZ,SAASC,KAEtB,IAAKl0B,MAGHA,GAAoC,oBAAXD,QAA0BA,OAAOC,iBAAmBD,OAAOC,gBAAgBm0B,KAAKp0B,SAA+B,oBAAbq0B,UAAgE,mBAA7BA,SAASp0B,iBAAkCo0B,SAASp0B,gBAAgBm0B,KAAKC,WAGrO,MAAM,IAAIpwC,MAAM,4GAIpB,OAAOgc,GAAgBg0B,I,cCjBV,yHCQf,ICFeK,OAJf,SAAkBC,GAChB,MAAuB,iBAATA,GAAqBC,GAAMC,KAAKF,IDG5CG,GAAY,GAEPptB,GAAI,EAAGA,GAAI,MAAOA,GACzBotB,GAAUvgC,MAAMmT,GAAI,KAAOrX,SAAS,IAAIwb,OAAO,IAoBlC/M,OAjBf,SAAmBi2B,GACjB,IAAIC,EAASC,UAAUhrC,OAAS,QAAsB/B,IAAjB+sC,UAAU,GAAmBA,UAAU,GAAK,EAG7EN,GAAQG,GAAUC,EAAIC,EAAS,IAAMF,GAAUC,EAAIC,EAAS,IAAMF,GAAUC,EAAIC,EAAS,IAAMF,GAAUC,EAAIC,EAAS,IAAM,IAAMF,GAAUC,EAAIC,EAAS,IAAMF,GAAUC,EAAIC,EAAS,IAAM,IAAMF,GAAUC,EAAIC,EAAS,IAAMF,GAAUC,EAAIC,EAAS,IAAM,IAAMF,GAAUC,EAAIC,EAAS,IAAMF,GAAUC,EAAIC,EAAS,IAAM,IAAMF,GAAUC,EAAIC,EAAS,KAAOF,GAAUC,EAAIC,EAAS,KAAOF,GAAUC,EAAIC,EAAS,KAAOF,GAAUC,EAAIC,EAAS,KAAOF,GAAUC,EAAIC,EAAS,KAAOF,GAAUC,EAAIC,EAAS,MAAMp6B,cAMzf,IAAK85B,GAASC,GACZ,MAAMO,UAAU,+BAGlB,OAAOP,GEHMQ,IClBEC,GCHAC,GFqBFF,GApBf,SAAYptC,EAASutC,EAAKN,GAExB,IAAIO,GADJxtC,EAAUA,GAAW,IACFytC,SAAWztC,EAAQwsC,KAAOA,MAK7C,GAHAgB,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvBD,EAAK,CACPN,EAASA,GAAU,EAEnB,IAAK,IAAIttB,EAAI,EAAGA,EAAI,KAAMA,EACxB4tB,EAAIN,EAASttB,GAAK6tB,EAAK7tB,GAGzB,OAAO4tB,EAGT,OAAOx2B,GAAUy2B,KCfFH,QAAI,KACDA,aAAhB,WACI,OAAOK,OCLEJ,QAAM,KACLA,KAAOK,G,mLCOlB,MAAMtjC,EAAezO,IACxB,MAAMsB,EAAYH,8CAAoCnB,GACtD,GAAIsB,EACA,OAAO,IAAI+mC,yBAAuB/mC,EAAW0wC,YAAgBhyC,GAAQiyC,YAAiBjyC,IAE1F,MAAM,IAAIU,MAAM,yGA0BLyE,+CAA2B,CACtCC,GAAI,gEACJC,OAtBJC,eAAiCtF,EAA+BuF,GAC5D,IAeJ,SAAsBvF,GAClB,OAAOA,GAASA,EAAMsB,UAAUgF,OAAS,GAAKtG,EAAM6I,SAASvC,OAAS,EAhBjE4rC,CAAalyC,GAEd,OADAuF,EAAI8B,MAAM,iEACH,GAGX,MAAM0V,EAAa,GAAG/c,EAAM+I,wCAAwC/I,EAAMsB,8BAC1DtB,EAAM6I,SACtB,OAAOspC,sBAA4Bp1B,EAAY,OAAO3V,KAAM5B,GACjDA,EAAS4N,MACjB5I,MAAOC,IAEN,MADAlF,EAAI8B,MAAM,iEACJoD,KAWVzK,MAAOyO,K,qLCjCL,MAAO2jC,EAAbvtC,cACW,KAAAE,YAAc,IAAM,gBACpB,KAAAC,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAA0B,WAkB9C,MAAMotC,EAA2B5pC,6BAAoC,CACxEpD,OALJC,eAAsBtF,EAA+BuF,GACjD,MAAO,CAAE+sC,YAAY,EAAO9kB,WAAY,GAAI+kB,kBAAmB,UAAWC,YAAa,KAKvFxyC,MAVgB,IACT,IAAIoyC,IAYAC,a,4HC3BR,MAAM9d,EAAsBC,IAC/B,IAAIC,EAAU,CAAEC,QAAS,GAAIC,YAAa,IAC1C,MAAM,IAAE7oB,EAAF,MAAOrB,GAAWoB,QAElB+oB,EAAc,CAACC,EAASC,KADD,IAAMC,IAEqBD,EAFHrqB,EAE5B,oBAAsBoqB,GAFkBpqB,EAAMsqB,GAAwDtqB,EAAM,8CAA+CuqB,EAAQC,KAAK,KAI7LT,IACAA,EAAkBA,EAAgBhwB,IAAK0wB,GAAWA,EAAOje,gBAE7D,MAAMke,EAAmBC,IACbZ,GAAmBA,EAAgBluB,QAAU,IAAuE,IAAlEkuB,EAAgBa,UAAWH,GAAWA,IAAWE,GAIzGE,EAAoBC,IAClBd,EAAQE,YAAYY,IACpBd,EAAQE,YAAYY,GAAYC,SAChCf,EAAQE,YAAYY,GAAYC,QAAQC,WACxChB,EAAQE,YAAYY,GAAYC,QAAQC,UAAUrwB,KAClDqvB,EAAQE,YAAYF,EAAQE,YAAYY,GAAYC,QAAQC,UAAUrwB,IAAMqvB,EAAQE,YAAYY,KAIlGG,EAA8B,CAACC,EAAqBC,KAUlD,GADAnB,EAAQE,YAAYgB,GAAuBC,GACtCnB,EAAQE,YAAYgB,GAAqBH,QAC1C,MAAM,IAAI90B,MAAM,oBAAsBi1B,EAAsB,mCAEhElB,EAAQE,YAAYgB,GAAqBH,QAAQC,UAAUI,eAAiBF,EACxElB,EAAQE,YAAYgB,GAAqBH,QAAQC,UAAUrwB,KAC3DqvB,EAAQE,YAAYF,EAAQE,YAAYgB,GAAqBH,QAAQC,UAAUrwB,IAAMuwB,IAKjG,IAGAR,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,wDAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,kBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,sEAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,cAAgBV,EAAQC,QAAQ,YAAc,CAC1DrP,EAAG/f,SAAY,uDAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,WACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yBAIRlB,EAAgB,+BAAiCV,EAAQC,QAAQ,6BAA+B,CAC5FrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,4BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,0CAIRlB,EAAgB,WAAaV,EAAQC,QAAR,MAA2B,CACpDrP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,WAAW,gBAAgB,SAAS,cAAc,gBAAgB,uBAAuB,oBAChHR,KAAK,EACLC,GAAI,YACJC,EAAG,QACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,4BACfJ,GAAI,qBAIRlB,EAAgB,kCAAoCV,EAAQC,QAAQ,gCAAkC,CAClGrP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,kEAAmEC,MAAO,IAErNP,KAAK,EACLC,GAAI,YACJC,EAAG,+BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6CAIRlB,EAAgB,iBAAmBV,EAAQC,QAAR,YAAiC,CAChErP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,cACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,4BAIRlB,EAAgB,kCAAoCV,EAAQC,QAAQ,gCAAkC,CAClGrP,EAAG/f,SAAY,8EAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,IAEtOP,KAAK,EACLC,GAAI,YACJC,EAAG,+BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6CAIRlB,EAAgB,4BAA8BV,EAAQC,QAAQ,0BAA4B,CACtFrP,EAAG/f,SAAY,8EAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,gBAAkB6G,KAAK,mFAAoFC,MAAO,IAE7HP,KAAK,EACLC,GAAI,YACJC,EAAG,yBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,uCAIRlB,EAAgB,mCAAqCV,EAAQC,QAAQ,iCAAmC,CACpGrP,EAAG/f,SAAY,wDAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,gBAAkB6G,KAAK,oFAAqFC,MAAO,IAE9HP,KAAK,EACLC,GAAI,YACJC,EAAG,gCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8CAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtErP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,iBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+BAIRlB,EAAgB,yBAA2BV,EAAQC,QAAQ,uBAAyB,CAChFrP,EAAG/f,SAAY,kCAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,sBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,oCAIRlB,EAAgB,eAAiBV,EAAQC,QAAR,UAA+B,CAC5DrP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,gCACfJ,GAAI,yBAIRlB,EAAgB,mBAAqBV,EAAQC,QAAR,cAAmC,CACpErP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,oCACfJ,GAAI,6BAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFrP,EAAG/f,SAAY,8EAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,kEAAmEC,MAAO,IAEvGP,KAAK,EACLC,GAAI,YACJC,EAAG,wBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,sCAIRlB,EAAgB,gBAAkBV,EAAQC,QAAQ,cAAgB,CAC9DrP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,aACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,iCACfJ,GAAI,0BAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFrP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,wBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,sCAIRlB,EAAgB,+BAAiCV,EAAQC,QAAQ,6BAA+B,CAC5FrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,4BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,0CAIRlB,EAAgB,8BAAgCV,EAAQC,QAAQ,4BAA8B,CAC1FrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,2BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1ErP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,2BAA6B6G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,eAAiBV,EAAQC,QAAR,UAA+B,CAC5DrP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,0BAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1ErP,EAAG/f,SAAY,wDAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,YAAcV,EAAQC,QAAR,OAA4B,CACtDrP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,WAAW,gBAAgB,SAAS,cAAc,gBAAgB,wBACzFR,KAAK,EACLC,GAAI,YACJC,EAAG,SACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,6BACfJ,GAAI,sBAIRlB,EAAgB,iBAAmBV,EAAQC,QAAQ,eAAiB,CAChErP,EAAG/f,SAAY,sEAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,kBAAoB6G,KAAK,wFAAyFC,MAAO,GAAG,CAAC9G,KAAK,mBAAqB6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,uBAAyB6G,KAAK,kFAAmFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,iFAAkFC,MAAO,GAAG,CAAC9G,KAAK,4BAA8B6G,KAAK,4HAA6HC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,2EAA4EC,MAAO,GAAG,CAAC9G,KAAK,YAAc6G,KAAK,iFAAkFC,MAAO,IAEz/BP,KAAK,EACLC,GAAI,YACJC,EAAG,cACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,4BAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFrP,EAAG/f,SAAY,8EAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,oBAAsB6G,KAAK,oFAAqFC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,sDAAuDC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,2EAA4EC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,kEAAmEC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,sEAAuEC,MAAO,IAE73BP,KAAK,EACLC,GAAI,YACJC,EAAG,uBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,qCAIRlB,EAAgB,SAAWV,EAAQC,QAAR,IAAyB,CAChDrP,EAAG/f,SAAY,kCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,WAAW,gBAAgB,SAAS,gCAC3DR,KAAK,EACLC,GAAI,YACJC,EAAG,MACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,0BACfJ,GAAI,mBAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFrP,EAAG/f,SAAY,iCAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,kEAAmEC,MAAO,IAEvGP,KAAK,EACLC,GAAI,YACJC,EAAG,0BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,wCAIRlB,EAAgB,aAAeV,EAAQC,QAAR,QAA6B,CACxDrP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,UACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,8BACfJ,GAAI,uBAIRlB,EAAgB,WAAaV,EAAQC,QAAR,MAA2B,CACpDrP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,QACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,4BACfJ,GAAI,qBAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5ErP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,mBAAqB6G,KAAK,oCAAqCC,MAAO,IAEjFP,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,kCAIRlB,EAAgB,gBAAkBV,EAAQC,QAAQ,cAAgB,CAC9DrP,EAAG/f,SAAY,wDAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,uBAAyB6G,KAAK,gFAAiFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,uDAAwDC,MAAO,GAAG,CAAC9G,KAAK,uBAAyB6G,KAAK,iGAAkGC,MAAO,IAExdP,KAAK,EACLC,GAAI,YACJC,EAAG,aACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,2BAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtErP,EAAG/f,SAAY,8EAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,mBAAqB6G,KAAK,oCAAqCC,MAAO,GAAG,CAAC9G,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,2BAA6B6G,KAAK,kDAAmDC,MAAO,IAElSP,KAAK,EACLC,GAAI,YACJC,EAAG,iBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+BAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,wEAAyEC,MAAO,IAE7GP,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,SAAWV,EAAQC,QAAR,IAAyB,CAChDrP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,WAAW,wBAAwB,gBAAgB,SAAS,qBAAqB,wBACxGR,KAAK,EACLC,GAAI,YACJC,EAAG,MACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,0BACfJ,GAAI,mBAIRlB,EAAgB,iBAAmBV,EAAQC,QAAR,YAAiC,CAChErP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,cACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,kCACfJ,GAAI,2BAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,kCAIRlB,EAAgB,cAAgBV,EAAQC,QAAQ,YAAc,CAC1DrP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,wBAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,WACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,yBACfJ,GAAI,wBAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpErP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,iCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,kBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gCAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpErP,EAAG/f,SAAY,iCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFrP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,wBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,sCAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5ErP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,wCACfJ,GAAI,iCAIRlB,EAAgB,cAAgBV,EAAQC,QAAR,SAA8B,CAC1DrP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,WACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yBAIRlB,EAAgB,eAAiBV,EAAQC,QAAQ,aAAe,CAC5DrP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,0BAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClErP,EAAG/f,SAAY,iCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClErP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,kCAIRlB,EAAgB,8BAAgCV,EAAQC,QAAQ,4BAA8B,CAC1FrP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,2BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yCAIRlB,EAAgB,gCAAkCV,EAAQC,QAAQ,8BAAgC,CAC9FrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,6BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,2CAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtErP,EAAG/f,SAAY,iCAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,iBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+BAIRlB,EAAgB,gBAAkBV,EAAQC,QAAQ,cAAgB,CAC9DrP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,aACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,iCACfJ,GAAI,0BAIRlB,EAAgB,kBAAoBV,EAAQC,QAAR,aAAkC,CAClErP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,eAAiB6G,KAAK,uCAAwCC,MAAO,IAEhFP,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,8EAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,iBAAmB6G,KAAK,mCAAoCC,MAAO,IAE9EP,KAAK,EACLC,GAAI,YACJC,EAAG,kBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gCAIRlB,EAAgB,4BAA8BV,EAAQC,QAAQ,0BAA4B,CACtFrP,EAAG/f,SAAY,iCAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,iBAAmB6G,KAAK,mCAAoCC,MAAO,IAE9EP,KAAK,EACLC,GAAI,YACJC,EAAG,yBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,uCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,kCAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,cAAgBV,EAAQC,QAAQ,YAAc,CAC1DrP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,WACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yBAIRlB,EAAgB,cAAgBV,EAAQC,QAAR,SAA8B,CAC1DrP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,WACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,+BACfJ,GAAI,wBAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtErP,EAAG/f,SAAY,sEAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,2BAA6B6G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,iBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+BAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5ErP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,IAE9GP,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,kCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,iCAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,2BAA6B6G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,sEAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,2BAA6B6G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5ErP,EAAG/f,SAAY,iCAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,oBAAsB6G,KAAK,kDAAmDC,MAAO,IAEhGP,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,kCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,sEAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,yBAA2BV,EAAQC,QAAQ,uBAAyB,CAChFrP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,2BAA6B6G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,sBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,oCAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClErP,EAAG/f,SAAY,iCAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,IAE9GP,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpErP,EAAG/f,SAAY,wDAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,uBAAyB6G,KAAK,gFAAiFC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,8BAA+BC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,iCAAkCC,MAAO,GAAG,CAAC9G,KAAK,oBAAsB6G,KAAK,uCAAwCC,MAAO,GAAG,CAAC9G,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,oEAAqEC,MAAO,IAEzjBP,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1ErP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,2BAA6B6G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,yBAA2BV,EAAQC,QAAQ,uBAAyB,CAChFrP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,sBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,oCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,iCAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,2BAA6BV,EAAQC,QAAQ,yBAA2B,CACpFrP,EAAG/f,SAAY,wDAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,wBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,sCAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFrP,EAAG/f,SAAY,uDAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,uBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,qCAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClErP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,oBAAsBV,EAAQC,QAAQ,kBAAoB,CACtErP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,iBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+BAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,8BAAgCV,EAAQC,QAAQ,4BAA8B,CAC1FrP,EAAG/f,SAAY,kCAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,oBAAsB6G,KAAK,mEAAoEC,MAAO,IAEjHP,KAAK,EACLC,GAAI,YACJC,EAAG,2BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yCAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1ErP,EAAG/f,SAAY,wDAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,UAAYV,EAAQC,QAAR,KAA0B,CAClDrP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,wBAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,OACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,2BACfJ,GAAI,oBAIRlB,EAAgB,qCAAuCV,EAAQC,QAAQ,mCAAqC,CACxGrP,EAAG/f,SAAY,uEAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,iEAAkEC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,kCAAmCC,MAAO,IAEhLP,KAAK,EACLC,GAAI,YACJC,EAAG,kCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gDAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,iBAAmB6G,KAAK,8DAA+DC,MAAO,GAAG,CAAC9G,KAAK,aAAe6G,KAAK,8EAA+EC,MAAO,IAE5NP,KAAK,EACLC,GAAI,YACJC,EAAG,kBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gCAIRlB,EAAgB,iBAAmBV,EAAQC,QAAQ,eAAiB,CAChErP,EAAG/f,SAAY,sEAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,aAAe6G,KAAK,8EAA+EC,MAAO,GAAG,CAAC9G,KAAK,uBAAyB6G,KAAK,gFAAiFC,MAAO,GAAG,CAAC9G,KAAK,kBAAoB6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,iCAAkCC,MAAO,GAAG,CAAC9G,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,qGAAsGC,MAAO,GAAG,CAAC9G,KAAK,oBAAsB6G,KAAK,yFAA0FC,MAAO,GAAG,CAAC9G,KAAK,eAAiB6G,KAAK,oFAAqFC,MAAO,GAAG,CAAC9G,KAAK,2BAA6B6G,KAAK,kDAAmDC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,yEAA0EC,MAAO,GAAG,CAAC9G,KAAK,4BAA8B6G,KAAK,4HAA6HC,MAAO,GAAG,CAAC9G,KAAK,YAAc6G,KAAK,iFAAkFC,MAAO,IAE9iDP,KAAK,EACLC,GAAI,YACJC,EAAG,cACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,4BAIRlB,EAAgB,eAAiBV,EAAQC,QAAQ,aAAe,CAC5DrP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,kBAAoB6G,KAAK,wFAAyFC,MAAO,GAAG,CAAC9G,KAAK,mBAAqB6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,uBAAyB6G,KAAK,kFAAmFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,iFAAkFC,MAAO,GAAG,CAAC9G,KAAK,4BAA8B6G,KAAK,4HAA6HC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,2EAA4EC,MAAO,GAAG,CAAC9G,KAAK,YAAc6G,KAAK,iFAAkFC,MAAO,IAEz/BP,KAAK,EACLC,GAAI,YACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,0BAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpErP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,mBAAqB6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,0EAA2EC,MAAO,IAE7cP,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIRlB,EAAgB,mCAAqCV,EAAQC,QAAQ,iCAAmC,CACpGrP,EAAG/f,SAAY,uEAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,kCAAmCC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,gCAAiCC,MAAO,IAE3QP,KAAK,EACLC,GAAI,YACJC,EAAG,gCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8CAIRlB,EAAgB,oCAAsCV,EAAQC,QAAQ,kCAAoC,CACtGrP,EAAG/f,SAAY,sEAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,IAExHP,KAAK,EACLC,GAAI,YACJC,EAAG,iCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+CAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,IAExHP,KAAK,EACLC,GAAI,YACJC,EAAG,0BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,wCAIRlB,EAAgB,qCAAuCV,EAAQC,QAAQ,mCAAqC,CACxGrP,EAAG/f,SAAY,+DAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,kCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gDAIRlB,EAAgB,oCAAsCV,EAAQC,QAAQ,kCAAoC,CACtGrP,EAAG/f,SAAY,uEAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,iEAAkEC,MAAO,GAAG,CAAC9G,KAAK,OAAS6G,KAAK,uEAAwEC,MAAO,GAAG,CAAC9G,KAAK,uBAAyB6G,KAAK,gFAAiFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,mFAAoFC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,kCAAmCC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,gCAAiCC,MAAO,IAEnlBP,KAAK,EACLC,GAAI,YACJC,EAAG,iCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,+CAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1ErP,EAAG/f,SAAY,sEAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,iBAAmBV,EAAQC,QAAQ,eAAiB,CAChErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,cACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,4BAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,2BAA6B6G,KAAK,kDAAmDC,MAAO,IAEnNP,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpErP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,mBAAqB6G,KAAK,+EAAgFC,MAAO,IAE1OP,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,aAAe6G,KAAK,8EAA+EC,MAAO,IAErHP,KAAK,EACLC,GAAI,YACJC,EAAG,uBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,qCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,WAAa6G,KAAK,4EAA6EC,MAAO,GAAG,CAAC9G,KAAK,cAAgB6G,KAAK,sEAAuEC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,+FAAgGC,MAAO,GAAG,CAAC9G,KAAK,mBAAqB6G,KAAK,sFAAuFC,MAAO,GAAG,CAAC9G,KAAK,cAAgB6G,KAAK,gFAAiFC,MAAO,IAE5lBP,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFrP,EAAG/f,SAAY,8EAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,0BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,wCAIRlB,EAAgB,iBAAmBV,EAAQC,QAAQ,eAAiB,CAChErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,cAAgB6G,KAAK,gFAAiFC,MAAO,IAExHP,KAAK,EACLC,GAAI,YACJC,EAAG,cACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,4BAIRlB,EAAgB,kCAAoCV,EAAQC,QAAQ,gCAAkC,CAClGrP,EAAG/f,SAAY,8EAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,0EAA2EC,MAAO,GAAG,CAAC9G,KAAK,oBAAsB6G,KAAK,oFAAqFC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,sDAAuDC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,2EAA4EC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,kEAAmEC,MAAO,GAAG,CAAC9G,KAAK,sBAAwB6G,KAAK,sEAAuEC,MAAO,IAElwBP,KAAK,EACLC,GAAI,YACJC,EAAG,+BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6CAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClErP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,iCAAmCV,EAAQC,QAAQ,+BAAiC,CAChGrP,EAAG/f,SAAY,uDAKfwwB,MAAO,kBACPC,GAAI,CAAC,CAACtG,KAAK,2BAA6B6G,KAAK,kDAAmDC,MAAO,IAEvGP,KAAK,EACLC,GAAI,YACJC,EAAG,8BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,4CAIRlB,EAAgB,+BAAiCV,EAAQC,QAAQ,6BAA+B,CAC5FrP,EAAG/f,SAAY,8DAKfwwB,MAAO,kBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,4BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,0CAIRlB,EAAgB,4BAA8BV,EAAQC,QAAQ,0BAA4B,CACtFrP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,UAChCR,KAAK,EACLC,GAAI,YACJC,EAAG,yBACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,6CACfJ,GAAI,sCAIRlB,EAAgB,eAAiBV,EAAQC,QAAR,UAA+B,CAC5DrP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,UACvBR,KAAK,EACLC,GAAI,YACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,gCACfJ,GAAI,yBAIRlB,EAAgB,iBAAmBV,EAAQC,QAAR,YAAiC,CAChErP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,SAAS,gBAAgB,UAChDR,KAAK,EACLC,GAAI,YACJC,EAAG,cACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,kCACfJ,GAAI,2BAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,iCAKfwwB,MAAO,cACPC,GAAI,GACJS,qBAAsB,CAAC,WAAW,wBAAwB,gBAAgB,SAAS,qBAAqB,wBACxGR,KAAK,EACLC,GAAI,YACJC,EAAG,kBACHC,EAAG,YAEHC,IAAK,GAELK,cAAe,sCACfJ,GAAI,+BAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1ErP,EAAG/f,SAAY,uDAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,6BAA+BV,EAAQC,QAAQ,2BAA6B,CACxFrP,EAAG/f,SAAY,8EAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,YAAc6G,KAAK,iEAAkEC,MAAO,GAAG,CAAC9G,KAAK,cAAgB6G,KAAK,wEAAyEC,MAAO,GAAG,CAAC9G,KAAK,gBAAkB6G,KAAK,mEAAoEC,MAAO,IAEhUP,KAAK,EACLC,GAAI,YACJC,EAAG,0BACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,wCAIRlB,EAAgB,qCAAuCV,EAAQC,QAAQ,mCAAqC,CACxGrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,kCACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gDAIRlB,EAAgB,4BAA8BV,EAAQC,QAAQ,0BAA4B,CACtFrP,EAAG/f,SAAY,sEAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,kBAAoB6G,KAAK,wFAAyFC,MAAO,GAAG,CAAC9G,KAAK,mBAAqB6G,KAAK,+EAAgFC,MAAO,GAAG,CAAC9G,KAAK,uBAAyB6G,KAAK,kFAAmFC,MAAO,GAAG,CAAC9G,KAAK,WAAa6G,KAAK,iFAAkFC,MAAO,GAAG,CAAC9G,KAAK,4BAA8B6G,KAAK,4HAA6HC,MAAO,IAEjxBP,KAAK,EACLC,GAAI,YACJC,EAAG,yBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,uCAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpErP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,2BAA6B6G,KAAK,kDAAmDC,MAAO,IAEvGP,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIRlB,EAAgB,cAAgBV,EAAQC,QAAR,SAA8B,CAC1DrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,WACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,yBAIRlB,EAAgB,qBAAuBV,EAAQC,QAAQ,mBAAqB,CACxErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,kBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,gCAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1ErP,EAAG/f,SAAY,iCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,kBAAoBV,EAAQC,QAAQ,gBAAkB,CAClErP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,eACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,6BAIRlB,EAAgB,eAAiBV,EAAQC,QAAQ,aAAe,CAC5DrP,EAAG/f,SAAY,+DAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,UAAY6G,KAAK,iEAAkEC,MAAO,IAErGP,KAAK,EACLC,GAAI,YACJC,EAAG,YACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,0BAIRlB,EAAgB,uBAAyBV,EAAQC,QAAQ,qBAAuB,CAC5ErP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,oBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,kCAIRlB,EAAgB,0BAA4BV,EAAQC,QAAQ,wBAA0B,CAClFrP,EAAG/f,SAAY,8EAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,iBAAmB6G,KAAK,kCAAmCC,MAAO,GAAG,CAAC9G,KAAK,iBAAmB6G,KAAK,6DAA8DC,MAAO,IAEnLP,KAAK,EACLC,GAAI,YACJC,EAAG,uBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,qCAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1ErP,EAAG/f,SAAY,wDAKfwwB,MAAO,gBACPC,GAAI,CAAC,CAACtG,KAAK,OAAS6G,KAAK,+EAAgFC,MAAO,IAEhHP,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,wBAA0BV,EAAQC,QAAQ,sBAAwB,CAC9ErP,EAAG/f,SAAY,kCAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,qBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,mCAIRlB,EAAgB,sBAAwBV,EAAQC,QAAQ,oBAAsB,CAC1ErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,mBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,iCAIRlB,EAAgB,mBAAqBV,EAAQC,QAAQ,iBAAmB,CACpErP,EAAG/f,SAAY,8DAKfwwB,MAAO,gBACPC,GAAI,GAEJC,KAAK,EACLC,GAAI,YACJC,EAAG,gBACHC,EAAG,YAEHC,IAAK,GAGLC,GAAI,8BAIJ,CACI,MAAMd,EAAa,sDACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,0EACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,8CACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,sCACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,4CACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,wEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,wEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,wEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,mEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,oEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,qEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,6DACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,8DACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,+DACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,CACI,MAAMA,EAAa,kEACnBd,EAAQE,YAAYY,GAAcmB,EAAQ,QAC1CpB,EAAiBC,GAGrB,GAAIJ,EAAgB,gCAAgC,CAGhDO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,yBAAyB,CAGzCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,kFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,sDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qBAAqB,CAGrCO,EAF4B,oCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,iGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,cAAc,CAG9BO,EAF4B,uDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,oCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,wEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,uCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,mCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,mCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kBAAkB,CAGlCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qBAAqB,CAGrCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,qBAAqB,CAGrCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,uBAAuB,CAGvCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,uBAAuB,CAGvCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gBAAgB,CAGhCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,iCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,uCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,8BACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,oEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,4BAA4B,CAG5CO,EAF4B,mEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mCAAmC,CAGnDO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mCAAmC,CAGnDO,EAF4B,kCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,8EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mBAAmB,CAGnCO,EAF4B,8DACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,8EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,yFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,qGACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,yEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,iCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,kFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,kCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iCAAiC,CAGjDO,EAF4B,gCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,uEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,mFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,kCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,kCAAkC,CAGlDO,EAF4B,gCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,8EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,4EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,sFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,+FACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,sBAAsB,CAGtCO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,eAAe,CAG/BO,EAF4B,gFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,0EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,oFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,sEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,kEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,sDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,gCAAgC,CAGhDO,EAF4B,2EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,+BAA+B,CAG/CO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,wEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,2BAA2B,CAG3CO,EAF4B,mEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,mCAAmC,CAGnDO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,4HACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,kFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,wFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,iFACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,0BAA0B,CAG1CO,EAF4B,+EACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,iBAAiB,CAGjCO,EAF4B,kDACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,aAAa,CAG7BO,EAF4B,iEACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,kCACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,wBAAwB,CAGxCO,EAF4B,6DACXgB,EAAQ,SAK7B,GAAIvB,EAAgB,oBAAoB,CAGpCO,EAF4B,+EACXgB,EAAQ,UAM/B,MAAOx1B,GACL0zB,EAAY,IAAK1zB,GAGrB,OAAOuzB,I,oRCliHL,MAAOge,EAET5tC,YAAY7E,GAIL,KAAAwI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,2BACpB,KAAAC,mBAAqB,IAAM,2BAC3B,KAAAC,cAAgB,IAA0B,cAP7CC,KAAKlF,MAAQA,GA0Bd,MAAM0yC,EAAgC,CACzCvuC,EADyC,KAWhB,IATzB,eACI8rB,EADJ,iBAEIK,EAFJ,cAGIC,EAHJ,UAIIoiB,EAJJ,WAKI1vC,EALJ,OAMIytB,EANJ,UAOID,GAEqB,EACzB,MAAMplB,EAAYlH,EAAK/C,eAAewF,KAAKoE,uBAAyB/H,EACpE,OAAO,IAAIwvC,EACPpiB,YAAwBJ,EAAgBK,EAAkBC,EAAeoiB,EAAWliB,EAAWplB,EAAYqlB,KAO5GprB,eAAestC,EAAyB5yC,EAAgCuF,GAC3E,OAAOvF,EAAMA,MAAM0I,QAAQnD,GAGhBkD,uCAAoC,CAC/CpD,OAAmDutC,EACnD5yC,MAAO0yC,K,qVCzDJ,MAAMG,EAQThuC,YACI+xB,EACAtW,EACAzc,EACAmiC,EACA3jC,EACA80B,GAWG,KAAApyB,YAAc,IAAM,+CACpB,KAAAC,mBAAqB,IAAM,0CAC3B,KAAAC,cAAgB,IAAiB,OAVpCC,KAAK0xB,yBAA2BA,EAChC1xB,KAAKob,WAAaA,EAClBpb,KAAKrB,UAAYA,EACjBqB,KAAK8gC,mBAAqBA,GAAsB,GAChD9gC,KAAK7C,UAAYA,GAAa,EAC9B6C,KAAKkhC,uBAAyBjP,GAW/B,MAAM2b,EAAiDxyC,IAC1D,MAAM0lC,EAAqB1lC,EAAUmB,QAAUnB,EAAUmB,OAAOukC,mBAC1DpP,EAA2BriB,IAAyBC,cAAclU,GACxE,IAAKsF,MAAMC,QAAQmgC,GACf,OAAO,IAAI6M,EAAwCjc,GAGvD,GAAIt2B,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMif,WAAY,CACtH,MAAMA,EAAaxf,OAAOR,EAAUc,eAAeC,MAAMif,YACnDzc,EAAYvD,EAAUc,eAAeQ,YAAYiC,UACjDxB,EAAY/B,EAAUc,eAAeQ,YAAYS,UACjD4jC,EAAyB5iC,YAAyC/C,GACxE,OAAO,IAAIuyC,EACPjc,EACAtW,GACCzc,EACDmiC,EACA3jC,EACA4jC,GAIR,MAAM,IAAIvlC,MAAM,0FAOb4E,eAAeytC,EAClB/yC,EACAuF,GAEA,IAAKvF,IAAUA,EAAMgmC,mBAEjB,OADAzgC,EAAI8B,MAAM,gEAC6B,GAG3C,MAAM2rC,EAAmBhzC,EAAM42B,yBAAyBniB,qBACpDzU,EAAM42B,yBAAyBniB,oBAAoBqB,SACnD9V,EAAM42B,yBAAyBniB,oBAAoBqB,QAAQC,SAC3D/V,EAAM42B,yBAAyBniB,oBAAoBqB,QAAQC,QAAQzP,OAAS,EAChF,IAAKtG,EAAMgmC,mBAAmB1/B,SAAW0sC,EAErC,OADAztC,EAAIoF,UAAUtD,MAAM,mFACmB,GAE3C,MAAM,YAAEzF,GAAgB2D,EAAInE,eAE5B,IAAI4kC,EAA4C,GAChD,MAAMxO,QAA0Byb,YAC5B,CAAEvtC,cAAeH,EAAKkB,oBAAsBzG,EAAM42B,yBAAyBniB,qBAC3EzU,EAAM6D,WAAa,EACnB7D,EAAMqC,UACNrC,EAAMsgB,YAAc,EACpBtgB,EAAMgmC,oBACJ5+B,KAAK++B,IACHH,EAAqBhmC,EAAMgmC,mBACpBG,EAAc3hC,IAChBvC,GACU,IAAI4O,IAAiB5O,EAAQU,SAAUf,EAAa5B,EAAMomC,wBAA0B,IAAIA,QAK/G,GAAI5O,EAAkBlxB,OAAS,EAAG,CAE9B,MAAO,CACHgxB,0BAFgDxmB,YAAgB0mB,EAAmBjyB,GAGnFygC,mBAAoBA,GAGxB,MAAO,CACH1O,oBAAqB,GACrB0O,mBAAoBA,GAKjB7gC,+CAA2B,CACtCC,GAAI,wFACJC,OAAiD0tC,EACjD/yC,MAAO8yC,EACPl0B,WAAW,K,iPCrHR,MAAMs0B,EAGTruC,YAAYjD,GAIL,KAAAmD,YAAc,IAAMrB,wBAAc,qCAAsCwB,KAAKtD,aAC7E,KAAAoD,mBAAqB,IAAM,qCAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKtD,YAAcA,GAepB0D,eAAe6tC,EAAmCnzC,EAA+CuF,GAEpG,IAAKvF,EACD,MAAM,IAAIU,MAAM,4EAEpB,MACMqY,SADkB0Y,YAAalsB,IACdwT,KACjBhM,QAAiBm7B,sCAA4B,IAAIC,0BAA2B5iC,GAElF,OAAIwT,GAAShM,GAAgC,IAApBA,EAASzG,OAM3BgE,YAAwB,CAAE5E,cAAeH,EAAKkB,oBAAqB,IAAMsG,EAASvI,IAAIgR,GAAKA,EAAE7S,UAAW,GAAI,MAC9GyE,KAAKlH,GACKA,GACRsK,MAAOC,IAIN,MAHAlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,8DACd,IAAInK,MAAM,iEAZpBmL,QAAQC,IAAI,4GACZvG,EAAI8B,MAAM,4GACuB,IAc1BlC,+CAA2B,CACtCC,GAAI,+EACJC,OAA6C8tC,EAC7CnzC,MApCiBM,GACV,IAAI4yC,EAAuC5yC,EAAUc,eAAeQ,gB,oCClB/E,kCAAO,MAAMwxC,EAqBTvuC,YACIvD,EACAuH,EACAwqC,EACAtqC,GAQG,KAAAhE,YAAc,IAAM,gBACpB,KAAAC,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAAiB,OARhCC,KAAK5D,UAAYA,EACjB4D,KAAK2D,SAAWA,EAChB3D,KAAKmuC,cAAgBA,EACrBnuC,KAAK6D,gBAAkBA,K,8UC3B7B,MAAOuqC,EAITzuC,YAAYvD,EAA4BuC,GAKjC,KAAAkB,YAAc,IAAM,0CACpB,KAAAC,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAgB,OANnCC,KAAK5D,UAAiC,iBAAdA,GAA0BA,EAAYA,EAC9D4D,KAAKrB,UAAYA,GAWlB,MAAM0vC,EAAsDjzC,IAC/D,MAAMgB,EAAYH,8CAAoCb,GACtD,GAAIgB,EACA,OAAO,IAAIgyC,GAA8ChyC,GAAYhB,EAAUc,eAAeQ,YAAYiC,WAE1G,MAAM,IAAInD,MAAM,gHAMjB4E,eAAekuC,EAAiDxzC,EAAqDuF,GACxH,MAAM4E,EAAuB,IAAIvF,uBAAqB5E,EAAMsB,UAAWtB,EAAM6D,WAC7E,OAAOuG,6BAAmBD,EAAsB5E,GAC3C6B,KAAKiD,GACFA,EACOwuB,YAA8B,CAAEnzB,cAAeH,EAAKkB,oBAAqB,IAAM,CAAEuc,WAAY,CAAC3Y,EAAc1H,UAAWo2B,sBAAsB,IAAO3xB,KAAK5B,IAC5J,GAAIA,GAAYA,EAAS4zB,yCAA2C5zB,EAAS4zB,wCAAwC9yB,OAAQ,OAKzH,OAHuB,UAAGd,EAAS4zB,+CAAZ,aAAG,EAAkD50B,IAAKvC,IACtE,CAACS,UAAWT,EAAQS,UAAWm4B,kBAAmB54B,EAAQwxC,kBAAmBzrB,oBAAqB/lB,EAAQ+lB,wBAE5F,GAE7B,OAAO,OAGR,MAENxd,MAAOC,IAER,MADAlF,EAAI8B,MAAMoD,EAAMC,SACV,IAAIhK,MAAM,8DAQTyE,+CAA2B,CACtCC,GAAI,4FACJC,OAA6CmuC,EAC7CxzC,MAAqDuzC,K,+OCzDlD,MAAMG,EAIT7uC,YAAYjD,EAAmCwgC,GAKxC,KAAAr9B,YAAc,IAAMrB,YAAc,cAAcwB,KAAKk9B,kBAAqBl9B,KAAKtD,aAC/E,KAAAoD,mBAAqB,IAAM,aAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKk9B,kBAAoBA,EACzBl9B,KAAKtD,YAAcA,GAYpB,MAAM+xC,EAAyBrzC,IAClC,MAAM,eAAEc,GAAmBd,EAC3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,+DAGpB,OAAO,IAAIgzC,EAAapzC,EAAUc,eAAeQ,cAQ9C0D,eAAesuC,EAAiB5zC,EAAqBuF,GACxD,MAAM03B,EAAgB,IAAInyB,mBAAiBvF,EAAInE,eAAeQ,YAAa5B,EAAMoiC,mBAC3ElF,QAAiBC,kBAAYF,EAAe13B,GAElD,IAAK23B,EACD,MAAM,IAAIx8B,MAAM,4BAGpB,OAAOw8B,EAASwG,WAAa,GAQlBv+B,+CAAsC,CACjDC,GAAI,wDACJC,OAA4BuuC,EAC5B5zC,MAAqD2zC,K,8ECtDlD,SAASza,EAA+B3zB,EAAoBsuC,GAC/D,MAAM5a,EAA8D,GAEpE,QAAsD10B,IAAnDgB,EAAInE,eAAe0b,IAAIrb,OAAOqyC,mBAAqF,IAAnDvuC,EAAInE,eAAe0b,IAAIrb,OAAOqyC,iBAC7F,OAAO7a,EAGX,GAAG4a,GAA8BA,EAA2BvtC,OAAS,EACjE,IAAI,MAAMrE,KAAW4xC,EACjB,OAAOtuC,EAAInE,eAAe0b,IAAIrb,OAAOsyC,gBACjC,IAAK,oBAED,MAAMC,EAAqBC,EAAsC1uC,EAAKtD,GACnE+xC,GACC/a,EAA4BroB,KAAKojC,GAErC,MACJ,IAAK,iBAED,MAAME,EAA2BC,EAA4C5uC,EAAKtD,GAC/EiyC,GACCjb,EAA4BroB,KAAKsjC,GAErC,MACJ,QAEI,MAAMjN,EAAamN,EAAiC7uC,EAAKtD,GACtDglC,GACChO,EAA4BroB,KAAKq2B,GAMrD,OAAOhO,EAGJ,SAASmb,EAAiC7uC,EAAqB8uC,GAClE,GAAGA,GAAyCA,EAAsC3xC,gBAAoE6B,IAAvD8vC,EAAsCC,eAA4B,CAC7J,MAAMC,EAAaF,EAAsCC,eAAiB/uC,EAAInE,eAAe0b,IAAIrb,OAAO+yC,oBAClGC,EAAqD,CACvD/xC,UAAW2xC,EAAsC3xC,UACjDm4B,kBAAmB0Z,EAAa,EAAGA,EAAa,GAGpD,MAAO,CACHzZ,yBAAyB2Z,EACzBC,sBAAoBD,EAAyB5Z,mBAAqB4Z,EAAyB5Z,kBAAoB,GAC/GF,iBAAkB0Z,EAAsC1Z,kBAIhE,OAAO,KAGJ,SAASsZ,EAAsC1uC,EAAqB8uC,GACvE,MAAMM,EAAoBC,EAAoBrvC,EAAK8uC,EAAsCQ,qCAEzF,GAAGR,GAAyCA,EAAsC3xC,gBAAsE6B,IAAzD8vC,EAAsCC,eAA8B,CAG/J,MAAMrW,EAAgG,QAA9EoW,EAAsCQ,oCACxD,EACDR,EAAsCZ,kBAErCgB,EAAqD,CACvD/xC,UAAW2xC,EAAsC3xC,UACjDm4B,kBAAmBoD,GAEvB,MAAO,CACHnD,yBAAyB2Z,EACzBK,eAAgBH,EAAmBN,EAAsCQ,yCAAqCtwC,EAC9GwwC,gBAAiBJ,EAAmBN,EAAsCW,0CAAsCzwC,EAChHmwC,mBAAkEnwC,MAA9CkwC,EAAyB5Z,mBAAmC4Z,EAAyB5Z,kBAAoB,EAC7HF,iBAAkB0Z,EAAsC1Z,kBAIhE,OAAO,KAGJ,SAASwZ,EAA4C5uC,EAAqB8uC,GAC7E,MAAMM,EAAoBC,EAAoBrvC,EAAK8uC,EAAsCY,kCACzF,GAAGZ,GAAyCA,EAAsC3xC,gBAAsE6B,IAAzD8vC,EAAsCC,eAA8B,CAG/J,MAAMrW,EAA6F,QAA3EoW,EAAsCY,iCACxD,EACDZ,EAAsCC,eAErCG,EAAqD,CACvD/xC,UAAW2xC,EAAsC3xC,UACjDm4B,kBAAmBoD,GAEvB,MAAO,CACHnD,yBAAyB2Z,EACzBK,eAAgBH,EAAmBN,EAAsCY,sCAAkC1wC,EAC3GwwC,gBAAiBJ,EAAmBN,EAAsCa,uCAAmC3wC,EAC7GmwC,mBAAkEnwC,MAA9CkwC,EAAyB5Z,mBAAmC4Z,EAAyB5Z,kBAAoB,EAC7HF,iBAAkB0Z,EAAsC1Z,kBAIhE,OAAO,KAGJ,SAASia,EAAoBrvC,EAAsB4vC,GACvD,IAAIA,EACA,OAAO,EAGV,OAAO5vC,EAAInE,eAAe0b,IAAIrb,OAAO2zC,iBACjC,IAAK,mBACG,GAAqB,UAAlBD,EACC,OAAO,EAEf,MACJ,IAAK,aACG,GAAoB,OAAjBA,EACC,OAAO,EAEf,MACJ,IAAK,MACD,OAAO,EAEf,OAAO,I,mVC3HJ,MAAME,EAOTxwC,YAAYywC,EAAoBC,EAAqBC,EAAkBld,EAA6BC,GAQ7F,KAAAxzB,YAAc,IAAM,iCACpB,KAAAC,mBAAqB,IAAM,iCAC3B,KAAAC,cAAgB,IAAiB,OATpCC,KAAK8V,SAAWs6B,EAChBpwC,KAAK+V,UAAYs6B,EACjBrwC,KAAK4Z,OAAS02B,EACdtwC,KAAK+Z,kBAAoBqZ,EACzBpzB,KAAKuzB,eAAiBF,GAYvB,MAAMkd,EAAwCn1C,GAC1C,IAAI+0C,EAMR/vC,eAAemE,EAAgBC,GAClC,OAAOC,gCAAsB,IAAIC,oBAAqBF,GAQnDpE,eAAeowC,EAClB11C,EACAuF,GAAmB,MAGnB,UAAsBhB,IAAjBvE,EAAM8e,QAAyB9e,EAAMgb,UAAahb,EAAMib,WAAejb,EAAMy4B,gBAE9E,MAAO,GAGX,MAAM5Z,EAAyB,CAC3B7D,SAAUhb,EAAMgb,SAChBC,UAAWjb,EAAMib,UACjB6D,OAAQ9e,EAAM8e,OACdG,kBAAmBjf,EAAMif,mBAAqB,GAG5CzV,QAAqBC,EAAgBlE,GACrCqzB,EAAoCpvB,SAAH,UAAGA,EAActD,KAAK6D,GAAsB,oEAAdA,EAAKC,aAAnC,aAAG,EAA6GC,UAEvJ,OAAOoV,YAA+B,CAAE3Z,cAAeH,GAAOsZ,GACzDzX,KAAK9B,UACF,IAAIo0B,EAA+D,GAEvE,GAAGd,EAAmC,CACnC,MAAMe,EAAiBJ,EAAO/0B,IAAIg1B,GAASA,EAAM/sB,WACjDitB,QAyDXp0B,eACIs0B,EACAr0B,GACI,GAAkC,KAA9Bq0B,aAAA,EAAAA,EAAmBtzB,cAAuC/B,IAAtBq1B,EACpC,OAGJ,MAAMC,EAA0B,GAQpC,OAPKD,WAAmBp1B,IAAIY,IACnB,QAAUb,IAAPa,EACC,OAAOy0B,EAAcjpB,KAAKxL,KAKhC00B,YAA+B,CAAEp0B,cAAeH,GAAOs0B,EAAe,GACxEzyB,KAAM2yB,IAEH,GAAIA,KAA4BA,aAAkCr5B,OAC9D,OAAOq5B,IAKdvvB,MAAOC,IACJlF,EAAI8B,MAAM,8HACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,+HACb,KAtFwBmvB,CAAgCL,EAAgBp0B,GAEhF,MAAMowC,EAAsBpc,EAAO/0B,IAAIg1B,IAAQ,MAC3C,MAAMU,EAAsB,UAAGR,SAAH,aAAG,EAAyBxzB,KAAKi0B,GAA0BA,EAAuB1tB,YAAc+sB,EAAM/sB,WAClI,OAmBfnH,eACI80B,EAAiCC,EACjC90B,GACA,IAAK60B,IAAoBA,EAAgBE,cACrC,MAAO,CAAEC,yBAAqBh2B,GAGlC,OAAOi2B,YAAmB,CAAE90B,cAAeH,GAAO60B,EAAgBE,eAC7DlzB,KAAMqzB,IAEH,MAAMM,EAAoC,CACtCC,gBAAiBZ,GAGrB,OAAIK,GAAWA,aAAiB/5B,MAIzB,CAAE65B,oBAAqBQ,EAAcI,2BAA4Bd,GAH7D,CAAEE,oBAAqBQ,EAAcK,WAAYX,EAAOU,2BAA4Bd,KAKlG7vB,MAAOC,IACJlF,EAAI8B,MAAM,2EACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,2EACb,CAAE0vB,oBAAqB,MA5CpBqb,CAAsBpc,EAAOU,EAAwB30B,KAE/D,OAAOuC,QAAQ6vB,IAAIge,KAEtBnrC,MAAOC,IACJlF,EAAI8B,MAAM,uDACV9B,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUF,MAAMA,EAAMC,SAC1BnF,EAAIoF,UAAUE,MAAM,uDACb,KAgFJ1F,+CAA2B,CACtCC,GAAI,2EACJC,OAAyDqwC,EACzD11C,MAAOy1C,K,8MC7JJ,MAAM5kC,EAOThM,YAAYvD,EAA4BM,EAAmCu1B,GAOpE,KAAApyB,YAAc,KACjB,MAAM,SAAEzB,EAAF,UAAYE,GAAc0B,KAAKkhC,uBACrC,OAAO1iC,YAAcQ,YAAY,CAACgB,KAAK5D,UAAWgC,EAAUE,IAAa0B,KAAKtD,cAE3E,KAAAoD,mBAAqB,IAAM,cAC3B,KAAAC,cAAgB,IAAiB,cAXpCC,KAAK5D,UAAiC,iBAAdA,EAAyB8W,SAAS9W,EAAW,IAAMA,EAC3E4D,KAAKkhC,uBAAyBjP,EAC9BjyB,KAAKtD,YAAcA,EACnBsD,KAAKrB,UAAYjC,EAAYiC,WAc9B,MAAMuiC,EAGTvhC,YAAYvB,EAAoBE,GAC5B0B,KAAK5B,SAAWA,IAAY,EAC5B4B,KAAK1B,UAAYA,IAAa,GA6DtC8B,eAAeuwC,EACXr8B,EACAs8B,EACAC,EACAxwC,GAEA,MAAMm4B,EAAkC,CAAEjxB,WAAYlH,EAAInE,eAAeQ,YAAYiC,UAAWvB,UAAW,GACrG0zC,EAAwBx8B,EACzBhV,IAAIxE,IACL,GAAIA,EAAMomC,uBAAuB9iC,UAAYwyC,EAAgBlb,IAAI56B,EAAMsB,WACnE,OAAOtB,EAAMsB,YAGhBiN,OAAOC,SAEX,OAAOmvB,YACA,CAAEj4B,cAAeH,EAAKkB,oBAAqB,IAC3Ci3B,EACAsY,EACA,IAAI3oB,KACJ,KACA,IACA,GAEFjmB,KAAKlH,IAEHA,EAAOsQ,QAAQotB,IACX,MAAMuN,EAAuC4K,EAAkB7vC,KAAKsP,GACzDA,EAAEqiB,gBAAmBriB,EAAEqiB,eAAel1B,WAAai7B,EAAal7B,WAEvEyoC,IAGIjnB,KAAU3e,EAAInE,eAAeQ,YAAYuiB,yBAA0B,YACnEyZ,EAAaC,wBAA0BD,EAAaE,eAExDqN,EAAY8K,aAAerY,OAItCpzB,MAAOC,IACJ,MAAME,EAAYpF,EAAIoF,UACtBA,EAAUE,MAAM,sDAChBF,EAAUC,UAAUH,KAIhCnF,eAAe4wC,EACX18B,EACAs8B,EACAC,EACAxwC,GAEA,MAAMywC,EAAwBx8B,EACzBhV,IAAIxE,IACN,GAAIA,EAAMomC,uBAAuB5iC,WAAasyC,EAAgBlb,IAAI56B,EAAMsB,WACpE,OAAOtB,EAAMsB,YAGfiN,OAAOC,SAEZ,OAAOiW,YAAuB,CAAE/e,cAAeH,EAAKkB,oBAAqB,IAAMuvC,GAC1E5uC,KAAKlH,IACFA,EAAOsQ,QAAQoU,IACX,MAAMumB,EAAuC4K,EAAkB7vC,KAAKsP,GACzDA,EAAEqiB,gBAAmBriB,EAAEqiB,eAAel1B,WAAaiiB,EAAcliB,WAExEyoC,IACAA,EAAYgL,cAAgBvxB,OAIvCpa,MAAM4rC,IACH,MAAMzrC,EAAYpF,EAAIoF,UACtBA,EAAUE,MAAM,2DAChBF,EAAUC,UAAUwrC,KAIjBjxC,yCAA2B,CACtCC,GAAI,8DACJC,OAtHGC,eAAqCkU,EAA4BjU,GACpE,IAAKK,MAAMC,QAAQ2T,KAAYA,EAAOlT,OAElC,OADAf,EAAI8B,MAAM,2DACY,GAG1B,MAAM,YAAEzF,GAAgB2D,EAAInE,eACtBmP,EAAgBiJ,EAAOhV,IACxBxE,GACU,IAAIoV,IAAapV,EAAMsB,UAAWM,IAIjD,OAAOyT,YAAkB9E,EAAehL,GACnC6B,KAAKlH,GACKA,EAAOsE,IAAIvC,IACX,CAAE41B,eAAgB51B,MAG5BmF,KAAM2uC,IACX,MAAMD,EAAkB,IAAI5F,IAAI6F,EAAkBvxC,IAAIxE,GAASA,EAAM63B,gBAAkB73B,EAAM63B,eAAel1B,WAE9F0zC,EAA0B,CAC5BR,EAAiBr8B,EAAQs8B,EAAiBC,EAAmBxwC,GAC7D2wC,EAAmB18B,EAAQs8B,EAAiBC,EAAmBxwC,IAE3E,OAAOuC,QAAQ6vB,IAAI0e,GAAyBjvC,KAAK,IACtC2uC,KAGNvrC,MAAMtJ,IACHqE,EAAIoF,UAAUC,UAAU1J,GACxBqE,EAAIoF,UAAUE,MAAM,iCACb,MAsFf7K,MAxIwBM,IACxB,IAAI4U,EAAa5U,EAAUmB,QAAUnB,EAAUmB,OAAOyT,WACtD,MAAM+wB,EAAyB5iC,YAAyC/C,GAIxE,MAH0B,iBAAf4U,IACPA,EAAaA,EAAWyJ,MAAM,MAE9B/Y,MAAMC,QAAQqP,IAAeA,EAAW5O,OACjC4O,EAAW1Q,IAAKlD,GACZ,IAAIuP,GAAkBvP,EAAWhB,EAAUc,eAAeQ,YAAaqkC,IAG3E,IA8HXrnB,WAAW,K,yFC7JfpX,+BAAqB,CACjBC,SAAU,oDACVC,eApBkBpC,MAClBqC,EACA2M,EACAzM,KAEKjC,MAAMC,QAAQyO,KACfA,EAAiB,CAACA,IAGtBA,EAAe9D,QAAQlL,UACnB,GAAIrD,EAAS,CACTA,QAAgB6F,QAAQC,QAAQ9F,GAChC,MAAM+F,EAAcC,YAAgChG,GACpD4F,EAAczG,eAAe8G,cAAcF,EAAYG,YAAcH,MAQ7EM,cAzBmBhD,e,kCCTvB,gGAsBM,MAAO2tB,EAQTpuB,YACIZ,EACArC,EACA6E,EACA4rB,EACAzb,EACAsc,GAUG,KAAAnuB,YAAc,IAEjBrB,wBACI,GAAGwB,KAAKjB,YAAYiB,KAAK0R,UAAY1R,KAAKguB,cAAchuB,KAAKmtB,SAAS7tB,IAAIkuB,GAAW,GAAGA,EAAQW,kBAAkBX,EAAQY,sBAAwB,KAAKZ,EAAQa,uBAAyB,UAAUjZ,KAAKa,UAAUjW,KAAKuB,uBACtNvB,KAAKtD,aAEN,KAAAoD,mBAAqB,IAAM,yBAC3B,KAAAC,cAAgB,IAAiB,UAfpCC,KAAKjB,SAAWA,EAChBiB,KAAKtD,YAAcA,EACnBsD,KAAK0R,SAAWA,EAChB1R,KAAKguB,WAAaA,EAClBhuB,KAAKuB,oBAAsBA,EAC3BvB,KAAKmtB,SAAWA,GA8BjB,MAAMoB,EAA4B,CACrCtvB,EACAuvB,KAEA,MAAMzvB,EACyC,aAA3CE,EAAK/C,eAAeG,UAAU0C,UAA4BE,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMif,WAC3G,WACA,SAEJ7Z,EAAsB8N,2BAAyBC,cAAcrQ,GAAMsQ,oBACnEkf,EAAgB9B,YAAuB1tB,EAAK/C,gBAMlD,GAJG+C,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMuyB,UACtDntB,EAAoBqP,QAAU,CAAEC,QAAuBuE,KAAKC,MAAMsY,mBAAmB1uB,EAAK/C,eAAeC,MAAMuyB,YAGlG,aAAb3vB,EACA,OAAO,IAAIyvB,EACPzvB,EACAE,EAAK/C,eAAeQ,YACpB6E,EACAktB,IACExvB,EAAK/C,eAAeG,UAAUC,QAAW2C,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMif,YAAe,QACjH/b,GAED,GAAiB,WAAbN,GAAyBE,EAAK/C,eAAeC,MACpD,OAAO,IAAIqyB,EACPzvB,EACAE,EAAK/C,eAAeQ,YACpB6E,EACAktB,OACApvB,EACAJ,EAAK/C,eAAeC,MAAMZ,GAIlC,MAAM,IAAIC,MAAM,0D,mBC7GpBw0B,EAAOohB,QAAUC,O,wPCaX,MAAOC,EAET3xC,YAAY7E,GAIL,KAAAwI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,wBACpB,KAAAC,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAA0B,OAP7CC,KAAKlF,MAAQA,GAiBd,MAAMy2C,EAA6B,CACtCtyC,EADsC,KAGhB,IADtB,YAAEspB,EAAF,WAAeD,GACO,EACtB,MAAMniB,EAAYlH,EAAK/C,eAAewF,KAAKoE,sBAC3C,OAAO,IAAIwrC,EACPjpB,YACIliB,EACAmiB,EACAC,KAKLnoB,eAAeoxC,EAClB12C,EACAuF,GAEA,OAAOvF,EAAMA,MAAM0I,QAAQnD,GAGhBkD,uCAAoC,CAC/CpD,OAAiDqxC,EACjD12C,MAAOy2C,K,wICzCJ,MAAME,EAIT9xC,YAAYpD,EAAmCL,GAKxC,KAAA4D,mBAAqB,IAAc,sBACnC,KAAAD,YAAc,IAAcjB,qCAA2B,sBAAuBoB,KAAK9D,gBACnF,KAAA6D,cAAgB,IAAiB,UANpCC,KAAKzD,OAASA,GAAU,GACxByD,KAAK9D,eAAiBA,GA6Df+D,+CAA2B,CACtCC,GAAI,gEACJC,OA/CWC,MAAOtF,EAAiC0J,KACnD,MAAM,OAAEjI,GAAWzB,EACnB,IAAI+2B,EACJ,IACIA,QAAwB8Q,6BAZOvnC,KACnC,GAAIA,GAAaA,EAAUc,eACvB,OAAO,IAAIg2B,uBAAqB92B,EAAUc,gBAG9C,MAAM,IAAIV,MAAM,uDAO+Bk2C,CAA8BltC,GAAUA,GACrF,MAAOxI,IAGT,GAAI61B,EAAiB,CACjB,IAAI8f,EACJ,IAEI,MAAMhgC,EAAYM,0BAAgBzN,EAAQtI,eAAewC,OAAQmzB,EAAgB3f,kBAC3EkqB,EAAkBvK,EAAgBzf,iBAAmByf,EAAgB/sB,KAC3E+sB,EAAgB/sB,KAAO6M,EACvBkgB,EAAgBzf,gBAAkBgqB,EAClCuV,EAAc/+B,yBAAeif,GAE7B,MAAM7C,EAAkBxqB,EAAQtI,eAAe8yB,gBAE3C2iB,EADAA,GAAe3iB,EACD,WAAWA,IAAkB2iB,SAE7BtyC,EAEpB,MAAOrD,GACL21C,OAActyC,EAElB,MAAO,CACHqN,MAAOmlB,EAAgB/sB,KACvBmqB,gBAAiB4C,EAAgB+f,aACjC1iB,aAAcyiB,EACdxiB,WAAY5yB,GAAUA,EAAO4yB,YAG9B,OAAI5yB,EACA,CACHmQ,MAAOnQ,EAAOmQ,MACduiB,gBAAiB1yB,EAAO6yB,cAAgB7yB,EAAO6yB,aAAarW,IAC5DoW,WAAY5yB,GAAUA,EAAO4yB,YAG1B,IAOXr0B,MAAQmE,GACG,IAAIwyC,EAAoDxyC,EAAK1C,OAAQ0C,EAAK/C,mB,kNCzElF,MAAM21C,EAAgC/2C,IACzC,MAAMsB,EAAYH,8CAAoCnB,GACtD,GAAIsB,EAEA,OAAO,IAAIsH,IAAuBtH,EAAW0wC,0BAAgBhyC,GAAQA,EAAMoB,eAAewC,OAAQquC,2BAAiBjyC,IAEvH,MAAM,IAAIU,MAAM,yGAGb4E,eAAe0xC,EAA0Bh3C,EAA+BuF,GAC3E,IAuCJ,SAAsBvF,GAClB,OAAOA,GAASA,EAAMsB,UAAUgF,OAAS,GAAKtG,EAAM6I,SAASvC,OAAS,GAAKtG,EAAM8I,iBAAiBxC,OAAS,GAAKtG,EAAMmJ,SAAW,EAxC5H+oC,CAAalyC,GACd,MAAM,IAAIU,MACN,kDAAkDV,EAAMsB,yBAAyBtB,EAAM6I,gCAAgC7I,EAAM8I,oBAGrI,IAAIiU,EACA,GAAG/c,EAAM+I,wCAAwC/I,EAAMsB,sBAC1CtB,EAAM6I,SACnB,qBAAqB7I,EAAM8I,iBAC3B,aAAa9I,EAAMmJ,SACnB,YAAYnJ,EAAMgJ,QAClB,cAAchJ,EAAMkJ,UASxB,YAP0B3E,IAAtBvE,EAAMiJ,aAA6BjJ,EAAMiJ,YAAY3C,OAAS,IAC9DyW,EAAa,GAAGA,iBAA0B/c,EAAMiJ,eAG5B,OAApBjJ,EAAMoJ,YACN2T,EAAa,GAAGA,eAAwB/c,EAAMoJ,aAE3C+oC,sBAAqBp1B,EAAY,OACnC3V,KAAK5B,GACEA,EAAS4N,MAAQ5N,EAAS4N,KAAKF,OAAS1N,EAAS4N,KAAKF,MAAM5M,OAAS,EAC9D,CACH4M,MAAO1N,EAAS4N,KAAKF,MAAM3E,OAAOwV,IAAMA,EAAEkzB,aAC1CC,WAAY1xC,EAAS4N,KAAK8jC,aAGlC3xC,EAAI8B,MAAM,0DACH7B,EAAS4N,OAEnB5I,MAAMC,IAIH,MAHAlF,EAAI8B,MAAM,yDACV9B,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,yDACdJ,IAQHtF,+CAA2B,CACtCC,GAAI,iEACJC,OAA0B2xC,EAC1Bh3C,MAAO+2C,K,4OCtDX,MAAMnlB,EAAwB,CAAC,gBAAiB,uBAAwB,kBAAmB,qBAAsB,wBAAyB,YAM7HC,EAA0BzwB,IACnC,MAAM0wB,EAAyBC,EAAuC,WAAY3wB,GAClF,OAAK0wB,GAA2BA,EAAuBxrB,OAIzBwrB,EAAuBttB,IAAKwtB,IACtD,IACI,MAAMC,EAAqC,GAK3C,OAJAL,EAAsBphB,QAAQ,CAAC0hB,EAAYle,KAEvCie,EAAcC,GAAcF,EAAkBhe,KAE3Cie,EACT,MAAM/wB,GACJ,UAELqN,OAAOC,SAdC,IAyCF2jB,EAAmB,CAACC,EAAcC,EAAkCC,EAA+B1e,SAE3FrP,IAAb8tB,GACKA,EAAS/rB,OAGV8rB,EAAQG,aAAaC,IAAI,WAAYlY,KAAKa,UA1BrBkX,KAC7B,MAAMI,EAA4C,GAWlD,OATAJ,EAAS7hB,QAASkiB,IACd,MAAMV,EAAyC,GAC/CJ,EAAsBphB,QAAS0hB,IAE3BF,EAAkBphB,KAAK8hB,EAAQR,MAEnCO,EAAmB7hB,KAAKohB,KAGrBS,GAcqDE,CAAiBN,KAFrED,EAAQG,aAAaK,OAAO,YAMhCR,EAAQG,aAAaK,OAAO,QACrBR,EAAQ3f,WAGIlO,IAAnB+tB,GACIA,EAAehsB,OAGf8rB,EAAQG,aAAaC,IAAI,UAAWlY,KAAKa,UAAUmX,IAFnDF,EAAQG,aAAaK,OAAO,WAMhCR,EAAQG,aAAaK,OAAO,QACrBR,EAAQ3f,OAGfmB,GACAwe,EAAQG,aAAaC,IAAI,OAAQ5e,EAAUlH,YAGxC0lB,EAAQ3f,MAQNsf,EAAkB,CAAI7jB,EAAa9M,IACzCA,EAAeC,OAASD,EAAeC,MAAM6M,GAClCoM,KAAKC,MAAMsY,mBAAmBzxB,EAAeC,MAAM6M,KAE1D,KAOE4kB,EAAiB1xB,GACvBoa,UAASC,UACD,IAAIsX,IAAI/mB,OAAOgnB,SAASvgB,MAG3BrR,EAAewc,IAAIb,WAAWtK,KACvB,IAAIsgB,IAAI3xB,EAAewc,IAAIb,WAAWtK,MAEtC,IAAIsgB,IAAsB3xB,EAAewc,IAAIb,a,4QCnHzD,MAAMo6B,EAAbtyC,cACW,KAAAE,YAAc,IAAM,yBACpB,KAAAC,mBAAqB,IAAM,kBAC3B,KAAAC,cAAgB,IAAiB,QAGrC,MAAMmyC,EAAwC92C,IACjD,MAAM,eAAEc,GAAmBd,EAG3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,0BAGpB,OAAO,IAAIy2C,GAGR7xC,eAAe+xC,EAA0Br3C,EAAoCuF,GAChF,OAAOu+B,YAAgB,CAAEp+B,cAAeH,IACnC6B,KAAK28B,GACGA,EAIEuT,YAAc,CAAE5xC,cAAeH,GAAOw+B,EAAgBC,mBACxD58B,KAAMmwC,GACIA,EAAMjxC,QAEhBkE,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAI8B,MAAM,uDACJ,IAAI3G,MAAM,yDAVb,GAad8J,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,gEACd,IAAInK,MAAM,kEAGbyE,+CAA2B,CACtCC,GAAI,+BACJC,OAAkCgyC,EAClCr3C,MAAOo3C,K,+JCvCJ9xC,eAAekyC,EAA2B7oC,EAAuClI,EAA2ClB,GAC/H,OAAOkyC,YAA8B,CAAE/xC,cAAeH,EAAKkB,oBAAqBA,GAAuBkI,GAAgBvH,KAAMswC,IACzH,IAAKA,EAED,OADAnyC,EAAI8B,MAAM,sDACyB,GAGvC,MAAMnH,GAAUw3C,GAAmB,IAAIlzC,IAAKmzC,GAA6DA,GAEzG,OAAKz3C,EAAOoG,OAKLpG,GAJHqF,EAAI8B,MAAM,8EACyB,MCVxC,MAAMuwC,UAAkC3kB,IAA/CpuB,kCACW,KAAAG,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAEG,aAAlBC,KAAKjB,UACJiB,KAAKmtB,UAAYntB,KAAKmtB,SAAS/rB,OAAS,GACxCpB,KAAKuB,qBAAuBvB,KAAKuB,oBAAoBqP,SAAW5Q,KAAKuB,oBAAoBqP,QAAQC,SAAW7Q,KAAKuB,oBAAoBqP,QAAQC,QAAQzP,OAAS,EAExJ,UAEA,eAuEJnB,+CAA2B,CACtCC,GAAI,iFACJC,OA1DJC,eAAsBtF,EAAiCuF,GACnD,IAAIsyC,EACJ,GAAsB,aAAnB73C,EAAMiE,SAAyB,CAC9B,GAAGjE,EAAM4W,SACL,OAAO4gC,EACH,CACI52B,YAAY,CAAC5gB,EAAM4W,UACnB+J,QAAU,CACNlU,UAAWzM,EAAM4B,YAAYiC,UAC7BvB,UAAWtC,EAAM4B,YAAYS,YAGrCrC,EAAMyG,oBACNlB,GAEJ,MAAM,IAAI7E,MAAM,oFAGpB,GAAIV,EAAMkzB,YAAe3tB,EAAInE,eAAeC,OAASkE,EAAInE,eAAeC,MAAMZ,EAC1E,OAAO+2C,EACH,CACI3Y,gBAAiB7+B,EAAMkzB,WACvBvS,QAAU,CACNlU,UAAWzM,EAAM4B,YAAYiC,UAC7BvB,UAAWtC,EAAM4B,YAAYS,YAGrCrC,EAAMyG,oBACNlB,GAEA,GAAIvF,EAAMkzB,YAAe3tB,EAAInE,eAAeC,OAASkE,EAAInE,eAAeC,MAAMC,UAAY,CAEtF,GADAu2C,EAAkB/2C,OAAOd,EAAMkzB,YAC3BpyB,OAAO4S,MAAMmkC,GACb,MAAM,IAAIn3C,MAAM,mDAEhB,OAAO82C,EACH,CACI72B,QAAU,CACNlU,UAAWzM,EAAM4B,YAAYiC,UAC7BvB,UAAWtC,EAAM4B,YAAYS,WAEjCy1C,qBAAsB,QACtBzzB,IAAK,CAACwzB,GAAmB,IAE7B73C,EAAMyG,oBACNlB,GAGR,MAAM,IAAI7E,MACN,sGAUpBV,MAlEiBmE,GACVsvB,YAA0BtvB,EAAMyzC,M,2QCvBrC,MAAOG,EAAblzC,cACW,KAAAE,YAAc,IAAM,6BACpB,KAAAC,mBAAqB,IAAM,6BAC3B,KAAAC,cAAgB,IAAiB,QAGrC,MAAMwJ,EAAc,IAChB,IAAIspC,EAMRzyC,eAAe0yC,EAAoCh4C,EAAwCuF,GAE9F,IAAKvF,EAED,MADAuF,EAAIoF,UAAUC,UAAU,IAAIlK,MAAM,4EAC5B,IAAIA,MAAM,2EAGpB,MACMqY,SADsB+iB,YAAiBv2B,IAClBmsB,aAAa3Y,KAGxC,OAAIA,GAAQA,EAAK6J,WAAa7J,EAAK6J,UAAUtc,OAClC+O,4BACa0D,EAAK6J,UAAUpe,IAAIqhB,IAC/B,GAAIA,EAASnjB,UACT,OAAO,IAAI0S,eAAayQ,EAASnjB,UAAW6C,EAAInE,eAAeQ,eAGpE2M,OAAOC,SACVjJ,GAEC6B,KAAK2F,GACEA,GAGO,IAGdvC,MAAMC,IAEH,MADAlF,EAAIoF,UAAUC,UAAUH,GAClB,IAAI/J,MAAM,wFAIJ,GAGbyE,+CAA2B,CACtCC,GAAI,2EACJC,OAAkC2yC,EAClCh4C,MAAOyO,K,mBC7DXymB,EAAOohB,QAAU2B,U,0FCqBjBzwC,+BAAqB,CACjBC,SAAU,6CACVC,eAXcpC,MAAOqC,EAAwCoR,EAAqBlR,KAClF,IACI,MAAM4d,QAAmB3d,QAAQC,QAAQnC,MAAMC,QAAQkT,GAAQA,EAAK,GAAKA,GACzElR,EAAczG,eAAe8G,cAAcud,WAAaA,EAC1D,MAAOvkB,GACL2G,EAAc8C,UAAUE,MAAM,yCAA0C3J,KAO5EoH,cAhBehD,e,2PCKZ,MAAM2mC,EAITpnC,YAAYqzC,EAAwBzxC,GAK7B,KAAA1B,YAAc,uBAAc,GAAGG,KAAKgzC,iBAAR,UAAyBhzC,KAAKuB,2BAA9B,iBAAyB,EAA0B9F,cAAnD,aAAyB,EAAkCC,OAA3D,UAAkEsE,KAAKuB,2BAAvE,iBAAkE,EAA0B9F,cAA5F,aAAkE,EAAkCK,QAChI,KAAAgE,mBAAqB,IAAM,cAC3B,KAAAC,cAAgB,IAAiB,WACjC,KAAAuD,kBAAoB,KAAM,EAP7BtD,KAAKgzC,cAAgBA,GAAiB,GACtChzC,KAAKuB,oBAAsBA,GAe5B,MAAM0xC,EAA+B,CAAC73C,EAAiC43C,EAAwBzxC,KAClG,MAAM,eAAErF,GAAmBd,EAC3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,mEAGpB,OAAO,IAAIurC,EAAuBiM,GAAiB,GAAIzxC,IAQpDnB,eAAe8yC,EAAwBp4C,EAA+BuF,GACzE,IAEI,MAAM8yC,EAAuD,CACzDjO,cAAepqC,EAAMk4C,cACrB90C,WAAYmC,EAAInE,eAAewF,KAAKoE,uBAExC,OAAOstC,YACH,CACI5yC,cAAeH,EACfkB,oBAAqBzG,EAAMyG,qBAE/B4xC,GAEN,MAAO5tC,GAEL,MADAlF,EAAIoF,UAAUF,MAAM,oCAAqCA,GACnDA,GAQCtF,+CAA0C,CACrDC,GAAI,gFACJC,OAAgC+yC,EAChCp4C,MAAOm4C,K,yTC3DL,MAAOI,UAAiBC,sBAG1B3zC,YAAY0H,EAAYksC,GACpB/I,MAAM,CACFzqC,cAAe,OACf4gC,gBAAiB,iBACjBD,SAAU,mBAEd1gC,KAAK1D,OAAS+K,EACdrH,KAAKuzC,WAAaA,GAkBnBnzC,eAAeozC,EAClBnzC,EACAjE,GAEA,IAAKiE,EACD,MAAM,IAAI7E,MAAM,4EAEpB,IAAIy9B,EAAyB,CAACwa,KAAK,IACnC,MAAMC,EAAoB,CAACt3C,GACrBkE,QA7CUF,iBAAmF,IAA5E4P,EAA4E,uDAArD,GAAI3P,EAAiD,uCACnG,MAAMgL,EAAgB2E,EAAW1Q,IAAIlD,GAAa,IAAI8T,eAAa9T,EAAUiE,EAAInE,eAAeQ,cAChG,OAAOyT,4BAAkB9E,EAAehL,GA2CjB+P,CAAYsjC,EAASrzC,GAI5C,OAHIC,GAAYA,EAASc,SACrB63B,EAAc,CAACwa,KAAKnzC,EAAS,GAAGwE,MAAQ,KAErCm0B,EAMJ74B,eAAeuzC,EAClBtzC,EACA+a,GAEA,IAAK/a,EACD,MAAM,IAAI7E,MAAM,6EAEpB,IAAIohC,EAA0B,CAAC6W,KAAK,IACpC,MAAM34C,EAAO,IAAIo3B,uBAAqB7xB,EAAInE,gBAC1CpB,EAAMsgB,WAAWA,EACjB,MAAM9a,QAAkBqiC,6BAAmB7nC,EAAMuF,GAIjD,OAHIC,IACAs8B,EAAe,CAAC6W,KAAKnzC,EAASwE,MAAQ,KAEnC83B,EAMJx8B,eAAewzC,EAClB94C,EACAuF,GAEA,IAAKA,EACD,MAAM,IAAI7E,MAAM,qEAEpB,IAAIq4C,EAA4B,CAACJ,KAAK,IAEtC,OAD8B34C,EAAOy4C,WAClBrqC,eACf,IAAK,WAED,OADA2qC,QAAuBF,EAAgCtzC,EAAgBvF,EAAOwB,QACvEu3C,EACX,IAAK,UAED,OADAA,QAAuBL,EAA+BnzC,EAAgBvF,EAAOwB,QACtEu3C,EACX,QACI,OAAOA,GAIJ5zC,+CAA2B,CACtCE,OAA6ByzC,EAC7B94C,MAzEiBM,IACjB,KAAKA,GAAaA,EAAUc,gBAAkBd,EAAUc,eAAeG,WACpE,MAAM,IAAIb,MAAM,uBAEnB,MAAMwK,EAAkB5K,EAAUc,eAAeG,UACjD,OAAO,IAAIg3C,EAASngC,SAASlN,EAAM1J,QAAU,IAAI,IAAK0J,EAAMjH,UAAY,Q,0PC9BrE,MAAM8+B,EAITl+B,YAAYjD,EAAmCwgC,GAMxC,KAAAr9B,YAAc,IAAMrB,wBAAc,kBAAkBwB,KAAKk9B,kBAAqBl9B,KAAKtD,aACnF,KAAAoD,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAAiB,UAPpCC,KAAKk9B,kBAAoBA,EACzBl9B,KAAKtD,YAAcA,GAapB,MAAMo3C,EAA6B14C,IACtC,MAAM,eAAEc,GAAmBd,EAC3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,wEAGpB,OAAO,IAAIqiC,EAAoBziC,EAAUc,eAAeQ,cAQrD0D,eAAeokC,EAAiB1pC,EAA4BuF,GAC/D,OAAO0zC,YAA6B,CAAEvzC,cAAeH,EAAKkB,oBAAqB,IAAMzG,EAAMoiC,mBAAqB,MACvGh7B,KAAK8xC,IACF,IAAKA,GAASA,EAAM5yC,OAAS,EACzB,MAAoB,GAGxB,MAAM6yC,EAAYD,EAAM,GAExB,OAAOE,YAAoB,CAAE1zC,cAAeH,GAAO4zC,EAAUhuB,YACxD/jB,KAAKwiC,IACFA,EAAKyP,sBAAwBF,EAAUE,sBACvCzP,EAAK0P,2BAA6BH,EAAUG,2BACrC1P,IAGVp/B,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,8BACd,IAAInK,MAAM,kCAG3B8J,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,EAAMC,SAC9BnF,EAAIoF,UAAUE,MAAM,wCACd,IAAInK,MAAM,0CAQjByE,+CAAwC,CACnDC,GAAI,6DACJC,OAA8BqkC,EAC9B1pC,MAAqDg5C,K,8LCpDlD,MAAMva,UAAyCxL,IAAtDpuB,kCACW,KAAAG,mBAAqB,IAAM,0BAC3B,KAAAC,cAAgB,IAEG,aAAlBC,KAAKjB,UACJiB,KAAKmtB,UAAYntB,KAAKmtB,SAAS/rB,OAAS,GACxCpB,KAAKuB,qBAAuBvB,KAAKuB,oBAAoBqP,SAAW5Q,KAAKuB,oBAAoBqP,QAAQC,SAAW7Q,KAAKuB,oBAAoBqP,QAAQC,QAAQzP,OAAS,EAExJ,UAEA,eA2HJnB,+CAA2B,CACtCC,GAAI,qFACJC,OA3FJC,eACItF,EACAuF,GAEA,IAAI+e,EACAoa,EACAmZ,EACJ,MAAMlZ,EAA6C,GAMnD,GALAA,EAAoBhe,QAAU,CAAElU,UAAWlH,EAAInE,eAAeQ,YAAYiC,UAAWvB,UAAWiD,EAAInE,eAAeQ,YAAYS,WAC/Hs8B,EAAoBC,WAAa5+B,EAAMqyB,SACvCsM,EAAoB9d,kBAAoB7gB,EAAMmzB,kBAC9CwL,EAAoB4a,sBAAuB,EAEpB,aAAnBv5C,EAAMiE,UAA4BsB,EAAInE,eAAeC,OAASkE,EAAInE,eAAeC,MAAMif,WAAa,CACpG,IAAItgB,EAAM4W,SAUN,MAAM,IAAIlW,MACN,wFAVJi+B,EAAoB/d,YAAc,CAAC5gB,EAAM4W,UAAY,GACrD8nB,EAAU5d,YACN,CACIpb,cAAeH,EACfkB,oBAAqBzG,EAAMyG,qBAE/Bk4B,QAQR,GAAI3+B,EAAMkzB,YAAe3tB,EAAInE,eAAeC,OAASkE,EAAInE,eAAeC,MAAMZ,EAC1Ek+B,EAAoBE,gBAAkB7+B,EAAMkzB,WAC5CwL,EAAU5d,YACN,CACIpb,cAAeH,EACfkB,oBAAqBzG,EAAMyG,qBAE/Bk4B,OAED,CACH,KAAI3+B,EAAMkzB,YAAe3tB,EAAInE,eAAeC,OAASkE,EAAInE,eAAeC,MAAMC,WAgB1E,MAAM,IAAIZ,MACN,qGAfJ,GADAm3C,EAAkB/2C,OAAOd,EAAMkzB,YAC3BpyB,OAAO4S,MAAMmkC,GACb,MAAM,IAAIn3C,MAAM,mDAEhBi+B,EAAoBmZ,qBAAuB,QAC3CnZ,EAAoBta,IAAM,CAACwzB,GAAmB,GAC9CnZ,EAAU5d,YACN,CACIpb,cAAeH,EACfkB,oBAAqBzG,EAAMyG,qBAE/Bk4B,GAWpBra,QAA6Boa,EAE7B,MAAMhgB,EAAiB4F,EAAqB9f,IAAI8yB,IAC5C,MAAM5wB,EAAc1E,kCAChBs1B,EACA/xB,EAAInE,eAAeQ,aAOvB,OAJI8E,IACA4wB,EAAoBp1B,gBAAkBwE,GAGlC4wB,IASZ,OALK9b,UAASC,WACVlW,EAAIu5B,OAAO,IAAI9X,qBAAsB,CAAE+X,kBAAmBL,EAAQv+B,SAASwY,OAAS,EAAGiO,cAAe5mB,EAAMqyB,WAIzG,CACHtlB,SAAU2R,EACV/F,MAAO+lB,EAAQv+B,SAASwY,OAAS,IAOrC3Y,MAjHiBmE,IACjB,MAAMnE,EAAQyzB,YAA0BtvB,EAAMs6B,GAc9C,OAXIz+B,EAAMyG,oBAAoB9F,QAAUwD,EAAK1C,SACzCzB,EAAMyG,oBAAoB9F,OAAOC,IAAMuD,EAAK1C,OAAOgS,cAAgB,GAInEzT,EAAMyG,oBAAoB9F,QAAUwD,EAAK/C,eAAeC,OAAS8C,EAAK/C,eAAeC,MAAMJ,OAC3FjB,EAAMyG,oBAAoB9F,OAAOK,MAAQmD,EAAK/C,eAAeC,MAAMJ,MAGvEjB,EAAMyG,oBAAoBkS,OAAQ,EAE3B3Y,M,2NCtDJ,MAAMmoC,EAAbtjC,cACW,KAAAE,YAAc,IAAM,qBACpB,KAAAC,mBAAqB,IAAM,qBAC3B,KAAAC,cAAgB,IAAiB,QAUrCK,eAAe4iC,EAA4BloC,EAAgCuF,GAE9E,IAAKvF,EACD,MAAM,IAAIU,MAAM,mEAGpB,MACMqY,SADkB0Y,YAAalsB,IACdwT,KAGvB,OAAIA,GAAQA,EAAK6J,WAAa7J,EAAK6J,UAAUtc,QACzCf,EAAI8B,MAAM,uCACHgO,4BACa0D,EAAK6J,UAAUpe,IAAIqhB,IAC/B,GAAIA,EAASnjB,UACT,OAAO,IAAI0S,eAAayQ,EAASnjB,UAAW6C,EAAInE,eAAeQ,eAGpE2M,OAAOC,SACVjJ,GAEC6B,KAAM2F,GACCA,GAGO,IAGdvC,MAAOC,IAIJ,MAHAlF,EAAI8B,MAAMoD,EAAMiC,YAChBnH,EAAIoF,UAAUF,MAAMA,EAAMC,SAC1BnF,EAAIoF,UAAUE,MAAM,8EACd,IAAInK,MAAM,kFAI5B6E,EAAI8B,MAAM,wDACc,IAGblC,+CAA2B,CACtCC,GAAI,wEACJC,OAAkC6iC,EAClCloC,MAlDiBM,GACV,IAAI6nC,K,oCChBf,qIAKA,MAAM,IAAEr8B,EAAF,MAAOrB,GAAWoB,QAmFX2tC,EAAsB,GAGtBC,EAAgC,Q,wTCpFtC,MAAMC,UAAsCvjC,kBAG/CtR,YAAY6E,EAA0B0M,EAA4BvV,EAAmB84C,GACjFjK,MAAMhmC,EAAS0M,EAAmBvV,GAK/B,KAAAmE,mBAAqB,IAAM,2BAC3B,KAAAD,YAAc,IAAM,GAAGG,KAAKy0C,oBAAoBz0C,KAAKrB,YALxDqB,KAAKy0C,iBAAmBA,GAAoB,GAW7C,MAAM1hC,EAAkC3X,IAC3C,MAAM4X,EAAW5X,EAAUmB,QAAUnB,EAAUmB,OAAO0W,eAAiBC,SAAS9X,EAAUmB,OAAO0W,cAAe,IAC1GwhC,EACDr5C,EAAUc,eAAeG,WAA6D,aAAhDjB,EAAUc,eAAeG,UAAU0C,UAA2B3D,EAAUc,eAAeG,UAAUC,QACvIlB,EAAUc,eAAeC,OAASf,EAAUc,eAAeC,MAAMif,YAClE,EAEJ,OAAO,IAAIo5B,EAA8Bp5C,EAAUc,gBAAgB,EAAM8W,GAAWyhC,IAOjFr0C,eAAes0C,EAAkC55C,EAAsCuF,GAE1F,MAAMs0C,QAA8BC,kBAChC,IAAI3jC,kBACA5Q,EAAInE,gBACJ,EACApB,EAAMa,UACV0E,GACEw0C,EAAqC,GAErCC,EAAgBpjC,GACfA,EAASjU,WAAa3C,EAAM25C,kBAC3BI,EAAcnpC,KAAKgG,IACZ,MACAA,EAASoB,WAAYpB,EAASoB,SAAS1R,cAC9CsQ,EAASoB,SAASxH,QAASypC,IACpBD,EAAaC,IACZF,EAAcnpC,KAAKgG,KAYnC,OAJAijC,EAAsBrpC,QAAS6G,IAC3B2iC,EAAa3iC,KAGV0iC,EAAcG,UAGV/0C,+CAA2B,CACtCC,GAAI,2EACJC,OAAsCu0C,EACtC55C,MAAOiY,K,6FCtBI9S,+CAA2B,CACtCC,GAAI,6DACJC,OA1BJC,eAA6BtF,EAA0BuF,GACnD,IAmBJ,SAAsBvF,GAClB,OAAOA,EAAMsB,UAAUgF,OAAS,GAAKtG,EAAMqzC,cAAc/sC,OAAS,GAAKtG,EAAM6I,SAASvC,OAAS,EApB1F4rC,CAAalyC,GAAQ,CACtB,MAAMm6C,EAAe,iEAAiEn6C,EAEtF,MADAuF,EAAI8B,MAAM8yC,GACJ,IAAIz5C,MAAMy5C,GAGpB,MAAMp9B,EAAa,GAAG/c,EAAM+I,wCAAwC/I,EAAMsB,2BAA2BtB,EAAM6I,WAE3G,OAAOspC,sBAAoBp1B,EAAY,MAAO,KAAM,CAACynB,QAAS,CAACE,cAAe,YAAY1kC,EAAMqzC,iBAAmBjsC,KAAM5B,GAC9GA,EAAS4N,MACjB5I,MAAOC,IAKN,MAJAlF,EAAI8B,MAAM,4DACV9B,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,4DACpBtF,EAAI8B,MAAMoD,GACHA,KAWXzK,MAxCiBA,IACjB,MAAMsB,EAAYH,8CAAoCnB,GAChDo6C,EAAWp6C,EAAMoB,eAAewF,KACtC,GAAItF,GAAa84C,GAAYA,EAASvzC,gBAElC,OAAO,IAAIusC,IAAmB9xC,EAAW0wC,0BAAgBhyC,GAAQo6C,EAASlvC,MAAOmvC,+BAAqBr6C,IAE1G,MAAM,IAAIU,MAAM,oG,4UCVb,MAAM02B,EAKTvyB,YAAY6E,GACR,IAAI4W,EACAuW,EACJ,GAoCG,KAAA9xB,YAAc,IAAMrB,wBAAc,IAAGwB,KAAKob,YAAcpb,KAAK2xB,cAAgB3xB,KAAKtD,aAClF,KAAAoD,mBAAqB,IAAM,mBAC3B,KAAAC,cAAgB,IAAiB,cAtChCyE,EAAQrI,OAASqI,EAAQrI,MAAMif,YAG/B,GAFAA,EAAaxf,OAAO4I,EAAQrI,MAAMif,YAE9Bxf,OAAO4S,MAAM4M,GACb,MAAM,IAAI5f,MAAM,kDAGjB,GAAIgJ,EAAQnI,WAAamI,EAAQnI,UAAUyC,UAG9C,GADAsc,EAAaxf,OAAO4I,EAAQnI,UAAUyC,UAClClD,OAAO4S,MAAM4M,GACb,MAAM,IAAI5f,MAAM,kDAEjB,GAAIgJ,EAAQnI,WAAamI,EAAQnI,UAAU+W,YAAc5O,EAAQnI,UAAU+W,WAAWhS,OAAQ,CACjG,MAAMgS,EAA2C5O,EAAQnI,UAAU+W,WAEnE,IAAKA,EAAWhS,OACZ,MAAM,IAAI5F,MAAM,8CAGpB,MAAM45C,EAAoB,CACtBl5C,eAAesI,GAEnBmtB,EAAe,IAAIve,EACd9T,IAAIoS,IAED,MAAMyqB,EAAsDW,sCAA4BsY,GACxF,OAAOnZ,YAAavqB,OAASrS,EAAW88B,KAE3C38B,KAAK,KAEdQ,KAAKob,WAAaA,EAClBpb,KAAK2xB,aAAeA,EACpB3xB,KAAKtD,YAAc8H,EAAQ9H,aAW5B,MAAMg1C,EAAiCt2C,IAC1C,GAAIA,GAAaA,EAAUc,eACvB,OAAO,IAAIg2B,EAAqB92B,EAAUc,gBAG9C,MAAM,IAAIV,MAAM,uDASb,SAAS65C,EAAejiC,EAAiCue,EAAuBvW,GACnF,IAAIk6B,EAWJ,OAVAliC,EAAW9H,QAASiqC,IAChB,GAAKn6B,GAAcm6B,EAAI93C,WAAa2d,GAAgBuW,GAAgB4jB,EAAI1Y,OAASlL,EAC7E,OAAQ2jB,EAAgBC,EACrB,GAAIA,EAAIziC,UAAYyiC,EAAIziC,SAAS1R,OAAQ,CAC5C,MAAMo0C,EAAgBH,EAAeE,EAAIziC,SAAU6e,EAAcvW,GAC7Do6B,IACAF,EAAgBE,MAIrBF,EAQJl1C,eAAeq1C,EAAyB36C,EAA6BuF,GACxE,GAAIvF,EAAM62B,cAAgB72B,EAAMsgB,WAAY,CACxC,MAAM2W,EAAgB,IAAI9gB,kBAAgB5Q,EAAInE,gBAAgB,GACxDkX,QAAmBsiC,kBAAqB3jB,EAAe1xB,GAC7D,IAAK+S,EAED,YADA/S,EAAI8B,MAAM,6DAId,MAAMuP,EAAW2jC,EAAejiC,EAAYtY,EAAM62B,aAAc72B,EAAMsgB,YACtE,OAAK1J,QACDrR,EAAI8B,MAAM,iDAaPlC,+CAA2B,CACtCC,GAAI,iEACJC,OAAoCs1C,EACpC36C,MAAO42C,K,uRCnHJ,MAAMiE,EAMTh2C,YAAYjD,EAAmCN,EAAoBe,GAO5D,KAAA0C,YAAc,IAAMrB,YAAc,oBAAmBwB,KAAK5D,WAAa4D,KAAK5D,UAAUoL,YAAcxH,KAAKtD,aACzG,KAAAoD,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAAiB,OARpCC,KAAK5D,UAAYA,EACjB4D,KAAKrB,WAAajC,EAAYiC,UAC9BqB,KAAK7C,UAAYA,GAAa,EAC9B6C,KAAKtD,YAAcA,GAWpB,MAAMk5C,EAAiCx6C,IAC1C,MAAMgB,EAAYhB,EAAUmB,SAAWnB,EAAUmB,OAAOH,gBAAaiD,EACrE,OAAO,IAAIs2C,EAAwBv6C,EAAUc,eAAeQ,YAAaN,OAAWiD,IAMjFe,eAAey1C,EAA4B/6C,EAAgCuF,GAC9E,OAAIvF,EAAMsB,UACCgmC,YAAuB,CAAE5hC,cAAeH,EAAKkB,oBAAqB,IAAMzG,EAAMsB,UAAWtB,EAAM6D,UAAW7D,EAAMqC,WAAW+E,KAAK5B,GAC5HA,EAAShB,IACX+iC,IACGA,EAAcC,IAAM9lC,YAAiB6lC,EAAcC,IAAKjiC,EAAInE,eAAeQ,aAC3E2lC,EAAcE,QAAUF,EAAcE,QAAUF,EAAcE,QAAU,GACjEF,KAKhB,GAGIpiC,+CAA2B,CACtCC,GAAI,sEACJC,OAAyC01C,EACzC/6C,MAAO86C,K,gVC3CJ,MAAM1tC,EAAc,CACvBC,0BAA2B,eAC3BC,sBAAuB,oBACvBC,uBAAwB,qBACxBC,oBAAqB,WACrBC,qBAAsB,YACtBC,qBAAsB,YACtBC,sBAAuB,cAGdwxB,EAAgB,CACzB1P,KAAM,OACN8P,MAAO,QACPE,cAAgB,gBAChBL,QAAS,WAMP,MAAOxxB,EAGT/I,YAAYjD,GAIL,KAAAmD,YAAc,IAAMrB,wBAAc,oBAAqBwB,KAAKtD,aAC5D,KAAAoD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKtD,YAAcA,GAWpB0D,eAAeuI,EAA6B7N,EAA0BuF,GACzE,OAAOuI,YAA4B,CAAEpI,cAAeH,IAAO6B,KAAM2G,IACtBA,EAAoBC,oBAAsB,IAAIxJ,IAA6CyJ,IAC9H,IAAIC,EAAM,GACV,GAAID,EAAWE,WACX,OAAOF,EAAWE,WAAWC,eACzB,KAAK+wB,EAAc1P,KACfvhB,EAAMD,EAAWI,aAAejB,EAAYK,qBAAuBL,EAAYI,oBAC/E,MACJ,KAAK2xB,EAAcI,MACfrxB,EAAMD,EAAWI,aAAejB,EAAYO,sBAAwBP,EAAYM,qBAChF,MACJ,KAAKyxB,EAAcM,cACfvxB,EAAMD,EAAWI,aAAejB,EAAYG,uBAAyBH,EAAYE,sBACjF,MACJ,KAAK6xB,EAAcC,QACflxB,EAAMd,EAAYC,+BAK1B9H,EAAIoF,UAAU2D,QAAQ,2DAE1B,OAAIJ,EACO,CACHA,MACAD,mBAGJ,IAELM,OAAOC,UAIX,MAAMC,EAAenO,GACjB,IAAIsN,EAAkBtN,EAAUc,eAAeQ,aAG3CuD,+CAA2B,CACtCC,GAAI,qFACJC,OAA+CwI,EAC/C7N,MAAOyO,K,wRC/EJ,MAAMusC,EAOTn2C,YAAY6E,EAA0BuxC,GAc/B,KAAAl2C,YAAc,IAAMrB,YAAcwB,KAAKg2C,oBAAqBh2C,KAAKtD,aACjE,KAAAoD,mBAAqB,IAAM,eAC3B,KAAAC,cAAgB,IAAiB,UAfpCC,KAAKuH,UAAY/C,EAAQ9H,YAAYiC,UACrCqB,KAAK5C,UAA4C,EAAhCoH,EAAQ9H,YAAYS,UACrC6C,KAAK+1C,qBAAuBA,EAC5B/1C,KAAKtD,YAAc8H,EAAQ9H,YAC3BsD,KAAKg2C,oBAAsB,GAC3BD,EAAqBzqC,QAAQ2qC,IAErBj2C,KAAKg2C,sBAAwBC,EAAaz4C,WAAay4C,EAAaz4C,UAAUgK,YAApD,MAElCxH,KAAKg2C,qBAAwBh2C,KAAKuH,UAAUC,WAAlB,IAC1BxH,KAAKg2C,qBAAwBh2C,KAAK5C,UAAUoK,WAAlB,KAW3B,MAAM0uC,EAA+B96C,IACxC,MAAMgB,EAAYH,YAAoCb,GACtD,GAAIgB,EACE,OAAO,IAAI05C,EAAsB16C,EAAUc,eAAgB,CAAC,CAACsB,WAAWpB,KAE1E,MAAM,IAAIZ,MAAM,wFAQjB4E,eAAe+1C,EAAuBr7C,EAA8BuF,GACvE,MAAM+1C,QAA4BC,YAAsB,CAAE71C,cAAeH,GAAMvF,EAAMyM,UAAWzM,EAAMsC,UAAUtC,EAAMi7C,sBAChHE,EAAeG,EAAoB,GAAGE,cAAgBF,EAAoB,GAAGE,aAAa,GAC1F3E,EAAc4E,+BAAqBN,EAA+B51C,GACxE,OAAGsxC,GAII,GAGI1xC,+CAA2B,CACtCC,GAAI,+DACJC,OAAiCg2C,EACjCr7C,MAAOo7C,K,g7BCtDL,MAAOM,EAKT72C,YAAYjD,GACRsD,KAAKH,YAAc,IAAMrB,wBAAc,kCAAmCwB,KAAKtD,aAC/EsD,KAAKF,mBAAqB,IAAM,kCAChCE,KAAKD,cAAgB,IAAM,UAC3BC,KAAKtD,YAAcA,GAUrB,MAAO+5C,EAAb92C,cAKW,KAAAi2B,yBAAqD,GAGrD,KAAA4Z,oBAA8B,GAKzC,MAOMkH,EAAkB,SAAC/1B,GAAgK,IAA5Ig2B,EAA4I,wDAAvHC,EAAuH,uCAA1CC,EAA0C,uCAG9K,MAFP,OAAKF,EAGMh2B,EAASm2B,gBAAiBF,SAA1B,UAA0BA,EAA6BG,+BAAvD,aAA0B,EAAsD/1C,KAAKg2C,GAAgBA,IAAiBr2B,EAASm2B,eAF/Hn2B,EAASm2B,eAAiBD,GAUlCz2C,eAAe62C,EAAkCn8C,EAA8CuF,GAAmB,MAErH,IAAKvF,EACD,MAAM,IAAIU,MAAM,2EAEpB,MAAM07C,EAAgB,GAChBC,EAAa,GACnB,IAAIC,EAAwD,GAE5D,IAAIR,EACJ,MACM/iC,SADkB0Y,YAAalsB,IACdwT,KACjBzJ,QAA6BkX,YAA6B,CAAE9gB,cAAeH,IAC3EwH,QAAiBm7B,sCAA4B,IAAIC,0BAA2B5iC,GAQlF,MAAMiE,QAJNlE,eAA0BoE,GACtB,MAAM6yC,EAAoBrvC,qCAA2B3H,GACrD,OAAOkE,0BAAgB8yC,EAAmB7yC,GAEnB8yC,CAAWj3C,GAChCk3C,EAAoCjzC,SAAH,UAAGA,EAActD,KAAK6D,GAdvB,oEAc+BA,EAAKC,aAAnC,aAAG,EAAyEC,UAC/GwyC,IACAX,QAAoCj8B,YAA2C,CAAEna,cAAeH,KAEpG,MAAMm3C,EAAyBptC,EAAqBotC,uBAC9CC,EAAwBrtC,EAAqBqtC,sBACnD,IAAK5jC,IAASzJ,IAAyBvC,GAAgC,IAApBA,EAASzG,OAGxD,OAFAuF,QAAQC,IAAI,2GACZvG,EAAI8B,MAAM,2GACH,GAEX,GAAI0R,GAAQA,EAAKxM,IAAMwM,EAAK6J,WAAa7J,EAAK6J,UAAUtc,OAAS,GAAKgJ,EAClE,IAAK,MAAMuW,KAAY9M,EAAK6J,UACpBiD,EAASm2B,cAA0C,KAA1Bn2B,EAASm2B,cAAuBJ,EAAgB/1B,EAAU42B,EAAmCX,EAA6BY,GACnJL,EAAWzrC,KAAKiV,GACTA,EAASm2B,eAAiBW,GACjCP,EAAcxrC,KAAKiV,GAI/B,GAAIu2B,GAAiBA,EAAc91C,OAAS,EAAG,CAC3C,IAAI4O,EAAuBknC,EAAc53C,IAAIgR,GAAKA,EAAE9S,UAAY8S,EAAE9S,UAAY,GAC9EwS,EAAak6B,kBAAgBwN,OAAO1nC,GACpC,MAAM2nC,QAAsChkB,YAA8B,CAAEnzB,cAAeH,EAAKoe,YAAa,OAAS,CAAEX,WAAY9N,EAAY6jB,sBAAsB,IAC0B,MAAhM,GAAI8jB,GAAiCA,EAA8BzjB,yCAA2CyjB,EAA8BzjB,wCAAwC9yB,OAAS,EAKzLu2C,WAA+BzjB,wCAAwC5oB,QAASvO,IAC5EA,EAAQqyC,eAAiBryC,EAAQwxC,oBAKrC6I,EAAwBpjB,yCAA+B3zB,EAAKs3C,aAAN,EAAMA,EAA+BzjB,yCAE3FkjB,EAAqB,UAAGA,SAAH,aAAG,EAAuB93C,IAAKvC,GACzC,EAAP,KAAWA,GAAX,IAAoBS,UAAWT,EAAQ64B,yBAAyBp4B,UAAWm4B,kBAAmB54B,EAAQ64B,yBAAyBD,kBAAmB7S,oBAAqB/lB,EAAQ64B,yBAAyB9S,uBAKpN,GAAIq0B,GAAcA,EAAW/1C,OAAS,EAClC,IAAK,MAAMw2C,KAAaT,EAAY,CAChC,MAAMU,EAAmB,CACrBr6C,UAAWo6C,EAAUp6C,UACrBi4B,iBAAkBmiB,EAAUE,YAC5BC,WAAY13C,EAAInE,eAAe6F,SAAW1B,EAAInE,eAAe6F,QAAQi2C,yBAA2B33C,EAAInE,eAAe6F,QAAQi2C,8BAA2B34C,GAEpJ44C,QAAiCC,YAA8C,CAAE13C,cAAeH,EAAKoe,YAAa,MAAOld,oBAAqB,IAAM,CAACs2C,IAC3J,GAAII,GAA4BA,EAAyB/jB,yCAA2C+jB,EAAyB/jB,wCAAwC9yB,OAAS,EAAG,CAK7K62C,WAA0B/jB,wCAAwC5oB,QAASvO,IACvEA,EAAQqyC,eAAiBryC,EAAQwxC,oBAErC,MAAM4J,EAA0BnkB,yCAA+B3zB,EAAK43C,aAAN,EAAMA,EAA0B/jB,yCAC9F,GAAIikB,GAA2BA,EAAwB/2C,OACnD,IAAK,MAAMyD,KAAQszC,EACff,EAAsB1rC,KAAK7G,IAM/C,OAAIuyC,GAAyBA,EAAsBh2C,OAAS,EACjDg2C,GAEP/2C,EAAI8B,MAAM,+EACH,IAMAlC,+CAA2B,CACtCC,GAAI,yEACJC,OAAkD82C,EAClDn8C,MA1HiBM,GACV,IAAIo7C,EAAsCp7C,EAAUc,eAAeQ,gB,kCC1C9E,oEAGO,MAAMopC,EAITnmC,YAAYylC,EAAkCa,GAC1CjmC,KAAKolC,gBAAkBA,EACvBplC,KAAKimC,YAAcA,GAYpB,MAAMmB,EAKTznC,YAAY0O,EAA0B+3B,EAAyCgS,GAC3Ep4C,KAAKqO,YAAcA,EACnBrO,KAAKomC,mBAAqBA,EAC1BpmC,KAAKo4C,WAAaA,K,uQCxBnB,MAAMC,EAGT14C,YAAYjD,GAGL,KAAAmD,YAAc,IAAMrB,YAAc,oBAAqBwB,KAAKtD,aAC5D,KAAAoD,mBAAqB,IAAM,kBAC3B,KAAAC,cAAgB,IAAiB,UAJpCC,KAAKtD,YAAcA,GAOpB,MAAM47C,EAAmCl9C,IAC5C,MAAM,eAAEc,GAAmBd,EAG3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,0BAGpB,OAAO,IAAI68C,EAAuBn8C,EAAeQ,cAG9C0D,eAAem4C,EAAqBz9C,EAA+BuF,GACtE,OAAOu+B,YAAgB,CAAEp+B,cAAeH,IACnC6B,KAAK28B,GACKuT,YAAc,CAAE5xC,cAAeH,GAAOw+B,EAAgBC,mBACxD58B,KAAMmwC,GACIA,GAEV/sC,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAI8B,MAAM,iDACJ,IAAI3G,MAAM,oDAG3B8J,MAAMC,IAGH,MAFAlF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,0DACd,IAAInK,MAAM,4DAGbyE,+CAA2B,CACtCC,GAAI,yBACJC,OAAiDo4C,EACjDz9C,MAAOw9C,K,kCCpDX,sFAGM,SAAUE,EAAmBx9C,GAC/B,OAAO,IAAI0V,eAAqB,qBAAsB1V,EAAQ,UAOnDiF,+CAA2B,CACtCE,OAAyBwQ,mBACzB7V,MAN+BM,GACxBo9C,EAAmB,O,kCCR9B,2FAGM,SAAUC,EAAwBz9C,GACpC,OAAO,IAAI0V,eAAqB,0BAA2B1V,EAAQ,UAOxDiF,+CAA2B,CACtCE,OAAyBwQ,mBACzB7V,MANoCM,GAC7Bq9C,EAAwB,O,4GCF5B,MAAMC,EAAiB,GAE9BA,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,mCAEhBs4B,EAAe,yFAA2F,CAC9Fv4B,EAAG/f,SAAY,8EAIfggB,GAAI,oDAEhBs4B,EAAe,6DAA+D,CAClEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,sCAEhBs4B,EAAe,mFAAqF,CACxFv4B,EAAG/f,SAAY,+DAIfggB,GAAI,iDAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,yEAA2E,CAC9Ev4B,EAAG/f,SAAY,8EAIfggB,GAAI,4CAEhBs4B,EAAe,qEAAuE,CAC1Ev4B,EAAG/f,SAAY,8DAIfggB,GAAI,0CAEhBs4B,EAAe,2EAA6E,CAChFv4B,EAAG/f,SAAY,kCAIfggB,GAAI,6CAEhBs4B,EAAe,qEAAuE,CAC1Ev4B,EAAG/f,SAAY,kCAIfggB,GAAI,0CAEhBs4B,EAAe,iDAAmD,CACtDv4B,EAAG/f,SAAY,kCAIfggB,GAAI,gCAEhBs4B,EAAe,6DAA+D,CAClEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,sCAEhBs4B,EAAe,+FAAiG,CACpGv4B,EAAG/f,SAAY,uEAIfggB,GAAI,uDAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,mDAAqD,CACxDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,iCAEhBs4B,EAAe,2FAA6F,CAChGv4B,EAAG/f,SAAY,uEAIfggB,GAAI,qDAEhBs4B,EAAe,6FAA+F,CAClGv4B,EAAG/f,SAAY,sEAIfggB,GAAI,sDAEhBs4B,EAAe,+EAAiF,CACpFv4B,EAAG/f,SAAY,+DAIfggB,GAAI,+CAEhBs4B,EAAe,+FAAiG,CACpGv4B,EAAG/f,SAAY,+DAIfggB,GAAI,uDAEhBs4B,EAAe,6FAA+F,CAClGv4B,EAAG/f,SAAY,uEAIfggB,GAAI,sDAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,qCAEhBs4B,EAAe,iEAAmE,CACtEv4B,EAAG/f,SAAY,sEAIfggB,GAAI,wCAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,qEAAuE,CAC1Ev4B,EAAG/f,SAAY,8DAIfggB,GAAI,0CAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,qCAEhBs4B,EAAe,yEAA2E,CAC9Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,qEAAuE,CAC1Ev4B,EAAG/f,SAAY,8DAIfggB,GAAI,0CAEhBs4B,EAAe,+EAAiF,CACpFv4B,EAAG/f,SAAY,8EAIfggB,GAAI,+CAEhBs4B,EAAe,yFAA2F,CAC9Fv4B,EAAG/f,SAAY,8EAIfggB,GAAI,oDAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,yDAA2D,CAC9Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,oCAEhBs4B,EAAe,+FAAiG,CACpGv4B,EAAG/f,SAAY,+DAIfggB,GAAI,uDAEhBs4B,EAAe,6EAA+E,CAClFv4B,EAAG/f,SAAY,sEAIfggB,GAAI,8CAEhBs4B,EAAe,iEAAmE,CACtEv4B,EAAG/f,SAAY,wDAIfggB,GAAI,wCAEhBs4B,EAAe,qEAAuE,CAC1Ev4B,EAAG/f,SAAY,kCAIfggB,GAAI,0CAEhBs4B,EAAe,mDAAqD,CACxDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,wDAA0D,CAC7Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,qCAEhBs4B,EAAe,iDAAmD,CACtDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,6DAA+D,CAClEv4B,EAAG/f,SAAY,kCAIfggB,GAAI,0CAEhBs4B,EAAe,iDAAmD,CACtDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,kDAAoD,CACvDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,+DAAiE,CACpEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,uEAAyE,CAC5Ev4B,EAAG/f,SAAY,8EAIfggB,GAAI,oDAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,oCAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,wDAIfggB,GAAI,wCAEhBs4B,EAAe,yEAA2E,CAC9Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,kDAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,0DAA4D,CAC/Dv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,qDAAuD,CAC1Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,iEAAmE,CACtEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,4DAA8D,CACjEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,qDAAuD,CAC1Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,mEAAqE,CACxEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,0DAA4D,CAC/Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,6EAA+E,CAClFv4B,EAAG/f,SAAY,+DAIfggB,GAAI,kDAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,6DAA+D,CAClEv4B,EAAG/f,SAAY,wDAIfggB,GAAI,kCAEhBs4B,EAAe,8DAAgE,CACnEv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,yDAA2D,CAC9Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,qEAAuE,CAC1Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,gEAAkE,CACrEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,yDAA2D,CAC9Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,0DAA4D,CAC/Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,uEAAyE,CAC5Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,8DAAgE,CACnEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,0EAA4E,CAC/Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,kDAEhBs4B,EAAe,wDAA0D,CAC7Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,kEAAoE,CACvEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,6DAA+D,CAClEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,8EAAgF,CACnFv4B,EAAG/f,SAAY,sEAIfggB,GAAI,sDAEhBs4B,EAAe,oEAAsE,CACzEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,4EAA8E,CACjFv4B,EAAG/f,SAAY,8EAIfggB,GAAI,oDAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,oDAAsD,CACzDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,yDAA2D,CAC9Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,qCAEhBs4B,EAAe,kDAAoD,CACvDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,yDAA2D,CAC9Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,yDAA2D,CAC9Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,qCAEhBs4B,EAAe,8DAAgE,CACnEv4B,EAAG/f,SAAY,kCAIfggB,GAAI,0CAEhBs4B,EAAe,kDAAoD,CACvDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,mDAAqD,CACxDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,0EAA4E,CAC/Ev4B,EAAG/f,SAAY,sEAIfggB,GAAI,sDAEhBs4B,EAAe,yDAA2D,CAC9Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,qCAEhBs4B,EAAe,gEAAkE,CACrEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,8DAAgE,CACnEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,0CAEhBs4B,EAAe,wEAA0E,CAC7Ev4B,EAAG/f,SAAY,8EAIfggB,GAAI,oDAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,wDAA0D,CAC7Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,oCAEhBs4B,EAAe,iDAAmD,CACtDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBs4B,EAAe,kEAAoE,CACvEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,iDAEhBs4B,EAAe,iDAAmD,CACtDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,qCAEhBs4B,EAAe,+CAAiD,CACpDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,+CAAiD,CACpDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,gDAAkD,CACrDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,oDAAsD,CACzDv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,kDAAoD,CACvDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,iCAEhBs4B,EAAe,qEAAuE,CAC1Ev4B,EAAG/f,SAAY,8EAIfggB,GAAI,oDAEhBs4B,EAAe,oDAAsD,CACzDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,uEAAyE,CAC5Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,kDAEhBs4B,EAAe,qDAAuD,CAC1Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,wDAA0D,CAC7Dv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,mDAAqD,CACxDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,+DAAiE,CACpEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,0DAA4D,CAC/Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,mDAAqD,CACxDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,oDAAsD,CACzDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,iEAAmE,CACtEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,wDAA0D,CAC7Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,qEAAuE,CAC1Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,kDAEhBs4B,EAAe,mDAAqD,CACxDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,iDAAmD,CACtDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,6DAA+D,CAClEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,wDAA0D,CAC7Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,iDAAmD,CACtDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,kDAAoD,CACvDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,+DAAiE,CACpEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,sCAEhBs4B,EAAe,iDAAmD,CACtDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,qCAEhBs4B,EAAe,oDAAsD,CACzDv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,+CAAiD,CACpDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,kCAIfggB,GAAI,0CAEhBs4B,EAAe,+CAAiD,CACpDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,gDAAkD,CACrDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,wEAA0E,CAC7Ev4B,EAAG/f,SAAY,uEAIfggB,GAAI,uDAEhBs4B,EAAe,oDAAsD,CACzDv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,sEAAwE,CAC3Ev4B,EAAG/f,SAAY,uEAIfggB,GAAI,qDAEhBs4B,EAAe,uEAAyE,CAC5Ev4B,EAAG/f,SAAY,uEAIfggB,GAAI,sDAEhBs4B,EAAe,6DAA+D,CAClEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,qEAAuE,CAC1Ev4B,EAAG/f,SAAY,8EAIfggB,GAAI,oDAEhBs4B,EAAe,oDAAsD,CACzDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,qDAAuD,CAC1Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,oCAEhBs4B,EAAe,2EAA6E,CAChFv4B,EAAG/f,SAAY,+DAIfggB,GAAI,kDAEhBs4B,EAAe,yDAA2D,CAC9Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,4DAA8D,CACjEv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,mEAAqE,CACxEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,8DAAgE,CACnEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,wDAA0D,CAC7Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,qEAAuE,CAC1Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,4DAA8D,CACjEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,oDAAsD,CACzDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,kEAAoE,CACvEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,gEAAkE,CACrEv4B,EAAG/f,SAAY,kCAIfggB,GAAI,0CAEhBs4B,EAAe,iFAAmF,CACtFv4B,EAAG/f,SAAY,+DAIfggB,GAAI,kDAEhBs4B,EAAe,+DAAiE,CACpEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,kEAAoE,CACvEv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,6DAA+D,CAClEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,yEAA2E,CAC9Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,oEAAsE,CACzEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,6DAA+D,CAClEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,8DAAgE,CACnEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,kEAAoE,CACvEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,0EAA4E,CAC/Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,kDAEhBs4B,EAAe,wDAA0D,CAC7Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,kEAAoE,CACvEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,6DAA+D,CAClEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,oEAAsE,CACzEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,wEAA0E,CAC7Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,kDAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,yDAA2D,CAC9Dv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,oDAAsD,CACzDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,gEAAkE,CACrEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,oDAAsD,CACzDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,qDAAuD,CAC1Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,yDAA2D,CAC9Dv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,kEAAoE,CACvEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,0EAA4E,CAC/Ev4B,EAAG/f,SAAY,8EAIfggB,GAAI,oDAEhBs4B,EAAe,yDAA2D,CAC9Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,gDAAkD,CACrDv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,8DAAgE,CACnEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,4DAA8D,CACjEv4B,EAAG/f,SAAY,kCAIfggB,GAAI,0CAEhBs4B,EAAe,sFAAwF,CAC3Fv4B,EAAG/f,SAAY,+DAIfggB,GAAI,kDAEhBs4B,EAAe,oEAAsE,CACzEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,uEAAyE,CAC5Ev4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,kEAAoE,CACvEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,8EAAgF,CACnFv4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,yEAA2E,CAC9Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,kEAAoE,CACvEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,mEAAqE,CACxEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,gFAAkF,CACrFv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,uEAAyE,CAC5Ev4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,yEAA2E,CAC9Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,kDAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,0DAA4D,CAC/Dv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,qDAAuD,CAC1Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,iEAAmE,CACtEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,4DAA8D,CACjEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,qDAAuD,CAC1Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,sDAAwD,CAC3Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,mEAAqE,CACxEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,0DAA4D,CAC/Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,mEAAqE,CACxEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,sCAEhBs4B,EAAe,6DAA+D,CAClEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,gCAEhBs4B,EAAe,kEAAoE,CACvEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,qCAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,uEAAyE,CAC5Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,uEAAyE,CAC5Ev4B,EAAG/f,SAAY,kCAIfggB,GAAI,0CAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,4DAA8D,CACjEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,gEAAkE,CACrEv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,yEAA2E,CAC9Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,gEAAkE,CACrEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,iEAAmE,CACtEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,oCAEhBs4B,EAAe,2EAA6E,CAChFv4B,EAAG/f,SAAY,+DAIfggB,GAAI,kDAEhBs4B,EAAe,yDAA2D,CAC9Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,gCAEhBs4B,EAAe,8DAAgE,CACnEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,qCAEhBs4B,EAAe,4DAA8D,CACjEv4B,EAAG/f,SAAY,sEAIfggB,GAAI,mCAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,mEAAqE,CACxEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,0CAEhBs4B,EAAe,8DAAgE,CACnEv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qCAEhBs4B,EAAe,uDAAyD,CAC5Dv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8BAEhBs4B,EAAe,wDAA0D,CAC7Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+BAEhBs4B,EAAe,qEAAuE,CAC1Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,4CAEhBs4B,EAAe,4DAA8D,CACjEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,mCAEhBs4B,EAAe,8EAAgF,CACnFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,uDAEhBs4B,EAAe,oEAAsE,CACzEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,kDAEhBs4B,EAAe,iFAAmF,CACtFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,6DAEhBs4B,EAAe,mGAAqG,CACxGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,sEAEhBs4B,EAAe,qHAAuH,CAC1Hv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+EAEhBs4B,EAAe,2GAA6G,CAChHv4B,EAAG/f,SAAY,+DAIfggB,GAAI,0EAEhBs4B,EAAe,mGAAqG,CACxGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,sEAEhBs4B,EAAe,mGAAqG,CACxGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,sEAEhBs4B,EAAe,mGAAqG,CACxGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,sEAEhBs4B,EAAe,yFAA2F,CAC9Fv4B,EAAG/f,SAAY,8DAIfggB,GAAI,iEAEhBs4B,EAAe,mHAAqH,CACxHv4B,EAAG/f,SAAY,sEAIfggB,GAAI,8EAEhBs4B,EAAe,mGAAqG,CACxGv4B,EAAG/f,SAAY,+DAIfggB,GAAI,sEAEhBs4B,EAAe,yFAA2F,CAC9Fv4B,EAAG/f,SAAY,8DAIfggB,GAAI,iEAEhBs4B,EAAe,mGAAqG,CACxGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,sEAEhBs4B,EAAe,qGAAuG,CAC1Gv4B,EAAG/f,SAAY,8DAIfggB,GAAI,uEAEhBs4B,EAAe,yFAA2F,CAC9Fv4B,EAAG/f,SAAY,+DAIfggB,GAAI,iEAEhBs4B,EAAe,qFAAuF,CAC1Fv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+DAEhBs4B,EAAe,yGAA2G,CAC9Gv4B,EAAG/f,SAAY,8DAIfggB,GAAI,yEAEhBs4B,EAAe,iHAAmH,CACtHv4B,EAAG/f,SAAY,8DAIfggB,GAAI,6EAEhBs4B,EAAe,uFAAyF,CAC5Fv4B,EAAG/f,SAAY,sEAIfggB,GAAI,gEAEhBs4B,EAAe,yEAA2E,CAC9Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,yDAEhBs4B,EAAe,yEAA2E,CAC9Ev4B,EAAG/f,SAAY,8DAIfggB,GAAI,yDAEhBs4B,EAAe,oGAAsG,CACzGv4B,EAAG/f,SAAY,uEAIfggB,GAAI,iEAEhBs4B,EAAe,gGAAkG,CACrGv4B,EAAG/f,SAAY,uEAIfggB,GAAI,+DAEhBs4B,EAAe,gGAAkG,CACrGv4B,EAAG/f,SAAY,uEAIfggB,GAAI,+DAEhBs4B,EAAe,kGAAoG,CACvGv4B,EAAG/f,SAAY,uEAIfggB,GAAI,gEAEhBs4B,EAAe,uEAAyE,CAC5Ev4B,EAAG/f,SAAY,8DAIfggB,GAAI,oDAEhBs4B,EAAe,oGAAsG,CACzGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,2EAEhBs4B,EAAe,uHAAyH,CAC5Hv4B,EAAG/f,SAAY,+DAIfggB,GAAI,oFAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,4CAEhBs4B,EAAe,iEAAmE,CACtEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,gDAEhBs4B,EAAe,+DAAiE,CACpEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,6CAEhBs4B,EAAe,qDAAuD,CAC1Dv4B,EAAG/f,SAAY,8DAIfggB,GAAI,wCAEhBs4B,EAAe,mHAAqH,CACxHv4B,EAAG/f,SAAY,+DAIfggB,GAAI,yEAEhBs4B,EAAe,mGAAqG,CACxGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,iEAEhBs4B,EAAe,qFAAuF,CAC1Fv4B,EAAG/f,SAAY,8DAIfggB,GAAI,0DAEhBs4B,EAAe,6FAA+F,CAClGv4B,EAAG/f,SAAY,+DAIfggB,GAAI,8DAEhBs4B,EAAe,iFAAmF,CACtFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,wDAEhBs4B,EAAe,uGAAyG,CAC5Gv4B,EAAG/f,SAAY,+DAIfggB,GAAI,mEAEhBs4B,EAAe,+EAAiF,CACpFv4B,EAAG/f,SAAY,+DAIfggB,GAAI,uDAEhBs4B,EAAe,qGAAuG,CAC1Gv4B,EAAG/f,SAAY,+DAIfggB,GAAI,kEAEhBs4B,EAAe,2GAA6G,CAChHv4B,EAAG/f,SAAY,+DAIfggB,GAAI,qEAEhBs4B,EAAe,iEAAmE,CACtEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,gDAEhBs4B,EAAe,+FAAiG,CACpGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,+DAEhBs4B,EAAe,gFAAkF,CACrFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,0DAEhBs4B,EAAe,4FAA8F,CACjGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,kEAEhBs4B,EAAe,gFAAkF,CACrFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,yDAEhBs4B,EAAe,8EAAgF,CACnFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,uDAEhBs4B,EAAe,gFAAkF,CACrFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,yDAEhBs4B,EAAe,yFAA2F,CAC9Fv4B,EAAG/f,SAAY,8DAIfggB,GAAI,kEAEhBs4B,EAAe,uFAAyF,CAC5Fv4B,EAAG/f,SAAY,8DAIfggB,GAAI,gEAEhBs4B,EAAe,uFAAyF,CAC5Fv4B,EAAG/f,SAAY,sEAIfggB,GAAI,gEAEhBs4B,EAAe,2FAA6F,CAChGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,oEAEhBs4B,EAAe,sFAAwF,CAC3Fv4B,EAAG/f,SAAY,+DAIfggB,GAAI,+DAEhBs4B,EAAe,iGAAmG,CACtGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,0EAEhBs4B,EAAe,6EAA+E,CAClFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,qDAEhBs4B,EAAe,qEAAuE,CAC1Ev4B,EAAG/f,SAAY,8DAIfggB,GAAI,iDAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,4CAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,4CAEhBs4B,EAAe,0EAA4E,CAC/Ev4B,EAAG/f,SAAY,+DAIfggB,GAAI,oDAEhBs4B,EAAe,kDAAoD,CACvDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,sCAEhBs4B,EAAe,gFAAkF,CACrFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,0DAEhBs4B,EAAe,sFAAwF,CAC3Fv4B,EAAG/f,SAAY,8DAIfggB,GAAI,8DAEhBs4B,EAAe,+GAAiH,CACpHv4B,EAAG/f,SAAY,8DAIfggB,GAAI,2EAEhBs4B,EAAe,6FAA+F,CAClGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,kEAEhBs4B,EAAe,mFAAqF,CACxFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,6DAEhBs4B,EAAe,mFAAqF,CACxFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,6DAEhBs4B,EAAe,6FAA+F,CAClGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,iEAEhBs4B,EAAe,mFAAqF,CACxFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,4DAEhBs4B,EAAe,+FAAiG,CACpGv4B,EAAG/f,SAAY,8DAIfggB,GAAI,oEAEhBs4B,EAAe,wGAA0G,CAC7Gv4B,EAAG/f,SAAY,+DAIfggB,GAAI,0EAEhBs4B,EAAe,6EAA+E,CAClFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,wDAEhBs4B,EAAe,0FAA4F,CAC/Fv4B,EAAG/f,SAAY,8DAIfggB,GAAI,gEAEhBs4B,EAAe,gFAAkF,CACrFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,2DAEhBs4B,EAAe,gFAAkF,CACrFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,2DAEhBs4B,EAAe,8GAAgH,CACnHv4B,EAAG/f,SAAY,8DAIfggB,GAAI,8EAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,4CAEhBs4B,EAAe,0EAA4E,CAC/Ev4B,EAAG/f,SAAY,sEAIfggB,GAAI,sDAEhBs4B,EAAe,uFAAyF,CAC5Fv4B,EAAG/f,SAAY,8DAIfggB,GAAI,6DAEhBs4B,EAAe,6EAA+E,CAClFv4B,EAAG/f,SAAY,sEAIfggB,GAAI,wDAEhBs4B,EAAe,2DAA6D,CAChEv4B,EAAG/f,SAAY,kCAIfggB,GAAI,4CAEhBs4B,EAAe,mFAAqF,CACxFv4B,EAAG/f,SAAY,+DAIfggB,GAAI,4DAEhBs4B,EAAe,4DAA8D,CACjEv4B,EAAG/f,SAAY,8DAIfggB,GAAI,2CAEhBs4B,EAAe,kDAAoD,CACvDv4B,EAAG/f,SAAY,8DAIfggB,GAAI,sCAEhBs4B,EAAe,uEAAyE,CAC5Ev4B,EAAG/f,SAAY,iCAIfggB,GAAI,oDAEhBs4B,EAAe,6EAA+E,CAClFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,wDAEhBs4B,EAAe,6EAA+E,CAClFv4B,EAAG/f,SAAY,8DAIfggB,GAAI,uD,2FCzoEhB9d,+BAAqB,CACjBC,SAAU,wDACVC,eA3BoBpC,MAAOqC,EAAwCoR,EAAqBlR,KACxF,GAAImE,QAAUA,OAAOC,WAAaD,OAAOC,UAAUtB,UAAW,CAC1D,MAAMqO,EAAapT,MAAMC,QAAQkT,GAAQA,EAAK,GAAKA,EAC7C8kC,EAA+Bh2C,EAAczG,eAAe8G,cAAc21C,iBAChF,IAAIC,EAAkC,GAGtC,GAAID,EACA,IACIC,QAAwBzxC,YAAiCwxC,EAAkBh2C,GAC7E,MAAO4C,GACL5C,EAAc8C,UAAUF,MAAM,sEAAuEA,GAK7GuB,OAAOC,UAAUtB,UAAUqC,SAAS5E,iBAAe21C,aAAc,CAC7D3kC,OAAQJ,EAAWzM,GACnB8M,YAAaL,EAAWM,QAAUN,EAAWM,QAAQ5M,WAAa,GAClEK,SAAU+wC,EACVlpC,QAASoE,EAAWO,YAAcP,EAAWO,YAAY7M,WAAa,OAQ9EpE,cArDqBhD,MAAOkU,EAAuC3R,KACnE,IACI,MAAM4R,EAAc7T,MAAMC,QAAQ2T,GAA+BA,EAAO,GAA0BA,EAGlG,GAAIC,EAAYC,aAAkD,mBAA5BD,EAAYC,YAA4B,CAC1E,MAAMskC,EAAwBvkC,EAAYC,cAC1C,GAAIskC,GAAyBA,EAAsBpkC,UAG/C,YADA/R,EAAczG,eAAe8G,cAAc21C,iBAAmBG,EAAsBpkC,WAI5F/R,EAAc8C,UAAUE,MAAM,wEAChC,MAAO3J,GACL2G,EAAc8C,UAAUE,MAAM,0CAA2C3J,Q,iMCpB3E,MAAO+8C,EAETp5C,YAAY7E,GAIL,KAAAwI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,yBACpB,KAAAC,mBAAqB,IAAM,yBAC3B,KAAAC,cAAgB,IAA0B,cAP7CC,KAAKlF,MAAQA,GAoBd,MAAMk+C,EAA8B,CAAC/5C,EAAqCnE,KAC7E,MAAMqL,EAAYlH,EAAK/C,eAAewF,KAAKoE,uBAAyBhL,EAAMiD,WAC1E,OAAO,IAAIg7C,EACPntB,YAAsBqtB,OAAO9yC,MAWtB5C,uCAAoC,CAC/CpD,OALJC,eAAsCtF,EAA8BuF,GAChE,OAAOvF,EAAMA,MAAM0I,QAAQnD,IAK3BvF,MAAOk+C,K,gTC3CL,MAAOrhB,EAOTh4B,YAAYvD,EAAmBuC,EAAmB0F,EAAiCtG,EAAqBm7C,GAQjG,KAAAr5C,YAAc,IAAM,2BAA2BG,KAAK5D,aAAa4D,KAAKk5C,gBACtE,KAAAp5C,mBAAqB,IAAM,QAC3B,KAAAC,cAAgB,IAAiB,OATpCC,KAAK5D,UAAYA,EACjB4D,KAAKrB,UAAYA,EACjBqB,KAAKqE,gBAAkBA,EACvBrE,KAAKjC,WAAaA,GAAc,GAChCiC,KAAKk5C,cAAgBA,GAYtB,MAAMthB,EAA4Cx8B,IACrD,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIu7B,GACNv7B,GACAhB,EAAUc,eAAeQ,YAAYiC,eACtCU,EACAjE,EAAUc,eAAewF,KAAKoE,sBAC9B1K,EAAUmB,QAAUnB,EAAUmB,OAAO28C,eAEzC,MAAM,IAAI19C,MAAM,gGASjB4E,eAAey3B,EAClB/8B,EACAuF,GAEA,OAAOuC,QAAQC,UAEVX,KAAK,KACF,MAAM8C,EAA2ClK,EAAMuJ,gBAEvD,IAAKW,EAAe,CAChB,MAAMC,EAAuB,IAAIvF,uBAAqB5E,EAAMsB,UAAWtB,EAAM6D,WAE7E,OAAOuG,6BAAmBD,EAAsB5E,GAGpD,OAAO2E,IAEV9C,KAA0B9B,UACvB,MAAMo4B,EAAkC,CAAEjxB,WAAYlH,EAAInE,eAAeQ,YAAYiC,UAAWvB,WAAYiD,EAAInE,eAAeQ,YAAYS,WACrI6H,EAAsEG,EAE5E,GAAIH,EAAe,CACf,IAkBIm0C,EAlBAC,EAAiD,GA8BrD,OA7BI/4C,EAAInE,eAAewF,MACnBrB,EAAInE,eAAewF,KAAKC,iBACxBtB,EAAInE,eAAewF,KAAKoE,6BAElBC,YAAU,CAAEvF,cAAeH,GAAOA,EAAInE,eAAewF,KAAKoE,uBAAuB5D,KAAK5B,IACrFA,GACIA,EAAS43B,sBAAwB53B,EAAS43B,qBAAqB92B,OAAS,IACvEg4C,EAAuB94C,EAAS43B,qBAAqB54B,IAAI84B,IAC9C,CACHC,cAAeD,EAAIE,0BAUvC6gB,EADDr+C,EAAMo+C,cACU,CACX,CACI7gB,cAAev9B,EAAMo+C,gBAGvBE,EAAqBh4C,OAAS,EACrBg4C,EAEA,GAEZ3gB,YACL,CAAEj4B,cAAeH,EAAKkB,oBAAqB,IAC3Ci3B,EACA,CAACxzB,EAAcvH,UACf,IAAI0qB,KACJrtB,EAAMiD,WACNo7C,GACA,GACAj3C,KAAK5B,IACL,GAAIA,GAAYA,EAASc,OAAS,EAChC,OAAOd,EAAS,GAElB,MAAM,IAAI9E,MACR,4FAKR,OAAO,OAEV8J,MAAOC,IAEJ,MADAlF,EAAI8B,MAAMoD,EAAMC,SACV,IAAIhK,MAAM,8DAIbyE,+CAA2B,CACtCE,OAAsC03B,EACtC/8B,MAAO88B,K,sRCtHJ,MAAMyhB,EAIT15C,YAAYjD,EAAmCoJ,GAKxC,KAAAjG,YAAc,IAAMrB,wBAAc,mBAAmBwB,KAAK8F,sBAAyB9F,KAAKtD,aACxF,KAAAoD,mBAAqB,IAAM,qBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAK8F,sBAAwBA,EAC7B9F,KAAKtD,YAAcA,GAapB,MAAM48C,EAAiCl+C,IAC1C,MAAM,eAAEc,GAAmBd,EAC3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,2EAGpB,OAAO,IAAI69C,EAAwBn9C,EAAeQ,cAQ/C0D,eAAem5C,EAAyBz+C,EAAgCuF,GAC3E,MAAM03B,EAAgB,IAAInyB,mBAAiB9K,EAAM4B,YAAa5B,EAAMgL,uBAC9DkyB,QAAiBC,kBAAYF,EAAe13B,GAMlD,OAJK23B,GACD33B,EAAIoF,UAAUF,MAAM,2BAA4B,IAAI/J,MAAM,6BAGvDg+C,YACH,CACIh5C,cAAeH,EACfkB,oBAAqB,IAEzBy2B,EAASO,cACTP,EAASyhB,gBAQFx5C,+CAA6C,CACxDC,GAAI,iEACJC,OAAmCo5C,EACnCz+C,MAAqDw+C,K,qMC5DnD,MAAOI,EAET/5C,YAAY7E,GAIL,KAAAwI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,6BACpB,KAAAC,mBAAqB,IAAM,6BAC3B,KAAAC,cAAgB,IAA0B,cAP7CC,KAAKlF,MAAQA,GAgBd,MAAMk+C,EAA8B,CAAC/5C,EAAqCnE,KAC7E,MAAMqL,EAAYlH,EAAK/C,eAAewF,KAAKoE,uBAAyBhL,EAAMiD,WAC1E,OAAO,IAAI27C,EACP/tB,YAAuBstB,OAAO9yC,MAOvB5C,uCAAoC,CAC/CpD,OALJC,eAAsCtF,EAAkCuF,GACpE,OAAOvF,EAAMA,MAAM0I,QAAQnD,IAK3BvF,MAAOk+C,K,kCC5CX,6FAIM,SAAUW,EAA0B3+C,GACtC,OAAO,IAAI0V,eAAmC,sBAAuB1V,EAAQ,wBAOlEiF,+CAA2B,CACtCE,OAAyBwQ,mBACzB7V,MANuCM,GAChCu+C,EAAgD,O,6RCsBpD,MAAMnD,EAGT72C,YAAYjD,GAIL,KAAAmD,YAAc,IAAMrB,wBAAc,kCAAmCwB,KAAKtD,aAC1E,KAAAoD,mBAAqB,IAAM,kCAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAKtD,YAAcA,GAQ3B,MAOMg6C,EAAkB,SAAC/1B,GAAkJ,IAA9Hg2B,EAA8H,wDAAhGC,EAAgG,uCAA/BC,EAA+B,uCAG/J,IAAD,EAFP,OAAIF,EAGMh2B,EAASm2B,gBAAiBF,SAA1B,UAA0BA,EAA6BG,+BAAvD,aAA0B,EAAsD/1C,KAAKg2C,GAAgBA,IAAiBr2B,EAASm2B,eAF9Hn2B,EAASm2B,eAAiBD,GAUlCz2C,eAAe62C,EAClBn8C,EACAuF,GAAmB,MAGnB,IAAKvF,EACD,MAAM,IAAIU,MAAM,2EAGpB,MAAM07C,EAA4B,GAC5BC,EAAa,GACnB,IAAIC,EAAwD,GAE5D,IAAIR,EAEJ,MACM/iC,SADkB0Y,YAAalsB,IACdwT,KACjBzJ,QAA6BkX,YAA6B,CAAE9gB,cAAeH,IAC3EwH,QAAiBm7B,sCAA4B,IAAIC,0BAA2B5iC,GAQlF,MAAMiE,QAHNlE,eAA+BoE,GAC3B,OAAOC,gCAAsB,IAAIC,oBAAqBF,GAE/BD,CAAgBlE,GACrCk3C,EAAoCjzC,SAAH,UAAGA,EAActD,KAAK6D,GAfvB,oEAe+BA,EAAKC,aAAnC,aAAG,EAAyEC,UAC9GwyC,IACDX,QAAoCj8B,YAA2C,CAAEna,cAAeH,KAEpG,MAAMm3C,EAAyBptC,EAAqBotC,uBAC9CC,EAAwBrtC,EAAqBqtC,sBAEnD,IAAK5jC,IAASzJ,IAAyBvC,GAAgC,IAApBA,EAASzG,OAExD,OADAf,EAAI8B,MAAM,2GAC6B,GAG3C,GAAI0R,GAAQA,EAAKxM,IAAMwM,EAAK6J,WAAa7J,EAAK6J,UAAUtc,OAAS,GAAKgJ,EAClE,IAAK,MAAMuW,KAAY9M,EAAK6J,UACpBiD,EAASm2B,cAA0C,KAA1Bn2B,EAASm2B,cAAuBJ,EAAgB/1B,EAAU42B,EAAmCX,EAA6BY,GACnJL,EAAWzrC,KAAKiV,GACTA,EAASm2B,eAAiBW,GACjCP,EAAcxrC,KAAKiV,GAK/B,GAAIu2B,GAAiBA,EAAc91C,OAAS,EAAG,CAC3C,IAAI4O,EAAaknC,EAAc53C,IAAIgR,GAAKA,EAAE9S,WAC1CwS,EAAak6B,kBAAgBwN,OAAO1nC,GAEpC,MAAM2nC,QAAsChkB,YACxC,CAAEnzB,cAAeH,EAAKoe,YAAa,OACnC,CAAEX,WAAY9N,EAAY6jB,sBAAsB,IAGhD8jB,GACAA,EAA8BzjB,yCAC9ByjB,EAA8BzjB,wCAAwC9yB,OAAS,IAE/Eg2C,EAAwBpjB,yCACpB3zB,EACAs3C,aAFkD,EAElDA,EAA+BzjB,0CAK3C,GAAIijB,GAAcA,EAAW/1C,OAAS,EAClC,IAAK,MAAMw2C,KAAaT,EAAY,CAChC,MAAMU,EAAqC,CACvCr6C,UAAWo6C,EAAUp6C,UACrBi4B,iBAAkBmiB,EAAUE,aAG5Bz3C,EAAInE,eAAe6F,SAAW1B,EAAInE,eAAe6F,QAAQi2C,2BACzDH,EAAiBE,WAAa13C,EAAInE,eAAe6F,QAAQi2C,0BAE7D,MAAMC,QAAiCC,YACnC,CAAE13C,cAAeH,EAAKoe,YAAa,MAAOld,oBAAqB,IAC/D,CAACs2C,IAGL,GAAII,GACAA,EAAyB/jB,yCACzB+jB,EAAyB/jB,wCAAwC9yB,OAAS,EAAG,CAC7E,MAAM+2C,EAA0BnkB,yCAC5B3zB,EACA43C,aAF0D,EAE1DA,EAA0B/jB,yCAE9B,GAAIikB,GAA2BA,EAAwB/2C,OACnD,IAAK,MAAMyD,KAAQszC,EACff,EAAsB1rC,KAAK7G,IAO/C,OAAIuyC,GAAyBA,EAAsBh2C,OAAS,EACjDg2C,GAGX/2C,EAAI8B,MAAM,gFAC6B,IAG5BlC,+CAA2B,CACtCC,GAAI,yEACJC,OAAiD82C,EACjDn8C,MAlIiBM,GACV,IAAIo7C,EAAsCp7C,EAAUc,eAAeQ,gB,0JChCvE,MAAMmO,EAITlL,YAAY+K,EAAyBhO,GAK9B,KAAAmD,YAAc,IAAMrB,wBAAc,qBAAqBwB,KAAK0K,gBAAmB1K,KAAKtD,aACpF,KAAAoD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAK0K,gBAAkBA,EACvB1K,KAAKtD,YAAcA,GAQpB0D,eAAe0K,EAAuBhQ,EAA+BuF,GACxE,OAAOu5C,YAAuB,CAAEp5C,cAAeH,EAAKkB,oBAAqB,IAAMzG,EAAM4P,iBAG1EzK,qCAA2B,CACtCE,OAAsC2K,K,4MClBnC,MAAM+uC,EAGTl6C,YAAYjD,GAIL,KAAAmD,YAAc,IAAMrB,wBAAc,iBAAkBwB,KAAKtD,aACzD,KAAAoD,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKtD,YAAcA,GAepB0D,eAAe05C,EAAyBh/C,EAAgCuF,GAC3E,OAAO05C,YAAwB,CAAEv5C,cAAeH,EAAKkB,oBAAqB,KAG/DtB,+CAA2B,CACtCC,GAAI,0DACJC,OAAmC25C,EACnCh/C,MAXiBM,GACV,IAAIy+C,EAAwBz+C,EAAUc,eAAeQ,gB,kNCdzD,MAAMoN,EAITnK,YAAYjB,EAAgBhC,GAKrB,KAAAmD,YAAc,IAAMrB,wBAAc,oBAAoBwB,KAAKtB,OAAUsB,KAAKtD,aAC1E,KAAAoD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKtB,OAASA,EACdsB,KAAKtD,YAAcA,GAmBpB0D,eAAe2J,EAAsBjP,EAA6BuF,GACrE,MAAM2J,EAAe,IAAIC,yBAAuBnP,EAAM4D,OAAQ5D,EAAM4B,aAC9DwN,QAA2BC,kCAAwBH,EAAc3J,GAEjE+J,EAAuB/J,EAAInE,eAAe6F,QAE1CsI,EAAgBD,GAAwBA,EAAqBE,6BAA+B,KAC5FC,EAAuBL,EAAmBlJ,KAAKwJ,IAAkBA,EAAcC,SAAW,MAAQJ,GAClGK,EAAmBH,GAAwBA,EAAqBI,iBAAoB,MAEpFC,EAAa,IAAIC,IAAuBH,EAAiB5P,EAAM4B,aACrE,OAAOoO,YAAuBF,EAAYvK,GAG/BJ,+CAA2B,CACtCC,GAAI,uDACJC,OAAsC4J,EACtCjP,MAzBiBM,IACjB,MAAM,OAAEsD,EAAF,YAAUhC,GAAgBtB,EAAUc,eAC1C,IAAMd,EAAUc,iBAAkBwC,EAC9B,MAAM,IAAIlD,MAAM,oEAEpB,OAAO,IAAIsO,EAAqBpL,EAAQhC,O,6aC3BrC,MAAM0xC,EAITzuC,YAAYvD,EAA4BuC,GAKjC,KAAAkB,YAAc,IAAM,0CACpB,KAAAC,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAiB,OANpCC,KAAK5D,UAAiC,iBAAdA,GAA0BA,EAAYA,EAC9D4D,KAAKrB,UAAYA,GAYlB,MAAM0vC,EACTjzC,IAEA,MAAMgB,EAAYH,8CAAoCb,GAEtD,GAAIgB,EACA,OAAO,IAAIgyC,GAA8ChyC,GAAYhB,EAAUc,eAAeQ,YAAYiC,WAE1G,MAAM,IAAInD,MAAM,gHAOjB4E,eAAekuC,EAClBxzC,EACAuF,GAEA,MAAM4E,EAAuB,IAAIvF,uBAAqB5E,EAAMsB,UAAWtB,EAAM6D,WAG7E,OAAOuG,6BAAmBD,EAAsB5E,GAC3C6B,KAAKiD,IAEF,GAAIA,GAJa,IAIIA,EAAc60C,eAAoE,IAA9B70C,EAAc80C,iBACnF,OAAOtmB,YAA8B,CAAEnzB,cAAeH,GAAO,CAAEyd,WAAY,CAAC3Y,EAAc1H,UAAWo2B,sBAAsB,IAAO3xB,KAAK5B,IACnI,GAAGA,GAAYA,EAAS4zB,yCAA2C5zB,EAAS4zB,wCAAwC9yB,OAChH,OAAO4yB,YAA+B3zB,EAAKC,EAAS4zB,6CAQnE5uB,MAAOC,IAIJ,MAHAlF,EAAI8B,MAAMoD,EAAMC,SAChBnF,EAAIoF,UAAUC,UAAUH,GACxBlF,EAAIoF,UAAUE,MAAM,4DACd,IAAInK,MAAM,8DAOrB,SAAS0+C,EAA2CvL,GACvD,MAAMwL,EAA+C,GACrD,GAAGxL,GAA8BA,EAA2BvtC,OAAS,EACjE,IAAI,MAAMrE,KAAW4xC,OACatvC,IAA3BtC,EAAQqyC,qBAAsD/vC,IAAtBtC,EAAQS,WAC/C28C,EAAiBzuC,KAAK,CAAClO,UAAWT,EAAQS,UAAWm4B,kBAAmB54B,EAAQqyC,iBAI5F,OAAO+K,EASIl6C,+CAA2B,CACtCC,GAAI,4FACJC,OAAwDmuC,EACxDxzC,MAAOuzC,K,gRCpFL,MAAO+L,EAETz6C,YAAY7E,GAGL,KAAAwI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,iCACpB,KAAAC,mBAAqB,IAAM,iCAC3B,KAAAC,cAAgB,IAA0B,OAN7CC,KAAKlF,MAAQA,GAgCd,MAAMu/C,EAAsC,CAC/Cp7C,EAD+C,KAGhB,IAD/B,KAAE6qB,EAAF,YAAQwwB,EAAR,SAAqBjwB,GACU,EAC/B,OAAO,IAAI+vB,EACPvwB,YACIC,EACAwwB,EACAjwB,KAKLjqB,eAAem6C,EAA+Bz/C,EAAsCuF,GACvF,OAAOvF,EAAMA,MAAM0I,QAAQnD,GAiBhBkD,uCAAoC,CAC/CpD,OAAyDo6C,EACzDz/C,MAAOu/C,K,gQCnEL,MAAOG,EAET76C,YAAY7E,GAIL,KAAAwI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,0BACpB,KAAAC,mBAAqB,IAAM,0BAC3B,KAAAC,cAAgB,IAA0B,cAP7CC,KAAKlF,MAAQA,GAiBd,MAAM2/C,EAA+B,CACxCx7C,EADwC,KAGhB,IADxB,aAAE6pB,EAAF,WAAgBR,GACQ,EACxB,MAAMniB,EAAYlH,EAAK/C,eAAewF,KAAKoE,sBAC3C,OAAO,IAAI00C,EACP3xB,YACI1iB,EACAmiB,EACAQ,KAKL1oB,eAAes6C,EAClB5/C,EACAuF,GAEA,OAAOvF,EAAMA,MAAM0I,QAAQnD,GAGhBkD,uCAAoC,CAC/CpD,OAAmDu6C,EACnD5/C,MAAO2/C,K,oHChDJ,MAAMxpC,EAITtR,YAAY6E,EAA0B0M,EAA4BvV,GAM3D,KAAAkE,YAAc,IAAM,GAAGG,KAAKrB,iBAAiBqB,KAAKrE,UAAY,MAC9D,KAAAmE,mBAAqB,IAAOE,KAAKmR,mBAAqB,oBAAsB,WAC5E,KAAApR,cAAgB,IAAiB,cAPpCC,KAAKmR,mBAAqBD,EAC1BlR,KAAKrE,SAAWA,GAAY,IAC5BqE,KAAKrB,UAAY6F,GAAWA,EAAQ9H,aAAe8H,EAAQ9H,YAAYiC,UAAY/C,OAAO4I,EAAQ9H,YAAYiC,WAAa,GAuBpHsB,yCAA2B,CACtCC,GAAI,2DACJC,OANGC,eAAiCtF,EAAwBuF,GAC5D,OAAsCs6C,YAAmB,CAAEn6C,cAAeH,GAAOvF,EAAM6D,YAMvF7D,MAfkCM,IAClC,MAAM4X,EAAW5X,EAAUmB,QAAUnB,EAAUmB,OAAO0W,eAAiBC,SAAS9X,EAAUmB,OAAO0W,cAAe,IAChH,OAAO,IAAIhC,EAAgB7V,EAAUc,gBAAgB,EAAO8W,O,4PCf1D,MAAO4nC,EAETj7C,YAAY7E,GAIL,KAAAwI,kBAAoB,KAAM,EAE1B,KAAAzD,YAAc,IAAM,yBACpB,KAAAC,mBAAqB,IAAM,yBAC3B,KAAAC,cAAgB,IAA0B,cAP7CC,KAAKlF,MAAQA,GAoBd,MAAM+/C,EAA+B,CAAC57C,EAAqCnE,KAC9E,OAAQA,EAAMggD,UACV,IAAK,SACD,OAAO,IAAIF,EACP9vB,YAAwBhwB,EAAMiwB,eAAgBjwB,EAAMiD,aAE5D,IAAK,QACD,OAAO,IAAI68C,EACP3vB,YAAuBnwB,EAAMiwB,eAAgBjwB,EAAMiD,aAE3D,IAAK,SAIL,QAEI,OAAO,IAAI68C,EACP1vB,YAAwBpwB,EAAMiwB,eAAgBjwB,EAAMiD,eAK7DqC,eAAe26C,EAA8BjgD,EAA0BuF,GAC1E,OAAOvF,EAAMA,MAAM0I,QAAQnD,GAGhBkD,uCAAoC,CAC/CpD,OAAkD46C,EAClDjgD,MAAO+/C,K,kCChEX,0FAIO,SAASG,EAAuBhgD,GACnC,OAAO,IAAI0V,eAA0B,cAAe1V,EAAQ,eAOjDiF,+CAA2B,CACtCE,OAA8BwQ,mBAC9B7V,MANoCM,GAC7B4/C,EAAuB,CAAEhtB,WAAY,Q,0MCIzC,MAAM/jB,EAITtK,YAAYjB,EAAgBhC,GAKrB,KAAAmD,YAAc,IAAMrB,wBAAc,qBAAqBwB,KAAKtB,OAAUsB,KAAKtD,aAC3E,KAAAoD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKtB,OAASA,EACdsB,KAAKtD,YAAcA,GAmBpB0D,eAAe+J,EAAwBrP,EAA+BuF,GACzE,OAAO46C,YAAmC,CAAEz6C,cAAeH,EAAKkB,oBAAqB,IAAMzG,EAAM4D,QAGtFuB,+CAA2B,CACtCE,OAAsCgK,EACtCrP,MAdiBM,IACjB,IAAMA,EAAUc,iBAAkBd,EAAUc,eAAewC,OACvD,MAAM,IAAIlD,MAAM,oEAGpB,OAAO,IAAIyO,EAAuB7O,EAAUc,eAAewC,OAAQtD,EAAUc,eAAeQ,iB;;;;;ACRzF,MAAMw+C,EAITv7C,YAAYpD,EAAmCL,GAKxC,KAAA4D,mBAAqB,IAAc,cACnC,KAAAD,YAAc,IAAc,GAAGjB,qCAA2B,cAAeoB,KAAK9D,mBAAmB8D,KAAKzD,OAAOmQ,QAC7G,KAAA3M,cAAgB,IAAiB,UANpCC,KAAKzD,OAASA,GAAU,GACxByD,KAAK9D,eAAiBA,GAoBf+D,+CAA2B,CACtCC,GAAI,+DACJC,OAdWC,MAAOtF,EAAyB0J,KAC3C,MAAM,OAAEjI,GAAWzB,EACnB,MAAO,CACH4R,MAAOnQ,GAAUA,EAAOmQ,MACxBC,YAAapQ,GAAUA,EAAOoQ,YAC9BwuC,SAAU5+C,GAAUA,EAAO4+C,SAC3BlsB,gBAAiB1yB,GAAUA,EAAO6yB,cAAgB7yB,EAAO6yB,aAAarW,IACtEmW,aAAc1qB,EAAQtI,gBAAkBsI,EAAQtI,eAAegzB,aAC/DC,WAAY5yB,GAAUA,EAAO4yB,aAOjCr0B,MAAQmE,GACG,IAAIi8C,EAA4Cj8C,EAAK1C,OAAQ0C,EAAK/C,mB,yPCtC1E,MAAMk/C,EAGTz7C,YAAYjD,GAIL,KAAAmD,YAAc,IAAMrB,wBAAc,kCAAmCwB,KAAKtD,aAC1E,KAAAoD,mBAAqB,IAAM,kCAC3B,KAAAC,cAAgB,IAAiB,UALpCC,KAAKtD,YAAcA,GAepB0D,eAAei7C,EAClBvgD,EACAuF,GAGA,IAAKvF,EACD,MAAM,IAAIU,MAAM,2EAGpB,MAAMqM,QAAiBqD,iCAAuB,IAAID,sBAAuB5K,GAEzE,IAAKwH,EAED,OADAxH,EAAI8B,MAAM,4EAC6B,GAG3C,IAAIm5C,EAA0B,GAI9B,IAAK,MAAMv+C,KAAW8K,EACd9K,EAAQ41B,gBAAkB51B,EAAQ41B,eAAel1B,UAHhC,IAG4CV,EAAQ41B,eAAeqnB,eACpFsB,EAAc5vC,KAAK3O,EAAQ41B,eAAel1B,UAIlD,GAA6B,IAAzB69C,EAAcl6C,OAEd,OADAf,EAAI8B,MAAM,+DAC6B,GAG3Cm5C,EAAgBpR,kBAAgBwN,OAAO4D,GAEvC,MAAMlE,QAA8BzjB,YAChC,CAAEnzB,cAAeH,GACjB,CAAEyd,WAAYw9B,EAAeznB,sBAAsB,IAGvD,OAAIujB,GAAyBA,EAClBpjB,yCAA+B3zB,EAAK+2C,aAAN,EAAMA,EAAuBljB,0CAGtE7zB,EAAI8B,MAAM,gFAC6B,IAG5BlC,+CAA2B,CACtCC,GAAI,+FACJC,OAAiDk7C,EACjDvgD,MAxDiBM,GACV,IAAIggD,EAAsChgD,EAAUc,eAAeQ,gB,0MCnBxE,MAAOuN,EAITtK,YAAYjB,EAAgBhC,GAKrB,KAAAmD,YAAc,IAAMrB,wBAAc,qBAAqBwB,KAAKtB,OAAUsB,KAAKtD,aAC3E,KAAAoD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAKtB,OAASA,EACdsB,KAAKtD,YAAcA,GAmBpB0D,eAAe+J,EAAwBrP,EAA+BuF,GACzE,OAAO46C,YAAmC,CAAEz6C,cAAeH,EAAKkB,oBAAqB,IAAMzG,EAAM4D,QAGtFuB,+CAA2B,CACtCE,OAAsCgK,EACtCrP,MAdiBM,IACjB,IAAMA,EAAUc,iBAAkBd,EAAUc,eAAewC,OACvD,MAAM,IAAIlD,MAAM,oEAGpB,OAAO,IAAIyO,EAAuB7O,EAAUc,eAAewC,OAAQtD,EAAUc,eAAeQ,iB,kCCjChG,sGAAO,MAAMowC,EAAmB7tC,GACpBA,EAAK/C,eAAeQ,YAAY6+C,IAAIr7C,IAAM,GAGzC6sC,EAAoB9tC,GACtBA,EAAK/C,eAAeQ,YAAY6+C,IAAI7iC,KAAO,GAGzCy8B,EAAwBl2C,IAEjC,MAAMu8C,EAAoBv8C,EAAK/C,eAAeQ,YAAY6+C,IAAIE,SAAWx8C,EAAK/C,eAAeQ,YAAY6+C,IAAIE,SAAWx8C,EAAK/C,eAAeQ,YAAY6+C,IAAI7iC,KAAO,GACnK,OAAI8iC,EAASp6C,OAAS,GAA4C,MAAvCo6C,EAASE,OAAOF,EAASp6C,OAAO,GAChDo6C,EAASG,UAAU,EAAGH,EAASp6C,OAAO,GAE1Co6C,I,qQCRL,MAAOI,EAKTj8C,YAAYvD,EAAmBuC,EAAmBk9C,GAM3C,KAAAh8C,YAAc,IAAM,uBAAuBG,KAAK5D,UAChD,KAAA0D,mBAAqB,IAAM,UAC3B,KAAAC,cAAgB,IAAiB,cAPpCC,KAAK5D,UAAYA,EACjB4D,KAAKrB,UAAYA,EACjBqB,KAAK67C,cAAgBA,GAYtB,MAAMC,EAA4B1gD,IACrC,GAAIA,EAAUmB,QAAUnB,EAAUmB,OAAOH,UAAW,CAChD,MAAMA,EAAYhB,EAAUmB,OAAOH,UAMnC,OALIhB,EAAUc,eAAeC,QACzBf,EAAUc,eAAeC,MAAMC,UAAYA,EAAUoL,YAEzDpM,EAAUc,eAAeG,UAAUyC,SAAW1C,EAAUoL,WACxDpM,EAAUc,eAAeG,UAAU0C,SAAW,UACvC,IAAI68C,GACNx/C,GACAhB,EAAUc,eAAeQ,YAAYiC,eACtCU,GAER,MAAM,IAAI7D,MAAM,sFAMb4E,eAAe27C,EAClBjhD,EACAuF,GAEA,IACI,MAAMtD,QAQdqD,eAAuCtF,EAA2BuF,GAC9D,MAAM2E,EAA2ClK,EAAM+gD,cACvD,IAAK72C,EAAe,CAChB,MAAMC,EAAuB,IAAIvF,uBAAqB5E,EAAMsB,UAAWtB,EAAM6D,WAC7E,OAAOuG,6BAAmBD,EAAsB5E,GAEpD,OAAO2E,EAdmBg3C,CAAwBlhD,EAAOuF,GACrD,aAgBRD,eAA8CtF,EAA2BuF,EAAqB8E,GAC1F,GAAIA,EAAe,CACf,MAAM82C,EAAoC,IAAI31C,oCAAkCxL,EAAMsB,UAAWtB,EAAM6D,UAAWwG,GAClH,OAAOqB,gDAAsCy1C,EAAmC57C,GAEpF,OAAO,KArBU67C,CAA+BphD,EAAOuF,EAAKtD,GAC1D,MAAOf,GAEL,MADAqE,EAAI8B,MAAMnG,EAAEwJ,SACN,IAAIhK,MAAM,gDAqBTyE,+CAA2B,CACtCE,OAA0C47C,EAC1CjhD,MAAOghD,K,2KCnEJ17C,eAAekyC,EAA2B7oC,EAAuClI,EAA2ClB,EAAqB87C,GACpJ,OAAO5J,YAA8B,CAAE/xC,cAAeH,EAAKkB,oBAAqBA,GAAuBkI,GAAgBvH,KAAMswC,IACzH,IAAKA,EAED,OADAnyC,EAAI8B,MAAM,sDACyB,GAIvC,MAAMnH,GAAUw3C,GAAmB,IAAIlzC,IAAKmzC,GAA6DA,GAGnG2J,EAAqCD,GAA8BA,EAAcE,iBAavF,OAZID,GACAphD,EAAOsQ,QAAQgxC,IAEX,MAAMC,EAAQH,EAAUp7C,KAAKw7C,IAAW,aAAIA,EAAYC,aAAa1qC,iBAAzB,UAA2CuqC,EAAMI,eAAjD,aAA2C,EAAe3qC,iBAGlGwqC,IACAD,EAAMI,QAAUH,EAAMI,WAK7B3hD,EAAOoG,OAKLpG,GAJHqF,EAAI8B,MAAM,8EACyB,MCzBzC,MAAOuwC,UAAkC3kB,IAA/CpuB,c,oBACW,KAAAw8C,cAAsC,GAEtC,KAAAr8C,mBAAqB,IAAM,iBAC3B,KAAAC,cAAgB,IAEG,aAAlBC,KAAKjB,UACJiB,KAAKmtB,UAAYntB,KAAKmtB,SAAS/rB,OAAS,GACxCpB,KAAKuB,qBAAuBvB,KAAKuB,oBAAoBqP,SAAW5Q,KAAKuB,oBAAoBqP,QAAQC,SAAW7Q,KAAKuB,oBAAoBqP,QAAQC,QAAQzP,OAAS,EAExJ,UAEA,eAqDJnB,+CAA2B,CACtCC,GAAI,iFACJC,OArCJC,eAAsBtF,EAAiCuF,GACnD,GAAsB,aAAnBvF,EAAMiE,SAAyB,CAC9B,GAAGjE,EAAM4W,SACL,OAAO4gC,EACH,CACI52B,YAAY,CAAC5gB,EAAM4W,UACnB+J,QAAU,CACNlU,UAAWzM,EAAM4B,YAAYiC,UAC7BvB,UAAWtC,EAAM4B,YAAYS,YAGrCrC,EAAMyG,oBACNlB,EACAvF,EAAMqhD,eAEV,MAAM,IAAI3gD,MAAM,oFAGpB,GAAGV,EAAMkzB,WACL,OAAOskB,EACH,CACI3Y,gBAAiB7+B,EAAMkzB,WACvBvS,QAAU,CACNlU,UAAWzM,EAAM4B,YAAYiC,UAC7BvB,UAAWtC,EAAM4B,YAAYS,YAGrCrC,EAAMyG,oBACNlB,GAEJ,MAAM,IAAI7E,MAAM,wFAQxBV,MAhDiBmE,IACjB,MAAMnE,EAAmCyzB,YAA0BtvB,EAAMyzC,GAGzE,OADA53C,EAAMqhD,cAAgBl9C,EAAK/C,eAAe0b,IAAIrb,OACvCzB,M,wJCzBL,MAAO+P,EAITlL,YAAY+K,EAAyBhO,GAK9B,KAAAmD,YAAc,IAAMrB,wBAAc,qBAAqBwB,KAAK0K,gBAAmB1K,KAAKtD,aACpF,KAAAoD,mBAAqB,IAAM,oBAC3B,KAAAC,cAAgB,IAAiB,UANpCC,KAAK0K,gBAAkBA,EACvB1K,KAAKtD,YAAcA,GAQpB0D,eAAe0K,EAAuBhQ,EAA+BuF,GACxE,OAAOu5C,YAAuB,CAAEp5C,cAAeH,EAAKkB,oBAAqB,IAAMzG,EAAM4P,iBAG1EzK,qCAA2B,CACtCE,OAAsC2K,K,oSCTnC,MAAM2W,EAAb9hB,cACuB,KAAA+hB,cAA8C,KAC9C,KAAAC,eAAwC,GACxC,KAAAC,eAAqC,KACrC,KAAAC,kBAAmC,KAEnC,KAAA5d,SAAmB,GACnB,KAAAlF,SAAyB,UACzB,KAAA69C,eAAuC,KACvC,KAAAC,cAA6C,IARpDhmC,sBAAXE,KAAW,oCACAF,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,wCACAF,sBAAXE,KAAW,wCACAF,sBAAXE,KAAW,+BACAF,sBAAXE,KAAW,+BACAF,sBAAXE,KAAW,qCACAF,sBAAXE,KAAW,oCAMT,MAAM+K,EAAbniB,cACW,KAAAE,YAAc,IAAM,gBACpB,KAAAC,mBAAqB,IAAM,gBAC3B,KAAAC,cAAgB,IAAiB,WAGrCK,eAAe2hB,EAClBjnB,EACAuF,GAEA,OAAO,IAAIohB,EAMR,MAAMO,EACT5mB,GAEO,IAAI0mB,EAMA7hB,+CAA0C,CACrDE,OAAgC4hB,EAChCjnB,MAAOknB,K,kCChEX,6FAIO,SAAS86B,EAA0B9hD,GACtC,OAAO,IAAI0V,eAAsC,yBAA0B1V,EAAQ,2BAOxEiF,+CAA2B,CACtCE,OAA0CwQ,mBAC1C7V,MANsC,IAC/BgiD,EAA0B,O,yLCK/B,MAAOC,EAEXp9C,YAAYq9C,GAGL,KAAAn9C,YAAc,IACnB,GAAGG,KAAKi9C,gBAAgB7gD,aAAa4D,KAAKi9C,gBAAgBt+C,aAAaqB,KAAKi9C,gBAAgB9/C,6BACvF,KAAA2C,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAiB,UALtCC,KAAKi9C,gBAAkBD,GAQpB58C,eAAe88C,EACpBpiD,EACAuF,GAEA,MAAM88C,QAAmBC,kBACvBtiD,EAAMmiD,gBACN58C,GAGIg9C,EAAsC,CAC1CC,MAAO,GACPplC,KAAM,IAIFqlC,EAAaJ,EAAWn8C,KAC5B0xB,GAtCgC,iBAuC9BA,EAAU5tB,KAAMoE,eAGhBq0C,GAAcA,EAAWC,YAC3BH,EAAiBC,MAAQC,EAAWC,WAItC,MAAMC,EAAYN,EAAWn8C,KAC3B0xB,GA/C+B,SAgD7BA,EAAU5tB,KAAMoE,eAOpB,OAJIu0C,GAAaA,EAAUD,YACzBH,EAAiBnlC,KAAOulC,EAAUD,WAG7BH,EAYMp9C,+CAA2B,CACxCE,OAAoC+8C,EACpCpiD,MARAM,IAEA,MAAMsiD,EAAkBn3C,kDAAwCnL,GAChE,OAAO,IAAI2hD,EAAsBW,O,mECtDpBn6C,uCAAoC,CAC/CrD,GAAI,gEACJC,OANJC,eAAiCtF,EAAUuF,GACvC,MAAO,O,oMCJX,EAGI,SAAY3D,GAAZ,WAIO,KAAAmD,YAAc,WAAM,+BAAc,gBAAiB89C,EAAKjhD,cACxD,KAAAoD,mBAAqB,WAAM,uBAC3B,KAAAC,cAAgB,WAAiB,iBALpCC,KAAKtD,YAAcA,GAWpB,SAAekhD,EAAoB9iD,EAA2BuF,GAAmB,yGACpF,MAAM,CAAN,EAAO,IAAIy6B,WAaA76B,+CAA0C,CACrDE,OAAgCy9C,EAChC9iD,MATgB,SAACM,GACjB,OAAO,IAAIyiD,EAAmBziD,EAAUc,eAAeQ,iB,gICfpD,MAAM+d,EAGT9a,YAAY4B,GAIL,KAAA1B,YAAc,IAAM,wBACpB,KAAAC,mBAAqB,IAAM,wBAC3B,KAAAC,cAAgB,IAAiB,OALpCC,KAAKuB,oBAAsBA,GAyDpBtB,yCAA4C,CACvDC,GAAI,qFACJC,OA/BGC,eAA2CtF,EAAmCuF,GACjF,IAAKA,EAAInE,eAAewF,KAAKC,gBACzB,MAAM,IAAInG,MAAM,kEAGpB,MAAMsiD,EAAkC,GAElChX,EAAc,IAAIC,yBAClBC,QAAoCC,4BAAkBH,EAAazmC,GAEzE,IAAK2mC,GAAwC,IAAxBA,EAAa5lC,OAC9B,OAAO08C,EAGX,IAAK,IAAIj/B,EAAI,EAAGA,EAAImoB,EAAa5lC,SAAUyd,EAAG,CAC1C,MAAM9Q,EAAOi5B,EAAanoB,GACpBqoB,EAAa,IAAI5B,sCAAoCv3B,EAAK1G,GAAIvM,EAAMyG,qBACpE4lC,QAAmB5B,+CAAqC2B,EAAY7mC,GAC1Ey9C,EAAepyC,KAAK,IAAI07B,IAAcr5B,EAAMo5B,EAAW1B,MAAO0B,EAAWzB,aAI7E,OADArlC,EAAI8B,MAAM27C,EAAe18C,OAAOoG,YACzBs2C,GAUPhjD,MAhD6CM,IAC7C,MAAM,eAAEc,GAAmBd,EAC3B,IAAKc,EAAewF,KAAKC,gBACrB,MAAM,IAAInG,MAAM,kEAEpB,MAAM+F,EAA4C8N,2BAAyBC,cAAclU,GAAWmU,oBAGpG,OAFAhO,EAAoBkS,OAAQ,EAErB,IAAIgH,EAA2BlZ,O,2QC/BnC,MAAMsxC,EAAblzC,cACW,KAAAE,YAAc,IAAM,6BACpB,KAAAC,mBAAqB,IAAM,6BAC3B,KAAAC,cAAgB,IAAiB,QAGrC,MAAMwJ,EAAc,IAChB,IAAIspC,EAMRzyC,eAAe0yC,EAAoCh4C,EAAwCuF,GAE9F,IAAKvF,EAED,MADAuF,EAAIoF,UAAUC,UAAU,IAAIlK,MAAM,4EAC5B,IAAIA,MAAM,2EAGpB,MACMqY,SADsB+iB,YAAiBv2B,IAClBmsB,aAAa3Y,KAGxC,OAAIA,GAAQA,EAAK6J,WAAa7J,EAAK6J,UAAUtc,OAClC+O,4BACa0D,EAAK6J,UAAUpe,IAAIqhB,IAC/B,GAAIA,EAASnjB,UACT,OAAO,IAAI0S,eAAayQ,EAASnjB,UAAW6C,EAAInE,eAAeQ,eAGpE2M,OAAOC,SACVjJ,GAEC6B,KAAK2F,GACEA,GAGO,IAGdvC,MAAMC,IAEH,MADAlF,EAAIoF,UAAUC,UAAUH,GAClB,IAAI/J,MAAM,wFAIJ,GAGbyE,+CAA2B,CACtCC,GAAI,2EACJC,OAAkC2yC,EAClCh4C,MAAOyO,M","file":"static/js/32.c6bdc5dd03af880fc178.chunk.js","sourcesContent":["import { IAny, ICommerceApiSettings, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { AsyncResult } from '@msdyn365-commerce/retail-proxy';\nimport {\n CartLine,\n CommerceListLine,\n ProductSearchResult,\n QueryResultSettings,\n SimpleProduct\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ProductDetailsCriteria } from '../get-full-products';\nimport { parseSearchData } from './input-data-parser';\n\nexport const wrapInResolvedAsyncResult = (input: T | null | undefined): AsyncResult => {\n return >{\n status: 'SUCCESS',\n result: input,\n metadata: {}\n };\n};\n\nexport const wrapInRejectedAsyncResult = (input: T | null | undefined): AsyncResult => {\n return >{\n status: 'FAILED',\n result: input,\n metadata: {}\n };\n};\n\nexport const buildQueryResultSettings = (inputData: ICreateActionContext, IGeneric>): QueryResultSettings => {\n try {\n const searchInputData = parseSearchData(inputData);\n const search = searchInputData.q;\n if (!search) {\n throw new Error('Query string ?q={searchText} is needed for search actions.');\n }\n const top = (searchInputData.maxItems && Number(searchInputData.maxItems)) || searchInputData.top;\n return { Paging: { Top: top, Skip: searchInputData.skip } };\n } catch (e) {\n return {};\n }\n};\n\n/**\n * Utility function to extract the active productId in the following priority:\n * First query param (productId), then UrlToken (itemId), then module config\n * @param inputData The Action Input data\n */\nexport const getSelectedProductIdFromActionInput = (inputData: ICreateActionContext>): string | undefined => {\n if (inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.productId) {\n return inputData.requestContext.query.productId;\n } else if (inputData && inputData.requestContext && inputData.requestContext.urlTokens && inputData.requestContext.urlTokens.itemId) {\n return inputData.requestContext.urlTokens.itemId;\n } else if (inputData && inputData.config && inputData.config.productId) {\n return inputData.config.productId;\n }\n return undefined;\n};\n\n/**\n * Generates a Image URL based on data return from retail server\n * @param imageUrl The image url returned by Retail Server\n * @param ctx The request context\n */\nexport const generateImageUrl = (imageUrl: string | undefined, apiSettings: ICommerceApiSettings): string | undefined => {\n if (imageUrl) {\n // Images hosted in CMS include schema\n if (imageUrl.startsWith('http')) {\n return imageUrl;\n }\n\n // Images hosted in Retail Server must be encoded and joined with the base image url\n return apiSettings.baseImageUrl + encodeURIComponent(imageUrl);\n } else {\n // d365Commerce.telemetry.warning(`Unable to generate a proper Image URL for Product: ${product.RecordId}`);\n return undefined;\n }\n};\n\n/**\n * Generates a Image URL for a product based on data return from retail server\n * @param product The Product returned by Retail Server\n * @param ctx The request context\n */\nexport const generateProductImageUrl = (\n product: SimpleProduct | ProductSearchResult,\n apiSettings: ICommerceApiSettings\n): string | undefined => {\n return generateImageUrl(product.PrimaryImageUrl, apiSettings);\n};\n\n/**\n * Creates a CartLine object from the passed data\n * @param product The product\n * @param quantity The quantity\n * @param catalogId The catalog\n */\nexport const buildCartLine = (product: SimpleProduct, quantity?: number, catalogId?: number): CartLine => {\n return {\n CatalogId: catalogId || 0,\n Description: product.Description,\n // TODO: Investigate this value and what it represents\n EntryMethodTypeValue: 3,\n ItemId: product.ItemId,\n ProductId: product.RecordId,\n Quantity: quantity || 1,\n TrackingId: '',\n UnitOfMeasureSymbol: product.DefaultUnitOfMeasure\n };\n};\n\n/**\n * Creates a CommerceListLine (also know as WishlistLine) object from the passed data\n * @param productId The RecordId of the Product to be added\n * @param customerId The account number of the customer\n * @param wishlistId The Id of the commerce list\n */\nexport const buildWishlistLine = (productId: number, customerId: string, wishlistId: number): CommerceListLine => {\n return {\n CommerceListId: wishlistId,\n ProductId: productId,\n CustomerId: customerId\n };\n};\n\n/**\n * Utility function to prepare the product details criteria before getting full product:\n * @param inputData The Action Input data\n */\nexport const getProductDetailsCriteriaFromActionInput = (inputData: ICreateActionContext>): ProductDetailsCriteria => {\n if (inputData && inputData.config) {\n return {\n getPrice: !inputData.config.hidePrice,\n getRating: !inputData.config.hideRating\n };\n }\n return {\n getPrice: true,\n getRating: true\n };\n};\n\n/**\n * Transforms search text into the expected 'search terms' format, expected by refiner APIs.\n * @param searchText free-form text used for searching for products or categories of products\n */\nexport const ensureSearchTextIsFormedProperly = (searchText: string): string => {\n const prefix = searchText.startsWith(`'`) ? '' : `'`;\n const suffix = searchText.endsWith(`'`) ? '' : `'`;\n return `${prefix}${searchText}${suffix}`;\n};\n\nexport const ensureSafeSearchText = (searchText: string): string => {\n return searchText.replace(/[^0-9a-zA-Z\\s]+/g, '');\n};\n\nexport const buildCacheKey = (base: string, apiSettings: ICommerceApiSettings, locale?:string): string => {\n return `${base}-chanId:${apiSettings.channelId}-catId:${apiSettings.catalogId}${locale?`-${locale}`:''}`;\n};\n\nexport const buildCacheKeyWithUrlTokens = (base: string, requestContext: IRequestContext): string => {\n const urlTokens = requestContext.urlTokens;\n const defaultCacheKey = buildCacheKey(base, requestContext.apiSettings, requestContext.locale);\n return urlTokens\n ? `${defaultCacheKey}-${urlTokens.itemId}-${urlTokens.recordId}-${urlTokens.pageType}`\n : defaultCacheKey;\n};\n\n/**\n * Generates a key from set of arguments as inputs\n *\n * @param args argument list of pivots to generate key from\n * @param handler handler function for null/undefined values\n */\n\ntype TKeyTypes = string | number | boolean | null | undefined;\ninterface IGenerateKeyOptions {\n separator?: string;\n handler?(input: null | undefined): string;\n}\nexport const generateKey = (args: TKeyTypes[], options?: IGenerateKeyOptions): string => {\n const { handler, separator }: IGenerateKeyOptions = { ...{ separator: '-', handler: undefined }, ...(options || {}) };\n return args\n .map(arg => {\n if (arg === null || arg === undefined) {\n if (handler) {\n return handler(arg);\n }\n }\n return arg;\n })\n .join(separator);\n};\n\n/**\n * Gets the fall back image url for a variant image.\n * @param itemId Item id of a product.\n * @param apiSettings Api setting from request context.\n */\nexport const getFallbackImageUrl = (itemId: string | undefined, apiSettings: ICommerceApiSettings): string | undefined => {\n if (!itemId) {\n return '';\n }\n\n const productUrl = `Products/${itemId}_000_001.png`;\n return generateImageUrl(productUrl, apiSettings);\n};","import { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { generateProductImageUrl, getSelectedProductIdFromActionInput } from './utilities/utils';\n\nimport { getByIdAsync, getVariantsByDimensionValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductDimension, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Get selected variant action input class\n */\nexport class SelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public matchingDimensionValues: ProductDimension[];\n\n constructor(productId: number, channelId: number, matchingDimensionValues?: ProductDimension[]) {\n this.productId = productId;\n this.channelId = channelId;\n this.matchingDimensionValues = matchingDimensionValues || [];\n }\n\n public getCacheKey = () => `SelectedVariant`;\n public getCacheObjectType = () => 'SimpleProduct';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action\n * @param inputData The input data passed to the createInput method\n */\nconst createInput = (inputData: ICreateActionContext>): SelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new SelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, []);\n } else {\n throw new Error('Unable to create SelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * Action method for the getSelectedVariant data aciton\n * @param input The action input class\n * @param ctx The action context\n */\nasync function getSelectedVariantAction(input: SelectedVariantInput, ctx: IActionContext): Promise {\n let product: SimpleProduct | null = null;\n\n const response = await getByIdAsync({ callerContext: ctx }, input.productId, input.channelId);\n\n const baseProduct: SimpleProduct = Array.isArray(response) ? response[0] : response;\n\n // Need to dereference this before editing it. Otherwise we might not\n // properly get the mobx events because if things aren't properly observable\n // they won't fire when you set them, and then if you don't deref the value in\n // the cache will match the value when you try to save it, so it won't detect any\n // changes there either\n product = { ...baseProduct };\n\n if (product) {\n let baseProductHadUnmatchedDimension: boolean = false;\n if (product.Dimensions) {\n product.Dimensions.map(dimension => {\n const matchedTargetDimension = input.matchingDimensionValues.find(\n targetDimension => targetDimension.DimensionTypeValue === dimension.DimensionTypeValue\n );\n\n if (matchedTargetDimension) {\n dimension.DimensionValue = matchedTargetDimension.DimensionValue;\n } else {\n baseProductHadUnmatchedDimension = true;\n }\n });\n }\n\n if (!baseProductHadUnmatchedDimension && input.matchingDimensionValues.length > 0) {\n const variants = await getVariantsByDimensionValuesAsync(\n { callerContext: ctx, queryResultSettings: {} },\n baseProduct.RecordId,\n input.channelId,\n input.matchingDimensionValues\n );\n\n if (variants && variants.length > 0) {\n product = variants[0];\n }\n }\n\n const newImageUrl = generateProductImageUrl(product, ctx.requestContext.apiSettings);\n\n if (newImageUrl) {\n product.PrimaryImageUrl = newImageUrl;\n }\n }\n\n return product;\n}\n\n/**\n * The complete getSelectedVariant data action\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-selected-variant',\n action: >getSelectedVariantAction,\n input: createInput\n});\n","import { IAction } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetByCustomerInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CommerceListsDataActions.g';\nimport { CommerceList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildQueryResultSettings } from './utilities/utils';\n\nconst createWishlistInput = (inputData: ICreateActionContext) => {\n if (\n inputData.requestContext &&\n inputData.requestContext.user &&\n inputData.requestContext.user.isAuthenticated\n ) {\n return createGetByCustomerInput(buildQueryResultSettings(inputData), null);\n }\n\n throw new Error('[get-wishlist-by-customer-id] Unable to create input for getWishlists');\n};\n\n/**\n * Get Org Unit Configuration Data Action\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-wishlist-by-customer-id',\n action: >retailAction,\n input: createWishlistInput\n});\n","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport {\n getAttributeDefinitionsAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { AttributeDefinition, AttributeDefinitionCriteria} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get attribute definitions data action\n */\nexport class GetAttributeDefinitionsInput implements IActionInput {\n public attributeDefinitionCriteria?: AttributeDefinitionCriteria;\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, attributeDefinitionCriteria?: AttributeDefinitionCriteria) {\n this.attributeDefinitionCriteria = attributeDefinitionCriteria;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('AttributeDefinitions', this.apiSettings);\n public getCacheObjectType = () => 'CustomerAttribute';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): GetAttributeDefinitionsInput => {\n const { apiSettings, channel } = inputData.requestContext;\n if (!channel || !channel.CustomerAttributeGroupId) {\n throw new Error('[getAttributeDefinitions][createInput]: Customer attribute group id is not found.');\n }\n\n return new GetAttributeDefinitionsInput(apiSettings, {AttributeGroupIdentifier: channel.CustomerAttributeGroupId});\n};\n\nconst getAttributeDefinitionsAction = async (input: GetAttributeDefinitionsInput, ctx: IActionContext): Promise => {\n if (input && ctx.requestContext.channel && ctx.requestContext.channel.CustomerAttributeGroupId) {\n return getAttributeDefinitionsAsync({ callerContext: ctx }, input.attributeDefinitionCriteria || null).then(response => {\n return response;\n });\n }\n\n ctx.trace('[getAttributeDefinitions]Invalid input passed to action');\n return [];\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-custom-attributes',\n action: >getAttributeDefinitionsAction,\n input: createInput\n});\n","import { IAction } from '@msdyn365-commerce/core';\nimport { createObservableDataAction } from '@msdyn365-commerce/core';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetOrgUnitConfigurationInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Get Org Unit Configuration Data Action\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-org-unit-configuration',\n action: >retailAction,\n input: () => {\n return createGetOrgUnitConfigurationInput();\n }\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { TelemetryEvent } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromSimpleProduct } from './telemetry.action.helper';\n\nconst beforeGetById = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\nconst afterGetById = async (\n _inputs: IActionInput | IActionInput[],\n simpleProduct: SimpleProduct | SimpleProduct[],\n actionContext: IActionContext\n) => {\n simpleProduct = await Promise.resolve(Array.isArray(simpleProduct) ? simpleProduct[0] : simpleProduct);\n\n // If simple product result is defined run the post hook\n if (simpleProduct) {\n const productInfo = getProductInfoFromSimpleProduct(simpleProduct);\n actionContext.requestContext.telemetryData[productInfo.productSku] = productInfo;\n actionContext.requestContext.telemetryData[TelemetryEvent.ProductPageView] = productInfo ? [productInfo] : [];\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Products/GetById',\n postReaderHook: afterGetById,\n preReaderHook: beforeGetById\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { friendsAndFamilyListInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { rsmFriendsAndFamilyListResponseExtensionClass } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * Getfriendsandfamilylist Input Action\r\n */\r\nexport class GetFriendsAndFamilyListInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IGetFriendsAndFamilyListInput`;\r\n public getCacheObjectType = () => 'IGetFriendsAndFamilyListInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\nconst createInput = (args: Msdyn365.ICreateActionContext): Msdyn365.IActionInput => {\r\n return new GetFriendsAndFamilyListInput(\r\n friendsAndFamilyListInput()\r\n );\r\n};\r\n\r\nasync function action(input: GetFriendsAndFamilyListInput, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n\r\n // TEST DATA: remove when module is done\r\n // return {\r\n // Status: 'SUCCESS',\r\n // Result: {\r\n // Codes: [\r\n // {\r\n // RecipientEmailAddress: '',\r\n // Status: 'SENT',\r\n // Code: 'uam97FAL3h',\r\n // SentDate: '2020-08-20',\r\n // ActivationDate: ''\r\n // },\r\n // {\r\n // RecipientEmailAddress: 'fred.wwwww@email.com',\r\n // Status: 'ACTIVATED',\r\n // Code: 'FCuA2fVAVc',\r\n // SentDate: '2020-08-20',\r\n // ActivationDate: '2020-08-20'\r\n // },\r\n // {\r\n // RecipientEmailAddress: 'fred.awdawdaw@email.com',\r\n // Status: 'ACTIVATED',\r\n // Code: 'xgtU6J0ojU',\r\n // SentDate: '2020-08-20',\r\n // ActivationDate: '2020-08-20'\r\n // },\r\n // {\r\n // RecipientEmailAddress: 'fred.aiabwdiubw@email.com',\r\n // Status: 'ACTIVATED',\r\n // Code: 'vmh78AqCor',\r\n // SentDate: '2020-08-20',\r\n // ActivationDate: '2020-08-20'\r\n // },\r\n // {\r\n // RecipientEmailAddress: '',\r\n // Status: 'SENT',\r\n // Code: '1JMiVTfkNs',\r\n // SentDate: '2020-08-20',\r\n // ActivationDate: ''\r\n // },\r\n // ]\r\n // }\r\n // };\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >action,\r\n input: createInput\r\n});\r\n","import { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\nexport type OrderBy =\n | 'None'\n | 'MostRecent'\n | 'Oldest'\n | 'HighestRating'\n | 'LowestRating'\n | 'MostHelpful'\n | 'LeastHelpful'\n | 'MostAsked'\n | 'MostAnswered'\n | 'LeastConcerns'\n | 'MostConcerns'\n | 'ReviewerNameAsc'\n | 'ReviewerNameDesc';\n\n/**\n * ReviewsGetRatingsSummary Input Action\n */\nexport class GetProductReviewsInput implements IActionInput {\n /**\n * The Id representing the product to get the reviews for.\n */\n public productId: string;\n\n /**\n * The ID representing the tenant.\n */\n public tenantId: string;\n\n /**\n * The market for which to get the reviews from.\n */\n public localeListFilter: string;\n\n /**\n * Number of reviews to be shown on each page.\n */\n public pageSize: number;\n\n /**\n * Order in which reviews to be shown.\n */\n public orderBy: string;\n\n /**\n * Need to set this value if reviews need to be filtered with specific star rating .\n */\n public starFilters?: string;\n\n /**\n * Need to set this value if we need to skip few reviews.\n */\n public skipItems: number;\n\n /**\n * The continuation token\n */\n public pageToken: string | null;\n\n /**\n * Selects which data sources to use to retrieve data\n */\n public dataSources: string | null;\n\n /**\n * The ratings and reviews service endpoint\n */\n public serviceEndpoint: string;\n\n constructor(\n productId: string,\n tenantId: string,\n localeListFilter: string,\n serviceEndpoint: string,\n orderBy: string = 'MostHelpful',\n starFilters: string = '',\n skipItems: number = 0,\n pageSize: number = 10,\n pageToken: string | null = null,\n dataSources: string | null = null\n ) {\n this.productId = productId;\n this.tenantId = tenantId;\n this.localeListFilter = localeListFilter;\n // Max page size which Rnr API supports is 25.\n // Hence if config has page size more than 25, we'll default it to 25.\n this.pageSize = pageSize > 25 ? 25 : pageSize;\n this.orderBy = orderBy;\n this.starFilters = starFilters;\n this.skipItems = skipItems;\n this.pageToken = pageToken;\n this.dataSources = dataSources;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () => `${this.productId}-${this.tenantId}-${this.localeListFilter}-${this.pageSize}-${this.orderBy}-${this.starFilters}-${this.skipItems}`;\n public getCacheObjectType = () => 'ProductReview';\n public dataCacheType = (): CacheType => 'request';\n}\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { FilterDeliveryModeOption, ProductDeliveryOptions, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { FeatureStateInput, getFeatureStateAction } from './get-feature-state';\nimport { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from './index';\n\n/**\n * Input class for the GetDeliveryOptionsForSelectedVariant Data Action\n */\nexport class GetDeliveryOptionsForSelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public selectedProduct: SimpleProduct | undefined;\n public customerId: string;\n public featureState?: boolean;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, customerId?: string, featureState?: boolean) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.customerId = customerId || '';\n this.featureState = featureState;\n }\n\n public getCacheKey = () => `DeliveryOptionsForSelectedVariant`;\n public getCacheObjectType = () => 'DeliveryOptions';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n */\nexport async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateAction(new FeatureStateInput(), context);\n}\n\n/**\n * The createInput method for the GetDeliveryOptionsForSelectedVariant Data Action\n * @param inputData The input data for the createInput method\n */\nexport const createDeliveryOptionsForSelectedVariantInput = (inputData: ICreateActionContext>): GetDeliveryOptionsForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new GetDeliveryOptionsForSelectedVariantInput(\n +productId,\n +inputData.requestContext.apiSettings.channelId,\n undefined,\n undefined,\n );\n } else {\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * The Action Method for the GetDeliveryOptionsForSelectedVariant Data Action\n * Pulls the currently selected variant from the cache using the getSelectedVariant data action, and gets it's supported delivery options\n * via the getDeliveryOptionsAsync RetailServer API\n */\nexport async function getDeliveryOptionsForSelectedVariantAction(\n input: GetDeliveryOptionsForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n if(input.featureState === undefined) {\n const featureState = await getFeatureState(ctx);\n input.featureState = featureState?.find(item => item.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature')?.IsEnabled;\n }\n\n return Promise.resolve()\n // @ts-ignore: Promise vs. ObservablePromise typing conflict\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n\n return getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n })\n .then((productResult: SimpleProduct | null) => {\n const activeProduct: SimpleProduct | undefined = productResult;\n\n if (activeProduct) {\n return getDeliveryOptionsAsync(\n { callerContext: ctx, queryResultSettings: {} },\n [activeProduct.RecordId],\n {},\n // for giftcard, should not apply filter.\n (input.featureState && !productResult?.IsGiftCard) ? FilterDeliveryModeOption.FilterOutNonPickupDeliveryMode : null\n ).then(response => {\n if(response && response.length > 0) {\n return response[0];\n }\n\n return undefined;\n });\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getDeliveryOptionsForSelectedVariantAction]Error executing action`);\n throw new Error('[getDeliveryOptionsForSelectedVariantAction]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-delivery-options-for-selected-variant',\n action: >getDeliveryOptionsForSelectedVariantAction,\n input: createDeliveryOptionsForSelectedVariantInput\n});\n","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport { readAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get customer data action\n */\nexport class GetCustomerInput implements IActionInput {\n public customerAccountNumber?: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, accountNumber?: string) {\n this.customerAccountNumber = accountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`Customer-${this.customerAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'Customer';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): GetCustomerInput => {\n const { user, apiSettings } = inputData.requestContext;\n if (!user.token || !user.isAuthenticated) {\n throw new Error('[getCustomer][createInput]: User is not Authenticated.');\n }\n\n return new GetCustomerInput(apiSettings);\n};\n\nconst getCustomerAction = async (input: GetCustomerInput, ctx: IActionContext): Promise => {\n if (input && ctx.requestContext.user.isAuthenticated) {\n // TO-DO- Need to clean up this code once SDK releases new proxy that handles null.\n return readAsync({ callerContext: ctx }, input.customerAccountNumber || '').then(response => {\n return Array.isArray(response) ? response[0] : response;\n });\n }\n\n ctx.trace('[getCustomer]Invalid input passed to action');\n return {};\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-customer',\n action: >getCustomerAction,\n input: createInput\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { clubMembershipGetDataInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmClubMemberMgmtGetDataResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetMembership Input Action\r\n */\r\nexport class GetMembershipInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => true;\r\n\r\n public getCacheKey = () => `IGetMembershipInput`;\r\n public getCacheObjectType = () => 'IGetMembershipInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\nexport interface IGetMembershipData extends IrsmClubMemberMgmtGetDataResponse {}\r\n\r\nexport interface IInputRequirements {\r\n customerId: string;\r\n}\r\n\r\nexport const createGetMembershipInput = (\r\n args: Msdyn365.ICreateActionContext\r\n): GetMembershipInput => {\r\n const accNumber = args.requestContext.user.customerAccountNumber || '';\r\n return new GetMembershipInput(\r\n clubMembershipGetDataInput(\r\n accNumber\r\n ),\r\n );\r\n};\r\n\r\nexport async function getMembershipAction(\r\n input: GetMembershipInput,\r\n ctx: Msdyn365.IActionContext,\r\n): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: > getMembershipAction,\r\n input: createGetMembershipInput,\r\n});","import { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { AttributeValue, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { getAttributeValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\n\r\n/**\r\n * Chains getting the SelectedVariant by product id\r\n */\r\n\r\nexport class AttributesForSelectedVariantInput implements IActionInput {\r\n public productId: number;\r\n public channelId: number;\r\n public catalogId: number;\r\n public selectedProduct: SimpleProduct | undefined;\r\n constructor(\r\n productId: number,\r\n channelId: number,\r\n selectedProduct?: SimpleProduct,\r\n catalogId?: number\r\n ) {\r\n this.productId = productId;\r\n this.channelId = channelId;\r\n this.selectedProduct = selectedProduct;\r\n this.catalogId = catalogId || 0;\r\n }\r\n public getCacheKey = () => `${this.productId}:${this.channelId}:${this.catalogId}:AttributesForSelectedVariant`;\r\n public getCacheObjectType = () => 'ProductAttributeValue';\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\nexport const createAttributesForSelectedVariantInput = (\r\n inputData: ICreateActionContext>\r\n): AttributesForSelectedVariantInput => {\r\n const productId = getSelectedProductIdFromActionInput(inputData);\r\n if (productId) {\r\n return new AttributesForSelectedVariantInput(\r\n +productId,\r\n\r\n +inputData.requestContext.apiSettings.channelId\r\n );\r\n } else {\r\n throw new Error(\r\n 'Unable to create AttributesForSelectedVariantInput, no productId found on module config or query'\r\n );\r\n }\r\n};\r\n\r\n/**\r\n * Calls the Retail API a get a list of dimension values for a given product.\r\n */\r\nexport async function getAttributesForSelectedVariantAction(\r\n input: AttributesForSelectedVariantInput,\r\n ctx: IActionContext\r\n): Promise {\r\n // @ts-ignore: Promise vs. AsyncResult typing conflict\r\n\r\n return Promise.resolve().then(() => {\r\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\r\n if (!activeProduct) {\r\n const selectedVariantInput = new SelectedVariantInput(\r\n input.productId,\r\n input.channelId\r\n );\r\n\r\n return getSelectedVariant(selectedVariantInput, ctx);\r\n }\r\n return activeProduct;\r\n })\r\n .then((productResult: SimpleProduct | null) => {\r\n const activeProduct: SimpleProduct | undefined = productResult;\r\n\r\n if (activeProduct) {\r\n return getAttributeValuesAsync(\r\n { callerContext: ctx, queryResultSettings: {} },\r\n activeProduct.RecordId,\r\n input.channelId,\r\n input.catalogId\r\n );\r\n }\r\n return null;\r\n })\r\n .then((attributeValues: AttributeValue[] | null) => {\r\n const resultArray = attributeValues;\r\n if (resultArray) {\r\n return resultArray;\r\n }\r\n return [];\r\n })\r\n .catch((error: Error) => {\r\n console.log(error);\r\n console.log(error.message);\r\n ctx.trace(error.message);\r\n\r\n throw new Error(\r\n '[getPriceForSelectedVariantAction]Error executing action'\r\n );\r\n });\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getAttributesForSelectedVariantAction,\r\n input: createAttributesForSelectedVariantInput\r\n});\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput, IMSDyn365Window } from '@msdyn365-commerce/core';\nimport { SalesOrder } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo, IProductTransaction, TelemetryEvent } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * Checkout data action pre-hook\n * @param inputs Data action inputs\n */\nconst beforePurchase = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\n/**\n * Fires a Purchase event after Checkout data action completed\n * @param _inputs Data action inputs\n * @param salesOrder Sales order for transaction\n * @param actionContext Action context\n */\nconst afterPurchase = async (\n _inputs: IActionInput | IActionInput[],\n salesOrder: SalesOrder | SalesOrder[],\n actionContext: IActionContext\n) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const salesObject = Array.isArray(salesOrder) ? salesOrder[0] : salesOrder;\n let saleLineProductUnits: IProductInfo[] = [];\n\n // Collect info on products in the sales order\n if (salesObject && salesObject.SalesLines && Array.isArray(salesObject.SalesLines) && salesObject.SalesLines.length > 0) {\n try {\n saleLineProductUnits = await getProductInfoFromCartLinesAsync(salesObject.SalesLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('Checkout post-data action hook failed to process cart lines.', error);\n }\n }\n\n // Store the purchased product information so that we can avoid \"code triggered\" remove from cart telemetry event.\n actionContext.requestContext.telemetryData[TelemetryEvent.Purchase] = {\n id: salesObject.Id,\n affiliation: salesObject.ChannelId ? salesObject.ChannelId.toString() : '',\n revenue: salesObject.NetAmountWithoutTax,\n tax: salesObject.TaxAmount,\n // shippingCost?: // Confirm if it is delivery mode charge amount;\n products: saleLineProductUnits\n };\n\n // Fire Purchase event\n window._msdyn365.telemetry.logEvent(\n TelemetryEvent.Purchase,\n actionContext.requestContext.telemetryData[TelemetryEvent.Purchase]\n );\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/Checkout',\n postReaderHook: afterPurchase,\n preReaderHook: beforePurchase\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { FeatureState } from '@msdyn365-commerce/retail-proxy';\nimport { getFeatureStatesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\n/**\n * Input class for the getFeatureState data action.\n * The life time of the data action is 'application'.\n */\nexport class FeatureStateInput implements IActionInput {\n // Any additional feature names that needs to be checked in the code for enablement needs to be appended here:\n public readonly featureNames: string[] = [\n 'Dynamics.AX.Application.RetailB2BEcommerceFeature',\n 'Dynamics.AX.Application.RetailDefaultOrderQuantityLimitsFeature',\n 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature'\n ];\n\n public getCacheKey = () => 'FeatureState';\n public getCacheObjectType = () => 'FeatureState';\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * createInput method for the getFeatureState method\n * @param inputData The input data passed to the createInput method\n */\nexport const createGetFeatureStateInput = (inputData: ICreateActionContext>): IActionInput => {\n return new FeatureStateInput();\n};\n\n/**\n * The action method for the getFeatureState data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getFeatureStateAction(input: FeatureStateInput, ctx: IActionContext): Promise {\n // tslint:disable-next-line:no-unnecessary-local-variable\n const featureState = await getFeatureStatesAsync({ callerContext: ctx }, input.featureNames);\n return featureState;\n}\n\n/**\n * The getFeatureState data action\n * Gets the feature state via the read RetailServer API\n * Returns address information associated with the retrieved customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-feature-state',\n action: >getFeatureStateAction,\n input: createGetFeatureStateInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { SortColumn } from '@msdyn365-commerce/retail-proxy';\nimport { getSearchConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\n// TODO: import from commerce entities when available\n// tslint:disable-next-line:interface-name\ninterface SearchConfiguration {\n ProductSortColumns?: SortColumn[];\n}\n\n// tslint:disable-next-line:interface-name\nexport interface MappedSearchConfiguration {\n key: string;\n sortColumn: SortColumn;\n}\n\nexport const sortOptions = {\n sortByOptionRelevanceDesc: 'Ranking-Desc',\n sortByOptionRatingAsc: 'AverageRating-Asc',\n sortByOptionRatingDesc: 'AverageRating-Desc',\n sortByOptionNameAsc: 'Name-Asc',\n sortByOptionNameDesc: 'Name-Desc',\n sortByOptionPriceAsc: 'Price-Asc',\n sortByOptionPriceDesc: 'Price-Desc'\n};\n\n/**\n * ActionInput class for the get-mapped-search-configuration Data Action\n */\nexport class MappedSearchInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('MappedSearchInput', this.apiSettings);\n public getCacheObjectType = () => 'MappedSearchInput';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Get a mapped search configuration that is easy to use for sorting\n */\nexport async function getMappedSearchConfiguration(input: MappedSearchInput, ctx: IActionContext): Promise {\n return getSearchConfigurationAsync({ callerContext: ctx }).then((searchConfiguration: SearchConfiguration) => {\n return ((searchConfiguration.ProductSortColumns || []).map((sortColumn: SortColumn) => {\n let key = '';\n if (sortColumn.ColumnName) {\n switch(sortColumn.ColumnName.toUpperCase()) {\n case 'NAME':\n key = sortColumn.IsDescending ? sortOptions.sortByOptionNameDesc : sortOptions.sortByOptionNameAsc;\n break;\n case 'PRICE':\n key = sortColumn.IsDescending ? sortOptions.sortByOptionPriceDesc : sortOptions.sortByOptionPriceAsc;\n break;\n case 'AVERAGERATING':\n key = sortColumn.IsDescending ? sortOptions.sortByOptionRatingDesc : sortOptions.sortByOptionRatingAsc;\n break;\n case 'RANKING':\n key = sortOptions.sortByOptionRelevanceDesc;\n break;\n default:\n }\n } else {\n ctx.telemetry.warning('[get-mapped-search-configuration] unknown search option');\n }\n if (key) {\n return {\n key,\n sortColumn\n };\n } else {\n return undefined;\n }\n }).filter(Boolean));\n });\n}\n\nexport const createInput = (inputData: ICreateActionContext>): IActionInput => {\n return new MappedSearchInput(inputData.requestContext.apiSettings);\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/search-result-container/get-mapped-search-configuration',\n action: >getMappedSearchConfiguration,\n input: createInput\n});","import { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { InvoicePaidStatus, InvoiceSearchCriteria, InvoiceType, OrderInvoice } from '@msdyn365-commerce/retail-proxy';\nimport { getInvoicesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/SalesOrdersDataActions.g';\n\nconst getDefaultSearchCriteria = (): InvoiceSearchCriteria => {\n const searchCriteria: InvoiceSearchCriteria = {};\n searchCriteria.InvoiceTypeValues = [InvoiceType.SalesOrderInvoice];\n searchCriteria.InvoicePaidStatusValues = [InvoicePaidStatus.None];\n return searchCriteria;\n};\n\n/**\n * Input class for get invoice data action\n */\nexport class GetInvoicesInput implements IActionInput {\n public readonly searchCriteria: InvoiceSearchCriteria;\n\n constructor(searchCriteria: InvoiceSearchCriteria) {\n this.searchCriteria = searchCriteria;\n }\n\n public getCacheKey = () => 'BusinessPartnerInvoices';\n public getCacheObjectType = () => 'OrderInvoice';\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const CreateGetInvoicesInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new GetInvoicesInput(getDefaultSearchCriteria());\n};\n\nexport async function getInvoices(input: GetInvoicesInput, context: IActionContext): Promise {\n if (!context?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get list of invoices. User is not authenticated.');\n }\n\n return getInvoicesAsync({ callerContext: context }, input.searchCriteria);\n}\n\nexport default createObservableDataAction({\n id: 'get-invoices',\n action: >getInvoices,\n input: CreateGetInvoicesInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\r\n ICommerceApiSettings, ICreateActionContext, IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport {\r\n CountryRegionInfo, StateProvinceInfo\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\nimport { getCountryRegionsAction, GetCountryRegionsInput } from './get-country-regions';\r\nimport { getStateProvinceAction, GetStateProvincesInput } from './get-state-provinces';\r\n\r\n/**\r\n * Input class for get country regions data action\r\n */\r\nexport class GetCountryStateInput implements IActionInput {\r\n public locale: string;\r\n public apiSettings: ICommerceApiSettings;\r\n\r\n constructor(locale: string, apiSettings: ICommerceApiSettings) {\r\n this.locale = locale;\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey(`CountryStateInfo-${this.locale}`, this.apiSettings);\r\n public getCacheObjectType = () => 'StateProvinceInfo';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\n/**\r\n * Creates the input required to make the retail api call\r\n */\r\nconst createInput = (inputData: ICreateActionContext>): GetCountryStateInput => {\r\n const { locale, apiSettings } = inputData.requestContext;\r\n if (!(inputData.requestContext && locale)) {\r\n throw new Error('Unable to create country regions input. Locale is not provided.');\r\n }\r\n return new GetCountryStateInput(locale, apiSettings);\r\n};\r\n\r\nexport async function getCountryStateAction(input: GetCountryStateInput, ctx: IActionContext): Promise {\r\n const countryInput = new GetCountryRegionsInput(input.locale, input.apiSettings);\r\n const countryRegionsInfo = await getCountryRegionsAction(countryInput, ctx);\r\n\r\n const channelConfiguration = ctx.requestContext.channel;\r\n\r\n const marketISOCode = channelConfiguration && channelConfiguration.ChannelCountryRegionISOCode || 'US';\r\n const currentCountryRegion = countryRegionsInfo.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\r\n const countryRegionId = (currentCountryRegion && currentCountryRegion.CountryRegionId) || 'USA';\r\n\r\n const stateInput = new GetStateProvincesInput(countryRegionId, input.apiSettings);\r\n return getStateProvinceAction(stateInput, ctx);\r\n}\r\n\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/address/get-country-state',\r\n action: >getCountryStateAction,\r\n input: createInput\r\n});","import { IAction } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IDataServiceRequest, retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createSearchOrgUnitLocationsInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { buildQueryResultSettings } from './utilities/utils';\n\n/**\n * Search Org Unit Locations action createInput method\n */\nexport function createSearchOrgUnitLocationsInputFunc(inputData: ICreateActionContext, IGeneric>): IDataServiceRequest {\n return createSearchOrgUnitLocationsInput(buildQueryResultSettings(inputData), {});\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/search-org-unit-locations',\n action: >retailAction,\n input: createSearchOrgUnitLocationsInputFunc\n});\n","import { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { CommerceListLine } from '@msdyn365-commerce/retail-proxy';\n\nimport { FullProductInput, getFullProducts, getProductDetailsCriteriaFromActionInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { getByCustomerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CommerceListsDataActions.g';\n\n/**\n * Input class for getActiveWishlistItems data action\n */\nexport class ActiveWishlistInput implements IActionInput {\n public getCacheKey = () => `ActiveWishlistItems`;\n public getCacheObjectType = () => 'ActiveWishlistItems';\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new ActiveWishlistInput();\n};\n\n/**\n * Calls the Retail API and returns a CommerceList object based on the passed GetCartInput\n */\nexport async function getActiveWishlistItems(input: ActiveWishlistInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n throw new Error('[getActiveWishlistItems]No valid Input was provided, failing');\n }\n\n if (ctx.requestContext.user.isAuthenticated) {\n const wishlists = await getByCustomerAsync({ callerContext: ctx, queryResultSettings: {} }, null);\n\n if (wishlists && wishlists.length > 0) {\n const productInputs: FullProductInput[] = [];\n wishlists.forEach((currWishlist) => {\n if (currWishlist.CommerceListLines) {\n currWishlist.CommerceListLines.forEach((commerceListLine: CommerceListLine) => {\n if (commerceListLine.ProductId) {\n productInputs.push(new FullProductInput(commerceListLine.ProductId, ctx.requestContext.apiSettings, getProductDetailsCriteriaFromActionInput(ctx)));\n }\n });\n }\n });\n\n if (productInputs.length > 0) {\n return getFullProducts(productInputs, ctx)\n .then(products => {\n if (products) {\n return products;\n } else {\n return [];\n }\n })\n .catch(error => {\n ctx.trace(error);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug(`[getActiveWishlistItems]Unable to hydrate cart with product information`);\n throw new Error('[getActiveWishlistItems]Unable to hydrate cart with product information');\n });\n } else {\n ctx.trace('No productIds found for wishlist');\n }\n } else {\n ctx.trace('[getActiveWishlistItems]Not able to get wishlists for the customer');\n return [];\n }\n }\n ctx.trace('[getActiveWishlistItems]User token not found for wishlists');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/wishlist/wishlist-items/get-items-in-wishlist',\n action: >getActiveWishlistItems,\n input: createInput\n});\n","import { Image, ISubList } from '@msdyn365-commerce-modules/data-types';\nimport { buildCacheKeyWithUrlTokens, getList, ListInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { IProductItem } from '@msdyn365-commerce-modules/retail-actions/dist/types/get-list';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { IDefaultPageSummaryConfig } from '../default-page-summary/default-page-summary.props.autogenerated';\nimport { IPageSummaryData } from '../IPageSummaryData';\n\n/** List Page Summary Input */\nexport class ListPageSummaryInput implements IActionInput {\n public requestContext: IRequestContext;\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, requestContext: IRequestContext) {\n this.config = config || {};\n this.requestContext = requestContext;\n }\n\n public getCacheObjectType = (): string => 'ListPageSummary';\n public getCacheKey = (): string => buildCacheKeyWithUrlTokens('ListPageSummary', this.requestContext);\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * List item type enum\n */\nconst enum ListItemType {\n list = 'list',\n product = 'product'\n}\n\n/**\n * Get the url of sub list.\n */\nfunction getSubListUrl(listName: string, sitePath: string): string {\n if (!listName) {\n return '';\n }\n\n if (!sitePath) {\n return `/${listName}.l`;\n }\n\n // sitePath has a leading '/'\n return `${sitePath}/${listName}.l`;\n}\n\n/**\n * Get sub list item.\n */\nfunction getSubListItem(item: IGeneric, sitePathOfRequest: string): ISubList {\n const imageList: Image[] = getImages(item.fields.content.images);\n\n const sublistHref = getSubListUrl(item.fields._name, sitePathOfRequest);\n return {\n Title: item.fields.content.title,\n Description: item.fields.content.description,\n ShortDescription: item.fields.content.shortDescription,\n BackgroundColor: item.fields.content.backgroundColor,\n ForegroundColor: item.fields.content.foregroundColor,\n Href: sublistHref,\n Images: imageList\n };\n}\n\n/**\n * Get site path\n */\nfunction getSitePath(inputData: ICreateActionContext, IGeneric>): string {\n // @ts-ignore\n return inputData && inputData.requestContext && inputData.requestContext.sitePath ? inputData.requestContext.sitePath : '';\n}\n\n/**\n * Get items per page\n */\nfunction getItemsPerPage(inputData: ICreateActionContext, IGeneric>): number {\n if (!inputData || !inputData.config || !inputData.config.itemsPerPage) {\n return 50;\n }\n\n const result = Number(inputData.config.itemsPerPage);\n if (isNaN(result)) {\n return 50;\n }\n\n return result;\n}\n\n/**\n * Get skip count\n */\nfunction getSkipCount(inputData: ICreateActionContext, IGeneric>): number {\n return inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.skipCount\n ? Number(inputData.requestContext.query.skipCount)\n : 0;\n}\n\n/**\n * Get images.\n */\nfunction getImages(images: IGeneric[]): Image[] {\n const resultImageList: Image[] = [];\n\n if (!images) {\n return resultImageList;\n }\n\n images.forEach(item => {\n if (item && item.image && item.image.href) {\n // add image item\n const imageItem: Image = {\n href: item.image.href,\n altText: item.image.altText,\n title: item.image.title,\n width: item.image.width,\n height: item.image.height\n };\n\n resultImageList.push(imageItem);\n }\n });\n\n return resultImageList;\n}\n\n/**\n * Get input list data.\n */\nfunction getInputListData(inputData: ICreateActionContext, IGeneric>): IGeneric {\n let listData =\n !inputData || !inputData.requestContext || !inputData.requestContext.pageData ? null : inputData.requestContext.pageData.list;\n if (\n !inputData ||\n !inputData.requestContext ||\n !inputData.requestContext.pageData ||\n !inputData.requestContext.pageData.list ||\n !inputData.requestContext.pageData.list.content ||\n !inputData.requestContext.pageData.list.content.items ||\n !inputData.requestContext.pageData.list.content.title ||\n !inputData.requestContext.pageData.list._id\n ) {\n if (\n !inputData ||\n !inputData.data ||\n !inputData.data.list ||\n !inputData.data.list.content ||\n !inputData.data.list.content.items ||\n !inputData.data.list.content.title ||\n !inputData.data.list._id\n ) {\n console.error('data is not well defined for list action input');\n throw new Error('data is not well defined for list action input');\n }\n\n listData = inputData.data.list;\n }\n return listData;\n}\n\nconst createGetListInput = (inputData: IActionContext): ListInput => {\n const listData: IGeneric = getInputListData(inputData);\n const listItems: (IProductItem[] | ISubList)[] = [];\n let productList: IProductItem[] = [];\n\n const parentImageList: Image[] = getImages(listData.content.images);\n\n const itemsPerPage = getItemsPerPage(inputData);\n const skipCount = getSkipCount(inputData);\n\n // This is the list contains all product and will be used to call getSimpleProducts data action.\n const productItems: IProductItem[] = [];\n const sum = skipCount + itemsPerPage;\n for (let index = skipCount; index < listData.content.items.length && index < sum; index++) {\n const item = listData.content.items[index];\n if (item.type === ListItemType.list) {\n if (!item.fields || !item.fields.content || !item.fields.content.title) {\n console.error(`sublist item fields, content or title missing in list ${listData._id}`);\n continue;\n }\n\n // if any elements in product list, then copy it and add to list items\n if (!(productList.length === 0)) {\n const clonedList = [...productList];\n listItems.push(clonedList);\n productList = [];\n }\n\n // build and add sublist item\n listItems.push(getSubListItem(item, getSitePath(inputData)));\n }\n\n if (item.type === ListItemType.product) {\n if (!item.fields || !item.fields.recordId) {\n console.error(`product item missing recordId in list ${listData._id}`);\n continue;\n }\n\n // add product item\n const productItem: IProductItem = {\n RecordId: item.fields.recordId,\n CatalogId: item.fields.catalogId || '0'\n };\n\n productList.push(productItem);\n productItems.push(productItem);\n }\n }\n\n // save the last portion of product items.\n if (!(productList.length === 0)) {\n listItems.push(productList);\n }\n\n return new ListInput(\n listData._id,\n listData.content.title,\n listData.content.description,\n listData.content.shortDescription,\n listData.content.backgroundColor,\n listData.content.foregroundColor,\n parentImageList,\n listItems,\n productItems,\n listData.content.items.length,\n itemsPerPage,\n skipCount\n );\n};\n\nconst action = async (input: ListPageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n let listData;\n try {\n listData = await getList(createGetListInput(context), context);\n } catch (e) {\n // Do nothing, if there's an error running the action fall back to values defined from data\n }\n if (listData && listData.Title) {\n return {\n title: listData.Title,\n description: listData.Description\n };\n // If the action fails fallback to values defined from data\n } else if (config) {\n return {\n title: config.title,\n description: config.description\n };\n } else {\n return {};\n }\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/list-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new ListPageSummaryInput(args.config, args.requestContext);\n }\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getProductInfoFromSimpleProduct } from './telemetry.action.helper';\n\nconst beforeGetVariantsByDimensionValues = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\nconst afterGetVariantsByDimensionValues = async (\n _inputs: IActionInput | IActionInput[],\n simpleProducts: SimpleProduct | SimpleProduct[],\n actionContext: IActionContext\n) => {\n if (!Array.isArray(simpleProducts)) {\n simpleProducts = [simpleProducts];\n }\n\n simpleProducts.forEach(async product => {\n if (product) {\n product = await Promise.resolve(product);\n const productInfo = getProductInfoFromSimpleProduct(product);\n actionContext.requestContext.telemetryData[productInfo.productSku] = productInfo;\n }\n });\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Products/GetVariantsByDimensionValues',\n postReaderHook: afterGetVariantsByDimensionValues,\n preReaderHook: beforeGetVariantsByDimensionValues\n});\n","import { IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { QueryResultSettingsProxy } from './QueryResultSettingsProxy';\n\nexport interface ISearchData {\n q: string;\n skip: number;\n top: number;\n itemsPerPage: string;\n maxItems: string;\n channelId: number;\n queryResultSettings: QueryResultSettings;\n}\n\nexport const parseSearchData = (inputData: ICreateActionContext>): ISearchData => {\n // query is of type 'IDictionary | undefined', so that q and skip are not recognized by tsc\n // @ts-ignore:2339\n const { requestContext: {query: {q, top, skip}, apiSettings: {channelId}}, config: {maxItems, itemsPerPage}} = inputData;\n const queryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n return {\n q,\n skip: (skip && Number(skip) || 0),\n top: (top && Number(top) || 50),\n itemsPerPage, // TODO BUGBUG 21667361\n maxItems, // TODO BUGBUG 21667361\n channelId,\n queryResultSettings\n };\n};","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { AttributeValue, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\n\nimport { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { getAttributeValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\n/**\n * Chains getting the SelectedVariant with GetActivePrice\n */\nexport class AttributesForSelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public catalogId: number;\n public selectedProduct: SimpleProduct | undefined;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, catalogId?: number) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.catalogId = catalogId || 0;\n }\n\n public getCacheKey = () => `AttributesForSelectedVariant`;\n public getCacheObjectType = () => 'ProductAttributeValue';\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createAttributesForSelectedVariantInput = (inputData: ICreateActionContext>): AttributesForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new AttributesForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId);\n } else {\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * Calls the Retail API a get a list of dimension values for a given product.\n */\nexport async function getAttributesForSelectedVariantAction(\n input: AttributesForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n // @ts-ignore: Promise vs. ObservablePromise typing conflict\n return Promise.resolve().then(() => {\n const activeProduct:SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n\n return getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n }).then((productResult: SimpleProduct | null) => {\n const activeProduct:SimpleProduct | undefined = productResult;\n\n if (activeProduct) {\n return getAttributeValuesAsync({ callerContext: ctx, queryResultSettings: {} }, activeProduct.RecordId, input.channelId, input.catalogId);\n }\n\n return null;\n }).then((attributeValues: AttributeValue[] | null) => {\n const resultArray = attributeValues;\n if (resultArray) {\n return resultArray;\n }\n\n return [];\n }).catch((error: Error) => {\n ctx.trace(error.message);\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/product-info/get-attributes-for-selected-variant',\n action: >getAttributesForSelectedVariantAction,\n input: createAttributesForSelectedVariantInput\n});\n","import { buildCacheKey, getSimpleProducts, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { ProductDeliveryOptions, SalesOrder, SimpleProduct, TransactionType } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { getSalesOrderDetailsBySalesIdAsync, getSalesOrderDetailsByTransactionIdAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/SalesOrdersDataActions.g';\n\ninterface ISalesOrderWithHydrations {\n salesOrder: SalesOrder;\n products: SimpleProduct[];\n productDeliveryOptions?: ProductDeliveryOptions[];\n}\n\n/**\n * orderTypes Types of orders\n */\nexport const enum orderTypes {\n salesOrder = 'salesOrder',\n transaction = 'transaction'\n}\n\n/**\n * Calls the Retail API and returns the sales order\n */\nconst getSalesOrder = (orderType: string = '', orderId: string = '') => async (ctx: IActionContext): Promise => {\n return orderType === orderTypes.salesOrder\n ? getSalesOrderDetailsBySalesIdAsync({ callerContext: ctx }, orderId)\n : // Local (1) searches the retail server database, and remote (2) searches\n // on the headquarters side. All (3) and none (0) are not supported.\n getSalesOrderDetailsByTransactionIdAsync({ callerContext: ctx }, orderId, 3);\n};\n\n/**\n * Calls the Retail API and returns the products\n */\nconst getProducts = (productIds: number[] = [], channelId?: number) => async (ctx: IActionContext): Promise => {\n const productInputs = productIds.map(productId => new ProductInput(productId, ctx.requestContext.apiSettings, channelId));\n return getSimpleProducts(productInputs, ctx);\n};\n\n/**\n * Action input\n */\nexport class GetSalesOrderWithHydrationsInput implements IActionInput {\n public orderType: string;\n public orderId: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(orderType: string , orderId: string, apiSettings: ICommerceApiSettings) {\n this.orderType = orderType;\n this.orderId = orderId;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`SalesOrderWithHydrations`, this.apiSettings);\n public getCacheObjectType = () => `SalesOrderWithHydrations-${this.orderType}-${this.orderId}`;\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createSalesOrderWithHydrationsInput = (inputData: ICreateActionContext) => {\n const { salesId = '', transactionId = '' } = (inputData.requestContext.query && inputData.requestContext.query) || {};\n if (salesId) {\n return new GetSalesOrderWithHydrationsInput(orderTypes.salesOrder, salesId, inputData.requestContext.apiSettings);\n } else if (transactionId) {\n return new GetSalesOrderWithHydrationsInput(orderTypes.transaction, transactionId, inputData.requestContext.apiSettings);\n }\n throw new Error(`createSalesOrderWithHydrationsInput - No salesId or transactionId provided.`);\n};\n\n/**\n * Get sales order with hydrations action\n */\nexport async function getSalesOrderWithHydrationsAction(\n input: GetSalesOrderWithHydrationsInput,\n ctx: IActionContext\n): Promise {\n if (!ctx) {\n throw new Error(`getSalesOrderWithHydrationsAction - Action context cannot be null/undefined`);\n }\n\n const { orderType, orderId } = input;\n\n if (!orderType || !orderId) {\n ctx.trace(`[getSalesOrderWithHydrationsAction] No orderType or orderId provided.`);\n return {};\n }\n\n const salesOrder = await getSalesOrder(orderType, orderId)(ctx);\n\n if (!salesOrder) {\n ctx.trace(`[getSalesOrderWithHydrationsAction] No salesOrder found.`);\n return {};\n }\n\n // If it is salesInvoice, return salesOrder and empty products\n // tslint:disable-next-line:prefer-type-cast\n if (salesOrder.TransactionTypeValue === 15 as TransactionType.SalesInvoice) {\n return {\n salesOrder,\n products: []\n };\n }\n\n if (!salesOrder.SalesLines || !salesOrder.SalesLines.length) {\n ctx.trace(`[getSalesOrderWithHydrationsAction] No salesLine found.`);\n return {};\n }\n\n const productIds: number[] = salesOrder.SalesLines.map(salesLine => salesLine.ProductId || 0).filter(productId => productId);\n\n if (!productIds || !productIds.length) {\n ctx.trace(`[getSalesOrderWithHydrationsAction] No productId in saleLines found.`);\n return {};\n }\n\n const products = await getProducts(productIds, salesOrder.ChannelId)(ctx);\n\n if (!products || !products.length) {\n ctx.trace(`[getSalesOrderWithHydrationsAction] No product found.`);\n return {};\n }\n\n const deliveryOptions = await getDeliveryOptionsAsync({ callerContext: ctx, queryResultSettings: {} }, products.map(x => x.RecordId), {}, 4)\n .then(result => {\n return result;\n }).catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getDeliveryOptionsForCartLineItems]Error executing action`);\n throw new Error('[getDeliveryOptionsForCartLineItems]Error executing action');\n });\n\n return {\n salesOrder,\n products,\n deliveryOptions\n };\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-management/get-sales-order-with-hydrations',\n action: >getSalesOrderWithHydrationsAction,\n input: createSalesOrderWithHydrationsInput\n});","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\nimport { createObservableDataAction, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { IActiveTabState } from './tab-state';\n\nexport function createTabStateInput(result: IActiveTabState): GenericInput {\n return new GenericInput('activeTabState', result, 'IActiveTabState');\n}\n\nconst createTabStateInputInternal = (): IActionInput => {\n return createTabStateInput({});\n};\n\nexport default createObservableDataAction({\n action: >getGenericAction,\n input: createTabStateInputInternal\n});\n","import { IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { QueryResultSettings, SortColumn } from '@msdyn365-commerce/retail-proxy';\nimport { IQueryResultSettingsModuleConfig } from './IQueryResultSettingsModuleConfig';\n\n/**\n * Wrapper for query result settings, which guarantees some properties that are optional in the real subject\n * and includes some common utilities for data actions\n */\nexport class QueryResultSettingsProxy {\n // real subject\n private queryResultSettings: QueryResultSettings;\n\n get QueryResultSettings(): QueryResultSettings {\n return this.queryResultSettings;\n }\n\n /**\n * Gets the hints for the cache key based on query result settings\n */\n get cacheKeyHint(): string {\n // the factory method guarantees values are defined\n const topHint = `top-${this.queryResultSettings.Paging!.Top!}`;\n const skipHint = `skip-${this.queryResultSettings.Paging!.Skip!}`;\n const sortingHintData = (this.queryResultSettings.Sorting!.Columns || []).map((column: SortColumn) => {\n return `${column.ColumnName}--${column.IsDescending && 'desc' || 'asc'}`;\n }).join(',') || undefined;\n const sortingHint = `sortBy-${sortingHintData}`;\n return `${topHint}|${skipHint}|${sortingHint}`;\n }\n\n /**\n * Factory method for data actions\n * @param inputData input data\n */\n public static fromInputData(inputData: ICreateActionContext>): QueryResultSettingsProxy {\n const { requestContext, config } = inputData;\n return QueryResultSettingsProxy.fromModuleData(requestContext, config as IQueryResultSettingsModuleConfig);\n }\n\n /**\n * Factory method for modules\n * @param requestContext requestContext\n * @param config module config from props\n */\n public static fromModuleData(requestContext: IRequestContext, config: IQueryResultSettingsModuleConfig): QueryResultSettingsProxy {\n const sortingCriteria = config && config.sortingCriteria || undefined;\n const query = requestContext && requestContext.query;\n const top = query && query.top || undefined;\n const skip = query && query.skip || undefined;\n\n const queryResultSettings = {\n Paging: {\n Skip: (skip && Number(skip) || 0),\n Top: (top && Number(top) || config?.itemsPerPage || 50)\n },\n Sorting: sortingCriteria || {}\n };\n\n return new QueryResultSettingsProxy(queryResultSettings);\n }\n\n /**\n * Factory method\n */\n public static getDefault(): QueryResultSettingsProxy {\n return new QueryResultSettingsProxy({ Paging: {}, Sorting: {} });\n }\n\n /**\n * private constructor, expect instances to be created with the factory method\n */\n private constructor(\n queryResultSettings: QueryResultSettings\n ) {\n this.queryResultSettings = queryResultSettings;\n }\n}","import { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionContext, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { Category } from '@msdyn365-commerce/retail-proxy';\nimport { TextValueTranslation } from '@msdyn365-commerce/retail-proxy';\nimport getCategoryAction, { CategoriesInput as RawCategoriesInput } from './get-categories';\nimport { getCategoryUrl } from './utilities/Url-builder';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input for get-categories data action\n */\nexport class CategoriesInput implements IActionInput {\n public readonly maxItems: number;\n public readonly channelId: number;\n private readonly sitePath: string;\n private _mappedToHierarchy: boolean;\n private apiSettings: ICommerceApiSettings;\n private locale?:string;\n\n constructor(context: IRequestContext, mappedToHierarchy: boolean, maxItems?: number) {\n this._mappedToHierarchy = mappedToHierarchy;\n this.maxItems = maxItems || 250;\n this.channelId = context && context.apiSettings && context.apiSettings.channelId ? +context.apiSettings.channelId : 0;\n this.sitePath = context && context.sitePath || '';\n this.apiSettings = context.apiSettings;\n this.locale = context.locale || '';\n }\n\n public getCacheKey = () => buildCacheKey(`${this.channelId}|${this.sitePath}|top-${this.maxItems || 250}`, this.apiSettings, this.locale);\n public getCacheObjectType = () => (this._mappedToHierarchy ? 'CategoryHierarchy' : 'Category');\n public dataCacheType = (): CacheType => 'application';\n public getLocale = ():string => this.locale || '';\n}\n\nconst getFriendlyName = (locale?: string, nameTranslations?: TextValueTranslation[]): string | undefined => {\n let nameTranslation: TextValueTranslation | undefined;\n if (locale && nameTranslations && nameTranslations.length > 0) {\n nameTranslation = nameTranslations.find(item => item.Language!.toLowerCase() === locale.toLowerCase());\n }\n\n return nameTranslation && nameTranslation.Text;\n};\n\nexport interface ICategoryMap {\n [RecordId: number]: CategoryHierarchy;\n}\n\n/**\n * Creates a hierarchy of categories based on the ParentCategory property\n * @param categoryList Categories that will be converted into a hierarchy\n * @returns Hierarchy of categories in array\n */\nexport const mapCategoryToHierarchy = (categoryList: Category[], ctx: IActionContext, locale?: string ): CategoryHierarchy[] => {\n if (!categoryList || !categoryList.length) {\n return [];\n }\n\n const categoryMap: ICategoryMap = categoryList.reduce((memo: ICategoryMap, category: Category) => {\n const localName = getFriendlyName(locale, category.NameTranslations);\n const categoryHierarchy = { ...category };\n categoryHierarchy.NeutralizedName = category.Name;\n categoryHierarchy.Name = localName || categoryHierarchy.NeutralizedName;\n memo[category.RecordId] = categoryHierarchy;\n return memo;\n }, {});\n\n let zeroCategory = categoryMap[0];\n\n Object.keys(categoryMap).forEach((id: string) => {\n const element = categoryMap[+id];\n const parentId = element.ParentCategory;\n element.Url = getCategoryUrl(element, ctx, categoryMap);\n if (parentId === 0) {\n zeroCategory = element;\n return;\n }\n\n const parent = parentId && categoryMap[parentId];\n if (parent) {\n parent.Children = parent.Children || [];\n parent.Children.push(element);\n }\n });\n\n return (zeroCategory && zeroCategory.Children) || [];\n};\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createCategoriesHierarchyInput = (inputData: ICreateActionContext>): IActionInput => {\n const topItems = inputData.config && inputData.config.topCategories && parseInt(inputData.config.topCategories, 10);\n return new CategoriesInput(inputData.requestContext, true, topItems);\n};\n\n/**\n * Calls the Retail API and returns all the categories as a hierarchy\n */\nexport async function getCategoryHierarchyAction(input: CategoriesInput, ctx: IActionContext): Promise {\n const categories = await getCategoryAction(\n new RawCategoriesInput(ctx.requestContext, false, input.maxItems),\n ctx\n );\n return mapCategoryToHierarchy(categories, ctx, input.getLocale());\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-categories-hierarchy',\n action: >getCategoryHierarchyAction,\n input: createCategoriesHierarchyInput\n});\n","import {\n buildCacheKeyWithUrlTokens,\n getFullOrderTemplate,\n GetFullOrderTemplateInput,\n IQueryResultSettingsModuleConfig,\n OrderTemplate,\n QueryResultSettingsProxy\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Input class for getActiveOrderTemplateLines data action\n */\nexport class ActiveOrderTemplateLinesInput implements IActionInput {\n public requestContext: IRequestContext;\n public orderTemplateId: string;\n public queryResultSettings: IQueryResultSettings;\n\n constructor(requestContext: IRequestContext, config: IQueryResultSettingsModuleConfig) {\n if (!requestContext.query?.id) {\n throw new Error('Failed to get order template id from the query.');\n }\n if (!config) {\n throw new Error('Failed to get order template module configuration');\n }\n this.orderTemplateId = requestContext.query.id;\n this.queryResultSettings = QueryResultSettingsProxy.fromModuleData(requestContext, config).QueryResultSettings;\n\n this.queryResultSettings.count = true;\n this.requestContext = requestContext;\n }\n\n public getCacheKey = (): string => buildCacheKeyWithUrlTokens('ActiveOrderTemplateLines', this.requestContext);\n public getCacheObjectType = (): string => 'ActiveOrderTemplateLines';\n public dataCacheType = (): CacheType => 'instance';\n public shouldCacheOutput = () => false;\n}\n\n/**\n * Calls the Retail API and returns a ProductList object based on the passed GetCartInput\n */\nexport async function getActiveOrderTemplateLines(input: ActiveOrderTemplateLinesInput, context: IActionContext): Promise {\n return getFullOrderTemplate(new GetFullOrderTemplateInput(input.orderTemplateId, input.queryResultSettings), context);\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-template/order-template/get-order-template-lines',\n action: >getActiveOrderTemplateLines,\n input: (context: ICreateActionContext) => {\n if (!context.config) {\n throw new Error('Failed to get order template module configuration');\n }\n return new ActiveOrderTemplateLinesInput(context.requestContext, context.config);\n }\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { IMSDyn365Window } from '@msdyn365-commerce/core-internal';\nimport { Cart, CartLine, IAddCartLinesParam, IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo, TelemetryEvent } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * Saves info on cart lines added before calling data action\n * @param inputs Data action inputs\n * @param actionContext Action context\n */\nconst beforeAddToCart = async (inputs: IActionInput | IActionInput[], actionContext: IActionContext) => {\n try {\n const actionInput = Array.isArray(inputs) ? inputs[0] : inputs;\n\n // If cart lines were added\n if (actionInput.queryParams && typeof actionInput.queryParams === 'function') {\n const addCartLinesParams = actionInput.queryParams();\n if (addCartLinesParams && addCartLinesParams.cartLines) {\n // Save info on added cart lines for post data action hook to pick up\n actionContext.requestContext.telemetryData.addedCartLines = addCartLinesParams.cartLines;\n return;\n }\n }\n actionContext.telemetry.debug('AddToCart pre-data action hook failed - No added cart lines found');\n } catch (e) {\n actionContext.telemetry.debug('AddToCart pre-data action hook failed.', e);\n }\n};\n\n/**\n * Fires an AddToCart event after AddCartLines data action completed\n * @param _inputs Data action inputs\n * @param cart New cart object after cart lines have been added\n * @param actionContext Action context\n */\nconst afterAddToCart = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const cartObject = Array.isArray(cart) ? cart[0] : cart;\n const addedCartLines = actionContext.requestContext.telemetryData.addedCartLines;\n let addedProducts: IProductInfo[] = [];\n\n // Collect info on products added to cart\n if (addedCartLines) {\n try {\n addedProducts = await getProductInfoFromCartLinesAsync(addedCartLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('AddCartLines post-data action hook failed to process cart lines.', error);\n }\n }\n\n // Fire AddToCart event\n window._msdyn365.telemetry.logEvent(TelemetryEvent.AddToCart, {\n cartId: cartObject.Id,\n cartVersion: cartObject.Version ? cartObject.Version.toString() : '',\n products: addedProducts,\n orderId: cartObject.OrderNumber ? cartObject.OrderNumber.toString() : ''\n });\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/AddCartLines',\n postReaderHook: afterAddToCart,\n preReaderHook: beforeAddToCart\n});\n","import { IActionContext } from '@msdyn365-commerce/core';\nimport MsDyn365 from '@msdyn365-commerce/core';\nimport { action, computed, observable } from 'mobx';\nimport { IListMapViewState, ILoadMapApiInput, IStoreInfo, IStoreSelectionStateContext, IStoreSelectorLocation, IStoreSelectorStateManager } from './i-store-selection-state-manager';\n\n/**\n * Abstract instance of IStoreSelectorStateManager with base implementation\n * of everything except the geoLocate function\n */\nexport abstract class BaseStoreSelectorStateManager implements IStoreSelectorStateManager {\n\n @computed public get isDialogOpen(): Readonly {\n return this._context !== undefined;\n }\n @computed public get context(): Readonly {\n return this._context;\n }\n\n @observable public isMapApiLoaded?: boolean;\n @observable public selectedStoreLocationId?: string;\n @observable public preferredStore?: IStoreInfo;\n @observable public listMapViewState: IListMapViewState = { displayList: true, displayMap: false };\n @observable public isMapModuleLoaded?: boolean;\n @observable public lastInlineShownStoreInfo?: IStoreInfo;\n @observable protected _context?: IStoreSelectionStateContext;\n private preferredStoreLocalStorageKey: string = '_msdyn365__preferredStore_';\n\n constructor() {\n this.isMapModuleLoaded = false;\n const value = this._readFromToCookie(this.preferredStoreLocalStorageKey);\n try {\n const storeInfo: IStoreInfo | undefined = value ? JSON.parse(value) : undefined;\n if(storeInfo) {\n this.preferredStore = storeInfo;\n }\n } catch {\n this.preferredStore = undefined;\n }\n\n }\n\n public abstract geoLocate(searchTerm: string, actionContext: IActionContext): Promise;\n\n public abstract loadMapApi(input: ILoadMapApiInput): Promise;\n\n @action\n public async toggleListMapViewState(): Promise {\n this.listMapViewState = {\n displayList: !this.listMapViewState.displayList,\n displayMap: !this.listMapViewState.displayMap\n };\n }\n\n @action\n public async setMapModuleLoaded(input: boolean): Promise {\n this.isMapModuleLoaded = input;\n }\n\n @action\n public async setOrgUnitStoreInformation(input: IStoreSelectionStateContext): Promise {\n this._context = input;\n }\n\n @action\n public async setSelectedStoreLocationId(storeId: string | undefined): Promise {\n this.selectedStoreLocationId = storeId;\n }\n\n @action\n public async setPreferredStoreLocation(storeId?: string, storeName?: string | undefined, writeToCookie: boolean = false, latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: storeId, StoreName: storeName, Latitude: latitude, Longitude: longitude };\n this.preferredStore = storeInfo;\n if (writeToCookie) {\n this._writeToCookie(this.preferredStoreLocalStorageKey, JSON.stringify(storeInfo));\n }\n }\n\n @action\n public async setLastInlineStoreInfo(latitude?: number, longitude?: number): Promise {\n const storeInfo: IStoreInfo = { StoreId: '', StoreName: '', Latitude: latitude, Longitude: longitude };\n this.lastInlineShownStoreInfo = storeInfo;\n }\n\n @action\n public async clearPreferredStore(writeToCookie: boolean): Promise {\n this.preferredStore = undefined;\n if (writeToCookie) {\n this._removeCookie(this.preferredStoreLocalStorageKey);\n }\n }\n\n @action\n public async openDialog(input: IStoreSelectionStateContext): Promise {\n if (this._context && this._context.id === input.id) {\n throw new Error('Dialog is already opened');\n }\n\n this._context = input;\n }\n\n @action\n public async closeDialog(): Promise {\n this._context = undefined;\n }\n\n private _removeCookie(key: string): void {\n if (!key) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.removeItem(key);\n }\n }\n\n private _writeToCookie(key: string, value: string | undefined): void {\n if (!key || !value) {\n return;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n storage.setItem(key, value);\n }\n }\n\n private _readFromToCookie(key: string): string | undefined {\n if (!key) {\n return undefined;\n }\n if (MsDyn365.isBrowser) {\n const storage = window.localStorage;\n const cookieValue = storage.getItem(key);\n if (cookieValue) {\n return cookieValue;\n }\n }\n\n return undefined;\n }\n}","import { action } from 'mobx';\n\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { BaseStoreSelectorStateManager } from './base-store-selector-state-manager';\nimport { ILoadMapApiInput, IStoreSelectorLocation } from './i-store-selection-state-manager';\nimport { IMapWindow, MapLocationsResult } from './models/map-data';\n\ndeclare const window: IMapWindow;\n/**\n * Instance of IStoreSelectorStateManager manager that uses Map service\n * for geo location\n */\nexport class MapStoreSelectorStateManager extends BaseStoreSelectorStateManager {\n private readonly SERVICE_ENDPOINT: string = 'https://dev.virtualearth.net/REST/v1/';\n private readonly MAP_API_ENDPOINT: string = 'https://www.bing.com/api/maps/mapcontrol?callback=mapAPIReady';\n\n @action\n public async geoLocate(searchTerm: string, actionContext: IActionContext): Promise {\n if (!searchTerm ||\n !actionContext.requestContext.channel ||\n !actionContext.requestContext.channel.BingMapsApiKey ||\n !actionContext.requestContext.channel.BingMapsEnabled) {\n return undefined;\n }\n\n const jsonp = `mapSearchCallback_${crypto.getRandomValues(new Uint32Array(1))[0]}`;\n const query = encodeURI(searchTerm);\n const key = encodeURI(actionContext.requestContext.channel.BingMapsApiKey);\n\n const geolocationApiUrl = actionContext.requestContext.app && actionContext.requestContext.app.config && actionContext.requestContext.app.config.geolocationApiUrl;\n const requestUrl = `${geolocationApiUrl ? geolocationApiUrl : this.SERVICE_ENDPOINT}/Locations?query=${query}&key=${key}&jsonp=${jsonp}`;\n\n return new Promise((resolve) => {\n const script = document.createElement('script');\n script.setAttribute('type', 'text/javascript');\n script.setAttribute('src', requestUrl);\n\n window[jsonp] = (data: MapLocationsResult) => {\n delete window[jsonp];\n document.body.removeChild(script);\n\n if (data && data.resourceSets && data.resourceSets.length > 0 && data.resourceSets[0].resources.length > 0) {\n resolve({\n latitude: data.resourceSets[0].resources[0].point.coordinates[0],\n longitude: data.resourceSets[0].resources[0].point.coordinates[1]\n });\n }\n\n resolve(undefined);\n };\n\n document.body.appendChild(script);\n });\n\n }\n\n @action\n public async loadMapApi(input: ILoadMapApiInput): Promise {\n const isScriptAlreadyLoaded = document?.getElementById('msdyn_map-api-script') ? true : false;\n\n if (isScriptAlreadyLoaded) {\n // Prevents from loading multiple script into the body\n return Promise.resolve();\n }\n\n const url = `${this.MAP_API_ENDPOINT}${input.key ? `&key=${input.key}` : ''}${input.lang ? `&setLang=${input.lang}` : ''}${input.market ? `&setMkt=${input.market}` : ''}`;\n\n return new Promise((resolve, reject) => {\n const script = document?.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.src = url;\n script.id = 'msdyn_map-api-script';\n if (window) {\n window.mapAPIReady = () => {\n this.isMapApiLoaded = true;\n resolve();\n };\n }\n script.onerror = (error: string | Event) => {\n reject(error);\n };\n document?.body?.appendChild(script);\n });\n }\n\n}","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\nimport { IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IStoreSelectorStateManager } from './i-store-selection-state-manager';\nimport { MapStoreSelectorStateManager } from './map-store-selector-state-manager';\n\nexport function createStoreSelectorStateInput(result: IStoreSelectorStateManager): GenericInput {\n return new GenericInput('mapSSSM', result, 'IStoreSelectorStateManager');\n}\n\nconst createStoreSelectorStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createStoreSelectorStateInput(new MapStoreSelectorStateManager());\n};\n\nexport default createObservableDataAction({\n action: >getGenericAction,\n input: createStoreSelectorStateInputInternal\n});\n","import { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICommerceApiSettings, ICreateActionContext, IDictionary, IGeneric } from '@msdyn365-commerce/core';\nimport { getByIdsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey, generateProductImageUrl } from './utilities/utils';\n\n/**\n * Product Input\n */\nexport class ProductInput implements IActionInput {\n public productId: number;\n public channelId: number;\n private apiSettings: ICommerceApiSettings;\n\n constructor(productId: number | string, apiSettings: ICommerceApiSettings, channelId?: number) {\n this.apiSettings = apiSettings;\n this.productId = +productId;\n this.channelId = channelId || apiSettings.channelId;\n }\n\n public getCacheKey = () => buildCacheKey(`RecordId-${this.productId.toString()}-ChannelId-${this.channelId.toString()}`, this.apiSettings);\n public getCacheObjectType = () => 'SimpleProduct';\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createSimpleProductsInput = (inputData: ICreateActionContext>): IActionInput[] => {\n let productIds = inputData.config && inputData.config.productIds;\n if (!productIds) {\n return [];\n }\n\n productIds = typeof productIds === 'string' ? productIds.split(',') : productIds;\n return !Array.isArray(productIds)\n ? []\n : productIds.map((productId: string) => {\n return new ProductInput(productId, inputData.requestContext.apiSettings);\n });\n};\n\n/**\n * Calls the Retail API and returns the product based on the passed ProductInput\n */\nexport async function getSimpleProductsAction(inputs: ProductInput[], ctx: IActionContext): Promise {\n if (!Array.isArray(inputs) || inputs.length === 0) {\n ctx.trace('[getSimpleProductsAction] Invalid or empty inputs passed.');\n return [];\n }\n\n const productIdMapping: IDictionary = {};\n const productIds = inputs.map((input, idx) => {\n productIdMapping[input.productId] = idx;\n return input.productId;\n });\n\n return getByIdsAsync({ callerContext: ctx, queryResultSettings: QueryResultSettingsProxy.getDefault().QueryResultSettings }, inputs[0].channelId, productIds).then(products => {\n const mappedProducts = products.map(product => {\n try {\n const newImageUrl = generateProductImageUrl(product, ctx.requestContext.apiSettings);\n\n if (newImageUrl) {\n product.PrimaryImageUrl = newImageUrl;\n }\n\n return product;\n } catch (e) {\n ctx.trace('[getSimpleProductsAction] Unable to update ImageURL for Product');\n }\n })\n .reduce((memo: SimpleProduct[], product: SimpleProduct | undefined) => {\n if (!product) {\n return memo;\n }\n const idx = productIdMapping[product.RecordId];\n memo[idx] = product;\n return memo;\n }, []);\n\n // NOTE: This is not an ideal fix, but will resolve all current issues\n return inputs.map(input => {\n const foundProduct = mappedProducts.find(product => product && product.RecordId === input.productId);\n return foundProduct || {};\n });\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-simple-products',\n action: >getSimpleProductsAction,\n input: createSimpleProductsInput,\n isBatched: true\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { OrgUnitLocation, SearchArea } from '@msdyn365-commerce/retail-proxy';\nimport { getOrgUnitLocationsByAreaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\n\ninterface IOrgUnitLocations {\n orgUnitLocations: OrgUnitLocation[];\n}\n\nconst searchArea: SearchArea = {\n Radius: Math.max(),\n DistanceUnitValue: 0 // 0 is miles\n};\n\n/**\n * Calls the Retail API and returns the orgUnitLocations\n */\nconst getOrgUnitLocations = () => async (ctx: IActionContext): Promise => {\n return getOrgUnitLocationsByAreaAsync(\n {\n callerContext: ctx,\n queryResultSettings: {}\n },\n searchArea\n );\n};\n\n/**\n * Action input\n */\nexport class GetOrgUnitLocationsInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`OrgUnitLocations`, this.apiSettings);\n public getCacheObjectType = () => `OrgUnitLocations`;\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createOrgUnitLocationsInput = (inputData: ICreateActionContext>) => {\n return new GetOrgUnitLocationsInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * Get orgUnitLocations action\n */\nexport async function getOrgUnitLocationsAction(\n input: GetOrgUnitLocationsInput,\n ctx: IActionContext\n): Promise {\n if (!ctx) {\n throw new Error(`getOrgUnitLocationsAction - Action context cannot be null/undefined`);\n }\n\n let orgUnitLocations: OrgUnitLocation[] = [];\n\n try {\n orgUnitLocations = await getOrgUnitLocations()(ctx);\n } catch (error) {\n throw error;\n }\n\n return { orgUnitLocations: orgUnitLocations };\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-management/get-org-unit-locations',\n action: >getOrgUnitLocationsAction,\n input: createOrgUnitLocationsInput\n});\n","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { OrderTemplate } from '../utilities/order-templates';\nimport { QueryResultSettingsProxy } from '../utilities/QueryResultSettingsProxy';\nimport getFullOrderTemplates, { GetFullOrderTemplatesInput } from './get-full-order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action\n */\nexport class GetOrderTemplatesPreviewInput implements IActionInput {\n public queryResultSettings: IQueryResultSettings;\n\n constructor(queryResultSettings: IQueryResultSettings) {\n this.queryResultSettings = queryResultSettings;\n this.queryResultSettings.count = true;\n this.queryResultSettings.Paging!.Top = 4;\n }\n\n public getCacheKey = () => 'GetOrderTemplatesPreview';\n public getCacheObjectType = () => 'GetOrderTemplatesPreview';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the GetOrderTemplate method\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetOrderTemplatesPreviewInput = (inputData: ICreateActionContext): GetOrderTemplatesPreviewInput => {\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n return new GetOrderTemplatesPreviewInput(queryResultSettings);\n};\n\n/**\n * The action method for the GetOrderTemplatesPreview data action\n * @param input The action input\n * @param context The action context\n */\nexport async function getOrderTemplatesPreview(input: GetOrderTemplatesPreviewInput, context: IActionContext): Promise {\n return getFullOrderTemplates(new GetFullOrderTemplatesInput(input.queryResultSettings), context);\n}\n\n/**\n * The GetOrderTemplatesPreview Data Action\n * Returns order templates\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-order-templates-preview',\n action: >getOrderTemplatesPreview,\n input: createGetOrderTemplatesPreviewInput\n});","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ChannelDeliveryOptionConfiguration } from '@msdyn365-commerce/retail-proxy';\nimport { getChannelDeliveryOptionConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get channel delivery option configuration data action\n */\nexport class GetChannelDeliveryConfigurationInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, accountNumber?: string) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('ChannelDeliveryConfiguration', this.apiSettings);\n public getCacheObjectType = () => 'ChannelDeliveryConfiguration';\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): GetChannelDeliveryConfigurationInput => {\n const { apiSettings } = inputData.requestContext;\n if (!apiSettings) {\n throw new Error('[getChannelDeliveryOptionConfiguration][createInput]: API setting not available.');\n }\n\n return new GetChannelDeliveryConfigurationInput(apiSettings);\n};\n\nconst getChannelDeliveryOptionConfigurationAction = async (input: GetChannelDeliveryConfigurationInput, ctx: IActionContext): Promise => {\n if (input) {\n return getChannelDeliveryOptionConfigurationAsync({ callerContext: ctx }).then(response => {\n return response;\n });\n }\n\n ctx.trace('[get-channel-delivery-option-configuration]Invalid input passed to action');\n return {};\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-channel-delivery-option-configuration',\n action: >getChannelDeliveryOptionConfigurationAction,\n input: createInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ChannelIdentity } from '@msdyn365-commerce/retail-proxy';\nimport { getChannelsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\ninterface IChannelIdentity {\n channelIdentities: ChannelIdentity[];\n}\n\n/**\n * Calls the Retail API and returns the channels\n */\nconst getChannels = () => async (ctx: IActionContext): Promise => {\n return getChannelsAsync(\n {\n callerContext: ctx\n }\n );\n};\n\n/**\n * Action input\n */\nexport class GetChannelIdentitiesInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`ChannelIdentities`, this.apiSettings);\n public getCacheObjectType = () => `ChannelIdentities`;\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createChannelIdentitiesInput = (inputData: ICreateActionContext>) => {\n return new GetChannelIdentitiesInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * Get channels action\n */\nexport async function getChannelsAction(\n input: GetChannelIdentitiesInput,\n ctx: IActionContext\n): Promise {\n if (!ctx) {\n throw new Error(`getChannelsAction - Action context cannot be null/undefined`);\n }\n\n let channels: ChannelIdentity[] = [];\n\n try {\n channels = await getChannels()(ctx);\n } catch (error) {\n throw error;\n }\n\n return { channelIdentities: channels };\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/order-management/get-channels',\n action: >getChannelsAction,\n input: createChannelIdentitiesInput\n});\n","import { createObservableDataAction, IAction } from '@msdyn365-commerce/core';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetTenderTypesInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { TenderType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Get Tender Types Data Action\n */\nexport default createObservableDataAction({\n action: >retailAction,\n input: () => createGetTenderTypesInput({})\n});\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { createObservableDataAction } from '@msdyn365-commerce/action-internal';\r\nimport { IAction, IActionContext } from '@msdyn365-commerce/core-internal';\r\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { ProductSearchCriteria, ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n// @ts-ignore\r\nimport { CATEGORY_PAGE_NAME } from '@msdyn365-commerce/runtime-internal/dist/lib/consts';\r\n// @ts-ignore\r\nimport { getProductImageUrls } from '@msdyn365-commerce/runtime-internal/dist/lib/utils/product-list-utils';\r\nimport { ProductListInput } from '@msdyn365-commerce/runtime-internal/dist/types/hydrators/hydrator-action-inputs';\r\n\r\nexport const getProductsByCategoryList = async (input: ProductListInput, context: IActionContext): Promise => {\r\n let categoryId: number;\r\n const urlTokens = context.requestContext.urlTokens;\r\n\r\n // If the category ID has been provided from the list metadata use it, otherwise grab the category ID from context\r\n if (input.listMetadata.categoryIds && input.listMetadata.categoryIds.length > 0) {\r\n categoryId = input.listMetadata.categoryIds[0];\r\n } else if (urlTokens && urlTokens.pageType && urlTokens.pageType.toLowerCase() === CATEGORY_PAGE_NAME && urlTokens.recordId) {\r\n categoryId = +urlTokens.recordId;\r\n } else if (urlTokens && urlTokens.categories && urlTokens.categories.length > 0) {\r\n categoryId = +urlTokens.categories[0];\r\n } else {\r\n // Unable to determine category from list meta data or context\r\n throw new Error('CategoryId Missing for ProductsByCategory List');\r\n }\r\n context.telemetry.debug(`Category Id input to ProductsByCategory action : ${categoryId}`);\r\n const productSearchCriteria: ProductSearchCriteria = {\r\n Context: {\r\n ChannelId: +input.channelId,\r\n CatalogId: +input.catalogId\r\n },\r\n CategoryIds: [categoryId],\r\n IncludeAttributes: true\r\n };\r\n\r\n return searchByCriteriaAsync(\r\n { callerContext: context, queryResultSettings: { Paging: { Top: input.listMetadata.pageSize || 10 } } },\r\n productSearchCriteria\r\n )\r\n .then((products: ProductSearchResult[]) => {\r\n context.telemetry.debug('Products returned by ProductByCategory action', products);\r\n return getProductImageUrls(products, context.requestContext.apiSettings);\r\n })\r\n .catch(error => {\r\n context.telemetry.error(`Error running ProductByCategory action: ${error}`);\r\n throw new Error(error);\r\n });\r\n};\r\n\r\nexport const getProductsByCategoryListAction = createObservableDataAction({\r\n action: >getProductsByCategoryList,\r\n id: '@msdyn365-commerce/products-by-category'\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { clubMembershipUpdateInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmClubMembershipUpdateResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetMembership Input Action\r\n */\r\nexport class MembershipEditInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IEditMembershipInput`;\r\n public getCacheObjectType = () => 'IEditMembershipInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'none';\r\n}\r\n\r\nexport interface IMembershipEditMembershipInput extends IrsmClubMembershipUpdateResponse { }\r\n\r\nexport interface IInputRequirements {\r\n WineClubId: string;\r\n CreditCard: number;\r\n ShipToAddress: number;\r\n DeliveryPreference: string;\r\n PickupLocationId: string;\r\n}\r\n\r\nexport const createEditMembershipInput = (\r\n args: Msdyn365.ICreateActionContext,\r\n { WineClubId, CreditCard, DeliveryPreference, ShipToAddress, PickupLocationId }: IInputRequirements,\r\n): MembershipEditInput => {\r\n return new MembershipEditInput(\r\n clubMembershipUpdateInput(\r\n WineClubId,\r\n CreditCard,\r\n ShipToAddress,\r\n DeliveryPreference,\r\n PickupLocationId\r\n )\r\n );\r\n};\r\n\r\nexport async function getEditMembershipAction(\r\n input: MembershipEditInput,\r\n ctx: Msdyn365.IActionContext,\r\n): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >getEditMembershipAction,\r\n input: createEditMembershipInput,\r\n});\r\n","import { ProductDimensionFull } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductDimension, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport getSelectedVariant, { SelectedVariantInput } from './get-selected-variant';\nimport { getSelectedProductIdFromActionInput } from './utilities/utils';\n\nimport { getDimensionValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\n/**\n * Input class for the getDimensionsForSelectedVariant data action\n */\nexport class GetDimensionsForSelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public matchingDimensionValues: ProductDimension[];\n\n constructor(productId: number, channelId: number, matchingDimensionValues?: ProductDimension[]) {\n this.productId = productId;\n this.channelId = channelId;\n this.matchingDimensionValues = matchingDimensionValues || [];\n }\n\n public getCacheKey = () => `DimensionsForSelectedVariant`;\n public getCacheObjectType = () => 'DimensionsForSelectedVariantInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Create input method for the getDimensionsForSelectedVariant data action\n * @param inputData The input data passed to the createInput method\n */\nconst createDimensionsForSelectedVariantInput = (inputData: ICreateActionContext>): SelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new GetDimensionsForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, []);\n } else {\n throw new Error('Unable to create DimensionsForSelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * Action Method for the getDimensionsForSelectedVariant Data Action\n */\nasync function getDimensionsForSelectedVariantAction(\n input: GetDimensionsForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId, input.matchingDimensionValues);\n\n const activeProduct: SimpleProduct | null = await getSelectedVariant(selectedVariantInput, ctx);\n\n if (activeProduct && activeProduct.Dimensions && activeProduct.Dimensions.length > 0) {\n const results: ProductDimensionFull[] = [];\n\n for (const dimension of activeProduct.Dimensions) {\n const dimensionValues = await getDimensionValuesAsync(\n { callerContext: ctx, queryResultSettings: {} },\n activeProduct.MasterProductId ? activeProduct.MasterProductId : activeProduct.RecordId,\n input.channelId,\n dimension.DimensionTypeValue,\n input.matchingDimensionValues.filter(value => value.DimensionTypeValue !== dimension.DimensionTypeValue),\n // @ts-ignore: KitVariantResolution context should be nullable\n null\n );\n\n const fullDimension: ProductDimensionFull = {\n ...dimension,\n DimensionValues: dimensionValues,\n };\n\n results.push(fullDimension);\n }\n\n return results;\n }\n\n return [];\n}\n\n/**\n * The GetDimensionsForSelectedVariantDataAction\n * Get the currently selected Variant via the getSelectedVariant data action, and the gets the\n * available product dimensions for the variant via the getDimensionValues RetailServer API\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-dimensions/for-selected-variant',\n action: >getDimensionsForSelectedVariantAction,\n input: createDimensionsForSelectedVariantInput\n});\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n */\r\n\r\nimport { createObservableDataAction } from '@msdyn365-commerce/action-internal';\r\nimport { IAction, IActionContext } from '@msdyn365-commerce/core-internal';\r\nimport { readAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\r\nimport { getProductRatingsAsync, searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { getElementsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/RecommendationsDataActions.g';\r\nimport {\r\n Cart,\r\n ProductSearchCriteria,\r\n ProductSearchResult,\r\n RecommendationCriteria,\r\n RecommendedElement\r\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { IContext } from '@msdyn365-commerce/retail-proxy/dist/Interfaces';\r\n// @ts-ignore\r\nimport { CATEGORY_PAGE_NAME, PDP_PAGE_NAME, PICKS_FOR_YOU_LIST } from '@msdyn365-commerce/runtime-internal/dist/lib/consts';\r\n// @ts-ignore\r\nimport * as getSimpleProducts from '@msdyn365-commerce/runtime-internal/dist/lib/hydrators/get-simple-products';\r\n// @ts-ignore\r\nimport { ProductInput } from '@msdyn365-commerce/runtime-internal/dist/lib/hydrators/get-simple-products'; // eslint-disable-line\r\n// @ts-ignore\r\nimport { getProductImageUrls, orderProductSearchResults } from '@msdyn365-commerce/runtime-internal/dist/lib/utils/product-list-utils';\r\nimport { ProductListInput } from '@msdyn365-commerce/runtime-internal/dist/types/hydrators/hydrator-action-inputs';\r\nimport * as semver from 'semver';\r\n\r\nconst actionInputError = (missingType: string) => {\r\n throw new Error(`Input ${missingType} is missing and required to run GetProductsByRecommendationId action`);\r\n};\r\n\r\nconst enum CartTokenPrefix {\r\n Auth = 't',\r\n Anon = 'p'\r\n}\r\n\r\nconst MIN_RETAIL_PROXY_VERSION_FOR_PRODUCT_SEARCH_RESULTS = '9.16.8';\r\n\r\n/**\r\n * Constructs the category context for a recommendation call. If page context is selected the category dervided from page context\r\n * (current page) will be used. If instead a spefic category is chosen as context that category will be used instead.\r\n *\r\n * @param recommendationCriteria The criteria that will be used for the recommendation API call\r\n * @param input The ProductListInput provided to the action\r\n * @param context The current action context\r\n */\r\nconst getCategoryIdForReco = (recommendationCriteria: RecommendationCriteria, input: ProductListInput, context: IActionContext) => {\r\n let categoryIds: number[] = [];\r\n\r\n if (input.listMetadata.includePageContext || !input.listMetadata.categoryIds || input.listMetadata.categoryIds.length === 0) {\r\n const urlTokens = context.requestContext.urlTokens;\r\n\r\n if (urlTokens && urlTokens.pageType && urlTokens.pageType.toLowerCase() === CATEGORY_PAGE_NAME) {\r\n if (urlTokens.recordId) {\r\n categoryIds = [+urlTokens.recordId];\r\n }\r\n }\r\n } else {\r\n // Use category from a specific context if provided\r\n if (input.listMetadata.categoryIds && input.listMetadata.categoryIds.length > 0) {\r\n categoryIds = input.listMetadata.categoryIds;\r\n }\r\n }\r\n\r\n recommendationCriteria.CategoryIds = categoryIds;\r\n};\r\n\r\n/**\r\n * Fetches the current active cart to be used when cart context\r\n * is selected for a reco list\r\n *\r\n * @param ctx The current action context\r\n */\r\nconst getCart = async (ctx: IActionContext): Promise => {\r\n let cart;\r\n if (ctx.requestContext && ctx.requestContext.cookies) {\r\n const cookies = ctx.requestContext && ctx.requestContext.cookies;\r\n const cartCookie = cookies.getCartCookie();\r\n const cartCookieParts = cartCookie.split(':');\r\n if (cartCookieParts && cartCookieParts.length === 2) {\r\n if (\r\n (ctx.requestContext.user.isAuthenticated && cartCookieParts[0] === CartTokenPrefix.Auth) ||\r\n (!ctx.requestContext.user.isAuthenticated && cartCookieParts[0] === CartTokenPrefix.Anon)\r\n ) {\r\n const readCart = await readAsync({ callerContext: ctx }, cartCookieParts[1]);\r\n if (readCart && readCart.Id) {\r\n cart = readCart;\r\n }\r\n }\r\n }\r\n }\r\n return cart;\r\n};\r\n\r\n/**\r\n * Constructs the product context for a recommendation call. If cart context is selected, products currently in the active cart will\r\n * be used as the product ids for the recommendation call. Otherwise, if page context is selected the product derived from page context will be used.\r\n * Finally, if specific context is selected, a product id will be given to us from the ProductListInput which will be used to seed the product id for the reco call.\r\n *\r\n * @param recommendationCriteria The criteria that will be used for the recommendation API call\r\n * @param input The ProductListInput provided to the action\r\n * @param context The current action context\r\n */\r\nconst getProductIdForReco = async (recommendationCriteria: RecommendationCriteria, input: ProductListInput, context: IActionContext) => {\r\n let productIds: number[] = [];\r\n // If include cart is set true, fetch the product ids in the cart to append to the product ID list for the recommendation call\r\n if (input.listMetadata.includeCart) {\r\n const cart = await getCart(context);\r\n if (cart && cart.CartLines) {\r\n const validCartLines = cart.CartLines.filter(element => element.ProductId !== undefined);\r\n const cartProductIds = validCartLines.map(product => product.ProductId);\r\n context.telemetry.debug(`Products in cart: ${cartProductIds}`);\r\n // If the cart isn't empty, assign the products in the cart to the productIds for seeding\r\n if (cartProductIds && cartProductIds.length > 0) {\r\n // @ts-ignore compiler alerts that cartProductIds is of type (number | undefined)[]\r\n // however, we filter on undefined product ids first before mapping on product ids so each element must be defined\r\n productIds = cartProductIds;\r\n }\r\n }\r\n } else if (input.listMetadata.includePageContext || !input.listMetadata.productIds || input.listMetadata.productIds.length === 0) {\r\n const urlTokens = context.requestContext.urlTokens;\r\n\r\n if (urlTokens && urlTokens.recordId && urlTokens.pageType && urlTokens.pageType.toLowerCase() === PDP_PAGE_NAME) {\r\n productIds = [+urlTokens.recordId];\r\n }\r\n } else {\r\n // Use the product from specfic context\r\n if (input.listMetadata.productIds && input.listMetadata.productIds.length > 0) {\r\n productIds = [input.listMetadata.productIds[0]];\r\n }\r\n }\r\n\r\n recommendationCriteria.ProductIds = productIds;\r\n};\r\n\r\n// tslint:disable-next-line: max-func-body-length\r\nexport const getProductsByRecommendationList = async (input: ProductListInput, context: IActionContext): Promise => {\r\n // If the recommendation list is picks for you and the user is not signed do not make the reco API call and return empty list of products\r\n const customerAccountNumber =\r\n context.requestContext && context.requestContext.user && context.requestContext.user.customerAccountNumber;\r\n if (input.listMetadata.recommendationListId === PICKS_FOR_YOU_LIST && !customerAccountNumber) {\r\n return [];\r\n }\r\n\r\n const recommendationCriteria: RecommendationCriteria = {};\r\n const proxyContext: IContext = { callerContext: context, queryResultSettings: { Paging: { Top: input.listMetadata.pageSize || 10 } } };\r\n recommendationCriteria.CatalogId = input.catalogId;\r\n\r\n let reccomendationListId;\r\n if (input.listMetadata.recommendationListId) {\r\n reccomendationListId = input.listMetadata.recommendationListId;\r\n } else {\r\n actionInputError(`recommendationListId (from listmetadata)`);\r\n }\r\n\r\n getCategoryIdForReco(recommendationCriteria, input, context);\r\n await getProductIdForReco(recommendationCriteria, input, context);\r\n\r\n if ((input.listMetadata.personalization || reccomendationListId === PICKS_FOR_YOU_LIST) && customerAccountNumber) {\r\n recommendationCriteria.CustomerAccountNumber = customerAccountNumber;\r\n proxyContext.bypassCache = 'get';\r\n }\r\n\r\n context.telemetry.debug(`Recommendation Criteria: ${JSON.stringify(recommendationCriteria)}`);\r\n\r\n // @ts-ignore\r\n return getElementsAsync(proxyContext, reccomendationListId, recommendationCriteria)\r\n .then(async (recommendedElements: RecommendedElement[]) => {\r\n if (recommendedElements) {\r\n const productInputs: ProductInput[] = [];\r\n const productTypeId: string[] = [];\r\n // Grab all the elements that are products and store the product ids\r\n for (let i = 0; i < recommendedElements.length; i++) {\r\n const element = recommendedElements[i];\r\n // Element type value of 1 indicates product type\r\n if (element.ElementId && element.ElementTypeValue === 1) {\r\n productInputs[i] = new ProductInput(+element.ElementId, context.requestContext.apiSettings);\r\n productTypeId[i] = element.ElementId;\r\n }\r\n }\r\n context.telemetry.debug(`Running recommendation action for list ${input.listMetadata.recommendationListId}`);\r\n context.telemetry.debug(`Number of products returned: ${productTypeId.length}`);\r\n context.telemetry.debug('Product ids returned', productTypeId);\r\n\r\n if (productInputs.length) {\r\n // Check to see if retail proxy version is greater than min version required for new API\r\n if (\r\n semver.gte(\r\n semver.coerce(context.requestContext.apiSettings.retailServerProxyVersion) || '',\r\n MIN_RETAIL_PROXY_VERSION_FOR_PRODUCT_SEARCH_RESULTS\r\n )\r\n ) {\r\n const itemIds: number[] = productInputs.map(value => value.productId);\r\n const productSearchCriteria: ProductSearchCriteria = {\r\n Ids: itemIds,\r\n Context: {\r\n ChannelId: +context.requestContext.apiSettings.channelId,\r\n CatalogId: +context.requestContext.apiSettings.catalogId\r\n },\r\n CategoryIds: recommendationCriteria && recommendationCriteria.CategoryIds && recommendationCriteria.CategoryIds.length > 0 ? recommendationCriteria.CategoryIds : [],\r\n IncludeAttributes: true\r\n };\r\n try {\r\n let productSearchResults = await searchByCriteriaAsync({ callerContext: context }, productSearchCriteria);\r\n // If the ProductSearchResult API finds the products then populate the product image urls and return\r\n // otherwise if the API does not exist or does not return products proceed to the legacy flows for legacy/backward compatibility reasons\r\n context.telemetry.debug('Product search results returned', JSON.stringify(productSearchResults));\r\n if (productSearchResults.length > 0) {\r\n getProductImageUrls(productSearchResults, context.requestContext.apiSettings);\r\n productSearchResults = orderProductSearchResults(itemIds, productSearchResults);\r\n return productSearchResults;\r\n }\r\n } catch (e) {\r\n // In case of an error fall back to legacy flow\r\n context.telemetry.error(`Error while getting productSearchResult: ${e}`);\r\n }\r\n }\r\n\r\n // Get Product Ratings Block (If needed)\r\n const productRatingsPromise = getProductRatingsAsync(\r\n { callerContext: context },\r\n productInputs.map(productInput => productInput.productId)\r\n );\r\n\r\n return getSimpleProducts(productInputs, context).then((products: ProductSearchResult[]) => {\r\n getProductImageUrls(products, context.requestContext.apiSettings);\r\n products = orderProductSearchResults(\r\n productInputs.map(value => value.productId),\r\n products\r\n );\r\n return productRatingsPromise.then(productRatings => {\r\n productRatings.forEach(productRating => {\r\n const unratedProduct: ProductSearchResult = (\r\n products.find(mappedProduct => mappedProduct.RecordId === productRating.ProductId)\r\n );\r\n if (unratedProduct) {\r\n unratedProduct.TotalRatings = productRating.TotalRatings;\r\n unratedProduct.AverageRating = productRating.AverageRating;\r\n }\r\n });\r\n\r\n return products;\r\n });\r\n });\r\n }\r\n }\r\n return [];\r\n })\r\n // tslint:disable-next-line:no-any\r\n .catch((error: any) => {\r\n context.telemetry.error(`Error running productByRecommendation action: ${error}`);\r\n throw new Error(error);\r\n });\r\n};\r\n\r\nexport const getProductsByRecommendationListAction = createObservableDataAction({\r\n action: >getProductsByRecommendationList,\r\n id: '@msdyn365-commerce/products-by-recommendation'\r\n});\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\nimport { createObservableDataAction, IAction, IActionInput } from '@msdyn365-commerce/core';\n\nexport interface IRatingsReviewsState {\n filterKey: string;\n}\n\nexport function createRatingsReviewsStateInput(result: IRatingsReviewsState): GenericInput {\n return new GenericInput('ratingsReviewsState', result, 'ratingsReviewsStateInput');\n}\n\nconst createInternalRatingsReviewsStateInput = (): IActionInput => {\n return createRatingsReviewsStateInput({filterKey: '1;2;3;4;5'});\n};\n\nexport default createObservableDataAction({\n action: >getGenericAction,\n input: createInternalRatingsReviewsStateInput\n});\n","/**\n* Copyright (c) 2018 Microsoft Corporation\n* Modules Registration\n* THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n*/\n\nexport const componentDictionary = {};\n\ncomponentDictionary['__local__|__local__|components|addtocart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-addtocart' */\n 'partner/components/addtocart.component.tsx'),\n cn: '__local__-__local__-addtocart'\n };\ncomponentDictionary['__local__|__local__|components|cartlineitem-variant'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cartlineitem-variant' */\n 'partner/components/cartlineitem-variant.component.tsx'),\n cn: '__local__-__local__-cartlineitem-variant'\n };\ncomponentDictionary['__local__|__local__|components|cartlineitem'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cartlineitem' */\n 'partner/components/cartlineitem.component.tsx'),\n cn: '__local__-__local__-cartlineitem'\n };\ncomponentDictionary['__local__|__local__|components|elicit-amountselector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit-amountselector' */\n 'partner/components/elicit-amountselector.component.tsx'),\n cn: '__local__-__local__-elicit-amountselector'\n };\ncomponentDictionary['__local__|__local__|components|elicit-cartlineitem'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit-cartlineitem' */\n 'partner/components/elicit-cartlineitem.component.tsx'),\n cn: '__local__-__local__-elicit-cartlineitem'\n };\ncomponentDictionary['__local__|__local__|components|product'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product' */\n 'partner/components/product.component.tsx'),\n cn: '__local__-__local__-product'\n };\ncomponentDictionary['__local__|__local__|modules|subscriptions-minicart|components|bottle-count-display'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-bottle-count-display' */\n 'partner/modules/subscriptions-minicart/components/bottle-count-display.component.tsx'),\n cn: '__local__-__local__-bottle-count-display'\n };\ncomponentDictionary['__local__|__local__|modules|subscriptions-minicart|components|box-edit'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-box-edit' */\n 'partner/modules/subscriptions-minicart/components/box-edit.component.tsx'),\n cn: '__local__-__local__-box-edit'\n };\ncomponentDictionary['__local__|__local__|modules|subscriptions-minicart|components|cart-display'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cart-display' */\n 'partner/modules/subscriptions-minicart/components/cart-display.component.tsx'),\n cn: '__local__-__local__-cart-display'\n };\ncomponentDictionary['__local__|__local__|modules|subscriptions-minicart|components|subscription-banner-display'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscription-banner-display' */\n 'partner/modules/subscriptions-minicart/components/subscription-banner-display.component.tsx'),\n cn: '__local__-__local__-subscription-banner-display'\n };\ncomponentDictionary['__local__|__local__|themes|columbiacrest|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/columbiacrest/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|conn-creek|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/conn-creek/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|enoteca|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/enoteca/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|erath|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/erath/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|generazioni|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/generazioni/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|intrinsic-wine-co|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/intrinsic-wine-co/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|north-star|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/north-star/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|patzhall|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/patzhall/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|spring-valley-vineyard|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/spring-valley-vineyard/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|stagsleap|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/stagsleap/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['__local__|__local__|themes|stemichelle|views|components|carticon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carticon' */\n 'partner/themes/stemichelle/views/components/carticon.component.tsx'),\n cn: '__local__-__local__-carticon'\n };\ncomponentDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|components|cartlineitem'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-cartlineitem' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/components/cartlineitem.component.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-cartlineitem'\n };\ncomponentDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|components|promocode'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-promocode' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/components/promocode.component.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-promocode'\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput, IMSDyn365Window, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { Cart, CartLine, IDataServiceRequest, IRemoveCartLinesParam } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo, IProductTransaction } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * Saves info on cart lines removed before calling data action\n * @param inputs Data action inputs\n * @param actionContext Action context\n */\nconst beforeRemoveFromCart = async (inputs: IActionInput | IActionInput[], actionContext: IActionContext) => {\n try {\n const actionInput = Array.isArray(inputs) ? inputs[0] : inputs;\n\n // If cart lines were removed\n if (actionInput.queryParams && typeof actionInput.queryParams === 'function') {\n const removeCartLinesParams = actionInput.queryParams();\n if (removeCartLinesParams && removeCartLinesParams.cartLineIds) {\n // Save info on removed cart lines for post data action hook to pick up\n actionContext.requestContext.telemetryData.removedCartLineIds = removeCartLinesParams.cartLineIds;\n return;\n }\n }\n actionContext.telemetry.debug('RemoveFromCart pre-data action hook failed - No removed cart lines found');\n } catch (e) {\n actionContext.telemetry.debug('RemoveFromCart pre-data action hook failed.', e);\n }\n};\n\n/**\n * Fires a RemoveFromCart event after RemoveCartLines data action completed\n * @param _inputs Data action inputs\n * @param cart New cart object after cart lines have been removed\n * @param actionContext Action context\n */\nconst afterRemoveFromCart = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const cartObject = Array.isArray(cart) ? cart[0] : cart;\n const removeCartLineIds = actionContext.requestContext.telemetryData.removedCartLineIds;\n const activeCart = actionContext.requestContext.telemetryData.activeCart;\n const productTransaction = actionContext.requestContext.telemetryData[TelemetryEvent.Purchase];\n const removedCartLines: CartLine[] = [];\n let removedProducts: IProductInfo[] = [];\n\n // Collect info on products removed from cart\n if (removeCartLineIds && activeCart && activeCart.CartLines) {\n activeCart.CartLines.forEach((cartLine: CartLine) => {\n if (\n cartLine.ProductId &&\n removeCartLineIds.indexOf(cartLine.LineId ? cartLine.LineId : '') !== -1 &&\n !(\n productTransaction &&\n productTransaction.products &&\n productTransaction.products.some(product => +product.productSku === cartLine.ProductId)\n )\n ) {\n removedCartLines.push(cartLine);\n }\n });\n\n if (removedCartLines.length > 0) {\n try {\n removedProducts = await getProductInfoFromCartLinesAsync(removedCartLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('RemoveCartLines post-data action hook failed to process cart lines.', error);\n }\n }\n }\n\n // Fire RemoveFromCart event if cart lines were removed\n if (removedCartLines && removedCartLines.length > 0) {\n window._msdyn365.telemetry.logEvent(TelemetryEvent.RemoveFromCart, {\n cartId: cartObject.Id,\n cartVersion: cartObject.Version ? cartObject.Version.toString() : '',\n products: removedProducts,\n orderId: cartObject.OrderNumber ? cartObject.OrderNumber.toString() : ''\n });\n } else {\n actionContext.telemetry.debug('No RemoveFromCart event fired, no removed cart lines found');\n }\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/RemoveCartLines',\n postReaderHook: afterRemoveFromCart,\n preReaderHook: beforeRemoveFromCart\n});\n","import {\r\n GenericInput,\r\n getGenericAction\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n createObservableDataAction,\r\n IAction,\r\n IActionInput,\r\n IAny,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\n\r\nexport function createSkuSelectorContainerClasses(\r\n result: string\r\n): GenericInput {\r\n return new GenericInput('SkuSelectorClasses', result, 'String');\r\n}\r\n\r\nconst createSkuSelectorContainerClassesInput = (\r\n inputData: ICreateActionContext>\r\n): IActionInput => {\r\n return createSkuSelectorContainerClasses('');\r\n};\r\n\r\nexport default createObservableDataAction({\r\n action: >getGenericAction,\r\n input: createSkuSelectorContainerClassesInput\r\n});\r\n","import { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { getOrgUnitConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\r\nimport skuSelectorContainerClasses, { createSkuSelectorContainerClasses } from './sku-selector-container-classes';\r\n\r\n/**\r\n * Input class for the getProductAvailabilitiesForSelectedVariant Data Action\r\n */\r\nexport class HideClubPriceInput implements IActionInput {\r\n public productId: number;\r\n public channelId: number;\r\n\r\n constructor(productId: number | string, channelId: number) {\r\n this.productId = typeof productId === 'string' ? +productId : productId;\r\n this.channelId = channelId;\r\n }\r\n\r\n public getCacheKey = () => `HideClubPrice|${this.productId}|${this.channelId}`;\r\n public getCacheObjectType = () => 'ProductAvailabilities';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\n/**\r\n * createInput method for the getProductAvailabilitiesForSelectedVariant data action.\r\n * @param inputData The input data passed to the createInput method\r\n */\r\nexport const createHideClubPriceInput = (\r\n inputData: ICreateActionContext>\r\n): HideClubPriceInput => {\r\n const productId = getSelectedProductIdFromActionInput(inputData);\r\n\r\n if (productId) {\r\n return new HideClubPriceInput(+productId, +inputData.requestContext.apiSettings.channelId);\r\n } else {\r\n throw new Error('Unable to create HideClubPriceInput, no productId found on module config or query');\r\n }\r\n};\r\n\r\n/**\r\n * The action method for the getProductAvailabilitiesForSelectedVariant data action\r\n */\r\nexport async function hideClubPrice(\r\n input: HideClubPriceInput,\r\n ctx: IActionContext\r\n): Promise {\r\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\r\n const product = await getSelectedVariant(selectedVariantInput, ctx);\r\n const channelConfiguration = await getOrgUnitConfigurationAsync({ callerContext: ctx});\r\n\r\n if (\r\n product &&\r\n (product.ItemId === channelConfiguration.GiftCardItemId)\r\n ) {\r\n await skuSelectorContainerClasses(\r\n createSkuSelectorContainerClasses('no-club'),\r\n ctx\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * The complete getProductAvailabilitiesForSelectedVariant data action\r\n * Get the currently selected variant via the getSelectedVariant data action, and\r\n * then gets the availabilities for the variant via the getProductAvailabilities RetailServer API\r\n */\r\nexport default createObservableDataAction({\r\n action: >hideClubPrice,\r\n input: createHideClubPriceInput\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport { ProductRefinerValue, ProductSearchResult, SortingInfo } from '@msdyn365-commerce/retail-proxy';\r\nimport { observable } from 'mobx';\r\n\r\nimport { listPageType } from './base-collection-action';\r\n\r\n/**\r\n * ListPageState class\r\n */\r\nexport class ListPageState {\r\n @observable public activeFilters: ProductRefinerValue[] | null = null;\r\n @observable public activeProducts: ProductSearchResult[] = [];\r\n @observable public sortingCritera: SortingInfo | null = null;\r\n @observable public currentPageNumber: number | null = null;\r\n @observable public totalProductCount: number | undefined;\r\n @observable public pageSize: number = 10;\r\n @observable public pageType: listPageType = 'Unknown';\r\n}\r\n\r\n/**\r\n * ListPageStateInput - action input\r\n */\r\nexport class ListPageStateInput implements IActionInput {\r\n public getCacheKey = () => `ListPageState`;\r\n public getCacheObjectType = () => 'ListPageState';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\nexport async function listPageStateAction(\r\n input: ListPageStateInput,\r\n ctx: IActionContext\r\n): Promise {\r\n return new ListPageState();\r\n}\r\n\r\n/**\r\n * create new input for create action\r\n */\r\nexport const createListPageInput = (\r\n inputData: ICreateActionContext>\r\n): IActionInput => {\r\n return new ListPageStateInput();\r\n};\r\n\r\n/**\r\n * ListPageState - create action\r\n */\r\nexport default createObservableDataAction({\r\n action: >listPageStateAction,\r\n input: createListPageInput\r\n});\r\n","\r\n // tslint:disable\r\n import * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\n import * as Entities from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g'; \r\n import { jsonLightReadStringPropertyValue } from '@msdyn365-commerce/retail-proxy/dist/externals';\r\n \r\n \r\n /**\r\n * rsmWineClubSignUpEntity entity interface.\r\n */\r\n export interface IrsmWineClubSignUpEntity {\r\n WineClubId: string;\r\n CustomerId?: string;\r\n IsGifted?: boolean;\r\n DeliveryPreference?: string;\r\n AddressFirstName?: string;\r\n AddressLastName?: string;\r\n AddressEmail?: string;\r\n AddressPhone?: string;\r\n AddressLine1?: string;\r\n AddressLine2?: string;\r\n City?: string;\r\n State?: string;\r\n Zipcode?: string;\r\n Country?: string;\r\n ExtensionProperties?: Entities.CommerceProperty[];\r\n }\r\n \r\n /**\r\n * rsmClubMembershipPauseResumeResponse entity interface.\r\n */\r\n export interface IrsmClubMembershipPauseResumeResponse {\r\n Status?: string;\r\n Result?: string;\r\n }\r\n \r\n /**\r\n * rsmClubMembershipSkipShipmentResponse entity interface.\r\n */\r\n export interface IrsmClubMembershipSkipShipmentResponse {\r\n Status?: string;\r\n Result?: string;\r\n }\r\n \r\n /**\r\n * rsmClubMembershipPrimaryCardResponse entity interface.\r\n */\r\n export interface IrsmClubMembershipPrimaryCardResponse {\r\n Status?: string;\r\n Result?: string;\r\n }\r\n \r\n /**\r\n * rsmClubMembershipPrimaryShipToAddressResponse entity interface.\r\n */\r\n export interface IrsmClubMembershipPrimaryShipToAddressResponse {\r\n Status?: string;\r\n Result?: string;\r\n }\r\n \r\n /**\r\n * rsmClubMembershipUpdateResponse entity interface.\r\n */\r\n export interface IrsmClubMembershipUpdateResponse {\r\n Status?: string;\r\n Result?: string;\r\n }\r\n \r\n /**\r\n * rsmClubMemberMgmtGetDataResponse entity interface.\r\n */\r\n export interface IrsmClubMemberMgmtGetDataResponse {\r\n Status?: string;\r\n Result?: IWineClubMemberData[];\r\n }\r\n \r\n /**\r\n * rsmValidateProgramResponse entity interface.\r\n */\r\n export interface IrsmValidateProgramResponse {\r\n Result?: boolean;\r\n Message?: string;\r\n }\r\n \r\n /**\r\n * rsmVerifyEmployeeResponse entity interface.\r\n */\r\n export interface IrsmVerifyEmployeeResponse {\r\n Result?: boolean;\r\n Message?: string;\r\n }\r\n \r\n /**\r\n * rsmFriendsAndFamilyValidateProgramResponse entity interface.\r\n */\r\n export interface IrsmFriendsAndFamilyValidateProgramResponse {\r\n Status?: string;\r\n Result?: IrsmFriendsAndFamilyValidateProgramData;\r\n }\r\n \r\n /**\r\n * rsmFriendsAndFamilyListResponse entity interface.\r\n */\r\n export interface IrsmFriendsAndFamilyListResponse {\r\n Status?: string;\r\n Result?: IrsmFriendsAndFamilyListObject;\r\n }\r\n \r\n /**\r\n * rsmInsertMailingListResponse entity interface.\r\n */\r\n export interface IrsmInsertMailingListResponse {\r\n IsSaved?: boolean;\r\n Message?: string;\r\n }\r\n \r\n /**\r\n * rsmUnsubscribeMailingListResponse entity interface.\r\n */\r\n export interface IrsmUnsubscribeMailingListResponse {\r\n IsUnsubscribe?: boolean;\r\n Message?: string;\r\n }\r\n \r\n /**\r\n * rsmOfferSelectionsResponse entity interface.\r\n */\r\n export interface IrsmOfferSelectionsResponse {\r\n result?: string;\r\n }\r\n \r\n /**\r\n * rsmSubscriptionCancelResponse entity interface.\r\n */\r\n export interface IrsmSubscriptionCancelResponse {\r\n Status?: string;\r\n Result?: IrsmSubscriptionData[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionPauseResponse entity interface.\r\n */\r\n export interface IrsmSubscriptionPauseResponse {\r\n Status?: string;\r\n Result?: IrsmSubscriptionData[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionResumeResponse entity interface.\r\n */\r\n export interface IrsmSubscriptionResumeResponse {\r\n Status?: string;\r\n Result?: IrsmSubscriptionData[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionUpdateResponse entity interface.\r\n */\r\n export interface IrsmSubscriptionUpdateResponse {\r\n Status?: string;\r\n Result?: IrsmSubscriptionData[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionCardsResponse entity interface.\r\n */\r\n export interface IrsmSubscriptionCardsResponse {\r\n Status?: string;\r\n Result?: IrsmSubscriptionCard[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionListResponse entity interface.\r\n */\r\n export interface IrsmSubscriptionListResponse {\r\n Status?: string;\r\n Result?: IrsmSubscriptionData[];\r\n }\r\n \r\n /**\r\n * rsmWineClubSignUpResponse entity interface.\r\n */\r\n export interface IrsmWineClubSignUpResponse {\r\n result?: boolean;\r\n Message?: string;\r\n }\r\n \r\n /**\r\n * rsmFriendsAndFamilyValidateProgramData entity interface.\r\n */\r\n export interface IrsmFriendsAndFamilyValidateProgramData {\r\n Message?: string;\r\n Code?: IrsmFriendsAndFamilyCode;\r\n }\r\n \r\n /**\r\n * rsmFriendsAndFamilyCode entity interface.\r\n */\r\n export interface IrsmFriendsAndFamilyCode {\r\n RecipientEmailAddress?: string;\r\n Status?: string;\r\n Code?: string;\r\n SentDate?: string;\r\n ActivationDate?: string;\r\n }\r\n \r\n /**\r\n * rsmFriendsAndFamilyListObject entity interface.\r\n */\r\n export interface IrsmFriendsAndFamilyListObject {\r\n QuantityAvailable?: string;\r\n Codes?: IrsmFriendsAndFamilyCode[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionData entity interface.\r\n */\r\n export interface IrsmSubscriptionData {\r\n SubscriptionID?: string;\r\n SubStatus?: string;\r\n SubscriptionName?: string;\r\n Frequency?: string;\r\n NextOrderDate?: string;\r\n LockoutPeriod?: number;\r\n DeliveryAddress?: string;\r\n ActiveCreditCardID?: string;\r\n Lines?: IrsmSubscriptionLine[];\r\n }\r\n \r\n /**\r\n * rsmSubscriptionLine entity interface.\r\n */\r\n export interface IrsmSubscriptionLine {\r\n SubLineID?: string;\r\n Description?: string;\r\n Qty?: number;\r\n }\r\n \r\n /**\r\n * rsmSubscriptionCard entity interface.\r\n */\r\n export interface IrsmSubscriptionCard {\r\n CardID?: string;\r\n CardNumber?: string;\r\n }\r\n \r\n /**\r\n * ShipComplianceResponseObject entity interface.\r\n */\r\n export interface IShipComplianceResponseObject {\r\n message?: string;\r\n isShipCompliant: boolean;\r\n callSucceeded: boolean;\r\n }\r\n \r\n /**\r\n * WineClubMemberData entity interface.\r\n */\r\n export interface IWineClubMemberData {\r\n WineClubMemberNum?: string;\r\n WineClubId?: string;\r\n WineClubName?: string;\r\n WineClubDisplay?: string;\r\n NextClubRunDate?: string;\r\n CustomerName?: string;\r\n MemberStatus?: string;\r\n ShowStatus?: boolean;\r\n ActivationDate?: string;\r\n DeactivationDate?: string;\r\n GiftMembershipEndDate?: string;\r\n ShowMemberSince?: boolean;\r\n GiftCustName?: string;\r\n CanSkip?: boolean;\r\n IsBlackoutPeriod?: boolean;\r\n DeliveryPreference?: string;\r\n PickUpLocationId?: string;\r\n CreditCard?: ICreditCard[];\r\n ShipToAddress?: IShipToAddress[];\r\n MembershipProducts?: IMembershipProducts[];\r\n HasOfferSelections?: boolean;\r\n OfferSelections?: IOfferSelections[];\r\n }\r\n \r\n /**\r\n * CreditCard entity interface.\r\n */\r\n export interface ICreditCard {\r\n RecId?: number;\r\n CreditCardNum?: string;\r\n IsPrimary?: boolean;\r\n }\r\n \r\n /**\r\n * ShipToAddress entity interface.\r\n */\r\n export interface IShipToAddress {\r\n ShipToAddressRecId?: number;\r\n Name?: string;\r\n StreetAddress?: string;\r\n ZipCode?: string;\r\n City?: string;\r\n State?: string;\r\n DateBirth?: string;\r\n Company?: string;\r\n IsPrimary?: boolean;\r\n }\r\n \r\n /**\r\n * MembershipProducts entity interface.\r\n */\r\n export interface IMembershipProducts {\r\n ItemId?: string;\r\n ItemName?: string;\r\n Qty?: number;\r\n OfferId?: string;\r\n }\r\n \r\n /**\r\n * OfferSelections entity interface.\r\n */\r\n export interface IOfferSelections {\r\n OfferId?: string;\r\n OfferName?: string;\r\n EndDate?: Date;\r\n ItemId?: string;\r\n }\r\n \r\n /**\r\n * rsmWineClubSignUpEntity entity class.\r\n */\r\n export class rsmWineClubSignUpEntityExtensionClass implements IrsmWineClubSignUpEntity {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public WineClubId: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CustomerId: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsGifted: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public DeliveryPreference: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressFirstName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressLastName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressEmail: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressPhone: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressLine1: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public AddressLine2: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public City: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public State: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Zipcode: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Country: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ExtensionProperties: Entities.CommerceProperty[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.WineClubId = odataObject.WineClubId;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CustomerId = odataObject.CustomerId;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsGifted = odataObject.IsGifted;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.DeliveryPreference = odataObject.DeliveryPreference;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressFirstName = odataObject.AddressFirstName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressLastName = odataObject.AddressLastName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressEmail = odataObject.AddressEmail;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressPhone = odataObject.AddressPhone;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressLine1 = odataObject.AddressLine1;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.AddressLine2 = odataObject.AddressLine2;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.City = odataObject.City;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.State = odataObject.State;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Zipcode = odataObject.Zipcode;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Country = odataObject.Country;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties = undefined;\r\n if (odataObject.ExtensionProperties) {\r\n this.ExtensionProperties = [];\r\n for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\r\n if (odataObject.ExtensionProperties[i]) {\r\n if (odataObject.ExtensionProperties[i]['@odata.type']) {\r\n var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.ExtensionProperties[i] = new EntityClasses[className](odataObject.ExtensionProperties[i])\r\n }\r\n } else {\r\n this.ExtensionProperties[i] = new EntityClasses.CommercePropertyClass(odataObject.ExtensionProperties[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmClubMembershipPauseResumeResponse entity class.\r\n */\r\n export class rsmClubMembershipPauseResumeResponseExtensionClass implements IrsmClubMembershipPauseResumeResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmClubMembershipSkipShipmentResponse entity class.\r\n */\r\n export class rsmClubMembershipSkipShipmentResponseExtensionClass implements IrsmClubMembershipSkipShipmentResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmClubMembershipPrimaryCardResponse entity class.\r\n */\r\n export class rsmClubMembershipPrimaryCardResponseExtensionClass implements IrsmClubMembershipPrimaryCardResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmClubMembershipPrimaryShipToAddressResponse entity class.\r\n */\r\n export class rsmClubMembershipPrimaryShipToAddressResponseExtensionClass implements IrsmClubMembershipPrimaryShipToAddressResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmClubMembershipUpdateResponse entity class.\r\n */\r\n export class rsmClubMembershipUpdateResponseExtensionClass implements IrsmClubMembershipUpdateResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmClubMemberMgmtGetDataResponse entity class.\r\n */\r\n export class rsmClubMemberMgmtGetDataResponseExtensionClass implements IrsmClubMemberMgmtGetDataResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IWineClubMemberData[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new WineClubMemberDataExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmValidateProgramResponse entity class.\r\n */\r\n export class rsmValidateProgramResponseExtensionClass implements IrsmValidateProgramResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Message: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Message = odataObject.Message;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmVerifyEmployeeResponse entity class.\r\n */\r\n export class rsmVerifyEmployeeResponseExtensionClass implements IrsmVerifyEmployeeResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Message: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = odataObject.Result;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Message = odataObject.Message;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmFriendsAndFamilyValidateProgramResponse entity class.\r\n */\r\n export class rsmFriendsAndFamilyValidateProgramResponseExtensionClass implements IrsmFriendsAndFamilyValidateProgramResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmFriendsAndFamilyValidateProgramData;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n if (odataObject.Result === null) {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n } else if (odataObject.Result['@odata.type'] == null) {\r\n this.Result = new rsmFriendsAndFamilyValidateProgramDataExtensionClass(odataObject.Result);\r\n } else {\r\n var className: string = odataObject.Result['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result = new EntityClasses[className](odataObject.Result)\r\n }\r\n }\r\n\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmFriendsAndFamilyListResponse entity class.\r\n */\r\n export class rsmFriendsAndFamilyListResponseExtensionClass implements IrsmFriendsAndFamilyListResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmFriendsAndFamilyListObject;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n if (odataObject.Result === null) {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n } else if (odataObject.Result['@odata.type'] == null) {\r\n this.Result = new rsmFriendsAndFamilyListObjectExtensionClass(odataObject.Result);\r\n } else {\r\n var className: string = odataObject.Result['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result = new EntityClasses[className](odataObject.Result)\r\n }\r\n }\r\n\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmInsertMailingListResponse entity class.\r\n */\r\n export class rsmInsertMailingListResponseExtensionClass implements IrsmInsertMailingListResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsSaved: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Message: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsSaved = odataObject.IsSaved;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Message = odataObject.Message;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmUnsubscribeMailingListResponse entity class.\r\n */\r\n export class rsmUnsubscribeMailingListResponseExtensionClass implements IrsmUnsubscribeMailingListResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsUnsubscribe: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Message: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsUnsubscribe = odataObject.IsUnsubscribe;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Message = odataObject.Message;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmOfferSelectionsResponse entity class.\r\n */\r\n export class rsmOfferSelectionsResponseExtensionClass implements IrsmOfferSelectionsResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public result: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.result = odataObject.result;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionCancelResponse entity class.\r\n */\r\n export class rsmSubscriptionCancelResponseExtensionClass implements IrsmSubscriptionCancelResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmSubscriptionData[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new rsmSubscriptionDataExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionPauseResponse entity class.\r\n */\r\n export class rsmSubscriptionPauseResponseExtensionClass implements IrsmSubscriptionPauseResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmSubscriptionData[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new rsmSubscriptionDataExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionResumeResponse entity class.\r\n */\r\n export class rsmSubscriptionResumeResponseExtensionClass implements IrsmSubscriptionResumeResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmSubscriptionData[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new rsmSubscriptionDataExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionUpdateResponse entity class.\r\n */\r\n export class rsmSubscriptionUpdateResponseExtensionClass implements IrsmSubscriptionUpdateResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmSubscriptionData[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new rsmSubscriptionDataExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionCardsResponse entity class.\r\n */\r\n export class rsmSubscriptionCardsResponseExtensionClass implements IrsmSubscriptionCardsResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmSubscriptionCard[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new rsmSubscriptionCardExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionListResponse entity class.\r\n */\r\n export class rsmSubscriptionListResponseExtensionClass implements IrsmSubscriptionListResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Result: \r\n IrsmSubscriptionData[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result = undefined;\r\n if (odataObject.Result) {\r\n this.Result = [];\r\n for (var i = 0; i < odataObject.Result.length; i++) {\r\n if (odataObject.Result[i]) {\r\n if (odataObject.Result[i]['@odata.type']) {\r\n var className: string = odataObject.Result[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Result[i] = new EntityClasses[className](odataObject.Result[i])\r\n }\r\n } else {\r\n this.Result[i] = new rsmSubscriptionDataExtensionClass(odataObject.Result[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Result[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmWineClubSignUpResponse entity class.\r\n */\r\n export class rsmWineClubSignUpResponseExtensionClass implements IrsmWineClubSignUpResponse {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public result: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Message: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.result = odataObject.result;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Message = odataObject.Message;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmFriendsAndFamilyValidateProgramData entity class.\r\n */\r\n export class rsmFriendsAndFamilyValidateProgramDataExtensionClass implements IrsmFriendsAndFamilyValidateProgramData {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Message: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Code: \r\n IrsmFriendsAndFamilyCode;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Message = odataObject.Message;\r\n \r\n if (odataObject.Code === null) {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Code = undefined;\r\n } else if (odataObject.Code['@odata.type'] == null) {\r\n this.Code = new rsmFriendsAndFamilyCodeExtensionClass(odataObject.Code);\r\n } else {\r\n var className: string = odataObject.Code['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Code = new EntityClasses[className](odataObject.Code)\r\n }\r\n }\r\n\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmFriendsAndFamilyCode entity class.\r\n */\r\n export class rsmFriendsAndFamilyCodeExtensionClass implements IrsmFriendsAndFamilyCode {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public RecipientEmailAddress: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Status: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Code: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public SentDate: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ActivationDate: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.RecipientEmailAddress = odataObject.RecipientEmailAddress;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Status = odataObject.Status;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Code = odataObject.Code;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.SentDate = odataObject.SentDate;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ActivationDate = odataObject.ActivationDate;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmFriendsAndFamilyListObject entity class.\r\n */\r\n export class rsmFriendsAndFamilyListObjectExtensionClass implements IrsmFriendsAndFamilyListObject {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public QuantityAvailable: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Codes: \r\n IrsmFriendsAndFamilyCode[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.QuantityAvailable = odataObject.QuantityAvailable;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Codes = undefined;\r\n if (odataObject.Codes) {\r\n this.Codes = [];\r\n for (var i = 0; i < odataObject.Codes.length; i++) {\r\n if (odataObject.Codes[i]) {\r\n if (odataObject.Codes[i]['@odata.type']) {\r\n var className: string = odataObject.Codes[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Codes[i] = new EntityClasses[className](odataObject.Codes[i])\r\n }\r\n } else {\r\n this.Codes[i] = new rsmFriendsAndFamilyCodeExtensionClass(odataObject.Codes[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Codes[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionData entity class.\r\n */\r\n export class rsmSubscriptionDataExtensionClass implements IrsmSubscriptionData {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public SubscriptionID: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public SubStatus: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public SubscriptionName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Frequency: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public NextOrderDate: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public LockoutPeriod: number;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public DeliveryAddress: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ActiveCreditCardID: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Lines: \r\n IrsmSubscriptionLine[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.SubscriptionID = odataObject.SubscriptionID;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.SubStatus = odataObject.SubStatus;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.SubscriptionName = odataObject.SubscriptionName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Frequency = odataObject.Frequency;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.NextOrderDate = odataObject.NextOrderDate;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.LockoutPeriod = odataObject.LockoutPeriod;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.DeliveryAddress = odataObject.DeliveryAddress;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ActiveCreditCardID = odataObject.ActiveCreditCardID;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Lines = undefined;\r\n if (odataObject.Lines) {\r\n this.Lines = [];\r\n for (var i = 0; i < odataObject.Lines.length; i++) {\r\n if (odataObject.Lines[i]) {\r\n if (odataObject.Lines[i]['@odata.type']) {\r\n var className: string = odataObject.Lines[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.Lines[i] = new EntityClasses[className](odataObject.Lines[i])\r\n }\r\n } else {\r\n this.Lines[i] = new rsmSubscriptionLineExtensionClass(odataObject.Lines[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Lines[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionLine entity class.\r\n */\r\n export class rsmSubscriptionLineExtensionClass implements IrsmSubscriptionLine {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public SubLineID: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Description: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Qty: number;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.SubLineID = odataObject.SubLineID;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Description = odataObject.Description;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Qty = odataObject.Qty;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * rsmSubscriptionCard entity class.\r\n */\r\n export class rsmSubscriptionCardExtensionClass implements IrsmSubscriptionCard {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CardID: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CardNumber: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CardID = odataObject.CardID;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CardNumber = odataObject.CardNumber;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * ShipComplianceResponseObject entity class.\r\n */\r\n export class ShipComplianceResponseObjectExtensionClass implements IShipComplianceResponseObject {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public message: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public isShipCompliant: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public callSucceeded: boolean;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.message = odataObject.message;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.isShipCompliant = odataObject.isShipCompliant;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.callSucceeded = odataObject.callSucceeded;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * WineClubMemberData entity class.\r\n */\r\n export class WineClubMemberDataExtensionClass implements IWineClubMemberData {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public WineClubMemberNum: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public WineClubId: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public WineClubName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public WineClubDisplay: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public NextClubRunDate: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CustomerName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public MemberStatus: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ShowStatus: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ActivationDate: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public DeactivationDate: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public GiftMembershipEndDate: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ShowMemberSince: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public GiftCustName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CanSkip: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsBlackoutPeriod: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public DeliveryPreference: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public PickUpLocationId: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CreditCard: \r\n ICreditCard[];\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ShipToAddress: \r\n IShipToAddress[];\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public MembershipProducts: \r\n IMembershipProducts[];\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public HasOfferSelections: boolean;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public OfferSelections: \r\n IOfferSelections[];\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.WineClubMemberNum = odataObject.WineClubMemberNum;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.WineClubId = odataObject.WineClubId;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.WineClubName = odataObject.WineClubName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.WineClubDisplay = odataObject.WineClubDisplay;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.NextClubRunDate = odataObject.NextClubRunDate;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CustomerName = odataObject.CustomerName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.MemberStatus = odataObject.MemberStatus;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ShowStatus = odataObject.ShowStatus;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ActivationDate = odataObject.ActivationDate;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.DeactivationDate = odataObject.DeactivationDate;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.GiftMembershipEndDate = odataObject.GiftMembershipEndDate;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ShowMemberSince = odataObject.ShowMemberSince;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.GiftCustName = odataObject.GiftCustName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CanSkip = odataObject.CanSkip;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsBlackoutPeriod = odataObject.IsBlackoutPeriod;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.DeliveryPreference = odataObject.DeliveryPreference;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.PickUpLocationId = odataObject.PickUpLocationId;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CreditCard = undefined;\r\n if (odataObject.CreditCard) {\r\n this.CreditCard = [];\r\n for (var i = 0; i < odataObject.CreditCard.length; i++) {\r\n if (odataObject.CreditCard[i]) {\r\n if (odataObject.CreditCard[i]['@odata.type']) {\r\n var className: string = odataObject.CreditCard[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.CreditCard[i] = new EntityClasses[className](odataObject.CreditCard[i])\r\n }\r\n } else {\r\n this.CreditCard[i] = new CreditCardExtensionClass(odataObject.CreditCard[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CreditCard[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ShipToAddress = undefined;\r\n if (odataObject.ShipToAddress) {\r\n this.ShipToAddress = [];\r\n for (var i = 0; i < odataObject.ShipToAddress.length; i++) {\r\n if (odataObject.ShipToAddress[i]) {\r\n if (odataObject.ShipToAddress[i]['@odata.type']) {\r\n var className: string = odataObject.ShipToAddress[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.ShipToAddress[i] = new EntityClasses[className](odataObject.ShipToAddress[i])\r\n }\r\n } else {\r\n this.ShipToAddress[i] = new ShipToAddressExtensionClass(odataObject.ShipToAddress[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ShipToAddress[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.MembershipProducts = undefined;\r\n if (odataObject.MembershipProducts) {\r\n this.MembershipProducts = [];\r\n for (var i = 0; i < odataObject.MembershipProducts.length; i++) {\r\n if (odataObject.MembershipProducts[i]) {\r\n if (odataObject.MembershipProducts[i]['@odata.type']) {\r\n var className: string = odataObject.MembershipProducts[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.MembershipProducts[i] = new EntityClasses[className](odataObject.MembershipProducts[i])\r\n }\r\n } else {\r\n this.MembershipProducts[i] = new MembershipProductsExtensionClass(odataObject.MembershipProducts[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.MembershipProducts[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.HasOfferSelections = odataObject.HasOfferSelections;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.OfferSelections = undefined;\r\n if (odataObject.OfferSelections) {\r\n this.OfferSelections = [];\r\n for (var i = 0; i < odataObject.OfferSelections.length; i++) {\r\n if (odataObject.OfferSelections[i]) {\r\n if (odataObject.OfferSelections[i]['@odata.type']) {\r\n var className: string = odataObject.OfferSelections[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat(\"Class\");\r\n if (EntityClasses[className]) {\r\n this.OfferSelections[i] = new EntityClasses[className](odataObject.OfferSelections[i])\r\n }\r\n } else {\r\n this.OfferSelections[i] = new OfferSelectionsExtensionClass(odataObject.OfferSelections[i]);\r\n }\r\n \r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.OfferSelections[i] = undefined;\r\n }\r\n }\r\n }\r\n \r\n }\r\n }\r\n\r\n /**\r\n * CreditCard entity class.\r\n */\r\n export class CreditCardExtensionClass implements ICreditCard {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public RecId: number;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public CreditCardNum: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsPrimary: boolean;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.RecId = (odataObject.RecId) ? parseInt(odataObject.RecId, 10) : 0;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.CreditCardNum = odataObject.CreditCardNum;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsPrimary = odataObject.IsPrimary;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * ShipToAddress entity class.\r\n */\r\n export class ShipToAddressExtensionClass implements IShipToAddress {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ShipToAddressRecId: number;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Name: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public StreetAddress: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ZipCode: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public City: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public State: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public DateBirth: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Company: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public IsPrimary: boolean;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ShipToAddressRecId = (odataObject.ShipToAddressRecId) ? parseInt(odataObject.ShipToAddressRecId, 10) : 0;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Name = odataObject.Name;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.StreetAddress = odataObject.StreetAddress;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ZipCode = odataObject.ZipCode;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.City = odataObject.City;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.State = odataObject.State;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.DateBirth = odataObject.DateBirth;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Company = odataObject.Company;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.IsPrimary = odataObject.IsPrimary;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * MembershipProducts entity class.\r\n */\r\n export class MembershipProductsExtensionClass implements IMembershipProducts {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ItemId: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ItemName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Qty: number;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public OfferId: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ItemId = odataObject.ItemId;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ItemName = odataObject.ItemName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Qty = odataObject.Qty;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.OfferId = odataObject.OfferId;\r\n \r\n }\r\n }\r\n\r\n /**\r\n * OfferSelections entity class.\r\n */\r\n export class OfferSelectionsExtensionClass implements IOfferSelections {\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public OfferId: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public OfferName: string;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public EndDate: Date;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ItemId: string;\r\n \r\n // Navigation properties names\r\n \r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.OfferId = odataObject.OfferId;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.OfferName = odataObject.OfferName;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.EndDate = (odataObject.EndDate instanceof Date) ? odataObject.EndDate\r\n : (odataObject.EndDate) ? jsonLightReadStringPropertyValue(odataObject.EndDate, 'Edm.DateTimeOffset', false) : undefined;\r\n \r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ItemId = odataObject.ItemId;\r\n \r\n }\r\n }\r\n","\r\n /*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n * THIS FILE IS AN AUTOGENERATED TYPESCRIPT PROXY EXTENSION.\r\n * TO USE THIS FILE, IT MUST BE ADDED TO A D365COMMERCE APPLICATION\r\n */\r\n // tslint:disable\r\n import { AsyncResult, callActionOrExecute, DataServiceQuery, IContext, IDataServiceRequest, IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\r\n // @ts-ignore\r\n import * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\n import * as Entities from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n import * as DataServiceEntities from './DataServiceEntities.g';\r\n\r\n \r\n function clubMembershipPauseResumeQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function clubMembershipPauseResumeInput (\r\n customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n pauseResume:\r\n boolean\r\n ): IDataServiceRequest {\r\n const query = clubMembershipPauseResumeQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ClubMembershipPauseResume',\r\n true, \r\n DataServiceEntities.rsmClubMembershipPauseResumeResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmClubMembershipPauseResumeResponse' },\r\n { \r\n CustomerId: customerId,\r\n WineClubId: wineClubId,\r\n PauseResume: pauseResume\r\n }\r\n );\r\n }\r\n \r\n export function clubMembershipPauseResumeAsync (\r\n context: IContext, customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n pauseResume:\r\n boolean\r\n ): AsyncResult {\r\n const request = clubMembershipPauseResumeInput(customerId, wineClubId, pauseResume);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function clubMembershipSkipShipmentQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function clubMembershipSkipShipmentInput (\r\n customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n skipShipment:\r\n boolean\r\n ): IDataServiceRequest {\r\n const query = clubMembershipSkipShipmentQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ClubMembershipSkipShipment',\r\n true, \r\n DataServiceEntities.rsmClubMembershipSkipShipmentResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmClubMembershipSkipShipmentResponse' },\r\n { \r\n CustomerId: customerId,\r\n WineClubId: wineClubId,\r\n SkipShipment: skipShipment\r\n }\r\n );\r\n }\r\n \r\n export function clubMembershipSkipShipmentAsync (\r\n context: IContext, customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n skipShipment:\r\n boolean\r\n ): AsyncResult {\r\n const request = clubMembershipSkipShipmentInput(customerId, wineClubId, skipShipment);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function clubMembershipPrimaryCardQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function clubMembershipPrimaryCardInput (\r\n customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n creditCard:\r\n number\r\n ): IDataServiceRequest {\r\n const query = clubMembershipPrimaryCardQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ClubMembershipPrimaryCard',\r\n true, \r\n DataServiceEntities.rsmClubMembershipPrimaryCardResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmClubMembershipPrimaryCardResponse' },\r\n { \r\n CustomerId: customerId,\r\n WineClubId: wineClubId,\r\n CreditCard: creditCard\r\n }\r\n );\r\n }\r\n \r\n export function clubMembershipPrimaryCardAsync (\r\n context: IContext, customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n creditCard:\r\n number\r\n ): AsyncResult {\r\n const request = clubMembershipPrimaryCardInput(customerId, wineClubId, creditCard);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function clubMembershipPrimaryShipToAddressQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function clubMembershipPrimaryShipToAddressInput (\r\n customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n shipToAddress:\r\n number\r\n ): IDataServiceRequest {\r\n const query = clubMembershipPrimaryShipToAddressQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ClubMembershipPrimaryShipToAddress',\r\n true, \r\n DataServiceEntities.rsmClubMembershipPrimaryShipToAddressResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmClubMembershipPrimaryShipToAddressResponse' },\r\n { \r\n CustomerId: customerId,\r\n WineClubId: wineClubId,\r\n ShipToAddress: shipToAddress\r\n }\r\n );\r\n }\r\n \r\n export function clubMembershipPrimaryShipToAddressAsync (\r\n context: IContext, customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n shipToAddress:\r\n number\r\n ): AsyncResult {\r\n const request = clubMembershipPrimaryShipToAddressInput(customerId, wineClubId, shipToAddress);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function clubMembershipUpdateQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function clubMembershipUpdateInput (\r\n wineClubId:\r\n string,\r\n creditCard:\r\n number,\r\n shipToAddress:\r\n number,\r\n deliveryPreference:\r\n string,\r\n pickupLocationId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = clubMembershipUpdateQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ClubMembershipUpdate',\r\n true, \r\n DataServiceEntities.rsmClubMembershipUpdateResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmClubMembershipUpdateResponse' },\r\n { \r\n WineClubId: wineClubId,\r\n CreditCard: creditCard,\r\n ShipToAddress: shipToAddress,\r\n DeliveryPreference: deliveryPreference,\r\n PickupLocationId: pickupLocationId\r\n }\r\n );\r\n }\r\n \r\n export function clubMembershipUpdateAsync (\r\n context: IContext, wineClubId:\r\n string,\r\n creditCard:\r\n number,\r\n shipToAddress:\r\n number,\r\n deliveryPreference:\r\n string,\r\n pickupLocationId:\r\n string\r\n ): AsyncResult {\r\n const request = clubMembershipUpdateInput(wineClubId, creditCard, shipToAddress, deliveryPreference, pickupLocationId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function clubMembershipGetDataQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function clubMembershipGetDataInput (\r\n customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = clubMembershipGetDataQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ClubMembershipGetData',\r\n false, \r\n DataServiceEntities.rsmClubMemberMgmtGetDataResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmClubMemberMgmtGetDataResponse' },\r\n { \r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function clubMembershipGetDataAsync (\r\n context: IContext, customerId:\r\n string\r\n ): AsyncResult {\r\n const request = clubMembershipGetDataInput(customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function validateProgramQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function validateProgramInput (\r\n customerAccount:\r\n string,\r\n programId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = validateProgramQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ValidateProgram',\r\n true, \r\n DataServiceEntities.rsmValidateProgramResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmValidateProgramResponse' },\r\n { \r\n CustomerAccount: customerAccount,\r\n ProgramId: programId\r\n }\r\n );\r\n }\r\n \r\n export function validateProgramAsync (\r\n context: IContext, customerAccount:\r\n string,\r\n programId:\r\n string\r\n ): AsyncResult {\r\n const request = validateProgramInput(customerAccount, programId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function verifyEmployeeQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function verifyEmployeeInput (\r\n customerAccount:\r\n string,\r\n employeeNumber:\r\n string,\r\n lastName:\r\n string,\r\n birthYear:\r\n string\r\n ): IDataServiceRequest {\r\n const query = verifyEmployeeQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'VerifyEmployee',\r\n true, \r\n DataServiceEntities.rsmVerifyEmployeeResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmVerifyEmployeeResponse' },\r\n { \r\n CustomerAccount: customerAccount,\r\n EmployeeNumber: employeeNumber,\r\n LastName: lastName,\r\n BirthYear: birthYear\r\n }\r\n );\r\n }\r\n \r\n export function verifyEmployeeAsync (\r\n context: IContext, customerAccount:\r\n string,\r\n employeeNumber:\r\n string,\r\n lastName:\r\n string,\r\n birthYear:\r\n string\r\n ): AsyncResult {\r\n const request = verifyEmployeeInput(customerAccount, employeeNumber, lastName, birthYear);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function friendsAndFamilyValidateProgramQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function friendsAndFamilyValidateProgramInput (\r\n code:\r\n string,\r\n emailListID:\r\n string,\r\n sourceID:\r\n string\r\n ): IDataServiceRequest {\r\n const query = friendsAndFamilyValidateProgramQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'FriendsAndFamilyValidateProgram',\r\n true, \r\n DataServiceEntities.rsmFriendsAndFamilyValidateProgramResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmFriendsAndFamilyValidateProgramResponse' },\r\n { \r\n Code: code,\r\n EmailListID: emailListID,\r\n SourceID: sourceID\r\n }\r\n );\r\n }\r\n \r\n export function friendsAndFamilyValidateProgramAsync (\r\n context: IContext, code:\r\n string,\r\n emailListID:\r\n string,\r\n sourceID:\r\n string\r\n ): AsyncResult {\r\n const request = friendsAndFamilyValidateProgramInput(code, emailListID, sourceID);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function friendsAndFamilyListQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function friendsAndFamilyListInput (\r\n \r\n ): IDataServiceRequest {\r\n const query = friendsAndFamilyListQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'FriendsAndFamilyList',\r\n false, \r\n DataServiceEntities.rsmFriendsAndFamilyListResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmFriendsAndFamilyListResponse' },\r\n { \r\n \r\n }\r\n );\r\n }\r\n \r\n export function friendsAndFamilyListAsync (\r\n context: IContext\r\n ): AsyncResult {\r\n const request = friendsAndFamilyListInput();\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function insertMailingListQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function insertMailingListInput (\r\n mailingListId:\r\n string,\r\n sourceId:\r\n string,\r\n email:\r\n string,\r\n name:\r\n string,\r\n zipCode:\r\n string\r\n ): IDataServiceRequest {\r\n const query = insertMailingListQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'InsertMailingList',\r\n true, \r\n DataServiceEntities.rsmInsertMailingListResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmInsertMailingListResponse' },\r\n { \r\n MailingListId: mailingListId,\r\n SourceId: sourceId,\r\n Email: email,\r\n Name: name,\r\n ZipCode: zipCode\r\n }\r\n );\r\n }\r\n \r\n export function insertMailingListAsync (\r\n context: IContext, mailingListId:\r\n string,\r\n sourceId:\r\n string,\r\n email:\r\n string,\r\n name:\r\n string,\r\n zipCode:\r\n string\r\n ): AsyncResult {\r\n const request = insertMailingListInput(mailingListId, sourceId, email, name, zipCode);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function unsubscribeMailingListQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function unsubscribeMailingListInput (\r\n mailingListId:\r\n string,\r\n sourceId:\r\n string,\r\n email:\r\n string\r\n ): IDataServiceRequest {\r\n const query = unsubscribeMailingListQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'UnsubscribeMailingList',\r\n true, \r\n DataServiceEntities.rsmUnsubscribeMailingListResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmUnsubscribeMailingListResponse' },\r\n { \r\n MailingListId: mailingListId,\r\n SourceId: sourceId,\r\n Email: email\r\n }\r\n );\r\n }\r\n \r\n export function unsubscribeMailingListAsync (\r\n context: IContext, mailingListId:\r\n string,\r\n sourceId:\r\n string,\r\n email:\r\n string\r\n ): AsyncResult {\r\n const request = unsubscribeMailingListInput(mailingListId, sourceId, email);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function offerSelectionQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function offerSelectionInput (\r\n customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n offerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = offerSelectionQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'OfferSelection',\r\n true, \r\n DataServiceEntities.rsmOfferSelectionsResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmOfferSelectionsResponse' },\r\n { \r\n CustomerId: customerId,\r\n WineClubId: wineClubId,\r\n OfferId: offerId\r\n }\r\n );\r\n }\r\n \r\n export function offerSelectionAsync (\r\n context: IContext, customerId:\r\n string,\r\n wineClubId:\r\n string,\r\n offerId:\r\n string\r\n ): AsyncResult {\r\n const request = offerSelectionInput(customerId, wineClubId, offerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function getSalesPickOrdersQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function getSalesPickOrdersInput (\r\n queryResultSettings: IQueryResultSettings, customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = getSalesPickOrdersQuery().resultSettings(queryResultSettings);\r\n return query.createDataServiceRequestForOperation(\r\n 'GetSalesPickOrders',\r\n false, {},\r\n 'true',\r\n { bypassCache: 'get', returnEntity: 'Entities.SalesOrder' },\r\n { \r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function getSalesPickOrdersAsync (\r\n context: IContext, customerId:\r\n string\r\n ): AsyncResult {\r\n const request = getSalesPickOrdersInput(\r\n context.queryResultSettings || {}, customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function shipCompliantRequestByCartQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function shipCompliantRequestByCartInput (\r\n cartId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = shipCompliantRequestByCartQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'ShipCompliantRequestByCart',\r\n true, \r\n DataServiceEntities.ShipComplianceResponseObjectExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IShipComplianceResponseObject' },\r\n { \r\n CartId: cartId\r\n }\r\n );\r\n }\r\n \r\n export function shipCompliantRequestByCartAsync (\r\n context: IContext, cartId:\r\n string\r\n ): AsyncResult {\r\n const request = shipCompliantRequestByCartInput(cartId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function subscriptionCancelQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function subscriptionCancelInput (\r\n subscriptionId:\r\n string,\r\n customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = subscriptionCancelQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'SubscriptionCancel',\r\n true, \r\n DataServiceEntities.rsmSubscriptionCancelResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmSubscriptionCancelResponse' },\r\n { \r\n SubscriptionId: subscriptionId,\r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function subscriptionCancelAsync (\r\n context: IContext, subscriptionId:\r\n string,\r\n customerId:\r\n string\r\n ): AsyncResult {\r\n const request = subscriptionCancelInput(subscriptionId, customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function subscriptionPauseQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function subscriptionPauseInput (\r\n subscriptionId:\r\n string,\r\n customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = subscriptionPauseQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'SubscriptionPause',\r\n true, \r\n DataServiceEntities.rsmSubscriptionPauseResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmSubscriptionPauseResponse' },\r\n { \r\n SubscriptionId: subscriptionId,\r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function subscriptionPauseAsync (\r\n context: IContext, subscriptionId:\r\n string,\r\n customerId:\r\n string\r\n ): AsyncResult {\r\n const request = subscriptionPauseInput(subscriptionId, customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function subscriptionResumeQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function subscriptionResumeInput (\r\n subscriptionId:\r\n string,\r\n customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = subscriptionResumeQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'SubscriptionResume',\r\n true, \r\n DataServiceEntities.rsmSubscriptionResumeResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmSubscriptionResumeResponse' },\r\n { \r\n SubscriptionId: subscriptionId,\r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function subscriptionResumeAsync (\r\n context: IContext, subscriptionId:\r\n string,\r\n customerId:\r\n string\r\n ): AsyncResult {\r\n const request = subscriptionResumeInput(subscriptionId, customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function subscriptionUpdateQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function subscriptionUpdateInput (\r\n subscriptionId:\r\n string,\r\n subscriptionName:\r\n string,\r\n nextOrderDate:\r\n string,\r\n deliveryPostalAddress:\r\n string,\r\n frequency:\r\n string,\r\n customerId:\r\n string,\r\n cardId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = subscriptionUpdateQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'SubscriptionUpdate',\r\n true, \r\n DataServiceEntities.rsmSubscriptionUpdateResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmSubscriptionUpdateResponse' },\r\n { \r\n SubscriptionId: subscriptionId,\r\n SubscriptionName: subscriptionName,\r\n NextOrderDate: nextOrderDate,\r\n DeliveryPostalAddress: deliveryPostalAddress,\r\n Frequency: frequency,\r\n CustomerId: customerId,\r\n CardId: cardId\r\n }\r\n );\r\n }\r\n \r\n export function subscriptionUpdateAsync (\r\n context: IContext, subscriptionId:\r\n string,\r\n subscriptionName:\r\n string,\r\n nextOrderDate:\r\n string,\r\n deliveryPostalAddress:\r\n string,\r\n frequency:\r\n string,\r\n customerId:\r\n string,\r\n cardId:\r\n string\r\n ): AsyncResult {\r\n const request = subscriptionUpdateInput(subscriptionId, subscriptionName, nextOrderDate, deliveryPostalAddress, frequency, customerId, cardId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function subscriptionCardsQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function subscriptionCardsInput (\r\n customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = subscriptionCardsQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'SubscriptionCards',\r\n false, \r\n DataServiceEntities.rsmSubscriptionCardsResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmSubscriptionCardsResponse' },\r\n { \r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function subscriptionCardsAsync (\r\n context: IContext, customerId:\r\n string\r\n ): AsyncResult {\r\n const request = subscriptionCardsInput(customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n function subscriptionListQuery(): DataServiceQuery {\r\n return new DataServiceQuery();\r\n }\r\n \r\n \r\n export function subscriptionListInput (\r\n customerId:\r\n string\r\n ): IDataServiceRequest {\r\n const query = subscriptionListQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'SubscriptionList',\r\n false, \r\n DataServiceEntities.rsmSubscriptionListResponseExtensionClass\r\n ,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmSubscriptionListResponse' },\r\n { \r\n CustomerId: customerId\r\n }\r\n );\r\n }\r\n \r\n export function subscriptionListAsync (\r\n context: IContext, customerId:\r\n string\r\n ): AsyncResult {\r\n const request = subscriptionListInput(customerId);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n \r\n \r\n // @ts-ignore\r\n function rSMWineClubSignUpEntityControllerQuery(wineClubId?: string): DataServiceQuery {\r\n const key = (wineClubId) ? { WineClubId: wineClubId } :null;\r\n return new DataServiceQuery(\"RSMWineClubSignUpEntityController\", \"rsmWineClubSignUpEntity\", DataServiceEntities.rsmWineClubSignUpEntityExtensionClass, key);\r\n }\r\n\r\n \r\n export function createWineClubSignUpInput(entityData: DataServiceEntities.IrsmWineClubSignUpEntity): IDataServiceRequest {\r\n const query = rSMWineClubSignUpEntityControllerQuery();\r\n return query.createDataServiceRequestForOperation('WineClubSignUp', true, DataServiceEntities.rsmWineClubSignUpResponseExtensionClass, 'false', {bypassCache: 'get', returnEntity: 'DataServiceEntities.IrsmWineClubSignUpResponse'}, {entityData: entityData });\r\n }\r\n\r\n \r\n export function wineClubSignUpAsync(context: IContext, entityData: DataServiceEntities.IrsmWineClubSignUpEntity): AsyncResult {\r\n const request = createWineClubSignUpInput(entityData);\r\n return callActionOrExecute(request, context.callerContext);\r\n }\r\n ","import { CacheType, IAction, IActionContext, IActionInput, ICommerceApiSettings, msdyn365Commerce } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Cart } from '@msdyn365-commerce/retail-proxy';\nimport Cookie from 'js-cookie';\n\nimport { copyAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { buildCacheKey } from './utilities/utils';\n\nimport { getCartState } from '@msdyn365-commerce/global-state';\n\n/**\n * Input class for getCheckoutCart data action\n */\nexport class GetCheckoutCartInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`ActiveCheckoutCart`, this.apiSettings);\n public getCacheObjectType = () => 'ActiveCheckoutCart';\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new GetCheckoutCartInput(inputData.requestContext.apiSettings);\n};\n\n// @ts-ignore\nconst CartCookieName: string = msdyn365Commerce.CartCookie || 'cart';\n\n/**\n * Data action to copy the cart for checkout actions\n */\nexport async function getCheckoutCart(input: GetCheckoutCartInput, ctx: IActionContext): Promise {\n const cartId = Cookie.get(CartCookieName) || '';\n if (cartId) {\n const currentCartState = await getCartState(ctx);\n const activeCart = currentCartState.cart;\n\n // check if there is an active cart and it isn't empty\n if (activeCart && Object.keys(activeCart).length > 0) {\n const checkoutCart = await copyAsync({ callerContext: ctx }, activeCart.Id, 2);\n\n if (checkoutCart) {\n return Array.isArray(checkoutCart) ? checkoutCart[0] : checkoutCart;\n }\n } else {\n ctx.trace(`[get-checkout-cart] Can't create a checkout cart since active cart is empty`);\n }\n }\n\n return {};\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-checkout-cart',\n action: >getCheckoutCart,\n input: createInput\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, SortColumn } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Refiner Compression:\n * Refiners contains a non-trivial amount of data that is required to successfully make\n * a refiner-based API call. To allow for deep-linking of refiners in the URL, refiner data\n * must be compressed so that URL max length is not exceeded. Refiners will be compressed into\n * the following array style index-based format:\n * [DataTypeValue, LeftValueBoundString, RefinerRecordId, RefinerSourceValue, RightValueBoundString, UnitText]\n */\nconst compressedRefinerKeys = ['DataTypeValue', 'LeftValueBoundString', 'RefinerRecordId', 'RefinerSourceValue', 'RightValueBoundString', 'UnitText'];\n\n/**\n * Hydrates compressed refiner data from URL\n * @param fullUrl The full URL of the page\n */\nexport const hydrateRefinersFromUrl = (requestContext: IRequestContext): ProductRefinerValue[] => {\n const compressedRefinerArray = parseQueryParam<(string | number)[][]>('refiners', requestContext);\n if (!compressedRefinerArray || !compressedRefinerArray.length) {\n return [];\n }\n\n return compressedRefinerArray.map((compressedRefiner) => {\n try {\n const parsedRefiner: ProductRefinerValue = {};\n compressedRefinerKeys.forEach((refinerKey, index) => {\n // @ts-ignore: This line is intentionally not typesafe\n parsedRefiner[refinerKey] = compressedRefiner[index];\n });\n return parsedRefiner;\n } catch(e) {\n return undefined;\n }\n }).filter(Boolean);\n};\n\n/**\n * Compressed a list of refiners for use in URLs\n * @param refiners The uncompressed refiners\n */\nexport const compressRefiners = (refiners: ProductRefinerValue[]) => {\n const compressedRefiners: (string | number)[][] = [];\n\n refiners.forEach((refiner) => {\n const compressedRefiner: (string | number)[] = [];\n compressedRefinerKeys.forEach((refinerKey) => {\n // @ts-ignore: This line is intentionally not typesafe\n compressedRefiner.push(refiner[refinerKey]);\n });\n compressedRefiners.push(compressedRefiner);\n });\n\n return compressedRefiners;\n};\n\n/**\n * Method which creates a URL contiaining serialized active refiners\n * @param fullUrl The Current URL of the page\n * @param refiners The refiners which should be added to the URL\n */\nexport const buildListPageUrl = (fullUrl: URL, refiners?: ProductRefinerValue[], sortingColumns?: SortColumn[], skipCount?: number) => {\n // Refiner Change flow\n if (refiners !== undefined) {\n if (!refiners.length) {\n fullUrl.searchParams.delete('refiners');\n } else {\n fullUrl.searchParams.set('refiners', JSON.stringify(compressRefiners(refiners)));\n }\n\n // Adding or removing a refiner means we want to always load page 1\n fullUrl.searchParams.delete('skip');\n return fullUrl.href;\n }\n\n if (sortingColumns !== undefined) {\n if(!sortingColumns.length) {\n fullUrl.searchParams.delete('sorting');\n } else {\n fullUrl.searchParams.set('sorting', JSON.stringify(sortingColumns));\n }\n\n // Changing the sort means always load page 1\n fullUrl.searchParams.delete('skip');\n return fullUrl.href;\n }\n\n if (skipCount) {\n fullUrl.searchParams.set('skip', skipCount.toString());\n }\n\n return fullUrl.href;\n};\n\n/**\n * Parses a query param from the query object of the request context\n * @param key The query parameter key\n * @param requestContext The request context\n */\nexport const parseQueryParam = (key: string, requestContext: IRequestContext): T | null => {\n if(requestContext.query && requestContext.query[key]) {\n return JSON.parse(decodeURIComponent(requestContext.query[key]));\n }\n return null;\n};\n\n/**\n * Gets the current URL of the page from the request context\n * @param requestContext The request context\n */\nexport const getCurrentUrl = (requestContext: IRequestContext): URL => {\n if(MsDyn365.isBrowser) {\n return new URL(window.location.href);\n } else {\n // NOTE: Typing on requestURL is incorrect\n if (requestContext.url.requestUrl.href) {\n return new URL(requestContext.url.requestUrl.href);\n } else {\n return new URL((requestContext.url.requestUrl));\n }\n }\n};\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport {\n buildCacheKey,\n QueryResultSettingsProxy\n} from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { convertToString, IQueryResultSettings, ProductRefinerValue, SortColumn } from '@msdyn365-commerce/retail-proxy';\nimport { toJS } from 'mobx';\nimport { hydrateRefinersFromUrl } from './url-utils';\n\nexport type listPageType = 'Category' | 'Search' | 'Unknown';\n\n/**\n * Get include attributes from config.\n */\nfunction getIncludeAttributes(inputData: ICreateActionContext, IGeneric>): boolean {\n if (inputData &&\n inputData.config &&\n inputData.config.includeAttributes !== undefined &&\n inputData.config.includeAttributes === true) {\n return true;\n }\n return false;\n}\n\n/**\n * BaseCollection Action Input\n */\nexport class BaseCollectionInput implements IActionInput {\n public pageType: listPageType;\n public category: number | undefined;\n public searchText: string | undefined;\n public refiners: ProductRefinerValue[];\n public queryResultSettings: IQueryResultSettings;\n public apiSettings: ICommerceApiSettings;\n public includeAttributes:boolean | undefined;\n public locale?:string;\n\n constructor(\n pageType: listPageType,\n apiSettings: ICommerceApiSettings,\n queryResultSettings: IQueryResultSettings,\n refiners: ProductRefinerValue[],\n category: number | undefined,\n searchText: string | undefined,\n includeAttributes: boolean |undefined,\n locale?: string\n ) {\n this.pageType = pageType;\n this.apiSettings = apiSettings;\n this.category = category;\n this.searchText = searchText;\n this.queryResultSettings = queryResultSettings;\n this.refiners = refiners;\n this.includeAttributes=includeAttributes;\n this.locale = locale;\n }\n public getCacheKey = () => {\n const queryResultSettings = {\n ...this.queryResultSettings.Paging,\n ...toJS(this.queryResultSettings.Sorting)\n };\n // tslint:disable \n const cacheKey = buildCacheKey(\n `${this.pageType}-${this.locale}-${this.category || this.searchText}-${this.refiners.map(refiner => `${refiner.RefinerRecordId + (refiner.LeftValueBoundString || '') + (refiner.RightValueBoundString || '')}-`)}-${convertToString(queryResultSettings)}`,\n this.apiSettings, this.locale\n ); \n return cacheKey;\n }\n \n public getCacheObjectType = () => 'CollectionActionResult';\n public dataCacheType = (): CacheType => 'request';\n}\n\n\n// TODO: Create a data model here or import one to capture the response of the action\nexport interface IGetFullProductsByCollectionData {\n text: string;\n}\n\nexport type CollectionClassConstructor = new (\n pageType: listPageType,\n apiSettings: ICommerceApiSettings,\n queryResultSettings: IQueryResultSettings,\n refiners: ProductRefinerValue[],\n category: number | undefined,\n searchText: string | undefined,\n includeAttributes: boolean | undefined,\n locale?: string\n) => BaseCollectionInput;\n\n/**\n * TODO: Use this function to create the input required to make the action call\n */\nexport const createBaseCollectionInput = (\n args: ICreateActionContext,\n inputClassConstuctor: CollectionClassConstructor\n): BaseCollectionInput => {\n const pageType =\n args.requestContext.urlTokens.pageType === 'Category' || (args.requestContext.query && args.requestContext.query.categoryId)\n ? 'Category'\n : 'Search';\n\n const queryResultSettings = QueryResultSettingsProxy.fromInputData(args).QueryResultSettings;\n const queryRefiners = hydrateRefinersFromUrl(args.requestContext);\n const includeAttributes=getIncludeAttributes(args);\n \n if(args.requestContext.query && args.requestContext.query.sorting) {\n queryResultSettings.Sorting = { Columns: JSON.parse(decodeURIComponent(args.requestContext.query.sorting)) };\n }\n\n if (pageType === 'Category') {\n return new inputClassConstuctor(\n pageType,\n args.requestContext.apiSettings,\n queryResultSettings,\n queryRefiners,\n +(args.requestContext.urlTokens.itemId || (args.requestContext.query && args.requestContext.query.categoryId) || 0),\n undefined,\n includeAttributes,\n args.requestContext.locale\n );\n } else if (pageType === 'Search' && args.requestContext.query && args.requestContext.query.q) {\n return new inputClassConstuctor(\n pageType,\n args.requestContext.apiSettings,\n queryResultSettings,\n queryRefiners,\n undefined,\n args.requestContext.query.q,\n includeAttributes,\n args.requestContext.locale\n )\n } else if (pageType === 'Search' && args.requestContext.query && args.requestContext.query.productId) {\n return new inputClassConstuctor(\n pageType,\n args.requestContext.apiSettings,\n queryResultSettings,\n queryRefiners,\n undefined,\n args.requestContext.query.productId,\n includeAttributes,\n args.requestContext.locale\n );\n }\n\n throw new Error('[getFullProductsForCollection]Unable to create input');\n};","import { buildCacheKey, getProductUrlSync, getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { CacheType, createObservableDataAction, IAction, IActionContext,IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { IDefaultPageSummaryConfig } from '../default-page-summary/default-page-summary.props.autogenerated';\nimport { IPageSummaryData } from '../IPageSummaryData';\n\n/** Product Page Summary Input */\nexport class ProductPageSummaryInput implements IActionInput {\n public apiSettings: ICommerceApiSettings;\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, apiSettings: ICommerceApiSettings) {\n this.config = config || {};\n this.apiSettings = apiSettings;\n }\n\n public getCacheObjectType = (): string => 'ProductPageSummary';\n public getCacheKey = (): string => `${buildCacheKey('ProductPageSummary', this.apiSettings)}-${this.config.title}`;\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createGetSelectedVariantInput = (inputData: IActionContext): SelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new SelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId, []);\n } else {\n throw new Error('Unable to create SelectedVariantInput, no productId found on module config or query');\n }\n};\n\nconst action = async (input: ProductPageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n let simpleProductData;\n try {\n simpleProductData = await getSelectedVariant(createGetSelectedVariantInput(context), context);\n } catch (e) {\n // Do nothing, if there's an error we fall back to values defined from data\n }\n if (simpleProductData) {\n let productUrl: string | undefined;\n try {\n productUrl = getProductUrlSync(simpleProductData, context);\n // @ts-ignore - TODO: property exits in new version of SDK. Remove once released.\n const canonicalDomain = context.requestContext.canonicalDomain;\n if (productUrl && canonicalDomain) {\n productUrl = `https://${canonicalDomain}${productUrl}`;\n } else {\n productUrl = undefined;\n }\n } catch (e) {\n productUrl = undefined;\n }\n return {\n title: simpleProductData.Name,\n description: simpleProductData.Description,\n sharingImageUrl: simpleProductData.PrimaryImageUrl,\n canonicalUrl: productUrl,\n faviconUrl: config && config.faviconUrl\n };\n // If the action fails fallback to values defined from data\n } else if (config) {\n return {\n title: config.title,\n description: config.description,\n sharingImageUrl: config.sharingImage && config.sharingImage.src,\n faviconUrl: config && config.faviconUrl\n };\n } else {\n return {};\n }\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/product-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new ProductPageSummaryInput(args.config, args.requestContext.apiSettings);\n }\n});","\n/**\n * Copyright (c) 2018 Microsoft Corporation\n * Modules Registration\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n */\n\n/**\n * Register all available modules\n */\nexport const registerAllModules = (requiredModules) => {\n let binding = { modules: {}, dataActions: {} };\n const { log, error } = console;\n const detailedWebpackError = (msg, errorObject) => { error(msg); error(errorObject); process.env.NODE_ENV !== 'development' && error('Run in dev mode to see full list of errors'); process.exit(50); }\n const handleError = (modPath, errObject) => {\n detailedWebpackError('Error with path: ' + modPath, errObject);\n }\n if (requiredModules) {\n requiredModules = requiredModules.map((module) => module.toLowerCase());\n }\n const isNotRegistered = (moduleName) => {\n return !requiredModules || requiredModules.length <= 0 || requiredModules.findIndex((module) => module === moduleName) !== -1;\n };\n\n \n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n try {\n\n\n isNotRegistered('aad-generic') && (binding.modules['aad-generic'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-aad-generic' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/aad-generic/aad-generic'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'aad-generic',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/aad-generic'\n });\n \n\n isNotRegistered('accordion') && (binding.modules['accordion'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-accordion-accordion' */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion/accordion'),\n $type: 'moduleDefinition',\n da: [{name:'accordionExpandedState', path:'@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'accordion',\n p: 'accordion',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion'\n });\n \n\n isNotRegistered('accordion-item') && (binding.modules['accordion-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-accordion-accordion-item' */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion-item/accordion-item'),\n $type: 'moduleDefinition',\n da: [{name:'accordionExpandedState', path:'@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'accordion-item',\n p: 'accordion',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion-item'\n });\n \n\n isNotRegistered('account-address-tile') && (binding.modules['account-address-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-address-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-address-tile/account-address-tile'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-address-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-address-tile'\n });\n \n\n isNotRegistered('account-customer-balance') && (binding.modules['account-customer-balance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-customer-balance' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance/account-customer-balance'),\n $type: 'contentModule',\n da: [{name:'balance', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-customer-balance',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance'\n });\n \n\n isNotRegistered('account-customer-balance-tile') && (binding.modules['account-customer-balance-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-customer-balance-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance-tile/account-customer-balance-tile'),\n $type: 'contentModule',\n da: [{name:'balance', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-customer-balance-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance-tile'\n });\n \n\n isNotRegistered('account-generic-tile') && (binding.modules['account-generic-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-generic-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-generic-tile/account-generic-tile'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-generic-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-generic-tile'\n });\n \n\n isNotRegistered('account-invoice-tile') && (binding.modules['account-invoice-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-invoice-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-invoice-tile/account-invoice-tile'),\n $type: 'contentModule',\n da: [{name:'invoices', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-invoice-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-invoice-tile'\n });\n \n\n isNotRegistered('account-loyalty') && (binding.modules['account-loyalty'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-loyalty' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty/account-loyalty'),\n $type: 'contentModule',\n da: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-loyalty',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty'\n });\n \n\n isNotRegistered('account-loyalty-tile') && (binding.modules['account-loyalty-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-loyalty-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty-tile/account-loyalty-tile'),\n $type: 'contentModule',\n da: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-loyalty-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty-tile'\n });\n \n\n isNotRegistered('account-management-address') && (binding.modules['account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-account-management-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/account-management-address/account-management-address'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-management-address',\n p: 'address',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/account-management-address'\n });\n \n\n isNotRegistered('account-order-templates-tile') && (binding.modules['account-order-templates-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-order-templates-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-order-templates-tile/account-order-templates-tile'),\n $type: 'contentModule',\n da: [{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 1},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-order-templates-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-order-templates-tile'\n });\n \n\n isNotRegistered('account-profile') && (binding.modules['account-profile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-profile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile/account-profile'),\n $type: 'contentModule',\n da: [{name:'attributeDefinitions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-attribute-definitions', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-profile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile'\n });\n \n\n isNotRegistered('account-profile-edit') && (binding.modules['account-profile-edit'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-profile-edit' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile-edit/account-profile-edit'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-profile-edit',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile-edit'\n });\n \n\n isNotRegistered('account-welcome-tile') && (binding.modules['account-welcome-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-welcome-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-welcome-tile/account-welcome-tile'),\n $type: 'contentModule',\n da: [{name:'accountInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-welcome-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-welcome-tile'\n });\n \n\n isNotRegistered('account-wishlist-tile') && (binding.modules['account-wishlist-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-wishlist-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-wishlist-tile/account-wishlist-tile'),\n $type: 'contentModule',\n da: [{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'account-wishlist-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/account-wishlist-tile'\n });\n \n\n isNotRegistered('back-top-footer') && (binding.modules['back-top-footer'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-back-top-footer' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/back-top-footer/back-top-footer'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'back-top-footer',\n p: 'footer',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/back-top-footer'\n });\n \n\n isNotRegistered('breadcrumb') && (binding.modules['breadcrumb'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-breadcrumb-breadcrumb' */\n '@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb/breadcrumb'),\n $type: 'contentModule',\n da: [{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'categoryPaths', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'breadcrumb',\n p: 'breadcrumb',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb'\n });\n \n\n isNotRegistered('business-account-address') && (binding.modules['business-account-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-business-account-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/business-account-address/business-account-address'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'business-account-address',\n p: 'address',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/business-account-address'\n });\n \n\n isNotRegistered('business-organization-list') && (binding.modules['business-organization-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-organization-list-business-organization-list' */\n '@msdyn365-commerce-modules/business-organization-list/dist/lib/modules/business-organization-list/business-organization-list'),\n $type: 'contentModule',\n da: [{name:'users', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'business-organization-list',\n p: 'business-organization-list',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/business-organization-list/dist/lib/modules/business-organization-list'\n });\n \n\n isNotRegistered('business-sign-up') && (binding.modules['business-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-account-management-business-sign-up' */\n '@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up/business-sign-up'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'business-sign-up',\n p: 'business-account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up'\n });\n \n\n isNotRegistered('buybox') && (binding.modules['buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-buybox-buybox' */\n '@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox/buybox'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productAvailableQuantity', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant', runOn: 0},{name:'productDimensions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant', runOn: 0},{name:'productPrice', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant', runOn: 0},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'buybox',\n p: 'buybox',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox'\n });\n \n\n isNotRegistered('carousel') && (binding.modules['carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-carousel-carousel' */\n '@msdyn365-commerce-modules/carousel/dist/lib/modules/carousel/carousel'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'carousel',\n p: 'carousel',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/carousel/dist/lib/modules/carousel'\n });\n \n\n isNotRegistered('cart') && (binding.modules['cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cart-cart' */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart/cart'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0},{name:'productAvailabilites', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0},{name:'wishlistItems', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'cart',\n p: 'cart',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/cart/dist/lib/modules/cart'\n });\n \n\n isNotRegistered('cart-icon') && (binding.modules['cart-icon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cart-cart-icon' */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon/cart-icon'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action', runOn: 1},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'cart-icon',\n p: 'cart',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon'\n });\n \n\n isNotRegistered('category-page-summary') && (binding.modules['category-page-summary'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-page-summary-category-page-summary' */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n $type: 'htmlHeadTagsModule',\n da: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'category-page-summary',\n p: 'page-summary',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary'\n });\n \n\n isNotRegistered('checkout') && (binding.modules['checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/checkout'),\n $type: 'containerModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1},{name:'products', path:'@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/actions/get-products-in-active-checkout-cart', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout'\n });\n \n\n isNotRegistered('checkout-billing-address') && (binding.modules['checkout-billing-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-checkout-billing-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-billing-address/checkout-billing-address'),\n $type: 'contentModule',\n da: [{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-billing-address',\n p: 'address',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/checkout-billing-address'\n });\n \n\n isNotRegistered('checkout-customer-account-payment') && (binding.modules['checkout-customer-account-payment'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-customer-account-payment' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-customer-account-payment/checkout-customer-account-payment'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'creditBalances', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-customer-account-payment',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-customer-account-payment'\n });\n \n\n isNotRegistered('checkout-delivery-options') && (binding.modules['checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-delivery-options' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-delivery-options/checkout-delivery-options'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-delivery-options',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-delivery-options'\n });\n \n\n isNotRegistered('checkout-gift-card') && (binding.modules['checkout-gift-card'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-gift-card' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-gift-card/checkout-gift-card'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-gift-card',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-gift-card'\n });\n \n\n isNotRegistered('checkout-guest-profile') && (binding.modules['checkout-guest-profile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-guest-profile' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile/checkout-guest-profile'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-guest-profile',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile'\n });\n \n\n isNotRegistered('checkout-loyalty') && (binding.modules['checkout-loyalty'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-loyalty' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-loyalty/checkout-loyalty'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'loyaltyTransactionEstimation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-transaction-estimation', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-loyalty',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-loyalty'\n });\n \n\n isNotRegistered('checkout-order-confirmation') && (binding.modules['checkout-order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-checkout-order-confirmation' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/checkout-order-confirmation/checkout-order-confirmation'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-order-confirmation',\n p: 'order-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/checkout-order-confirmation'\n });\n \n\n isNotRegistered('checkout-payment-instrument') && (binding.modules['checkout-payment-instrument'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-payment-instrument' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/checkout-payment-instrument'),\n $type: 'contentModule',\n da: [{name:'cardPaymentAcceptPoint', path:'@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/actions/get-card-payment-accept-point', runOn: 1},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-payment-instrument',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument'\n });\n \n\n isNotRegistered('checkout-pickup') && (binding.modules['checkout-pickup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-pickup' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-pickup/checkout-pickup'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-pickup',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-pickup'\n });\n \n\n isNotRegistered('checkout-section-container') && (binding.modules['checkout-section-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-section-container' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-section-container/checkout-section-container'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-section-container',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-section-container'\n });\n \n\n isNotRegistered('checkout-shipping-address') && (binding.modules['checkout-shipping-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-checkout-shipping-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-shipping-address/checkout-shipping-address'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'addressPurposes', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes', runOn: 0},{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions', runOn: 0},{name:'countryStates', path:'@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-shipping-address',\n p: 'address',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/address/dist/lib/modules/checkout-shipping-address'\n });\n \n\n isNotRegistered('checkout-terms-and-conditions') && (binding.modules['checkout-terms-and-conditions'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-terms-and-conditions' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-terms-and-conditions/checkout-terms-and-conditions'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'checkout-terms-and-conditions',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-terms-and-conditions'\n });\n \n\n isNotRegistered('content-block') && (binding.modules['content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-content-block-content-block' */\n '@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block/content-block'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'content-block',\n p: 'content-block',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block'\n });\n \n\n isNotRegistered('cookie-compliance') && (binding.modules['cookie-compliance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cookie-compliance-cookie-compliance' */\n '@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance/cookie-compliance'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'cookie-compliance',\n p: 'cookie-compliance',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance'\n });\n \n\n isNotRegistered('default-container') && (binding.modules['default-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-container' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container/default-container'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-container',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container'\n });\n \n\n isNotRegistered('default-container-2-slots') && (binding.modules['default-container-2-slots'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-container-2-slots' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-2-slots/default-container-2-slots'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-container-2-slots',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-2-slots'\n });\n \n\n isNotRegistered('default-container-3-slots') && (binding.modules['default-container-3-slots'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-container-3-slots' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-3-slots/default-container-3-slots'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-container-3-slots',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-container-3-slots'\n });\n \n\n isNotRegistered('default-external-script') && (binding.modules['default-external-script'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-external-script' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-external-script/default-external-script'),\n $type: 'scriptModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-external-script',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-external-script'\n });\n \n\n isNotRegistered('default-inline-script') && (binding.modules['default-inline-script'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-inline-script' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-inline-script/default-inline-script'),\n $type: 'scriptModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-inline-script',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-inline-script'\n });\n \n\n isNotRegistered('default-metatags') && (binding.modules['default-metatags'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-metatags' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-metatags/default-metatags'),\n $type: 'htmlHeadTagsModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-metatags',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-metatags'\n });\n \n\n isNotRegistered('default-page') && (binding.modules['default-page'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-default-page' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/default-page/default-page'),\n $type: 'pageModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-page',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/default-page'\n });\n \n\n isNotRegistered('default-page-summary') && (binding.modules['default-page-summary'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-page-summary-default-page-summary' */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n $type: 'htmlHeadTagsModule',\n da: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'default-page-summary',\n p: 'page-summary',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary'\n });\n \n\n isNotRegistered('fabrikam') && (binding.modules['fabrikam'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-fabrikam' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/fabrikam'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','content-block','promo-banner','text-block'],\n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'fabrikam',\n p: 'fabrikam-design-kit',\n \n pdp: '',\n \n themeSettings: 'fabrikam.theme.settings.json',\n md: 'node_modules/@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam'\n });\n \n\n isNotRegistered('footer-category') && (binding.modules['footer-category'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-footer-category' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-category/footer-category'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'footer-category',\n p: 'footer',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/footer-category'\n });\n \n\n isNotRegistered('footer-item') && (binding.modules['footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-footer-item' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item/footer-item'),\n $type: 'moduleDefinition',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'footer-item',\n p: 'footer',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item'\n });\n \n\n isNotRegistered('gift-card-balance-check') && (binding.modules['gift-card-balance-check'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-gift-card-balance-check' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/gift-card-balance-check/gift-card-balance-check'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'gift-card-balance-check',\n p: 'checkout',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/checkout/dist/lib/modules/gift-card-balance-check'\n });\n \n\n isNotRegistered('header') && (binding.modules['header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-header-header' */\n '@msdyn365-commerce-modules/header/dist/lib/modules/header/header'),\n $type: 'containerModule',\n da: [{name:'accountInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'header',\n p: 'header',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/header/dist/lib/modules/header'\n });\n \n\n isNotRegistered('iframe') && (binding.modules['iframe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-iframe-iframe' */\n '@msdyn365-commerce-modules/iframe/dist/lib/modules/iframe/iframe'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'iframe',\n p: 'iframe',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/iframe/dist/lib/modules/iframe'\n });\n \n\n isNotRegistered('invoices-list') && (binding.modules['invoices-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-invoice-invoices-list' */\n '@msdyn365-commerce-modules/invoice/dist/lib/modules/invoices-list/invoices-list'),\n $type: 'contentModule',\n da: [{name:'customer', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'invoices', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'invoices-list',\n p: 'invoice',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/invoice/dist/lib/modules/invoices-list'\n });\n \n\n isNotRegistered('list-page-summary') && (binding.modules['list-page-summary'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-page-summary-list-page-summary' */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n $type: 'htmlHeadTagsModule',\n da: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'list-page-summary',\n p: 'page-summary',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary'\n });\n \n\n isNotRegistered('loyalty-sign-up') && (binding.modules['loyalty-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-loyalty-sign-up' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-sign-up/loyalty-sign-up'),\n $type: 'contentModule',\n da: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'loyalty-sign-up',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-sign-up'\n });\n \n\n isNotRegistered('loyalty-terms') && (binding.modules['loyalty-terms'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-loyalty-terms' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-terms/loyalty-terms'),\n $type: 'containerModule',\n da: [{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'loyalty-terms',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-terms'\n });\n \n\n isNotRegistered('map') && (binding.modules['map'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-map-map' */\n '@msdyn365-commerce-modules/map/dist/lib/modules/map/map'),\n $type: 'contentModule',\n da: [{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'map',\n p: 'map',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/map/dist/lib/modules/map'\n });\n \n\n isNotRegistered('media-gallery') && (binding.modules['media-gallery'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-media-gallery-media-gallery' */\n '@msdyn365-commerce-modules/media-gallery/dist/lib/modules/media-gallery/media-gallery'),\n $type: 'contentModule',\n da: [{name:'mediaLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-by-id', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'media-gallery',\n p: 'media-gallery',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/media-gallery/dist/lib/modules/media-gallery'\n });\n \n\n isNotRegistered('navigation-menu') && (binding.modules['navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-navigation-menu-navigation-menu' */\n '@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu/navigation-menu'),\n $type: 'contentModule',\n da: [{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'navigation-menu',\n p: 'navigation-menu',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu'\n });\n \n\n isNotRegistered('order-confirmation') && (binding.modules['order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-confirmation' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-confirmation/order-confirmation'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'orderHydration', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations', runOn: 0},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-confirmation',\n p: 'order-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-confirmation'\n });\n \n\n isNotRegistered('order-details') && (binding.modules['order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-details' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-details/order-details'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'channels', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'orderHydration', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations', runOn: 0},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-details',\n p: 'order-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-details'\n });\n \n\n isNotRegistered('order-history') && (binding.modules['order-history'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-history' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-history/order-history'),\n $type: 'contentModule',\n da: [{name:'channelDeliveryOptionConfig', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration', runOn: 0},{name:'channels', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-history',\n p: 'order-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-management/dist/lib/modules/order-history'\n });\n \n\n isNotRegistered('order-template') && (binding.modules['order-template'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-template-order-template' */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/order-template'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'orderTemplate', path:'@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/actions/get-order-template', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-template',\n p: 'order-template',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template'\n });\n \n\n isNotRegistered('order-template-list') && (binding.modules['order-template-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-template-order-template-list' */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template-list/order-template-list'),\n $type: 'contentModule',\n da: [{name:'orderTemplates', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'order-template-list',\n p: 'order-template',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template-list'\n });\n \n\n isNotRegistered('organization-users-tile') && (binding.modules['organization-users-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-organization-users-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/organization-users-tile/organization-users-tile'),\n $type: 'contentModule',\n da: [{name:'users', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users-count', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'organization-users-tile',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/organization-users-tile'\n });\n \n\n isNotRegistered('password-reset') && (binding.modules['password-reset'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-password-reset' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset/password-reset'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'password-reset',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset'\n });\n \n\n isNotRegistered('password-reset-verification') && (binding.modules['password-reset-verification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-password-reset-verification' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset-verification/password-reset-verification'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'password-reset-verification',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset-verification'\n });\n \n\n isNotRegistered('place-holder-for-container-preview') && (binding.modules['place-holder-for-container-preview'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-place-holder-for-container-preview' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/place-holder-for-container-preview/place-holder-for-container-preview'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'place-holder-for-container-preview',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/place-holder-for-container-preview'\n });\n \n\n isNotRegistered('product-collection') && (binding.modules['product-collection'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-collection-product-collection' */\n '@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection/product-collection'),\n $type: 'containerModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'product-collection',\n p: 'product-collection',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection'\n });\n \n\n isNotRegistered('product-page-summary') && (binding.modules['product-page-summary'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-page-summary-product-page-summary' */\n '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary'),\n $type: 'htmlHeadTagsModule',\n da: [{name:'pageSummary', path:'@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'product-page-summary',\n p: 'page-summary',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary'\n });\n \n\n isNotRegistered('product-specification') && (binding.modules['product-specification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-specification-product-specification' */\n '@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification/product-specification'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productSpecificationData', path:'@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'product-specification',\n p: 'product-specification',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification'\n });\n \n\n isNotRegistered('promo-banner') && (binding.modules['promo-banner'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-promo-banner-promo-banner' */\n '@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner/promo-banner'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'promo-banner',\n p: 'promo-banner',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner'\n });\n \n\n isNotRegistered('ratings-histogram') && (binding.modules['ratings-histogram'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-ratings-histogram' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/ratings-histogram/ratings-histogram'),\n $type: 'contentModule',\n da: [{name:'ratingsReviewsState', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action', runOn: 1},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'ratings-histogram',\n p: 'ratings-reviews',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/ratings-histogram'\n });\n \n\n isNotRegistered('reviews-list') && (binding.modules['reviews-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-reviews-list' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/reviews-list/reviews-list'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'ratingsReviewsState', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action', runOn: 1},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 0},{name:'reviewsList', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-product-reviews', runOn: 0},{name:'userReview', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'reviews-list',\n p: 'ratings-reviews',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/reviews-list'\n });\n \n\n isNotRegistered('script-injector') && (binding.modules['script-injector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-core-components-script-injector' */\n '@msdyn365-commerce-modules/core-components/dist/lib/modules/script-injector/script-injector'),\n $type: 'scriptModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'script-injector',\n p: 'core-components',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/core-components/dist/lib/modules/script-injector'\n });\n \n\n isNotRegistered('search') && (binding.modules['search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-search-search' */\n '@msdyn365-commerce-modules/search/dist/lib/modules/search/search'),\n $type: 'contentModule',\n da: [{name:'searchState', path:'@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'search',\n p: 'search',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/search/dist/lib/modules/search'\n });\n \n\n isNotRegistered('search-result-container') && (binding.modules['search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-search-result-container-search-result-container' */\n '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/search-result-container'),\n $type: 'contentModule',\n da: [{name:'category', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category', runOn: 0},{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'featureProduct', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'listPageState', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/list-page-state', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-full-products-by-collection', runOn: 0},{name:'refiners', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-refiners-for-collection', runOn: 0},{name:'searchConfiguration', path:'@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-mapped-search-configuration', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'search-result-container',\n p: 'search-result-container',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container'\n });\n \n\n isNotRegistered('sign-in') && (binding.modules['sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-sign-in' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-in/sign-in'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'sign-in',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-in'\n });\n \n\n isNotRegistered('sign-up') && (binding.modules['sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-sign-up' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-up/sign-up'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'sign-up',\n p: 'account-management',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-up'\n });\n \n\n isNotRegistered('site-picker') && (binding.modules['site-picker'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-site-picker-site-picker' */\n '@msdyn365-commerce-modules/site-picker/dist/lib/modules/site-picker/site-picker'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'site-picker',\n p: 'site-picker',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/site-picker/dist/lib/modules/site-picker'\n });\n \n\n isNotRegistered('social-share') && (binding.modules['social-share'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-social-share-social-share' */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share/social-share'),\n $type: 'moduleDefinition',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'social-share',\n p: 'social-share',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share'\n });\n \n\n isNotRegistered('social-share-item') && (binding.modules['social-share-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-social-share-social-share-item' */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share-item/social-share-item'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'social-share-item',\n p: 'social-share',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share-item'\n });\n \n\n isNotRegistered('spacer') && (binding.modules['spacer'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-spacer-spacer' */\n '@msdyn365-commerce-modules/spacer/dist/lib/modules/spacer/spacer'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'spacer',\n p: 'spacer',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/spacer/dist/lib/modules/spacer'\n });\n \n\n isNotRegistered('starter') && (binding.modules['starter'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-starter-theme-pack-starter' */\n '@msdyn365-commerce-modules/starter-theme-pack/dist/lib/modules/starter/starter'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['content-block','promo-banner','text-block'],\n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'starter',\n p: 'starter-theme-pack',\n \n pdp: '',\n \n themeSettings: 'starter.theme.settings.json',\n md: 'node_modules/@msdyn365-commerce-modules/starter-theme-pack/dist/lib/modules/starter'\n });\n \n\n isNotRegistered('store-selector') && (binding.modules['store-selector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-store-selector-store-selector' */\n '@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector/store-selector'),\n $type: 'contentModule',\n da: [{name:'availabilitiesWithHours', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby', runOn: 1},{name:'storeLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'store-selector',\n p: 'store-selector',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector'\n });\n \n\n isNotRegistered('tab') && (binding.modules['tab'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tab-tab' */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab/tab'),\n $type: 'moduleDefinition',\n da: [{name:'activeTabState', path:'@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'tab',\n p: 'tab',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/tab/dist/lib/modules/tab'\n });\n \n\n isNotRegistered('tab-item') && (binding.modules['tab-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tab-tab-item' */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab-item/tab-item'),\n $type: 'moduleDefinition',\n da: [{name:'activeTabState', path:'@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'tab-item',\n p: 'tab',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/tab/dist/lib/modules/tab-item'\n });\n \n\n isNotRegistered('text-block') && (binding.modules['text-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-text-block-text-block' */\n '@msdyn365-commerce-modules/text-block/dist/lib/modules/text-block/text-block'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'text-block',\n p: 'text-block',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/text-block/dist/lib/modules/text-block'\n });\n \n\n isNotRegistered('video-player') && (binding.modules['video-player'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-video-player-video-player' */\n '@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player/video-player'),\n $type: 'contentModule',\n da: [],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'video-player',\n p: 'video-player',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player'\n });\n \n\n isNotRegistered('wishlist-items') && (binding.modules['wishlist-items'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-wishlist-wishlist-items' */\n '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/wishlist-items'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'customerInformation', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0},{name:'featureState', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state', runOn: 0},{name:'productAvailability', path:'@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-product-availabilities-wishlist-items', runOn: 1},{name:'products', path:'@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-items-in-wishlists', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 1}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'wishlist-items',\n p: 'wishlist',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items'\n });\n \n\n isNotRegistered('write-review') && (binding.modules['write-review'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-write-review' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/write-review/write-review'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'userReview', path:'@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review', runOn: 0}],\n \n iNM: true,\n ns: '@msdyn365-commerce-modules',\n n: 'write-review',\n p: 'ratings-reviews',\n \n pdp: '',\n \n \n md: 'node_modules/@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/write-review'\n });\n \n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/addToCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/addToCart-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/copyCart-checkOut-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/copyCart-checkOut-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/getById-product-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/getById-product-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/getByIds-product-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/getByIds-product-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/getVariantsByDimensionValues-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/getVariantsByDimensionValues-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/purchase-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/purchase-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/readCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/readCart-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/removeFromCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/removeFromCart-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/core-components/dist/lib/actions/updateCart-telemetry.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/core-components/dist/lib/actions/updateCart-telemetry.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action';\n binding.dataActions[actionPath] = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action');\n registerActionId(actionPath);\n }\n\n if (isNotRegistered('accordion')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('accordion-item')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/accordion/dist/lib/data-actions/accordion-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-address-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-address-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-customer-balance')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-customer-balance')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-customer-balance-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-customer-balance-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-invoice-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-loyalty')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-loyalty-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-order-templates-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-order-templates-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-order-templates-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-profile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-attribute-definitions';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-attribute-definitions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-profile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-welcome-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('account-wishlist-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('breadcrumb')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-category-paths');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('breadcrumb')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('breadcrumb')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-account-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-account-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-account-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-account-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('business-organization-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('buybox')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-icon')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-icon')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-icon')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-icon')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('category-page-summary')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action';\n let dataAction = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/category-page-summary/category-page-summary.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/actions/get-products-in-active-checkout-cart';\n let dataAction = require('@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/actions/get-products-in-active-checkout-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-customer-account-payment')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-customer-account-payment')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer-balance');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-customer-account-payment')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-delivery-options')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-delivery-options')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-delivery-options')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-gift-card')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-guest-profile')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-guest-profile')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-loyalty')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-loyalty')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-transaction-estimation';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-transaction-estimation');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-loyalty')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/actions/get-card-payment-accept-point';\n let dataAction = require('@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/actions/get-card-payment-accept-point');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-payment-instrument')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-pickup')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-address-purposes');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state';\n let dataAction = require('@msdyn365-commerce-modules/address/dist/lib/actions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-terms-and-conditions')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('default-page-summary')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action';\n let dataAction = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/default-page-summary/default-page-summary.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('header')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('header')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('header')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/get-cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('invoices-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('invoices-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/invoices/get-invoices');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('list-page-summary')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action';\n let dataAction = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/list-page-summary/list-page-summary.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('loyalty-sign-up')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('loyalty-terms')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('map')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('media-gallery')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-by-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-media-locations-by-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('media-gallery')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('navigation-menu')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-confirmation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-channel-delivery-option-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-history')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-template')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/actions/get-order-template';\n let dataAction = require('@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/actions/get-order-template');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-template')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('order-template-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/order-templates/get-order-templates-preview');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('organization-users-tile')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users-count';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-organization-users-count');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-page-summary')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action';\n let dataAction = require('@msdyn365-commerce-modules/page-summary/dist/lib/modules/product-page-summary/product-page-summary.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-specification')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/product-specification/dist/lib/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-specification')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('ratings-histogram')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('ratings-histogram')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-product-reviews';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-product-reviews');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/ratings-reviews-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reviews-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-full-products-by-collection';\n let dataAction = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-full-products-by-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-mapped-search-configuration';\n let dataAction = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-mapped-search-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-refiners-for-collection';\n let dataAction = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/actions/get-refiners-for-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/list-page-state';\n let dataAction = require('@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/list-page-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('store-selector')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('store-selector')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-available-inventory-nearby');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('store-selector')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-store-location-information');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('tab')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('tab-item')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/tab/dist/lib/data-actions/tab-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-feature-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-items-in-wishlists';\n let dataAction = require('@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-items-in-wishlists');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-product-availabilities-wishlist-items';\n let dataAction = require('@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/actions/get-product-availabilities-wishlist-items');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wishlist-items')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('write-review')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review';\n let dataAction = require('@msdyn365-commerce-modules/ratings-reviews/dist/lib/actions/get-user-review');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('write-review')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n } catch (e) {\n handleError('-', e);\n }\n \n return binding;\n};","import {\r\n CurrentCategoryInput,\r\n FullProductInput,\r\n getFullProducts,\r\n getProductDetailsCriteriaFromActionInput,\r\n getProductsByCategory,\r\n ProductDetailsCriteria,\r\n QueryResultSettingsProxy\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\r\nimport {\r\n CacheType,\r\n createObservableDataAction,\r\n IAction,\r\n IActionContext,\r\n IActionInput,\r\n IAny,\r\n ICommerceApiSettings,\r\n ICreateActionContext,\r\n IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\nimport { getAttributeValuesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\n\r\nconst buildCacheKey = (\r\n base: string,\r\n apiSettings: ICommerceApiSettings\r\n): string => {\r\n return `${base}-chanId:${apiSettings.channelId}-catId:${apiSettings.catalogId}`;\r\n};\r\n/**\r\n * Chains getting the SelectedVariant by product id\r\n */\r\nclass ProductsByCategoryInput implements IActionInput {\r\n public categoryId?: number;\r\n public categorySlug?: string;\r\n public categoryName?: string;\r\n public catalogId: number;\r\n public currentCategory: CurrentCategoryInput;\r\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(\r\n category: CurrentCategoryInput,\r\n apiSettings: ICommerceApiSettings,\r\n queryResultSettingsProxy: QueryResultSettingsProxy\r\n ) {\r\n this.apiSettings = apiSettings;\r\n this.currentCategory = category;\r\n this.queryResultSettingsProxy = queryResultSettingsProxy;\r\n this.catalogId = apiSettings.catalogId;\r\n this.categoryId = category.categoryId;\r\n this.categorySlug = category.categorySlug;\r\n }\r\n\r\n public getCacheKey = () =>\r\n buildCacheKey(\r\n `${this.categoryId || this.categorySlug}|${this.catalogId}|${\r\n this.queryResultSettingsProxy.cacheKeyHint\r\n }`,\r\n this.apiSettings\r\n );\r\n public getCacheObjectType = () => 'Products-From-Search';\r\n public dataCacheType = (): CacheType => 'application';\r\n}\r\n/**\r\n * Product by category ID Input action\r\n */\r\nexport class ProductsWithAttributesByCategoryInput implements IActionInput {\r\n public categoryId: number;\r\n public channelId: number;\r\n public catalogId: number;\r\n public categoryInput: CurrentCategoryInput;\r\n public selectedProduct: FullProduct | undefined;\r\n public productsInput: ProductsByCategoryInput;\r\n public criteria: ProductDetailsCriteria;\r\n constructor(\r\n channelId: number,\r\n categoryId: number,\r\n categoryInput: CurrentCategoryInput,\r\n productsInput: ProductsByCategoryInput,\r\n criteria: ProductDetailsCriteria,\r\n catalogId?: number\r\n ) {\r\n this.channelId = channelId;\r\n this.productsInput = productsInput;\r\n this.categoryId = categoryId;\r\n this.categoryInput = categoryInput;\r\n this.criteria = criteria;\r\n this.catalogId = catalogId || 0;\r\n }\r\n public getCacheKey = () =>\r\n `${this.categoryId}:${this.channelId}:${this.catalogId}:ProductsByCategoryWithAttributes`;\r\n public getCacheObjectType = () => 'ProductsByCategoryWithAttributes';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n/**\r\n * Product by category ID Input action\r\n */\r\nexport const createAttributesForSelectedVariantInput = (\r\n inputData: ICreateActionContext>\r\n): ProductsWithAttributesByCategoryInput => {\r\n if (inputData && inputData.requestContext) {\r\n if (inputData.requestContext.query && !inputData.requestContext.query.top) {\r\n inputData.requestContext.query.top = '1000';\r\n }\r\n const currentCategory = new CurrentCategoryInput(inputData.requestContext);\r\n // uses eventCategoryId in config if set otherwise looks up categoryId from url\r\n if (inputData.config && inputData.config.eventCategoryId) {\r\n currentCategory.categoryId = inputData.config.eventCategoryId;\r\n }\r\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(\r\n inputData\r\n );\r\n return new ProductsWithAttributesByCategoryInput(\r\n +inputData.requestContext.apiSettings.channelId,\r\n +(currentCategory.categoryId || 0),\r\n currentCategory,\r\n new ProductsByCategoryInput(\r\n currentCategory,\r\n inputData.requestContext.apiSettings,\r\n queryResultSettingsProxy\r\n ),\r\n getProductDetailsCriteriaFromActionInput(inputData)\r\n );\r\n }\r\n\r\n throw new Error('Please specify categoryId query string in request.');\r\n};\r\n/**\r\n * Product by category ID Input action\r\n */\r\nexport async function getAttributesForSelectedVariantAction(\r\n input: ProductsWithAttributesByCategoryInput,\r\n ctx: IActionContext\r\n): Promise {\r\n const productSearchResult = await getProductsByCategory(\r\n input.productsInput,\r\n ctx\r\n );\r\n const fullProductInputs: FullProductInput[] = [];\r\n productSearchResult.forEach((searchResult: SimpleProduct) => {\r\n if (searchResult.RecordId !== undefined) {\r\n fullProductInputs.push(\r\n new FullProductInput(\r\n searchResult.RecordId,\r\n ctx.requestContext.apiSettings,\r\n input.criteria\r\n )\r\n );\r\n }\r\n });\r\n if (!fullProductInputs) {\r\n return {};\r\n }\r\n const products = await getFullProducts(fullProductInputs, ctx);\r\n // @ts-ignore\r\n ctx.isMaxDepthExceeded = () => false;\r\n\r\n return Promise.all(products.map(async (product: FullProduct) => {\r\n const attribute = await getAttributeValuesAsync(\r\n { callerContext: ctx, queryResultSettings: {} },\r\n product.ProductDetails.RecordId,\r\n input.channelId,\r\n input.catalogId\r\n );\r\n\r\n // @ts-ignore\r\n product.ProductAttributes = attribute;\r\n return product;\r\n }));\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getAttributesForSelectedVariantAction,\r\n input: createAttributesForSelectedVariantInput\r\n});\r\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput, IMSDyn365Window } from '@msdyn365-commerce/core';\nimport { Cart } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo, TelemetryEvent } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * CopyCart data action pre-hook\n * @param inputs Data action inputs\n */\nconst beforeCopyCart = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\n/**\n * Fires an CheckOut event after CopyCart data action completed\n * @param _inputs Data action inputs\n * @param cart New checkout cart\n * @param actionContext Action context\n */\nconst afterCopyCart = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const cartObject = Array.isArray(cart) ? cart[0] : cart;\n let cartLineProductUnits: IProductInfo[] = [];\n\n // Collect info on products in the cart\n if (cartObject && cartObject.CartLines && Array.isArray(cartObject.CartLines) && cartObject.CartLines.length > 0) {\n try {\n cartLineProductUnits = await getProductInfoFromCartLinesAsync(cartObject.CartLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('CopyCart post-data action hook failed to process cart lines.', error);\n }\n }\n\n // Fire Checkout event\n window._msdyn365.telemetry.logEvent(TelemetryEvent.CheckOut, {\n cartId: cartObject.Id,\n cartVersion: cartObject.Version ? cartObject.Version.toString() : '',\n products: cartLineProductUnits,\n orderId: cartObject.OrderNumber ? cartObject.OrderNumber.toString() : ''\n });\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/Copy',\n postReaderHook: afterCopyCart,\n preReaderHook: beforeCopyCart\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ChannelDeliveryOption, FeatureState, ItemAvailability, OrgUnitAvailability, OrgUnitLocation, ProductWarehouseInventoryInformation, SearchArea, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { getChannelDeliveryOptionsAsync, getOrgUnitLocationsByAreaAsync, getStoreHoursAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport {FeatureStateInput, getFeatureStateAction} from './get-feature-state';\nimport { IFullOrgUnitAvailability } from './utilities/full-org-unit-availability';\nimport { IProductInventoryInformation } from './utilities/product-inventory-information';\nimport { mapProductInventoryInformation } from './utilities/product-inventory-utils';\n\n/**\n * Get selected variant action input class\n */\nexport class GetFullAvailableInventoryNearbyInput implements IActionInput {\n public latitude?: number;\n public longitude?: number;\n public radius?: number;\n public productId?: number;\n public DistanceUnitValue?: number;\n public IgnoreLocation?: boolean;\n\n constructor(_productId?: number, _latitude?: number, _longitude?: number, _radius?: number, _DistanceUnitValue?: number, _IgnoreLocation?: boolean) {\n this.productId = _productId;\n this.latitude = _latitude;\n this.longitude = _longitude;\n this.radius = _radius;\n this.DistanceUnitValue = _DistanceUnitValue;\n this.IgnoreLocation = _IgnoreLocation;\n }\n\n public getCacheKey = () => `GetFullAvailableInventoryNearbyInputCache`;\n public getCacheObjectType = () => 'GetFullAvailableInventoryNearbyInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action\n * @param inputData The input data passed to the createInput method\n */\nexport const createGetFullAvailableInventoryNearbyInput = (inputData: ICreateActionContext>): GetFullAvailableInventoryNearbyInput => {\n return new GetFullAvailableInventoryNearbyInput();\n};\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n */\nexport async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateAction(new FeatureStateInput(), context);\n}\n\n/**\n * Action method for the getSelectedVariant data aciton\n * @param input The action input class\n * @param ctx The action context\n */\nexport async function getFullAvailableInventoryNearbyAction(\n input: GetFullAvailableInventoryNearbyInput,\n ctx: IActionContext\n): Promise {\n // No valid product we want to return undefined so module knows there are no results yet\n if (!input.productId) {\n return undefined;\n }\n\n if (((!input.radius && input.radius !== 0) || !input.latitude || !input.longitude) && !input.IgnoreLocation) {\n // No valid location we want to return empty array so module can show no locations message\n return [];\n }\n\n const searchArea: SearchArea = {\n Latitude: input.latitude,\n Longitude: input.longitude,\n Radius: input.radius,\n DistanceUnitValue: input.DistanceUnitValue || 0 // 0 is miles\n };\n\n const featureState = await getFeatureState(ctx);\n const retailMulitplePickupMFeatureState = featureState?.find(item => item.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature')?.IsEnabled;\n\n return getEstimatedAvailabilityAsync({callerContext: ctx}, {ProductIds: [input.productId], SearchArea: searchArea, DefaultWarehouseOnly:false, FilterByChannelFulfillmentGroup: true})\n .then(async (productWarehouseInformation: ProductWarehouseInventoryInformation) => {\n const productInventoryInformation = mapProductInventoryInformation(ctx, productWarehouseInformation?.ProductWarehouseInventoryAvailabilities);\n return getOrgUnitLocationsByAreaAsync({callerContext: ctx}, searchArea)\n .then(async (stores: OrgUnitLocation[]) => {\n // Constructing a store mapping based on the InventoryId.\n const storeMap = new Map();\n stores.forEach(store => {\n if(store.InventoryLocationId) {\n storeMap.set(store.InventoryLocationId, store);\n }\n });\n\n let locationDeliveryOptions: ChannelDeliveryOption[] | undefined = [];\n // if mulitple pickup mode is enable then call getchanneldeliveryoption\n if(retailMulitplePickupMFeatureState) {\n const orgUnitChannel = stores.map(store => store.ChannelId);\n locationDeliveryOptions = await _getLocationPickUpDeliveryModes(orgUnitChannel, ctx);\n }\n\n const availabilityPromiseList = stores.map(store => {\n const locationDeliveryOption = locationDeliveryOptions?.find(_channeldeliveryoption => _channeldeliveryoption.ChannelId === store.ChannelId);\n return _getAvailabilityWithHours(store, productInventoryInformation, storeMap,ctx, locationDeliveryOption);\n });\n\n return Promise.all(availabilityPromiseList);\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby] error getting Available Inventory Nearby');\n ctx.trace(error.message);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug(`[GetFullAvailableInventoryNearby] error getting Available Inventory Nearby`);\n return [];\n });\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby][getEstimatedAvailabilityAsync] error getting availability product warehouse information.');\n ctx.trace(error.message);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug(`[GetFullAvailableInventoryNearby][getEstimatedAvailabilityAsync] error getting availability product warehouse information.`);\n return [];\n });\n}\n\n/**\n * Action method that obtains the store information along with store hours and product availability\n * @param orgUnitLocation The org unit location\n * @param productWarehouseInventoryInformation The product ware house information\n * @param storeMap a map that contains store information group by the inventory location id\n * @param ctx The action context\n */\nasync function _getAvailabilityWithHours(\n orgUnitLocation: OrgUnitLocation,\n productInventoryInformation: IProductInventoryInformation[],\n storeMap: Map,\n ctx: IActionContext, channelDeleiveryOptions: ChannelDeliveryOption | undefined): Promise {\n if (!orgUnitLocation || !orgUnitLocation.OrgUnitNumber) {\n return { OrgUnitAvailability: undefined };\n }\n\n return getStoreHoursAsync({ callerContext: ctx}, orgUnitLocation.OrgUnitNumber)\n .then((hours: StoreHours) => {\n const itemAvailabilities: ItemAvailability[] = [];\n if(productInventoryInformation\n && storeMap) {\n productInventoryInformation.forEach(element => {\n if(element.InventLocationId && storeMap.has(element.InventLocationId) && element.InventLocationId === orgUnitLocation.InventoryLocationId) {\n itemAvailabilities.push({AvailableQuantity:element.ProductAvailableQuantity?.AvailableQuantity});\n }\n });\n }\n\n const availability: OrgUnitAvailability = {\n OrgUnitLocation: orgUnitLocation,\n ItemAvailabilities: itemAvailabilities\n };\n\n if (hours && !(hours instanceof Error)) {\n return { OrgUnitAvailability: availability, StoreHours: hours, ProductInventoryInformation: productInventoryInformation, OrgUnitPickUpDeliveryModes : channelDeleiveryOptions };\n }\n\n return { OrgUnitAvailability: availability, ProductInventoryInformation: productInventoryInformation, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions };\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby] error getting availability with hours');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[GetFullAvailableInventoryNearby] error getting availability with hours`);\n return { OrgUnitAvailability: {} };\n });\n}\n\n/**\n * Action method that obtains the channel delivery option information\n * @param channelCollection The org unit channel Id list\n * @param ctx The action context\n */\nasync function _getLocationPickUpDeliveryModes(\n channelCollection: (number| undefined)[],\n ctx: IActionContext): Promise {\n if (channelCollection?.length === 0 || channelCollection === undefined) {\n return undefined;\n }\n\n const channelIdList: number[] = [];\n channelCollection?.map(id => {\n if(id !== undefined) {\n return channelIdList.push(id);\n }\n });\n\n // to get all channel pickup delivery mode filterOption should be 4\n return getChannelDeliveryOptionsAsync({ callerContext: ctx }, channelIdList, 4)\n .then((channelDeliveryOptions: ChannelDeliveryOption[]) => {\n\n if (channelDeliveryOptions && !(channelDeliveryOptions instanceof Error)) {\n return channelDeliveryOptions;\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby][getChannelDeliveryOptionsAsync] error getting availability with channel delivery options');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[GetFullAvailableInventoryNearby] [getChannelDeliveryOptionsAsync] error getting availability with channel delivery options`);\n return [];\n });\n}\n\n/**\n * The complete getFullAvailableInventoryNearby data action\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-available-inventory-nearby',\n action: >getFullAvailableInventoryNearbyAction,\n input: createGetFullAvailableInventoryNearbyInput\n});","import { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { CommerceListLine } from '@msdyn365-commerce/retail-proxy';\n\nimport { getByCustomerAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CommerceListsDataActions.g';\nimport { FullProductInput, getFullProducts, getProductDetailsCriteriaFromActionInput } from './index';\n\n/**\n * Input class for getActiveWishlistItems data action\n */\nexport class ActiveWishlistInput implements IActionInput {\n public getCacheKey = () => `ActiveWishlistItems`;\n public getCacheObjectType = () => 'ActiveWishlistItems';\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new ActiveWishlistInput();\n};\n\n/**\n * Calls the Retail API and returns a CommerceList object based on the passed GetCartInput\n */\nexport async function getActiveWishlistItems(input: ActiveWishlistInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n throw new Error('[getActiveWishlistItems]No valid Input was provided, failing');\n }\n\n if(ctx.requestContext.user.isAuthenticated) {\n const wishlists = await getByCustomerAsync({ callerContext: ctx, queryResultSettings: {} }, null);\n\n if(wishlists && wishlists.length > 0) {\n const productInputs: FullProductInput[] = [];\n if(wishlists[0].CommerceListLines) {\n wishlists[0].CommerceListLines.forEach((commerceListLine: CommerceListLine) => {\n if(commerceListLine.ProductId) {\n productInputs.push(new FullProductInput(commerceListLine.ProductId, ctx.requestContext.apiSettings, getProductDetailsCriteriaFromActionInput(ctx)));\n }\n });\n }\n\n if(productInputs.length > 0) {\n return getFullProducts(productInputs, ctx)\n .then(products => {\n if (products) {\n return products;\n } else {\n return [];\n }\n })\n .catch(error => {\n ctx.trace(error);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getActiveWishlistItems]Unable to hydrate cart with product information`);\n throw new Error('[getActiveWishlistItems]Unable to hydrate cart with product information');\n });\n } else {\n ctx.trace('No productIds found for wishlist');\n }\n } else {\n ctx.trace('[getActiveWishlistItems]Not able to get wishlists for the customer');\n return [];\n }\n }\n ctx.trace('[getActiveWishlistItems]User token not found for wishlists');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-items-in-wishlist',\n action: >getActiveWishlistItems,\n input: createInput\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput,\n ICommerceApiSettings, ICreateActionContext, isEmptyOrNullObject\n} from '@msdyn365-commerce/core';\nimport { getCheckoutState, ICheckoutState } from '@msdyn365-commerce/global-state';\nimport {\n getCardPaymentAcceptPointAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport {\n CardPaymentAcceptPoint\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport get from 'lodash/get';\n\nexport interface IGetCardPaymentAcceptPointInput {\n showBillingAddress?: boolean;\n paymenTenderType?: string;\n apiSettings: ICommerceApiSettings;\n}\n\n/**\n * GetCardPaymentAcceptPointInput - Input for create GetCardPaymentAcceptPoint\n */\nexport class GetCardPaymentAcceptPointInput implements IActionInput {\n public showBillingAddress?: boolean;\n public paymenTenderType?: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(input: IGetCardPaymentAcceptPointInput) {\n this.showBillingAddress = input.showBillingAddress;\n this.paymenTenderType = input.paymenTenderType;\n this.apiSettings = input.apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CardPaymentAcceptPoint${this.paymenTenderType ? `-${this.paymenTenderType}` : ''}`, this.apiSettings);\n public getCacheObjectType = () => `CardPaymentAcceptPoint`;\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createCheckoutPaymentInstrumentInput = (inputData: ICreateActionContext) => {\n // @ts-ignore\n const { showBillingAddress, paymenTenderType } = inputData.config;\n const getCardPaymentAcceptPointInput = {\n showBillingAddres: showBillingAddress,\n paymenTenderType: paymenTenderType,\n apiSettings: inputData.requestContext.apiSettings\n };\n\n return new GetCardPaymentAcceptPointInput(getCardPaymentAcceptPointInput);\n};\n\n/**\n * Calls the Retail API and returns a cart object based on the passed GetCartInput\n */\nexport async function getCardPaymentAcceptPointAction(\n input: GetCardPaymentAcceptPointInput,\n ctx: IActionContext\n): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing'));\n throw new Error('[getCardPaymentAcceptPointAction] No valid Input was provided, failing');\n }\n\n const { showBillingAddress, paymenTenderType } = input;\n const checkoutState: ICheckoutState = await getCheckoutState(ctx).catch((error: Error) => {\n ctx.telemetry.exception(error);\n throw error;\n });\n\n if (\n isEmptyOrNullObject(checkoutState) ||\n isEmptyOrNullObject(checkoutState.checkoutCart) ||\n isEmptyOrNullObject(checkoutState.checkoutCart.cart)\n ) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Unable to get cart'));\n throw new Error('[getCardPaymentAcceptPointAction] Unable to get cart');\n }\n\n if (!checkoutState.checkoutCart.cart.CartLines || !checkoutState.checkoutCart.cart.CartLines.length) {\n ctx.telemetry.exception(new Error('[getCardPaymentAcceptPointAction] Cart is empty'));\n throw new Error('[getCardPaymentAcceptPointAction] Cart is empty');\n }\n\n const requestUrl =\n typeof ctx.requestContext.url.requestUrl === 'string'\n ? new URL(ctx.requestContext.url.requestUrl)\n : ctx.requestContext.url.requestUrl;\n const origin = get(window, 'location.origin') || requestUrl.origin;\n\n const cardPaymentAcceptSettings = {\n '@odata.type': '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardPaymentAcceptSettings',\n HostPageOrigin: origin,\n AdaptorPath: `${origin}/Connectors/` || origin,\n CardPaymentEnabled: false,\n CardTokenizationEnabled: true,\n ...(!showBillingAddress && { HideBillingAddress: true }),\n ...(paymenTenderType && { TenderTypeId: paymenTenderType }),\n PaymentAmount: 0\n };\n\n return getCardPaymentAcceptPointAsync(\n { callerContext: ctx, bypassCache: 'get' },\n checkoutState.checkoutCart.cart.Id,\n cardPaymentAcceptSettings,\n []\n )\n .then(cardPaymentAcceptPoint => {\n if (!cardPaymentAcceptPoint.AcceptPageUrl && !cardPaymentAcceptPoint.AcceptPageContent) {\n throw new Error(\n '[getCardPaymentAcceptPointAction] Payment Accept Page has neither return AcceptPageUrl nor AcceptPageContent in updatePaymentAcceptPageData'\n );\n }\n return cardPaymentAcceptPoint;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Unable to get Card Payment Accept Point');\n throw error;\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce/checkout-payment-instrument/get-card-payment-accept-point',\n action: >getCardPaymentAcceptPointAction,\n input: createCheckoutPaymentInstrumentInput\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductPrice, ProjectionDomain, SimpleProduct, AffiliationLoyaltyTier, CustomerAffiliation } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getActivePricesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput, getCustomer } from './index';\n\nimport * as semver from 'semver';\nimport { GetCustomerInput } from './get-customer';\n\n/**\n * Input class for the GetPriceForSelectedVariant Data Action\n */\nexport class PriceForSelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public selectedProduct: SimpleProduct | undefined;\n public customerId?: string;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, customerId?: string) {\n this.productId = productId;\n this.channelId = channelId;\n this.selectedProduct = selectedProduct;\n this.customerId = customerId || '';\n }\n\n public getCacheKey = () => `PriceForSelectedVariant`;\n public getCacheObjectType = () => 'Price';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The createInput method for the GetPriceForSelectedVariantDataAction\n * @param inputData The input data for the createInput method\n */\nexport const createActivePriceForSelectedVariantInput = (inputData: ICreateActionContext>): PriceForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new PriceForSelectedVariantInput(\n +productId,\n +inputData.requestContext.apiSettings.channelId,\n undefined);\n } else {\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * The Action Method for the GetPriceForSelectedVariant Data Action\n * Pulls the currently selected variant from the cache using the getSelectedVariant data action, and gets it's current contextual price\n * via the getActivePrice RetailServer API\n */\nexport async function getPriceForSelectedVariantAction(\n input: PriceForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n let affliations:AffiliationLoyaltyTier[] = [];\n if(ctx.requestContext && ctx.requestContext.user && ctx.requestContext.user.isAuthenticated)\n {\n const customerInput = new GetCustomerInput(ctx.requestContext.apiSettings);\n const customer = await getCustomer(customerInput, ctx);\n if(customer && customer.CustomerAffiliations)\n {\n customer.CustomerAffiliations.forEach((affliation: CustomerAffiliation) => {\n var aff:AffiliationLoyaltyTier = {AffiliationId:affliation.RetailAffiliationId, CustomerId: customer.AccountNumber}\n affliations.push(aff);\n \n });\n }\n }\n return Promise.resolve()\n // @ts-ignore: Promise vs. ObservablePromise typing conflict\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n\n return getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n })\n .then((productResult: SimpleProduct | null) => {\n const projectDomain: ProjectionDomain = { ChannelId: +ctx.requestContext.apiSettings.channelId, CatalogId: +ctx.requestContext.apiSettings.catalogId };\n\n const activeProduct: SimpleProduct | undefined = productResult; \n if (activeProduct) {\n \n return getActivePricesAsync(\n { callerContext: ctx, queryResultSettings: {} },\n projectDomain,\n [activeProduct.RecordId],\n new Date(),\n input.customerId || null,\n affliations,\n true\n // @ts-ignore\n ).then(response => {\n if(response && response.length > 0) {\n const productPrice = response[0];\n\n // If RS Verison < 9.16.0 (aka 10.0.6), customer contextual price won't be\n // included so instead just use AdjustedPrice\n if (semver.lt(ctx.requestContext.apiSettings.retailServerProxyVersion, '9.16.0')) {\n productPrice.CustomerContextualPrice = productPrice.AdjustedPrice;\n }\n\n return productPrice;\n }\n throw new Error('[getPriceForSelectedVariantAction]Invalid response recieved from calculateProductPrice');\n });\n }\n\n return null;\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getPriceForSelectedVariantAction]Error executing action`);\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-price-for-selected-variant',\n action: >getPriceForSelectedVariantAction,\n input: createActivePriceForSelectedVariantInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { IActionContext } from '@msdyn365-commerce/core-internal';\nimport { CartLine, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getByIdAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { IProductInfo } from '@msdyn365-commerce/telemetry-internal';\n\n/**\n * Converts cart line products into promise of array of product info\n * @param cartLines Cart Lines with product info to collect\n * @param actionContext Action context\n * @returns Array of product info\n */\nexport const getProductInfoFromCartLinesAsync = async (cartLines: CartLine[], actionContext: IActionContext): Promise => {\n if (actionContext.requestContext.channel === undefined) {\n throw new Error('Unable to make product call, channel ID not provided');\n }\n\n const productPromises: Promise[] = [];\n\n // Call GetById API for all products in cartLines\n for (let i = 0; i < cartLines.length; i++) {\n const cartLine: CartLine = cartLines[i];\n\n if (cartLine.ProductId) {\n // The product id in cartLine actually contains recordId and not master product id so we can use it up here to lookup product.\n productPromises.push(\n getByIdAsync({ callerContext: actionContext }, cartLine.ProductId, actionContext.requestContext.channel.RecordId).then(\n result => {\n // Construct basic IProductInfo object for product\n const productInfo = getProductInfoFromSimpleProduct(result);\n\n // Attach fields from the CartLine\n productInfo.productPrice = cartLine.Price ? cartLine.Price.toString() : '';\n productInfo.productQuantity = cartLine.Quantity ? cartLine.Quantity.toString() : '';\n\n return productInfo;\n },\n reason => {\n throw new Error(`Failed to get product details for product ${cartLine.ProductId}.\\n${reason}`);\n }\n )\n );\n }\n }\n\n // Return promise for array of product results\n return Promise.all(productPromises);\n};\n\n/**\n * Converts a SimpleProduct object into an IProductInfo object\n * @param simpleProduct Simple Product object\n * @returns Populated IProductInfo\n */\nexport const getProductInfoFromSimpleProduct = (simpleProduct: SimpleProduct): IProductInfo => {\n const recordId = simpleProduct.RecordId || '';\n\n return {\n // If master product id is not available then product record id is master product id\n productId: simpleProduct.MasterProductId ? simpleProduct.MasterProductId.toString() : recordId.toString(),\n productSku: recordId ? recordId.toString() : '',\n productName: simpleProduct.Name || simpleProduct.Description || '',\n productPrice: simpleProduct.Price ? simpleProduct.Price.toString() : '',\n productChannelId: '', // Not needed for each product, sent as part of all events\n productChannelName: '',\n productCategoryId: '',\n productCategoryName: '',\n productQuantity: '', // Cannot be deteremined from SimpleProduct, will be added from CartLine later\n productCurrency: '' // Not needed for each product, sent as part of all events with product data\n };\n};\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport { generateProductImageUrl } from '@msdyn365-commerce-modules/retail-actions';\r\nimport MsDyn365, { createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\r\nimport { AsyncResult, ProductSearchCriteria, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\r\nimport { searchByCriteriaAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport {\r\n BaseCollectionInput,\r\n createBaseCollectionInput\r\n} from './base-collection-action';\r\nimport { sortColumName } from './get-mapped-search-configuration';\r\nimport { IFullProductsSearchResultsWithCount } from './IFullProductsSearchResultsWithCount';\r\nimport { ListPageStateInput } from './list-page-state';\r\n\r\n/**\r\n * GetFullProductsByCollection Action Input\r\n */\r\nexport class GetFullProductsByCollectionInput extends BaseCollectionInput implements IActionInput {\r\n public getCacheObjectType = () => 'FullProductSearchResult';\r\n public dataCacheType = () => {\r\n if (\r\n this.pageType !== 'Category' ||\r\n (this.refiners && this.refiners.length > 0) ||\r\n (this.queryResultSettings && this.queryResultSettings.Sorting && this.queryResultSettings.Sorting.Columns && this.queryResultSettings.Sorting.Columns.length > 0)\r\n ) {\r\n return 'request';\r\n } else {\r\n return 'application';\r\n }\r\n };\r\n}\r\n\r\n/*export interface IFullProductsSearchResultsWithCount {\r\n products: FullProductSearchResult[];\r\n count: number;\r\n}*/\r\n\r\n/**\r\n * createInput function which creates and actionInput used to fetch products for a list page.\r\n */\r\n\r\ninterface IInputArgs {\r\n itemsPerPage: number;\r\n showSortBy: boolean;\r\n showSortingByRelevance: boolean;\r\n showSortingByName: boolean;\r\n showSortingByPrice: boolean;\r\n showSortingByRating: boolean;\r\n}\r\n\r\nconst createInput = (args: ICreateActionContext): IActionInput => {\r\n const input = createBaseCollectionInput(args, GetFullProductsByCollectionInput);\r\n\r\n // Set Top\r\n if (input.queryResultSettings.Paging && args.config) {\r\n input.queryResultSettings.Paging.Top = args.config.itemsPerPage || 1;\r\n }\r\n\r\n // Set Skip\r\n if (input.queryResultSettings.Paging && args.requestContext.query && args.requestContext.query.skip) {\r\n input.queryResultSettings.Paging.Skip = +args.requestContext.query.skip;\r\n }\r\n\r\n if (args.config!.showSortBy && input.queryResultSettings.Sorting && input.queryResultSettings.Sorting.Columns === undefined) {\r\n\r\n let sortName:string = '';\r\n if(args.config!.showSortingByRelevance) {\r\n sortName = sortColumName.ranking;\r\n } else if(args.config!.showSortingByName) {\r\n sortName = sortColumName.name;\r\n } else if(args.config!.showSortingByPrice) {\r\n sortName = sortColumName.price;\r\n } else if(args.config!.showSortingByRating) {\r\n sortName = sortColumName.averageRating;\r\n }\r\n\r\n if(sortName) {\r\n input.queryResultSettings.Sorting = { Columns : [\r\n {\r\n ColumnName: sortName\r\n }\r\n ]};\r\n }\r\n }\r\n\r\n input.queryResultSettings.count = true;\r\n\r\n return input;\r\n};\r\n\r\n/**\r\n * Action function to fetch products for a list page\r\n */\r\nasync function action(\r\n input: GetFullProductsByCollectionInput,\r\n ctx: IActionContext\r\n): Promise {\r\n let promise: AsyncResult;\r\n const searchCriteriaInput: ProductSearchCriteria = {};\r\n searchCriteriaInput.Context = { ChannelId: ctx.requestContext.apiSettings.channelId, CatalogId: ctx.requestContext.apiSettings.catalogId };\r\n searchCriteriaInput.Refinement = input.refiners;\r\n searchCriteriaInput.IncludeAttributes = true;\r\n\r\n if (input.pageType === 'Category' || (ctx.requestContext.query && ctx.requestContext.query.categoryId)) {\r\n if (input.category) {\r\n searchCriteriaInput.CategoryIds = [input.category || 0];\r\n promise = searchByCriteriaAsync(\r\n {\r\n callerContext: ctx,\r\n queryResultSettings: input.queryResultSettings\r\n },\r\n searchCriteriaInput\r\n );\r\n } else {\r\n throw new Error(\r\n '[GetFullProductsForCollection]Category Page Detected, but no global categoryId found'\r\n );\r\n }\r\n } else {\r\n if (input.searchText) {\r\n searchCriteriaInput.SearchCondition = input.searchText;\r\n promise = searchByCriteriaAsync(\r\n {\r\n callerContext: ctx,\r\n queryResultSettings: input.queryResultSettings\r\n },\r\n searchCriteriaInput\r\n );\r\n } else {\r\n throw new Error(\r\n '[GetFullProductsForCollection]Search Page Detected, but no q= query parameter found'\r\n );\r\n }\r\n }\r\n\r\n const productSearchResults = await promise;\r\n\r\n const mappedProducts = productSearchResults.map(productSearchResult => {\r\n const newImageUrl = generateProductImageUrl(\r\n productSearchResult,\r\n ctx.requestContext.apiSettings\r\n );\r\n\r\n if (newImageUrl) {\r\n productSearchResult.PrimaryImageUrl = newImageUrl;\r\n }\r\n\r\n return (productSearchResult);\r\n });\r\n\r\n // Update ListPageState For SSR\r\n if (!MsDyn365.isBrowser) {\r\n ctx.update(new ListPageStateInput(), { totalProductCount: promise.metadata.count || 0, activeFilters: input.refiners });\r\n }\r\n\r\n return {\r\n products: mappedProducts,\r\n count: promise.metadata.count || 0\r\n };\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >action,\r\n input: createInput\r\n});\r\n","import { IGiftCardExtend } from '@msdyn365-commerce/global-state';\nimport { Address, GiftCard, TenderLine, TokenizedPaymentCard } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { action, computed, observable } from 'mobx';\n\n/**\n * State information related to what is needed to succesfully perform a checkout\n */\nexport class CheckoutState {\n @observable private _tokenizedPaymentCard?: TokenizedPaymentCard;\n @computed public get tokenizedPaymentCard(): Readonly {\n return this._tokenizedPaymentCard;\n }\n\n @observable private _tenderLine?: TenderLine;\n @computed public get tenderLine(): Readonly {\n return this._tenderLine;\n }\n\n @observable private _billingAddress?: Address;\n @computed public get billingAddress(): Readonly
{\n return this._billingAddress;\n }\n\n @observable private _shippingAddress?: Address;\n @computed public get shippingAddress(): Readonly
{\n return this._shippingAddress;\n }\n\n @observable private _cardPrefix?: string;\n @computed public get cardPrefix(): Readonly {\n return this._cardPrefix;\n }\n\n @observable private _giftCards: GiftCard[] = [];\n @computed public get giftCards(): Readonly {\n return this._giftCards;\n }\n\n @observable private _giftCardExtends: IGiftCardExtend[] = [];\n @computed public get giftCardExtends(): Readonly {\n return this._giftCardExtends;\n }\n\n @observable private _loyaltyCardNumber?: string;\n @computed public get loyaltyCardNumber(): Readonly {\n return this._loyaltyCardNumber;\n }\n\n @observable private _loyaltyAmount: number = 0;\n @computed public get loyaltyAmount(): Readonly {\n return this._loyaltyAmount;\n }\n\n @observable private _guestCheckoutEmail: string = '';\n @computed public get guestCheckoutEmail(): Readonly {\n return this._guestCheckoutEmail;\n }\n\n @observable private _isTermsAndConditionAccepted: boolean = false;\n @computed public get isTermsAndConditionAccepted(): Readonly {\n return this._isTermsAndConditionAccepted;\n }\n\n @observable private _customerAccountAmount: number = 0;\n @computed public get customerAccountAmount(): Readonly {\n return this._customerAccountAmount;\n }\n\n @action\n public updateTokenizedPaymentCard(newTokenizedPaymentCard: TokenizedPaymentCard): void {\n this._tokenizedPaymentCard = newTokenizedPaymentCard;\n }\n\n @action\n public updateTenderLine(newTenderLine?: TenderLine): void {\n this._tenderLine = newTenderLine;\n }\n\n @action\n public updateShippingAddress(newShippingAddress: Address): void {\n this._shippingAddress = newShippingAddress;\n }\n\n @action\n public updateBillingAddress(newBillingAddress: Address): void {\n this._billingAddress = newBillingAddress;\n }\n\n @action\n public updateCardPrefix(newCardPrefix: string): void {\n this._cardPrefix = newCardPrefix;\n }\n\n @action\n public removeGiftCard(giftCardNumber: string): void {\n this._giftCards = this._giftCards.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public removeGiftCardExtend(giftCardNumber: string): void {\n this._giftCardExtends = this._giftCardExtends.filter(giftCard => giftCard.Id !== giftCardNumber);\n }\n\n @action\n public addGiftCard(giftCard: GiftCard): void {\n this._giftCards = [giftCard, ...this._giftCards];\n }\n\n @action\n public addGiftCardExtend(giftCard: IGiftCardExtend): void {\n this._giftCardExtends = [giftCard, ...this._giftCards];\n }\n\n @action\n public updateLoyaltyCardNumber(newLoyaltyCardNumber: string): void {\n this._loyaltyCardNumber = newLoyaltyCardNumber;\n }\n\n @action\n public updateLoyaltyAmount(newAmount: number): void {\n this._loyaltyAmount = newAmount;\n }\n\n @action\n public updateGuestCheckoutEmail(newGuestCheckoutEmail: string): void {\n this._guestCheckoutEmail = newGuestCheckoutEmail;\n }\n\n @action\n public updateTermsAndConditionsAcceptance(newIsTermsAndConditionAccepted: boolean): void {\n this._isTermsAndConditionAccepted = newIsTermsAndConditionAccepted;\n }\n\n @action\n public updateCustomerAccountAmount(newAmount: number): void {\n this._customerAccountAmount = newAmount;\n }\n}\n","import msdyn365Commerce, { IParameterizeFeatureFlags } from '@msdyn365-commerce/core';\n\nexport function parameterize(name: string = '', sep = '-', parameterizeFeatureFlags:IParameterizeFeatureFlags = {}, neutralizedName?:string) {\n // if neutralizedName flag enabled, we use neutralizedName to construct string\n const candidateName = (msdyn365Commerce.platformSettings && msdyn365Commerce.platformSettings.enableUrlLocalization || parameterizeFeatureFlags.enableUrlLocalization)? name: neutralizedName || name;\n /*\n 1\t‘ ‘ (space)\t-> (single dash)\n 3\tAny character disallowed in URLs -> URL-encode\n 5\t‘ & ‘ (space ampersand space) -> (single dash)\n 6\t‘ - ‘ (space dash space) -> (single dash)\n 7\t‘ ‘ (2+ spaces) -> (single dash)\n 10\t[A-Z] (capital letters) -> [a-z] (lower-case)\n 12\tAny non-ASCII character outside of the set of disallowed characters -> URL-encode\n */\n if (parameterizeFeatureFlags.enableUrlEncoding || msdyn365Commerce.platformSettings && msdyn365Commerce.platformSettings.enableUrlEncoding) {\n // replace url reserved characters with dash, and remove front and end dash;\n // &*!() reserved characters that can not be encoded by encodeURIComponent()\n return encodeURIComponent(candidateName.toLowerCase().replace(/[\\s&*!()']+/g, '-').trim().replace(/\\-+/g, '-').replace(/^\\-+|\\-+$/g, ''));\n }\n return name\n .toLowerCase()\n .replace(/[^a-z0-9\\-_]+/g, ' ')\n .trim()\n .replace(/\\s+/g, sep);\n}\n","import { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { getParameterizeFeatureFlags, getUrlSync, IActionContext, IParameterizeFeatureFlags } from '@msdyn365-commerce/core';\nimport { parameterize } from './parameterize';\n\ninterface ICategoryMap {\n [RecordId: number]: CategoryHierarchy;\n}\n\n/**\n * Builds slugs for category\n */\nexport function getCategorySlug(category: CategoryHierarchy, categoryMap: ICategoryMap, parameterizeFeatureFlags?:IParameterizeFeatureFlags): string {\n if (!category || !category.Name) {\n // invalid category\n return '';\n }\n const categoryName = parameterize(category.Name, undefined, parameterizeFeatureFlags, category.NeutralizedName);\n if (!category.ParentCategory || category.ParentCategory === 0) {\n // base case assign url\n category.Slug = category.Slug || `/${categoryName}`;\n } else if (category.ParentCategory) {\n category.Slug = category.Slug || `${getCategorySlug(categoryMap[category.ParentCategory], categoryMap, parameterizeFeatureFlags)}/${categoryName}`;\n }\n\n return category.Slug || '';\n}\n\n/**\n * Gets Url for category hierarchy. Returns string and adds url to Url property of category hierarchy\n * @param category Category to generate URL for\n * @param categoryMap Dictionary of all categories\n */\nexport function getCategoryUrl(category: CategoryHierarchy, ctx?: IActionContext, categoryMap?: ICategoryMap): string | undefined {\n if (!category.Url && ctx && categoryMap) {\n if (!category.Slug) {\n const parameterizeFeatureFlags: IParameterizeFeatureFlags = ctx.requestContext? getParameterizeFeatureFlags(ctx):{};\n category.Slug = getCategorySlug(category, categoryMap, parameterizeFeatureFlags);\n }\n category.Url = getUrlSync('category', ctx, { category });\n }\n return category.Url;\n}\n","import { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { getUrlSync, IActionContext } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Syncronously creates a product url\n * @param product Simple product to get url from\n * @param category Category to add to product url\n */\nexport function getProductUrlSync(product: SimpleProduct, ctx: IActionContext, category?: CategoryHierarchy): string {\n const selectedProduct = { ...product, RecordId: product.MasterProductId || product.RecordId };\n\n return getProductPageUrlSync(selectedProduct.Name || '', selectedProduct.RecordId, ctx, category)!;\n}\n\n/**\n * Syncronously creates a product detail page url\n * @param name Simple product name\n * @param recordId Record id of product\n */\nexport function getProductPageUrlSync(name: string, recordId: number, ctx: IActionContext, category?: CategoryHierarchy): string {\n return getUrlSync('product', ctx, {\n product: {Name: name || '', RecordId: recordId},\n category\n })!;\n}","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { Cart, ChannelConfiguration, LoyaltyCard, LoyaltyPointRedemptionEstimate } from '@msdyn365-commerce/retail-proxy';\nimport { getMaxLoyaltyPointsToRedeemForTransactionBalanceAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { getOrgUnitConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport { getLoyalty, GetLoyaltyCardInput } from './index';\nimport { buildCacheKey } from './index';\n\n/**\n * Input class for the getLoyaltyCard data action\n */\nexport class GetLoyaltyTransactionEstimationInput implements IActionInput {\n public userAccountNumber?: string;\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`GetLoyaltyCardTransactionEstimation-${this.userAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'GetLoyaltyCardTransactionEstimation';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the getLoyaltyCard method\n * @param inputData The input data passed to the createInput method\n */\nexport const createGetLoyaltyTransactionEstimationInput = (inputData: ICreateActionContext): GetLoyaltyTransactionEstimationInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n return new GetLoyaltyTransactionEstimationInput(inputData.requestContext.apiSettings);\n }\n\n return new GetLoyaltyTransactionEstimationInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the getLoyaltyCard data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getLoyaltyTransactionEstimationAction(input: GetLoyaltyTransactionEstimationInput, ctx: IActionContext): Promise {\n\n if (! ctx.requestContext.user.isAuthenticated) {\n return {};\n }\n\n const promises: [Promise,Promise, Promise] = [ _getCart(ctx), _getLoyalty(input, ctx), _getOrgUnits(ctx) ];\n return Promise.all(promises)\n .then((result) => {\n if(result && result.length >=2 && result[1].CardNumber)\n {\n return getMaxLoyaltyPointsToRedeemForTransactionBalanceAsync({ callerContext: ctx }, result[0].Id, result[1].CardNumber!, result[2].Currency || '')\n .then(points => {\n return points;\n })\n .catch(e => {\n ctx.telemetry.exception(e);\n ctx.telemetry.debug(`Error getting Loyalty Point Redemption Estimate`);\n throw new Error('Error getting Loyalty Point Redemption Estimate');\n });\n }\n return {};\n })\n .catch(e => {\n return {};\n });\n}\n\nasync function _getCart(ctx: IActionContext): Promise {\n const cartState = await getCartState(ctx);\n\n return cartState.cart;\n}\n\nasync function _getLoyalty(input: GetLoyaltyTransactionEstimationInput, ctx: IActionContext): Promise {\n const loyaltyCardInput = new GetLoyaltyCardInput(input.apiSettings);\n return getLoyalty(loyaltyCardInput, ctx);\n}\n\nasync function _getOrgUnits(ctx: IActionContext): Promise {\n return getOrgUnitConfigurationAsync({callerContext: ctx, queryResultSettings: {}});\n}\n\n/**\n * The getLoyaltyTransactionEstimation data action\n * Returns the loyalty card belonging to the customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-loyalty-transaction-estimation',\n action: >getLoyaltyTransactionEstimationAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetLoyaltyTransactionEstimationInput\n});\n","import {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\n ICreateActionContext, IGeneric\n} from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy';\nimport {\n createReadAsync, updateAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\nimport getCustomer, { GetCustomerInput } from './get-customer';\n\nexport interface IAddressManagementData {\n address: Address;\n}\nexport interface IAddressManagementInput extends IActionInput {\n address: Address;\n userAccountNumber?: string;\n}\n/**\n* The input class for the addAddress data action\n*/\nexport class AddressManagementInput implements IAddressManagementInput {\n public address: Address;\n public userAccountNumber?: string;\n\n constructor(address: Address, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.address = address;\n }\n\n public getCacheKey = () => 'AddAddress';\n public getCacheObjectType = () => 'AddAddress';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n* The createInput method for the addAddress data action\n* @param inputData The input data passed to the createInput method\n*/\nexport const createAddressManagementInput = (\n inputData: ICreateActionContext, IAddressManagementData>\n): IAddressManagementInput => {\n if (inputData.requestContext.user.isAuthenticated) {\n throw new Error('User is not authenticated. Cannot call UpdateAddress API');\n }\n\n const { address } = inputData.data || { address: undefined };\n\n if (!address) {\n throw new Error('address is not provided. Cannot call UpdateAddress API');\n }\n\n return new AddressManagementInput(address);\n};\n\nexport async function doAddressManagementOperation(\n input: IAddressManagementInput,\n ctx: IActionContext,\n operationHandler: (customer: Customer, address: Address) => Customer\n): Promise {\n const { userAccountNumber, address } = input;\n const customerInput = new GetCustomerInput(ctx.requestContext.apiSettings, userAccountNumber);\n const customer = await getCustomer(customerInput, ctx);\n\n if (!customer) {\n throw new Error('Not able to create customer');\n }\n\n const newCustomer = operationHandler({ ...customer }, address);\n const updatedCustomer = await updateAsync({ callerContext: ctx }, newCustomer);\n\n if (!updatedCustomer) {\n throw new Error('Not able to update customer');\n }\n\n ctx.update(createReadAsync(updatedCustomer.AccountNumber), updatedCustomer);\n\n return updatedCustomer.Addresses || [];\n}\n\nexport function addAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = [...(customer.Addresses || [])];\n customer.Addresses.push(address);\n return customer;\n}\n\nexport async function addAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, addAddressHandler);\n}\n\n/**\n* The addAddress data action\n* Calls the read RetailServer API to get information about a customer\n* Adds the passed address information to the retireved customer, and\n* then updates that customer via the update RetailServer API.\n*/\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/add-address',\n action: >addAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput),\n isBatched: false\n});","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { BusinessPartner, BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { createBusinessPartnerUserAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n/**\n * Input class for addOrganizationUser data action\n */\nexport class AddOrganizationUserInput implements IActionInput {\n public user: BusinessPartnerUser;\n\n constructor(newUser: BusinessPartnerUser) {\n this.user = newUser;\n }\n\n public getCacheKey = () => `AddOrganizationUser`;\n public getCacheObjectType = () => 'AddOrganizationUser';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Input class for addOrganizationUser data action\n */\nexport const createAddOrganizationUserInput = (inputData: ICreateActionContext>, newUser: BusinessPartnerUser): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new AddOrganizationUserInput(newUser);\n};\n\n/**\n * The addOrganizationUser data action\n * Calls getCurrent() to get a businessPartnerId from the user requesting the action.\n * It then maps the newUsers' businessPartnerId to the same as the above user.\n * Calls the createBusinessPartner to then create a new entitiy in the database with the\n * information passed into through newUser\n */\nexport async function addOrganizationUser(input: AddOrganizationUserInput, ctx: IActionContext): Promise {\n const { user } = input;\n\n return getCurrentAsync({ callerContext: ctx })\n .then((businessPartner: BusinessPartner) => {\n // set the new accounts businessPartnerId from the admin account\n user.BusinessPartnerId = businessPartner.BusinessPartnerId;\n\n return createBusinessPartnerUserAsync({ callerContext: ctx}, user)\n .then(newUser => {\n return newUser;\n })\n .catch(() => {\n ctx.telemetry.debug('[add-organization-user] Unable to create BusinessPartnerUser account');\n throw new Error('[add-organization-user] Unable to create BusinessPartnerUser account');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[add-organization-user] Unable to get BusinessPartner Admin account');\n throw new Error('[add-organization-user] Unable to get BusinessPartner Admin account');\n });\n}\n\n/**\n * The addOrganizationUser data action\n * Calls the read RetailServer API to get the BusinessPartnerId from the admin\n * account and adds that businessPartner to the recieved input (new User)/\n * We then send this new User through the RetailServer API so that the database\n * is updated.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/add-organization-user',\n action: >addOrganizationUser,\n input: <(args: ICreateActionContext) => IActionInput>(createAddOrganizationUserInput),\n});","import {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IHTTPRequestOptions,\n IHTTPResponse,\n sendCommerceRequest\n} from '@msdyn365-commerce/core';\nimport { Address, CartTenderLine, SalesOrder } from '@msdyn365-commerce/retail-proxy';\n\n/**\n * Check Out action Input\n */\nexport class CheckOutInput implements IActionInput {\n public cartId: string;\n public cartVersion: number;\n public receiptEmail?: string;\n public cartTenderLines?: CartTenderLine[];\n public billingAddress?: Address;\n\n constructor(cartId: string, cartVersion: number, receiptEmail?: string, cartTenderLines?: CartTenderLine[], billingAddress?: Address) {\n this.cartId = cartId;\n this.cartVersion = cartVersion;\n this.receiptEmail = receiptEmail;\n this.cartTenderLines = cartTenderLines;\n this.billingAddress = billingAddress;\n }\n\n public getCacheKey = () => `${this.cartId}-${this.cartVersion}`;\n public getCacheObjectType = () => 'CheckOut';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Calls the Retail API to check out and returns sales order\n */\nexport async function checkOutAction(input: CheckOutInput, ctx: IActionContext): Promise {\n const { apiSettings } = ctx.requestContext;\n const requestUrl = `${apiSettings.baseUrl}Commerce/Carts('${input.cartId}')/Checkout?api-version=7.3`;\n const requestOptions: IHTTPRequestOptions = {\n headers: {\n oun: apiSettings.oun,\n 'Content-Type': 'application/json'\n }\n };\n\n if (requestOptions.headers && ctx.requestContext.user.token) {\n requestOptions.headers.Authorization = `id_token ${ctx.requestContext.user.token}`;\n }\n\n if (input.cartTenderLines && input.cartTenderLines.length) {\n input.cartTenderLines = input.cartTenderLines.map((cartTenderLineItem: CartTenderLine) => {\n // @ts-ignore\n // tslint:disable-next-line:prefer-type-cast\n cartTenderLineItem['@odata.type'] = '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CartTenderLine';\n // @ts-ignore\n // tslint:disable-next-line:prefer-type-cast\n cartTenderLineItem['Amount@odata.type'] = '#Decimal';\n\n if (cartTenderLineItem.TokenizedPaymentCard) {\n // @ts-ignore\n // tslint:disable-next-line:prefer-type-cast\n cartTenderLineItem.TokenizedPaymentCard['@odata.type'] =\n '#Microsoft.Dynamics.Commerce.Runtime.DataModel.TokenizedPaymentCard';\n\n // Force the House prop to be set, so that call succeeds\n // @ts-ignore: House prop not yet typed\n if (!cartTenderLineItem.TokenizedPaymentCard.House) {\n // @ts-ignore: House prop not yet typed\n cartTenderLineItem.TokenizedPaymentCard.House = 'N/A';\n }\n\n if (cartTenderLineItem.TokenizedPaymentCard.CardTokenInfo) {\n // @ts-ignore\n // tslint:disable-next-line:prefer-type-cast\n cartTenderLineItem.TokenizedPaymentCard.CardTokenInfo['@odata.type'] =\n '#Microsoft.Dynamics.Commerce.Runtime.DataModel.CardTokenInfo';\n }\n\n if (input.billingAddress) {\n const { Phone, ThreeLetterISORegionName = '', Street, City, State, ZipCode } = input.billingAddress;\n cartTenderLineItem.TokenizedPaymentCard = {\n ...cartTenderLineItem.TokenizedPaymentCard,\n Phone,\n Country: ThreeLetterISORegionName.toUpperCase(),\n Address1: Street,\n City,\n State,\n Zip: ZipCode\n };\n }\n }\n\n return cartTenderLineItem;\n });\n }\n\n const requestBody = {\n receiptEmail: input.receiptEmail,\n cartVersion: input.cartVersion || null,\n ...(input.cartTenderLines && { cartTenderLines: input.cartTenderLines })\n };\n\n // Perform check-out operation\n return sendCommerceRequest(requestUrl, 'post', requestBody, requestOptions).then((response: IHTTPResponse) => {\n if (response.status >= 200 && response.status < 300 && response.data) {\n return response.data;\n } else if (response.data) {\n throw response.data;\n }\n throw new Error('[checkOutAction] Invalid response recieved from RetailServer');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/checkout',\n action: >checkOutAction\n});\n","import { IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy';\nimport { createAddressManagementInput, doAddressManagementOperation, IAddressManagementInput } from './add-address';\n\nexport function deleteAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = customer.Addresses || [];\n customer.Addresses = [...customer.Addresses.filter(cur => cur.RecordId !== address.RecordId)];\n return customer;\n}\n\nexport async function deleteAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, deleteAddressHandler);\n}\n\n/**\n * The deleteAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Removes all address information from the retireved customer, and\n * then updates that customer via the update RetailServer API.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/delete-address',\n action: >deleteAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput),\n isBatched: false\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser, NullResult } from '@msdyn365-commerce/retail-proxy';\nimport { deleteAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n/**\n * Input class for DeleteOrganizationUser data action\n */\nexport class DeleteOrganizationUserInput implements IActionInput {\n public user: BusinessPartnerUser;\n\n constructor(newUser: BusinessPartnerUser) {\n this.user = newUser;\n }\n\n public getCacheKey = () => `DeleteOrganizationUser`;\n public getCacheObjectType = () => 'DeleteOrganizationUser';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Input class for DeleteOrganizationUser data action\n */\nexport const createDeleteOrganizationUserInput = (inputData: ICreateActionContext>, newUser: BusinessPartnerUser): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new DeleteOrganizationUserInput(newUser);\n};\n\n/**\n * The DeleteOrganizationUser data action\n * Calls getCurrent() to get a businessPartnerId from the user requesting the action.\n * It then maps the newUsers' businessPartnerId to the same as the above user.\n * Calls the createBusinessPartner to then create a new entitiy in the database with the\n * information passed into through newUser\n */\nexport async function deleteOrganizationUser(input: DeleteOrganizationUserInput, ctx: IActionContext): Promise {\n const { user } = input;\n\n return deleteAsync({ callerContext: ctx}, user)\n .catch(error => {\n console.log(error);\n ctx.telemetry.debug('[Delete-organization-user] Unable to delete BusinessPartnerUser account');\n throw new Error('[Delete-organization-user] Unable to delete BusinessPartnerUser account');\n });\n}\n\n/**\n * The DeleteOrganizationUser data action\n * Calls the read RetailServer API to get the BusinessPartnerId from the admin\n * account and Deletes that businessPartner to the recieved input (new User)/\n * We then send this new User through the RetailServer API so that the database\n * is updated.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/delete-organization-user',\n action: >deleteOrganizationUser,\n input: <(args: ICreateActionContext) => IActionInput>(createDeleteOrganizationUserInput),\n});","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnerUsersDataActions.g';\n/**\n * Input class for edit organization user data action\n */\nexport class EditOrganizationUserInput implements IActionInput {\n public user: BusinessPartnerUser;\n\n constructor(newUser: BusinessPartnerUser) {\n this.user = newUser;\n }\n\n public getCacheKey = () => `EditOrganizationUser`;\n public getCacheObjectType = () => 'EditOrganizationUser';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Input class for edit organization user data action\n */\nexport const createEditOrganizationUserInput = (inputData: ICreateActionContext>, newUser: BusinessPartnerUser): IActionInput => {\n const { requestContext } = inputData;\n \n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new EditOrganizationUserInput(newUser);\n};\n\nexport async function editOrganizationUser(input: EditOrganizationUserInput, ctx: IActionContext): Promise {\n const { user } = input;\n\n return updateAsync({ callerContext: ctx}, user)\n .then(updatedUser => {\n return updatedUser;\n })\n .catch(() => {\n ctx.telemetry.debug('[Edit-organization-user] Unable to update BusinessPartnerUser account');\n throw new Error('[Edit-organization-user] Unable to update BusinessPartnerUser account');\n });\n}\n\n/**\n * The EditOrganizationUser data action\n * Takes in an instance of a BusinessPartnerUser and updates the\n * same user with the new information.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/Edit-organization-user',\n action: >editOrganizationUser,\n input: <(args: ICreateActionContext) => IActionInput>(createEditOrganizationUserInput),\n});","import { CacheType, IActionInput } from '@msdyn365-commerce/core';\nimport { IActionContext } from '@msdyn365-commerce/core';\n\n/**\n * Generic input type for use with generic data actions\n */\nexport class GenericInput implements IActionInput {\n public result: T;\n public cacheKey: string;\n public cacheObjectType: string;\n\n constructor(cacheKey: string, result: T, cacheObjectType: string) {\n this.cacheKey = cacheKey;\n this.cacheObjectType = cacheObjectType;\n this.result = result;\n }\n\n public getCacheKey = () => `Generic-${this.cacheKey}`;\n public getCacheObjectType = () => `${this.cacheObjectType}`;\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Generic data action that is just used for passing data around the app\n *\n * Note that this doesn't actually expose a data action, its just a base action\n * that others can use to create a data action with their own input\n */\nexport async function getGenericAction(input: GenericInput, ctx: IActionContext): Promise {\n return input.result;\n}\n","import { IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { LoyaltyCard, retailAction } from '@msdyn365-commerce/retail-proxy';\nimport { createGetCustomerLoyaltyCardsInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createCustomerLoyaltyCardsInput = (inputData: ICreateActionContext>): IActionInput => {\n if (\n inputData.requestContext &&\n inputData.requestContext.user &&\n inputData.requestContext.user.isAuthenticated\n ) {\n return createGetCustomerLoyaltyCardsInput({}, null);\n }\n\n throw new Error('Unable to create order history input. User is not authenticated.');\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-customer-loyalty-cards',\n action: >retailAction,\n input: createCustomerLoyaltyCardsInput\n});\n","import { IRefineFullProductSearchOutput } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductRefinerValue } from '@msdyn365-commerce/retail-proxy';\nimport { refineSearchByTextAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductDetailsCriteria } from './get-full-products';\nimport { parseSearchData } from './utilities/input-data-parser';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { getRefinedFullProducts, IRefinableProductsInput } from './utilities/refiner-utils';\nimport { getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * Input for refining products returned by the search text.\n */\nexport class FullProductsRefineSearchByTextInput implements IActionInput, IRefinableProductsInput {\n public readonly searchText: string;\n public readonly channelId?: number;\n public readonly refinementCriteria: ProductRefinerValue[];\n public readonly itemsPerPage?: number;\n public readonly skipCount?: number;\n public readonly catalogId: number;\n public productDetailsCriteria?: ProductDetailsCriteria;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n constructor(\n queryResultSettingsProxy: QueryResultSettingsProxy,\n searchText?: string,\n channelId?: number,\n refinementCriteria?: ProductRefinerValue[],\n catalogId?: number,\n criteria?: ProductDetailsCriteria\n ) {\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.searchText = searchText || '';\n this.channelId = channelId;\n this.refinementCriteria = refinementCriteria || [];\n this.catalogId = catalogId || 0;\n this.productDetailsCriteria = criteria;\n }\n\n public getCacheKey = () => `FullProductsRefineSearchByTextInputCache`;\n public getCacheObjectType = () => 'FullProductsRefineSearchByTextInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make the core action calls\n */\nexport const createFullProductsRefineSearchByTextInput = (inputData: ICreateActionContext>): IActionInput => {\n const refinementCriteria = inputData.config && inputData.config.refinementCriteria;\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n if (!Array.isArray(refinementCriteria)) {\n return new FullProductsRefineSearchByTextInput(queryResultSettingsProxy);\n }\n\n const searchInputData = parseSearchData(inputData);\n const catalogId = inputData.requestContext.apiSettings.catalogId;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n\n return new FullProductsRefineSearchByTextInput(\n queryResultSettingsProxy,\n searchInputData.q,\n searchInputData.channelId,\n refinementCriteria,\n catalogId,\n productDetailsCriteria\n );\n};\n\n/**\n * Calls the refine-search-by-text action.\n * Based on search result calls get-full-products to get all the product details.\n */\nexport function getFullProductsByRefineSearchTextAction(\n input: FullProductsRefineSearchByTextInput,\n ctx: IActionContext\n): Promise {\n return getRefinedFullProducts(\n input,\n ctx,\n // @ts-ignore: Promise.then typing conflict\n () => {\n return refineSearchByTextAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.channelId || 0,\n input.catalogId,\n input.searchText,\n input.refinementCriteria);\n }\n );\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-products-by-refine-search-text',\n action: >getFullProductsByRefineSearchTextAction,\n input: createFullProductsRefineSearchByTextInput,\n isBatched: false\n});\n","import { IRefineFullProductSearchOutput } from '@msdyn365-commerce/commerce-entities';\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport getFullProducts, { FullProductInput, ProductDetailsCriteria } from '../get-full-products';\n\n/**\n * Common refinable products input includes both product detail criteria and refinement criteria.\n */\nexport interface IRefinableProductsInput {\n refinementCriteria: ProductRefinerValue[];\n productDetailsCriteria?: ProductDetailsCriteria;\n}\n\n/**\n * If refinement criteria is set, then gets refined products.\n * @param input refinable products input\n * @param ctx action context\n * @param getRefinedProducts callback function to get a promise (e.g. refineSearchByCategoryAsync, refineSearchByTextAsync)\n * that is executed to get refined products or full set of products.\n */\nexport async function getRefinedFullProducts(\n input: IRefinableProductsInput,\n ctx: IActionContext,\n getRefinedProducts: () => Promise\n): Promise {\n\n if (!input || !input.refinementCriteria) {\n ctx.trace('[getFullProductsByRefineSearchCategoryAction] Invalid input.');\n return {};\n }\n\n if (!input.refinementCriteria.length) {\n ctx.trace('[getFullProductsByRefineSearchCategoryAction] No refiners specified.');\n return {};\n }\n const { apiSettings } = ctx.requestContext;\n\n let fullProductInputs: FullProductInput[] = [];\n\n const searchResults = await getRefinedProducts();\n if (!searchResults) {\n ctx.telemetry.error('[getFullProductsByRefineSearchCategoryAction] no searchResults returned');\n } else {\n fullProductInputs = searchResults.map(\n (product: ProductSearchResult): FullProductInput => {\n return new FullProductInput(product.RecordId, apiSettings, input.productDetailsCriteria || new ProductDetailsCriteria());\n }\n );\n }\n\n if (fullProductInputs.length) {\n const productResult = await getFullProducts(fullProductInputs, ctx);\n return {\n productSearchResult: productResult,\n refinementCriteria: input.refinementCriteria\n };\n } else {\n return {\n productSearchResult: [],\n refinementCriteria: input.refinementCriteria\n };\n }\n}","import { Image, ISubList, List } from '@msdyn365-commerce-modules/data-types';\nimport { IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\n\nimport GetProducts, { ProductInput } from './get-simple-products';\n\n/**\n * List Input action\n */\nexport class ListInput implements IActionInput {\n public DocumentId: string;\n public Title: string;\n public Description: string;\n public ShortDescription: string;\n public BackgroundColor: string;\n public ForegroundColor: string;\n public Images: Image[];\n public Items: (IProductItem[] | ISubList)[];\n public ProductItems: IProductItem[];\n public ItemsCount: number;\n public ItemsPerPage: number;\n public SkipCount: number;\n\n constructor(\n documentId: string,\n title: string,\n description: string,\n shortDescription: string,\n backgroundColor: string,\n foregroundColor: string,\n images: Image[],\n items: (IProductItem[] | ISubList)[],\n productItems: IProductItem[],\n itemsCount: number,\n itemsPerPage: number,\n skipCount: number\n ) {\n this.DocumentId = documentId;\n this.Title = title;\n this.Description = description;\n this.ShortDescription = shortDescription;\n this.BackgroundColor = backgroundColor;\n this.ForegroundColor = foregroundColor;\n this.Images = images;\n this.Items = items;\n this.ProductItems = productItems;\n this.ItemsCount = itemsCount;\n this.ItemsPerPage = itemsPerPage;\n this.SkipCount = skipCount;\n }\n\n public shouldCacheOutput = () => true;\n public getCacheObjectType = () => 'LIST';\n public getCacheKey = () => `${this.DocumentId}-${this.ItemsCount}-${this.ItemsPerPage}-${this.SkipCount}`;\n}\n\nexport interface IProductItem {\n RecordId: string;\n CatalogId: string;\n}\n\n/**\n * List item type enum\n */\nconst enum ListItemType {\n list = 'list',\n product = 'product'\n}\n\n/**\n * Calls to getSimpleProducts to get product array by ID's in list.\n */\nexport async function getListData(input: ListInput, ctx: IActionContext): Promise {\n ctx.trace(`List Title: ${input.Title}`);\n\n // @ts-ignore\n const { apiSettings } = ctx.requestContext;\n\n const sublists: (SimpleProduct | ISubList)[] = [];\n const result: List = {\n Title: input.Title,\n Description: input.Description,\n ShortDescription: input.ShortDescription,\n BackgroundColor: input.BackgroundColor,\n ForegroundColor: input.ForegroundColor,\n Items: sublists,\n ItemsCount: input.ItemsCount\n };\n\n if (input && input.Items && input.Items.length) {\n // get all products\n let products: SimpleProduct[] = [];\n if (input.ProductItems && input.ProductItems.length) {\n const inputArray = input.ProductItems.map(item => new ProductInput(+item.RecordId, apiSettings));\n products = await GetProducts(inputArray, ctx);\n }\n\n // build map from recordId to product, which will be used later when build the output.\n const productMap: { [recordId: string]: SimpleProduct } = {};\n products.forEach(item => {\n if (item) {\n productMap[`${item.RecordId}`] = item;\n }\n });\n\n for (const listitem of input.Items) {\n if (isSublist(listitem)) {\n result.Items.push(listitem);\n } else {\n listitem.forEach(item => {\n if (productMap[item.RecordId]) {\n result.Items.push(productMap[item.RecordId]);\n }\n });\n }\n }\n }\n\n return result;\n}\n\n/**\n * Check if an item is sublist.\n */\nfunction isSublist(listItem: IProductItem[] | ISubList): listItem is ISubList {\n return (listItem).Images !== undefined;\n}\n\n/**\n * Get images.\n */\nfunction getImages(images: IGeneric[]): Image[] {\n const resultImageList: Image[] = [];\n\n if (!images) {\n return resultImageList;\n }\n\n images.forEach(item => {\n if (item && item.image && item.image.href) {\n // add image item\n const imageItem: Image = {\n href: item.image.href,\n altText: item.image.altText,\n title: item.image.title,\n width: item.image.width,\n height: item.image.height\n };\n\n resultImageList.push(imageItem);\n }\n });\n\n return resultImageList;\n}\n\n/**\n * Get the url of sub list.\n */\nfunction getSubListUrl(listName: string, sitePath: string): string {\n if (!listName) {\n return '';\n }\n\n if(!sitePath) {\n return `/${listName}.l`;\n }\n\n // sitePath has a leading '/'\n return `${sitePath}/${listName}.l`;\n}\n\n/**\n * Get input list data.\n */\nfunction getInutListData(inputData: ICreateActionContext, IGeneric>): IGeneric {\n let listData =\n !inputData || !inputData.requestContext || !inputData.requestContext.pageData ? null : inputData.requestContext.pageData.list;\n if (\n !inputData ||\n !inputData.requestContext ||\n !inputData.requestContext.pageData ||\n !inputData.requestContext.pageData.list ||\n !inputData.requestContext.pageData.list.content ||\n !inputData.requestContext.pageData.list.content.items ||\n !inputData.requestContext.pageData.list.content.title ||\n !inputData.requestContext.pageData.list._id\n ) {\n if (\n !inputData ||\n !inputData.data ||\n !inputData.data.list ||\n !inputData.data.list.content ||\n !inputData.data.list.content.items ||\n !inputData.data.list.content.title ||\n !inputData.data.list._id\n ) {\n console.error('data is not well defined for list action input');\n throw new Error('data is not well defined for list action input');\n }\n\n listData = inputData.data.list;\n }\n return listData;\n}\n\n/**\n * Get sub list item.\n */\nfunction getSubListItem(item: IGeneric, sitePathOfRequest: string): ISubList {\n const imageList: Image[] = getImages(item.fields.content.images);\n\n const sublistHref = getSubListUrl(item.fields._name, sitePathOfRequest);\n return {\n Title: item.fields.content.title,\n Description: item.fields.content.description,\n ShortDescription: item.fields.content.shortDescription,\n BackgroundColor: item.fields.content.backgroundColor,\n ForegroundColor: item.fields.content.foregroundColor,\n Href: sublistHref,\n Images: imageList\n };\n}\n\n/**\n * Get site path\n */\nfunction getSitePath(inputData: ICreateActionContext, IGeneric>): string {\n // @ts-ignore\n return inputData && inputData.requestContext && inputData.requestContext.sitePath ? inputData.requestContext.sitePath : '';\n}\n\n/**\n * Get items per page\n */\nfunction getItemsPerPage(inputData: ICreateActionContext, IGeneric>): number {\n if (!inputData || !inputData.config || !inputData.config.itemsPerPage) {\n return 50;\n }\n\n const result = Number(inputData.config.itemsPerPage);\n if (isNaN(result)) {\n return 50;\n }\n\n return result;\n}\n\n/**\n * Get skip count\n */\nfunction getSkipCount(inputData: ICreateActionContext, IGeneric>): number {\n return inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.skipCount\n ? Number(inputData.requestContext.query.skipCount)\n : 0;\n}\n\n/**\n * Creates the input required to make the list call to get products.\n */\nconst createListInput = (inputData: ICreateActionContext, IGeneric>): IActionInput => {\n const listData: IGeneric = getInutListData(inputData);\n const listItems: (IProductItem[] | ISubList)[] = [];\n let productList: IProductItem[] = [];\n\n const parentImageList: Image[] = getImages(listData.content.images);\n\n const itemsPerPage = getItemsPerPage(inputData);\n const skipCount = getSkipCount(inputData);\n\n // This is the list contains all product and will be used to call getSimpleProducts data action.\n const productItems: IProductItem[] = [];\n const sum = skipCount + itemsPerPage;\n for (let index = skipCount; index < listData.content.items.length && index < sum; index++) {\n const item = listData.content.items[index];\n if (item.type === ListItemType.list) {\n if (!item.fields || !item.fields.content || !item.fields.content.title) {\n console.error(`sublist item fields, content or title missing in list ${listData._id}`);\n continue;\n }\n\n // if any elements in product list, then copy it and add to list items\n if (!(productList.length === 0)) {\n const clonedList = [...productList];\n listItems.push(clonedList);\n productList = [];\n }\n\n // build and add sublist item\n listItems.push(getSubListItem(item, getSitePath(inputData)));\n }\n\n if (item.type === ListItemType.product) {\n if (!item.fields || !item.fields.recordId) {\n console.error(`product item missing recordId in list ${listData._id}`);\n continue;\n }\n\n // add product item\n const productItem: IProductItem = {\n RecordId: item.fields.recordId,\n CatalogId: item.fields.catalogId || '0'\n };\n\n productList.push(productItem);\n productItems.push(productItem);\n }\n }\n\n // save the last portion of product items.\n if (!(productList.length === 0)) {\n listItems.push(productList);\n }\n\n return new ListInput(\n listData._id,\n listData.content.title,\n listData.content.description,\n listData.content.shortDescription,\n listData.content.backgroundColor,\n listData.content.foregroundColor,\n parentImageList,\n listItems,\n productItems,\n listData.content.items.length,\n itemsPerPage,\n skipCount\n );\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-list',\n action: >getListData,\n input: createListInput\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { AsyncResult, MediaLocation, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getMediaLocationsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\nimport {\n generateImageUrl,\n getSelectedProductIdFromActionInput,\n getSelectedVariant,\n SelectedVariantInput\n} from './';\n\n/**\n * The action input class for the getMediaLocationsForSelectedVariant data action\n */\nexport class MediaLocationsForSelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public catalogId: number;\n public selectedProduct: SimpleProduct | undefined;\n\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, catalogId?: number) {\n this.productId = productId;\n this.channelId = channelId;\n this.catalogId = catalogId || 0;\n this.selectedProduct = selectedProduct;\n }\n\n public getCacheKey = () => `MediaLocationsForSelectedVariant`;\n public getCacheObjectType = () => 'MediaLocations';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The createInput method for the getMediaLocationsForSelectedVariant data action\n * @param inputData The input data passed to the createInput method\n */\nexport const createMediaLocationsForSelectedVariantInput = (\n inputData: ICreateActionContext>\n): MediaLocationsForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new MediaLocationsForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId);\n } else {\n throw new Error('Unable to create MediaLocationsForSelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * The action method for the getMediaLocationsForSelectedVariant data action\n */\nexport async function getMediaLocationsForSelectedVariantAction(\n input: MediaLocationsForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n return AsyncResult.resolve()\n .then(() => {\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\n\n if (!activeProduct) {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n\n // @ts-ignore: Typing issues that will auto-resolve when SDK 1.4 publishes\n return >getSelectedVariant(selectedVariantInput, ctx);\n }\n\n return activeProduct;\n })\n .then(productResult => {\n const activeProduct: SimpleProduct | undefined = productResult;\n\n if (activeProduct) {\n return getMediaLocationsAsync({ callerContext: ctx, queryResultSettings: {} }, activeProduct.RecordId, input.channelId, input.catalogId).then(response => {\n return response.map(\n (mediaLocation: MediaLocation): MediaLocation => {\n mediaLocation.Uri = generateImageUrl(mediaLocation.Uri, ctx.requestContext.apiSettings);\n mediaLocation.AltText = mediaLocation.AltText ? mediaLocation.AltText : activeProduct.Name;\n return mediaLocation;\n }\n );\n });\n }\n\n return [];\n })\n .catch(error => {\n ctx.trace(error);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug(`[getMediaLocationsForSelectedVariantAction]Error executing action`);\n throw new Error('[getMediaLocationsForSelectedVariantAction]Error executing action');\n });\n}\n\n/**\n * The getMediaLocationsForSelectedVariant data action\n * Gets the currently selected variant for the page via the getSelectedVariant data action,\n * and then gets the media location information for the variant via the MediaLocations RetailServer API\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-media-locations-for-selected-variant',\n action: >getMediaLocationsForSelectedVariantAction,\n input: createMediaLocationsForSelectedVariantInput\n});\n","import { IAction } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IDataServiceRequest, retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createGetOrderShipmentsHistoryInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\nimport { OrderShipments } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): IDataServiceRequest => {\n if (\n inputData.requestContext &&\n inputData.requestContext.user &&\n inputData.requestContext.user.isAuthenticated\n ) {\n return createGetOrderShipmentsHistoryInput({\n Paging: {\n Top: 100,\n Skip: 0\n }\n },\n //@ts-ignore\n null);\n }\n\n throw new Error('Unable to create order history input. User is not authenticated.');\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-order-history',\n action: >retailAction,\n input: createInput\n});\n","import {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { convertToString, IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync, getOrderHistoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { OrderShipments } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Input class for the GetOrganizationWideOrderHistory data action.\n */\nexport class GetOrganizationWideOrderHistoryInput implements IActionInput {\n public queryResultSettings: IQueryResultSettings;\n\n constructor(queryResultSettings: IQueryResultSettings) {\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = () => `GetOrganizationWideOrderHistoryInput|${convertToString(this.queryResultSettings)}`;\n public getCacheObjectType = () => 'GetOrganizationWideOrderHistoryInput';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the GetOrganizationWideOrderHistory method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n */\nexport const getOrganizationWideOrderHistoryInput = (\n inputData: ICreateActionContext): GetOrganizationWideOrderHistoryInput => {\n\n if (!inputData?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get order history. User is not authenticated.');\n }\n\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n return new GetOrganizationWideOrderHistoryInput(queryResultSettings);\n};\n\n/**\n * The action method for the GetOrganizationWideOrderHistory data action.\n * @param {GetOrganizationWideOrderHistory} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function getOrganizationWideOrderHistory(input: GetOrganizationWideOrderHistoryInput, context: IActionContext): Promise {\n if (!context?.requestContext?.user?.isAuthenticated) {\n throw new Error('Unable to get order history. User is not authenticated.');\n }\n\n const businessPartner = await getCurrentAsync({ callerContext: context });\n if (!businessPartner) {\n throw new Error('Unable to get order history. Failed to retrieve business partner id.');\n }\n\n return getOrderHistoryAsync({ callerContext: context, queryResultSettings: input.queryResultSettings }, businessPartner.BusinessPartnerId);\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-organization-wide-order-history',\n action: >getOrganizationWideOrderHistory,\n input: getOrganizationWideOrderHistoryInput\n});\n","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductSearchResult, SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport getCurrentCategory, { CurrentCategoryInput } from './get-current-category';\nimport getProducts, { ProductInput } from './get-simple-products';\n\nimport { searchByCategoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Product by category ID Input action\n */\nexport class ProductsByCategoryInput implements IActionInput {\n public categoryId?: number;\n public categorySlug?: string;\n public categoryName?: string;\n public catalogId: number;\n public currentCategory: CurrentCategoryInput;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n private apiSettings: ICommerceApiSettings;\n\n constructor(category: CurrentCategoryInput, apiSettings: ICommerceApiSettings, queryResultSettingsProxy: QueryResultSettingsProxy) {\n this.apiSettings = apiSettings;\n this.currentCategory = category;\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.catalogId = apiSettings.catalogId;\n this.categoryId = category.categoryId;\n this.categorySlug = category.categorySlug;\n }\n\n public getCacheKey = () => buildCacheKey(`${this.categoryId || this.categorySlug}|${this.catalogId}|${this.queryResultSettingsProxy.cacheKeyHint}`, this.apiSettings);\n public getCacheObjectType = () => 'Products-From-Search';\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * createInput method for the getProductsByCategory data aciton\n */\nexport const createGetProductsByCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext) {\n const currentCategory = new CurrentCategoryInput(inputData.requestContext);\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n return new ProductsByCategoryInput(\n currentCategory,\n inputData.requestContext.apiSettings,\n queryResultSettingsProxy\n );\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\n/**\n * Action method for the getProductsByCategory data action\n */\nexport async function getProductsByCategoryAction(input: ProductsByCategoryInput, ctx: IActionContext): Promise {\n const { apiSettings } = ctx.requestContext;\n let categoryId = input.currentCategory.categoryId;\n if (input.currentCategory.categorySlug && !categoryId) {\n const category = await getCurrentCategory(input.currentCategory, ctx);\n if (!category) {\n ctx.trace('[getProductsByCategoryAction] Unable to find category');\n return [];\n }\n categoryId = category.RecordId;\n }\n\n const productInputs = await searchByCategoryAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n +apiSettings.channelId,\n input.catalogId,\n categoryId || 0\n ).then(productSearchResults => {\n return productSearchResults.map(\n (product: ProductSearchResult): ProductInput => {\n return new ProductInput(product.RecordId, apiSettings);\n }\n );\n });\n\n if (productInputs.length > 0) {\n return await getProducts(productInputs, ctx);\n } else {\n return [];\n }\n}\n\n/**\n * The getProductsByCategory data action\n * Retrieves the current category of the request via the getCurrentCategory data action\n * Then calls the searchByCategory RetailServer API to get a list of products associated with\n * the current category, and finally fully hydrates the data for those prodcuts via the\n * getProducts data action, returning a list of SimpleProducts within the current category.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-products-by-category',\n action: >getProductsByCategoryAction,\n input: createGetProductsByCategoryInput\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { CartPromotionLine } from '@msdyn365-commerce/retail-proxy';\nimport { getAvailablePromotionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\nimport { buildCacheKey } from './index';\nimport {ActiveCartProductsInput, getActiveCartProductsAction} from './index';\n\n/**\n * Input class for promotion options for items in cart\n */\nexport class PromotionOptionsForCartLineItems implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`ActiveCartLineItemsPromotionOptions`, this.apiSettings);\n public getCacheObjectType = () => 'ActiveCartLineItemsPromotionOptions';\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new PromotionOptionsForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API to get the promotion options for items in the cart\n */\nexport async function getPromotionOptionsForCartLineItems(input: PromotionOptionsForCartLineItems, ctx: IActionContext): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getPromotionOptionsForCartLineItems]No valid Input was provided, failing');\n }\n const cartState = await getCartState(ctx);\n if(cartState.hasInvoiceLine) {\n ctx.trace('[getPromotionOptionsForCartLineItems] cart has invoice line');\n return [];\n }\n const cart = cartState.cart;\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\n\n if(!cart || !cart.CartLines || !products || products.length === 0) {\n console.log('[getPromotionOptionsForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n ctx.trace('[getPromotionOptionsForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n return [];\n }\n\n const cartLineIds = cart.CartLines.map(c => c.LineId || '');\n\n return getAvailablePromotionsAsync({ callerContext: ctx, queryResultSettings: {}, bypassCache: 'get' }, cart.Id, cartLineIds || null)\n .then(result => {\n return result;\n }).catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getPromotionOptionsForCartLineItems]Error executing action`);\n throw new Error('[getPromotionOptionsForCartLineItems]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-promotion-options-for-cartlines',\n action: >getPromotionOptionsForCartLineItems,\n input: createInput\n});\n","import { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\n/**\n * ReviewsGetRatingsSummary Input Action\n */\nexport class GetRatingsSummaryInput implements IActionInput {\n /**\n * The Id representing the product to get the ratings for.\n */\n public productId: string;\n\n /**\n * The ID representing the tenant.\n */\n public tenantId: string;\n\n /**\n * The ratings and reviews service endpoint\n */\n public serviceEndpoint: string;\n\n constructor(\n productId: string,\n tenantId: string,\n serviceEndpoint: string\n ) {\n this.productId = productId;\n this.tenantId = tenantId;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n // RnR does not use RS endpoint, so shouldn't use buildCacheKey\n public getCacheKey = () => `${this.productId}-${this.tenantId}`;\n public getCacheObjectType = () => 'RatingsSummary';\n public dataCacheType = (): CacheType => 'application';\n}\n","import { IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductRefiner } from '@msdyn365-commerce/retail-proxy';\nimport getCurrentCategory, { CurrentCategoryInput } from './get-current-category';\n\nimport { getRefinersByCategoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * Action Input class for the getRefinersByCategory data action\n */\nexport class RefinersByCategoryInput implements IActionInput {\n public readonly catalogId: number;\n public readonly currentCategory: CurrentCategoryInput;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n constructor(category: CurrentCategoryInput, queryResultSettingsProxy: QueryResultSettingsProxy, catalogId?: number) {\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.catalogId = catalogId || 0;\n this.currentCategory = category;\n }\n\n public getCacheKey = () => `${this.currentCategory.getCacheKey()}|${this.catalogId}|${this.queryResultSettingsProxy.cacheKeyHint}`;\n public getCacheObjectType = () => 'ProductRefiner';\n public shouldCacheOutput = () => true;\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createRefinersByCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext) {\n const catalogId = inputData.config ? Number(inputData.config.catalogId) : 0;\n const currentCategory = new CurrentCategoryInput(inputData.requestContext);\n\n return new RefinersByCategoryInput(\n currentCategory,\n QueryResultSettingsProxy.fromInputData(inputData),\n Number.isNaN(catalogId) ? 0 : catalogId\n );\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\n/**\n * Calls the Retail API and returns all refiners by category\n */\nexport async function getRefinersByCategoryAction(input: RefinersByCategoryInput, ctx: IActionContext): Promise {\n let categoryId = input.currentCategory.categoryId;\n if (input.currentCategory.categorySlug && !categoryId) {\n const category = await getCurrentCategory(input.currentCategory, ctx);\n if (!category) {\n ctx.trace('[getRefinersByCategoryAction] Unable to find category');\n return [];\n }\n categoryId = category.RecordId;\n }\n\n return getRefinersByCategoryAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.catalogId,\n categoryId || 0\n );\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-refiners-by-category',\n action: >getRefinersByCategoryAction,\n input: createRefinersByCategoryInput\n});\n","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductRefiner } from '@msdyn365-commerce/retail-proxy';\n\nimport { getRefinersByTextAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { parseSearchData } from './utilities/input-data-parser';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Action Input class for the getRefinersByText data action\n */\nexport class RefinersByTextInput implements IActionInput {\n public readonly catalogId: number;\n public readonly searchText: string;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n private apiSettings: ICommerceApiSettings;\n\n constructor(\n searchText: string,\n catalogId: number,\n queryResultSettingsProxy: QueryResultSettingsProxy,\n apiSettings: ICommerceApiSettings) {\n this.catalogId = catalogId;\n this.searchText = searchText;\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`${this.searchText}|${this.catalogId}|${this.queryResultSettingsProxy.cacheKeyHint}`, this.apiSettings);\n public getCacheObjectType = () => 'ProductRefiner';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createRefinersByTextInput = (inputData: ICreateActionContext>): IActionInput => {\n const searchInputData = parseSearchData(inputData);\n const catalogId = inputData.config ? Number(inputData.config.catalogId) : 0;\n\n return new RefinersByTextInput(\n searchInputData.q,\n Number.isNaN(catalogId) ? 0 : catalogId,\n QueryResultSettingsProxy.fromInputData(inputData),\n inputData.requestContext.apiSettings\n );\n};\n\n/**\n * Calls the Retail API and returns all refiners by text\n */\nexport async function getRefinersByTextAction(input: RefinersByTextInput, ctx: IActionContext): Promise {\n return getRefinersByTextAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.catalogId,\n input.searchText);\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-refiners-by-text',\n action: >getRefinersByTextAction,\n input: createRefinersByTextInput\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getRelatedProductsAsync, getRelationTypesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductRelationType, ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport getFullProducts, { FullProductInput, ProductDetailsCriteria } from './get-full-products';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * GetRelatedProducts Input Action\n */\nexport class GetRelatedProductsInput implements IActionInput {\n public readonly productId: number;\n public readonly catalogId: number;\n public readonly relationType: string;\n public ProductDetailsCriteria: ProductDetailsCriteria;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n constructor(\n productId: number,\n catalogId: number,\n relationType: string,\n queryResultSettingsProxy: QueryResultSettingsProxy,\n criteria: ProductDetailsCriteria\n ) {\n this.productId = productId;\n this.catalogId = catalogId;\n this.relationType = relationType;\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.ProductDetailsCriteria = criteria;\n }\n\n public getCacheKey = () =>\n `${this.productId}|${this.catalogId}|${this.relationType.toLowerCase()}|${this.queryResultSettingsProxy.cacheKeyHint}|${\n this.ProductDetailsCriteria.getPrice\n }`;\n public getCacheObjectType = () => 'GetRelatedProducts';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make GetRelatedProducts retail api call\n */\nexport const createGetRelatedProductsInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext && inputData.config) {\n const catalogId = inputData.requestContext.apiSettings.catalogId;\n const relationType = inputData.config.relationType;\n\n // @ts-ignore: URLTokens not properly types\n let productId = inputData.requestContext.urlTokens ? Number(inputData.requestContext.urlTokens.recordId) : 0;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n if (!relationType) {\n throw new Error('Input relation type is invalid.');\n }\n\n // Query string may override the product id from url\n if (inputData.requestContext.query && inputData.requestContext.query.productId) {\n productId = Number(inputData.requestContext.query.productId);\n }\n\n if (Number.isNaN(productId) || productId <= 0) {\n throw new Error('No valid product id available in url or query string.');\n }\n\n if (Number.isNaN(catalogId)) {\n throw new Error('Failed to cast catalog id into a number.');\n }\n\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n return new GetRelatedProductsInput(productId, catalogId, relationType, queryResultSettingsProxy, productDetailsCriteria);\n }\n\n throw new Error('Invalid input data or request context');\n};\n\nexport function searchProductRelationType(productRelationTypes: ProductRelationType[], _productRelationType: string): number | undefined {\n let foundProductRelationTypeId;\n _productRelationType = _productRelationType.toLowerCase();\n productRelationTypes.forEach((productRelationType: ProductRelationType) => {\n if (productRelationType.Name && productRelationType.Name.toLowerCase() === _productRelationType) {\n return (foundProductRelationTypeId = productRelationType.RecordId);\n }\n });\n\n return foundProductRelationTypeId;\n}\n\nasync function getRelatedProductsAction(input: GetRelatedProductsInput, ctx: IActionContext): Promise {\n const apiSettings = ctx.requestContext.apiSettings;\n const querySettings = input.queryResultSettingsProxy.QueryResultSettings;\n\n const productRelationTypes = await getRelationTypesAsync(\n { callerContext: ctx, queryResultSettings: querySettings },\n input.productId,\n +apiSettings.channelId,\n input.catalogId\n );\n if (!productRelationTypes) {\n ctx.trace(`[getProductRelationType] Unable to get product relation types for product ${input.productId}`);\n return [];\n }\n const productRelationTypeId = searchProductRelationType(productRelationTypes, input.relationType);\n if (!productRelationTypeId) {\n ctx.trace(`[getRelatedProducts] Unable to find relation type ${input.relationType} for product ${input.productId}`);\n return [];\n }\n\n const productInputs = await getRelatedProductsAsync(\n { callerContext: ctx, queryResultSettings: querySettings },\n input.productId,\n +apiSettings.channelId,\n input.catalogId,\n productRelationTypeId\n )\n .then(response => {\n if (response && response.length) {\n return response.map(\n (product: ProductSearchResult): FullProductInput => {\n return new FullProductInput(product.RecordId, apiSettings, input.ProductDetailsCriteria);\n }\n );\n }\n\n ctx.trace('[getRelatedProductsAction] Invalid response from server');\n return [];\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.trace(error.stack || '');\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getRelatedProductsAction] Unable to Fetch Products.`);\n ctx.trace(`[getRelatedProductsAction] Unable to Fetch Products.`);\n return [];\n });\n\n if (productInputs.length > 0) {\n return getFullProducts(productInputs, ctx);\n } else {\n return [];\n }\n}\n\n/**\n * The getRelatedProducts data action\n * Uses a productId URL Token and finds the relation types for said product\n * using the getRelationTypes RetailServer API, and then finds and retusn all products that\n * share that relation type via the getRelatedProducts RetailServer API\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-related-products',\n action: >getRelatedProductsAction,\n input: createGetRelatedProductsInput\n});\n","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { SortColumn } from '@msdyn365-commerce/retail-proxy';\nimport { buildCacheKey } from '.';\n\nimport { getSearchConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\n// TODO: import from commerce entities when available\n// tslint:disable-next-line:interface-name\ninterface SearchConfiguration {\n ProductSortColumns?: SortColumn[];\n}\n\n/**\n * Action Input class for the getSearchConfiguration data action\n */\nexport class SearchConfigurationInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('SearchConfig', this.apiSettings);\n public getCacheObjectType = () => 'SearchConfiguration';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createSearchConfigurationInput = (inputData: ICreateActionContext>): IActionInput => {\n return new SearchConfigurationInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API\n */\nexport async function getSearchConfigurationAction(input: SearchConfigurationInput, ctx: IActionContext): Promise {\n return getSearchConfigurationAsync({ callerContext: ctx });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-search-configurations',\n action: >getSearchConfigurationAction,\n input: createSearchConfigurationInput\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { getCartState, ICartState } from '@msdyn365-commerce/global-state';\nimport { LoyaltyCard } from '@msdyn365-commerce/retail-proxy';\nimport { issueLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { getLoyaltyAction, GetLoyaltyCardInput} from './get-loyalty-card';\nimport { buildCacheKey } from './index';\n\n/**\n * Input class for the issueLoyalty data action\n */\nexport class IssueLoyaltyInput implements IActionInput {\n public userAccountNumber?: string;\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`IssueLoyalty-${this.userAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'GetIssueLoyalty';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the issueLoyalty method\n * @param inputData The input data passed to the createInput method\n */\nexport const createIssueLoyaltyInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create issue loyalty input. User is not authenticated.');\n }\n\n return new IssueLoyaltyInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the issueLoyalty data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function issueLoyaltyAction(input: IssueLoyaltyInput, ctx: IActionContext): Promise {\n const promises: [Promise,Promise] = [ getCartState(ctx), _getLoyalty(input, ctx)];\n return Promise.all(promises)\n .then((result) => {\n const cartState = result[0];\n const card = result[1];\n if (card && card.CardNumber) {\n updateCart(cartState, card);\n return card;\n }\n //@ts-ignore\n //TO-DO: Remove after SDK bug fix https://msdyneng.visualstudio.com/FinOps/_workitems/edit/473891\n return issueLoyaltyCardAsync({ callerContext: ctx }, { CustomerAccount: input.userAccountNumber || null }) \n .then((issuedCard: LoyaltyCard) => {\n updateCart(cartState, issuedCard);\n return issuedCard;\n })\n //@ts-ignore\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Issuing loyalty card failed');\n throw new Error('Issuing loyalty card failed');\n });\n })\n .catch((error: Error) => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('Unable to issue loyalty card');\n throw new Error('Unable to issue loyalty card');\n });\n}\n\nasync function _getLoyalty(input: IssueLoyaltyInput, ctx: IActionContext): Promise {\n const loyaltyCardInput = new GetLoyaltyCardInput(input.apiSettings);\n return getLoyaltyAction(loyaltyCardInput, ctx);\n}\n\nfunction updateCart(cartState: ICartState, card: LoyaltyCard): void {\n cartState.updateLoyaltyCardId({loyaltyCardNumber: card.CardNumber});\n}\n\n/**\n * The getLoyaltyCard data action\n * Returns the loyalty card belonging to the customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/issue-loyalty',\n action: >issueLoyaltyAction,\n input: <(args: ICreateActionContext) => IActionInput>createIssueLoyaltyInput\n});\n","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { addProductListLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for the AddItemToOrderTemplate data action.\n */\nexport class AddItemToOrderTemplateInput implements IActionInput {\n public readonly orderTemplateId: string;\n public readonly productId: number;\n public readonly quantity: number;\n public readonly unitOfMeasure: string;\n\n constructor(orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string) {\n this.orderTemplateId = orderTemplateId;\n this.productId = productId;\n this.quantity = quantity;\n this.unitOfMeasure = unitOfMeasure || 'ea';\n }\n\n public getCacheKey = () => 'AddItemToOrderTemplateInput';\n public getCacheObjectType = () => 'AddItemToOrderTemplateInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the AddItemToOrderTemplate method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} orderTemplateId The id of order template to update.\n * @param {number} productId The id of a product to add.\n * @param {number} quantity How many items of this product to add.\n */\nexport const addItemToOrderTemplateInput = (\n inputData: ICreateActionContext, orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string): AddItemToOrderTemplateInput => {\n\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new AddItemToOrderTemplateInput(orderTemplateId, productId, quantity, unitOfMeasure);\n};\n\n/**\n * The action method for the AddItemToOrderTemplate data action.\n * @param {AddItemToOrderTemplateInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function addItemToOrderTemplateAction(input: AddItemToOrderTemplateInput, ctx: IActionContext): Promise {\n try {\n const productListLineToAdd: ProductListLine = {\n ProductListId: input.orderTemplateId,\n ProductId: input.productId,\n Quantity: input.quantity,\n UnitOfMeasure: input.unitOfMeasure\n };\n\n const productListLine: ProductListLine[] = await addProductListLinesAsync({\n callerContext: ctx\n }, input.orderTemplateId, [productListLineToAdd]);\n\n if (productListLine && productListLine.length === 1 && productListLine[0] && productListLine[0].ProductListId) {\n return productListLine[0];\n } else {\n ctx.telemetry.error('Product list line was not returned when adding it to order template');\n throw Error('Product list line was not returned when adding it to order template');\n }\n } catch (error) {\n ctx.telemetry.error('Not able to add an item to order template', error);\n throw error;\n }\n}\n\n/**\n * The AddItemToOrderTemplate Data Action.\n * Returns product list line that was added to the order template.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/add-item-to-order-template',\n action: >addItemToOrderTemplateAction,\n input: addItemToOrderTemplateInput\n});","import { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { convertToString, IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { getProductListLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { FullProductInput, getFullProducts, getProductDetailsCriteriaFromActionInput, QueryResultSettingsProxy } from '..';\nimport { IOrderTemplateLinesState, OrderTemplateLine } from '../utilities/order-templates';\n/**\n * Input class for the GetOrderTemplates data action\n */\nexport class GetPaginatedOrderTemplateLinesInput implements IActionInput {\n public orderTemplateId: string;\n public queryResultSettings: IQueryResultSettings;\n public searchText: string;\n\n constructor(orderTemplateId: string, queryResultSettings: IQueryResultSettings, searchText?: string) {\n this.orderTemplateId = orderTemplateId;\n this.queryResultSettings = queryResultSettings;\n this.searchText = searchText || '';\n }\n\n public getCacheKey = () => `GetPaginatedOrderTemplateLines|${this.orderTemplateId}|${convertToString(this.queryResultSettings)}|${this.searchText}`;\n public getCacheObjectType = () => 'GetPaginatedOrderTemplateLines';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the GetOrderTemplate method\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetPaginatedOrderTemplateLinesInput = (\n inputData: ICreateActionContext, orderTemplateId: string, searchText?: string): GetPaginatedOrderTemplateLinesInput => {\n\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n queryResultSettings.count = true;\n return new GetPaginatedOrderTemplateLinesInput(orderTemplateId, queryResultSettings, searchText);\n};\n\n/**\n * The action method for the GetPaginatedOrderTemplateLines data action\n * @param input The action input\n * @param context The action context\n */\nexport async function getPaginatedOrderTemplateLinesAction(input: GetPaginatedOrderTemplateLinesInput, context: IActionContext): Promise {\n if (!context.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n\n const orderTemplateLinesState: IOrderTemplateLinesState = {\n lines: [],\n totalCount: 0\n };\n const promise = getProductListLinesAsync({\n callerContext: context, queryResultSettings: input.queryResultSettings\n }, input.orderTemplateId, input.searchText); // tslint:disable-line:align\n const productListLines = await promise;\n const productInputs: FullProductInput[] = [];\n if (productListLines && productListLines.length > 0) {\n orderTemplateLinesState.totalCount = promise.metadata.count || orderTemplateLinesState.lines.length;\n productListLines.forEach((listLine) => {\n if (listLine.ProductId) {\n orderTemplateLinesState.lines.push(new OrderTemplateLine(listLine));\n productInputs.push(new FullProductInput(listLine.ProductId, context.requestContext.apiSettings, getProductDetailsCriteriaFromActionInput(context)));\n }\n });\n if (productInputs.length > 0) {\n const fullProductsInfo = await getFullProducts(productInputs, context)\n .then((products: FullProduct[]) => {\n if (products) {\n return products;\n } else {\n return [];\n }\n })\n .catch(error => {\n context.trace(error);\n context.telemetry.error(error.message);\n context.telemetry.error('[getPaginatedOrderTemplateLinesAction] Unable to retrieve product info.');\n });\n if (fullProductsInfo) {\n orderTemplateLinesState.lines.forEach(line => {\n const fullProduct = fullProductsInfo.find(product => product.ProductDetails.RecordId === line.productListLine.ProductId);\n if (!fullProduct) {\n context.telemetry.error('[getPaginatedOrderTemplateLinesAction] Unable to find product info for an order template line.');\n return;\n }\n line.fullProduct = fullProduct;\n });\n }\n return orderTemplateLinesState;\n }\n context.trace(orderTemplateLinesState.lines.length.toString());\n return orderTemplateLinesState;\n }\n return orderTemplateLinesState;\n}\n\n/**\n * The GetPaginatedOrderTemplateLines Data Action\n * Returns order templates\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-paginated-order-template-lines',\n action: >getPaginatedOrderTemplateLinesAction,\n input: createGetPaginatedOrderTemplateLinesInput\n});","import { getPaginatedOrderTemplateLinesAction, GetPaginatedOrderTemplateLinesInput } from './get-paginated-order-template-lines'\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { CartLine, QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { addCartLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CartsDataActions.g';\n\n/**\n * Input class for the AddOrderTemplateToCart data action.\n */\nexport class AddOrderTemplateToCartInput implements IActionInput {\n public readonly orderTemplateId: string;\n\n constructor(orderTemplateId: string) {\n this.orderTemplateId = orderTemplateId;\n }\n\n public getCacheKey = () => 'AddOrderTemplateToCartInput';\n public getCacheObjectType = () => 'AddOrderTemplateToCartInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the AddOrderTemplateToCart method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} orderTemplateId The id of template.\n */\nexport const addOrderTemplateToCartInput = (inputData: ICreateActionContext, orderTemplateId: string): AddOrderTemplateToCartInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new AddOrderTemplateToCartInput(orderTemplateId);\n};\n\n/**\n * The action method for the AddOrderTemplateToCart data action.\n * @param {AddOrderTemplateToCartInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function addOrderTemplateToCartAction(input: AddOrderTemplateToCartInput, context: IActionContext): Promise {\n const cartState = await getCartState(context);\n const chunkCount = 1000;\n const queryResultSettings: QueryResultSettings = {\n Paging: {\n Top: chunkCount,\n Skip: 0\n }\n };\n const getPaginatedOrderTemplateLinesInput = new GetPaginatedOrderTemplateLinesInput(input.orderTemplateId, queryResultSettings);\n let orderTemplateLines = await getPaginatedOrderTemplateLinesAction(getPaginatedOrderTemplateLinesInput, context);\n let addedCartLines: CartLine[] = [];\n for (let skip = chunkCount; orderTemplateLines.lines.length !== 0; skip += chunkCount) {\n const cartLines: CartLine[] = orderTemplateLines.lines.map(productLine => {\n // tslint:disable-next-line:no-unnecessary-local-variable\n const cartLine: CartLine = {\n ItemId: productLine.fullProduct?.ProductDetails.ItemId,\n ProductId: productLine.productListLine.ProductId,\n Quantity: productLine.productListLine.Quantity,\n TrackingId: '',\n UnitOfMeasureSymbol: productLine.productListLine.UnitOfMeasure\n };\n return cartLine;\n });\n await addCartLinesAsync({ callerContext: context }, cartState.cart.Id, cartLines, cartState.cart.Version!).catch(error => {\n context.telemetry.trace(error);\n context.telemetry.trace('Unable to add order template to cart.');\n throw error;\n });\n addedCartLines = addedCartLines.concat(cartLines);\n getPaginatedOrderTemplateLinesInput.queryResultSettings.Paging!.Skip = skip;\n orderTemplateLines = await getPaginatedOrderTemplateLinesAction(getPaginatedOrderTemplateLinesInput, context);\n }\n await cartState.refreshCart({});\n return addedCartLines;\n}\n\n/**\n * The AddOrderTemplateToCart Data Action.\n * Returns created order template.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/add-order-template-to-cart',\n action: >addOrderTemplateToCartAction,\n input: addOrderTemplateToCartInput\n});","import {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { ProductList, ProductListType } from '@msdyn365-commerce/retail-proxy';\nimport { createProductListAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\n\n/**\n * Input class for the CreateOrderTemplate data action.\n */\nexport class CreateOrderTemplateInput implements IActionInput {\n public readonly templateName: string;\n\n constructor(templateName: string) {\n this.templateName = templateName;\n }\n\n public getCacheKey = () => 'CreateOrderTemplateInput';\n public getCacheObjectType = () => 'CreateOrderTemplateInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the CreateOrderTemplate method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} templateName The name of template.\n */\nexport const createOrderTemplateInput = (inputData: ICreateActionContext, templateName: string): CreateOrderTemplateInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new CreateOrderTemplateInput(templateName);\n};\n\n/**\n * The action method for the CreateOrderTemplate data action.\n * @param {CreateOrderTemplateInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function createOrderTemplateAction(input: CreateOrderTemplateInput, ctx: IActionContext): Promise {\n try {\n const orderTemplate: ProductList = {\n Id: '',\n Name: input.templateName,\n ProductListTypeValue: ProductListType.OrderTemplate\n };\n const createdProductList = await createProductListAsync({\n callerContext: ctx\n }, orderTemplate);\n if (createdProductList && createdProductList.Id !== '') {\n return createdProductList;\n } else {\n ctx.telemetry.error('Created product list was null');\n throw Error('Created product list was null');\n }\n } catch (error) {\n ctx.telemetry.error('Not able to create order template', error);\n throw error;\n }\n}\n\n/**\n * The CreateOrderTemplate Data Action.\n * Returns created order template.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/create-order-template',\n action: >createOrderTemplateAction,\n input: createOrderTemplateInput\n});","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getOrderTemplates, GetOrderTemplatesInput, QueryResultSettingsProxy } from '..';\nimport { getPaginatedOrderTemplateLinesAction, GetPaginatedOrderTemplateLinesInput } from '..';\nimport { OrderTemplate } from '../utilities/order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action\n */\nexport class GetFullOrderTemplateInput implements IActionInput {\n public orderTemplateId: string;\n public queryResultSettings: IQueryResultSettings;\n\n constructor(orderTemplateId: string, queryResultSettings: IQueryResultSettings) {\n this.orderTemplateId = orderTemplateId;\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = () => `GetFullOrderTemplate|${this.orderTemplateId}`;\n public getCacheObjectType = () => 'GetFullOrderTemplate';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the GetOrderTemplate method\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetFullOrderTemplateInput = (inputData: ICreateActionContext, orderTemplateId: string): GetFullOrderTemplateInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n queryResultSettings.count = true;\n\n return new GetFullOrderTemplateInput(orderTemplateId, queryResultSettings);\n};\n\n/**\n * The action method for the GetFullOrderTemplate data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getFullOrderTemplateAction(input: GetFullOrderTemplateInput, ctx: IActionContext): Promise {\n if (!ctx.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order template. User is not authenticated.');\n }\n\n const inputParams = new GetOrderTemplatesInput(input.orderTemplateId);\n const productLists: ProductList[] = await getOrderTemplates(inputParams, ctx);\n\n if (!productLists || productLists.length !== 1) {\n throw new Error('Unable to get full order template. Order template was not found.');\n }\n\n const inputLines = new GetPaginatedOrderTemplateLinesInput(productLists[0].Id, input.queryResultSettings);\n const linesState = await getPaginatedOrderTemplateLinesAction(inputLines, ctx);\n return new OrderTemplate(productLists[0], linesState.lines, linesState.totalCount);\n}\n\n/**\n * The GetFullOrderTemplate Data Action\n * Returns order templates\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-full-order-template',\n action: >getFullOrderTemplateAction,\n input: createGetFullOrderTemplateInput\n});","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { updateAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for the UpdateOrderTemplate data action.\n */\nexport class UpdateOrderTemplateHeaderInput implements IActionInput {\n public readonly orderTemplate: ProductList;\n\n constructor(orderTemplate: ProductList) {\n this.orderTemplate = orderTemplate;\n }\n\n public getCacheKey = () => 'UpdateOrderTemplateHeaderInput';\n public getCacheObjectType = () => 'UpdateOrderTemplateHeaderInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the UpdateOrderTemplateHeader method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {ProductList} orderTemplate The template header.\n */\nexport const updateOrderTemplateHeaderInput = (inputData: ICreateActionContext, orderTemplate: ProductList): UpdateOrderTemplateHeaderInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to update order template. User is not authenticated.');\n }\n return new UpdateOrderTemplateHeaderInput(orderTemplate);\n};\n\n/**\n * The action method for the UpdateOrderTemplate data action.\n * @param {UpdateOrderTemplateHeaderInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function updateOrderTemplateHeaderAction(input: UpdateOrderTemplateHeaderInput, ctx: IActionContext): Promise {\n try {\n const { orderTemplate } = input;\n const updatedProductList = await updateAsync({\n callerContext: ctx\n }, orderTemplate);\n if (updatedProductList) {\n return updatedProductList;\n } else {\n ctx.telemetry.error(`Updated product list ${orderTemplate.Id} came back as null.`);\n throw Error('Updated product list was null.');\n }\n } catch (error) {\n ctx.telemetry.error('Not able to update order template', error);\n throw error;\n }\n}\n\n/**\n * The UpdateOrderTemplate Data Action.\n * Returns updated order template.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/update-order-template-header',\n action: >updateOrderTemplateHeaderAction,\n input: updateOrderTemplateHeaderInput\n});","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { updateProductListLinesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductListLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport getPaginatedOrderTemplateLines, { GetPaginatedOrderTemplateLinesInput } from './get-paginated-order-template-lines';\n\n/**\n * Input class for the UpdateOrderTemplate data action.\n */\nexport class UpdateOrderTemplateInput implements IActionInput {\n public readonly orderTemplateId: string;\n public readonly productId: number;\n public readonly quantity: number;\n public readonly unitOfMeasure: string;\n\n constructor(orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string) {\n this.orderTemplateId = orderTemplateId;\n this.productId = productId;\n this.quantity = quantity;\n this.unitOfMeasure = unitOfMeasure || 'ea';\n }\n\n public getCacheKey = () => 'UpdateOrderTemplateInput';\n public getCacheObjectType = () => 'UpdateOrderTemplateInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the UpdateOrderTemplate method.\n * @param {ICreateActionContext} inputData The input data passed to the createInput method.\n * @param {string} orderTemplateId The id of order template to update.\n * @param {number} productId The id of a product to add.\n * @param {number} quantity How many items of this product to add.\n */\nexport const updateOrderTemplateInput = (\n inputData: ICreateActionContext, orderTemplateId: string, productId: number, quantity: number, unitOfMeasure: string): UpdateOrderTemplateInput => {\n\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create order template. User is not authenticated.');\n }\n return new UpdateOrderTemplateInput(orderTemplateId, productId, quantity, unitOfMeasure);\n};\n\n/**\n * The action method for the UpdateOrderTemplate data action.\n * @param {UpdateOrderTemplateInput} input The action input.\n * @param {IActionContext} ctx The action context.\n */\nexport async function updateOrderTemplateAction(input: UpdateOrderTemplateInput, ctx: IActionContext): Promise {\n try {\n if (!ctx.requestContext.user.isAuthenticated) {\n throw Error('User token was not found when updating the order template');\n }\n const getLinesInput = new GetPaginatedOrderTemplateLinesInput(input.orderTemplateId, {}, input.productId.toString());\n const linesState = await getPaginatedOrderTemplateLines(getLinesInput, ctx);\n if (!linesState) {\n throw Error('Order template was not found when updating the order template');\n }\n\n const linesToUpdate = linesState.lines.filter(line => line.productListLine.ProductId === input.productId);\n if (linesToUpdate.length !== 1) {\n throw Error('Unable to find the line to update when updating the order template');\n }\n\n const lineToUpdate = linesToUpdate[0].productListLine;\n\n lineToUpdate.UnitOfMeasure = input.unitOfMeasure;\n lineToUpdate.Quantity = input.quantity;\n\n const updatedLines: ProductListLine[] = await updateProductListLinesAsync({\n callerContext: ctx\n }, input.orderTemplateId, [lineToUpdate]);\n\n if (!updatedLines || updatedLines.length !== 1) {\n throw Error('Server returned invalid lines when updating order template');\n }\n const updatedLine = updatedLines.filter(line => line.ProductId === input.productId);\n if (updatedLine.length !== 1 || updatedLine[0].Quantity !== input.quantity || updatedLine[0].UnitOfMeasure !== input.unitOfMeasure) {\n throw Error('Server did not update the line when updating order template');\n }\n return updatedLine[0];\n } catch (error) {\n ctx.telemetry.error('Not able to add an item to order template', error);\n throw error;\n }\n}\n\n/**\n * The UpdateOrderTemplate Data Action.\n * Returns product list line that was added to the order template.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/update-order-template-line',\n action: >updateOrderTemplateAction,\n input: updateOrderTemplateInput\n});","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport {\n createObservableDataAction,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\n\nimport { createRefineSearchByCategoryInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { retailAction } from '@msdyn365-commerce/retail-proxy/dist/retail-action';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Action Input class for the refineSearchByCategory data action\n */\nexport class RefineSearchByCriteriaInput implements IActionInput {\n public readonly categoryId?: number;\n public readonly channelId?: number;\n public readonly refinementCriteria: ProductRefinerValue[];\n public readonly catalogId: number;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n private apiSettings: ICommerceApiSettings;\n\n constructor(\n queryResultSettingsProxy: QueryResultSettingsProxy,\n apiSettings: ICommerceApiSettings,\n categoryId?: number,\n channelId?: number,\n refinementCriteria?: ProductRefinerValue[],\n catalogId?: number\n ) {\n this.categoryId = categoryId;\n this.channelId = channelId;\n this.refinementCriteria = refinementCriteria || [];\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.catalogId = catalogId || 0;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`RefineSearchByCriteriaInputCache`, this.apiSettings);\n public getCacheObjectType = () => 'RefineSearchByCriteriaInput';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the refineSearchByCategory data action\n */\nexport const createInput = (inputData: ICreateActionContext>): IActionInput => {\n const refinementCriteria = inputData.config && inputData.config.refinementCriteria;\n\n if (inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.categoryId) {\n return createRefineSearchByCategoryInput(\n QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings,\n +inputData.requestContext.apiSettings.channelId,\n inputData.config ? Number(inputData.config.catalogId) : 0,\n +inputData.requestContext.query.categoryId,\n !Array.isArray(refinementCriteria) ? [] : refinementCriteria.map((refinementCriterion: ProductRefinerValue) => refinementCriterion)\n );\n }\n\n throw new Error('Please specify categoryId, refinerId, and refinerSourceValue query string in request.');\n};\n\n/**\n * The RefineSearchByCategory data action\n * Uses categoryId query string parameter to call the RefinerSearchByCategory\n * RetailServer API to get information about products\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/regin-search-by-category',\n action: >retailAction,\n input: createInput\n});\n","import { IAction } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { IDataServiceRequest, retailAction } from '@msdyn365-commerce/retail-proxy/dist';\nimport { createSearchByTextInput } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductSearchResult } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\n\n/**\n * createInput method for the searchByText data action\n */\nexport function createSearchByTextInputFunc (inputData: ICreateActionContext, IGeneric>): IDataServiceRequest {\n const { requestContext: {query, apiSettings: {channelId}}} = inputData;\n\n const search = query && query.q;\n\n if (!search) {\n throw new Error('Unable to preform search without search text. Query string ?q={searchText} must be present or should be configued in module data.');\n }\n\n const querySettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n return createSearchByTextInput(querySettingsProxy.QueryResultSettings, Number(channelId), 0, search);\n}\n\n/**\n * The searchByText data action\n * Queries RetailServers product searchByText API using a\n * query string parameter and returns a list of ProductSearchResults\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/search-by-text',\n action: >retailAction,\n input: createSearchByTextInputFunc\n});\n","import { IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { createAddressManagementInput, doAddressManagementOperation, IAddressManagementInput } from './add-address';\n\n// TODO: Centralize this logic in a common utility area\nexport function updateAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = customer.Addresses || [];\n if (address.IsPrimary) {\n customer.Addresses.forEach(cur => cur.IsPrimary = false)\n }\n customer.Addresses = [...customer.Addresses.filter(cur => cur.RecordId !== address.RecordId), address];\n return customer;\n}\n\nexport async function updateAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, updateAddressHandler);\n}\n\n/**\n * The updateAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Merge the passed address information with the address information from\n * the retireved customer, and then updates that customer via the update RetailServer API.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-address',\n action: >updateAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput)\n});\n","import {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput,\n ICommerceApiSettings\n} from '@msdyn365-commerce/core';\nimport { Customer, CustomerAttribute } from '@msdyn365-commerce/retail-proxy';\nimport {\n readAsync, updateAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\n\nimport { GetCustomerInput } from './get-customer';\nimport { buildCacheKey } from './index';\n\nexport interface IUpdateCustomerAttributesInput extends IActionInput {\n phone?: string,\n vatNumber?: string;\n customerAttributes: CustomerAttribute[];\n userAccountNumber: string;\n apiSettings: ICommerceApiSettings;\n}\n\n/**\n * Input class for the updateCustomerAttributes\n */\nexport class updateCustomerAttributesInput implements IUpdateCustomerAttributesInput {\n public userAccountNumber: string;\n public customerAttributes: CustomerAttribute[];\n public apiSettings: ICommerceApiSettings;\n public phone?: string;\n public vatNumber?: string;\n\n constructor(userAccountNumber: string, customerAttributes: CustomerAttribute[], apiSettings: ICommerceApiSettings, phone?: string, vatNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n this.customerAttributes = customerAttributes;\n this.phone = phone;\n this.vatNumber = vatNumber;\n }\n\n public getCacheKey = (): string => buildCacheKey(`${this.userAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'Customer';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The action method for the updateCustomerAttributes data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function updateCustomerAttributesAction(input: IUpdateCustomerAttributesInput, ctx: IActionContext): Promise {\n const { customerAttributes, phone, vatNumber, userAccountNumber } = input;\n\n const customer = await readAsync({ callerContext: ctx }, userAccountNumber);\n\n if (!customer) {\n ctx.telemetry.debug('[update-customer-attributes] Unable to find customer');\n throw new Error('Unable to find customer');\n }\n\n const newCustomer = { ...customer };\n newCustomer.Phone = phone;\n newCustomer.VatNumber = vatNumber;\n newCustomer.Attributes = customerAttributes;\n\n const updatedCustomer = await updateAsync({ callerContext: ctx }, newCustomer);\n\n if (!updatedCustomer) {\n ctx.telemetry.debug('[update-customer-attributes] Unable to update customer attributes');\n throw new Error('Unable to update customer attributes');\n }\n\n ctx.update(new GetCustomerInput(ctx.requestContext.apiSettings), updatedCustomer);\n\n return updatedCustomer;\n}\n\n/**\n * The updateCustomerAttributes data action\n * Returns the updated customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-customer-attributes',\n action: >updateCustomerAttributesAction\n});","import {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput,\n ICommerceApiSettings\n} from '@msdyn365-commerce/core';\nimport { Customer } from '@msdyn365-commerce/retail-proxy';\nimport {\n readAsync, updateAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\n\nimport { GetCustomerInput } from './get-customer';\nimport { buildCacheKey } from './index';\n\nexport interface IUpdateCustomerPersonalizationInput extends IActionInput {\n isOptOut: boolean;\n userAccountNumber: string;\n apiSettings: ICommerceApiSettings;\n preferenceType?: string;\n}\n\n/**\n * Input class for the updateCustomerPersonalization\n */\nexport class updateCustomerPersonalizationInput implements IUpdateCustomerPersonalizationInput {\n public userAccountNumber: string;\n public isOptOut: boolean;\n public apiSettings: ICommerceApiSettings;\n public preferenceType: string | undefined;\n\n constructor(userAccountNumber: string, isOptOut: boolean, apiSettings: ICommerceApiSettings, preferenceType?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n this.isOptOut = isOptOut;\n this.preferenceType = preferenceType;\n }\n\n public getCacheKey = (): string => buildCacheKey(`${this.userAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'Customer';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * The action method for the updateCustomerPersonalization data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function updateCustomerPersonalizationAction(input: IUpdateCustomerPersonalizationInput, ctx: IActionContext): Promise {\n const { userAccountNumber, isOptOut, preferenceType } = input;\n\n const customer = await readAsync({ callerContext: ctx }, userAccountNumber);\n\n if (!customer) {\n throw new Error('Unable to find customer');\n }\n\n const newCustomer = { ...customer };\n\n switch (preferenceType) {\n case 'web-tracking':\n newCustomer.OptOutWebActivityTracking = isOptOut;\n break;\n case undefined:\n case 'personalization':\n default:\n newCustomer.OptOutPersonalization = isOptOut;\n }\n\n const updatedCustomer = await updateAsync({ callerContext: ctx }, newCustomer);\n\n if (!updatedCustomer) {\n throw new Error('Unable to update customer');\n }\n\n ctx.update(new GetCustomerInput(ctx.requestContext.apiSettings), updatedCustomer);\n\n return updatedCustomer;\n}\n\n/**\n * The updateCustomerPersonalization data action\n * Returns the updated customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-customer-personalization',\n action: >updateCustomerPersonalizationAction\n});\n","import { IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Address, Customer } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { createAddressManagementInput, doAddressManagementOperation, IAddressManagementInput } from './add-address';\n\nexport function updatePrimaryAddressHandler(customer: Customer, address: Address): Customer {\n customer.Addresses = setPrimaryAddress({ ...address }, [...(customer.Addresses || [])]);\n return customer;\n}\n\nexport async function updatePrimaryAddressAction(input: IAddressManagementInput, ctx: IActionContext): Promise {\n return doAddressManagementOperation(input, ctx, updatePrimaryAddressHandler);\n}\n\n/**\n * The updatePrimaryAddress data action\n * Calls the read RetailServer API to get information about a customer\n * Merge the passed address information with the address information from\n * the retireved customer, and then updates that customer via the update RetailServer API.\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/update-primary-address',\n action: >updatePrimaryAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>(createAddressManagementInput),\n isBatched: false\n});\n\nconst setPrimaryAddress = (primaryAddresses: Address, addresses: Address[]): Address[] => {\n return addresses.map(addr => {\n if (addr.RecordId === primaryAddresses.RecordId) {\n addr.IsPrimary = true;\n } else {\n addr.IsPrimary = false;\n }\n return addr;\n });\n};\n","import { IPromiseQueue, PromiseBodyWrapper, PromiseRejectType, PromiseResolveType } from './base-promise-queue';\n\n/**\n * Represents an inner node which is stored in a promise queue.\n * Used internally in the PromiseQueue implementation.\n * @author Bohdan Yevchenko \n */\nclass PromiseQueueElement {\n /**\n * The body of a wrapper-function which contains a call to the promise which has to be executed in the queue.\n */\n public readonly body: PromiseBodyWrapper;\n\n /**\n * Method that resolves the promise after the promise from the body is resolved.\n */\n public readonly resolve: PromiseResolveType;\n\n /**\n * Method that rejects the promise after the promise from the body is rejected.\n */\n public readonly reject: PromiseRejectType;\n\n /**\n * Initializes queue element with the given data.\n * @param {PromiseBodyWrapper} body The body of a wrapper-function which contains a call to the promise which has to be executed in the queue.\n * @param {PromiseResolveType} resolve Method that resolves the promise after the promise from the body is resolved.\n * @param {PromiseRejectType} reject Method that rejects the promise after the promise from the body is rejected.\n */\n public constructor(\n body: PromiseBodyWrapper,\n resolve: PromiseResolveType,\n reject: PromiseRejectType) {\n\n this.body = body;\n this.resolve = resolve;\n this.reject = reject;\n }\n}\n\n/**\n * Represents a FIFO basic queue over promises.\n * @author Bohdan Yevchenko \n */\nexport class PromiseQueue implements IPromiseQueue {\n /**\n * A list of promises waiting for execution.\n */\n protected readonly _queue: PromiseQueueElement[];\n\n /**\n * Defines whether the queue is processing some element.\n */\n protected _isBusy: boolean;\n\n /**\n * Defines whether the queue can start processing new element.\n */\n private get _canProcess(): boolean {\n return !this._isBusy && this._queue.length !== 0;\n }\n\n /**\n * Creates a new instance of PromiseQueue.\n */\n public constructor() {\n this._queue = [];\n this._isBusy = false;\n }\n\n /**\n * Adds promise to the queue and automatically starts the queue execution.\n * @param {PromiseBodyWrapper} promiseBody\n * The body of a function which contains a call to the promise which has to be executed in the queue.\n */\n public async enqueue(promiseBody: PromiseBodyWrapper): Promise {\n // tslint:disable-next-line:promise-must-complete\n return new Promise(async (resolve, reject) => {\n this._queue.push(new PromiseQueueElement(promiseBody, resolve, reject));\n await this._dequeue();\n });\n }\n\n /**\n * If the queue is free, starts processing the first element in the queue and waits until all the elements are processed.\n * Otherwise (if busy or has no elements to process), does nothing.\n */\n private async _dequeue(): Promise {\n // Skip if queue is not able to process any elements.\n if (!this._canProcess) {\n return;\n }\n\n // Lock queue to prevent parallel execution.\n this._isBusy = true;\n\n // Retrieve an element from the waiting queue and start processing.\n const element: PromiseQueueElement = this._queue.shift()!;\n await this._processElement(element);\n\n // Continue executing the subsequent queue elements.\n await this._processNext();\n }\n\n /**\n * Executes the given wrapper over the promise and calls initial resolve/reject correspondingly.\n * @param {PromiseQueueElement} element The queue element which should be processed now.\n */\n private async _processElement(element: PromiseQueueElement): Promise {\n try {\n await element.body().then(element.resolve).catch(element.reject);\n } catch (error) {\n element.reject(error);\n }\n }\n\n /**\n * Unlocks the queue and tries to process the next element in the queue.\n */\n private async _processNext(): Promise {\n this._isBusy = false;\n await this._dequeue();\n }\n}","import { PromiseBodyWrapper } from './base-promise-queue';\nimport { PromiseQueue } from './promise-queue';\n\nexport enum FinitePromiseQueueError {\n InvalidMaxQueueLengthPassed = 'Invalid maxQueueLength value passed to FinitePromiseQueue. maxQueueLength should be more or equal to 2.',\n ProcessWasDiscardedFromTheQueue = 'The process was discarded from FinitePromiseQueue.'\n}\n\n/**\n * Represents a FIFO queue over promises with a limited number of elements waiting for execution.\n * @remark\n * In case the queue reaches the limit,\n * before adding a new element the queue discards the oldest added element which is waiting to be processed.\n * Does not discard elements which are in progress under execution.\n * The discarded element will not be processed and executed.\n * @author Bohdan Yevchenko \n */\nexport class FinitePromiseQueue extends PromiseQueue {\n /**\n * @see constructor\n */\n private readonly _maxQueueLength: number;\n\n /**\n * Initializes the queue with the given limit.\n * @param {number} maxQueueLength\n * Defines the limit of maximum number of elements in the queue.\n * @remarks Includes both the number of elements waiting for the execution\n * and the element processed by the queue at the moment (in case there is some).\n * Value can't be less than 2.\n */\n public constructor(maxQueueLength: number) {\n if (maxQueueLength < 2) {\n throw new Error(FinitePromiseQueueError.InvalidMaxQueueLengthPassed);\n }\n\n super();\n this._maxQueueLength = maxQueueLength;\n }\n\n /**\n * Adds promise to the queue and automatically starts the queue execution.\n * @remarks In case the queue has reached the limit, also discards the oldest added element.\n * @param {PromiseBodyWrapper} promiseBody\n * The body of a function which contains a call to the promise which has to be executed in the queue.\n */\n public async enqueue(promiseBody: PromiseBodyWrapper): Promise {\n let totalElementsCount = this._queue.length;\n\n // If queue hasn't finished processing an element,\n // consider this element as pending.\n if (this._isBusy) {\n ++totalElementsCount;\n }\n\n // Discards the oldest added element from the queue to meet the given limitations.\n // The very first element in the queue is considered as oldest added.\n // Can't discard the element which is under execution as the promise can't be cancelled.\n if (totalElementsCount === this._maxQueueLength) {\n const element = this._queue.shift();\n if (element) {\n element.reject(FinitePromiseQueueError.ProcessWasDiscardedFromTheQueue);\n }\n }\n\n return super.enqueue(promiseBody);\n }\n}","/**\n * Namespace which extends Object functionality.\n */\nexport namespace ObjectExtensions {\n // tslint:disable:no-any\n\n /**\n * @description Verifies whether the value is null or undefined.\n * @param {any} value The value to examine.\n * @returns {boolean} True if the value is null or undefined, false otherwise.\n */\n export function isNullOrUndefined(value: any): value is null | undefined {\n return value === null || value === undefined;\n }\n\n /**\n * @description Verifies whether the value is of type string.\n * @param {any} value The value to examine.\n * @returns {boolean} True if the value is a string, false otherwise.\n */\n export function isString(value: any): value is string {\n return typeof value === 'string';\n }\n\n /**\n * @description Verifies whether the value is of type number.\n * @param {any} value The value to examine.\n * @returns {boolean} True if the value is a number, false otherwise.\n */\n export function isNumber(value: any): value is number {\n return typeof value === 'number';\n }\n\n /**\n * Verifies whether the object is a function.\n * @param {any} object The object.\n * @return {boolean} True if the object is a function, false otherwise.\n */\n export function isFunction(value: any): boolean {\n return typeof value === 'function';\n }\n\n // tslint:enable:no-any\n}","import { ObjectExtensions } from './object-extensions';\n\n/**\n * Namespace which extends Array functionality.\n */\nexport namespace ArrayExtensions {\n /**\n * @description Remove duplicate elements in the array.\n * @param {T[]} value The array to examine.\n * @returns {T[]} An array with only unique elements.\n */\n export function unique(value: T[]): T[] {\n if (!hasElements(value)) {\n return [];\n }\n\n return Array.from(new Set(value));\n }\n\n /**\n * @description Verifies whether the object array has elements.\n * @param {ReadonlyArray} value The array to examine.\n * @returns {boolean} True if the object has elements, false otherwise.\n */\n export function hasElements(value: ReadonlyArray | null | undefined): boolean {\n return !ObjectExtensions.isNullOrUndefined(value) && value.length > 0;\n }\n\n /**\n * @description Checks if all elements satisfy given condition.\n * @param {T[]} value The array to examine.\n * @param {(value: T, index: number, array: T[]) => boolean} predicate The function which checks an element.\n * @returns {boolean} True if the array is empty or all the inner elements satisfy given condition,\n * false if at least one element does not pass the condition.\n */\n export function all(value: T[], predicate: (value: T, index: number, array: T[]) => boolean): boolean {\n if (!hasElements(value)) {\n return true;\n }\n\n return value.filter(predicate).length === value.length;\n }\n}","import { ObjectExtensions } from './object-extensions';\n\n/**\n * Namespace which extends enum functionality.\n */\nexport namespace EnumExtensions {\n // tslint:disable:no-any\n\n /**\n * @description Returns a list of numeric values and enum names for the specified enum.\n * @param {any} value The enum to examine.\n * @returns {(number | string)[]} An array of numeric values and enum names.\n */\n export function getValues(enumClass: any): (number | string)[] {\n if (ObjectExtensions.isNullOrUndefined(enumClass)) {\n return [];\n }\n\n return Object.keys(enumClass).map(item => enumClass[item]);\n }\n\n /**\n * @description Returns a list of enum names for the specified enum.\n * @param {any} value The enum to examine.\n * @returns {(number | string)[]} An array of string values.\n */\n export function getNames(enumClass: any): string[] {\n return getValues(enumClass).filter(ObjectExtensions.isString);\n }\n\n /**\n * @description Returns a list of numeric values for the specified enum.\n * @param {any} value The enum to examine.\n * @returns {number[]} An array of numeric values.\n */\n export function getNumericValues(enumClass: any): number[] {\n return getValues(enumClass).filter(ObjectExtensions.isNumber);\n }\n\n /**\n * @description Returns a list of enum values for the specified enum.\n * @param {any} value The enum to examine.\n * @returns {number[]} An array of enum values.\n */\n export function getEnumValues(enumClass: any): T[] {\n return getNumericValues(enumClass).map(value => value);\n }\n\n // tslint:enable:no-any\n}","import { ObjectExtensions } from './object-extensions';\n\n/**\n * Namespace which extends string functionality.\n */\nexport namespace StringExtensions {\n /**\n * Checks if string is null, undefined, empty, or whitespace.\n * @param {string | null | undefined} value The string to examine.\n * @returns {boolean} True if it's null, undefined, empty, or whitespace; false otherwise.\n */\n export function isNullOrWhitespace(value: string | null | undefined): boolean {\n return isNullOrEmpty(value) || value!.trim() === '';\n }\n\n /**\n * Checks if string is null, undefined, or empty.\n * @param {string | null | undefined} value The string to examine.\n * @returns {boolean} True if it's null, undefined, empty, or whitespace; false otherwise.\n */\n export function isNullOrEmpty(value: string | null | undefined): boolean {\n if (ObjectExtensions.isNullOrUndefined(value)) {\n return true;\n }\n\n if (!ObjectExtensions.isString(value)) {\n throw new Error('StringExtensions has received a non-string input.');\n }\n\n return value === '';\n }\n}","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","import { v4 as uuidv4 } from 'uuid';\n\n/**\n * Namespace which provides functionality for GUID.\n */\nexport namespace Guid {\n export function generateGuid(): string {\n return uuidv4();\n }\n}","import { Guid as _guid } from './guid';\n\nexport namespace Random {\n export import Guid = _guid;\n}","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { RatingsSummary } from '@msdyn365-commerce/commerce-entities';\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric, sendRequest } from '@msdyn365-commerce/core';\nimport { GetRatingsSummaryInput, getSelectedProductIdFromActionInput } from './index';\nimport { getRnrEndpointId, getRnrPartnerId } from './utilities/getRnrKeys';\n\nexport const createInput = (input: ICreateActionContext>): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(input);\n if (productId) {\n return new GetRatingsSummaryInput(productId, getRnrPartnerId(input), getRnrEndpointId(input));\n }\n throw new Error('[GetRatingsSummary] Not all necessary parameters found while creating Input for getRatingsSummaryApi');\n};\n\n/**\n * This function gets the ratings summary\n */\nasync function getRatingsSummary(input: GetRatingsSummaryInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n ctx.trace(`[GetRatingsSummary] Failed to get ratings summary for product`);\n return {};\n }\n\n const requestUrl = `${input.serviceEndpoint}/v2.0/ratings/product/${input.productId}/summary?` +\n `tenantId=${input.tenantId}`;\n return sendRequest(requestUrl, 'get').then((response) => {\n return response.data;\n }).catch((error) => {\n ctx.trace(`[GetRatingsSummary] Failed to get ratings summary for product`);\n throw error;\n });\n}\n\nfunction inputIsValid(input: GetRatingsSummaryInput): boolean {\n return input && input.productId.length > 0 && input.tenantId.length > 0;\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-ratings-summary',\n action: >getRatingsSummary,\n input: createInput\n});","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\n/**\r\n * Global Data Bus for all modules to get wine club offer data and\r\n * state\r\n */\r\nexport class WineClubOffersBusInput implements Msdyn365.IActionInput {\r\n public getCacheKey = () => `WineClubOffer`;\r\n public getCacheObjectType = () => 'WineClubOffer';\r\n public dataCacheType = (): Msdyn365.CacheType => 'request';\r\n}\r\n\r\nexport interface IWineClubOffersBusData {\r\n offerTaken: boolean;\r\n wineClubId: string;\r\n offerAcceptedText: Msdyn365.RichText;\r\n offerIdUsed: string;\r\n}\r\n\r\nconst createInput = (): Msdyn365.IActionInput => {\r\n return new WineClubOffersBusInput();\r\n};\r\n\r\nasync function action(input: WineClubOffersBusInput, ctx: Msdyn365.IActionContext): Promise {\r\n return { offerTaken: false, wineClubId: '', offerAcceptedText: 'TESTING', offerIdUsed: '' };\r\n}\r\n\r\nexport const IWineClubOffersBusAction = Msdyn365.createObservableDataAction({\r\n action: >action,\r\n input: createInput\r\n});\r\n\r\nexport default IWineClubOffersBusAction;\r\n","\n/**\n * Copyright (c) 2018 Microsoft Corporation\n * Modules Registration\n * THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n */\n\n/**\n * Register all available modules\n */\nexport const registerAllModules = (requiredModules) => {\n let binding = { modules: {}, dataActions: {} };\n const { log, error } = console;\n const detailedWebpackError = (msg, errorObject) => { error(msg); error(errorObject); process.env.NODE_ENV !== 'development' && error('Run in dev mode to see full list of errors'); process.exit(50); }\n const handleError = (modPath, errObject) => {\n detailedWebpackError('Error with path: ' + modPath, errObject);\n }\n if (requiredModules) {\n requiredModules = requiredModules.map((module) => module.toLowerCase());\n }\n const isNotRegistered = (moduleName) => {\n return !requiredModules || requiredModules.length <= 0 || requiredModules.findIndex((module) => module === moduleName) !== -1;\n };\n\n \n const registerActionId = (actionPath) => {\n if (binding.dataActions[actionPath] &&\n binding.dataActions[actionPath].default &&\n binding.dataActions[actionPath].default.prototype &&\n binding.dataActions[actionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[actionPath].default.prototype.id] = binding.dataActions[actionPath];\n }\n };\n\n const registerSanitizedActionPath = (sanitizedActionPath, dataAction) => {\n if (process.env.NODE_ENV === 'development') {\n if (!dataAction.default) {\n throw new Error('Data action path does not have a default export');\n }\n if (!(dataAction.default.prototype.id && binding.dataActions[dataAction.default.prototype.id]) || !binding.dataActions[sanitizedActionPath]) {\n binding.dataActions[sanitizedActionPath] = dataAction;\n }\n } else {\n binding.dataActions[sanitizedActionPath] = dataAction;\n if (!binding.dataActions[sanitizedActionPath].default) {\n throw new Error('Data action path ' + sanitizedActionPath + ' does not have a default export');\n }\n binding.dataActions[sanitizedActionPath].default.prototype.RegistrationId = sanitizedActionPath;\n if (binding.dataActions[sanitizedActionPath].default.prototype.id) {\n binding.dataActions[binding.dataActions[sanitizedActionPath].default.prototype.id] = sanitizedActionPath;\n }\n }\n };\n \n try {\n\n\n isNotRegistered('acclaim-ratings') && (binding.modules['acclaim-ratings'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-acclaim-ratings' */\n 'partner/modules/acclaim-ratings/acclaim-ratings.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'acclaim-ratings',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/acclaim-ratings'\n });\n \n\n isNotRegistered('add-to-cart-by-url') && (binding.modules['add-to-cart-by-url'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-add-to-cart-by-url' */\n 'partner/modules/add-to-cart-by-url/add-to-cart-by-url.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'add-to-cart-by-url',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/add-to-cart-by-url'\n });\n \n\n isNotRegistered('age-gate') && (binding.modules['age-gate'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-age-gate' */\n 'partner/modules/age-gate/age-gate.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'age-gate',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/age-gate'\n });\n \n\n isNotRegistered('all-purpose-tasting-tours') && (binding.modules['all-purpose-tasting-tours'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-all-purpose-tasting-tours' */\n 'partner/modules/all-purpose-tasting-tours/all-purpose-tasting-tours.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'all-purpose-tasting-tours',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/all-purpose-tasting-tours'\n });\n \n\n isNotRegistered('blend') && (binding.modules['blend'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-blend' */\n 'partner/themes/blend/blend.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['checkout','content-block','header','smwe-buybox','smwe-checkout','smwe-navigation-menu','wine-club-signup'],\n iNM: false,\n ns: '__local__',\n n: 'blend',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'blend.theme.settings.json',\n md: 'src/themes/blend'\n });\n \n\n isNotRegistered('cart-affiliations-maintainer') && (binding.modules['cart-affiliations-maintainer'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cart-affiliations-maintainer' */\n 'partner/modules/cart-affiliations-maintainer/cart-affiliations-maintainer.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'customer', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'cart-affiliations-maintainer',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/cart-affiliations-maintainer'\n });\n \n\n isNotRegistered('cartmanager') && (binding.modules['cartmanager'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cartmanager' */\n 'partner/modules/cartmanager/cartmanager.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'cartmanager',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/cartmanager'\n });\n \n\n isNotRegistered('checkout-club-info-collector') && (binding.modules['checkout-club-info-collector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-club-info-collector' */\n 'partner/modules/checkout-club-info-collector/checkout-club-info-collector.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'checkout-club-info-collector',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/checkout-club-info-collector'\n });\n \n\n isNotRegistered('checkout-date-of-birth') && (binding.modules['checkout-date-of-birth'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-date-of-birth' */\n 'partner/modules/checkout-date-of-birth/checkout-date-of-birth.tsx'),\n $type: 'contentModule',\n da: [{name:'checkoutState', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'checkout-date-of-birth',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/checkout-date-of-birth'\n });\n \n\n isNotRegistered('checkout-terms-and-conditions') && (binding.modules['checkout-terms-and-conditions'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-terms-and-conditions' */\n 'partner/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.tsx'),\n $type: 'contentModule',\n da: [{name:'checkoutState', path:'@msdyn365-commerce-modules/checkout-utilities/dist/lib/checkout-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'checkout-terms-and-conditions',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/checkout-terms-and-conditions'\n });\n \n\n isNotRegistered('clear-wineclub') && (binding.modules['clear-wineclub'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-clear-wineclub' */\n 'partner/modules/clear-wineclub/clear-wineclub.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'clear-wineclub',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/clear-wineclub'\n });\n \n\n isNotRegistered('clickable-container') && (binding.modules['clickable-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-clickable-container' */\n 'partner/modules/clickable-container/clickable-container.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'clickable-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/clickable-container'\n });\n \n\n isNotRegistered('colsolare') && (binding.modules['colsolare'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-colsolare' */\n 'partner/themes/colsolare/colsolare.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'colsolare',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'colsolare.theme.settings.json',\n md: 'src/themes/colsolare'\n });\n \n\n isNotRegistered('columbiacrest') && (binding.modules['columbiacrest'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-columbiacrest' */\n 'partner/themes/columbiacrest/columbiacrest.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'columbiacrest',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'columbiacrest.theme.settings.json',\n md: 'src/themes/columbiacrest'\n });\n \n\n isNotRegistered('conditional-container') && (binding.modules['conditional-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-conditional-container' */\n 'partner/modules/conditional-container/conditional-container.tsx'),\n $type: 'containerModule',\n da: [{name:'customer', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'conditional-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/conditional-container'\n });\n \n\n isNotRegistered('conn-creek') && (binding.modules['conn-creek'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-conn-creek' */\n 'partner/themes/conn-creek/conn-creek.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'conn-creek',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'conn-creek.theme.settings.json',\n md: 'src/themes/conn-creek'\n });\n \n\n isNotRegistered('container-with-header') && (binding.modules['container-with-header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-container-with-header' */\n 'partner/modules/container-with-header/container-with-header.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'container-with-header',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/container-with-header'\n });\n \n\n isNotRegistered('content-block-no-headings') && (binding.modules['content-block-no-headings'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block-no-headings' */\n 'partner/modules/content-block-no-headings/content-block-no-headings.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'content-block-no-headings',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/content-block-no-headings'\n });\n \n\n isNotRegistered('content-block-with-title') && (binding.modules['content-block-with-title'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block-with-title' */\n 'partner/modules/content-block-with-title/content-block-with-title.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'content-block-with-title',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/content-block-with-title'\n });\n \n\n isNotRegistered('content-with-media') && (binding.modules['content-with-media'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-with-media' */\n 'partner/modules/content-with-media/content-with-media.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'content-with-media',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/content-with-media'\n });\n \n\n isNotRegistered('cookbook-tagline') && (binding.modules['cookbook-tagline'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cookbook-tagline' */\n 'partner/modules/cookbook-tagline/cookbook-tagline.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'cookbook-tagline',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/cookbook-tagline'\n });\n \n\n isNotRegistered('copyright') && (binding.modules['copyright'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-copyright' */\n 'partner/modules/copyright/copyright.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'copyright',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/copyright'\n });\n \n\n isNotRegistered('element-scroller') && (binding.modules['element-scroller'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-element-scroller' */\n 'partner/modules/element-scroller/element-scroller.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'element-scroller',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/element-scroller'\n });\n \n\n isNotRegistered('elicit') && (binding.modules['elicit'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit' */\n 'partner/themes/elicit/elicit.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['checkout','content-block','header','smwe-buybox','smwe-checkout','smwe-navigation-menu'],\n iNM: false,\n ns: '__local__',\n n: 'elicit',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'elicit.theme.settings.json',\n md: 'src/themes/elicit'\n });\n \n\n isNotRegistered('elicit-cart') && (binding.modules['elicit-cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit-cart' */\n 'partner/modules/elicit-cart/elicit-cart.tsx'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0},{name:'productAvailabilites', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0},{name:'wishlistItems', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'elicit-cart',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/elicit-cart'\n });\n \n\n isNotRegistered('elicit-subscriptions') && (binding.modules['elicit-subscriptions'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit-subscriptions' */\n 'partner/modules/elicit-subscriptions/elicit-subscriptions.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'category', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category', runOn: 0},{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'checkoutState', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 0},{name:'listPageState', path:'dataActions/search-result-container/list-page-state', runOn: 0},{name:'products', path:'dataActions/search-result-container/smwe-get-full-products-by-collection', runOn: 0},{name:'refiners', path:'dataActions/search-result-container/get-refiners-for-collection', runOn: 0},{name:'searchConfiguration', path:'dataActions/search-result-container/get-mapped-search-configuration', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'elicit-subscriptions',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/elicit-subscriptions'\n });\n \n\n isNotRegistered('emp') && (binding.modules['emp'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-emp' */\n 'partner/themes/emp/emp.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['carousel','content-block','header','smwe-search-result-container'],\n iNM: false,\n ns: '__local__',\n n: 'emp',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'emp.theme.settings.json',\n md: 'src/themes/emp'\n });\n \n\n isNotRegistered('employee-route-switcher') && (binding.modules['employee-route-switcher'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-employee-route-switcher' */\n 'partner/modules/employee-route-switcher/employee-route-switcher.tsx'),\n $type: 'contentModule',\n da: [{name:'customer', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'employee-route-switcher',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/employee-route-switcher'\n });\n \n\n isNotRegistered('enoteca') && (binding.modules['enoteca'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-enoteca' */\n 'partner/themes/enoteca/enoteca.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'enoteca',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'enoteca.theme.settings.json',\n md: 'src/themes/enoteca'\n });\n \n\n isNotRegistered('erath') && (binding.modules['erath'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-erath' */\n 'partner/themes/erath/erath.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'erath',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'erath.theme.settings.json',\n md: 'src/themes/erath'\n });\n \n\n isNotRegistered('event-description') && (binding.modules['event-description'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-event-description' */\n 'partner/modules/event-description/event-description.tsx'),\n $type: 'contentModule',\n da: [{name:'eventDescription', path:'dataActions/get-event-description', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'event-description',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/event-description'\n });\n \n\n isNotRegistered('event-list') && (binding.modules['event-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-event-list' */\n 'partner/modules/event-list/event-list.tsx'),\n $type: 'contentModule',\n da: [{name:'category', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category', runOn: 0},{name:'channelConfiguration', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration', runOn: 0},{name:'products', path:'dataActions/get-products-with-attributes-by-category', runOn: 0},{name:'refineSearchProducts', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-products-by-refine-search-category', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'event-list',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/event-list'\n });\n \n\n isNotRegistered('event-schedule') && (binding.modules['event-schedule'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-event-schedule' */\n 'partner/modules/event-schedule/event-schedule.tsx'),\n $type: 'contentModule',\n da: [{name:'eventDescription', path:'dataActions/get-event-description', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'event-schedule',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/event-schedule'\n });\n \n\n isNotRegistered('family-and-friends') && (binding.modules['family-and-friends'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-family-and-friends' */\n 'partner/modules/family-and-friends/family-and-friends.tsx'),\n $type: 'contentModule',\n da: [{name:'codeList', path:'modules/family-and-friends/actions/get-friends-and-family-list.action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'family-and-friends',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/family-and-friends'\n });\n \n\n isNotRegistered('fth') && (binding.modules['fth'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-fth' */\n 'partner/themes/fth/fth.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['carousel','container-with-header','content-block','header','order-confirmation','smwe-navigation-menu'],\n iNM: false,\n ns: '__local__',\n n: 'fth',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'fth.theme.settings.json',\n md: 'src/themes/fth'\n });\n \n\n isNotRegistered('generazioni') && (binding.modules['generazioni'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-generazioni' */\n 'partner/themes/generazioni/generazioni.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'generazioni',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'generazioni.theme.settings.json',\n md: 'src/themes/generazioni'\n });\n \n\n isNotRegistered('gift-card-balance') && (binding.modules['gift-card-balance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-gift-card-balance' */\n 'partner/modules/gift-card-balance/gift-card-balance.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'gift-card-balance',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/gift-card-balance'\n });\n \n\n isNotRegistered('h3-theme') && (binding.modules['h3-theme'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-h3-theme' */\n 'partner/themes/h3-theme/h3-theme.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['header','smwe-navigation-menu'],\n iNM: false,\n ns: '__local__',\n n: 'h3-theme',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'h3-theme.settings.json',\n md: 'src/themes/h3-theme'\n });\n \n\n isNotRegistered('home-carousel') && (binding.modules['home-carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-home-carousel' */\n 'partner/modules/home-carousel/home-carousel.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'home-carousel',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/home-carousel'\n });\n \n\n isNotRegistered('ie-only-message') && (binding.modules['ie-only-message'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-ie-only-message' */\n 'partner/modules/ie-only-message/ie-only-message.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'ie-only-message',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/ie-only-message'\n });\n \n\n isNotRegistered('iframe-module') && (binding.modules['iframe-module'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-iframe-module' */\n 'partner/modules/iframe-module/iframe-module.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'iframe-module',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/iframe-module'\n });\n \n\n isNotRegistered('instagram-integration') && (binding.modules['instagram-integration'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-instagram-integration' */\n 'partner/modules/instagram-integration/instagram-integration.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'instagram-integration',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/instagram-integration'\n });\n \n\n isNotRegistered('intrinsic-wine-co') && (binding.modules['intrinsic-wine-co'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-intrinsic-wine-co' */\n 'partner/themes/intrinsic-wine-co/intrinsic-wine-co.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'intrinsic-wine-co',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'intrinsic-wine-co.theme.settings.json',\n md: 'src/themes/intrinsic-wine-co'\n });\n \n\n isNotRegistered('lightbox') && (binding.modules['lightbox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-lightbox' */\n 'partner/modules/lightbox/lightbox.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'lightbox',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/lightbox'\n });\n \n\n isNotRegistered('link-list') && (binding.modules['link-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-link-list' */\n 'partner/modules/link-list/link-list.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'link-list',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/link-list'\n });\n \n\n isNotRegistered('logo-14hands') && (binding.modules['logo-14hands'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-logo-14hands' */\n 'partner/modules/logo-14hands/logo-14hands.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'logo-14hands',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/logo-14hands'\n });\n \n\n isNotRegistered('mailing-list') && (binding.modules['mailing-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-mailing-list' */\n 'partner/modules/mailing-list/mailing-list.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'mailing-list',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/mailing-list'\n });\n \n\n isNotRegistered('mailing-list-form') && (binding.modules['mailing-list-form'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-mailing-list-form' */\n 'partner/modules/mailing-list-form/mailing-list-form.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'mailing-list-form',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/mailing-list-form'\n });\n \n\n isNotRegistered('mailing-list-popup-modal') && (binding.modules['mailing-list-popup-modal'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-mailing-list-popup-modal' */\n 'partner/modules/mailing-list-popup-modal/mailing-list-popup-modal.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'mailing-list-popup-modal',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/mailing-list-popup-modal'\n });\n \n\n isNotRegistered('mailing-list-redirect-form') && (binding.modules['mailing-list-redirect-form'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-mailing-list-redirect-form' */\n 'partner/modules/mailing-list-redirect-form/mailing-list-redirect-form.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'mailing-list-redirect-form',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/mailing-list-redirect-form'\n });\n \n\n isNotRegistered('multi-carousel') && (binding.modules['multi-carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-multi-carousel' */\n 'partner/modules/multi-carousel/multi-carousel.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'multi-carousel',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/multi-carousel'\n });\n \n\n isNotRegistered('north-star') && (binding.modules['north-star'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-north-star' */\n 'partner/themes/north-star/north-star.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'north-star',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'north-star.theme.settings.json',\n md: 'src/themes/north-star'\n });\n \n\n isNotRegistered('notification') && (binding.modules['notification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-notification' */\n 'partner/modules/notification/notification.tsx'),\n $type: 'contentModule',\n da: [{name:'notification', path:'dataActions/get-notification-message', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'notification',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/notification'\n });\n \n\n isNotRegistered('offer-container') && (binding.modules['offer-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-offer-container' */\n 'partner/modules/offer-container/offer-container.tsx'),\n $type: 'containerModule',\n da: [{name:'offerOptionBus', path:'dataActions/wine-club-offers-bus', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'offer-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/offer-container'\n });\n \n\n isNotRegistered('offer-option-container') && (binding.modules['offer-option-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-offer-option-container' */\n 'partner/modules/offer-option-container/offer-option-container.tsx'),\n $type: 'containerModule',\n da: [{name:'offerOptionBus', path:'dataActions/wine-club-offers-bus', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'offer-option-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/offer-option-container'\n });\n \n\n isNotRegistered('overflow-container') && (binding.modules['overflow-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-overflow-container' */\n 'partner/modules/overflow-container/overflow-container.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'overflow-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/overflow-container'\n });\n \n\n isNotRegistered('page-tos') && (binding.modules['page-tos'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-page-tos' */\n 'partner/modules/page-tos/page-tos.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'page-tos',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/page-tos'\n });\n \n\n isNotRegistered('patzhall') && (binding.modules['patzhall'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-patzhall' */\n 'partner/themes/patzhall/patzhall.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'patzhall',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'patzhall.theme.settings.json',\n md: 'src/themes/patzhall'\n });\n \n\n isNotRegistered('pdp-attributes') && (binding.modules['pdp-attributes'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-pdp-attributes' */\n 'partner/modules/pdp-attributes/pdp-attributes.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'pdp-attributes',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/pdp-attributes'\n });\n \n\n isNotRegistered('pdp-dynamic-image') && (binding.modules['pdp-dynamic-image'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-pdp-dynamic-image' */\n 'partner/modules/pdp-dynamic-image/pdp-dynamic-image.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'pdp-dynamic-image',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/pdp-dynamic-image'\n });\n \n\n isNotRegistered('product-apellation') && (binding.modules['product-apellation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-apellation' */\n 'partner/modules/product-apellation/product-apellation.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-apellation',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-apellation'\n });\n \n\n isNotRegistered('product-attributes') && (binding.modules['product-attributes'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-attributes' */\n 'partner/modules/product-attributes/product-attributes.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-attributes',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-attributes'\n });\n \n\n isNotRegistered('product-container') && (binding.modules['product-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-container' */\n 'partner/modules/product-container/product-container.tsx'),\n $type: 'containerModule',\n da: [{name:'productAttributes', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-container'\n });\n \n\n isNotRegistered('product-data-entry') && (binding.modules['product-data-entry'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-data-entry' */\n 'partner/modules/product-data-entry/product-data-entry.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'product-data-entry',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-data-entry'\n });\n \n\n isNotRegistered('product-description') && (binding.modules['product-description'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-description' */\n 'partner/modules/product-description/product-description.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-description',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-description'\n });\n \n\n isNotRegistered('product-link') && (binding.modules['product-link'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-link' */\n 'partner/modules/product-link/product-link.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-link',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-link'\n });\n \n\n isNotRegistered('product-price') && (binding.modules['product-price'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-price' */\n 'partner/modules/product-price/product-price.tsx'),\n $type: 'contentModule',\n da: [{name:'channelConfiguration', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration', runOn: 0},{name:'hideClubPrice', path:'dataActions/hide-club-price', runOn: 0},{name:'keyedInPrice', path:'dataActions/get-keyed-in-price', runOn: 0},{name:'keyedInPriceError', path:'dataActions/get-keyed-in-price-error', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productPrice', path:'modules/product-price/data-actions/get-price-for-selected-variant', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-price',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-price'\n });\n \n\n isNotRegistered('product-skutitle') && (binding.modules['product-skutitle'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-product-skutitle' */\n 'partner/modules/product-skutitle/product-skutitle.tsx'),\n $type: 'contentModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 1},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'product-skutitle',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/product-skutitle'\n });\n \n\n isNotRegistered('promo-banner-cookie') && (binding.modules['promo-banner-cookie'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-promo-banner-cookie' */\n 'partner/modules/promo-banner-cookie/promo-banner-cookie.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'promo-banner-cookie',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/promo-banner-cookie'\n });\n \n\n isNotRegistered('reset-subscription') && (binding.modules['reset-subscription'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-reset-subscription' */\n 'partner/modules/reset-subscription/reset-subscription.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'reset-subscription',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/reset-subscription'\n });\n \n\n isNotRegistered('scroll-anim-container') && (binding.modules['scroll-anim-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-scroll-anim-container' */\n 'partner/modules/scroll-anim-container/scroll-anim-container.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'scroll-anim-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/scroll-anim-container'\n });\n \n\n isNotRegistered('scroll-event-manager') && (binding.modules['scroll-event-manager'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-scroll-event-manager' */\n 'partner/modules/scroll-event-manager/scroll-event-manager.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'scroll-event-manager',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/scroll-event-manager'\n });\n \n\n isNotRegistered('shipping-map') && (binding.modules['shipping-map'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-shipping-map' */\n 'partner/modules/shipping-map/shipping-map.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'shipping-map',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/shipping-map'\n });\n \n\n isNotRegistered('shipping-popup') && (binding.modules['shipping-popup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-shipping-popup' */\n 'partner/modules/shipping-popup/shipping-popup.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'shipping-popup',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/shipping-popup'\n });\n \n\n isNotRegistered('shipping-service') && (binding.modules['shipping-service'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-shipping-service' */\n 'partner/modules/shipping-service/shipping-service.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'shipping-service',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/shipping-service'\n });\n \n\n isNotRegistered('single-product-container') && (binding.modules['single-product-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-single-product-container' */\n 'partner/modules/single-product-container/single-product-container.tsx'),\n $type: 'containerModule',\n da: [{name:'productAttributes', path:'modules/single-product-container/data-actions/get-single-product', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'single-product-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/single-product-container'\n });\n \n\n isNotRegistered('smart-sticky-nav') && (binding.modules['smart-sticky-nav'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smart-sticky-nav' */\n 'partner/modules/smart-sticky-nav/smart-sticky-nav.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'smart-sticky-nav',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smart-sticky-nav'\n });\n \n\n isNotRegistered('smwe') && (binding.modules['smwe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe' */\n 'partner/themes/smwe/smwe.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['header','smwe-navigation-menu'],\n iNM: false,\n ns: '__local__',\n n: 'smwe',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'smwe.theme.settings.json',\n md: 'src/themes/smwe'\n });\n \n\n isNotRegistered('smwe-account-management-address') && (binding.modules['smwe-account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-account-management-address' */\n 'partner/modules/smwe-account-management-address/smwe-account-management-address.tsx'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'countryRegions', path:'dataActions/get-country-regions', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-account-management-address',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-account-management-address'\n });\n \n\n isNotRegistered('smwe-breadcrumb') && (binding.modules['smwe-breadcrumb'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-breadcrumb' */\n 'partner/modules/smwe-breadcrumb/smwe-breadcrumb.tsx'),\n $type: 'contentModule',\n da: [{name:'breadcrumbData', path:'modules/smwe-breadcrumb/actions/smwe-breadcrumb_data_action', runOn: 1},{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-breadcrumb',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-breadcrumb'\n });\n \n\n isNotRegistered('smwe-buybox') && (binding.modules['smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/modules/smwe-buybox/smwe-buybox.tsx'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 1},{name:'channelConfiguration', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant', runOn: 0},{name:'keyedInPrice', path:'dataActions/get-keyed-in-price', runOn: 0},{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productAvailability', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant', runOn: 0},{name:'productDimensions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant', runOn: 0},{name:'productPrice', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant', runOn: 0},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1},{name:'ratingsSummary', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-buybox',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-buybox'\n });\n \n\n isNotRegistered('smwe-cart') && (binding.modules['smwe-cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-cart' */\n 'partner/modules/smwe-cart/smwe-cart.tsx'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 0},{name:'productAvailabilites', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines', runOn: 0},{name:'products', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart', runOn: 0},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 0},{name:'wishlistItems', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist', runOn: 1},{name:'wishlists', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-cart',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-cart'\n });\n \n\n isNotRegistered('smwe-checkout') && (binding.modules['smwe-checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout' */\n 'partner/modules/smwe-checkout/smwe-checkout.tsx'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1},{name:'products', path:'modules/smwe-checkout/actions/get-products-in-active-smwe-checkout-cart', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-checkout',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-checkout'\n });\n \n\n isNotRegistered('smwe-checkout-billing-address') && (binding.modules['smwe-checkout-billing-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-billing-address' */\n 'partner/modules/smwe-checkout-billing-address/smwe-checkout-billing-address.tsx'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'dataActions/get-country-regions', runOn: 0},{name:'countryStates', path:'dataActions/get-country-state', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-checkout-billing-address',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-checkout-billing-address'\n });\n \n\n isNotRegistered('smwe-checkout-delivery-options') && (binding.modules['smwe-checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-delivery-options' */\n 'partner/modules/smwe-checkout-delivery-options/smwe-checkout-delivery-options.tsx'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-checkout-delivery-options',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-checkout-delivery-options'\n });\n \n\n isNotRegistered('smwe-checkout-gift-card') && (binding.modules['smwe-checkout-gift-card'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-gift-card' */\n 'partner/modules/smwe-checkout-gift-card/smwe-checkout-gift-card.tsx'),\n $type: 'contentModule',\n da: [{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-checkout-gift-card',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-checkout-gift-card'\n });\n \n\n isNotRegistered('smwe-checkout-section-container') && (binding.modules['smwe-checkout-section-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-section-container' */\n 'partner/modules/smwe-checkout-section-container/smwe-checkout-section-container.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-checkout-section-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-checkout-section-container'\n });\n \n\n isNotRegistered('smwe-checkout-shipping-address') && (binding.modules['smwe-checkout-shipping-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-shipping-address' */\n 'partner/modules/smwe-checkout-shipping-address/smwe-checkout-shipping-address.tsx'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'cart', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-checkout-cart', runOn: 1},{name:'channelConfiguration', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration', runOn: 0},{name:'checkout', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action', runOn: 1},{name:'countryRegions', path:'dataActions/get-country-regions', runOn: 0},{name:'countryStates', path:'dataActions/get-country-state', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-checkout-shipping-address',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-checkout-shipping-address'\n });\n \n\n isNotRegistered('smwe-footer-item') && (binding.modules['smwe-footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-footer-item' */\n 'partner/modules/smwe-footer-item/smwe-footer-item.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-footer-item',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-footer-item'\n });\n \n\n isNotRegistered('smwe-iframe') && (binding.modules['smwe-iframe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-iframe' */\n 'partner/modules/smwe-iframe/smwe-iframe.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-iframe',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-iframe'\n });\n \n\n isNotRegistered('smwe-media-gallery') && (binding.modules['smwe-media-gallery'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-media-gallery' */\n 'partner/modules/smwe-media-gallery/smwe-media-gallery.tsx'),\n $type: 'containerModule',\n da: [{name:'product', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant', runOn: 0},{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-media-gallery',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-media-gallery'\n });\n \n\n isNotRegistered('smwe-minicart') && (binding.modules['smwe-minicart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-minicart' */\n 'partner/modules/smwe-minicart/smwe-minicart.tsx'),\n $type: 'containerModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-minicart',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-minicart'\n });\n \n\n isNotRegistered('smwe-navigation-menu') && (binding.modules['smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/modules/smwe-navigation-menu/smwe-navigation-menu.tsx'),\n $type: 'contentModule',\n da: [{name:'categories', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-navigation-menu',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-navigation-menu'\n });\n \n\n isNotRegistered('smwe-order-details') && (binding.modules['smwe-order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-order-details' */\n 'partner/modules/smwe-order-details/smwe-order-details.tsx'),\n $type: 'contentModule',\n da: [{name:'channels', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels', runOn: 0},{name:'loyaltyCard', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card', runOn: 1},{name:'orderHydration', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations', runOn: 0},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations', runOn: 0},{name:'tenderTypes', path:'@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-order-details',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-order-details'\n });\n \n\n isNotRegistered('smwe-product-collection') && (binding.modules['smwe-product-collection'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-product-collection' */\n 'partner/modules/smwe-product-collection/smwe-product-collection.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-product-collection',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-product-collection'\n });\n \n\n isNotRegistered('smwe-search') && (binding.modules['smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/modules/smwe-search/smwe-search.tsx'),\n $type: 'contentModule',\n da: [{name:'searchState', path:'@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-search',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-search'\n });\n \n\n isNotRegistered('smwe-search-result-container') && (binding.modules['smwe-search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search-result-container' */\n 'partner/modules/smwe-search-result-container/smwe-search-result-container.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 0},{name:'category', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category', runOn: 0},{name:'categoryHierarchy', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy', runOn: 0},{name:'listPageState', path:'dataActions/search-result-container/list-page-state', runOn: 0},{name:'products', path:'dataActions/search-result-container/smwe-get-full-products-by-collection', runOn: 0},{name:'refiners', path:'dataActions/search-result-container/get-refiners-for-collection', runOn: 0},{name:'searchConfiguration', path:'dataActions/search-result-container/get-mapped-search-configuration', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-search-result-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-search-result-container'\n });\n \n\n isNotRegistered('smwe-sign-up') && (binding.modules['smwe-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sign-up' */\n 'partner/modules/smwe-sign-up/smwe-sign-up.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-sign-up',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-sign-up'\n });\n \n\n isNotRegistered('smwe-sku-selector-container') && (binding.modules['smwe-sku-selector-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sku-selector-container' */\n 'partner/modules/smwe-sku-selector-container/smwe-sku-selector-container.tsx'),\n $type: 'containerModule',\n da: [{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'smwe-sku-selector-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/smwe-sku-selector-container'\n });\n \n\n isNotRegistered('sort-and-filter-container') && (binding.modules['sort-and-filter-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sort-and-filter-container' */\n 'partner/modules/sort-and-filter-container/sort-and-filter-container.tsx'),\n $type: 'containerModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'sort-and-filter-container',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/sort-and-filter-container'\n });\n \n\n isNotRegistered('spring-valley-vineyard') && (binding.modules['spring-valley-vineyard'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-spring-valley-vineyard' */\n 'partner/themes/spring-valley-vineyard/spring-valley-vineyard.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','header'],\n iNM: false,\n ns: '__local__',\n n: 'spring-valley-vineyard',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'spring-valley-vineyard.theme.settings.json',\n md: 'src/themes/spring-valley-vineyard'\n });\n \n\n isNotRegistered('stagsleap') && (binding.modules['stagsleap'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-stagsleap' */\n 'partner/themes/stagsleap/stagsleap.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['header'],\n iNM: false,\n ns: '__local__',\n n: 'stagsleap',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'stagsleap.theme.settings.json',\n md: 'src/themes/stagsleap'\n });\n \n\n isNotRegistered('stemichelle') && (binding.modules['stemichelle'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-stemichelle' */\n 'partner/themes/stemichelle/stemichelle.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['buybox','content-block','header'],\n iNM: false,\n ns: '__local__',\n n: 'stemichelle',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'stemichelle.theme.settings.json',\n md: 'src/themes/stemichelle'\n });\n \n\n isNotRegistered('stemichelle-new') && (binding.modules['stemichelle-new'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-stemichelle-new' */\n 'partner/themes/stemichelle-new/stemichelle-new.tsx'),\n $type: 'themeModule',\n da: [],\n definitionExtensions: ['carousel','container-with-header','content-block','header','order-confirmation','smwe-navigation-menu'],\n iNM: false,\n ns: '__local__',\n n: 'stemichelle-new',\n p: '__local__',\n \n pdp: '',\n \n themeSettings: 'stemichelle-new.theme.settings.json',\n md: 'src/themes/stemichelle-new'\n });\n \n\n isNotRegistered('subscription-box') && (binding.modules['subscription-box'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscription-box' */\n 'partner/modules/subscription-box/subscription-box.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'subscription-box',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/subscription-box'\n });\n \n\n isNotRegistered('subscription-management') && (binding.modules['subscription-management'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscription-management' */\n 'partner/modules/subscription-management/subscription-management.tsx'),\n $type: 'contentModule',\n da: [{name:'addresses', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0},{name:'creditCards', path:'modules/subscription-management/actions/get-subscription-cards.action', runOn: 1},{name:'subscriptions', path:'modules/subscription-management/actions/get-subscriptions.action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'subscription-management',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/subscription-management'\n });\n \n\n isNotRegistered('subscription-restriction-button') && (binding.modules['subscription-restriction-button'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscription-restriction-button' */\n 'partner/modules/subscription-restriction-button/subscription-restriction-button.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'subscription-restriction-button',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/subscription-restriction-button'\n });\n \n\n isNotRegistered('subscriptions-minicart') && (binding.modules['subscriptions-minicart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscriptions-minicart' */\n 'partner/modules/subscriptions-minicart/subscriptions-minicart.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1},{name:'deliveryOptions', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines', runOn: 1},{name:'orgUnitLocations', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations', runOn: 1},{name:'productAvailabilites', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines', runOn: 1},{name:'products', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart', runOn: 1},{name:'storeSelectorStateManager', path:'@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'subscriptions-minicart',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/subscriptions-minicart'\n });\n \n\n isNotRegistered('tasting-notes') && (binding.modules['tasting-notes'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-tasting-notes' */\n 'partner/modules/tasting-notes/tasting-notes.tsx'),\n $type: 'contentModule',\n da: [{name:'productSpecificationData', path:'dataActions/get-attributes-for-selected-variant', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'tasting-notes',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/tasting-notes'\n });\n \n\n isNotRegistered('timeline') && (binding.modules['timeline'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-timeline' */\n 'partner/modules/timeline/timeline.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'timeline',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/timeline'\n });\n \n\n isNotRegistered('validation-form') && (binding.modules['validation-form'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-validation-form' */\n 'partner/modules/validation-form/validation-form.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'validation-form',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/validation-form'\n });\n \n\n isNotRegistered('video-background') && (binding.modules['video-background'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-video-background' */\n 'partner/modules/video-background/video-background.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'video-background',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/video-background'\n });\n \n\n isNotRegistered('vineyard-map') && (binding.modules['vineyard-map'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-vineyard-map' */\n 'partner/modules/vineyard-map/vineyard-map.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'vineyard-map',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/vineyard-map'\n });\n \n\n isNotRegistered('wine-club') && (binding.modules['wine-club'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-club' */\n 'partner/modules/wine-club/wine-club.tsx'),\n $type: 'contentModule',\n da: [{name:'address', path:'@msdyn365-commerce-modules/retail-actions/dist/lib/get-address', runOn: 0}],\n \n iNM: false,\n ns: '__local__',\n n: 'wine-club',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/wine-club'\n });\n \n\n isNotRegistered('wine-club-content') && (binding.modules['wine-club-content'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-club-content' */\n 'partner/modules/wine-club-content/wine-club-content.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'wine-club-content',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/wine-club-content'\n });\n \n\n isNotRegistered('wine-club-management') && (binding.modules['wine-club-management'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-club-management' */\n 'partner/modules/wine-club-management/wine-club-management.tsx'),\n $type: 'contentModule',\n da: [{name:'countryRegions', path:'dataActions/get-country-regions', runOn: 0},{name:'wineClubMember', path:'modules/wine-club-management/actions/get-membership.action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'wine-club-management',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/wine-club-management'\n });\n \n\n isNotRegistered('wine-club-signup') && (binding.modules['wine-club-signup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-club-signup' */\n 'partner/modules/wine-club-signup/wine-club-signup.tsx'),\n $type: 'contentModule',\n da: [{name:'cart', path:'@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action', runOn: 1}],\n \n iNM: false,\n ns: '__local__',\n n: 'wine-club-signup',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/wine-club-signup'\n });\n \n\n isNotRegistered('wine-finder-by-zip') && (binding.modules['wine-finder-by-zip'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-finder-by-zip' */\n 'partner/modules/wine-finder-by-zip/wine-finder-by-zip.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'wine-finder-by-zip',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/wine-finder-by-zip'\n });\n \n\n isNotRegistered('wine-finder-form') && (binding.modules['wine-finder-form'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-finder-form' */\n 'partner/modules/wine-finder-form/wine-finder-form.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'wine-finder-form',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/wine-finder-form'\n });\n \n\n isNotRegistered('youtube-modal') && (binding.modules['youtube-modal'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-youtube-modal' */\n 'partner/modules/youtube-modal/youtube-modal.tsx'),\n $type: 'contentModule',\n da: [],\n \n iNM: false,\n ns: '__local__',\n n: 'youtube-modal',\n p: '__local__',\n \n pdp: '',\n \n \n md: 'src/modules/youtube-modal'\n });\n \n\n { \n const actionPath = 'actions/get-availabilities-cartlines.overide.action';\n binding.dataActions[actionPath] = require('partner/actions/get-availabilities-cartlines.overide.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'actions/get-product-availabilities-for-selected-variant.override.action';\n binding.dataActions[actionPath] = require('partner/actions/get-product-availabilities-for-selected-variant.override.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'actions/get-ratings-summary.override.action';\n binding.dataActions[actionPath] = require('partner/actions/get-ratings-summary.override.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'actions/products-by-category.action';\n binding.dataActions[actionPath] = require('partner/actions/products-by-category.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'actions/products-by-recommendation.action';\n binding.dataActions[actionPath] = require('partner/actions/products-by-recommendation.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/family-and-friends/actions/get-friends-and-family-list.action';\n binding.dataActions[actionPath] = require('partner/modules/family-and-friends/actions/get-friends-and-family-list.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/family-and-friends/actions/validate-friends-and-family.action';\n binding.dataActions[actionPath] = require('partner/modules/family-and-friends/actions/validate-friends-and-family.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/subscription-management/actions/get-subscription-cards.action';\n binding.dataActions[actionPath] = require('partner/modules/subscription-management/actions/get-subscription-cards.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/subscription-management/actions/get-subscriptions.action';\n binding.dataActions[actionPath] = require('partner/modules/subscription-management/actions/get-subscriptions.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/subscription-management/actions/subscription-state.action';\n binding.dataActions[actionPath] = require('partner/modules/subscription-management/actions/subscription-state.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/subscription-management/actions/subscription-update.action';\n binding.dataActions[actionPath] = require('partner/modules/subscription-management/actions/subscription-update.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/wine-club-management/actions/get-membership.action';\n binding.dataActions[actionPath] = require('partner/modules/wine-club-management/actions/get-membership.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/wine-club-management/actions/membership-edit.action';\n binding.dataActions[actionPath] = require('partner/modules/wine-club-management/actions/membership-edit.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/wine-club-management/actions/membership-state.action';\n binding.dataActions[actionPath] = require('partner/modules/wine-club-management/actions/membership-state.action');\n registerActionId(actionPath);\n }\n\n { \n const actionPath = 'modules/wine-club-management/actions/wine-shipment-state.action';\n binding.dataActions[actionPath] = require('partner/modules/wine-club-management/actions/wine-shipment-state.action');\n registerActionId(actionPath);\n }\n\n if (isNotRegistered('cart-affiliations-maintainer')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cart-affiliations-maintainer')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cartmanager')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-club-info-collector')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-club-info-collector')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-date-of-birth')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('checkout-terms-and-conditions')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/checkout-utilities/dist/lib/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/checkout-utilities/dist/lib/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('clear-wineclub')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('conditional-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cookbook-tagline')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('cookbook-tagline')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-cart')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = 'dataActions/search-result-container/get-mapped-search-configuration';\n let dataAction = require('partner/dataActions/search-result-container/get-mapped-search-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = 'dataActions/search-result-container/get-refiners-for-collection';\n let dataAction = require('partner/dataActions/search-result-container/get-refiners-for-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = 'dataActions/search-result-container/list-page-state';\n let dataAction = require('partner/dataActions/search-result-container/list-page-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('elicit-subscriptions')){\n const sanitizedActionPath = 'dataActions/search-result-container/smwe-get-full-products-by-collection';\n let dataAction = require('partner/dataActions/search-result-container/smwe-get-full-products-by-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('employee-route-switcher')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-customer');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-description')){\n const sanitizedActionPath = 'dataActions/get-event-description';\n let dataAction = require('partner/dataActions/get-event-description');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-products-by-refine-search-category';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-full-products-by-refine-search-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-list')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-list')){\n const sanitizedActionPath = 'dataActions/get-products-with-attributes-by-category';\n let dataAction = require('partner/dataActions/get-products-with-attributes-by-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-schedule')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-schedule')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('event-schedule')){\n const sanitizedActionPath = 'dataActions/get-event-description';\n let dataAction = require('partner/dataActions/get-event-description');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('family-and-friends')){\n const sanitizedActionPath = 'modules/family-and-friends/actions/get-friends-and-family-list.action';\n let dataAction = require('partner/modules/family-and-friends/actions/get-friends-and-family-list.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('notification')){\n const sanitizedActionPath = 'dataActions/get-notification-message';\n let dataAction = require('partner/dataActions/get-notification-message');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('offer-container')){\n const sanitizedActionPath = 'dataActions/wine-club-offers-bus';\n let dataAction = require('partner/dataActions/wine-club-offers-bus');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('offer-option-container')){\n const sanitizedActionPath = 'dataActions/wine-club-offers-bus';\n let dataAction = require('partner/dataActions/wine-club-offers-bus');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('pdp-attributes')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('pdp-attributes')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('pdp-dynamic-image')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-apellation')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-apellation')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-attributes')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-attributes')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-container')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-description')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-description')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-link')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-price')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-price')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-price')){\n const sanitizedActionPath = 'dataActions/get-keyed-in-price';\n let dataAction = require('partner/dataActions/get-keyed-in-price');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-price')){\n const sanitizedActionPath = 'dataActions/get-keyed-in-price-error';\n let dataAction = require('partner/dataActions/get-keyed-in-price-error');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-price')){\n const sanitizedActionPath = 'dataActions/hide-club-price';\n let dataAction = require('partner/dataActions/hide-club-price');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-price')){\n const sanitizedActionPath = 'modules/product-price/data-actions/get-price-for-selected-variant';\n let dataAction = require('partner/modules/product-price/data-actions/get-price-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-skutitle')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('product-skutitle')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('reset-subscription')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('single-product-container')){\n const sanitizedActionPath = 'modules/single-product-container/data-actions/get-single-product';\n let dataAction = require('partner/modules/single-product-container/data-actions/get-single-product');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-account-management-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-account-management-address')){\n const sanitizedActionPath = 'dataActions/get-country-regions';\n let dataAction = require('partner/dataActions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-breadcrumb')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-breadcrumb')){\n const sanitizedActionPath = 'modules/smwe-breadcrumb/actions/smwe-breadcrumb_data_action';\n let dataAction = require('partner/modules/smwe-breadcrumb/actions/smwe-breadcrumb_data_action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-dimensions-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-price-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-product-availabilities-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-ratings-summary');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-buybox')){\n const sanitizedActionPath = 'dataActions/get-keyed-in-price';\n let dataAction = require('partner/dataActions/get-keyed-in-price');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-items-in-wishlist');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-wishlist-by-customer-id');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-cart')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout')){\n const sanitizedActionPath = 'modules/smwe-checkout/actions/get-products-in-active-smwe-checkout-cart';\n let dataAction = require('partner/modules/smwe-checkout/actions/get-products-in-active-smwe-checkout-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-billing-address')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-billing-address')){\n const sanitizedActionPath = 'dataActions/get-country-regions';\n let dataAction = require('partner/dataActions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-billing-address')){\n const sanitizedActionPath = 'dataActions/get-country-state';\n let dataAction = require('partner/dataActions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-delivery-options')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-gift-card')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-checkout-cart';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-checkout-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-org-unit-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-shipping-address')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/checkout-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-shipping-address')){\n const sanitizedActionPath = 'dataActions/get-country-regions';\n let dataAction = require('partner/dataActions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-checkout-shipping-address')){\n const sanitizedActionPath = 'dataActions/get-country-state';\n let dataAction = require('partner/dataActions/get-country-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-media-gallery')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-media-gallery')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-navigation-menu')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-categories-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-channels');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-sales-order-with-hydrations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types';\n let dataAction = require('@msdyn365-commerce-modules/order-management/dist/lib/actions/get-tender-types');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-order-details')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-loyalty-card');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-product-collection')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action';\n let dataAction = require('@msdyn365-commerce-modules/search-utilities/dist/lib/search-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-current-category-hierarchy');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = 'dataActions/search-result-container/get-mapped-search-configuration';\n let dataAction = require('partner/dataActions/search-result-container/get-mapped-search-configuration');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = 'dataActions/search-result-container/get-refiners-for-collection';\n let dataAction = require('partner/dataActions/search-result-container/get-refiners-for-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = 'dataActions/search-result-container/list-page-state';\n let dataAction = require('partner/dataActions/search-result-container/list-page-state');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-search-result-container')){\n const sanitizedActionPath = 'dataActions/search-result-container/smwe-get-full-products-by-collection';\n let dataAction = require('partner/dataActions/search-result-container/smwe-get-full-products-by-collection');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('smwe-sku-selector-container')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscription-box')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscription-management')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscription-management')){\n const sanitizedActionPath = 'modules/subscription-management/actions/get-subscription-cards.action';\n let dataAction = require('partner/modules/subscription-management/actions/get-subscription-cards.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscription-management')){\n const sanitizedActionPath = 'modules/subscription-management/actions/get-subscriptions.action';\n let dataAction = require('partner/modules/subscription-management/actions/get-subscriptions.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscription-restriction-button')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscriptions-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action';\n let dataAction = require('@msdyn365-commerce-modules/bopis-utilities/dist/lib/store-selector-state-manager/store-selector-state-manager-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscriptions-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-availabilities-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscriptions-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-delivery-options-for-cartlines');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscriptions-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-products-in-active-cart');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscriptions-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/search-org-unit-locations');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('subscriptions-minicart')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('tasting-notes')){\n const sanitizedActionPath = 'dataActions/get-attributes-for-selected-variant';\n let dataAction = require('partner/dataActions/get-attributes-for-selected-variant');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wine-club')){\n const sanitizedActionPath = '@msdyn365-commerce-modules/retail-actions/dist/lib/get-address';\n let dataAction = require('@msdyn365-commerce-modules/retail-actions/dist/lib/get-address');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wine-club-management')){\n const sanitizedActionPath = 'dataActions/get-country-regions';\n let dataAction = require('partner/dataActions/get-country-regions');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wine-club-management')){\n const sanitizedActionPath = 'modules/wine-club-management/actions/get-membership.action';\n let dataAction = require('partner/modules/wine-club-management/actions/get-membership.action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n if (isNotRegistered('wine-club-signup')){\n const sanitizedActionPath = '@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action';\n let dataAction = require('@msdyn365-commerce/global-state/dist/lib/data-actions/cart-state-data-action');\n registerSanitizedActionPath(sanitizedActionPath, dataAction);\n }\n \n\n \n } catch (e) {\n handleError('-', e);\n }\n \n return binding;\n};","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { subscriptionUpdateInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmSubscriptionUpdateResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetSubscriptions Input Action\r\n */\r\nexport class SubscriptionUpdateInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `ISubscriptionUpdateInput`;\r\n public getCacheObjectType = () => 'ISubscriptionUpdateInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface ISubscriptionUpdateData extends IrsmSubscriptionUpdateResponse { }\r\n\r\nexport interface IInputRequirements {\r\n subscriptionId: string;\r\n subscriptionName: string;\r\n nextOrderDate: string;\r\n addressId: string;\r\n customerId?: string;\r\n frequency: string;\r\n cardId: string;\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nexport const createSubscriptionUpdateInput = (\r\n args: Msdyn365.ICreateActionContext,\r\n {\r\n subscriptionId,\r\n subscriptionName,\r\n nextOrderDate,\r\n addressId,\r\n customerId,\r\n cardId,\r\n frequency\r\n }: IInputRequirements\r\n): SubscriptionUpdateInput => {\r\n const accNumber = args.requestContext.user.customerAccountNumber || customerId;\r\n return new SubscriptionUpdateInput(\r\n subscriptionUpdateInput(subscriptionId, subscriptionName, nextOrderDate, addressId, frequency, accNumber!, cardId)\r\n );\r\n};\r\n\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nexport async function subscriptionUpdateAction(input: SubscriptionUpdateInput, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >subscriptionUpdateAction,\r\n input: createSubscriptionUpdateInput\r\n});\r\n","import { FullProduct, IRefineFullProductSearchOutput } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductRefinerValue, ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { refineSearchByCategoryAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport getFullProducts, { FullProductInput, ProductDetailsCriteria } from './get-full-products';\nimport { QueryResultSettingsProxy } from './utilities/QueryResultSettingsProxy';\nimport { getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\n/**\n * Refine search for full products input\n */\nexport class FullProductsRefineSearchByCategoryInput implements IActionInput {\n public readonly categoryId?: number;\n public readonly channelId?: number;\n public readonly refinementCriteria: ProductRefinerValue[];\n public readonly catalogId: number;\n public ProductDetailsCriteria?: ProductDetailsCriteria;\n public readonly queryResultSettingsProxy: QueryResultSettingsProxy;\n\n constructor(\n queryResultSettingsProxy: QueryResultSettingsProxy,\n categoryId?: number,\n channelId?: number,\n refinementCriteria?: ProductRefinerValue[],\n catalogId?: number,\n criteria?: ProductDetailsCriteria\n\n ) {\n this.queryResultSettingsProxy = queryResultSettingsProxy;\n this.categoryId = categoryId;\n this.channelId = channelId;\n this.refinementCriteria = refinementCriteria || [];\n this.catalogId = catalogId || 0;\n this.ProductDetailsCriteria = criteria;\n }\n\n public getCacheKey = () => `FullProductsRefineSearchByCategoryInputCache`;\n public getCacheObjectType = () => 'FullProductsRefineSearchByCategoryInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make the core action calls\n */\nexport const createFullProductsRefineSearchByCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n const refinementCriteria = inputData.config && inputData.config.refinementCriteria;\n const queryResultSettingsProxy = QueryResultSettingsProxy.fromInputData(inputData);\n if (!Array.isArray(refinementCriteria)) {\n return new FullProductsRefineSearchByCategoryInput(queryResultSettingsProxy);\n }\n\n if (inputData && inputData.requestContext && inputData.requestContext.query && inputData.requestContext.query.categoryId) {\n const categoryId = Number(inputData.requestContext.query.categoryId);\n const channelId = inputData.requestContext.apiSettings.channelId;\n const catalogId = inputData.requestContext.apiSettings.catalogId;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n return new FullProductsRefineSearchByCategoryInput(\n queryResultSettingsProxy,\n categoryId,\n +channelId,\n refinementCriteria,\n catalogId,\n productDetailsCriteria\n );\n }\n\n throw new Error('Please specify categoryId, refinerId, and refinerSourceValue query string in request.');\n};\n\n/**\n * Calls the refine-search-by-category action.\n * Based on search result calls get-full-products to get all the product details.\n */\nexport async function getFullProductsByRefineSearchCategoryAction(\n input: FullProductsRefineSearchByCategoryInput,\n ctx: IActionContext\n): Promise {\n if (!input || !input.refinementCriteria) {\n ctx.trace('[getFullProductsByRefineSearchCategoryAction] Invalid input.');\n return {};\n }\n\n const hasSortingColumn = input.queryResultSettingsProxy.QueryResultSettings &&\n input.queryResultSettingsProxy.QueryResultSettings.Sorting &&\n input.queryResultSettingsProxy.QueryResultSettings.Sorting.Columns &&\n input.queryResultSettingsProxy.QueryResultSettings.Sorting.Columns.length > 0;\n if (!input.refinementCriteria.length && !hasSortingColumn) {\n ctx.telemetry.trace('[getFullProductsByRefineSearchCategoryAction] No refiners or sorting specified.');\n return {};\n }\n const { apiSettings } = ctx.requestContext;\n\n let refinementCriteria: ProductRefinerValue[] = [];\n const fullProductInputs = await refineSearchByCategoryAsync(\n { callerContext: ctx, queryResultSettings: input.queryResultSettingsProxy.QueryResultSettings },\n input.channelId || 0,\n input.catalogId,\n input.categoryId || 0,\n input.refinementCriteria\n ).then(searchResults => {\n refinementCriteria = input.refinementCriteria;\n return searchResults.map(\n (product: ProductSearchResult): FullProductInput => {\n return new FullProductInput(product.RecordId, apiSettings, input.ProductDetailsCriteria || new ProductDetailsCriteria());\n }\n );\n });\n\n if (fullProductInputs.length > 0) {\n const productResult = await >getFullProducts(fullProductInputs, ctx);\n return {\n productSearchResult: productResult,\n refinementCriteria: refinementCriteria\n };\n } else {\n return {\n productSearchResult: [],\n refinementCriteria: refinementCriteria\n };\n }\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-products-by-refine-search-category',\n action: >getFullProductsByRefineSearchCategoryAction,\n input: createFullProductsRefineSearchByCategoryInput,\n isBatched: false\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { ProductAvailableQuantity, ProductDeliveryOptions } from '@msdyn365-commerce/retail-proxy';\nimport { getDeliveryOptionsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { buildCacheKey, } from './index';\nimport {ActiveCartProductsInput, getActiveCartProductsAction} from './index';\n\n/**\n * Input class for delivery options for items in cart\n */\nexport class ProductDeliveryOptionsForCartLineItems implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`ActiveCartLineItemsDeliveryOptions`, this.apiSettings);\n public getCacheObjectType = () => 'ActiveCartLineItemsDeliveryOptions';\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductDeliveryOptionsForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API to get the delivery options for items in the cart\n */\nexport async function getDeliveryOptionsForCartLineItems(input: ProductDeliveryOptionsForCartLineItems, ctx: IActionContext): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getDeliveryOptionsForCartLineItems]No valid Input was provided, failing');\n }\n const cartState = await getCartState(ctx);\n const cart = cartState.cart;\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\n\n if(!cart || !products || products.length === 0) {\n console.log('[getDeliveryOptionsForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n ctx.trace('[getDeliveryOptionsForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n return [];\n }\n\n return getDeliveryOptionsAsync({ callerContext: ctx, queryResultSettings: {} }, products.map(x => x.RecordId), {}, null)\n .then(result => {\n return result;\n }).catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getDeliveryOptionsForCartLineItems]Error executing action`);\n throw new Error('[getDeliveryOptionsForCartLineItems]Error executing action');\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-delivery-options-for-cartlines',\n action: >getDeliveryOptionsForCartLineItems,\n input: createInput\n});\n","import { CacheType, IActionInput } from '@msdyn365-commerce/core';\n\n/**\n * These are the get user review API inputs\n */\nexport class GetUserReviewInput implements IActionInput {\n /**\n * The Id representing the product to get the ratings for.\n */\n public productId: string;\n\n /**\n * The ID representing the tenant.\n */\n public tenantId: string;\n\n /**\n * The user's authorization token\n */\n public authorization: string;\n\n /**\n * The ratings and reviews service endpoint\n */\n public serviceEndpoint: string;\n\n constructor(\n productId: string,\n tenantId: string,\n authorization: string,\n serviceEndpoint: string\n ) {\n this.productId = productId;\n this.tenantId = tenantId;\n this.authorization = authorization;\n this.serviceEndpoint = serviceEndpoint;\n }\n\n public getCacheKey = () => 'GetUserReview';\n public getCacheObjectType = () => 'GetUserReview';\n public dataCacheType = (): CacheType => 'none';\n}\n","import { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext, } from '@msdyn365-commerce/core';\r\nimport { ProductAvailableQuantity } from '@msdyn365-commerce/retail-proxy';\r\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\n/**\r\n * Input class for the getProductAvailabilitiesForSelectedVariant Data Action\r\n */\r\n// tslint:disable-next-line: no-unnecessary-class\r\nexport class ProductAvailabilitiesForSelectedVariantInput implements IActionInput {\r\n public channelId: number;\r\n public productId: number;\r\n\r\n constructor(productId: string | number, channelId: number) {\r\n this.productId = typeof productId === 'string' ? +productId : productId;\r\n this.channelId = channelId;\r\n }\r\n\r\n public getCacheKey = () => `ProductAvailabilitiesForSelectedVariant`;\r\n public getCacheObjectType = () => 'ProductAvailabilities';\r\n public dataCacheType = ():CacheType => 'none';\r\n}\r\n/**\r\n * createInput method for the getProductAvailabilitiesForSelectedVariant data action.\r\n * @param inputData The input data passed to the createInput method\r\n */\r\nexport const createProductAvailabilitiesForSelectedVariantInput = (inputData: ICreateActionContext): IActionInput => {\r\n const productId = getSelectedProductIdFromActionInput(inputData);\r\n if (productId) {\r\n return new ProductAvailabilitiesForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId);\r\n } else {\r\n throw new Error('Unable to create ProductAvailabilitiesForSelectedVariantInput, no productId found on module config or query');\r\n }\r\n};\r\n/**\r\n * The action method for the getProductAvailabilitiesForSelectedVariant data action\r\n */\r\nexport async function getProductAvailabilitiesForSelectedVariantAction(input: ProductAvailabilitiesForSelectedVariantInput, ctx: IActionContext): Promise {\r\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\r\n return getSelectedVariant(selectedVariantInput, ctx)\r\n .then(productResult => {\r\n if (productResult) {\r\n return getEstimatedAvailabilityAsync({ callerContext: ctx, queryResultSettings: {} }, { ProductIds: [productResult.RecordId], DefaultWarehouseOnly: true}).then(response => {\r\n if (response && response.ProductWarehouseInventoryAvailabilities && response.ProductWarehouseInventoryAvailabilities.length) {\r\n // translate data to support deprecated retail service call getProductAvailabilitiesAsync\r\n const formattedResponse = response.ProductWarehouseInventoryAvailabilities?.map((product) => {\r\n return {ProductId: product.ProductId, AvailableQuantity: product.PhysicalAvailable, ExtensionProperties: product.ExtensionProperties};\r\n });\r\n return formattedResponse[0];\r\n }\r\n return null;\r\n });\r\n }\r\n return null;\r\n })\r\n .catch((error) => {\r\n ctx.trace(error.message);\r\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\r\n });\r\n}\r\n/**\r\n * The complete getProductAvailabilitiesForSelectedVariant data action\r\n * Get the currently selected variant via the getSelectedVariant data action, and\r\n * then gets the availabilities for the variant via the getProductAvailabilities RetailServer API\r\n */\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/retail-actions/get-product-availabilities-for-selected-variant',\r\n action: >getProductAvailabilitiesForSelectedVariantAction,\r\n input: <(args: ICreateActionContext) => IActionInput>createProductAvailabilitiesForSelectedVariantInput\r\n});","import { CacheType, IAction, IActionContext, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { Address } from '@msdyn365-commerce/retail-proxy';\n\nimport { buildCacheKey } from './utilities/utils';\nimport getCustomer, { GetCustomerInput } from './get-customer';\n\n/**\n * Input class for the getAddress data action\n */\nexport class AddressInput implements IActionInput {\n public userAccountNumber?: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`GetAddress-${this.userAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'GetAddress';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the getAddress method\n * @param inputData The input data passed to the createInput method\n */\nexport const createGetAddressInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create address input. User is not authenticated.');\n }\n\n return new AddressInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the getAddress data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getAddressAction(input: AddressInput, ctx: IActionContext): Promise {\n const customerInput = new GetCustomerInput(ctx.requestContext.apiSettings, input.userAccountNumber);\n const customer = await getCustomer(customerInput, ctx);\n\n if (!customer) {\n throw new Error('Not able to get customer');\n }\n\n return customer.Addresses || [];\n}\n\n/**\n * The getAddress data action\n * Gets a customers information via the read RetailServer API\n * Returns address information associated with the retrieved customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-address',\n action: >getAddressAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetAddressInput\n});","import { IActionContext } from '@msdyn365-commerce/core';\nimport { ProductAvailableQuantity, ProductWarehouseInventoryAvailability } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInventoryInformation } from './product-inventory-information';\n\n/**\n * The function that maps a ProductWareHouse object into a ProductAvailabilityQuantity\n */\nexport function mapProductInventoryInformation(ctx: IActionContext,productsWarehouseInventory?: ProductWarehouseInventoryAvailability[]): IProductInventoryInformation[] {\n const productInventoryInformation: IProductInventoryInformation[] = [];\n\n if(ctx.requestContext.app.config.enableStockCheck === undefined || ctx.requestContext.app.config.enableStockCheck === false) {\n return productInventoryInformation;\n }\n\n if(productsWarehouseInventory && productsWarehouseInventory.length > 0) {\n for(const product of productsWarehouseInventory) {\n switch(ctx.requestContext.app.config.inventoryLevel){\n case 'physicalAvailable':\n // Inventory level is enabled with Physical inventory\n const physicalProductMap = mapInventoryWithPhysicalBufferEnabled(ctx, product);\n if(physicalProductMap){\n productInventoryInformation.push(physicalProductMap);\n }\n break;\n case 'totalAvailable':\n // Inventory level is enabled with Total available inventory\n const totalAvailableProductMap = mapInventoryWithTotalAvailableBufferEnabled(ctx, product);\n if(totalAvailableProductMap){\n productInventoryInformation.push(totalAvailableProductMap);\n }\n break;\n default:\n // when inventory level is inventoryThreshold or not defined\n const productMap = mapInventoryWithThresholdEnabled(ctx, product);\n if(productMap){\n productInventoryInformation.push(productMap);\n }\n break;\n }\n }\n }\n return productInventoryInformation;\n}\n\nexport function mapInventoryWithThresholdEnabled(ctx: IActionContext, productWarehouseInventoryAvailability: ProductWarehouseInventoryAvailability) : IProductInventoryInformation | null {\n if(productWarehouseInventoryAvailability && productWarehouseInventoryAvailability.ProductId && productWarehouseInventoryAvailability.TotalAvailable!==undefined) {\n const productQty = productWarehouseInventoryAvailability.TotalAvailable - ctx.requestContext.app.config.outOfStockThreshold;\n const productAvailableQuantity: ProductAvailableQuantity = {\n ProductId: productWarehouseInventoryAvailability.ProductId, \n AvailableQuantity: productQty > 0? productQty : 0\n }\n\n return {\n ProductAvailableQuantity:productAvailableQuantity,\n IsProductAvailable: productAvailableQuantity.AvailableQuantity && productAvailableQuantity.AvailableQuantity > 0 ? true : false,\n InventLocationId: productWarehouseInventoryAvailability.InventLocationId\n };\n }\n\n return null;\n}\n\nexport function mapInventoryWithPhysicalBufferEnabled(ctx: IActionContext, productWarehouseInventoryAvailability: ProductWarehouseInventoryAvailability): IProductInventoryInformation | null {\n const shouldRenderLabel = displayLabelEnabled(ctx, productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelCode);\n\n if(productWarehouseInventoryAvailability && productWarehouseInventoryAvailability.ProductId && productWarehouseInventoryAvailability.TotalAvailable !== undefined) {\n // As per the new buffer logic from RS, \n //if code is out of stock then we set the available quantity to 0 regardless of the actual value from API\n const productQuantity = productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelCode === 'OOS' \n ? 0 \n :productWarehouseInventoryAvailability.PhysicalAvailable;\n\n const productAvailableQuantity: ProductAvailableQuantity = {\n ProductId: productWarehouseInventoryAvailability.ProductId, \n AvailableQuantity: productQuantity\n }\n return {\n ProductAvailableQuantity:productAvailableQuantity,\n StockLevelCode: shouldRenderLabel? productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelCode: undefined,\n StockLevelLabel: shouldRenderLabel? productWarehouseInventoryAvailability.PhysicalAvailableInventoryLevelLabel: undefined,\n IsProductAvailable: productAvailableQuantity.AvailableQuantity != undefined && (productAvailableQuantity.AvailableQuantity > 0),\n InventLocationId: productWarehouseInventoryAvailability.InventLocationId\n };\n }\n\n return null;\n}\n\nexport function mapInventoryWithTotalAvailableBufferEnabled(ctx: IActionContext, productWarehouseInventoryAvailability: ProductWarehouseInventoryAvailability): IProductInventoryInformation | null {\n const shouldRenderLabel = displayLabelEnabled(ctx, productWarehouseInventoryAvailability.TotalAvailableInventoryLevelCode);\n if(productWarehouseInventoryAvailability && productWarehouseInventoryAvailability.ProductId && productWarehouseInventoryAvailability.TotalAvailable !== undefined) {\n // As per the new buffer logic from RS, \n //if code is out of stock then we set the available quantity to 0 regardless of the actual value from API\n const productQuantity = productWarehouseInventoryAvailability.TotalAvailableInventoryLevelCode === 'OOS' \n ? 0 \n :productWarehouseInventoryAvailability.TotalAvailable;\n\n const productAvailableQuantity: ProductAvailableQuantity = {\n ProductId: productWarehouseInventoryAvailability.ProductId, \n AvailableQuantity: productQuantity\n }\n return {\n ProductAvailableQuantity:productAvailableQuantity,\n StockLevelCode: shouldRenderLabel? productWarehouseInventoryAvailability.TotalAvailableInventoryLevelCode: undefined,\n StockLevelLabel: shouldRenderLabel? productWarehouseInventoryAvailability.TotalAvailableInventoryLevelLabel: undefined,\n IsProductAvailable: productAvailableQuantity.AvailableQuantity != undefined && (productAvailableQuantity.AvailableQuantity > 0),\n InventLocationId: productWarehouseInventoryAvailability.InventLocationId\n };\n }\n\n return null;\n}\n\nexport function displayLabelEnabled(ctx: IActionContext, inventoryCode?:string) : boolean {\n if(!inventoryCode){\n return false;\n }\n\n switch(ctx.requestContext.app.config.inventoryRanges) {\n case 'lowAndOutofStock':\n if(inventoryCode !== 'AVAIL'){\n return true;\n }\n break;\n case 'outOfStock':\n if(inventoryCode == 'OOS'){\n return true;\n }\n break;\n case 'all':\n return true;\n }\n return false;\n}","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ChannelDeliveryOption, FeatureState, OrgUnitAvailability, OrgUnitLocation, SearchArea, StoreHours } from '@msdyn365-commerce/retail-proxy';\nimport { getChannelDeliveryOptionsAsync, getOrgUnitLocationsByAreaAsync, getStoreHoursAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport {FeatureStateInput, getFeatureStateAction} from './get-feature-state';\nimport { IFullOrgUnitAvailability } from './utilities/full-org-unit-availability';\n\n/**\n * Get selected variant action input class\n */\nexport class GetOrgUnitLocationsByAreaInput implements IActionInput {\n public Latitude?: number;\n public Longitude?: number;\n public Radius?: number;\n public DistanceUnitValue?: number;\n public IgnoreLocation?: boolean;\n\n constructor(_Latitude?: number, _Longitude?: number, _Radius?: number, _DistanceUnitValue?: number, _IgnoreLocation?: boolean) {\n this.Latitude = _Latitude;\n this.Longitude = _Longitude;\n this.Radius = _Radius;\n this.DistanceUnitValue = _DistanceUnitValue;\n this.IgnoreLocation = _IgnoreLocation;\n }\n\n public getCacheKey = () => `GetOrgUnitLocationsByAreaInput`;\n public getCacheObjectType = () => 'GetOrgUnitLocationsByAreaInput';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * CreateInput method for the getSelectedVariant data action\n * @param inputData The input data passed to the createInput method\n */\nexport const createGetOrgUnitLocationsByAreaInput = (inputData: ICreateActionContext>): GetOrgUnitLocationsByAreaInput => {\n return new GetOrgUnitLocationsByAreaInput();\n};\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n */\nexport async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateAction(new FeatureStateInput(), context);\n}\n\n/**\n * Action method for the getSelectedVariant data action\n * @param input The action input class\n * @param ctx The action context\n */\nexport async function getOrgUnitLocationsByArea(\n input: GetOrgUnitLocationsByAreaInput,\n ctx: IActionContext\n): Promise {\n\n if ((input.Radius === undefined || !input.Latitude || !input.Longitude) && !input.IgnoreLocation) {\n // No valid location we want to return empty array so module can show no locations message\n return [];\n }\n\n const searchArea: SearchArea = {\n Latitude: input.Latitude,\n Longitude: input.Longitude,\n Radius: input.Radius,\n DistanceUnitValue: input.DistanceUnitValue || 0 // 0 is miles\n };\n\n const featureState = await getFeatureState(ctx);\n const retailMulitplePickupMFeatureState = featureState?.find(item => item.Name === 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature')?.IsEnabled;\n\n return getOrgUnitLocationsByAreaAsync({ callerContext: ctx }, searchArea)\n .then(async (stores: OrgUnitLocation[]) => {\n let locationDeliveryOptions: ChannelDeliveryOption[] | undefined = [];\n // if mulitple pickup mode is enable then call getchanneldeliveryoption\n if(retailMulitplePickupMFeatureState) {\n const orgUnitChannel = stores.map(store => store.ChannelId);\n locationDeliveryOptions = await _getLocationPickUpDeliveryModes(orgUnitChannel, ctx);\n }\n const locationPromiseList = stores.map(store => {\n const locationDeliveryOption = locationDeliveryOptions?.find(_channeldeliveryoption => _channeldeliveryoption.ChannelId === store.ChannelId);\n return _getLocationWithHours(store, locationDeliveryOption, ctx);\n });\n return Promise.all(locationPromiseList);\n })\n .catch((error: Error) => {\n ctx.trace('[GetOrgUnitLocationsByArea] error getting Locations');\n ctx.trace(error.message);\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug(`[GetOrgUnitLocationsByArea] error getting Locations`);\n return [];\n });\n}\n\n/**\n * Action method that obtains the store information\n * @param orgUnitLocation The org unit location\n * @param storeMap a map that contains store information group by the inventory location id\n * @param ctx The action context\n */\nasync function _getLocationWithHours(\n orgUnitLocation: OrgUnitLocation,channelDeleiveryOptions: ChannelDeliveryOption | undefined,\n ctx: IActionContext): Promise {\n if (!orgUnitLocation || !orgUnitLocation.OrgUnitNumber) {\n return { OrgUnitAvailability: undefined };\n }\n\n return getStoreHoursAsync({ callerContext: ctx }, orgUnitLocation.OrgUnitNumber)\n .then((hours: StoreHours) => {\n\n const availability: OrgUnitAvailability = {\n OrgUnitLocation: orgUnitLocation\n };\n\n if (hours && !(hours instanceof Error)) {\n return { OrgUnitAvailability: availability, StoreHours: hours, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions};\n }\n\n return { OrgUnitAvailability: availability, OrgUnitPickUpDeliveryModes: channelDeleiveryOptions };\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby] error getting availability with hours');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[GetFullAvailableInventoryNearby] error getting availability with hours`);\n return { OrgUnitAvailability: {} };\n });\n}\n\n/**\n * Action method that obtains the store information\n * @param channelCollection The org unit channel Id list\n * @param ctx The action context\n */\nasync function _getLocationPickUpDeliveryModes(\n channelCollection: (number| undefined)[],\n ctx: IActionContext): Promise {\n if (channelCollection?.length === 0 || channelCollection === undefined) {\n return undefined;\n }\n\n const channelIdList: number[] = [];\n channelCollection?.map(id => {\n if(id !== undefined) {\n return channelIdList.push(id);\n }\n });\n\n // to get all channel pickup delivery mode filterOption should be 4\n return getChannelDeliveryOptionsAsync({ callerContext: ctx }, channelIdList, 4)\n .then((channelDeliveryOptions: ChannelDeliveryOption[]) => {\n\n if (channelDeliveryOptions && !(channelDeliveryOptions instanceof Error)) {\n return channelDeliveryOptions;\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace('[GetFullAvailableInventoryNearby][getChannelDeliveryOptionsAsync] error getting availability with channel delivery options');\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[GetFullAvailableInventoryNearby] [getChannelDeliveryOptionsAsync] error getting availability with channel delivery options`);\n return [];\n });\n}\n\n/**\n * The complete getOrgUnitLocationsByArea data action\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-store-location-information',\n action: >getOrgUnitLocationsByArea,\n input: createGetOrgUnitLocationsByAreaInput\n});","import { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProjectionDomain } from '@msdyn365-commerce/retail-proxy';\n\nimport { getActivePricesAsync, getProductRatingsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport getSimpleProducts, { ProductInput } from './get-simple-products';\nimport { buildCacheKey, generateKey, getProductDetailsCriteriaFromActionInput } from './utilities/utils';\n\nimport * as semver from 'semver';\n\n/**\n * Full Product Input\n */\nexport class FullProductInput implements IActionInput {\n public productId: number;\n public channelId: number;\n public ProductDetailsCriteria: ProductDetailsCriteria;\n\n private apiSettings: ICommerceApiSettings;\n\n constructor(productId: number | string, apiSettings: ICommerceApiSettings, criteria: ProductDetailsCriteria) {\n this.productId = typeof productId === 'string' ? parseInt(productId, 10) : productId;\n this.ProductDetailsCriteria = criteria;\n this.apiSettings = apiSettings;\n this.channelId = apiSettings.channelId;\n }\n\n public getCacheKey = () => {\n const { getPrice, getRating } = this.ProductDetailsCriteria;\n return buildCacheKey(generateKey([this.productId, getPrice, getRating]), this.apiSettings);\n };\n public getCacheObjectType = () => 'FullProduct';\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Class to define criteria to get full product like price, ratings etc.\n */\nexport class ProductDetailsCriteria {\n public getPrice: boolean;\n public getRating: boolean;\n constructor(getPrice?: boolean, getRating?: boolean) {\n this.getPrice = getPrice || false;\n this.getRating = getRating || false;\n }\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createInput = (inputData: ICreateActionContext>): IActionInput[] => {\n let productIds = inputData.config && inputData.config.productIds;\n const productDetailsCriteria = getProductDetailsCriteriaFromActionInput(inputData);\n if (typeof productIds === 'string') {\n productIds = productIds.split(',');\n }\n if (Array.isArray(productIds) && productIds.length) {\n return productIds.map((productId: string) => {\n return new FullProductInput(+productId, inputData.requestContext.apiSettings, productDetailsCriteria);\n });\n }\n return [];\n};\n\n/**\n * Calls the Retail API and returns the product based on the passed ProductInput\n */\nexport async function getFullProductsAction(inputs: FullProductInput[], ctx: IActionContext): Promise {\n if (!Array.isArray(inputs) || !inputs.length) {\n ctx.trace('[getFullProductsAction] Invalid or empty inputs passed.');\n return {};\n }\n\n const { apiSettings } = ctx.requestContext;\n const productInputs = inputs.map(\n (input: FullProductInput): ProductInput => {\n return new ProductInput(input.productId, apiSettings);\n }\n );\n\n return getSimpleProducts(productInputs, ctx)\n .then(result => {\n return result.map(product => {\n return { ProductDetails: product };\n });\n })\n .then((productCollection: FullProduct[]) => {\n const validProductIds = new Set(productCollection.map(input => input.ProductDetails && input.ProductDetails.RecordId));\n\n const ratingsAndPricePromises = [\n _getActivePrices(inputs, validProductIds, productCollection, ctx),\n _getProductRatings(inputs, validProductIds, productCollection, ctx)\n ];\n return Promise.all(ratingsAndPricePromises).then(() => {\n return productCollection;\n });\n })\n .catch(e => {\n ctx.telemetry.exception(e);\n ctx.telemetry.debug(`Unable to get Simple products`);\n return [];\n });\n}\n\nasync function _getActivePrices(\n inputs: FullProductInput[],\n validProductIds: Set,\n productCollection: FullProduct[],\n ctx: IActionContext\n): Promise {\n const projectDomain: ProjectionDomain = { ChannelId: +ctx.requestContext.apiSettings.channelId, CatalogId: 0 };\n const validInputs = inputs\n .map(input => {\n if (input.ProductDetailsCriteria.getPrice && validProductIds.has(input.productId)) {\n return input.productId;\n }\n })\n .filter(Boolean);\n\n return getActivePricesAsync(\n { callerContext: ctx, queryResultSettings: {} },\n projectDomain,\n validInputs,\n new Date(),\n null,\n [],\n true\n // @ts-ignore\n ).then(result => {\n // @ts-ignore\n result.forEach(productPrice => {\n const fullProduct: FullProduct | undefined = productCollection.find(x=> {\n return x.ProductDetails && x.ProductDetails.RecordId === productPrice.ProductId;\n });\n if (fullProduct) {\n // If RS Verison < 9.16.0 (aka 10.0.6), customer contextual price won't be\n // included so instead just use AdjustedPrice\n if (semver.lt(ctx.requestContext.apiSettings.retailServerProxyVersion, '9.16.0')) {\n productPrice.CustomerContextualPrice = productPrice.AdjustedPrice;\n }\n fullProduct.ProductPrice = productPrice;\n }\n });\n })\n .catch((error: Error) => {\n const telemetry = ctx.telemetry;\n telemetry.debug('[getActivePricesAsync] Unable to get active price.');\n telemetry.exception(error);\n });\n }\n\nasync function _getProductRatings(\n inputs: FullProductInput[],\n validProductIds: Set,\n productCollection: FullProduct[],\n ctx: IActionContext\n): Promise {\n const validInputs = inputs\n .map(input => {\n if (input.ProductDetailsCriteria.getRating && validProductIds.has(input.productId)) {\n return input.productId;\n }\n })\n .filter(Boolean);\n\n return getProductRatingsAsync({ callerContext: ctx, queryResultSettings: {} }, validInputs)\n .then(result => {\n result.forEach(productRating => {\n const fullProduct: FullProduct | undefined = productCollection.find(x=> {\n return x.ProductDetails && x.ProductDetails.RecordId === productRating.ProductId;\n });\n if (fullProduct) {\n fullProduct.ProductRating = productRating;\n }\n });\n })\n .catch(err => {\n const telemetry = ctx.telemetry;\n telemetry.debug(`[getProductRatingsAsync] Unable to get product ratings.`);\n telemetry.exception(err);\n });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-full-products',\n action: >getFullProductsAction,\n input: createInput,\n isBatched: true\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\nimport { getProductInfoFromSimpleProduct } from './telemetry.action.helper';\n\nconst beforeGetByIds = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\nconst afterGetByIds = async (\n _inputs: IActionInput | IActionInput[],\n simpleProducts: SimpleProduct | SimpleProduct[],\n actionContext: IActionContext\n) => {\n if (!Array.isArray(simpleProducts)) {\n simpleProducts = [simpleProducts];\n }\n\n simpleProducts.forEach(async product => {\n if (product) {\n product = await Promise.resolve(product);\n const productInfo = getProductInfoFromSimpleProduct(product);\n actionContext.requestContext.telemetryData[productInfo.productSku] = productInfo;\n }\n });\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Products/GetByIds',\n postReaderHook: afterGetByIds,\n preReaderHook: beforeGetByIds\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport {\r\n buildCacheKey,\r\n QueryResultSettingsProxy\r\n} from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType,\r\n IActionInput,\r\n ICommerceApiSettings,\r\n ICreateActionContext\r\n} from '@msdyn365-commerce/core';\r\nimport { IQueryResultSettings, ProductRefinerValue, SortColumn } from '@msdyn365-commerce/retail-proxy';\r\nimport { hydrateRefinersFromUrl } from './url-utils';\r\n\r\nexport type listPageType = 'Category' | 'Search' | 'Unknown';\r\n\r\n/**\r\n * BaseCollection Action Input\r\n */\r\nexport class BaseCollectionInput implements IActionInput {\r\n public pageType: listPageType;\r\n public category: number | undefined;\r\n public searchText: string | undefined;\r\n public refiners: ProductRefinerValue[];\r\n public queryResultSettings: IQueryResultSettings;\r\n public apiSettings: ICommerceApiSettings;\r\n\r\n constructor(\r\n pageType: listPageType,\r\n apiSettings: ICommerceApiSettings,\r\n queryResultSettings: IQueryResultSettings,\r\n refiners: ProductRefinerValue[],\r\n category: number | undefined,\r\n searchText: string | undefined\r\n ) {\r\n this.pageType = pageType;\r\n this.apiSettings = apiSettings;\r\n this.category = category;\r\n this.searchText = searchText;\r\n this.queryResultSettings = queryResultSettings;\r\n this.refiners = refiners;\r\n }\r\n\r\n public getCacheKey = () =>\r\n // tslint:disable\r\n buildCacheKey(\r\n `${this.pageType}-${this.category || this.searchText}-${this.refiners.map(refiner => `${refiner.RefinerRecordId}${refiner.LeftValueBoundString || ''}${refiner.RightValueBoundString || ''}-`)}-${JSON.stringify(this.queryResultSettings)}`,\r\n this.apiSettings\r\n );\r\n public getCacheObjectType = () => 'CollectionActionResult';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface IGetFullProductsByCollectionData {\r\n text: string;\r\n}\r\n\r\nexport type CollectionClassConstructor = new (\r\n pageType: listPageType,\r\n apiSettings: ICommerceApiSettings,\r\n queryResultSettings: IQueryResultSettings,\r\n refiners: ProductRefinerValue[],\r\n category: number | undefined,\r\n searchText: string | undefined\r\n) => BaseCollectionInput;\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nexport const createBaseCollectionInput = (\r\n args: ICreateActionContext,\r\n inputClassConstuctor: CollectionClassConstructor\r\n): BaseCollectionInput => {\r\n const pageType =\r\n args.requestContext.urlTokens.pageType === 'Category' || (args.requestContext.query && args.requestContext.query.categoryId)\r\n ? 'Category'\r\n : 'Search';\r\n\r\n const queryResultSettings = QueryResultSettingsProxy.fromInputData(args).QueryResultSettings;\r\n const queryRefiners = hydrateRefinersFromUrl(args.requestContext);\r\n\r\n if(args.requestContext.query && args.requestContext.query.sorting) {\r\n queryResultSettings.Sorting = { Columns: JSON.parse(decodeURIComponent(args.requestContext.query.sorting)) };\r\n }\r\n\r\n if (pageType === 'Category') {\r\n return new inputClassConstuctor(\r\n pageType,\r\n args.requestContext.apiSettings,\r\n queryResultSettings,\r\n queryRefiners,\r\n +(args.requestContext.urlTokens.itemId || (args.requestContext.query && args.requestContext.query.categoryId) || 0),\r\n undefined\r\n );\r\n } else if (pageType === 'Search' && args.requestContext.query) {\r\n return new inputClassConstuctor(\r\n pageType,\r\n args.requestContext.apiSettings,\r\n queryResultSettings,\r\n queryRefiners,\r\n undefined,\r\n args.requestContext.query.q\r\n );\r\n }\r\n\r\n throw new Error('[getFullProductsForCollection]Unable to create input');\r\n};","module.exports = React;","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { clubMembershipPauseResumeInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmClubMembershipPauseResumeResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetMembership Input Action\r\n */\r\nexport class MembershipStateInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IPauseMembershipInput`;\r\n public getCacheObjectType = () => 'IPauseMembershipInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'none';\r\n}\r\n\r\nexport interface IMembershipStateInput extends IrsmClubMembershipPauseResumeResponse { }\r\n\r\nexport interface IInputRequirements {\r\n wineClubId: string;\r\n pauseResume: boolean;\r\n}\r\n\r\nexport const createMembershipStateInput = (\r\n args: Msdyn365.ICreateActionContext,\r\n { pauseResume, wineClubId }: IInputRequirements,\r\n): MembershipStateInput => {\r\n const accNumber = args.requestContext.user.customerAccountNumber;\r\n return new MembershipStateInput(\r\n clubMembershipPauseResumeInput(\r\n accNumber!,\r\n wineClubId,\r\n pauseResume\r\n )\r\n );\r\n};\r\n\r\nexport async function getMembershipStateAction(\r\n input: MembershipStateInput,\r\n ctx: Msdyn365.IActionContext,\r\n): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >getMembershipStateAction,\r\n input: createMembershipStateInput,\r\n});","import { buildCacheKeyWithUrlTokens, CurrentCategoryInput, getCategoryUrl, getCurrentCategory } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n createObservableDataAction,\n getFriendlyName,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { IDefaultPageSummaryConfig } from '../default-page-summary/default-page-summary.props.autogenerated';\nimport { IPageSummaryData } from '../IPageSummaryData';\n\n/** Category Page Summary Input */\nexport class CategoryPageSummaryInput implements IActionInput {\n public requestContext: IRequestContext;\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, requestContext: IRequestContext) {\n this.config = config || {};\n this.requestContext = requestContext;\n }\n\n public getCacheObjectType = (): string => 'CategoryPageSummary';\n public getCacheKey = (): string => buildCacheKeyWithUrlTokens('CategoryPageSummary', this.requestContext);\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createGetCurrentCategoryInput = (inputData: IActionContext): CurrentCategoryInput => {\n if (inputData && inputData.requestContext) {\n return new CurrentCategoryInput(inputData.requestContext);\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\nconst action = async (input: CategoryPageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n let currentCategory;\n try {\n currentCategory = await getCurrentCategory(createGetCurrentCategoryInput(context), context);\n } catch (e) {\n // Do nothing, if the action fails fallback to values defined in data\n }\n if (currentCategory) {\n let categoryUrl: string | undefined;\n try {\n // reset category's name neutralizedName\n const localName = getFriendlyName(context.requestContext.locale, currentCategory.NameTranslations);\n const neutralizedName = currentCategory.NeutralizedName || currentCategory.Name;\n currentCategory.Name = localName;\n currentCategory.NeutralizedName = neutralizedName;\n categoryUrl = getCategoryUrl(currentCategory);\n // @ts-ignore - TODO: property exits in new version of SDK. Remove once released.\n const canonicalDomain = context.requestContext.canonicalDomain;\n if (categoryUrl && canonicalDomain) {\n categoryUrl = `https://${canonicalDomain}${categoryUrl}`;\n } else {\n categoryUrl = undefined;\n }\n } catch (e) {\n categoryUrl = undefined;\n }\n return {\n title: currentCategory.Name,\n sharingImageUrl: currentCategory.OfflineImage,\n canonicalUrl: categoryUrl,\n faviconUrl: config && config.faviconUrl\n };\n // If the action fails fallback to values defined from data\n } else if (config) {\n return {\n title: config.title,\n sharingImageUrl: config.sharingImage && config.sharingImage.src,\n faviconUrl: config && config.faviconUrl\n };\n } else {\n return {};\n }\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/category-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new CategoryPageSummaryInput(args.config, args.requestContext);\n }\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { getRnrEndpointId, getRnrPartnerId, getSelectedProductIdFromActionInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Reviews } from '@msdyn365-commerce/commerce-entities';\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric, sendRequest } from '@msdyn365-commerce/core';\nimport { GetProductReviewsInput } from './inputs/get-product-reviews-input';\n\n/**\n * TODO: Use this function to create the input required to make the API call\n */\nexport const createInputForProductReviews = (input: ICreateActionContext>): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(input);\n if (productId) {\n // Task #211227597 Remove these hardcoded values.\n return new GetProductReviewsInput(productId, getRnrPartnerId(input), input.requestContext.locale, getRnrEndpointId(input));\n }\n throw new Error('[GetProductReviews] Not all necessary parameters found while creating Input for GetProductReviewsApi');\n};\n\nexport async function getReviewsForGivenProduct(input: GetProductReviewsInput, ctx: IActionContext): Promise {\n if (!inputIsValid(input)) {\n throw new Error(\n `[GetProductReviews] Invalid input. ProductId = ${input.productId}, TenantId = ${input.tenantId}, localeListFilter = ${input.localeListFilter}`\n );\n }\n let requestUrl =\n `${input.serviceEndpoint}/v2.0/reviews/product/${input.productId}` +\n `?tenantId=${input.tenantId}` +\n `&localeListFilter=${input.localeListFilter}` +\n `&pageSize=${input.pageSize}` +\n `&orderBy=${input.orderBy}` +\n `&skipItems=${input.skipItems}`;\n\n if (input.starFilters !== undefined && input.starFilters.length > 0) {\n requestUrl = `${requestUrl}&starFilters=${input.starFilters}`;\n }\n\n if (input.pageToken !== null) {\n requestUrl = `${requestUrl}&pageToken=${input.pageToken}`;\n }\n return sendRequest(requestUrl, 'get')\n .then(response => {\n if (response.data && response.data.items && response.data.items.length > 0) {\n return {\n items: response.data.items.filter(i => !i.isTakenDown),\n pagingInfo: response.data.pagingInfo\n };\n }\n ctx.trace(`[GetProductReviews] No reviews found for this product.`);\n return response.data;\n })\n .catch(error => {\n ctx.trace(`[GetProductReviews] Failed to get reviews for product`);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[GetProductReviews] Failed to get reviews for product`);\n throw error;\n });\n}\n\nfunction inputIsValid(input: GetProductReviewsInput): boolean {\n return input && input.productId.length > 0 && input.tenantId.length > 0 && input.localeListFilter.length > 0 && input.pageSize > 0;\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/ratings-reviews/get-product-reviews',\n action: >getReviewsForGivenProduct,\n input: createInputForProductReviews\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport MsDyn365, { IRequestContext } from '@msdyn365-commerce/core';\r\nimport { ProductRefinerValue, SortColumn } from '@msdyn365-commerce/retail-proxy';\r\n\r\n/**\r\n * Refiner Compression:\r\n * Refiners contains a non-trivial amount of data that is required to successfully make\r\n * a refiner-based API call. To allow for deep-linking of refiners in the URL, refiner data\r\n * must be compressed so that URL max length is not exceeded. Refiners will be compressed into\r\n * the following array style index-based format:\r\n * [DataTypeValue, LeftValueBoundString, RefinerRecordId, RefinerSourceValue, RightValueBoundString, UnitText]\r\n */\r\nconst compressedRefinerKeys = ['DataTypeValue', 'LeftValueBoundString', 'RefinerRecordId', 'RefinerSourceValue', 'RightValueBoundString', 'UnitText'];\r\n\r\n/**\r\n * Hydrates compressed refiner data from URL\r\n * @param fullUrl The full URL of the page\r\n */\r\nexport const hydrateRefinersFromUrl = (requestContext: IRequestContext): ProductRefinerValue[] => {\r\n const compressedRefinerArray = parseQueryParam<(string | number)[][]>('refiners', requestContext);\r\n if (!compressedRefinerArray || !compressedRefinerArray.length) {\r\n return [];\r\n }\r\n\r\n return compressedRefinerArray.map((compressedRefiner) => {\r\n try {\r\n const parsedRefiner: ProductRefinerValue = {};\r\n compressedRefinerKeys.forEach((refinerKey, index) => {\r\n // @ts-ignore: This line is intentionally not typesafe\r\n parsedRefiner[refinerKey] = compressedRefiner[index];\r\n });\r\n return parsedRefiner;\r\n } catch(e) {\r\n return undefined;\r\n }\r\n }).filter(Boolean);\r\n};\r\n\r\n/**\r\n * Compressed a list of refiners for use in URLs\r\n * @param refiners The uncompressed refiners\r\n */\r\nexport const compressRefiners = (refiners: ProductRefinerValue[]) => {\r\n const compressedRefiners: (string | number)[][] = [];\r\n\r\n refiners.forEach((refiner) => {\r\n const compressedRefiner: (string | number)[] = [];\r\n compressedRefinerKeys.forEach((refinerKey) => {\r\n // @ts-ignore: This line is intentionally not typesafe\r\n compressedRefiner.push(refiner[refinerKey]);\r\n });\r\n compressedRefiners.push(compressedRefiner);\r\n });\r\n\r\n return compressedRefiners;\r\n};\r\n\r\n/**\r\n * Method which creates a URL contiaining serialized active refiners\r\n * @param fullUrl The Current URL of the page\r\n * @param refiners The refiners which should be added to the URL\r\n */\r\nexport const buildListPageUrl = (fullUrl: URL, refiners?: ProductRefinerValue[], sortingColumns?: SortColumn[], skipCount?: number) => {\r\n // Refiner Change flow\r\n if (refiners !== undefined) {\r\n if (!refiners.length) {\r\n fullUrl.searchParams.delete('refiners');\r\n } else {\r\n fullUrl.searchParams.set('refiners', JSON.stringify(compressRefiners(refiners)));\r\n }\r\n\r\n // Adding or removing a refiner means we want to always load page 1\r\n fullUrl.searchParams.delete('skip');\r\n return fullUrl.href;\r\n }\r\n\r\n if (sortingColumns !== undefined) {\r\n if(!sortingColumns.length) {\r\n fullUrl.searchParams.delete('sorting');\r\n } else {\r\n fullUrl.searchParams.set('sorting', JSON.stringify(sortingColumns));\r\n }\r\n\r\n // Changing the sort means always load page 1\r\n fullUrl.searchParams.delete('skip');\r\n return fullUrl.href;\r\n }\r\n\r\n if (skipCount) {\r\n fullUrl.searchParams.set('skip', skipCount.toString());\r\n }\r\n\r\n return fullUrl.href;\r\n};\r\n\r\n/**\r\n * Parses a query param from the query object of the request context\r\n * @param key The query parameter key\r\n * @param requestContext The request context\r\n */\r\nexport const parseQueryParam = (key: string, requestContext: IRequestContext): T | null => {\r\n if(requestContext.query && requestContext.query[key]) {\r\n return JSON.parse(decodeURIComponent(requestContext.query[key]));\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * Gets the current URL of the page from the request context\r\n * @param requestContext The request context\r\n */\r\nexport const getCurrentUrl = (requestContext: IRequestContext): URL => {\r\n if(MsDyn365.isBrowser) {\r\n return new URL(window.location.href);\r\n } else {\r\n // NOTE: Typing on requestURL is incorrect\r\n if (requestContext.url.requestUrl.href) {\r\n return new URL(requestContext.url.requestUrl.href);\r\n } else {\r\n return new URL((requestContext.url.requestUrl));\r\n }\r\n }\r\n};\r\n","import { CacheType, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { getCurrentAsync, getUsersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\n\n/**\n * Input class for get customer data action\n */\nexport class OrganizationUsersCountInput implements IActionInput {\n public getCacheKey = () => 'OrganizationUsersCount';\n public getCacheObjectType = () => 'BusinessPartner';\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createGetOrganizationUsersCountInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new OrganizationUsersCountInput();\n};\n\nexport async function getOrganizationUsersCount(input: OrganizationUsersCountInput, ctx: IActionContext): Promise {\n return getCurrentAsync({ callerContext: ctx })\n .then(businessPartner => {\n if (!businessPartner) {\n return 0;\n }\n\n return getUsersAsync({ callerContext: ctx }, businessPartner.BusinessPartnerId)\n .then((users) => {\n return users.length;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.trace('[get-organization-users-count] Unable to load users');\n throw new Error('[get-organization-users-count] Unable to load users');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[get-organization-users-count] Unable to get BusinessPartner');\n throw new Error('[get-organization-users-count] Unable to get BusinessPartner');\n });\n}\nexport default createObservableDataAction({\n id: 'get-organization-users-count',\n action: >getOrganizationUsersCount,\n input: createGetOrganizationUsersCountInput\n});\n","import { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { IActionContext } from '@msdyn365-commerce/core';\nimport { IQueryResultSettings, ProductRefiner, ProductSearchCriteria } from '@msdyn365-commerce/retail-proxy';\nimport { getProductSearchRefinersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n\n/**\n * Uses Bulk refiner API to get refiners and child refiner values\n * @param searchCriteria product search criteria\n * @param maxItems max items\n * @param ctx action context\n */\nexport async function getProductRefinerHierarchy(searchCriteria: ProductSearchCriteria, queryResultSettings: IQueryResultSettings, ctx: IActionContext): Promise {\n return getProductSearchRefinersAsync({ callerContext: ctx, queryResultSettings: queryResultSettings }, searchCriteria).then((productRefiners: ProductRefiner[]) => {\n if (!productRefiners) {\n ctx.trace('[getRefinersByCriteriaAction] returned no refiners');\n return [];\n }\n\n const result = (productRefiners || []).map((productRefiner: ProductRefiner) => productRefiner);\n\n if (!result.length) {\n ctx.trace('[getRefinersByCriteriaAction] returned no IProductRefinerHierarchy objects');\n return [];\n }\n\n return result;\n });\n}","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { BaseCollectionInput, createBaseCollectionInput } from './base-collection-action';\nimport { getProductRefinerHierarchy } from './get-product-refiner-hierarchy';\n\n/**\n * Refiners-by-Collection Input action\n */\nexport class RefinersByCollectionInput extends BaseCollectionInput implements IActionInput {\n public getCacheObjectType = () => 'ProductRefiner';\n public dataCacheType = () => {\n if (\n this.pageType !== 'Category' ||\n (this.refiners && this.refiners.length > 0) ||\n (this.queryResultSettings && this.queryResultSettings.Sorting && this.queryResultSettings.Sorting.Columns && this.queryResultSettings.Sorting.Columns.length > 0)\n ) {\n return 'request';\n } else {\n return 'application';\n }\n }\n}\n\n/**\n * Create input method which creates an ActionInput for fetching list page refiners\n */\nconst createInput = (args: ICreateActionContext): IActionInput => {\n return createBaseCollectionInput(args, RefinersByCollectionInput);\n};\n\n/**\n * Action method which fetches refiners for the given list page\n */\nasync function action(input:RefinersByCollectionInput, ctx: IActionContext): Promise {\n let searchProductId;\n if(input.pageType === 'Category') {\n if(input.category) {\n return getProductRefinerHierarchy(\n {\n CategoryIds:[input.category],\n Context: {\n ChannelId: input.apiSettings.channelId,\n CatalogId: input.apiSettings.catalogId\n }\n },\n input.queryResultSettings,\n ctx);\n } else {\n throw new Error('[GetRefinersForCollection]Category Page Detected, but no global categoryId found');\n }\n } else {\n if (input.searchText && (ctx.requestContext.query && ctx.requestContext.query.q)) {\n return getProductRefinerHierarchy(\n {\n SearchCondition: input.searchText,\n Context: {\n ChannelId: input.apiSettings.channelId,\n CatalogId: input.apiSettings.catalogId\n }\n },\n input.queryResultSettings,\n ctx);\n } else {\n if (input.searchText && (ctx.requestContext.query && ctx.requestContext.query.productId)) {\n searchProductId = Number(input.searchText);\n if (Number.isNaN(searchProductId)) {\n throw new Error('Failed to cast search product id into a number.');\n } else {\n return getProductRefinerHierarchy(\n {\n Context: {\n ChannelId: input.apiSettings.channelId,\n CatalogId: input.apiSettings.catalogId\n },\n RecommendationListId: 'looks',\n Ids: [searchProductId || 0]\n },\n input.queryResultSettings,\n ctx);\n }\n } else {\n throw new Error(\n '[GetFullProductsForCollection]Search Page Detected, but no q= or productId= query parameter found'\n );\n }\n }\n }\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/search-result-container/get-refiners-for-collection',\n action: >action,\n input: createInput\n});","import { getSimpleProducts, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\r\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * Input class for ActiveCheckoutCartWithProducts data action\r\n */\r\nexport class ActiveCheckoutCartProductsInput implements IActionInput {\r\n public getCacheKey = () => 'ActiveCheckoutCartProducts';\r\n public getCacheObjectType = () => 'ActiveCheckoutCartProducts';\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\nexport const createInput = () => {\r\n return new ActiveCheckoutCartProductsInput();\r\n};\r\n\r\n/**\r\n * Calls the Retail API and returns a cart object based on the passed GetCartInput\r\n */\r\nexport async function getActiveCheckoutCartProductsAction(input: ActiveCheckoutCartProductsInput, ctx: IActionContext): Promise {\r\n // If no cart ID is provided in input, we need to create a cart object\r\n if (!input) {\r\n ctx.telemetry.exception(new Error('[getActiveCheckoutCartWithProducts]No valid Input was provided, failing'));\r\n throw new Error('[getActiveCheckoutCartWithProducts]No valid Input was provided, failing');\r\n }\r\n\r\n const checkoutState = await getCheckoutState(ctx);\r\n const cart = checkoutState.checkoutCart.cart;\r\n\r\n // If there are cart lines, make call to get products\r\n if (cart && cart.CartLines && cart.CartLines.length) {\r\n return getSimpleProducts(\r\n cart.CartLines.map(cartLine => {\r\n if (cartLine.ProductId) {\r\n return new ProductInput(cartLine.ProductId, ctx.requestContext.apiSettings);\r\n }\r\n return undefined;\r\n }).filter(Boolean),\r\n ctx\r\n )\r\n .then(products => {\r\n if (products) {\r\n return products;\r\n } else {\r\n return [];\r\n }\r\n })\r\n .catch(error => {\r\n ctx.telemetry.exception(error);\r\n throw new Error('[getActiveCheckoutCartWithProdcuts]Unable to hydrate cart with product information');\r\n });\r\n }\r\n\r\n return [];\r\n}\r\n\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/checkout/get-products-in-active-checkout-cart',\r\n action: >getActiveCheckoutCartProductsAction,\r\n input: createInput\r\n});\r\n","module.exports = ReactDOM;","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { Cart } from '@msdyn365-commerce/retail-proxy';\n\nconst beforeRead = async (inputs: IActionInput | IActionInput[]) => {\n // placeholder\n};\n\nconst afterRead = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n try {\n const activeCart = await Promise.resolve(Array.isArray(cart) ? cart[0] : cart);\n actionContext.requestContext.telemetryData.activeCart = activeCart;\n } catch (e) {\n actionContext.telemetry.debug('ReadCart post-data action hook failed.', e);\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/Read',\n postReaderHook: afterRead,\n preReaderHook: beforeRead\n});\n","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { QueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { searchAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductListsDataActions.g';\nimport { ProductList, ProductListSearchCriteria } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for the GetOrderTemplates data action\n */\nexport class GetOrderTemplatesInput implements IActionInput {\n public readonly productListId: string;\n public readonly queryResultSettings?: QueryResultSettings;\n\n constructor(productListId?: string, queryResultSettings?: QueryResultSettings) {\n this.productListId = productListId || '';\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = (): string => `${this.productListId}|${this.queryResultSettings?.Paging?.Top}|${this.queryResultSettings?.Paging?.Skip}`;\n public getCacheObjectType = () => 'ProductList';\n public dataCacheType = (): CacheType => 'instance';\n public shouldCacheOutput = () => false;\n}\n\n/**\n * createInput method for the GetOrderTemplate method\n * @param inputData The input data passed to the createInput method.\n * @param productListId? The product list identifier.\n * @param queryResultSettings? The query result setting required for pagination/ordering.\n */\nexport const createGetOrderTemplatesInput = (inputData: ICreateActionContext, productListId?: string, queryResultSettings?: QueryResultSettings): GetOrderTemplatesInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create get order template. User is not authenticated.');\n }\n\n return new GetOrderTemplatesInput(productListId || '', queryResultSettings);\n};\n\n/**\n * The action method for the GetOrderTemplates data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getOrderTemplatesAction(input: GetOrderTemplatesInput, ctx: IActionContext): Promise {\n try {\n\n const productListSearchCriteria: ProductListSearchCriteria = {\n ProductListId: input.productListId,\n CustomerId: ctx.requestContext.user.customerAccountNumber\n };\n return searchAsync(\n {\n callerContext: ctx,\n queryResultSettings: input.queryResultSettings\n },\n productListSearchCriteria\n );\n } catch (error) {\n ctx.telemetry.error('Not able to get order template(s)', error);\n throw error;\n }\n}\n\n/**\n * The GetOrderTemplates Data Action\n * Returns order templates\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-order-templates',\n action: >getOrderTemplatesAction,\n input: createGetOrderTemplatesInput\n});","import { SimpleText } from '@msdyn365-commerce-modules/data-types';\r\nimport { CurrentCategoryInput, getCurrentCategory, getSimpleProducts, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CommerceEntityInput, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext, IUrlTokens } from '@msdyn365-commerce/core';\r\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy';\r\n\r\n/**\r\n * Calls the Retail API and returns the products\r\n */\r\nconst getProducts = async (productIds: number[] = [], ctx: IActionContext): Promise => {\r\n const productInputs = productIds.map(productId => new ProductInput(productId,ctx.requestContext.apiSettings));\r\n return getSimpleProducts(productInputs, ctx);\r\n};\r\n\r\n/**\r\n * Creates the input required to make the retail api call\r\n */\r\nexport class GetInput extends CommerceEntityInput implements IActionInput {\r\n public itemId: number;\r\n public dataSource: string;\r\n constructor(Id: number, dataSource: string) {\r\n super({\r\n dataCacheType: 'none',\r\n cacheObjectType: 'BreadCrumbData',\r\n cacheKey: 'BreadcrumbData'\r\n });\r\n this.itemId = Id;\r\n this.dataSource = dataSource;\r\n }\r\n}\r\n\r\n/**\r\n * Creates the input required to make the retail api call\r\n */\r\nconst createInput = (inputData: ICreateActionContext) => {\r\n if(!(inputData && inputData.requestContext && inputData.requestContext.urlTokens)) {\r\n throw new Error('No url tokens found');\r\n }\r\n const token: IUrlTokens=inputData.requestContext.urlTokens;\r\n return new GetInput(parseInt(token.itemId || '0',10), token.pageType || '');\r\n};\r\n\r\n/**\r\n * Get breadcrumb data by product id action\r\n */\r\nexport async function getbreadcrumbByProductIdAction(\r\n ctx: IActionContext,\r\n productId: number\r\n): Promise {\r\n if (!ctx) {\r\n throw new Error(`getbreadcrumbByProductIdAction - Action context cannot be null/undefined`);\r\n }\r\n let productName:SimpleText = {text:''};\r\n const prodIds: number[] = [productId];\r\n const response = await getProducts(prodIds, ctx);\r\n if (response && response.length) {\r\n productName = {text:response[0].Name || ''};\r\n }\r\n return productName;\r\n}\r\n\r\n/**\r\n * Get breadcrumb data by category id action\r\n */\r\nexport async function getbreadcrumbByCategoryIdAction(\r\n ctx: IActionContext,\r\n categoryId: number\r\n): Promise {\r\n if (!ctx) {\r\n throw new Error(`getbreadcrumbByCategoryIdAction - Action context cannot be null/undefined`);\r\n }\r\n let categoryName:SimpleText = {text:''};\r\n const input= new CurrentCategoryInput(ctx.requestContext);\r\n input.categoryId=categoryId;\r\n const response = await getCurrentCategory(input,ctx);\r\n if (response) {\r\n categoryName = {text:response.Name || ''};\r\n }\r\n return categoryName;\r\n}\r\n\r\n/**\r\n * Get breadcrumb data action\r\n */\r\nexport async function getbreadcrumbDataAction(\r\n input: IActionInput,\r\n ctx: IActionContext,\r\n): Promise {\r\n if (!ctx) {\r\n throw new Error(`getbreadcrumbDataAction - Action context cannot be null/undefined`);\r\n }\r\n let breadcrumbData: SimpleText= {text:''};\r\n const dataSource = (input).dataSource;\r\n switch (dataSource.toUpperCase()) {\r\n case 'CATEGORY':\r\n breadcrumbData = await getbreadcrumbByCategoryIdAction(ctx, (input).itemId);\r\n return breadcrumbData;\r\n case 'PRODUCT':\r\n breadcrumbData = await getbreadcrumbByProductIdAction(ctx, (input).itemId);\r\n return breadcrumbData;\r\n default:\r\n return breadcrumbData;\r\n }\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getbreadcrumbDataAction,\r\n input: createInput\r\n});","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { LoyaltyCard } from '@msdyn365-commerce/retail-proxy';\nimport { getCustomerLoyaltyCardsAsync, getLoyaltyCardAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { buildCacheKey } from './index';\n\n/**\n * Input class for the getLoyaltyCard data action\n */\nexport class GetLoyaltyCardInput implements IActionInput {\n public userAccountNumber?: string;\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, userAccountNumber?: string) {\n this.userAccountNumber = userAccountNumber;\n this.apiSettings = apiSettings;\n\n }\n\n public getCacheKey = () => buildCacheKey(`GetLoyaltyCard-${this.userAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'GetLoyaltyCard';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the getLoyaltyCard method\n * @param inputData The input data passed to the createInput method\n */\nexport const createGetLoyaltyCardInput = (inputData: ICreateActionContext): GetLoyaltyCardInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create get loyalty card input. User is not authenticated.');\n }\n\n return new GetLoyaltyCardInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * The action method for the getLoyaltyCard data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getLoyaltyAction(input: GetLoyaltyCardInput, ctx: IActionContext): Promise {\n return getCustomerLoyaltyCardsAsync({ callerContext: ctx, queryResultSettings: {} }, input.userAccountNumber || null)\n .then(cards => {\n if (!cards || cards.length < 1) {\n return {};\n }\n\n const firstCard = cards[0];\n\n return getLoyaltyCardAsync({ callerContext: ctx }, firstCard.CardNumber!)\n .then(card => {\n card.LoyaltyEnrollmentDate = firstCard.LoyaltyEnrollmentDate;\n card.LoyaltyEnrollmentDateLocal = firstCard.LoyaltyEnrollmentDateLocal;\n return card;\n })\n\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`Unable to get loyalty card`);\n throw new Error('Unable to get loyalty card');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error.message);\n ctx.telemetry.debug(`Unable to get customers loyalty card`);\n throw new Error('Unable to get customers loyalty card');\n });\n}\n\n/**\n * The getLoyaltyCard data action\n * Returns the loyalty card belonging to the customer\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-loyalty-card',\n action: >getLoyaltyAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetLoyaltyCardInput\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { generateProductImageUrl } from '@msdyn365-commerce-modules/retail-actions';\nimport MsDyn365, {\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { AsyncResult, ProductSearchCriteria,ProductSearchResult } from '@msdyn365-commerce/retail-proxy';\nimport { searchByCriteriaAsync} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport {\n BaseCollectionInput,\n createBaseCollectionInput\n} from './base-collection-action';\n\nimport { ListPageStateInput } from '../list-page-state';\n\n/**\n * GetFullProductsByCollection Action Input\n */\nexport class GetFullProductsByCollectionInput extends BaseCollectionInput implements IActionInput {\n public getCacheObjectType = () => 'FullProductSearchResult';\n public dataCacheType = () => {\n if (\n this.pageType !== 'Category' ||\n (this.refiners && this.refiners.length > 0) ||\n (this.queryResultSettings && this.queryResultSettings.Sorting && this.queryResultSettings.Sorting.Columns && this.queryResultSettings.Sorting.Columns.length > 0)\n ) {\n return 'request';\n } else {\n return 'application';\n }\n }\n}\n\nexport interface IFullProductsSearchResultsWithCount {\n products: ProductSearchResult[];\n count: number;\n}\n\n/**\n * createInput function which creates and actionInput used to fetch products for a list page.\n */\nconst createInput = (args: ICreateActionContext<{ itemsPerPage: number ;includedAttributes:boolean | undefined}>): IActionInput => {\n const input = createBaseCollectionInput(args, GetFullProductsByCollectionInput);\n\n // Set Top\n if (input.queryResultSettings.Paging && args.config) {\n input.queryResultSettings.Paging.Top = args.config.itemsPerPage || 1;\n }\n\n // Set Skip\n if (input.queryResultSettings.Paging && args.requestContext.query && args.requestContext.query.skip) {\n input.queryResultSettings.Paging.Skip = +args.requestContext.query.skip;\n }\n\n input.queryResultSettings.count = true;\n\n return input;\n};\n\n/**\n * Action function to fetch products for a list page\n */\nasync function action(\n input: GetFullProductsByCollectionInput,\n ctx: IActionContext\n): Promise {\n let productSearchResults: ProductSearchResult[];\n let promise: AsyncResult;\n let searchProductId;\n const searchCriteriaInput: ProductSearchCriteria = {};\n searchCriteriaInput.Context = { ChannelId: ctx.requestContext.apiSettings.channelId, CatalogId: ctx.requestContext.apiSettings.catalogId };\n searchCriteriaInput.Refinement = input.refiners;\n searchCriteriaInput.IncludeAttributes = input.includeAttributes;\n searchCriteriaInput.SkipVariantExpansion = true;\n\n if (input.pageType === 'Category' || (ctx.requestContext.query && ctx.requestContext.query.categoryId)) {\n if (input.category) {\n searchCriteriaInput.CategoryIds = [input.category || 0];\n promise = searchByCriteriaAsync(\n {\n callerContext: ctx,\n queryResultSettings: input.queryResultSettings\n },\n searchCriteriaInput\n );\n } else {\n throw new Error(\n '[GetFullProductsForCollection]Category Page Detected, but no global categoryId found'\n );\n }\n } else {\n if (input.searchText && (ctx.requestContext.query && ctx.requestContext.query.q)) {\n searchCriteriaInput.SearchCondition = input.searchText;\n promise = searchByCriteriaAsync(\n {\n callerContext: ctx,\n queryResultSettings: input.queryResultSettings\n },\n searchCriteriaInput\n );\n } else {\n if (input.searchText && (ctx.requestContext.query && ctx.requestContext.query.productId)) {\n searchProductId = Number(input.searchText);\n if (Number.isNaN(searchProductId)) {\n throw new Error('Failed to cast search product id into a number.');\n } else {\n searchCriteriaInput.RecommendationListId = 'looks';\n searchCriteriaInput.Ids = [searchProductId || 0];\n promise = searchByCriteriaAsync(\n {\n callerContext: ctx,\n queryResultSettings: input.queryResultSettings\n },\n searchCriteriaInput\n );\n }\n } else {\n throw new Error(\n '[GetFullProductsForCollection]Search Page Detected, but no q= or productId= query parameter found'\n );\n }\n }\n }\n\n productSearchResults = await promise;\n\n const mappedProducts = productSearchResults.map(productSearchResult => {\n const newImageUrl = generateProductImageUrl(\n productSearchResult,\n ctx.requestContext.apiSettings\n );\n\n if (newImageUrl) {\n productSearchResult.PrimaryImageUrl = newImageUrl;\n }\n\n return (productSearchResult);\n });\n\n // Update ListPageState For SSR\n if (!MsDyn365.isBrowser) {\n ctx.update(new ListPageStateInput(), { totalProductCount: promise.metadata.count || 0, activeFilters: input.refiners });\n\n }\n\n return {\n products: mappedProducts,\n count: promise.metadata.count || 0\n };\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/search-result-container/get-full-products-by-collection',\n action: >action,\n input: createInput\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getSimpleProducts, ProductInput } from './index';\n\n/**\n * Input class for activeCartWithProducts data action\n */\nexport class ActiveCartProductsInput implements IActionInput {\n public getCacheKey = () => `ActiveCartProducts`;\n public getCacheObjectType = () => 'ActiveCartProducts';\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext) => {\n return new ActiveCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a cart object based on the passed GetCartInput\n */\nexport async function getActiveCartProductsAction(input: ActiveCartProductsInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n throw new Error('[getActiveCartWithProducts]No valid Input was provided, failing');\n }\n\n const cartState = await getCartState(ctx);\n const cart = cartState.cart;\n\n // If there are cart lines, make call to get products\n if (cart && cart.CartLines && cart.CartLines.length) {\n ctx.trace('Getting cart product information...');\n return getSimpleProducts(\n cart.CartLines.map(cartLine => {\n if (cartLine.ProductId) {\n return new ProductInput(cartLine.ProductId, ctx.requestContext.apiSettings);\n }\n return undefined;\n }).filter(Boolean),\n ctx\n )\n .then((products: SimpleProduct[]) => {\n if (products) {\n return products;\n } else {\n return [];\n }\n })\n .catch((error: Error) => {\n ctx.trace(error.toString());\n ctx.telemetry.error(error.message);\n ctx.telemetry.debug(`[getActiveCartWithProducts]Unable to hydrate cart with product information`);\n throw new Error('[getActiveCartWithProducts]Unable to hydrate cart with product information');\n });\n }\n\n ctx.trace('[getActiveCartWithProducts]No Products Found in cart');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-products-in-active-cart',\n action: >getActiveCartProductsAction,\n input: createInput\n});\n","/**\n* Copyright (c) 2018 Microsoft Corporation\n* Modules Registration\n* THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n*/\nconst { log, error } = console;\nconst detailedWebpackError = (msg, errorObject) => { error(msg); error(errorObject); process.env.NODE_ENV !== 'development' && error('Run in dev mode to see full list of errors'); process.exit(50); }\nconst handleError = (modPath, errObject) => {\n detailedWebpackError('Error with path: ' + modPath, errObject);\n}\n\nconst handleMissingImplementationDetails = (functionName, connectorName, connectorType) => {\n error('----ERROR: CONNECTOR MISSING IMPLEMENTATION DETAILS-----');\n error('Missing function ' + functionName + ' from ' + connectorType + ' implementation for experimentation connector ' + connectorName);\n throw new Error('Connector missing implementation details');\n}\n\nconst verifySegmentationRegistration = (connectorName) => {\n const segmentationProvider = connectorDictionary[connectorName].provider;\n try {\n if (!segmentationProvider.__proto__.initialize) {\n handleMissingImplementationDetails('initialize', connectorName, 'provider');\n }\n if (!segmentationProvider.__proto__.getSegmentations) {\n handleMissingImplementationDetails('getSegmentations', connectorName, 'provider');\n }\n } catch (e) {\n // Connector has not implemented all the required methods, setting registration as undefined\n connectorDictionary[connectorName] = undefined;\n throw e;\n }\n}\n\nconst isServer = ()=>{\n return ! (typeof window != 'undefined' && window.document);\n}\n\nconst verifyGeoLookupRegistration = (connectorName) => {\n const geoLookupProvider = connectorDictionary[connectorName].provider;\n try {\n if (!geoLookupProvider.__proto__.initialize) {\n handleMissingImplementationDetails('initialize', connectorName, 'provider');\n }\n if (!geoLookupProvider.__proto__.getGeoInformation) {\n handleMissingImplementationDetails('getGeoInformation', connectorName, 'provider');\n }\n } catch (e) {\n // Connector has not implemented all the required methods, setting registration as undefined\n connectorDictionary[connectorName] = undefined;\n throw e;\n }\n}\n\nconst verifyExperimentationReigstration = (connectorName) => {\n const connectorImpl = connectorDictionary[connectorName].provider;\n const connectorListenerImpl = connectorDictionary[connectorName].listener;\n try {\n if (!connectorImpl.__proto__.initialize) {\n handleMissingImplementationDetails('initialize', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.getConfigForClientSideInit) {\n handleMissingImplementationDetails('getConfigForClientSideInit', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.initializeClientSide) {\n handleMissingImplementationDetails('initializeClientSide', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.getExperiments) {\n handleMissingImplementationDetails('getExperiments', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.getVariantsForUser) {\n handleMissingImplementationDetails('getVariantsForUser', connectorName, 'provider');\n }\n if (!connectorImpl.__proto__.activateExperiment) {\n handleMissingImplementationDetails('activateExperiment', connectorName, 'provider');\n }\n if (!connectorListenerImpl.__proto__.initializeClientSide) {\n handleMissingImplementationDetails('initializeClientSide', connectorName, 'listener');\n }\n if (!connectorListenerImpl.__proto__.logEvent) {\n handleMissingImplementationDetails('logEvent', connectorName, 'listener');\n }\n } catch (e) {\n // Connector has not implemented all the required methods, setting registration as undefined\n connectorDictionary[connectorName] = undefined;\n throw e;\n }\n}\n\nexport const connectorDictionary = {};\n\n\nexport const validateConnectorRegistration = () => {\n \n};","import { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport getCategoriesHierarchy, { CategoriesInput } from './get-categories-hierarchy';\n\n/**\n * Action Input Class for get-current-category-hierarchy\n */\nexport class CurrentCategoryHierarchyInput extends CategoriesInput {\n public activeCategoryId: number;\n\n constructor(context: IRequestContext, mappedToHierarchy: boolean, maxItems?: number, activeCategoryId?: number) {\n super(context, mappedToHierarchy, maxItems);\n this.activeCategoryId = activeCategoryId || 0;\n }\n\n // @ts-ignore: Overriding cache object type\n public getCacheObjectType = () => 'CurrentCategoryHierarchy';\n public getCacheKey = () => `${this.activeCategoryId}-${this.channelId}`;\n}\n\n/**\n * Creates the input required for the data action\n */\nexport const createCategoriesHierarchyInput = (inputData: ICreateActionContext>): IActionInput => {\n const topItems = inputData.config && inputData.config.topCategories && parseInt(inputData.config.topCategories, 10);\n const activeCategoryId =\n (inputData.requestContext.urlTokens && inputData.requestContext.urlTokens.pageType === 'Category' && inputData.requestContext.urlTokens.itemId) ||\n (inputData.requestContext.query && inputData.requestContext.query.categoryId) ||\n 0;\n\n return new CurrentCategoryHierarchyInput(inputData.requestContext, true, topItems, +activeCategoryId);\n};\n\n/**\n * Get the hierarchy of categories that are currently active as a parent -> child array.\n * Return will be as follows: [ParentCategory, Child, SubChild, SubSubChild]\n */\nexport async function getCurrentCategoryHierarchyAction(input: CurrentCategoryHierarchyInput, ctx: IActionContext): Promise {\n\n const fullCategoryHierarchy = await getCategoriesHierarchy(\n new CategoriesInput(\n ctx.requestContext,\n true,\n input.maxItems),\n ctx);\n const categoryArray: CategoryHierarchy[] = [];\n\n const findCategory = (category: CategoryHierarchy) => {\n if(category.RecordId === input.activeCategoryId) {\n categoryArray.push(category);\n return true;\n } else if (category.Children && category.Children.length) {\n category.Children.forEach((childCategory) => {\n if(findCategory(childCategory)) {\n categoryArray.push(category);\n }\n });\n } else {\n return false;\n }\n };\n\n fullCategoryHierarchy.forEach((categoryHierarchy: CategoryHierarchy) => {\n findCategory(categoryHierarchy);\n });\n\n return categoryArray.reverse();\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-current-category-hierarchy',\n action: >getCurrentCategoryHierarchyAction,\n input: createCategoriesHierarchyInput\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { getRnrAuthEndpointId, getRnrPartnerId, getSelectedProductIdFromActionInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { Review } from '@msdyn365-commerce/commerce-entities';\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext, sendRequest } from '@msdyn365-commerce/core';\nimport { GetUserReviewInput } from './inputs/get-user-review-input';\n\n/**\n * This method builds the input for the getUserReviewApi call\n */\nconst createInput = (input: ICreateActionContext): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(input);\n const userInfo = input.requestContext.user;\n if (productId && userInfo && userInfo.isAuthenticated) {\n // Task #211227597 Remove these hardcoded values.\n return new GetUserReviewInput(productId, getRnrPartnerId(input), userInfo.token, getRnrAuthEndpointId(input));\n }\n throw new Error('[GetUserReview] Not all necessary parameters found while creating Input for GetUserReviewAPI');\n};\n\n/**\n * This method gets the user's review from the RnR service endpoint\n */\nasync function getUserReview(input:GetUserReviewInput, ctx: IActionContext):Promise {\n if (!inputIsValid(input)) {\n const errorMessage = `[GettUserReview] Failed to get user's review due to bad input ${input}`;\n ctx.trace(errorMessage);\n throw new Error(errorMessage);\n }\n\n const requestUrl = `${input.serviceEndpoint}/v2.0/reviews/product/${input.productId}/user?tenantId=${input.tenantId}`;\n\n return sendRequest(requestUrl, 'get', null, {headers: {Authorization: `id_token ${input.authorization}`}}).then((response) => {\n return response.data;\n }).catch((error) => {\n ctx.trace(`[GettUserReview] Failed to get user's review for product`);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[GettUserReview] Failed to get user's review for product`);\n ctx.trace(error);\n throw (error);\n });\n}\n\nfunction inputIsValid(input:GetUserReviewInput): boolean {\n return input.productId.length > 0 && input.authorization.length > 0 && input.tenantId.length > 0;\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/ratings-reviews/get-user-review',\n action: >getUserReview,\n input: createInput\n});\n","import { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, getParameterizeFeatureFlags, IAction, IActionInput, ICommerceApiSettings, IParameterizeFeatureFlags } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { buildCacheKey } from '.';\nimport getCategoryHierarchy, { CategoriesInput } from './get-categories-hierarchy';\nimport { parameterize } from './utilities/Url-builder';\n\n/**\n * Input class for GetCurrentCategory data action\n */\nexport class CurrentCategoryInput implements IActionInput {\n public categoryId?: number;\n public categorySlug?: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(context: IRequestContext) {\n let categoryId;\n let categorySlug;\n if (context.query && context.query.categoryId) {\n categoryId = Number(context.query.categoryId);\n\n if (Number.isNaN(categoryId)) {\n throw new Error('Failed to cast category id into a number.');\n }\n // @ts-ignore: RecordId URLToken not typed yet\n } else if (context.urlTokens && context.urlTokens.recordId) {\n // @ts-ignore: RecordId URLToken not typed yet\n categoryId = Number(context.urlTokens.recordId);\n if (Number.isNaN(categoryId)) {\n throw new Error('Failed to cast category id into a number.');\n }\n } else if (context.urlTokens && context.urlTokens.categories && context.urlTokens.categories.length) {\n const categories: string[] = (context.urlTokens.categories);\n\n if (!categories.length) {\n throw new Error('Failed to get category name from urlTokens');\n }\n // TODO: fix getParameterizeFeatureFlags to take requestContext as input.\n const tempActionContext = {\n requestContext:context\n }\n categorySlug = `/${categories\n .map(category => {\n // @ts-ignore TODO: fix getParameterizeFeatureFlags to take requestContext as an input\n const parameterizeFeatureFlags: IParameterizeFeatureFlags = getParameterizeFeatureFlags(tempActionContext);\n return parameterize(category,undefined, parameterizeFeatureFlags);\n })\n .join('/')}`;\n }\n this.categoryId = categoryId;\n this.categorySlug = categorySlug;\n this.apiSettings = context.apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`${this.categoryId || this.categorySlug}`, this.apiSettings);\n public getCacheObjectType = () => 'Current-Category';\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates a current category input from an ICreateActionContext\n */\nexport const createGetCurrentCategoryInput = (inputData: ICreateActionContext>): IActionInput => {\n if (inputData && inputData.requestContext) {\n return new CurrentCategoryInput(inputData.requestContext);\n }\n\n throw new Error('Please specify categoryId query string in request.');\n};\n\n/**\n * Rescrusive Search Method to find a given category amongts a complete CategoryHierarcy\n * @param categories The current Category Hierarchy\n * @param categorySlug The category slug being searched for\n * @param categoryId The category Id being search for\n */\nexport function searchCategory(categories: CategoryHierarchy[], categorySlug?: string, categoryId?: number): CategoryHierarchy | undefined {\n let foundCategory;\n categories.forEach((cat: CategoryHierarchy) => {\n if ((categoryId && cat.RecordId === categoryId) || (categorySlug && cat.Slug === categorySlug)) {\n return (foundCategory = cat);\n } else if (cat.Children && cat.Children.length) {\n const matchingChild = searchCategory(cat.Children, categorySlug, categoryId);\n if (matchingChild) {\n foundCategory = matchingChild;\n }\n }\n });\n return foundCategory;\n}\n\n/**\n * Action method for the getCurrentCategory Data Action\n * @param input The action input class\n * @param ctx The action context\n */\nexport async function getCurrentCategoryAction(input: CurrentCategoryInput, ctx: IActionContext): Promise {\n if (input.categorySlug || input.categoryId) {\n const categoryInput = new CategoriesInput(ctx.requestContext, true);\n const categories = await getCategoryHierarchy(categoryInput, ctx);\n if (!categories) {\n ctx.trace('[getCurrentCategory] Unable to get categories from server');\n return;\n }\n\n const category = searchCategory(categories, input.categorySlug, input.categoryId);\n if (!category) {\n ctx.trace('[getCurrentCategory] Unable to find category');\n return;\n }\n return category;\n }\n}\n\n/**\n * The getCurrentCategory data action\n * First makes a call to the getCategories RetailServer API\n * to get a list of every available category, then returns a CategoryHierarchy\n * based on the categoryId query param set in the URL of the request\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-current-category',\n action: >getCurrentCategoryAction,\n input: createGetCurrentCategoryInput\n});\n","import { CacheType, IAction, IActionInput, ICommerceApiSettings } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { MediaLocation } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { generateImageUrl, buildCacheKey } from './utilities/utils';\nimport { getMediaLocationsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\n/**\n * Product Input\n */\nexport class MediaLocationsByIdInput implements IActionInput {\n public productId?: number;\n public channelId: number;\n public catalogId: number;\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, productId?: number, catalogId?: number) {\n this.productId = productId;\n this.channelId = +apiSettings.channelId;\n this.catalogId = catalogId || 0;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`MediaLocationID-${this.productId && this.productId.toString()}`, this.apiSettings);\n public getCacheObjectType = () => 'MediaLocations';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createMediaLocationsByIdInput = (inputData: ICreateActionContext>): MediaLocationsByIdInput => {\n const productId = inputData.config && +inputData.config.productId || undefined;\n return new MediaLocationsByIdInput(inputData.requestContext.apiSettings, productId, undefined);\n};\n\n/**\n * Calls the Retail API and returns the product based on the passed MediaLocationsByIdInput\n */\nexport async function getMediaLocationsByIdAction(input: MediaLocationsByIdInput, ctx: IActionContext): Promise {\n if (input.productId) {\n return getMediaLocationsAsync({ callerContext: ctx, queryResultSettings: {} }, input.productId, input.channelId, input.catalogId).then(response => {\n return response.map(\n (mediaLocation: MediaLocation): MediaLocation => {\n mediaLocation.Uri = generateImageUrl(mediaLocation.Uri, ctx.requestContext.apiSettings);\n mediaLocation.AltText = mediaLocation.AltText ? mediaLocation.AltText : '';\n return mediaLocation;\n }\n );\n });\n }\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-media-locations-by-id',\n action: >getMediaLocationsByIdAction,\n input: createMediaLocationsByIdInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { SortColumn } from '@msdyn365-commerce/retail-proxy';\r\nimport { getSearchConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { IMappedSearchConfiguration } from './IMappedSearchConfiguration';\r\n\r\n// TODO: import from commerce entities when available\r\n// tslint:disable-next-line:interface-name\r\ninterface SearchConfiguration {\r\n ProductSortColumns?: SortColumn[];\r\n}\r\n\r\nexport const sortOptions = {\r\n sortByOptionRelevanceDesc: 'Ranking-Desc',\r\n sortByOptionRatingAsc: 'AverageRating-Asc',\r\n sortByOptionRatingDesc: 'AverageRating-Desc',\r\n sortByOptionNameAsc: 'Name-Asc',\r\n sortByOptionNameDesc: 'Name-Desc',\r\n sortByOptionPriceAsc: 'Price-Asc',\r\n sortByOptionPriceDesc: 'Price-Desc'\r\n};\r\n\r\nexport const sortColumName = {\r\n name: 'NAME',\r\n price: 'PRICE',\r\n averageRating : 'AVERAGERATING',\r\n ranking: 'RANKING'\r\n};\r\n\r\n/**\r\n * ActionInput class for the get-mapped-search-configuration Data Action\r\n */\r\nexport class MappedSearchInput implements IActionInput {\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(apiSettings: ICommerceApiSettings) {\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey('MappedSearchInput', this.apiSettings);\r\n public getCacheObjectType = () => 'MappedSearchInput';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\n/**\r\n * Get a mapped search configuration that is easy to use for sorting\r\n */\r\nexport async function getMappedSearchConfiguration(input: MappedSearchInput, ctx: IActionContext): Promise {\r\n return getSearchConfigurationAsync({ callerContext: ctx }).then((searchConfiguration: SearchConfiguration) => {\r\n return ((searchConfiguration.ProductSortColumns || []).map((sortColumn: SortColumn) => {\r\n let key = '';\r\n if (sortColumn.ColumnName) {\r\n switch(sortColumn.ColumnName.toUpperCase()) {\r\n case sortColumName.name:\r\n key = sortColumn.IsDescending ? sortOptions.sortByOptionNameDesc : sortOptions.sortByOptionNameAsc;\r\n break;\r\n case sortColumName.price:\r\n key = sortColumn.IsDescending ? sortOptions.sortByOptionPriceDesc : sortOptions.sortByOptionPriceAsc;\r\n break;\r\n case sortColumName.averageRating:\r\n key = sortColumn.IsDescending ? sortOptions.sortByOptionRatingDesc : sortOptions.sortByOptionRatingAsc;\r\n break;\r\n case sortColumName.ranking:\r\n key = sortOptions.sortByOptionRelevanceDesc;\r\n break;\r\n default:\r\n }\r\n } else {\r\n ctx.telemetry.warning('[get-mapped-search-configuration] unknown search option');\r\n }\r\n if (key) {\r\n return {\r\n key,\r\n sortColumn\r\n };\r\n } else {\r\n return undefined;\r\n }\r\n }).filter(Boolean));\r\n });\r\n}\r\n\r\nexport const createInput = (inputData: ICreateActionContext>): IActionInput => {\r\n return new MappedSearchInput(inputData.requestContext.apiSettings);\r\n};\r\n\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/search-result-container/get-mapped-search-configuration',\r\n action: >getMappedSearchConfiguration,\r\n input: createInput\r\n});","import { CacheType, IAction, IActionInput, IRequestContext, ICommerceApiSettings, getCategoriesUrlSync } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { getCategoryPathsAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { CategoryPathLookup} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getSelectedProductIdFromActionInput, buildCacheKey } from './utilities/utils';\nimport { ICategoryPath, ICategoryUrl } from '@msdyn365-commerce/core-internal/dist/types/interfaces/ICategoryPathInterfaces';\n\n/**\n * Category path input\n */\nexport class GetCategoryPathsInput implements IActionInput {\n public readonly ChannelId: number;\n public readonly CatalogId: number; \n public readonly categoryPathLooksups: CategoryPathLookup[];\n private constructedCacheKey: string;\n public readonly apiSettings: ICommerceApiSettings;\n\n constructor(context: IRequestContext, categoryPathLooksups: CategoryPathLookup[]) {\n this.ChannelId = context.apiSettings.channelId;\n this.CatalogId = context.apiSettings.catalogId | 0;\n this.categoryPathLooksups = categoryPathLooksups;\n this.apiSettings = context.apiSettings;\n this.constructedCacheKey = ``;\n categoryPathLooksups.forEach(categoryPath=>\n {\n this.constructedCacheKey+=`${categoryPath.ProductId && categoryPath.ProductId.toString()}|`;\n })\n this.constructedCacheKey+=`${this.ChannelId.toString()}|`\n this.constructedCacheKey+=`${this.CatalogId.toString()}|`\n }\n \n public getCacheKey = () => buildCacheKey(this.constructedCacheKey, this.apiSettings);;\n public getCacheObjectType = () => 'CategoryPath';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the getCategoryPath retail api call\n */\nexport const createGetCategoryPathsInput = (inputData: ICreateActionContext>): IActionInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n if (productId) {\n return new GetCategoryPathsInput(inputData.requestContext, [{ProductId:+productId}]);\n } else {\n throw new Error('Unable to create SelectedVariantInput, no productId found on module config or query');\n }\n \n};\n\n/**\n * Calls the Retail API and returns the category path for a product\n */\nexport async function getCategoryPathsAction(input: GetCategoryPathsInput, ctx: IActionContext): Promise {\n const categoryPathResults = await getCategoryPathsAsync({ callerContext: ctx },input.ChannelId, input.CatalogId,input.categoryPathLooksups); \n const categoryPath = categoryPathResults[0].CategoryPath && categoryPathResults[0].CategoryPath[0];\n const categoryUrl = getCategoriesUrlSync(categoryPath as ICategoryPath, ctx);\n if(categoryUrl)\n {\n return categoryUrl;\n }\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-category-paths',\n action: >getCategoryPathsAction,\n input: createGetCategoryPathsInput,\n});\n","import { ActiveCartProductsInput, ArrayExtensions, buildCacheKey, createGetFeatureStateInput, getActiveCartProductsAction, getFeatureState, mapProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\r\n// tslint:disable-next-line: no-duplicate-imports\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\r\nimport { getCartState } from '@msdyn365-commerce/global-state';\r\nimport { CartLine, ChannelDeliveryOptionConfiguration, CommerceProperty, FeatureState, ProductAvailableQuantity } from '@msdyn365-commerce/retail-proxy';\r\nimport { getOrgUnitConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\r\nimport { getEstimatedAvailabilityAsync, getEstimatedProductWarehouseAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { getChannelDeliveryOptionConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\n/**\r\n * GetAvailabilitiesCartlines.overide Input Action\r\n */\r\n\r\nexport class ProductAvailabilitiesForCartLineItems implements IActionInput {\r\n public getCacheKey: () => string;\r\n public getCacheObjectType: () => string;\r\n public dataCacheType: () => CacheType;\r\n private apiSettings: ICommerceApiSettings;\r\n constructor(apiSettings: ICommerceApiSettings) {\r\n this.getCacheKey = () => buildCacheKey(`ActiveCartLineItemsAvailability`, this.apiSettings);\r\n this.getCacheObjectType = () => 'ActiveCartLineItemsAvailability';\r\n this.dataCacheType = () => 'request';\r\n this.apiSettings = apiSettings;\r\n }\r\n}\r\n\r\n//===========================================================\r\n// JC: Addition here to support legacy inventory query method\r\n//===========================================================\r\n/**\r\n * Input class for the getProductAvailabilitiesForSelectedVariant Data Action\r\n */\r\nexport class ProductAvailableQuantityMerge {\r\n public ProductId?: number;\r\n public AvailableQuantity?: number;\r\n public UnitOfMeasure?: string;\r\n public ExtensionProperties?: CommerceProperty[];\r\n public ProductAvailableQuantity: ProductAvailableQuantity = {};\r\n public StockLevelCode?: string;\r\n public StockLevelLabel?: string;\r\n public IsProductAvailable: boolean = false;\r\n public InventLocationId?: string;\r\n}\r\n//===========================================================\r\n\r\nconst createInput = (inputData: ICreateActionContext): IActionInput => {\r\n return new ProductAvailabilitiesForCartLineItems(inputData.requestContext.apiSettings);\r\n};\r\n\r\n/**\r\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\r\n */\r\nconst getDeliveryMode = (cartLine: CartLine, featureSate = false, channelDeliveryOptionConfig: ChannelDeliveryOptionConfiguration | undefined, pickupDeliveryMode: string | undefined) => {\r\n if (!featureSate) {\r\n return cartLine.DeliveryMode === pickupDeliveryMode;\r\n } else {\r\n return cartLine.DeliveryMode === channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLine.DeliveryMode);\r\n }\r\n};\r\n\r\n/**\r\n * Calls the Retail API to get the product availabilites for items in the cart\r\n */\r\n// tslint:disable-next-line:cyclomatic-complexity tslint:disable: max-func-body-length\r\nexport async function getAvailabilitiesForCartLineItems(input: ProductAvailabilitiesForCartLineItems, ctx: IActionContext): Promise {\r\n // If no input is provided fail out\r\n if (!input) {\r\n throw new Error('[getAvailabilitiesForCartLineItems]No valid Input was provided, failing');\r\n }\r\n const shippingItems = [];\r\n const bopisItems = [];\r\n let productAvailabilities:ProductAvailableQuantityMerge[] = [];\r\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\r\n let channelDeliveryOptionConfig;\r\n const cartState = await getCartState(ctx);\r\n const cart = cartState.cart;\r\n const channelConfiguration = await getOrgUnitConfigurationAsync({ callerContext: ctx });\r\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\r\n /**\r\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\r\n */\r\n async function getFeature(context: IActionContext): Promise {\r\n const featureStateInput = createGetFeatureStateInput(ctx);\r\n return getFeatureState(featureStateInput, context);\r\n }\r\n const featureState = await getFeature(ctx);\r\n const retailMultiplePickUpOptionEnabled = featureState?.find(item => item.Name === multiplePickupStoreSwitchName)?.IsEnabled;\r\n if (retailMultiplePickUpOptionEnabled) {\r\n channelDeliveryOptionConfig = await getChannelDeliveryOptionConfigurationAsync({ callerContext: ctx });\r\n }\r\n const PickupDeliveryModeCode = channelConfiguration.PickupDeliveryModeCode;\r\n const EmailDeliveryModeCode = channelConfiguration.EmailDeliveryModeCode;\r\n if (!cart || !channelConfiguration || !products || products.length === 0) {\r\n console.log('[getAvailabilitiesForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\r\n ctx.trace('[getAvailabilitiesForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\r\n return [];\r\n }\r\n if (cart && cart.Id && cart.CartLines && cart.CartLines.length > 0 && channelConfiguration) {\r\n for (const cartLine of cart.CartLines) {\r\n if (cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && getDeliveryMode(cartLine, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, PickupDeliveryModeCode)) {\r\n bopisItems.push(cartLine);\r\n } else if (cartLine.DeliveryMode !== EmailDeliveryModeCode) {\r\n shippingItems.push(cartLine);\r\n }\r\n }\r\n }\r\n if (shippingItems && shippingItems.length > 0) {\r\n let productIds: number[] = shippingItems.map(x => x.ProductId ? x.ProductId : 0);\r\n productIds = ArrayExtensions.unique(productIds);\r\n const shippingProductAvailabilities = await getEstimatedAvailabilityAsync({ callerContext: ctx, bypassCache: 'get' }, { ProductIds: productIds, DefaultWarehouseOnly: true });\r\n if (shippingProductAvailabilities && shippingProductAvailabilities.ProductWarehouseInventoryAvailabilities && shippingProductAvailabilities.ProductWarehouseInventoryAvailabilities.length > 0) {\r\n //===========================================================\r\n // JC: Map below is using total available for product\r\n // availability. Need to change to physical before.\r\n //===========================================================\r\n shippingProductAvailabilities?.ProductWarehouseInventoryAvailabilities.forEach((product) => {\r\n product.TotalAvailable = product.PhysicalAvailable;\r\n });\r\n //===========================================================\r\n // JC: Addition here to support legacy inventory query method\r\n //===========================================================\r\n productAvailabilities = mapProductInventoryInformation(ctx, shippingProductAvailabilities?.ProductWarehouseInventoryAvailabilities);\r\n // translate data to support deprecated retail service call getProductAvailabilitiesAsync\r\n productAvailabilities = productAvailabilities?.map((product) => {\r\n return {...product, ProductId: product.ProductAvailableQuantity.ProductId, AvailableQuantity: product.ProductAvailableQuantity.AvailableQuantity, ExtensionProperties: product.ProductAvailableQuantity.ExtensionProperties};\r\n });\r\n //===========================================================\r\n }\r\n }\r\n if (bopisItems && bopisItems.length > 0) {\r\n for (const bopisItem of bopisItems) {\r\n const productWarehouse = {\r\n ProductId: bopisItem.ProductId,\r\n InventLocationId: bopisItem.WarehouseId,\r\n DataAreaId: ctx.requestContext.channel && ctx.requestContext.channel.InventLocationDataAreaId ? ctx.requestContext.channel.InventLocationDataAreaId : undefined\r\n };\r\n const getProductWarehouseAvail = await getEstimatedProductWarehouseAvailabilityAsync({ callerContext: ctx, bypassCache: 'get', queryResultSettings: {} }, [productWarehouse]);\r\n if (getProductWarehouseAvail && getProductWarehouseAvail.ProductWarehouseInventoryAvailabilities && getProductWarehouseAvail.ProductWarehouseInventoryAvailabilities.length > 0) {\r\n //===========================================================\r\n // JC: Map below is using total available for product\r\n // availability. Need to change to physical before.\r\n //===========================================================\r\n getProductWarehouseAvail?.ProductWarehouseInventoryAvailabilities.forEach((product) => {\r\n product.TotalAvailable = product.PhysicalAvailable;\r\n });\r\n const productWarehouseMapping = mapProductInventoryInformation(ctx, getProductWarehouseAvail?.ProductWarehouseInventoryAvailabilities);\r\n if (productWarehouseMapping && productWarehouseMapping.length) {\r\n for (const item of productWarehouseMapping) {\r\n productAvailabilities.push(item);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (productAvailabilities && productAvailabilities.length > 0) {\r\n return productAvailabilities;\r\n } else {\r\n ctx.trace('[getAvailabilitiesForCartLineItems] unable to get availabilites for product');\r\n return [];\r\n }\r\n}\r\n//===========================================================\r\n// JC: Changed type from ProductAvailableQuantity to ProductAvailableQuantityMerge\r\n//===========================================================\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/retail-actions/get-availabilities-cartlines',\r\n action: >getAvailabilitiesForCartLineItems,\r\n input: createInput\r\n});\r\n//===========================================================","import { FullProduct } from '@msdyn365-commerce/commerce-entities';\nimport { ProductList, ProductListLine } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * OrderTemplateLine state information\n */\nexport class OrderTemplateLine {\n public productListLine: ProductListLine;\n public fullProduct?: FullProduct;\n\n constructor(productListLine: ProductListLine, fullProduct?: FullProduct) {\n this.productListLine = productListLine;\n this.fullProduct = fullProduct;\n }\n}\n\nexport interface IOrderTemplateLinesState {\n lines: OrderTemplateLine[];\n totalCount: number;\n}\n\n/**\n * Order template class\n */\nexport class OrderTemplate {\n public productList: ProductList;\n public orderTemplateLines: OrderTemplateLine[];\n public totalLines: number;\n\n constructor(productList: ProductList, orderTemplateLines: OrderTemplateLine[], totalLines: number) {\n this.productList = productList;\n this.orderTemplateLines = orderTemplateLines;\n this.totalLines = totalLines;\n }\n}","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings, ICreateActionContext } from '@msdyn365-commerce/core';\nimport { BusinessPartnerUser } from '@msdyn365-commerce/retail-proxy';\nimport { getCurrentAsync, getUsersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/BusinessPartnersDataActions.g';\nimport { buildCacheKey } from './utilities/utils';\n\n/**\n * Input class for get customer data action\n */\nexport class OrganizationUsersInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n public getCacheKey = () => buildCacheKey('OrganizationUsers', this.apiSettings);\n public getCacheObjectType = () => 'BusinessPartner';\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport const createGetOrganizationUsersInput = (inputData: ICreateActionContext): IActionInput => {\n const { requestContext } = inputData;\n\n // Check if the user is authenticated.\n if (!requestContext.user.isAuthenticated) {\n throw new Error('User is not logged in.');\n }\n\n return new OrganizationUsersInput(requestContext.apiSettings);\n};\n\nexport async function getOrganizationUsers(input: OrganizationUsersInput, ctx: IActionContext): Promise {\n return getCurrentAsync({ callerContext: ctx })\n .then(businessPartner => {\n return getUsersAsync({ callerContext: ctx }, businessPartner.BusinessPartnerId)\n .then((users) => {\n return users;\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.trace('[get-organization-users] Unable to load users');\n throw new Error('[get-organization-users] Unable to load users');\n });\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n ctx.telemetry.debug('[get-organization-users] Unable to get BusinessPartner');\n throw new Error('[get-organization-users] Unable to get BusinessPartner');\n });\n}\nexport default createObservableDataAction({\n id: 'get-organization-users',\n action: >getOrganizationUsers,\n input: createGetOrganizationUsersInput\n});\n","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\n\r\nexport function createKeyedInPrice(result: number): GenericInput {\r\n return new GenericInput('buyboxKeyedInPrice', result, 'Number');\r\n}\r\n\r\nconst createKeyedInPriceIternal = (inputData: ICreateActionContext>): IActionInput => {\r\n return createKeyedInPrice(25);\r\n};\r\n\r\nexport default createObservableDataAction({\r\n action: >getGenericAction,\r\n input: createKeyedInPriceIternal\r\n});\r\n","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\n\r\nexport function createKeyedInPriceError(result: string): GenericInput {\r\n return new GenericInput('buyboxKeyedInPriceError', result, 'String');\r\n}\r\n\r\nconst createKeyedInPriceErrorIternal = (inputData: ICreateActionContext>): IActionInput => {\r\n return createKeyedInPriceError('');\r\n};\r\n\r\nexport default createObservableDataAction({\r\n action: >getGenericAction,\r\n input: createKeyedInPriceErrorIternal\r\n});\r\n","/**\n* Copyright (c) 2018 Microsoft Corporation\n* Modules Registration\n* THIS FILE IS AUTO-GENERATED - MANUAL MODIFICATIONS WILL BE LOST\n*/\n\nexport const viewDictionary = {};\n\nviewDictionary['__local__|__local__|modules|cartmanager|cartmanager'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-cartmanager' */\n 'partner/modules/cartmanager/cartmanager.view.tsx'),\n cn: '__local__-__local__-cartmanager'\n };\nviewDictionary['__local__|__local__|modules|checkout-club-info-collector|checkout-club-info-collector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-club-info-collector' */\n 'partner/modules/checkout-club-info-collector/checkout-club-info-collector.view.tsx'),\n cn: '__local__-__local__-checkout-club-info-collector'\n };\nviewDictionary['__local__|__local__|modules|clear-wineclub|clear-wineclub'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-clear-wineclub' */\n 'partner/modules/clear-wineclub/clear-wineclub.view.tsx'),\n cn: '__local__-__local__-clear-wineclub'\n };\nviewDictionary['__local__|__local__|modules|content-block-no-headings|content-block-no-headings'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block-no-headings' */\n 'partner/modules/content-block-no-headings/content-block-no-headings.view.tsx'),\n cn: '__local__-__local__-content-block-no-headings'\n };\nviewDictionary['__local__|__local__|modules|elicit-cart|elicit-cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit-cart' */\n 'partner/modules/elicit-cart/elicit-cart.view.tsx'),\n cn: '__local__-__local__-elicit-cart'\n };\nviewDictionary['__local__|__local__|modules|elicit-subscriptions|elicit-subscriptions'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-elicit-subscriptions' */\n 'partner/modules/elicit-subscriptions/elicit-subscriptions.view.tsx'),\n cn: '__local__-__local__-elicit-subscriptions'\n };\nviewDictionary['__local__|__local__|modules|family-and-friends|family-and-friends'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-family-and-friends' */\n 'partner/modules/family-and-friends/family-and-friends.view.tsx'),\n cn: '__local__-__local__-family-and-friends'\n };\nviewDictionary['__local__|__local__|modules|instagram-integration|instagram-integration'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-instagram-integration' */\n 'partner/modules/instagram-integration/instagram-integration.view.tsx'),\n cn: '__local__-__local__-instagram-integration'\n };\nviewDictionary['__local__|__local__|modules|overflow-container|overflow-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-overflow-container' */\n 'partner/modules/overflow-container/overflow-container.view.tsx'),\n cn: '__local__-__local__-overflow-container'\n };\nviewDictionary['__local__|__local__|modules|page-tos|page-tos'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-page-tos' */\n 'partner/modules/page-tos/page-tos.view.tsx'),\n cn: '__local__-__local__-page-tos'\n };\nviewDictionary['__local__|__local__|modules|shipping-popup|shipping-popup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-shipping-popup' */\n 'partner/modules/shipping-popup/shipping-popup.view.tsx'),\n cn: '__local__-__local__-shipping-popup'\n };\nviewDictionary['__local__|__local__|modules|smwe-account-management-address|smwe-account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-account-management-address' */\n 'partner/modules/smwe-account-management-address/smwe-account-management-address.view.tsx'),\n cn: '__local__-__local__-smwe-account-management-address'\n };\nviewDictionary['__local__|__local__|modules|smwe-buybox|smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/modules/smwe-buybox/smwe-buybox.view.tsx'),\n cn: '__local__-__local__-smwe-buybox'\n };\nviewDictionary['__local__|__local__|modules|smwe-cart|smwe-cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-cart' */\n 'partner/modules/smwe-cart/smwe-cart.view.tsx'),\n cn: '__local__-__local__-smwe-cart'\n };\nviewDictionary['__local__|__local__|modules|smwe-checkout-billing-address|smwe-checkout-billing-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-billing-address' */\n 'partner/modules/smwe-checkout-billing-address/smwe-checkout-billing-address.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-billing-address'\n };\nviewDictionary['__local__|__local__|modules|smwe-checkout-delivery-options|smwe-checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-delivery-options' */\n 'partner/modules/smwe-checkout-delivery-options/smwe-checkout-delivery-options.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-delivery-options'\n };\nviewDictionary['__local__|__local__|modules|smwe-checkout-gift-card|smwe-checkout-gift-card'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-gift-card' */\n 'partner/modules/smwe-checkout-gift-card/smwe-checkout-gift-card.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-gift-card'\n };\nviewDictionary['__local__|__local__|modules|smwe-checkout-section-container|smwe-checkout-section-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-section-container' */\n 'partner/modules/smwe-checkout-section-container/smwe-checkout-section-container.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-section-container'\n };\nviewDictionary['__local__|__local__|modules|smwe-checkout-shipping-address|smwe-checkout-shipping-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-shipping-address' */\n 'partner/modules/smwe-checkout-shipping-address/smwe-checkout-shipping-address.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-shipping-address'\n };\nviewDictionary['__local__|__local__|modules|smwe-checkout|smwe-checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout' */\n 'partner/modules/smwe-checkout/smwe-checkout.view.tsx'),\n cn: '__local__-__local__-smwe-checkout'\n };\nviewDictionary['__local__|__local__|modules|smwe-footer-item|smwe-footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-footer-item' */\n 'partner/modules/smwe-footer-item/smwe-footer-item.view.tsx'),\n cn: '__local__-__local__-smwe-footer-item'\n };\nviewDictionary['__local__|__local__|modules|smwe-iframe|smwe-iframe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-iframe' */\n 'partner/modules/smwe-iframe/smwe-iframe.view.tsx'),\n cn: '__local__-__local__-smwe-iframe'\n };\nviewDictionary['__local__|__local__|modules|smwe-media-gallery|smwe-media-gallery'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-media-gallery' */\n 'partner/modules/smwe-media-gallery/smwe-media-gallery.view.tsx'),\n cn: '__local__-__local__-smwe-media-gallery'\n };\nviewDictionary['__local__|__local__|modules|smwe-minicart|smwe-minicart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-minicart' */\n 'partner/modules/smwe-minicart/smwe-minicart.view.tsx'),\n cn: '__local__-__local__-smwe-minicart'\n };\nviewDictionary['__local__|__local__|modules|smwe-navigation-menu|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/modules/smwe-navigation-menu/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|modules|smwe-order-details|smwe-order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-order-details' */\n 'partner/modules/smwe-order-details/smwe-order-details.view.tsx'),\n cn: '__local__-__local__-smwe-order-details'\n };\nviewDictionary['__local__|__local__|modules|smwe-product-collection|smwe-product-collection'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-product-collection' */\n 'partner/modules/smwe-product-collection/smwe-product-collection.view.tsx'),\n cn: '__local__-__local__-smwe-product-collection'\n };\nviewDictionary['__local__|__local__|modules|smwe-search-result-container|smwe-search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search-result-container' */\n 'partner/modules/smwe-search-result-container/smwe-search-result-container.view.tsx'),\n cn: '__local__-__local__-smwe-search-result-container'\n };\nviewDictionary['__local__|__local__|modules|smwe-search|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/modules/smwe-search/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|modules|smwe-sign-up|smwe-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sign-up' */\n 'partner/modules/smwe-sign-up/smwe-sign-up.view.tsx'),\n cn: '__local__-__local__-smwe-sign-up'\n };\nviewDictionary['__local__|__local__|modules|subscription-restriction-button|subscription-restriction-button'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscription-restriction-button' */\n 'partner/modules/subscription-restriction-button/subscription-restriction-button.view.tsx'),\n cn: '__local__-__local__-subscription-restriction-button'\n };\nviewDictionary['__local__|__local__|modules|subscriptions-minicart|subscriptions-minicart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-subscriptions-minicart' */\n 'partner/modules/subscriptions-minicart/subscriptions-minicart.view.tsx'),\n cn: '__local__-__local__-subscriptions-minicart'\n };\nviewDictionary['__local__|__local__|modules|wine-club-signup|wine-club-signup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-club-signup' */\n 'partner/modules/wine-club-signup/wine-club-signup.view.tsx'),\n cn: '__local__-__local__-wine-club-signup'\n };\nviewDictionary['__local__|__local__|modules|wine-finder-by-zip|wine-finder-by-zip'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-finder-by-zip' */\n 'partner/modules/wine-finder-by-zip/wine-finder-by-zip.view.tsx'),\n cn: '__local__-__local__-wine-finder-by-zip'\n };\nviewDictionary['__local__|__local__|themes|blend|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/blend/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|blend|views|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block' */\n 'partner/themes/blend/views/content-block.view.tsx'),\n cn: '__local__-__local__-content-block'\n };\nviewDictionary['__local__|__local__|themes|blend|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/blend/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|blend|views|overflow-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-overflow-container' */\n 'partner/themes/blend/views/overflow-container.view.tsx'),\n cn: '__local__-__local__-overflow-container'\n };\nviewDictionary['__local__|__local__|themes|blend|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/blend/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|blend|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/blend/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|blend|views|smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/themes/blend/views/smwe-buybox.view.tsx'),\n cn: '__local__-__local__-smwe-buybox'\n };\nviewDictionary['__local__|__local__|themes|blend|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/blend/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|blend|views|smwe-search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search-result-container' */\n 'partner/themes/blend/views/smwe-search-result-container.view.tsx'),\n cn: '__local__-__local__-smwe-search-result-container'\n };\nviewDictionary['__local__|__local__|themes|blend|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/blend/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|blend|views|smwe-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sign-up' */\n 'partner/themes/blend/views/smwe-sign-up.view.tsx'),\n cn: '__local__-__local__-smwe-sign-up'\n };\nviewDictionary['__local__|__local__|themes|blend|views|wine-club-signup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-club-signup' */\n 'partner/themes/blend/views/wine-club-signup.view.tsx'),\n cn: '__local__-__local__-wine-club-signup'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/colsolare/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/colsolare/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/colsolare/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/colsolare/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/colsolare/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/colsolare/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/colsolare/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/colsolare/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/colsolare/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|colsolare|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/colsolare/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/columbiacrest/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/columbiacrest/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|event-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-event-list' */\n 'partner/themes/columbiacrest/views/event-list.view.tsx'),\n cn: '__local__-__local__-event-list'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/columbiacrest/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/columbiacrest/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/columbiacrest/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/columbiacrest/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/columbiacrest/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/columbiacrest/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/columbiacrest/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|columbiacrest|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/columbiacrest/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/conn-creek/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/conn-creek/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/conn-creek/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/conn-creek/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/conn-creek/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/conn-creek/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/conn-creek/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/conn-creek/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|smwe-checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-delivery-options' */\n 'partner/themes/conn-creek/views/smwe-checkout-delivery-options.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-delivery-options'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/conn-creek/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|smwe-search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search-result-container' */\n 'partner/themes/conn-creek/views/smwe-search-result-container.view.tsx'),\n cn: '__local__-__local__-smwe-search-result-container'\n };\nviewDictionary['__local__|__local__|themes|conn-creek|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/conn-creek/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/elicit/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block' */\n 'partner/themes/elicit/views/content-block.view.tsx'),\n cn: '__local__-__local__-content-block'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/elicit/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/elicit/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|order-history'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-history' */\n 'partner/themes/elicit/views/order-history.view.tsx'),\n cn: '__local__-__local__-order-history'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|overflow-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-overflow-container' */\n 'partner/themes/elicit/views/overflow-container.view.tsx'),\n cn: '__local__-__local__-overflow-container'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/elicit/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/elicit/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/themes/elicit/views/smwe-buybox.view.tsx'),\n cn: '__local__-__local__-smwe-buybox'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-delivery-options' */\n 'partner/themes/elicit/views/smwe-checkout-delivery-options.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-delivery-options'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout' */\n 'partner/themes/elicit/views/smwe-checkout.view.tsx'),\n cn: '__local__-__local__-smwe-checkout'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/elicit/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-order-details' */\n 'partner/themes/elicit/views/smwe-order-details.view.tsx'),\n cn: '__local__-__local__-smwe-order-details'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search-result-container' */\n 'partner/themes/elicit/views/smwe-search-result-container.view.tsx'),\n cn: '__local__-__local__-smwe-search-result-container'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/elicit/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|elicit|views|smwe-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sign-up' */\n 'partner/themes/elicit/views/smwe-sign-up.view.tsx'),\n cn: '__local__-__local__-smwe-sign-up'\n };\nviewDictionary['__local__|__local__|themes|emp|views|carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carousel' */\n 'partner/themes/emp/views/carousel.view.tsx'),\n cn: '__local__-__local__-carousel'\n };\nviewDictionary['__local__|__local__|themes|emp|views|checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout-delivery-options' */\n 'partner/themes/emp/views/checkout-delivery-options.view.tsx'),\n cn: '__local__-__local__-checkout-delivery-options'\n };\nviewDictionary['__local__|__local__|themes|emp|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/emp/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|emp|views|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block' */\n 'partner/themes/emp/views/content-block.view.tsx'),\n cn: '__local__-__local__-content-block'\n };\nviewDictionary['__local__|__local__|themes|emp|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/emp/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|emp|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/emp/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|emp|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/emp/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|emp|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/emp/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|emp|views|smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/themes/emp/views/smwe-buybox.view.tsx'),\n cn: '__local__-__local__-smwe-buybox'\n };\nviewDictionary['__local__|__local__|themes|emp|views|smwe-cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-cart' */\n 'partner/themes/emp/views/smwe-cart.view.tsx'),\n cn: '__local__-__local__-smwe-cart'\n };\nviewDictionary['__local__|__local__|themes|emp|views|smwe-search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search-result-container' */\n 'partner/themes/emp/views/smwe-search-result-container.view.tsx'),\n cn: '__local__-__local__-smwe-search-result-container'\n };\nviewDictionary['__local__|__local__|themes|emp|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/emp/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/enoteca/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/enoteca/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/enoteca/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/enoteca/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/enoteca/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/enoteca/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/enoteca/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/enoteca/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/enoteca/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|enoteca|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/enoteca/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|erath|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/erath/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|erath|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/erath/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|erath|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/erath/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|erath|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/erath/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|erath|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/erath/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|erath|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/erath/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|erath|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/erath/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|erath|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/erath/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|erath|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/erath/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|erath|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/erath/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|fth|views|accordion-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-accordion-item' */\n 'partner/themes/fth/views/accordion-item.view.tsx'),\n cn: '__local__-__local__-accordion-item'\n };\nviewDictionary['__local__|__local__|themes|fth|views|carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carousel' */\n 'partner/themes/fth/views/carousel.view.tsx'),\n cn: '__local__-__local__-carousel'\n };\nviewDictionary['__local__|__local__|themes|fth|views|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block' */\n 'partner/themes/fth/views/content-block.view.tsx'),\n cn: '__local__-__local__-content-block'\n };\nviewDictionary['__local__|__local__|themes|fth|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/fth/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|fth|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/fth/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|fth|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/fth/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|fth|views|overflow-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-overflow-container' */\n 'partner/themes/fth/views/overflow-container.view.tsx'),\n cn: '__local__-__local__-overflow-container'\n };\nviewDictionary['__local__|__local__|themes|fth|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/fth/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|fth|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/fth/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|fth|views|smwe-account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-account-management-address' */\n 'partner/themes/fth/views/smwe-account-management-address.view.tsx'),\n cn: '__local__-__local__-smwe-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|fth|views|smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/themes/fth/views/smwe-buybox.view.tsx'),\n cn: '__local__-__local__-smwe-buybox'\n };\nviewDictionary['__local__|__local__|themes|fth|views|smwe-checkout-billing-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-billing-address' */\n 'partner/themes/fth/views/smwe-checkout-billing-address.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-billing-address'\n };\nviewDictionary['__local__|__local__|themes|fth|views|smwe-checkout-shipping-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-checkout-shipping-address' */\n 'partner/themes/fth/views/smwe-checkout-shipping-address.view.tsx'),\n cn: '__local__-__local__-smwe-checkout-shipping-address'\n };\nviewDictionary['__local__|__local__|themes|fth|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/fth/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|fth|views|smwe-search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search-result-container' */\n 'partner/themes/fth/views/smwe-search-result-container.view.tsx'),\n cn: '__local__-__local__-smwe-search-result-container'\n };\nviewDictionary['__local__|__local__|themes|fth|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/fth/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|fth|views|smwe-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sign-up' */\n 'partner/themes/fth/views/smwe-sign-up.view.tsx'),\n cn: '__local__-__local__-smwe-sign-up'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/generazioni/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/generazioni/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/generazioni/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/generazioni/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/generazioni/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/generazioni/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/generazioni/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/generazioni/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/generazioni/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|generazioni|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/generazioni/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|h3-theme|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/h3-theme/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|h3-theme|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/h3-theme/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|h3-theme|views|wine-finder-by-zip'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-finder-by-zip' */\n 'partner/themes/h3-theme/views/wine-finder-by-zip.view.tsx'),\n cn: '__local__-__local__-wine-finder-by-zip'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/intrinsic-wine-co/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/intrinsic-wine-co/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/intrinsic-wine-co/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/intrinsic-wine-co/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/intrinsic-wine-co/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/intrinsic-wine-co/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/intrinsic-wine-co/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/intrinsic-wine-co/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|intrinsic-wine-co|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/intrinsic-wine-co/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/north-star/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/north-star/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/north-star/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/north-star/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/north-star/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/north-star/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/north-star/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/north-star/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/north-star/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|north-star|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/north-star/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/patzhall/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/patzhall/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/patzhall/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/patzhall/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/patzhall/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/patzhall/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/patzhall/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/patzhall/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/themes/patzhall/views/smwe-buybox.view.tsx'),\n cn: '__local__-__local__-smwe-buybox'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/patzhall/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|smwe-search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search-result-container' */\n 'partner/themes/patzhall/views/smwe-search-result-container.view.tsx'),\n cn: '__local__-__local__-smwe-search-result-container'\n };\nviewDictionary['__local__|__local__|themes|patzhall|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/patzhall/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|smwe|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/smwe/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|smwe|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/smwe/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|smwe|views|wine-finder-by-zip'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-wine-finder-by-zip' */\n 'partner/themes/smwe/views/wine-finder-by-zip.view.tsx'),\n cn: '__local__-__local__-wine-finder-by-zip'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/spring-valley-vineyard/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/spring-valley-vineyard/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/spring-valley-vineyard/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/spring-valley-vineyard/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/spring-valley-vineyard/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/spring-valley-vineyard/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/spring-valley-vineyard/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/spring-valley-vineyard/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/spring-valley-vineyard/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|spring-valley-vineyard|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/spring-valley-vineyard/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/stagsleap/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/stagsleap/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/stagsleap/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/stagsleap/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/stagsleap/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/stagsleap/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/stagsleap/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/stagsleap/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/stagsleap/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|stagsleap|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/stagsleap/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|accordion-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-accordion-item' */\n 'partner/themes/stemichelle-new/views/accordion-item.view.tsx'),\n cn: '__local__-__local__-accordion-item'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-carousel' */\n 'partner/themes/stemichelle-new/views/carousel.view.tsx'),\n cn: '__local__-__local__-carousel'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block' */\n 'partner/themes/stemichelle-new/views/content-block.view.tsx'),\n cn: '__local__-__local__-content-block'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/stemichelle-new/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/stemichelle-new/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|overflow-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-overflow-container' */\n 'partner/themes/stemichelle-new/views/overflow-container.view.tsx'),\n cn: '__local__-__local__-overflow-container'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/stemichelle-new/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/stemichelle-new/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|smwe-buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-buybox' */\n 'partner/themes/stemichelle-new/views/smwe-buybox.view.tsx'),\n cn: '__local__-__local__-smwe-buybox'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/stemichelle-new/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/stemichelle-new/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['__local__|__local__|themes|stemichelle-new|views|smwe-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-sign-up' */\n 'partner/themes/stemichelle-new/views/smwe-sign-up.view.tsx'),\n cn: '__local__-__local__-smwe-sign-up'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-account-management-address' */\n 'partner/themes/stemichelle/views/account-management-address.view.tsx'),\n cn: '__local__-__local__-account-management-address'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-checkout' */\n 'partner/themes/stemichelle/views/checkout.view.tsx'),\n cn: '__local__-__local__-checkout'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-content-block' */\n 'partner/themes/stemichelle/views/content-block.view.tsx'),\n cn: '__local__-__local__-content-block'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-footer-item' */\n 'partner/themes/stemichelle/views/footer-item.view.tsx'),\n cn: '__local__-__local__-footer-item'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-header' */\n 'partner/themes/stemichelle/views/header.view.tsx'),\n cn: '__local__-__local__-header'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-confirmation' */\n 'partner/themes/stemichelle/views/order-confirmation.view.tsx'),\n cn: '__local__-__local__-order-confirmation'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-order-details' */\n 'partner/themes/stemichelle/views/order-details.view.tsx'),\n cn: '__local__-__local__-order-details'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-search' */\n 'partner/themes/stemichelle/views/search.view.tsx'),\n cn: '__local__-__local__-search'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-sign-in' */\n 'partner/themes/stemichelle/views/sign-in.view.tsx'),\n cn: '__local__-__local__-sign-in'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|smwe-navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-navigation-menu' */\n 'partner/themes/stemichelle/views/smwe-navigation-menu.view.tsx'),\n cn: '__local__-__local__-smwe-navigation-menu'\n };\nviewDictionary['__local__|__local__|themes|stemichelle|views|smwe-search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '__local__-__local__-smwe-search' */\n 'partner/themes/stemichelle/views/smwe-search.view.tsx'),\n cn: '__local__-__local__-smwe-search'\n };\nviewDictionary['@msdyn365-commerce-modules|accordion|modules|accordion-item|accordion-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-accordion-accordion-item' */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion-item/accordion-item.view.js'),\n cn: '@msdyn365-commerce-modules-accordion-accordion-item'\n };\nviewDictionary['@msdyn365-commerce-modules|accordion|modules|accordion|accordion'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-accordion-accordion' */\n '@msdyn365-commerce-modules/accordion/dist/lib/modules/accordion/accordion.view.js'),\n cn: '@msdyn365-commerce-modules-accordion-accordion'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|aad-generic|aad-generic'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-aad-generic' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/aad-generic/aad-generic.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-aad-generic'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-address-tile|account-address-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-address-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-address-tile/account-address-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-address-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-customer-balance-tile|account-customer-balance-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-customer-balance-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance-tile/account-customer-balance-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-customer-balance-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-customer-balance|account-customer-balance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-customer-balance' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-customer-balance/account-customer-balance.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-customer-balance'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-generic-tile|account-generic-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-generic-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-generic-tile/account-generic-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-generic-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-invoice-tile|account-invoice-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-invoice-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-invoice-tile/account-invoice-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-invoice-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-loyalty-tile|account-loyalty-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-loyalty-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty-tile/account-loyalty-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-loyalty-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-loyalty|account-loyalty'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-loyalty' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-loyalty/account-loyalty.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-loyalty'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-order-templates-tile|account-order-templates-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-order-templates-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-order-templates-tile/account-order-templates-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-order-templates-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-profile-edit|account-profile-edit'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-profile-edit' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile-edit/account-profile-edit.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-profile-edit'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-profile|account-profile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-profile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-profile/account-profile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-profile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-welcome-tile|account-welcome-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-welcome-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-welcome-tile/account-welcome-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-welcome-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|account-wishlist-tile|account-wishlist-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-account-wishlist-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/account-wishlist-tile/account-wishlist-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-account-wishlist-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|loyalty-sign-up|loyalty-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-loyalty-sign-up' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-sign-up/loyalty-sign-up.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-loyalty-sign-up'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|loyalty-terms|loyalty-terms'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-loyalty-terms' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/loyalty-terms/loyalty-terms.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-loyalty-terms'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|organization-users-tile|organization-users-tile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-organization-users-tile' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/organization-users-tile/organization-users-tile.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-organization-users-tile'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|password-reset-verification|password-reset-verification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-password-reset-verification' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset-verification/password-reset-verification.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-password-reset-verification'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|password-reset|password-reset'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-password-reset' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/password-reset/password-reset.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-password-reset'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|sign-in|sign-in'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-sign-in' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-in/sign-in.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-sign-in'\n };\nviewDictionary['@msdyn365-commerce-modules|account-management|modules|sign-up|sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-account-management-sign-up' */\n '@msdyn365-commerce-modules/account-management/dist/lib/modules/sign-up/sign-up.view.js'),\n cn: '@msdyn365-commerce-modules-account-management-sign-up'\n };\nviewDictionary['@msdyn365-commerce-modules|address|modules|account-management-address|account-management-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-account-management-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/account-management-address/account-management-address.view.js'),\n cn: '@msdyn365-commerce-modules-address-account-management-address'\n };\nviewDictionary['@msdyn365-commerce-modules|address|modules|business-account-address|business-account-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-business-account-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/business-account-address/business-account-address.view.js'),\n cn: '@msdyn365-commerce-modules-address-business-account-address'\n };\nviewDictionary['@msdyn365-commerce-modules|address|modules|checkout-billing-address|checkout-billing-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-checkout-billing-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-billing-address/checkout-billing-address.view.js'),\n cn: '@msdyn365-commerce-modules-address-checkout-billing-address'\n };\nviewDictionary['@msdyn365-commerce-modules|address|modules|checkout-shipping-address|checkout-shipping-address'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-address-checkout-shipping-address' */\n '@msdyn365-commerce-modules/address/dist/lib/modules/checkout-shipping-address/checkout-shipping-address.view.js'),\n cn: '@msdyn365-commerce-modules-address-checkout-shipping-address'\n };\nviewDictionary['@msdyn365-commerce-modules|breadcrumb|modules|breadcrumb|breadcrumb'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-breadcrumb-breadcrumb' */\n '@msdyn365-commerce-modules/breadcrumb/dist/lib/modules/breadcrumb/breadcrumb.view.js'),\n cn: '@msdyn365-commerce-modules-breadcrumb-breadcrumb'\n };\nviewDictionary['@msdyn365-commerce-modules|business-account-management|modules|business-sign-up|business-sign-up'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-account-management-business-sign-up' */\n '@msdyn365-commerce-modules/business-account-management/dist/lib/modules/business-sign-up/business-sign-up.view.js'),\n cn: '@msdyn365-commerce-modules-business-account-management-business-sign-up'\n };\nviewDictionary['@msdyn365-commerce-modules|business-organization-list|modules|business-organization-list|business-organization-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-business-organization-list-business-organization-list' */\n '@msdyn365-commerce-modules/business-organization-list/dist/lib/modules/business-organization-list/business-organization-list.view.js'),\n cn: '@msdyn365-commerce-modules-business-organization-list-business-organization-list'\n };\nviewDictionary['@msdyn365-commerce-modules|buybox|modules|buybox|buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-buybox-buybox' */\n '@msdyn365-commerce-modules/buybox/dist/lib/modules/buybox/buybox.view.js'),\n cn: '@msdyn365-commerce-modules-buybox-buybox'\n };\nviewDictionary['@msdyn365-commerce-modules|carousel|modules|carousel|carousel'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-carousel-carousel' */\n '@msdyn365-commerce-modules/carousel/dist/lib/modules/carousel/carousel.view.js'),\n cn: '@msdyn365-commerce-modules-carousel-carousel'\n };\nviewDictionary['@msdyn365-commerce-modules|cart|modules|cart-icon|cart-icon'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cart-cart-icon' */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart-icon/cart-icon.view.js'),\n cn: '@msdyn365-commerce-modules-cart-cart-icon'\n };\nviewDictionary['@msdyn365-commerce-modules|cart|modules|cart|cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cart-cart' */\n '@msdyn365-commerce-modules/cart/dist/lib/modules/cart/cart.view.js'),\n cn: '@msdyn365-commerce-modules-cart-cart'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-customer-account-payment|checkout-customer-account-payment'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-customer-account-payment' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-customer-account-payment/checkout-customer-account-payment.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-customer-account-payment'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-delivery-options|checkout-delivery-options'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-delivery-options' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-delivery-options/checkout-delivery-options.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-delivery-options'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-gift-card|checkout-gift-card'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-gift-card' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-gift-card/checkout-gift-card.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-gift-card'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-guest-profile|checkout-guest-profile'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-guest-profile' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-guest-profile/checkout-guest-profile.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-guest-profile'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-loyalty|checkout-loyalty'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-loyalty' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-loyalty/checkout-loyalty.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-loyalty'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-payment-instrument|checkout-payment-instrument'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-payment-instrument' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-payment-instrument/checkout-payment-instrument.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-payment-instrument'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-pickup|checkout-pickup'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-pickup' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-pickup/checkout-pickup.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-pickup'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-section-container|checkout-section-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-section-container' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-section-container/checkout-section-container.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-section-container'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout-terms-and-conditions|checkout-terms-and-conditions'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout-terms-and-conditions' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout-terms-and-conditions/checkout-terms-and-conditions.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout-terms-and-conditions'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|checkout|checkout'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-checkout' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/checkout/checkout.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-checkout'\n };\nviewDictionary['@msdyn365-commerce-modules|checkout|modules|gift-card-balance-check|gift-card-balance-check'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-checkout-gift-card-balance-check' */\n '@msdyn365-commerce-modules/checkout/dist/lib/modules/gift-card-balance-check/gift-card-balance-check.view.js'),\n cn: '@msdyn365-commerce-modules-checkout-gift-card-balance-check'\n };\nviewDictionary['@msdyn365-commerce-modules|content-block|modules|content-block|content-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-content-block-content-block' */\n '@msdyn365-commerce-modules/content-block/dist/lib/modules/content-block/content-block.view.js'),\n cn: '@msdyn365-commerce-modules-content-block-content-block'\n };\nviewDictionary['@msdyn365-commerce-modules|cookie-compliance|modules|cookie-compliance|cookie-compliance'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-cookie-compliance-cookie-compliance' */\n '@msdyn365-commerce-modules/cookie-compliance/dist/lib/modules/cookie-compliance/cookie-compliance.view.js'),\n cn: '@msdyn365-commerce-modules-cookie-compliance-cookie-compliance'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|buybox'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-buybox' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/buybox.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-buybox'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|cart'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-cart' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/cart.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-cart'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-header' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/header.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-header'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-navigation-menu' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/navigation-menu.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-navigation-menu'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-order-details' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/order-details.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-order-details'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|order-history'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-order-history' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/order-history.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-order-history'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|ratings-histogram'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-ratings-histogram' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/ratings-histogram.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-ratings-histogram'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|reviews-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-reviews-list' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/reviews-list.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-reviews-list'\n };\nviewDictionary['@msdyn365-commerce-modules|fabrikam-design-kit|modules|fabrikam|views|search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-fabrikam-design-kit-search-result-container' */\n '@msdyn365-commerce-modules/fabrikam-design-kit/dist/lib/modules/fabrikam/views/search-result-container.view.js'),\n cn: '@msdyn365-commerce-modules-fabrikam-design-kit-search-result-container'\n };\nviewDictionary['@msdyn365-commerce-modules|footer|modules|footer-category|footer-category'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-footer-category' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-category/footer-category.view.js'),\n cn: '@msdyn365-commerce-modules-footer-footer-category'\n };\nviewDictionary['@msdyn365-commerce-modules|footer|modules|footer-item|footer-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-footer-footer-item' */\n '@msdyn365-commerce-modules/footer/dist/lib/modules/footer-item/footer-item.view.js'),\n cn: '@msdyn365-commerce-modules-footer-footer-item'\n };\nviewDictionary['@msdyn365-commerce-modules|header|modules|header|header'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-header-header' */\n '@msdyn365-commerce-modules/header/dist/lib/modules/header/header.view.js'),\n cn: '@msdyn365-commerce-modules-header-header'\n };\nviewDictionary['@msdyn365-commerce-modules|iframe|modules|iframe|iframe'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-iframe-iframe' */\n '@msdyn365-commerce-modules/iframe/dist/lib/modules/iframe/iframe.view.js'),\n cn: '@msdyn365-commerce-modules-iframe-iframe'\n };\nviewDictionary['@msdyn365-commerce-modules|invoice|modules|invoices-list|invoices-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-invoice-invoices-list' */\n '@msdyn365-commerce-modules/invoice/dist/lib/modules/invoices-list/invoices-list.view.js'),\n cn: '@msdyn365-commerce-modules-invoice-invoices-list'\n };\nviewDictionary['@msdyn365-commerce-modules|map|modules|map|map'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-map-map' */\n '@msdyn365-commerce-modules/map/dist/lib/modules/map/map.view.js'),\n cn: '@msdyn365-commerce-modules-map-map'\n };\nviewDictionary['@msdyn365-commerce-modules|media-gallery|modules|media-gallery|media-gallery'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-media-gallery-media-gallery' */\n '@msdyn365-commerce-modules/media-gallery/dist/lib/modules/media-gallery/media-gallery.view.js'),\n cn: '@msdyn365-commerce-modules-media-gallery-media-gallery'\n };\nviewDictionary['@msdyn365-commerce-modules|navigation-menu|modules|navigation-menu|navigation-menu'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-navigation-menu-navigation-menu' */\n '@msdyn365-commerce-modules/navigation-menu/dist/lib/modules/navigation-menu/navigation-menu.view.js'),\n cn: '@msdyn365-commerce-modules-navigation-menu-navigation-menu'\n };\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|checkout-order-confirmation|checkout-order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-checkout-order-confirmation' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/checkout-order-confirmation/checkout-order-confirmation.view.js'),\n cn: '@msdyn365-commerce-modules-order-management-checkout-order-confirmation'\n };\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|order-confirmation|order-confirmation'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-confirmation' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-confirmation/order-confirmation.view.js'),\n cn: '@msdyn365-commerce-modules-order-management-order-confirmation'\n };\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|order-details|order-details'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-details' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-details/order-details.view.js'),\n cn: '@msdyn365-commerce-modules-order-management-order-details'\n };\nviewDictionary['@msdyn365-commerce-modules|order-management|modules|order-history|order-history'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-management-order-history' */\n '@msdyn365-commerce-modules/order-management/dist/lib/modules/order-history/order-history.view.js'),\n cn: '@msdyn365-commerce-modules-order-management-order-history'\n };\nviewDictionary['@msdyn365-commerce-modules|order-template|modules|order-template-list|order-template-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-template-order-template-list' */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template-list/order-template-list.view.js'),\n cn: '@msdyn365-commerce-modules-order-template-order-template-list'\n };\nviewDictionary['@msdyn365-commerce-modules|order-template|modules|order-template|order-template'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-order-template-order-template' */\n '@msdyn365-commerce-modules/order-template/dist/lib/modules/order-template/order-template.view.js'),\n cn: '@msdyn365-commerce-modules-order-template-order-template'\n };\nviewDictionary['@msdyn365-commerce-modules|product-collection|modules|product-collection|product-collection'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-collection-product-collection' */\n '@msdyn365-commerce-modules/product-collection/dist/lib/modules/product-collection/product-collection.view.js'),\n cn: '@msdyn365-commerce-modules-product-collection-product-collection'\n };\nviewDictionary['@msdyn365-commerce-modules|product-specification|modules|product-specification|product-specification'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-product-specification-product-specification' */\n '@msdyn365-commerce-modules/product-specification/dist/lib/modules/product-specification/product-specification.view.js'),\n cn: '@msdyn365-commerce-modules-product-specification-product-specification'\n };\nviewDictionary['@msdyn365-commerce-modules|promo-banner|modules|promo-banner|promo-banner'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-promo-banner-promo-banner' */\n '@msdyn365-commerce-modules/promo-banner/dist/lib/modules/promo-banner/promo-banner.view.js'),\n cn: '@msdyn365-commerce-modules-promo-banner-promo-banner'\n };\nviewDictionary['@msdyn365-commerce-modules|ratings-reviews|modules|ratings-histogram|ratings-histogram'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-ratings-histogram' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/ratings-histogram/ratings-histogram.view.js'),\n cn: '@msdyn365-commerce-modules-ratings-reviews-ratings-histogram'\n };\nviewDictionary['@msdyn365-commerce-modules|ratings-reviews|modules|reviews-list|reviews-list'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-reviews-list' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/reviews-list/reviews-list.view.js'),\n cn: '@msdyn365-commerce-modules-ratings-reviews-reviews-list'\n };\nviewDictionary['@msdyn365-commerce-modules|ratings-reviews|modules|write-review|write-review'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-ratings-reviews-write-review' */\n '@msdyn365-commerce-modules/ratings-reviews/dist/lib/modules/write-review/write-review.view.js'),\n cn: '@msdyn365-commerce-modules-ratings-reviews-write-review'\n };\nviewDictionary['@msdyn365-commerce-modules|search-result-container|modules|search-result-container|search-result-container'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-search-result-container-search-result-container' */\n '@msdyn365-commerce-modules/search-result-container/dist/lib/modules/search-result-container/search-result-container.view.js'),\n cn: '@msdyn365-commerce-modules-search-result-container-search-result-container'\n };\nviewDictionary['@msdyn365-commerce-modules|search|modules|search|search'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-search-search' */\n '@msdyn365-commerce-modules/search/dist/lib/modules/search/search.view.js'),\n cn: '@msdyn365-commerce-modules-search-search'\n };\nviewDictionary['@msdyn365-commerce-modules|site-picker|modules|site-picker|site-picker'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-site-picker-site-picker' */\n '@msdyn365-commerce-modules/site-picker/dist/lib/modules/site-picker/site-picker.view.js'),\n cn: '@msdyn365-commerce-modules-site-picker-site-picker'\n };\nviewDictionary['@msdyn365-commerce-modules|social-share|modules|social-share-item|social-share-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-social-share-social-share-item' */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share-item/social-share-item.view.js'),\n cn: '@msdyn365-commerce-modules-social-share-social-share-item'\n };\nviewDictionary['@msdyn365-commerce-modules|social-share|modules|social-share|social-share'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-social-share-social-share' */\n '@msdyn365-commerce-modules/social-share/dist/lib/modules/social-share/social-share.view.js'),\n cn: '@msdyn365-commerce-modules-social-share-social-share'\n };\nviewDictionary['@msdyn365-commerce-modules|spacer|modules|spacer|spacer'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-spacer-spacer' */\n '@msdyn365-commerce-modules/spacer/dist/lib/modules/spacer/spacer.view.js'),\n cn: '@msdyn365-commerce-modules-spacer-spacer'\n };\nviewDictionary['@msdyn365-commerce-modules|store-selector|modules|store-selector|store-selector'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-store-selector-store-selector' */\n '@msdyn365-commerce-modules/store-selector/dist/lib/modules/store-selector/store-selector.view.js'),\n cn: '@msdyn365-commerce-modules-store-selector-store-selector'\n };\nviewDictionary['@msdyn365-commerce-modules|tab|modules|tab-item|tab-item'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tab-tab-item' */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab-item/tab-item.view.js'),\n cn: '@msdyn365-commerce-modules-tab-tab-item'\n };\nviewDictionary['@msdyn365-commerce-modules|tab|modules|tab|tab'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-tab-tab' */\n '@msdyn365-commerce-modules/tab/dist/lib/modules/tab/tab.view.js'),\n cn: '@msdyn365-commerce-modules-tab-tab'\n };\nviewDictionary['@msdyn365-commerce-modules|text-block|modules|text-block|text-block'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-text-block-text-block' */\n '@msdyn365-commerce-modules/text-block/dist/lib/modules/text-block/text-block.view.js'),\n cn: '@msdyn365-commerce-modules-text-block-text-block'\n };\nviewDictionary['@msdyn365-commerce-modules|video-player|modules|video-player|video-player'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-video-player-video-player' */\n '@msdyn365-commerce-modules/video-player/dist/lib/modules/video-player/video-player.view.js'),\n cn: '@msdyn365-commerce-modules-video-player-video-player'\n };\nviewDictionary['@msdyn365-commerce-modules|wishlist|modules|wishlist-items|wishlist-items'] = {\n c: async () => import(/* webpackInclude: /.(t|j)sx?$/ */ \n /* webpackExclude: /.data.|.autogenerated.|.test.|.field.|.data-model./ */\n /* webpackChunkName: '@msdyn365-commerce-modules-wishlist-wishlist-items' */\n '@msdyn365-commerce-modules/wishlist/dist/lib/modules/wishlist-items/wishlist-items.view.js'),\n cn: '@msdyn365-commerce-modules-wishlist-wishlist-items'\n };","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { createDataActionHook, IActionContext, IActionInput, TelemetryEvent } from '@msdyn365-commerce/core';\nimport { IMSDyn365Window } from '@msdyn365-commerce/core-internal';\nimport { Cart, CartLine, IDataServiceRequest, IUpdateCartLinesParam } from '@msdyn365-commerce/retail-proxy';\nimport { IProductInfo } from '@msdyn365-commerce/telemetry-internal';\nimport { getProductInfoFromCartLinesAsync } from './telemetry.action.helper';\n\ndeclare let window: IMSDyn365Window;\n\n/**\n * Saves info on cart lines updated before calling data action\n * @param inputs Data action inputs\n * @param actionContext Action context\n */\nconst beforeUpdateCart = async (inputs: IActionInput | IActionInput[], actionContext: IActionContext) => {\n try {\n const actionInput = Array.isArray(inputs) ? inputs[0] : inputs;\n\n // If cart lines were updated\n if (actionInput.queryParams && typeof actionInput.queryParams === 'function') {\n const updateCartLinesParams = actionInput.queryParams();\n if (updateCartLinesParams && updateCartLinesParams.cartLines) {\n // Save info on updated cart lines for post data action hook to pick up\n actionContext.requestContext.telemetryData.updatedCartLines = updateCartLinesParams.cartLines;\n return;\n }\n }\n actionContext.telemetry.debug('UpdateCart pre-data action hook failed - No updated cart lines found');\n } catch (e) {\n actionContext.telemetry.debug('UpdateCart pre-data action hook failed.', e);\n }\n};\n\n/**\n * Fires an UpdateInCart event after UpdateCartLines data action completed\n * @param _inputs Data action inputs\n * @param cart New cart object after cart lines have been added\n * @param actionContext Action context\n */\nconst afterUpdateCart = async (_inputs: IActionInput | IActionInput[], cart: Cart | Cart[], actionContext: IActionContext) => {\n if (window && window._msdyn365 && window._msdyn365.telemetry) {\n const cartObject = Array.isArray(cart) ? cart[0] : cart;\n const updatedCartLines = actionContext.requestContext.telemetryData.updatedCartLines;\n let updatedProducts: IProductInfo[] = [];\n\n // Collect info on products updated in cart\n if (updatedCartLines) {\n try {\n updatedProducts = await getProductInfoFromCartLinesAsync(updatedCartLines, actionContext);\n } catch (error) {\n actionContext.telemetry.error('UpdateCartLines post-data action hook failed to process cart lines.', error);\n }\n }\n\n // Fire UpdateInCart event\n window._msdyn365.telemetry.logEvent(TelemetryEvent.UpdateInCart, {\n cartId: cartObject.Id,\n cartVersion: cartObject.Version ? cartObject.Version.toString() : '',\n products: updatedProducts,\n orderId: cartObject.OrderNumber ? cartObject.OrderNumber.toString() : ''\n });\n }\n};\n\ncreateDataActionHook({\n actionId: '@msdyn365-commerce/retail-proxy/Carts/UpdateCartLines',\n postReaderHook: afterUpdateCart,\n preReaderHook: beforeUpdateCart\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { subscriptionListInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmSubscriptionListResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetSubscriptions Input Action\r\n */\r\nexport class GetSubscriptionsInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IGetSubscriptionsInput`;\r\n public getCacheObjectType = () => 'IGetSubscriptionsInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\n// TODO: Create a data model here or import one to capture the response of the action\r\nexport interface IGetSubscriptionsData extends IrsmSubscriptionListResponse {}\r\n\r\nexport interface IInputRequirements {\r\n customerId: string;\r\n}\r\n\r\n/**\r\n * TODO: Use this function to create the input required to make the action call\r\n */\r\nexport const createGetSubscriptionsInput = (args: Msdyn365.ICreateActionContext, input: IInputRequirements): GetSubscriptionsInput => {\r\n const accNumber = args.requestContext.user.customerAccountNumber || input.customerId;\r\n return new GetSubscriptionsInput(\r\n subscriptionListInput(String(accNumber))\r\n );\r\n};\r\n\r\n/**\r\n * TODO: Use this function to call your action and process the results as needed\r\n */\r\nasync function getSubscriptionsAction(input: GetSubscriptionsInput, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >getSubscriptionsAction,\r\n input: createGetSubscriptionsInput\r\n});\r\n","import { getSelectedProductIdFromActionInput, getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { readAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CustomersDataActions.g';\r\nimport { getActivePricesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { AffiliationLoyaltyTier, ProductPrice, ProjectionDomain, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * Input class for the GetPriceForSelectedVariant Data Action\r\n */\r\nexport class PriceForSelectedVariantInput implements IActionInput {\r\n public productId: number;\r\n public channelId: number;\r\n public selectedProduct: SimpleProduct | undefined;\r\n public customerId: string;\r\n public affiliationId?: number;\r\n\r\n constructor(productId: number, channelId: number, selectedProduct?: SimpleProduct, customerId?: string, affiliationId?: number) {\r\n this.productId = productId;\r\n this.channelId = channelId;\r\n this.selectedProduct = selectedProduct;\r\n this.customerId = customerId || '';\r\n this.affiliationId = affiliationId;\r\n }\r\n\r\n public getCacheKey = () => `PriceForSelectedVariant|${this.productId}|${this.affiliationId}`;\r\n public getCacheObjectType = () => 'Price';\r\n public dataCacheType = (): CacheType => 'none';\r\n}\r\n\r\n/**\r\n * The createInput method for the GetPriceForSelectedVariantDataAction\r\n * @param inputData The input data for the createInput method\r\n */\r\nexport const createActivePriceForSelectedVariantInput = (inputData: ICreateActionContext>): PriceForSelectedVariantInput => {\r\n const productId = getSelectedProductIdFromActionInput(inputData);\r\n\r\n if (productId) {\r\n return new PriceForSelectedVariantInput(\r\n +productId,\r\n +inputData.requestContext.apiSettings.channelId,\r\n undefined,\r\n inputData.requestContext.user.customerAccountNumber,\r\n inputData.config && inputData.config.affiliationId);\r\n } else {\r\n throw new Error('Unable to create PriceForSelectedVariantInput, no productId found on module config or query');\r\n }\r\n};\r\n\r\n/**\r\n * The Action Method for the GetPriceForSelectedVariant Data Action\r\n * Pulls the currently selected variant from the cache using the getSelectedVariant data action, and gets it's current contextual price\r\n * via the getActivePrice RetailServer API\r\n */\r\nexport async function getPriceForSelectedVariantAction(\r\n input: PriceForSelectedVariantInput,\r\n ctx: IActionContext\r\n): Promise {\r\n return Promise.resolve()\r\n // @ts-ignore: Promise vs. ObservablePromise typing conflict\r\n .then(() => {\r\n const activeProduct: SimpleProduct | undefined = input.selectedProduct;\r\n\r\n if (!activeProduct) {\r\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\r\n\r\n return getSelectedVariant(selectedVariantInput, ctx);\r\n }\r\n\r\n return activeProduct;\r\n })\r\n .then(async (productResult: SimpleProduct | null) => {\r\n const projectDomain: ProjectionDomain = { ChannelId: +ctx.requestContext.apiSettings.channelId, CatalogId: +ctx.requestContext.apiSettings.catalogId };\r\n const activeProduct: SimpleProduct | undefined = productResult;\r\n\r\n if (activeProduct) {\r\n let customerAffiliations: AffiliationLoyaltyTier[] = [];\r\n if (ctx.requestContext.user &&\r\n ctx.requestContext.user.isAuthenticated &&\r\n ctx.requestContext.user.customerAccountNumber\r\n ) {\r\n await readAsync({ callerContext: ctx }, ctx.requestContext.user.customerAccountNumber).then(response => {\r\n if(response) {\r\n if(response.CustomerAffiliations && response.CustomerAffiliations.length > 0) {\r\n customerAffiliations = response.CustomerAffiliations.map(aff => {\r\n return {\r\n AffiliationId: aff.RetailAffiliationId\r\n };\r\n });\r\n }\r\n }\r\n });\r\n }\r\n\r\n let affiliations: AffiliationLoyaltyTier[];\r\n if(input.affiliationId) {\r\n affiliations = [\r\n {\r\n AffiliationId: input.affiliationId\r\n }\r\n ];\r\n } else if(customerAffiliations.length > 0) {\r\n affiliations = customerAffiliations;\r\n } else {\r\n affiliations = [];\r\n }\r\n return getActivePricesAsync(\r\n { callerContext: ctx, queryResultSettings: {} },\r\n projectDomain,\r\n [activeProduct.RecordId],\r\n new Date(),\r\n input.customerId,\r\n affiliations,\r\n true\r\n ).then(response => {\r\n if (response && response.length > 0) {\r\n return response[0];\r\n }\r\n throw new Error(\r\n '[getPriceForSelectedVariantAction]Invalid response recieved from calculateProductPrice'\r\n );\r\n });\r\n }\r\n\r\n return null;\r\n })\r\n .catch((error: Error) => {\r\n ctx.trace(error.message);\r\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\r\n });\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getPriceForSelectedVariantAction,\r\n input: createActivePriceForSelectedVariantInput\r\n});\r\n","import {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput,\n ICommerceApiSettings, ICreateActionContext\n} from '@msdyn365-commerce/core';\nimport { CustomerBalances } from '@msdyn365-commerce/retail-proxy';\nimport {\n getCustomerBalanceAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\n\nimport getCustomer, { GetCustomerInput } from './get-customer';\nimport { buildCacheKey } from './index';\n\n/**\n * Input class for the GetCustomerBalance data action\n */\nexport class GetCustomerBalanceInput implements IActionInput {\n public customerAccountNumber?: string;\n public apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings, customerAccountNumber?: string) {\n this.customerAccountNumber = customerAccountNumber;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CustomerBalance-${this.customerAccountNumber}`, this.apiSettings);\n public getCacheObjectType = () => 'GetCustomerBalance';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * createInput method for the GetCustomerBalance method\n * @param inputData The input data passed to the createInput method\n */\n\nexport const createGetCustomerBalanceInput = (inputData: ICreateActionContext): GetCustomerBalanceInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to create get customer balance input. User is not authenticated.');\n }\n\n return new GetCustomerBalanceInput(requestContext.apiSettings);\n};\n\n/**\n * The action method for the GetCustomerBalance data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getCustomerBalanceAction(input: GetCustomerBalanceInput, ctx: IActionContext): Promise {\n const customerInput = new GetCustomerInput(input.apiSettings, input.customerAccountNumber);\n const customer = await getCustomer(customerInput, ctx);\n\n if (!customer) {\n ctx.telemetry.error('Not able to get customer', new Error('Not able to get customer'));\n }\n\n return getCustomerBalanceAsync(\n {\n callerContext: ctx,\n queryResultSettings: {}\n },\n customer.AccountNumber,\n customer.InvoiceAccount!\n );\n}\n\n/**\n * The GetCustomerBalance data action\n * Returns the customer's balance\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-customer-balance',\n action: >getCustomerBalanceAction,\n input: <(args: ICreateActionContext) => IActionInput>createGetCustomerBalanceInput\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { subscriptionCardsInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmSubscriptionCardsResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetSubscriptions Input Action\r\n */\r\nexport class GetSubscriptionCardsInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IGetSubscriptionCardsInput`;\r\n public getCacheObjectType = () => 'IGetSubscriptionCardsInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\nexport interface IGetSubscriptionCardsData extends IrsmSubscriptionCardsResponse { }\r\n\r\nexport interface IInputRequirements {\r\n customerId: string;\r\n}\r\n\r\nexport const createGetSubscriptionsInput = (args: Msdyn365.ICreateActionContext, input: IInputRequirements): GetSubscriptionCardsInput => {\r\n const accNumber = args.requestContext.user.customerAccountNumber || input.customerId;\r\n return new GetSubscriptionCardsInput(\r\n subscriptionCardsInput(String(accNumber))\r\n );\r\n};\r\nasync function getSubscriptionsAction(input: GetSubscriptionCardsInput, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >getSubscriptionsAction,\r\n input: createGetSubscriptionsInput\r\n});\r\n","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { INotificationMessage } from '../models/notification-message';\r\n\r\nexport function createNotificationMessage(result: INotificationMessage): GenericInput {\r\n return new GenericInput('notificationMessage', result, 'INotificationMessage');\r\n}\r\n\r\nconst createNotificationMessageInternal = (inputData: ICreateActionContext>): IActionInput => {\r\n return createNotificationMessage({});\r\n};\r\n\r\nexport default createObservableDataAction({\r\n action: >getGenericAction,\r\n input: createNotificationMessageInternal\r\n});\r\n","import {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getCartState } from '@msdyn365-commerce/global-state';\nimport { CartLine, ChannelDeliveryOptionConfiguration, FeatureState, ProductWarehouse } from '@msdyn365-commerce/retail-proxy';\nimport { getOrgUnitConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/OrgUnitsDataActions.g';\nimport {\n getEstimatedAvailabilityAsync,\n getEstimatedProductWarehouseAvailabilityAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { getChannelDeliveryOptionConfigurationAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport {FeatureStateInput, getFeatureStateAction} from './get-feature-state';\nimport {\n ActiveCartProductsInput,\n ArrayExtensions,\n buildCacheKey,\n getActiveCartProductsAction,\n IProductInventoryInformation,\n mapProductInventoryInformation\n} from './index';\n/**\n * Input class for availabilities for items in cart\n */\nexport class ProductAvailabilitiesForCartLineItems implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`ActiveCartLineItemsAvailability`, this.apiSettings);\n public getCacheObjectType = () => 'ActiveCartLineItemsAvailability';\n public dataCacheType = (): CacheType => 'none';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductAvailabilitiesForCartLineItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n */\nconst getDeliveryMode = (cartLine: CartLine, featureSate: boolean = false, channelDeliveryOptionConfig: ChannelDeliveryOptionConfiguration, pickupDeliveryMode?: string) => {\n if(!featureSate) {\n return cartLine.DeliveryMode === pickupDeliveryMode;\n } else {\n return cartLine.DeliveryMode === channelDeliveryOptionConfig?.PickupDeliveryModeCodes?.find(deliveryMode => deliveryMode === cartLine.DeliveryMode);\n }\n};\n\n/**\n * Calls the Retail API to get the product availabilities for items in the cart\n */\n// tslint:disable-next-line:cyclomatic-complexity tslint:disable: max-func-body-length\nexport async function getAvailabilitiesForCartLineItems(\n input: ProductAvailabilitiesForCartLineItems,\n ctx: IActionContext\n): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getAvailabilitiesForCartLineItems]No valid Input was provided, failing');\n }\n\n const shippingItems: CartLine[] = [];\n const bopisItems = [];\n let productAvailabilities: IProductInventoryInformation[] = [];\n const multiplePickupStoreSwitchName = 'Dynamics.AX.Application.RetailMultiplePickupDeliveryModeFeature';\n let channelDeliveryOptionConfig: any;\n\n const cartState = await getCartState(ctx);\n const cart = cartState.cart;\n const channelConfiguration = await getOrgUnitConfigurationAsync({ callerContext: ctx });\n const products = await getActiveCartProductsAction(new ActiveCartProductsInput(), ctx);\n\n /**\n * Calls the Retail Feature State API and returns a list of feature with isEnabled flag.\n */\n async function getFeatureState(context: IActionContext): Promise {\n return getFeatureStateAction(new FeatureStateInput(), context);\n }\n const featureState = await getFeatureState(ctx);\n const retailMultiplePickUpOptionEnabled = featureState?.find(item => item.Name === multiplePickupStoreSwitchName)?.IsEnabled;\n if (retailMultiplePickUpOptionEnabled) {\n channelDeliveryOptionConfig = await getChannelDeliveryOptionConfigurationAsync({ callerContext: ctx });\n }\n const PickupDeliveryModeCode = channelConfiguration.PickupDeliveryModeCode;\n const EmailDeliveryModeCode = channelConfiguration.EmailDeliveryModeCode;\n\n if (!cart || !channelConfiguration || !products || products.length === 0) {\n ctx.trace('[getAvailabilitiesForCartLineItems] Not able to get cart OR channelConfiguration or no products in cart');\n return [];\n }\n\n if (cart && cart.Id && cart.CartLines && cart.CartLines.length > 0 && channelConfiguration) {\n for (const cartLine of cart.CartLines) {\n if (cartLine.DeliveryMode && cartLine.DeliveryMode !== '' && getDeliveryMode(cartLine, retailMultiplePickUpOptionEnabled, channelDeliveryOptionConfig, PickupDeliveryModeCode)) {\n bopisItems.push(cartLine);\n } else if (cartLine.DeliveryMode !== EmailDeliveryModeCode) {\n shippingItems.push(cartLine);\n }\n }\n }\n\n if (shippingItems && shippingItems.length > 0) {\n let productIds = shippingItems.map(x => x.ProductId!);\n productIds = ArrayExtensions.unique(productIds);\n\n const shippingProductAvailabilities = await getEstimatedAvailabilityAsync(\n { callerContext: ctx, bypassCache: 'get' },\n { ProductIds: productIds, DefaultWarehouseOnly: true }\n );\n\n if (shippingProductAvailabilities &&\n shippingProductAvailabilities.ProductWarehouseInventoryAvailabilities &&\n shippingProductAvailabilities.ProductWarehouseInventoryAvailabilities.length > 0) {\n\n productAvailabilities = mapProductInventoryInformation(\n ctx,\n shippingProductAvailabilities?.ProductWarehouseInventoryAvailabilities\n );\n }\n }\n\n if (bopisItems && bopisItems.length > 0) {\n for (const bopisItem of bopisItems) {\n const productWarehouse: ProductWarehouse = {\n ProductId: bopisItem.ProductId,\n InventLocationId: bopisItem.WarehouseId\n };\n\n if (ctx.requestContext.channel && ctx.requestContext.channel.InventLocationDataAreaId) {\n productWarehouse.DataAreaId = ctx.requestContext.channel.InventLocationDataAreaId;\n }\n const getProductWarehouseAvail = await getEstimatedProductWarehouseAvailabilityAsync(\n { callerContext: ctx, bypassCache: 'get', queryResultSettings: {} },\n [productWarehouse]\n );\n\n if (getProductWarehouseAvail &&\n getProductWarehouseAvail.ProductWarehouseInventoryAvailabilities &&\n getProductWarehouseAvail.ProductWarehouseInventoryAvailabilities.length > 0) {\n const productWarehouseMapping = mapProductInventoryInformation(\n ctx,\n getProductWarehouseAvail?.ProductWarehouseInventoryAvailabilities\n );\n if (productWarehouseMapping && productWarehouseMapping.length) {\n for (const item of productWarehouseMapping) {\n productAvailabilities.push(item);\n }\n }\n }\n }\n }\n\n if (productAvailabilities && productAvailabilities.length > 0) {\n return productAvailabilities;\n }\n\n ctx.trace('[getAvailabilitiesForCartLineItems] unable to get availabilities for product');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-availabilities-cartlines',\n action: >getAvailabilitiesForCartLineItems,\n input: createInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings\n} from '@msdyn365-commerce/core';\nimport {\n getStateProvincesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for get state provinces data action\n */\nexport class GetStateProvincesInput implements IActionInput {\n public countryRegionId: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(countryRegionId: string, apiSettings: ICommerceApiSettings) {\n this.countryRegionId = countryRegionId;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`StateProvinceInfo-${this.countryRegionId}`, this.apiSettings);\n public getCacheObjectType = () => 'StateProvinceInfo';\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport async function getStateProvinceAction(input: GetStateProvincesInput, ctx: IActionContext): Promise {\n return getStateProvincesAsync({ callerContext: ctx, queryResultSettings: {} }, input.countryRegionId);\n}\n\nexport default createObservableDataAction({\n action: >getStateProvinceAction\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\n ICommerceApiSettings, ICreateActionContext, IGeneric\n} from '@msdyn365-commerce/core';\nimport {\n getAddressPurposesAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { AddressPurpose } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for get Address Purposes data action\n */\nexport class GetAddressPurposesInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey('AddressPurpose', this.apiSettings);\n public getCacheObjectType = () => 'AddressPurpose';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): GetAddressPurposesInput => {\n return new GetAddressPurposesInput(inputData.requestContext.apiSettings);\n};\n\nexport async function getAddressPurposesAction(input: GetAddressPurposesInput, ctx: IActionContext): Promise {\n return getAddressPurposesAsync({ callerContext: ctx, queryResultSettings: {} });\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/address/get-address-purposes',\n action: >getAddressPurposesAction,\n input: createInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\n ICommerceApiSettings, ICreateActionContext, IGeneric\n} from '@msdyn365-commerce/core';\nimport {\n CountryRegionInfo, StateProvinceInfo\n} from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\nimport { getCountryRegionsAction, GetCountryRegionsInput } from './get-country-regions';\nimport { getStateProvinceAction, GetStateProvincesInput } from './get-state-provinces';\n\n/**\n * Input class for get country regions data action\n */\nexport class GetCountryStateInput implements IActionInput {\n public locale: string;\n public apiSettings: ICommerceApiSettings;\n\n constructor(locale: string, apiSettings: ICommerceApiSettings) {\n this.locale = locale;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CountryStateInfo-${this.locale}`, this.apiSettings);\n public getCacheObjectType = () => 'StateProvinceInfo';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): GetCountryStateInput => {\n const { locale, apiSettings } = inputData.requestContext;\n if (!(inputData.requestContext && locale)) {\n throw new Error('Unable to create country regions input. Locale is not provided.');\n }\n return new GetCountryStateInput(locale, apiSettings);\n};\n\nexport async function getCountryStateAction(input: GetCountryStateInput, ctx: IActionContext): Promise {\n const countryInput = new GetCountryRegionsInput(input.locale, input.apiSettings);\n const countryRegionsInfo = await getCountryRegionsAction(countryInput, ctx);\n\n const channelConfiguration = ctx.requestContext.channel;\n\n const marketISOCode = channelConfiguration && channelConfiguration.ChannelCountryRegionISOCode || 'US';\n const currentCountryRegion = countryRegionsInfo.find(countryRegion => (countryRegion.ISOCode || '') === marketISOCode);\n const countryRegionId = (currentCountryRegion && currentCountryRegion.CountryRegionId) || 'USA';\n\n const stateInput = new GetStateProvincesInput(countryRegionId, input.apiSettings);\n return getStateProvinceAction(stateInput, ctx);\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/address/get-country-state',\n action: >getCountryStateAction,\n input: createInput\n});","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { ProductWarehouseInventoryAvailability } from '@msdyn365-commerce/retail-proxy';\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ProductAvailableQuantity, ReleasedProductType, ProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getSelectedProductIdFromActionInput, getSelectedVariant, IProductInventoryInformation, SelectedVariantInput } from './index';\nimport { mapProductInventoryInformation } from './utilities/product-inventory-utils';\n\n/**\n * Input class for the getProductAvailabilitiesForSelectedVariant Data Action\n */\nexport class ProductAvailabilitiesForSelectedVariantInput implements IActionInput {\n public productId: number;\n public channelId: number;\n\n constructor(productId: number | string, channelId: number) {\n this.productId = typeof productId === 'string' ? +productId : productId;\n this.channelId = channelId;\n }\n\n public getCacheKey = () => `ProductAvailabilitiesForSelectedVariant`;\n public getCacheObjectType = () => 'ProductAvailabilities';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the getProductAvailabilitiesForSelectedVariant data action.\n * @param inputData The input data passed to the createInput method\n */\nexport const createProductAvailabilitiesForSelectedVariantInput = (\n inputData: ICreateActionContext>\n): ProductAvailabilitiesForSelectedVariantInput => {\n const productId = getSelectedProductIdFromActionInput(inputData);\n\n if (productId) {\n return new ProductAvailabilitiesForSelectedVariantInput(+productId, +inputData.requestContext.apiSettings.channelId);\n } else {\n throw new Error('Unable to create ProductAvailabilitiesForSelectedVariantInput, no productId found on module config or query');\n }\n};\n\n/**\n * The action method for the getProductAvailabilitiesForSelectedVariant data action\n */\nexport async function getProductAvailabilitiesForSelectedVariantAction(\n input: ProductAvailabilitiesForSelectedVariantInput,\n ctx: IActionContext\n): Promise {\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\n // tslint:disable-next-line:prefer-type-cast\n const PRODUCTASSERVICE = 2 as ReleasedProductType.Service;\n return getSelectedVariant(selectedVariantInput, ctx)\n .then(productResult => {\n // don't get availability if it is service item\n if (productResult && productResult.ItemTypeValue !== PRODUCTASSERVICE && productResult.ProductTypeValue !== ProductType.Master) {\n return getEstimatedAvailabilityAsync({ callerContext: ctx }, { ProductIds: [productResult.RecordId], DefaultWarehouseOnly: true}).then(response => {\n if(response && response.ProductWarehouseInventoryAvailabilities && response.ProductWarehouseInventoryAvailabilities.length) {\n return mapProductInventoryInformation(ctx, response.ProductWarehouseInventoryAvailabilities);\n }\n return undefined;\n });\n }\n\n return undefined;\n })\n .catch((error: Error) => {\n ctx.trace(error.message);\n ctx.telemetry.exception(error);\n ctx.telemetry.debug(`[getPriceForSelectedVariantAction]Error executing action`);\n throw new Error('[getPriceForSelectedVariantAction]Error executing action');\n });\n}\n\n/**\n * The function that maps a ProductWareHouse object into a ProductAvailabilityQuantity\n */\nexport function mergeProductWarehouseToProductAvailabities(productsWarehouseInventory: ProductWarehouseInventoryAvailability[]): ProductAvailableQuantity[] {\n const productAvailable: ProductAvailableQuantity[] = [];\n if(productsWarehouseInventory && productsWarehouseInventory.length > 0) {\n for(const product of productsWarehouseInventory) {\n if(product.TotalAvailable !== undefined && product.ProductId !== undefined) {\n productAvailable.push({ProductId: product.ProductId, AvailableQuantity: product.TotalAvailable});\n }\n }\n }\n return productAvailable;\n}\n\n\n/**\n * The complete getProductAvailabilitiesForSelectedVariant data action\n * Get the currently selected variant via the getSelectedVariant data action, and\n * then gets the availabilities for the variant via the getProductAvailabilities RetailServer API\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-product-availabilities-for-selected-variant',\n action: >getProductAvailabilitiesForSelectedVariantAction,\n input: createProductAvailabilitiesForSelectedVariantInput\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { friendsAndFamilyValidateProgramInput } from '../../../dataActions/DataActionExtension.g';\r\n\r\n/**\r\n * Getfriendsandfamilylist Input Action\r\n */\r\nexport class ValidateFriendsAndFamilyInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IVaildateFriendsAndFamilyInput`;\r\n public getCacheObjectType = () => 'IVaildateFriendsAndFamilyInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'none';\r\n}\r\n\r\n/**\r\n * TODO: Delete this later it's only used when using static data\r\n */\r\nexport interface IValidateFamilyAndFriendsData {\r\n Status: string;\r\n Result: {\r\n Message: string;\r\n Code: {\r\n RecipientEmailAddress: string;\r\n Status: string;\r\n Code: string;\r\n SentDate: string;\r\n ActivationDate: string;\r\n };\r\n };\r\n}\r\n\r\nexport interface IInputRequirements {\r\n code: string;\r\n emailListId: string;\r\n sourceId: string;\r\n}\r\n\r\nexport const createValidateFriendsAndFamilyInput = (\r\n args: Msdyn365.ICreateActionContext,\r\n { code, emailListId, sourceId }: IInputRequirements\r\n): ValidateFriendsAndFamilyInput => {\r\n return new ValidateFriendsAndFamilyInput(\r\n friendsAndFamilyValidateProgramInput(\r\n code,\r\n emailListId,\r\n sourceId\r\n )\r\n );\r\n};\r\n\r\nexport async function validateFriendsAndFamilyAction(input: ValidateFriendsAndFamilyInput, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n // DEBUG return: delete when module is finished\r\n // return {\r\n // Status: 'SUCCESS',\r\n // Result: {\r\n // Message: '12',\r\n // Code: {\r\n // RecipientEmailAddress: 'fred.flintstone@email.com',\r\n // Status: 'SENT',\r\n // Code: '8180fc21-c645-45a2-8f3a-3f62e80ada85',\r\n // SentDate: '2020-08-20',\r\n // ActivationDate: '2020-08-20'\r\n // }\r\n // }\r\n // };\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >validateFriendsAndFamilyAction,\r\n input: createValidateFriendsAndFamilyInput\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { clubMembershipSkipShipmentInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmClubMembershipSkipShipmentResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetMembership Input Action\r\n */\r\nexport class WineShipmentStateInput implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IWineShipmentStateInput`;\r\n public getCacheObjectType = () => 'IWineShipmentStateInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\nexport interface IWineShipmentStateInput extends IrsmClubMembershipSkipShipmentResponse { }\r\n\r\nexport interface IInputRequirements {\r\n wineClubId: string;\r\n skipShipment: boolean;\r\n}\r\n\r\nexport const createWineShipmentStateInput = (\r\n args: Msdyn365.ICreateActionContext,\r\n { skipShipment, wineClubId }: IInputRequirements,\r\n): WineShipmentStateInput => {\r\n const accNumber = args.requestContext.user.customerAccountNumber;\r\n return new WineShipmentStateInput(\r\n clubMembershipSkipShipmentInput(\r\n accNumber!,\r\n wineClubId,\r\n skipShipment\r\n )\r\n );\r\n};\r\n\r\nexport async function getWineShipmentStateAction(\r\n input: WineShipmentStateInput,\r\n ctx: Msdyn365.IActionContext,\r\n): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >getWineShipmentStateAction,\r\n input: createWineShipmentStateInput,\r\n});\r\n","import { CategoryHierarchy } from '@msdyn365-commerce/commerce-entities';\nimport { CacheType, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { createObservableDataAction, IAny, ICreateActionContext, IGeneric, IRequestContext } from '@msdyn365-commerce/core';\nimport { getCategoriesAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/CategoriesDataActions.g';\n\n/**\n * Input for get-categories data action\n */\nexport class CategoriesInput implements IActionInput {\n public readonly maxItems: number;\n public readonly channelId: number;\n private _mappedToHierarchy: boolean;\n constructor(context: IRequestContext, mappedToHierarchy: boolean, maxItems?: number) {\n this._mappedToHierarchy = mappedToHierarchy;\n this.maxItems = maxItems || 250;\n this.channelId = context && context.apiSettings && context.apiSettings.channelId ? Number(context.apiSettings.channelId) : 0;\n }\n\n public getCacheKey = () => `${this.channelId}|top-${this.maxItems || 250}`;\n public getCacheObjectType = () => (this._mappedToHierarchy ? 'CategoryHierarchy' : 'Category');\n public dataCacheType = (): CacheType => 'application';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nexport const createCategoriesInput = (inputData: ICreateActionContext>): IActionInput => {\n const topItems = inputData.config && inputData.config.topCategories && parseInt(inputData.config.topCategories, 10);\n return new CategoriesInput(inputData.requestContext, false, topItems);\n};\n\n/**\n * Calls the Retail API and returns all the categories as a flat list\n */\nexport async function getCategoryAction(input: CategoriesInput, ctx: IActionContext): Promise {\n return (getCategoriesAsync({ callerContext: ctx }, input.channelId));\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/get-categories',\n action: >getCategoryAction,\n input: createCategoriesInput\n});\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\nimport { subscriptionCancelInput, subscriptionPauseInput, subscriptionResumeInput } from '../../../dataActions/DataActionExtension.g';\r\nimport { IrsmSubscriptionListResponse } from '../../../dataActions/DataServiceEntities.g';\r\n\r\n/**\r\n * GetSubscriptions Input Action\r\n */\r\nexport class SubscriptionState implements Msdyn365.IActionInput {\r\n public input: IDataServiceRequest;\r\n constructor(input: IDataServiceRequest) {\r\n this.input = input;\r\n }\r\n\r\n public shouldCacheOutput = () => false;\r\n\r\n public getCacheKey = () => `IGetSubscriptionsInput`;\r\n public getCacheObjectType = () => 'IGetSubscriptionsInput';\r\n public dataCacheType = (): Msdyn365.CacheType => 'application';\r\n}\r\n\r\nexport interface ISubscriptionStateData extends IrsmSubscriptionListResponse { }\r\n\r\nexport type state = 'pause' | 'resume' | 'cancel';\r\n\r\nexport interface IInputRequirements {\r\n customerId: string;\r\n subscriptionId: string;\r\n newState: state;\r\n}\r\n\r\nexport const createSubscriptionStateInput = (args: Msdyn365.ICreateActionContext, input: IInputRequirements): SubscriptionState => {\r\n switch (input.newState) {\r\n case 'cancel':\r\n return new SubscriptionState(\r\n subscriptionCancelInput(input.subscriptionId, input.customerId)\r\n );\r\n case 'pause':\r\n return new SubscriptionState(\r\n subscriptionPauseInput(input.subscriptionId, input.customerId)\r\n );\r\n case 'resume':\r\n return new SubscriptionState(\r\n subscriptionResumeInput(input.subscriptionId, input.customerId)\r\n );\r\n default:\r\n // this can't happen but typescript really wants something returned.\r\n return new SubscriptionState(\r\n subscriptionResumeInput(input.subscriptionId, input.customerId)\r\n );\r\n }\r\n};\r\n\r\nexport async function createSubscriptionStateAction(input: SubscriptionState, ctx: Msdyn365.IActionContext): Promise {\r\n return input.input.execute(ctx);\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n action: >createSubscriptionStateAction,\r\n input: createSubscriptionStateInput\r\n});\r\n","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\nimport { createObservableDataAction, IAction, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { SearchState } from './search-state';\n\nexport function createSearchStateInput(result: SearchState): GenericInput {\n return new GenericInput('searchState', result, 'SearchState');\n}\n\nconst createsearchStateInputInternal = (inputData: ICreateActionContext>): IActionInput => {\n return createSearchStateInput({ searchText: '' });\n};\n\nexport default createObservableDataAction({\n action: >getGenericAction,\n input: createsearchStateInputInternal\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\n ICommerceApiSettings, ICreateActionContext, IGeneric\n} from '@msdyn365-commerce/core';\nimport {\n getCountryRegionsByLanguageIdAsync\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\nimport { CountryRegionInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for get country regions data action\n */\nexport class GetCountryRegionsInput implements IActionInput {\n public locale: string;\n private apiSettings: ICommerceApiSettings;\n\n constructor(locale: string, apiSettings: ICommerceApiSettings) {\n this.locale = locale;\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CountryRegionInfo-${this.locale}`, this.apiSettings);\n public getCacheObjectType = () => 'CountryRegionInfo';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * Creates the input required to make the retail api call\n */\nconst createInput = (inputData: ICreateActionContext>): GetCountryRegionsInput => {\n if (!(inputData.requestContext && inputData.requestContext.locale)) {\n throw new Error('Unable to create country regions input. Locale is not provided.');\n }\n\n return new GetCountryRegionsInput(inputData.requestContext.locale, inputData.requestContext.apiSettings);\n};\n\nexport async function getCountryRegionsAction(input: GetCountryRegionsInput, ctx: IActionContext): Promise {\n return getCountryRegionsByLanguageIdAsync({ callerContext: ctx, queryResultSettings: {} }, input.locale);\n}\n\nexport default createObservableDataAction({\n action: >getCountryRegionsAction,\n input: createInput\n});\n","/*!\n * Copyright (c) Microsoft Corporation.\n * All rights reserved. See LICENSE in the project root for license information.\n */\n\nimport { buildCacheKeyWithUrlTokens } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext,\n IRequestContext\n} from '@msdyn365-commerce/core';\nimport { IDefaultPageSummaryConfig } from './default-page-summary.props.autogenerated';\n\nexport interface IPageSummaryData {\n title?: string;\n description?: string;\n keywords?: string;\n sharingImageUrl?: string;\n canonicalUrl?: string;\n faviconUrl?: string;\n}\n\n/** Page Summary Input */\nexport class PageSummaryInput implements IActionInput {\n public requestContext: IRequestContext;\n public config: IDefaultPageSummaryConfig;\n\n constructor(config: IDefaultPageSummaryConfig, requestContext: IRequestContext) {\n this.config = config || {};\n this.requestContext = requestContext;\n }\n\n public getCacheObjectType = (): string => 'PageSummary';\n public getCacheKey = (): string => `${buildCacheKeyWithUrlTokens('PageSummary', this.requestContext)}-${this.config.title}`;\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst action = async (input: PageSummaryInput, context: IActionContext): Promise => {\n const { config } = input;\n return {\n title: config && config.title,\n description: config && config.description,\n keywords: config && config.keywords,\n sharingImageUrl: config && config.sharingImage && config.sharingImage.src,\n canonicalUrl: context.requestContext && context.requestContext.canonicalUrl,\n faviconUrl: config && config.faviconUrl\n };\n};\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/page-summary/default-page-summary',\n action: >action,\n input: (args: ICreateActionContext) => {\n return new PageSummaryInput(args.config, args.requestContext);\n }\n});\n","import { ArrayExtensions, buildCacheKey, IProductInventoryInformation, mapProductInventoryInformation } from '@msdyn365-commerce-modules/retail-actions';\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICommerceApiSettings,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { getEstimatedAvailabilityAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\nimport { ReleasedProductType } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { ActiveWishlistInput, getActiveWishlistItems } from './get-items-in-wishlists';\n\n/**\n * Input class for availabilities for items in wishlist\n */\nexport class ProductAvailabilitiesForWishlistItems implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`ActiveWishlistItemsAvailability`, this.apiSettings);\n public getCacheObjectType = () => `ActiveWishlistItemsAvailability`;\n public dataCacheType = (): CacheType => 'request';\n}\n\nconst createInput = (inputData: ICreateActionContext>) => {\n return new ProductAvailabilitiesForWishlistItems(inputData.requestContext.apiSettings);\n};\n\n/**\n * Calls the Retail API to get wishlist which will be cached the then finds the quantities for each item\n */\nexport async function getAvailabilitiesForWishlistItems(\n input: ProductAvailabilitiesForWishlistItems,\n ctx: IActionContext\n): Promise {\n // If no input is provided fail out\n if (!input) {\n throw new Error('[getAvailabilitiesForWishlistItems]No valid Input was provided, failing');\n }\n\n const products = await getActiveWishlistItems(new ActiveWishlistInput(), ctx);\n\n if (!products) {\n ctx.trace('[getAvailabilitiesForWishlistItems] Not able to get products in wishlist');\n return [];\n }\n\n let validProducts: number[] = [];\n // tslint:disable-next-line:prefer-type-cast\n const PRODUCTASSERVICE = 2 as ReleasedProductType.Service;\n\n for (const product of products) {\n if (product.ProductDetails && product.ProductDetails.RecordId && product.ProductDetails.ItemTypeValue !== PRODUCTASSERVICE) {\n validProducts.push(product.ProductDetails.RecordId);\n }\n }\n\n if (validProducts.length === 0) {\n ctx.trace('[getAvailabilitiesForWishlistItems] No products in wishlist');\n return [];\n }\n\n validProducts = ArrayExtensions.unique(validProducts);\n\n const productAvailabilities = await getEstimatedAvailabilityAsync(\n { callerContext: ctx },\n { ProductIds: validProducts, DefaultWarehouseOnly: true }\n );\n\n if (productAvailabilities && productAvailabilities) {\n return mapProductInventoryInformation(ctx, productAvailabilities?.ProductWarehouseInventoryAvailabilities);\n }\n\n ctx.trace('[getAvailabilitiesForWishlistItems] unable to get availabilities for product');\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/wishlist/wishlist-items/get-product-availabilities-wishlist-items',\n action: >getAvailabilitiesForWishlistItems,\n input: createInput\n});\n","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny,\r\n ICommerceApiSettings, ICreateActionContext, IGeneric\r\n} from '@msdyn365-commerce/core';\r\nimport {\r\n getCountryRegionsByLanguageIdAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { CountryRegionInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * Input class for get country regions data action\r\n */\r\nexport class GetCountryRegionsInput implements IActionInput {\r\n public locale: string;\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(locale: string, apiSettings: ICommerceApiSettings) {\r\n this.locale = locale;\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey(`CountryRegionInfo-${this.locale}`, this.apiSettings);\r\n public getCacheObjectType = () => 'CountryRegionInfo';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\n/**\r\n * Creates the input required to make the retail api call\r\n */\r\nconst createInput = (inputData: ICreateActionContext>): GetCountryRegionsInput => {\r\n if (!(inputData.requestContext && inputData.requestContext.locale)) {\r\n throw new Error('Unable to create country regions input. Locale is not provided.');\r\n }\r\n\r\n return new GetCountryRegionsInput(inputData.requestContext.locale, inputData.requestContext.apiSettings);\r\n};\r\n\r\nexport async function getCountryRegionsAction(input: GetCountryRegionsInput, ctx: IActionContext): Promise {\r\n return getCountryRegionsByLanguageIdAsync({ callerContext: ctx, queryResultSettings: {} }, input.locale);\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getCountryRegionsAction,\r\n input: createInput\r\n});\r\n","import { IActionContext, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\n\nexport const getRnrPartnerId = (args: ICreateActionContext> | IActionContext): string => {\n return args.requestContext.apiSettings.rnr.id || '';\n};\n\nexport const getRnrEndpointId = (args: ICreateActionContext> | IActionContext): string => {\n return args.requestContext.apiSettings.rnr.url || '';\n};\n\nexport const getRnrAuthEndpointId = (args: ICreateActionContext> | IActionContext): string => {\n // @ts-ignore\n const endpoint = (args.requestContext.apiSettings.rnr.proxyUrl ? args.requestContext.apiSettings.rnr.proxyUrl : args.requestContext.apiSettings.rnr.url || '');\n if (endpoint.length > 0 && endpoint.charAt(endpoint.length-1) === '/') {\n return endpoint.substring(0, endpoint.length-1);\n }\n return endpoint;\n};","import { getSelectedVariant, SelectedVariantInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport { AttributeValue, SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\nimport { AttributesForSelectedVariantInput, getAttributesForSelectedVariantAction } from '../../../dataActions/get-attributes-for-selected-variant';\r\n\r\n/**\r\n * Input class for the GetSingleProduct Data Action\r\n */\r\nexport class SingleProductInput implements IActionInput {\r\n public productId: number;\r\n public channelId: number;\r\n public singleProduct: SimpleProduct | undefined;\r\n\r\n constructor(productId: number, channelId: number, singleProduct?: SimpleProduct) {\r\n this.productId = productId;\r\n this.channelId = channelId;\r\n this.singleProduct = singleProduct;\r\n }\r\n\r\n public getCacheKey = () => `ProductForSinglePLP|${this.productId}`;\r\n public getCacheObjectType = () => 'Product';\r\n public dataCacheType = (): CacheType => 'application';\r\n}\r\n\r\n/**\r\n * The createInput method for the singleProductAction\r\n * @param inputData The input data for the createInput method\r\n */\r\nexport const createSingleProductInput = (inputData: ICreateActionContext>): SingleProductInput => {\r\n if (inputData.config && inputData.config.productId) {\r\n const productId = inputData.config.productId;\r\n if (inputData.requestContext.query) {\r\n inputData.requestContext.query.productId = productId.toString();\r\n }\r\n inputData.requestContext.urlTokens.recordId = productId.toString();\r\n inputData.requestContext.urlTokens.pageType = 'product';\r\n return new SingleProductInput(\r\n +productId,\r\n +inputData.requestContext.apiSettings.channelId,\r\n undefined);\r\n }\r\n throw new Error('Unable to create SingleProductInput, no productId found on module config or query');\r\n};\r\n\r\n/**\r\n * The Action Method for the singleProductAction Data Action\r\n */\r\nexport async function singleProductAction(\r\n input: SingleProductInput,\r\n ctx: IActionContext\r\n): Promise {\r\n try {\r\n const product = await getSimpleProductVariant(input, ctx);\r\n return await getAttributesFromSimpleProduct(input, ctx, product);\r\n } catch (e) {\r\n ctx.trace(e.message);\r\n throw new Error('[singleProductAction]Error executing action');\r\n }\r\n}\r\n\r\nasync function getSimpleProductVariant(input: SingleProductInput, ctx: IActionContext): Promise {\r\n const activeProduct: SimpleProduct | undefined = input.singleProduct;\r\n if (!activeProduct) {\r\n const selectedVariantInput = new SelectedVariantInput(input.productId, input.channelId);\r\n return getSelectedVariant(selectedVariantInput, ctx);\r\n }\r\n return activeProduct;\r\n}\r\n\r\nasync function getAttributesFromSimpleProduct(input: SingleProductInput, ctx: IActionContext, productResult: SimpleProduct | undefined | null): Promise {\r\n if (productResult) {\r\n const attributesForSelectedVariantInput = new AttributesForSelectedVariantInput(input.productId, input.channelId, productResult);\r\n return getAttributesForSelectedVariantAction(attributesForSelectedVariantInput, ctx);\r\n }\r\n return null;\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >singleProductAction,\r\n input: createSingleProductInput\r\n});","import { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { IActionContext } from '@msdyn365-commerce/core';\r\nimport { IDictionary, IQueryResultSettings, ProductRefiner, ProductSearchCriteria } from '@msdyn365-commerce/retail-proxy';\r\nimport { getProductSearchRefinersAsync } from '@msdyn365-commerce/retail-proxy/dist/DataActions/ProductsDataActions.g';\r\nimport { IRemapper } from '../../Utilities/refiners';\r\n\r\n/**\r\n * Uses Bulk refiner API to get refiners and child refiner values\r\n * @param searchCriteria product search criteria\r\n * @param maxItems max items\r\n * @param ctx action context\r\n */\r\nexport async function getProductRefinerHierarchy(searchCriteria: ProductSearchCriteria, queryResultSettings: IQueryResultSettings, ctx: IActionContext, configuration?: IDictionary): Promise {\r\n return getProductSearchRefinersAsync({ callerContext: ctx, queryResultSettings: queryResultSettings }, searchCriteria).then((productRefiners: ProductRefiner[]) => {\r\n if (!productRefiners) {\r\n ctx.trace('[getRefinersByCriteriaAction] returned no refiners');\r\n return [];\r\n }\r\n\r\n // @FIXME/dg: This is a crime against nature\r\n const result = (productRefiners || []).map((productRefiner: ProductRefiner) => productRefiner);\r\n\r\n // Selectively remap refiner labels if any are defined in global config\r\n const remappers: IRemapper[] | undefined = configuration && configuration.refinerRemappers;\r\n if (remappers) {\r\n result.forEach(entry => {\r\n // Are there any remap rules for this refiner?\r\n const remap = remappers.find(remapRecord => remapRecord.originalName.toLowerCase() === entry.KeyName?.toLowerCase());\r\n\r\n // If so, change the name\r\n if (remap) {\r\n entry.KeyName = remap.newName;\r\n }\r\n });\r\n }\r\n\r\n if (!result.length) {\r\n ctx.trace('[getRefinersByCriteriaAction] returned no IProductRefinerHierarchy objects');\r\n return [];\r\n }\r\n\r\n return result;\r\n });\r\n}","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { IProductRefinerHierarchy } from '@msdyn365-commerce/commerce-entities';\r\nimport { createObservableDataAction, IAction, IActionContext, IActionInput, ICreateActionContext } from '@msdyn365-commerce/core';\r\nimport { IDictionary } from '@msdyn365-commerce/retail-proxy';\r\nimport { BaseCollectionInput, createBaseCollectionInput } from './base-collection-action';\r\nimport { getProductRefinerHierarchy } from './get-product-refiner-hierarchy';\r\n\r\n/**\r\n * Refiners-by-Collection Input action\r\n */\r\nexport class RefinersByCollectionInput extends BaseCollectionInput implements IActionInput {\r\n public configuration: IDictionary = {};\r\n\r\n public getCacheObjectType = () => 'ProductRefiner';\r\n public dataCacheType = () => {\r\n if (\r\n this.pageType !== 'Category' ||\r\n (this.refiners && this.refiners.length > 0) ||\r\n (this.queryResultSettings && this.queryResultSettings.Sorting && this.queryResultSettings.Sorting.Columns && this.queryResultSettings.Sorting.Columns.length > 0)\r\n ) {\r\n return 'request';\r\n } else {\r\n return 'application';\r\n }\r\n };\r\n}\r\n\r\n/**\r\n * Create input method which creates an ActionInput for fetching list page refiners\r\n */\r\nconst createInput = (args: ICreateActionContext): IActionInput => {\r\n const input = createBaseCollectionInput(args, RefinersByCollectionInput);\r\n\r\n input.configuration = args.requestContext.app.config;\r\n return input;\r\n};\r\n\r\n/**\r\n * Action method which fetches refiners for the given list page\r\n */\r\nasync function action(input:RefinersByCollectionInput, ctx: IActionContext): Promise {\r\n if(input.pageType === 'Category') {\r\n if(input.category) {\r\n return getProductRefinerHierarchy(\r\n {\r\n CategoryIds:[input.category],\r\n Context: {\r\n ChannelId: input.apiSettings.channelId,\r\n CatalogId: input.apiSettings.catalogId\r\n }\r\n },\r\n input.queryResultSettings,\r\n ctx,\r\n input.configuration);\r\n } else {\r\n throw new Error('[GetRefinersForCollection]Category Page Detected, but no global categoryId found');\r\n }\r\n } else {\r\n if(input.searchText) {\r\n return getProductRefinerHierarchy(\r\n {\r\n SearchCondition: input.searchText,\r\n Context: {\r\n ChannelId: input.apiSettings.channelId,\r\n CatalogId: input.apiSettings.catalogId\r\n }\r\n },\r\n input.queryResultSettings,\r\n ctx);\r\n } else {\r\n throw new Error('[GetFullProductsForCollection]Search Page Detected, but no q= query parameter found');\r\n }\r\n }\r\n}\r\n\r\nexport default createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/search-result-container/get-refiners-for-collection',\r\n action: >action,\r\n input: createInput\r\n});","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\r\nimport {\r\n CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, ICommerceApiSettings\r\n} from '@msdyn365-commerce/core';\r\nimport {\r\n getStateProvincesAsync\r\n} from '@msdyn365-commerce/retail-proxy/dist/DataActions/StoreOperationsDataActions.g';\r\nimport { StateProvinceInfo } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * Input class for get state provinces data action\r\n */\r\nexport class GetStateProvincesInput implements IActionInput {\r\n public countryRegionId: string;\r\n private apiSettings: ICommerceApiSettings;\r\n\r\n constructor(countryRegionId: string, apiSettings: ICommerceApiSettings) {\r\n this.countryRegionId = countryRegionId;\r\n this.apiSettings = apiSettings;\r\n }\r\n\r\n public getCacheKey = () => buildCacheKey(`StateProvinceInfo-${this.countryRegionId}`, this.apiSettings);\r\n public getCacheObjectType = () => 'StateProvinceInfo';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\nexport async function getStateProvinceAction(input: GetStateProvincesInput, ctx: IActionContext): Promise {\r\n return getStateProvincesAsync({ callerContext: ctx, queryResultSettings: {} }, input.countryRegionId);\r\n}\r\n\r\nexport default createObservableDataAction({\r\n action: >getStateProvinceAction\r\n});\r\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\nimport {\n CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n IAny,\n ICreateActionContext,\n IGeneric\n} from '@msdyn365-commerce/core';\nimport { ProductPrice, ProductRefinerValue, ProductSearchResult, SimpleProduct, SortingInfo } from '@msdyn365-commerce/retail-proxy';\nimport { observable } from 'mobx';\n\nimport { listPageType } from './actions';\n\n/**\n * ListPageState class\n */\nexport class ListPageState {\n @observable public activeFilters: ProductRefinerValue[] | null = null;\n @observable public activeProducts: ProductSearchResult[] = [];\n @observable public sortingCritera: SortingInfo | null = null;\n @observable public currentPageNumber: number | null = null;\n @observable public totalProductCount: number | undefined;\n @observable public pageSize: number = 10;\n @observable public pageType: listPageType = 'Unknown';\n @observable public featureProduct: SimpleProduct | null = null;\n @observable public productPrices: ProductPrice[] | undefined = [];\n}\n\n/**\n * ListPageStateInput - action input\n */\nexport class ListPageStateInput implements IActionInput {\n public getCacheKey = () => `ListPageState`;\n public getCacheObjectType = () => 'ListPageState';\n public dataCacheType = (): CacheType => 'request';\n}\n\nexport async function listPageStateAction(\n input: ListPageStateInput,\n ctx: IActionContext\n): Promise {\n return new ListPageState();\n}\n\n/**\n * create new input for create action\n */\nexport const createListPageInput = (\n inputData: ICreateActionContext>\n): IActionInput => {\n return new ListPageStateInput();\n};\n\n/**\n * ListPageState - create action\n */\nexport default createObservableDataAction({\n action: >listPageStateAction,\n input: createListPageInput\n});\n","import { GenericInput, getGenericAction } from '@msdyn365-commerce-modules/retail-actions';\nimport { createObservableDataAction, IAction, IActionInput } from '@msdyn365-commerce/core';\nimport { IAccordionExpandedState } from './accordion-state';\n\nexport function createAccordionStateInput(result: IAccordionExpandedState): GenericInput {\n return new GenericInput('accordionExpandedState', result, 'IAccordionExpandedState');\n}\n\nconst createAccordionStateInputInternal = (): IActionInput => {\n return createAccordionStateInput({});\n};\n\nexport default createObservableDataAction({\n action: >getGenericAction,\n input: createAccordionStateInputInternal\n});\n","import { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\r\nimport getAttributesForSelectedVariant, { AttributesForSelectedVariantInput, createAttributesForSelectedVariantInput } from './get-attributes-for-selected-variant';\r\n\r\nconst AttributeEventIntro: string = 'INTRODUCTION';\r\nconst AttributeEventBody: string = 'BODY';\r\n\r\nexport interface IEventDescription {\r\n intro: string;\r\n body: string;\r\n}\r\n\r\n/**\r\n * Event Description Action Input\r\n */\r\nexport class EventDescriptionInput implements IActionInput {\r\n public attributesInput: AttributesForSelectedVariantInput;\r\n constructor(attrib: AttributesForSelectedVariantInput) {\r\n this.attributesInput = attrib;\r\n }\r\n public getCacheKey = () =>\r\n `${this.attributesInput.productId}:${this.attributesInput.channelId}:${this.attributesInput.catalogId}:EventDescription`;\r\n public getCacheObjectType = () => 'ProductAttributeValue';\r\n public dataCacheType = (): CacheType => 'request';\r\n}\r\n\r\nexport async function getEventDescription(\r\n input: EventDescriptionInput,\r\n ctx: IActionContext\r\n): Promise {\r\n const attributes = await getAttributesForSelectedVariant(\r\n input.attributesInput,\r\n ctx\r\n );\r\n\r\n const eventDescription: IEventDescription = {\r\n intro: '',\r\n body: ''\r\n };\r\n\r\n // Event Intro\r\n const eventIntro = attributes.find(\r\n attribute =>\r\n attribute.Name!.toUpperCase() === AttributeEventIntro\r\n );\r\n\r\n if (eventIntro && eventIntro.TextValue) {\r\n eventDescription.intro = eventIntro.TextValue;\r\n }\r\n\r\n // Event Body\r\n const eventBody = attributes.find(\r\n attribute =>\r\n attribute.Name!.toUpperCase() === AttributeEventBody\r\n );\r\n\r\n if (eventBody && eventBody.TextValue) {\r\n eventDescription.body = eventBody.TextValue;\r\n }\r\n\r\n return eventDescription;\r\n}\r\n\r\n// ===========================================================================\r\n// ===========================================================================\r\nconst createEventDescriptionInput = (\r\n inputData: ICreateActionContext>\r\n): IActionInput => {\r\n const selectedVariant = createAttributesForSelectedVariantInput(inputData);\r\n return new EventDescriptionInput(selectedVariant);\r\n};\r\n\r\nexport default createObservableDataAction({\r\n action: >getEventDescription,\r\n input: createEventDescriptionInput\r\n});\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { RatingsSummary } from '@msdyn365-commerce/commerce-entities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\n\r\n/**\r\n * This function gets the ratings summary\r\n */\r\nasync function getRatingsSummary(input:{}, ctx: Msdyn365.IActionContext): Promise {\r\n return {};\r\n}\r\n\r\nexport default Msdyn365.createObservableDataAction({\r\n id: '@msdyn365-commerce-modules/retail-actions/get-ratings-summary',\r\n action: getRatingsSummary\r\n});","import { buildCacheKey } from '@msdyn365-commerce-modules/retail-actions';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput, IAny, ICommerceApiSettings, ICreateActionContext, IGeneric } from '@msdyn365-commerce/core';\nimport { CheckoutState } from './checkout-state';\n\n/**\n * CheckoutState - action input\n */\nexport class CheckoutStateInput implements IActionInput {\n private apiSettings: ICommerceApiSettings;\n\n constructor(apiSettings: ICommerceApiSettings) {\n this.apiSettings = apiSettings;\n }\n\n public getCacheKey = () => buildCacheKey(`CheckoutState`, this.apiSettings);\n public getCacheObjectType = () => 'CheckoutState';\n public dataCacheType = (): CacheType => 'request';\n}\n\n/**\n * CheckoutState - action\n */\nexport async function checkoutStateAction(input: CheckoutStateInput, ctx: IActionContext): Promise {\n return new CheckoutState();\n}\n\n/**\n * CheckoutState - create new input for create action\n */\nconst createInput = (inputData: ICreateActionContext>): IActionInput => {\n return new CheckoutStateInput(inputData.requestContext.apiSettings);\n};\n\n/**\n * CheckoutState - create action\n */\nexport default createObservableDataAction({\n action: >checkoutStateAction,\n input: createInput\n});\n","import { CacheType,\n createObservableDataAction,\n IAction,\n IActionContext,\n IActionInput,\n ICreateActionContext } from '@msdyn365-commerce/core';\nimport { IQueryResultSettings } from '@msdyn365-commerce/retail-proxy';\nimport { ProductList } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\nimport { getOrderTemplates, GetOrderTemplatesInput, QueryResultSettingsProxy } from '..';\nimport { getPaginatedOrderTemplateLinesAction, GetPaginatedOrderTemplateLinesInput } from '..';\nimport { OrderTemplate } from '../utilities/order-templates';\n\n/**\n * Input class for the GetOrderTemplates data action\n */\nexport class GetFullOrderTemplatesInput implements IActionInput {\n public queryResultSettings: IQueryResultSettings;\n\n constructor(queryResultSettings: IQueryResultSettings) {\n this.queryResultSettings = queryResultSettings;\n }\n\n public getCacheKey = () => `GetFullOrderTemplates`;\n public getCacheObjectType = () => 'GetFullOrderTemplates';\n public dataCacheType = (): CacheType => 'none';\n}\n\n/**\n * createInput method for the GetOrderTemplate method\n * @param inputData The input data passed to the createInput method.\n */\nexport const createGetFullOrderTemplatesInput = (inputData: ICreateActionContext): GetFullOrderTemplatesInput => {\n const { requestContext } = inputData;\n if (!requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n const queryResultSettings: IQueryResultSettings = QueryResultSettingsProxy.fromInputData(inputData).QueryResultSettings;\n queryResultSettings.count = true;\n\n return new GetFullOrderTemplatesInput(queryResultSettings);\n};\n\n/**\n * The action method for the GetFullOrderTemplates data action\n * @param input The action input\n * @param ctx The action context\n */\nexport async function getFullOrderTemplatesAction(input: GetFullOrderTemplatesInput, ctx: IActionContext): Promise {\n if (!ctx.requestContext.user.isAuthenticated) {\n throw new Error('Unable to get full order templates. User is not authenticated.');\n }\n\n const orderTemplates: OrderTemplate[] = [];\n\n const inputParams = new GetOrderTemplatesInput();\n const productLists: ProductList[] = await getOrderTemplates(inputParams, ctx);\n\n if (!productLists || productLists.length === 0) {\n return orderTemplates;\n }\n\n for (let i = 0; i < productLists.length; ++i) {\n const list = productLists[i];\n const inputLines = new GetPaginatedOrderTemplateLinesInput(list.Id, input.queryResultSettings);\n const linesState = await getPaginatedOrderTemplateLinesAction(inputLines, ctx);\n orderTemplates.push(new OrderTemplate(list, linesState.lines, linesState.totalCount));\n }\n\n ctx.trace(orderTemplates.length.toString());\n return orderTemplates;\n}\n\n/**\n * The GetFullOrderTemplates Data Action\n * Returns order templates\n */\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/retail-actions/order-templates/get-full-order-templates',\n action: >getFullOrderTemplatesAction,\n input: createGetFullOrderTemplatesInput\n});","import { getSimpleProducts, ProductInput } from '@msdyn365-commerce-modules/retail-actions';\nimport { CacheType, createObservableDataAction, IAction, IActionContext, IActionInput } from '@msdyn365-commerce/core';\nimport { getCheckoutState } from '@msdyn365-commerce/global-state';\nimport { SimpleProduct } from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\n\n/**\n * Input class for ActiveCheckoutCartWithProducts data action\n */\nexport class ActiveCheckoutCartProductsInput implements IActionInput {\n public getCacheKey = () => 'ActiveCheckoutCartProducts';\n public getCacheObjectType = () => 'ActiveCheckoutCartProducts';\n public dataCacheType = (): CacheType => 'none';\n}\n\nexport const createInput = () => {\n return new ActiveCheckoutCartProductsInput();\n};\n\n/**\n * Calls the Retail API and returns a cart object based on the passed GetCartInput\n */\nexport async function getActiveCheckoutCartProductsAction(input: ActiveCheckoutCartProductsInput, ctx: IActionContext): Promise {\n // If no cart ID is provided in input, we need to create a cart object\n if (!input) {\n ctx.telemetry.exception(new Error('[getActiveCheckoutCartWithProducts]No valid Input was provided, failing'));\n throw new Error('[getActiveCheckoutCartWithProducts]No valid Input was provided, failing');\n }\n\n const checkoutState = await getCheckoutState(ctx);\n const cart = checkoutState.checkoutCart.cart;\n\n // If there are cart lines, make call to get products\n if (cart && cart.CartLines && cart.CartLines.length) {\n return getSimpleProducts(\n cart.CartLines.map(cartLine => {\n if (cartLine.ProductId) {\n return new ProductInput(cartLine.ProductId, ctx.requestContext.apiSettings);\n }\n return undefined;\n }).filter(Boolean),\n ctx\n )\n .then(products => {\n if (products) {\n return products;\n } else {\n return [];\n }\n })\n .catch(error => {\n ctx.telemetry.exception(error);\n throw new Error('[getActiveCheckoutCartWithProdcuts]Unable to hydrate cart with product information');\n });\n }\n\n return [];\n}\n\nexport default createObservableDataAction({\n id: '@msdyn365-commerce-modules/checkout/get-products-in-active-checkout-cart',\n action: >getActiveCheckoutCartProductsAction,\n input: createInput\n});\n"],"sourceRoot":""}