{"version":3,"sources":["webpack:////build/source/node_modules/lodash/head.js","webpack:////build/source/node_modules/lodash/iteratee.js","webpack:////build/source/node_modules/@gitlab/ui/dist/utils/number_utils.js","webpack:////build/source/node_modules/lodash/_baseClone.js","webpack:///./milestones/utils.js","webpack:////build/source/node_modules/lodash/_stringSize.js","webpack:////build/source/ee/app/assets/javascripts/api.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/button_group/button_group.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_term.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/text-selection-active.js","webpack:////build/source/node_modules/lodash/isSet.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/shared_components/clear_icon_button/clear_icon_button.js","webpack:////build/source/node_modules/lodash/clamp.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/utils.js","webpack:////build/source/node_modules/lodash/isNil.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_suggestion_list.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_token_segment.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/tfoot.js","webpack:////build/source/node_modules/lodash/_unicodeSize.js","webpack:////build/source/node_modules/lodash/_baseClamp.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/utils.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-stacked.js","webpack:////build/source/node_modules/lodash/_initCloneByTag.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/normalize-fields.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-items.js","webpack:////build/source/node_modules/lodash/_baseIsSet.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tfoot.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/constants.js","webpack:////build/source/node_modules/lodash/fp/_baseConvert.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_utils.js","webpack:////build/source/node_modules/lodash/_arrayIncludesWith.js","webpack:////build/source/node_modules/lodash/fp/_util.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/avatars_inline/avatars_inline.js","webpack:///./analytics/shared/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/directives/outside/outside.js","webpack:////build/source/node_modules/lodash/_baseAssign.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-text.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/dropdown/dropdown_text.js","webpack:////build/source/node_modules/lodash/isError.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/filter-event.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_suggestion.js","webpack:////build/source/node_modules/lodash/_createSet.js","webpack:////build/source/node_modules/lodash/toPath.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-colgroup.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/filtered_search/filtered_search_token.js","webpack:////build/source/node_modules/lodash/truncate.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/thead.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-thead.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/constants.js","webpack:////build/source/node_modules/@gitlab/ui/dist/utils/data_utils.js","webpack:////build/source/node_modules/lodash/_cloneSymbol.js","webpack:///./vue_shared/components/filtered_search_bar/constants.js","webpack:////build/source/node_modules/@floating-ui/dom/dist/floating-ui.dom.esm.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/td.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_item.js","webpack:////build/source/node_modules/@floating-ui/utils/dist/floating-ui.utils.esm.js","webpack:////build/source/node_modules/lodash/fp/_mapping.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/th.js","webpack:///./issues/list/queries/milestone.fragment.graphql","webpack:////build/source/node_modules/lodash/curry.js","webpack:////build/source/node_modules/lodash/_initCloneArray.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/dropdown/dropdown-header.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/dropdown/dropdown_section_header.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/tbody.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody-row.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-tbody.js","webpack:////build/source/node_modules/lodash/first.js","webpack:////build/source/node_modules/lodash/rearg.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_search_input.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_group.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox.js","webpack:////build/source/node_modules/lodash/_baseUniq.js","webpack:////build/source/node_modules/lodash/isMap.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/regions/empty_state/empty_state.js","webpack:////build/source/node_modules/lodash/isWeakMap.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/utilities/intersection_observer/intersection_observer.js","webpack:///./issues/list/queries/search_milestones.query.graphql","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/disclosure/disclosure_dropdown_group.js","webpack:////build/source/node_modules/lodash/last.js","webpack:////build/source/node_modules/lodash/fp/curry.js","webpack:////build/source/node_modules/lodash/_copySymbols.js","webpack:////build/source/node_modules/lodash/fp/placeholder.js","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/components/filter_bar.vue?6ca1","webpack:///../../../ee/app/assets/javascripts/analytics/code_review_analytics/components/filter_bar.vue","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/components/filter_bar.vue?8614","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/components/filter_bar.vue","webpack:///../../../ee/app/assets/javascripts/analytics/code_review_analytics/components/approvers_column.vue","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/components/approvers_column.vue?9f4f","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/components/approvers_column.vue?fbf7","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/components/approvers_column.vue","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/components/merge_request_table.vue?0a9b","webpack:///../../../ee/app/assets/javascripts/analytics/code_review_analytics/components/merge_request_table.vue","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/components/merge_request_table.vue?d00a","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/components/merge_request_table.vue","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/components/app.vue?4fcd","webpack:///../../../ee/app/assets/javascripts/analytics/code_review_analytics/components/app.vue","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/components/app.vue?f07e","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/components/app.vue","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/store/actions.js","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/store/modules/merge_requests/mutation_types.js","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/store/modules/merge_requests/actions.js","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/store/modules/merge_requests/mutations.js","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/store/modules/merge_requests/index.js","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/store/modules/merge_requests/state.js","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/store/index.js","webpack:////build/source/ee/app/assets/javascripts/analytics/code_review_analytics/code_review_analytics_bundle.js","webpack:////build/source/ee/app/assets/javascripts/pages/projects/analytics/code_reviews/index/index.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/sorting/sorting.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/search_box_by_type/search_box_by_type.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/label/label.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/mixins/has-listener.js","webpack:////build/source/node_modules/lodash/fp/convert.js","webpack:///vue_shared/components/url_sync.vue","webpack:///./vue_shared/components/url_sync.vue?55f3","webpack:///./vue_shared/components/url_sync.vue","webpack:///./analytics/shared/utils.js","webpack:////build/source/node_modules/lodash/cloneDeep.js","webpack:////build/source/node_modules/lodash/isRegExp.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/avatar_link/avatar_link.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/tr.js","webpack:////build/source/node_modules/lodash/_asciiSize.js","webpack:////build/source/node_modules/lodash/_copySymbolsIn.js","webpack:///./vue_shared/components/filtered_search_bar/tokens/milestone_token.vue","webpack:///./vue_shared/components/filtered_search_bar/tokens/milestone_token.vue?2369","webpack:///vue_shared/components/filtered_search_bar/tokens/milestone_token.vue","webpack:///./vue_shared/components/filtered_search_bar/tokens/milestone_token.vue?3392","webpack:////build/source/node_modules/portal-vue/dist/portal-vue.common.js","webpack:////build/source/node_modules/lodash/_cloneDataView.js","webpack:////build/source/node_modules/lodash/_baseIsRegExp.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/pagination/pagination.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/base_dropdown/constants.js","webpack:////build/source/node_modules/lodash/_baseAssignIn.js","webpack:////build/source/node_modules/lodash/uniqWith.js","webpack:///./vue_shared/components/filtered_search_bar/store/modules/filters/mutation_types.js","webpack:///./vue_shared/components/filtered_search_bar/store/modules/filters/actions.js","webpack:///./vue_shared/components/filtered_search_bar/store/modules/filters/mutations.js","webpack:///./vue_shared/components/filtered_search_bar/store/modules/filters/index.js","webpack:///./vue_shared/components/filtered_search_bar/store/modules/filters/state.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-caption.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/search_box_by_click/search_box_by_click.js","webpack:////build/source/node_modules/@floating-ui/core/dist/floating-ui.core.esm.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/helpers/mixin-table-renderer.js","webpack:////build/source/node_modules/lodash/_castSlice.js","webpack:////build/source/node_modules/lodash/_baseIsMap.js","webpack:////build/source/node_modules/lodash/ary.js","webpack:////build/source/node_modules/@gitlab/ui/dist/vendor/bootstrap-vue/src/components/table/table-lite.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/table_lite/table_lite.js","webpack:////build/source/node_modules/lodash/_cloneRegExp.js","webpack:////build/source/node_modules/@gitlab/ui/dist/components/base/new_dropdowns/listbox/listbox_item.js","webpack:////build/source/node_modules/lodash/_baseSlice.js"],"names":["module","exports","array","length","undefined","baseClone","baseIteratee","func","addition","a","b","sum","_len","arguments","numbers","Array","_key","reduce","average","modulo","n","divisor","result","engineeringNotation","value","precision","invalidValues","NaN","Infinity","num","Number","includes","toString","allYourBase","0","3","6","9","12","15","18","21","24","exponentialNotation","toExponential","power","split","map","scaledPower","Math","floor","scaledMantissa","toFixed","replace","_","fractionalDigits","formatNumberToLocale","options","locales","isNaN","Intl","NumberFormat","format","toFloat","defaultValue","float","parseFloat","Stack","arrayEach","assignValue","baseAssign","baseAssignIn","cloneBuffer","copyArray","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","getTag","initCloneArray","initCloneByTag","initCloneObject","isArray","isBuffer","isMap","isObject","isSet","keys","keysIn","cloneableTags","bitmask","customizer","key","object","stack","isDeep","isFlat","isFull","isArr","tag","isFunc","stacked","get","set","forEach","subValue","add","props","sortMilestonesByDueDate","milestoneA","milestoneB","rawDueDateA","due_date","dueDate","rawDueDateB","dueDateA","newDate","dueDateB","expiredA","expired","Date","now","getTime","expiredB","asciiSize","hasUnicode","unicodeSize","string","Api","geoSitePath","geoSitesPath","geoSitesStatusPath","ldapGroupsPath","subscriptionPath","childEpicPath","codeReviewAnalyticsPath","groupActivityIssuesPath","groupActivityMergeRequestsPath","groupActivityNewMembersPath","countriesPath","countryStatesPath","paymentFormPath","filePath","validatePaymentMethodPath","vulnerabilityPath","vulnerabilityActionPath","vulnerabilityIssueLinksPath","descendantGroupsPath","projectDeploymentFrequencyAnalyticsPath","projectGroupsPath","issueMetricImagesPath","issueMetricSingleImagePath","environmentApprovalPath","protectedEnvironmentsPath","mrStatusCheckRetryPath","protectedEnvironmentPath","aiCompletionsPath","aiEmbeddingsPath","aiChatPath","tanukiBotAskPath","userSubscription","namespaceId","url","buildUrl","this","encodeURIComponent","axios","ldapGroups","query","provider","callback","params","search","per_page","DEFAULT_PER_PAGE","active","then","data","createChildEpic","confidential","groupId","parentEpicId","title","post","parent_id","descendantGroups","codeReviewAnalytics","groupActivityMergeRequestsCount","groupPath","group_path","groupActivityIssuesCount","groupActivityNewMembersCount","fetchCountries","fetchStates","country","fetchPaymentFormParams","id","getFile","validatePaymentMethod","gitlabUserId","gitlab_user_id","changeVulnerabilityState","state","getGeoSites","getGeoSitesStatus","createGeoSite","site","updateGeoSite","put","removeGeoSite","delete","deploymentFrequencies","projectId","fetchIssueMetricImages","issueIid","metricImagesUrl","uploadIssueMetricImage","file","urlText","headers","contentTypeMultipartFormData","formData","FormData","append","updateIssueMetricImage","imageId","deleteMetricImage","individualMetricImageUrl","projectGroups","deploymentApproval","deploymentId","representedAs","approve","comment","status","represented_as","approveDeployment","rejectDeployment","protectedEnvironments","entityType","createProtectedEnvironment","protectedEnvironment","updateProtectedEnvironment","name","deleteProtectedEnvironment","requestAICompletions","model","prompt","rest","requestAIEmbeddings","input","requestAIChat","messages","requestTanukiBotResponse","q","__vue_script__","vertical","type","Boolean","required","default","__vue_component__","render","_h","$createElement","_self","_c","_g","class","attrs","$listeners","_t","staticRenderFns","components","GlFilteredSearchTokenSegment","GlToken","inject","inheritAttrs","availableTokens","Object","placeholder","String","searchInputAttributes","isLastToken","currentValue","cursorPosition","validator","searchTextOptionLabel","viewOnly","computed","termsAsTokens","tokens","filter","token","push","internalValue","$emit","mousedown","stopMousedownOnCloseButton","close","destroyByClose","methods","intent","event","target","closest","_vm","staticClass","ref","suggestedTokens","on","$event","onComplete","onBackspace","scopedSlots","_u","fn","label","eventListeners","_v","_s","_b","$$v","expression","portalUuid","initialState","GlSearchBoxByClick","GlIcon","PortalTarget","directives","GlTooltip","portalName","alignSuggestions","suggestionsListClass","__v_raw","isOk","every","_ref","__v_skip","console","warn","clearButtonTitle","historyItems","showFriendlyText","searchButtonAttributes","showSearchButton","activeTokenIdx","suggestionsStyle","intendedCursorPosition","lastTokenIdx","hasValue","disabled","unique","find","t","watch","isLastTokenEmpty","deep","immediate","newValue","oldValue","applyNewValue","idx","_this$getTokenEntry","getTokenEntry","offsetRef","getBoundingClientRect","left","offsetMenu","$el","transform","tokenIdx","indexOf","isLastTokenActive","activeToken","splice","max","$set","newStrings","newTokens","submit","slotScope","_l","getTokenComponent","refInFor","getTokenClassList","currentAvailableTokens","termPlaceholder","appliedTokens","activate","deactivate","destroyToken","replaceToken","completeToken","createTokens","activatePreviousToken","activateNextToken","style","proxy","$attrs","textSelectionActive","el","document","sel","trim","containsNode","baseIsSet","baseUnary","nodeUtil","nodeIsSet","GlButton","tooltipContainer","HTMLElement","rawName","container","modifiers","baseClamp","toNumber","number","lower","upper","isOption","item","isGroup","hasNoDuplicates","Set","size","flattenedOptions","items","flatMap","itemsValidator","isAllOptionsOrAllGroups","hasUniqueValues","_ref2","text","hasUniqueGroups","filteredSearchSuggestionListInstance","initialValue","activeIdx","registeredItems","findIndex","valuesMatch","initialActiveIdx","initialActiveItem","firstValue","secondValue","toLowerCase","stepItem","direction","endIdx","index","activeItem","listClasses","isVNodeEmpty","vnode","_vnode$type2","_vnode$type2$toString","call","isVue3Fragment","children","_vnode$type","_vnode$type$toString","isVue3Comment","Portal","GlFilteredSearchSuggestionList","GlFilteredSearchSuggestion","isTerm","multiSelect","optionTextField","customInputKeydownHandler","Function","fallbackValue","some","_this$options","o","inputValue","nonMultipleValue","matchingOption","_this$options2","slot","vnodes","isSlotNotEmpty","$slots","suggestions","_this$options$","option","getMatchingOptionForInputValue","loose","hasTermSuggestion","defaultOption","op","hasUnclosedQuote","firstWord","otherWords","w","arr","e","button","preventDefault","_this$options3","$nextTick","$refs","focus","scrollIntoView","block","inline","setSelectionRange","_this$matchingOption","suggestedValue","formattedSuggestedValue","getValue","handlers","ArrowLeft","selectionStart","ArrowRight","selectionEnd","Backspace","Enter","applySuggestion","Escape","suggestionsHandlers","ArrowDown","nextItem","Down","ArrowUp","prevItem","Up","hasOptionsOrSuggestions","assign","v","containerAttributes","emitIfInactive","submitValue","domProps","_i","handleInputKeydown","handleBlur","$$a","$$el","$$c","checked","$$i","concat","slice","_q","composing","_uid","defaultSuggestedValue","icon","component","_e","footVariant","BTfoot","mixins","getBvTableRowGroup","getBvTable","isTfoot","bvTable","dark","isStacked","isResponsive","isStickyHeader","stickyHeader","tableVariant","bvAttrs","role","h","tfootClasses","tfootAttrs","bvListeners","normalizeSlot","rsAstral","rsCombo","rsFitz","rsNonAstral","rsRegional","rsSurrPair","reOptMod","rsSeq","join","rsSymbol","reUnicode","RegExp","lastIndex","test","isItem","_item$text","itemValidator","group","hasOnlyListItemsVue2","defaultSlot","nodes","tags","vNode","_vNode$componentOptio","componentOptions","isValidSlotTagVue2","hasOnlyListItemsVue3","fragment","node","_vNode$type","isValidSlotTagVue3","hasOnlyListItems","version","startsWith","stackedMixin","isStackedAlways","cloneArrayBuffer","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","Ctor","constructor","normalizeFields","origFields","fields","identity","f","field","formatter","processField","sample","k","memo","mixin","modelMixin","modelProps","prop","MODEL_PROP_NAME","MODEL_EVENT_NAME","primaryKey","itemsMixin","localItems","bvParent","computedFields","obj","paginatedItems","sortedItems","filteredItems","perPage","currentPage","localFilter","sortBy","localSortBy","sortDesc","localSortDesc","math","apiUrl","computedItems","computedFieldsObj","isObjectLike","footClone","footRowVariant","tfootClass","tfootTrClass","tfootMixin","hasNormalizedSlot","headVariant","columns","renderThead","renderTFootCustom","DISCLOSURE_DROPDOWN_ITEM_NAME","DISCLOSURE_DROPDOWN_GROUP_NAME","DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS","top","bottom","mapping","fallbackHolder","prototype","baseAry","cloneArray","wrapImmutable","cloner","args","apply","baseConvert","util","isLib","isObj","TypeError","config","cap","curry","fixed","immutable","rearg","defaultHolder","forceCurry","forceFixed","forceRearg","pristine","runInContext","helpers","ary","clone","isError","isFunction","isWeakMap","iteratee","toInteger","toPath","each","aryMethodKeys","aryMethod","wrappers","castArray","arity","source","pairs","pair","nthArg","indexes","context","castCap","iterateeRearg","overArg","baseArity","iterateeAry","castFixed","skipFixed","methodSpread","start","otherArgs","flatSpread","castRearg","skipRearg","methodRearg","aryRearg","cloneByPath","path","nested","createConverter","realName","aliasToReal","methodName","remap","oldOptions","newUtil","newFunc","newOptions","wrap","wrapped","wrapper","mutate","createCloner","aryKey","otherName","afterRearg","castCurry","convert","realToAlias","alias","DROPDOWN_SELECTOR","ITEM_SELECTOR","events","GL_DROPDOWN_SHOWN","GL_DROPDOWN_HIDDEN","GL_DROPDOWN_BEFORE_CLOSE","GL_DROPDOWN_FOCUS_CONTENT","GlBaseDropdown","GlDisclosureDropdownItem","GlDisclosureDropdownGroup","toggleText","textSrOnly","category","primary","variant","loading","toggleId","toggleClass","noCaret","placement","toggleAriaLabelledBy","listAriaLabelledBy","dropdownOffset","fluidWidth","autoClose","positioningStrategy","strategy","startOpened","disclosureId","nextFocusedItemIndex","_this$items","$scopedSlots","toggle","open","baseDropdown","code","elements","getFocusableListItemElements","stop","focusItem","focusNextItem","handleAutoClose","_this$$refs$content","content","querySelectorAll","from","offset","currentIndex","nextIndex","_elements$index","closeAndFocus","action","window","requestAnimationFrame","uniqueItemId","GL_DROPDOWN_CONTENTS_CLASS","_d","$options","onShow","onHide","onBeforeClose","onKeydown","disclosureTag","handleAction","groupItem","TERM_TOKEN_TYPE","INTENT_ACTIVATE_PREVIOUS","TOKEN_CLOSE_SELECTOR","isEmptyTerm","normalizeTokens","assertValidTokens","needDenormalization","stepIndexAndWrap","step","tokenToOption","optionComponent","tokenIdCounter","getTokenId","tokenId","ensureTokenId","createTerm","denormalizeTokens","inputTokens","trimmedText","strToken","match","termTokenDefinition","splitOnQuotes","str","queue","waitingForMatchingQuote","quoteContent","part","shift","firstPart","secondPart","unshift","wrapTokenInQuotes","quote","comparator","GlAvatar","avatars","maxVisible","avatarSize","collapsed","badgeSrOnlyText","badgeTooltipProp","badgeTooltipMaxChars","hiddenAvatars","16","32","tooltipTitle","avatar","badgeSize","collapsable","badge","badgeTooltipTitle","badgeLabel","DATE_RANGE_LIMIT","PROJECTS_PER_PAGE","isoDate","masks","dateFormats","defaultDate","defaultDateTime","month","TODAY","getCurrentUtcDate","startOfToday","getStartOfDay","utc","LAST_30_DAYS","nDaysBefore","lastXDays","__","lastWeek","nWeeksBefore","last90Days","last180Days","mrThroughputStartDate","formatDateParam","d","dateFormat","DATE_RANGE_CUSTOM_VALUE","DATE_RANGE_LAST_30_DAYS_VALUE","DEFAULT_DROPDOWN_DATE_RANGES","startDate","endDate","sprintf","days","MAX_DATE_RANGE_TEXT","maxDateRange","MAX_METRIC_PRECISION","UNITS","COUNT","DAYS","PER_DAY","PERCENT","NUMBER_OF_DAYS_SELECTED","numDays","n__","METRIC_POPOVER_LABEL","s__","ALL_METRICS_QUERY_TYPE","DORA_METRICS_QUERY_TYPE","FLOW_METRICS_QUERY_TYPE","FLOW_METRICS","LEAD_TIME","CYCLE_TIME","ISSUES","ISSUES_COMPLETED","COMMITS","DEPLOYS","MEDIAN_TIME_TO_MERGE","DORA_METRICS","DEPLOYMENT_FREQUENCY","LEAD_TIME_FOR_CHANGES","TIME_TO_RESTORE_SERVICE","CHANGE_FAILURE_RATE","VSA_METRICS_GROUPS","VULNERABILITY_METRICS","CRITICAL","HIGH","MERGE_REQUEST_METRICS","THROUGHPUT","CONTRIBUTOR_METRICS","AI_METRICS","CODE_SUGGESTIONS_USAGE_RATE","CODE_SUGGESTIONS_ACCEPTANCE_RATE","DUO_CHAT_USAGE_RATE","DUO_USAGE_RATE","VALUE_STREAM_METRIC_DISPLAY_UNITS","VALUE_STREAM_METRIC_TILE_METADATA","unit","description","groupLink","projectLink","docsLink","helpPagePath","anchor","VALUE_STREAM_METRIC_METADATA","USAGE_OVERVIEW_NO_DATA_ERROR","USAGE_OVERVIEW_DEFAULT_DATE_RANGE","nYearsBefore","USAGE_OVERVIEW_IDENTIFIER_GROUPS","USAGE_OVERVIEW_IDENTIFIER_PROJECTS","USAGE_OVERVIEW_IDENTIFIER_USERS","USAGE_OVERVIEW_IDENTIFIER_ISSUES","USAGE_OVERVIEW_IDENTIFIER_MERGE_REQUESTS","USAGE_OVERVIEW_IDENTIFIER_PIPELINES","USAGE_OVERVIEW_METADATA","titleIcon","USAGE_OVERVIEW_QUERY_INCLUDE_KEYS","callbacks","Map","activeEventTypes","lastMousedown","globalListener","element","eventTypes","originalEvent","contains","onMousedown","OutsideDirective","bind","bindings","_ref3","arg","modifiersList","parseBinding","has","eventType","addEventListener","capture","startListening","unbind","entry","eventTypesToUnbind","values","removeEventListener","copyObject","textClass","BDropdownText","functional","baseGetTag","isPlainObject","message","TABLE_TAG_NAMES","filterEvent","tagName","labelFor","GlDropdownItem","_this$$refs$item","_this$$refs$item$$el","register","unregister","isActive","nativeOn","emitValue","noop","setToArray","createSet","arrayMap","isSymbol","stringToPath","toKey","FIELD_KEY_CELL_VARIANT","FIELD_KEY_ROW_VARIANT","FIELD_KEY_SHOW_DETAILS","IGNORED_FIELD_KEYS","EVENT_FILTER","colgroupMixin","$colgroup","DEFAULT_OPERATORS","multiSelectValues","operator","dataSegmentInputAttributes","activeSegment","tokenValue","operators","_this$tokenValue$data","tokenEmpty","isSegmentActive","segments","SEGMENT_TITLE","SEGMENT_DATA","SEGMENT_OPERATOR","tokenIsActive","activateSegment","segment","newType","newTokenConfig","isCompatible","dataType","evt","potentialValue","activateDataSegment","availableTokensWithSelf","activateNextOperatorSegment","getAdditionalSegmentClasses","handleOperatorKeydown","replaceWithTermIfEmpty","activatePreviousTitleSegment","activateNextDataSegment","operatorDescription","handleComplete","activatePreviousOperatorSegment","scope","listeners","cssClasses","baseToString","castSlice","isRegExp","stringSize","stringToArray","reFlags","omission","separator","strLength","strSymbols","end","substring","global","exec","newEnd","lastIndexOf","BThead","isThead","theadClasses","theadAttrs","getHeadSlotName","getFootSlotName","headRowVariant","theadClass","theadTrClass","theadMixin","fieldClasses","thClass","isFoot","stopIfBusy","isSortable","isSelectable","hasHeadClickListener","hasListener","selectAllRows","clearSelected","$cells","colIndex","labelHtml","stickyColumn","ariaLabel","headerTitle","click","headClicked","keydown","keyCode","sortAttrs","sortTheadThAttrs","sortClass","sortTheadThClasses","sortLabel","sortTheadThLabel","thStyle","tabindex","sortable","abbr","headerAbbr","getThValues","thAttr","slotNames","column","$content","html","$srLabel","$trs","ARROW_DOWN","ARROW_UP","END","ENTER","HOME","SPACE","POSITION_ABSOLUTE","POSITION_FIXED","intersperse","head","separatorFactory","insert","newItem","Symbol","symbolProto","symbolValueOf","valueOf","symbol","DEBOUNCE_DELAY","MAX_RECENT_TOKENS_SIZE","FILTER_NONE","FILTER_ANY","FILTER_CURRENT","FILTER_UPCOMING","FILTER_STARTED","FILTERS_NONE_ANY","OPERATOR_IS","OPERATOR_IS_TEXT","OPERATOR_NOT","OPERATOR_NOT_TEXT","OPERATOR_OR","OPERATOR_OR_TEXT","OPERATOR_AFTER","OPERATOR_AFTER_TEXT","OPERATOR_BEFORE","OPERATOR_BEFORE_TEXT","OPERATORS_IS","OPERATORS_NOT","OPERATORS_OR","OPERATORS_AFTER","OPERATORS_BEFORE","OPERATORS_IS_NOT","OPERATORS_IS_NOT_OR","OPERATORS_AFTER_BEFORE","OPERATORS_TO_GROUP","OPTION_NONE","OPTION_ANY","OPTION_CURRENT","OPTION_STARTED","OPTION_UPCOMING","OPTIONS_NONE_ANY","DEFAULT_MILESTONES","SORT_DIRECTION","descending","ascending","FILTERED_SEARCH_TERM","TOKEN_EMPTY_SEARCH_TERM","TOKEN_TITLE_APPROVED_BY","TOKEN_TITLE_MERGE_USER","TOKEN_TITLE_APPROVER","TOKEN_TITLE_ASSIGNEE","TOKEN_TITLE_AUTHOR","TOKEN_TITLE_CONFIDENTIAL","TOKEN_TITLE_CONTACT","TOKEN_TITLE_DRAFT","TOKEN_TITLE_GROUP","TOKEN_TITLE_LABEL","TOKEN_TITLE_PROJECT","TOKEN_TITLE_MILESTONE","TOKEN_TITLE_MY_REACTION","TOKEN_TITLE_ORGANIZATION","TOKEN_TITLE_RELEASE","TOKEN_TITLE_REVIEWER","TOKEN_TITLE_SOURCE_BRANCH","TOKEN_TITLE_STATUS","TOKEN_TITLE_JOBS_RUNNER_TYPE","TOKEN_TITLE_TARGET_BRANCH","TOKEN_TITLE_TYPE","TOKEN_TITLE_VERSION","TOKEN_TITLE_SEARCH_WITHIN","TOKEN_TITLE_CREATED","TOKEN_TITLE_CLOSED","TOKEN_TITLE_DEPLOYED_BEFORE","TOKEN_TITLE_DEPLOYED_AFTER","TOKEN_TITLE_ASSIGNED_SEAT","TOKEN_TITLE_ENVIRONMENT","TOKEN_TYPE_APPROVER","TOKEN_TYPE_APPROVED_BY","TOKEN_TYPE_MERGE_USER","TOKEN_TYPE_ASSIGNEE","TOKEN_TYPE_AUTHOR","TOKEN_TYPE_CONFIDENTIAL","TOKEN_TYPE_CONTACT","TOKEN_TYPE_DRAFT","TOKEN_TYPE_GROUP","TOKEN_TYPE_GROUP_INVITE","TOKEN_TYPE_EPIC","TOKEN_TYPE_ASSIGNED_SEAT","TOKEN_TYPE_PROJECT","TOKEN_TYPE_HEALTH","TOKEN_TYPE_ITERATION","TOKEN_TYPE_LABEL","TOKEN_TYPE_MILESTONE","TOKEN_TYPE_MY_REACTION","TOKEN_TYPE_ORGANIZATION","TOKEN_TYPE_RELEASE","TOKEN_TYPE_REVIEWER","TOKEN_TYPE_SOURCE_BRANCH","TOKEN_TYPE_STATUS","TOKEN_TYPE_JOBS_RUNNER_TYPE","TOKEN_TYPE_TARGET_BRANCH","TOKEN_TYPE_TYPE","TOKEN_TYPE_VERSION","TOKEN_TYPE_WEIGHT","TOKEN_TYPE_SEARCH_WITHIN","TOKEN_TYPE_CREATED","TOKEN_TYPE_CLOSED","TOKEN_TYPE_DEPLOYED_BEFORE","TOKEN_TYPE_DEPLOYED_AFTER","TOKEN_TYPE_ENVIRONMENT","ENTITY_TYPES","USER","AUTHOR","GROUP","PROJECT","getWindow","_node$ownerDocument","ownerDocument","defaultView","getComputedStyle$1","getComputedStyle","isNode","Node","getNodeName","nodeName","isHTMLElement","isElement","Element","isShadowRoot","ShadowRoot","isOverflowElement","overflow","overflowX","overflowY","display","isTableElement","isContainingBlock","safari","isSafari","css","perspective","containerType","backdropFilter","willChange","contain","CSS","supports","isLastTraversableNode","min","round","createEmptyCoords","x","y","getCssDimensions","width","height","hasOffset","offsetWidth","offsetHeight","shouldFallback","$","unwrapElement","contextElement","getScale","domElement","rect","isFinite","noOffsets","getVisualOffsets","isFixed","floatingOffsetParent","_win$visualViewport","_win$visualViewport2","win","visualViewport","offsetLeft","offsetTop","includeScale","isFixedStrategy","offsetParent","clientRect","scale","visualOffsets","offsetWin","currentIFrame","frameElement","iframeScale","iframeRect","clientLeft","paddingLeft","clientTop","paddingTop","getDocumentElement","documentElement","getNodeScroll","scrollLeft","scrollTop","pageXOffset","pageYOffset","getWindowScrollBarX","getParentNode","assignedSlot","parentNode","host","getOverflowAncestors","list","scrollableAncestor","getNearestOverflowAncestor","body","isBody","getClientRectFromClippingAncestor","clippingAncestor","clientWidth","clientHeight","visualViewportBased","getViewportRect","scroll","scrollWidth","scrollHeight","getDocumentRect","getInnerBoundingClientRect","hasFixedPositionAncestor","stopNode","position","getTrueOffsetParent","polyfill","getOffsetParent","currentNode","getContainingBlock","getRectRelativeToOffsetParent","isOffsetParentAnElement","offsets","offsetRect","platform","getClippingRect","boundary","rootBoundary","clippingAncestors","cache","cachedResult","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingElementAncestors","firstClippingAncestor","clippingRect","accRect","right","convertOffsetParentRelativeRectToViewportRelativeRect","getDimensions","reference","floating","getOffsetParentFn","getDimensionsFn","getClientRects","isRTL","autoUpdate","update","ancestorScroll","ancestorResize","elementResize","ResizeObserver","layoutShift","IntersectionObserver","animationFrame","referenceEl","ancestors","passive","cleanupIo","onMove","timeoutId","io","root","cleanup","clearTimeout","disconnect","refresh","skip","threshold","rootMargin","isFirstUpdate","handleObserve","entries","ratio","intersectionRatio","setTimeout","observe","observeMove","frameId","reobserveFrame","resizeObserver","firstEntry","unobserve","cancelAnimationFrame","prevRefRect","frameLoop","nextRefRect","computePosition","mergedOptions","platformWithCache","parseSpan","spanValidator","colspan","rowspan","stackedHeading","BTd","getBvTableTr","bvTableTr","inTbody","inThead","inTfoot","isDark","hasStickyHeader","isStickyColumn","rowVariant","headOrFoot","computedColspan","computedRowspan","isStackedCell","cellClasses","cellAttrs","ITEM_CLASS","BLink","_this$item","_this$item2","href","to","isLink","is","extraAttrs","_item$action","_this$item3","_this$item3$extraAttr","_this$item4","_this$item4$extraAttr","_this$item$wrapperCla","_this$item5","wrapperClass","isCustomContent","MouseEvent","bubbles","cancelable","dispatchEvent","listIndex","wrapperListeners","itemComponent","componentIndex","sides","alignments","placements","acc","side","oppositeSideMap","oppositeAlignmentMap","clamp","evaluate","param","getSide","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getOppositeAxisPlacements","flipAlignment","isStart","lr","rl","tb","bt","getSideList","getPaddingObject","padding","expandPaddingObject","rectToClientRect","hasOwnProperty","BTh","extends","doc","loc","definitionRefs","findOperation","i","definitions","def","refs","collectFragmentReferences","kind","selectionSet","selections","selection","variableDefinitions","operationName","newDoc","opRefs","allRefs","newRefs","refName","prevRefs","childRef","oneQuery","createWrap","guard","BDropdownHeader","tbodyTransitionHandlers","tbodyTransitionProps","BTbody","isTbody","tbodyProps","tbodyAttrs","isTransitionGroup","detailsTdClass","tbodyTrAttr","tbodyTrClass","tbodyRowMixin","tdValue","thValue","getFieldFormatter","hasDetailsSlot","tbodyRowEventStopped","emitTbodyRowEvent","rowIndex","isRowHeader","formatted","getFormattedValue","cellTag","cellVariant","getTdValues","tdClass","tdAttr","unformatted","toggleDetails","toggleDetailsFactory","detailsShowing","supportsSelectableRows","rowSelected","isRowSelected","selectRow","unselectRow","slotName","$_bodyFieldSlotNameCache","$childNodes","striped","hasSelectableRowClick","rowShowDetails","hasRowClickHandler","$rows","detailsId","safeId","$tds","renderTbodyRowCell","ariaRowIndex","primaryKeyValue","rowKey","rowId","selectableClasses","selectableRowClasses","selectableAttrs","selectableRowAttrs","userTrClasses","userTrAttrs","mouseenter","rowHovered","mouseleave","rowUnhovered","detailsScope","$details","userDetailsTrClasses","userDetailsTrAttrs","getCellSlotName","tbodyClass","tbodyMixin","tbody","trs","tr","getTbodyTrs","getTbodyTrIndex","tabIndex","onTBodyRowClicked","shiftKey","which","renderBusy","renderTopRow","renderEmpty","renderBottomRow","$busy","defaultSlotName","lowercaseSlotName","renderTbodyRow","auxclick","onTbodyRowMiddleMouseRowClicked","contextmenu","onTbodyRowContextmenu","dblclick","onTbodyRowDblClicked","onTbodyRowKeydown","$props","flatRest","GlClearIconButton","focusInput","inputListeners","stopPropagation","clearInput","nameId","GROUP_TOP_BORDER_CLASSES","HEADER_ITEMS_BORDER_CLASSES","GlListboxItem","GlListboxGroup","GlSearchBoxByType","GlListboxSearchInput","GlLoadingIcon","GlIntersectionObserver","selected","multiple","headerText","isCheckCentered","searchable","searching","infiniteScroll","totalItems","infiniteScrollLoading","noResultsText","searchPlaceholder","resetButtonLabel","showSelectAllButtonLabel","srOnlyResultsLabel","selectedValues","listboxId","searchStr","topBoundaryVisible","bottomBoundaryVisible","hasItems","listboxTag","_this$flattenedOption","sort","showNoResultsText","showSelectAllButton","toggleClasses","hasSelection","footer","newSelected","observeScroll","_this$scrollObserver","scrollObserver","groupClasses","_this$selectedIndices","focusSearchInput","selectedIndices","isSearchInput","matches","_this$$refs$list","searchBox","isSelected","onMultiSelect","onSingleSelect","selectedValue","searchTerm","_this$scrollObserver2","observer","_entry$target","$__visibilityProp","isIntersecting","topBoundary","bottomBoundary","listboxToggleText","toggleButtonClasses","headerId","onResetButtonClicked","onSelectAllButtonClicked","_k","listboxClasses","itemTag","hasHeader","isFocused","onSelect","listboxItemMoreItemsAriaAttributes","onIntersectionObserverAppear","hasFooter","SetCache","arrayIncludes","arrayIncludesWith","cacheHas","isCommon","seen","outer","seenIndex","baseIsMap","nodeIsMap","svgPath","svgHeight","primaryButtonLink","primaryButtonText","secondaryButtonLink","secondaryButtonText","compact","invertInDarkMode","contentClass","shouldPreventImageReflow","contentClasses","getObserver","$_gl_intersectionHandler","$_gl_intersectionObserver","names","BORDER_CLASSES","bordered","borderPosition","_this$group","showHeader","borderClass","groupLabeledBy","getSymbols","FilteredSearchBar","UrlSync","projectPath","mapState","selectedMilestone","milestones","selectedLabelList","labels","selectedList","milestonesData","labelsData","MilestoneToken","initialMilestones","fetchMilestones","LabelToken","defaultLabels","initialLabels","fetchLabels","filterToQueryObject","milestone_title","label_name","initialFilterValue","prepareTokens","mapActions","handleFilter","filters","milestone","processFilters","setFilters","GlAvatarLink","GlAvatarsInline","GlTooltipDirective","approvers","hasMultipleApprovers","hasSingleApprover","firstApprover","approversBadgeSrOnlyText","web_url","avatar_url","GlTableLite","GlLink","ApproversColumn","getTimeAgoString","createdAt","timeAgo","_escape","getTimeago","showReviewTime","formatReviewTime","hours","lessThan","tableHeaderFields","mergeRequests","iid","created_at","commits_count","diff_stats","additions","deletions","GlBadge","GlPagination","GlEmptyState","FilterBar","MergeRequestTable","newMergeRequestUrl","emptyStateSvgPath","isLoading","pageInfo","total","page","newVal","setPage","fetchMergeRequests","created","setProjectId","dispatch","Promise","all","commit","rootState","filterBarQuery","project_id","API","response","normalizedHeaders","normalizeHeaders","parseIntPagination","catch","createAlert","namespaced","errorCode","actions","mutations","Vue","use","Vuex","createStore","Store","modules","getElementById","milestonePath","labelsPath","dataset","store","milestonesEndpoint","labelsEndpoint","projectEndpoint","extractFilterQueryParameters","location","CodeAnalyticsApp","initCodeReviewAnalyticsApp","GlButtonGroup","GlCollapsibleListbox","sortOptions","isAscending","sortDirectionToolTip","dropdownClass","dropdownToggleClass","sortDirectionToggleClass","newDirection","onSortByChanged","sortDirectionText","localSortDirection","toggleSortDirection","GlFormInput","borderless","attributes","onInput","focusin","onFocusin","focusout","onFocusout","_this$$refs$input","_this$$refs$clearButt","clearButton","relatedTarget","isInputOrClearButton","inputAttributes","showClearButton","backgroundColor","tooltipPlacement","scoped","showCloseButton","splitScopedLabelIndex","textColorVariant","light","labelTitle","onClick","labelComponent","scopedKey","scopedValue","onClose","tooltipTarget","hasListenerMixin","$events","_events","HISTORY_PUSH_UPDATE_METHOD","HISTORY_REPLACE_UPDATE_METHOD","URL_SET_PARAMS_STRATEGY","URL_MERGE_PARAMS_STRATEGY","urlParamsUpdateStrategy","historyUpdateMethod","handler","newQuery","updateQuery","mounted","handlePopState","beforeDestroy","setUrlParams","mergeUrlParams","spreadArrays","historyPushState","historyReplaceState","_this$$scopedSlots$de","_this$$scopedSlots","filterBySearchTerm","filterByKey","toYmd","date","source_branch_name","selectedSourceBranch","target_branch_name","selectedTargetBranch","author_username","selectedAuthor","assignee_username","selectedAssigneeList","urlQueryToFilter","extractPaginationQueryParameters","getDataZoomOption","maxItemsPerPage","dataZoom","intervalEnd","ceil","removeFlash","_document$querySelect","querySelector","formatAsPercentageWithoutSymbol","decimalValue","secondsToDays","seconds","SECONDS_IN_DAY","scaledValueForDisplay","units","prepareMetricValue","identifier","rawMetricToMetricTile","metric","metricRest","metadataRest","generateValueStreamsDashboardLink","namespacePath","isProjectNamespace","formattedNamespacePath","gon","relative_url_root","joinPaths","extractVSAFeaturesFromGON","_gon","_gon2","_gon3","cycleAnalyticsForGroups","licensed_features","cycleAnalyticsForProjects","groupLevelAnalyticsDashboard","extractQueryResponseFromNamespace","resultKey","project","CLONE_DEEP_FLAG","baseIsRegExp","nodeIsRegExp","BTr","bvTableRowGroup","isRowDark","trClasses","trAttrs","baseProperty","getSymbolsIn","BaseToken","defaultMilestones","namespace","isProject","WORKSPACE_PROJECT","WORKSPACE_GROUP","fetchMilestonesQuery","fetchMilestonesBySearchTerm","getActiveMilestone","_this","getMilestoneTitle","stripQuotes","_this2","$apollo","searchMilestonesQuery","variables","fullPath","_data$_this2$namespac","_this3","uniqueData","current","shouldSkipSort","finally","viewTokenProps","activeTokenValue","defineProperty","ex","_typeof","iterator","_toConsumableArray","arr2","_arrayWithoutHoles","iter","_iterableToArray","_nonIterableSpread","inBrowser","pick","transports","targets","sources","wormhole","extend","trackInstances","transport","passengers","_transport$order","order","newTransport","freeze","compareFn","$_getTransportIndex","newTransports","c","force","registerTarget","vm","unregisterTarget","$delete","registerSource","unregisterSource","hasTarget","hasSource","hasContentFor","_id","slim","slotProps","random","sendUpdate","updated","clear","closer","normalizeSlots","normalizeOwnChildren","slotContent","Tag","transition","firstRender","ownTransports","oldVal","temp","newPassengers","combinePassengers","noWrapper","_id$1","portalProps","targetProps","MountingPortal","bail","mountTo","targetSlim","targetSlotProps","targetTag","portalTarget","mountEl","createElement","appendChild","_props","parent","$parent","propsData","error","removeChild","$destroy","manual","install","Vue$$1","portalTargetName","MountingPortalName","Wormhole","dataView","buffer","byteOffset","byteLength","limits","xs","sm","md","linkGen","prevPage","prevText","nextPage","nextText","ellipsisText","labelNav","labelFirstPage","labelPrevPage","labelNextPage","labelLastPage","labelPage","align","breakpoint","getBreakpointSize","minTotalPagesToCollapse","totalPages","isCompactPagination","paginationLimit","fill","classes","center","isFillAlign","diff","maxAdjacentPages","firstPage","shouldCollapseLeftSide","lastPage","shouldCollapseRightSide","getPageItem","getEllipsisItem","pageIsDisabled","prevPageIsDisabled","labelForPage","nextPageIsDisabled","isLinkBased","setBreakpoint","commonAttrs","isActivePage","isDisabled","handleClick","slotData","wrapperClasses","prevPageAriaLabel","prevPageHref","handlePrevious","nextPageAriaLabel","nextPageHref","handleNext","BASE_DROPDOWN_CLASS","Outside","ariaHaspopup","ariaLabelledby","mainAxis","openedYet","visible","baseDropdownId","_this$toggleText","hasNoVisibleToggleText","isIconOnly","toggleLabelledBy","isEllipsisButton","isCaretOnly","isDefaultToggle","buttonTextClasses","toggleButtonTextClasses","ariaAttributes","toggleOptions","_this$$refs$toggle","firstElementChild","middleware","allowedPlacements","_this$nonScrollableCo","availableHeight","contentsEl","contentsAvailableHeight","nonScrollableContentHeight","maxHeight","toggleElement","setAttribute","checkToggleFocusable","stopFloating","calculateNonScrollableAreaHeight","MutationObserver","childList","subtree","stopAutoUpdate","async","floatingUIConfig","_this$observer","_this$stopAutoUpdate","prevented","startFloating","hadFocusWithin","activeElement","hasToggled","focusToggle","toggleOnEnter","toggleOnSpace","scrollableArea","floatingElementBoundingBox","scrollableAreaBoundingBox","toggleComponent","toggleAttributes","toggleListeners","panelClasses","baseUniq","setEndpoints","groupEndpoint","fetchBranches","branches","searchTitle","search_title","fetchUser","errorMessage","fetchUserPromise","projectUsers","groupMembers","fetchAuthors","fetchAssignees","initialize","initialFilters","selectedSourceBranchList","selectedTargetBranchList","selectedAuthorList","selectedMilestoneList","selectedAssignee","selectedLabel","authors","assignees","caption","captionHtml","captionMixin","$caption","hasCaptionSlot","captionId","GlDisclosureDropdown","GlFormInputGroup","clearable","recentSearchesHeader","closeButtonTitle","clearRecentSearchesText","noRecentSearchesText","blur","emitClearHistory","selectHistoryItem","computeCoordsFromPlacement","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","validMiddleware","getElementRects","statefulPlacement","middlewareData","resetCount","nextX","nextY","reset","initialPlacement","detectOverflow","_await$platform$isEle","elementContext","altBoundary","paddingObject","clippingClientRect","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","shouldAddOffset","alignmentOffset","centerOffset","autoPlacement","_middlewareData$autoP","_middlewareData$autoP2","_placementsThatFitOnE","crossAxis","autoAlignment","detectOverflowOptions","placements$1","getPlacementList","currentPlacement","alignmentSides","currentOverflows","allOverflows","overflows","nextPlacement","placementsSortedByMostSpace","resetPlacement","flip","_middlewareData$arrow","_middlewareData$flip","checkMainAxis","checkCrossAxis","fallbackPlacements","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","initialSideAxis","isBasePlacement","hasFallbackAxisSideDirection","overflowsData","_middlewareData$flip2","_overflowsData$filter","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","hide","referenceHiddenOffsets","referenceHidden","escapedOffsets","escaped","getBoundingRect","minX","minY","nativeClientRects","clientRects","sortedRects","groups","prevRect","getRectsByLine","fallback","resetRects","firstRect","lastRect","isTop","isLeftSide","maxRight","minLeft","measureRects","_middlewareData$offse","diffCoords","mainAxisMulti","crossAxisMulti","rawValue","convertValueToCoords","limiter","mainAxisCoord","crossAxisCoord","maxSide","limitedCoords","enabled","limitShift","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","_state$middlewareData","_state$middlewareData2","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","captionTop","hover","noBorderCollapse","outlined","responsive","small","tableClass","tableRendererMixin","isTableSimple","selectableTableClasses","stackedTableClasses","computedBusy","selectableTableAttrs","ariaAttrs","renderCaption","renderColgroup","renderTbody","renderTfoot","$table","tableClasses","tableAttrs","wrapperStyles","baseSlice","BTableLite","stickyHeaderClass","localTableClass","regexp","toggleSelection","checkedClasses"],"mappings":"kHAsBAA,EAAOC,QAJP,SAAcC,GACZ,OAAQA,GAASA,EAAMC,OAAUD,EAAM,QAAKE,I,uBCnB9C,IAAIC,EAAY,EAAQ,QACpBC,EAAe,EAAQ,QAmD3BN,EAAOC,QAJP,SAAkBM,GAChB,OAAOD,EAA4B,mBAARC,EAAqBA,EAAOF,EAAUE,EA7C7C,M,oCCJtB,0KAKA,MAAMC,EAAW,CAACC,EAAGC,IAAMD,EAAIC,EAMzBC,EAAM,WACV,IAAK,IAAIC,EAAOC,UAAUV,OAAQW,EAAU,IAAIC,MAAMH,GAAOI,EAAO,EAAGA,EAAOJ,EAAMI,IAClFF,EAAQE,GAAQH,UAAUG,GAE5B,OAAOF,EAAQG,OAAOT,IAOlBU,EAAU,WACd,OAAOP,KAAOE,WAAaA,UAAUV,QAkBvC,SAASgB,EAAOC,EAAGC,GACjB,MAAMC,GAAUF,EAAIC,EAAUA,GAAWA,EAEzC,OAAkB,IAAXC,EAAe,EAAIA,EAS5B,MAAMC,EAAsB,SAAUC,GACpC,IAAIC,EAAYZ,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,GAAmBA,UAAU,GAAK,EACpF,MAAMa,EAAgB,CAACC,IAAKC,KAAWA,KACjCC,EAAMC,OAAON,GACnB,GAAIE,EAAcK,SAASF,IAAQH,EAAcK,SAASD,OAAOL,IAC/D,OAAOI,EAAIG,WAEb,MAAMC,EAAc,CAClB,MAAO,IACP,MAAO,IACP,MAAO,IACP,MAAO,IACP,MAAO,IACP,KAAM,IACN,KAAM,IACN,KAAM,IACNC,EAAG,GACHC,EAAG,IACHC,EAAG,IACHC,EAAG,IACHC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,IACJC,GAAI,KAEAC,EAAsBd,EAAIe,cAAcnB,GACxCoB,EAAQF,EAAoBG,MAAM,KAAKC,IAAIjB,QAAQ,IAAM,EAC/D,GAAIe,GAAS,IAAMA,EAAQ,GACzB,OAAOF,EAET,MAAMK,EAAc,EAAIC,KAAKC,MAAML,EAAQ,GACrCM,GAAkBR,EAAsB,IAAMK,GAElDI,QAAQ3B,GAET4B,QAAQ,gBAAiB,CAACC,EAAGC,IACxBA,EACK,IAAIA,EAEN,IAET,MAAO,GAAGJ,IAAiBlB,EAAYe,MAmBnCQ,EAAuB,SAAUhC,GACrC,IAAIiC,EAAU5C,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,GAAmBA,UAAU,GAAK,GAC9E6C,EAAU7C,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,GAAmBA,UAAU,QAAKT,EAClF,OAAI0B,OAAO6B,MAAM7B,OAAON,IACfA,EAEF,IAAIoC,KAAKC,aAAaH,EAASD,GAASK,OAAOtC,IAKlDuC,EAAU,SAAUvC,GACxB,IAAIwC,EAAenD,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,GAAmBA,UAAU,GAAKc,IACvF,MAAMsC,EAAQC,WAAW1C,GACzB,OAAOM,OAAO6B,MAAMM,GAASD,EAAeC,I,uBChI9C,IAAIE,EAAQ,EAAQ,QAChBC,EAAY,EAAQ,QACpBC,EAAc,EAAQ,QACtBC,EAAa,EAAQ,QACrBC,EAAe,EAAQ,QACvBC,EAAc,EAAQ,QACtBC,EAAY,EAAQ,QACpBC,EAAc,EAAQ,QACtBC,EAAgB,EAAQ,QACxBC,EAAa,EAAQ,QACrBC,EAAe,EAAQ,QACvBC,EAAS,EAAQ,QACjBC,EAAiB,EAAQ,QACzBC,EAAiB,EAAQ,QACzBC,EAAkB,EAAQ,QAC1BC,EAAU,EAAQ,QAClBC,EAAW,EAAQ,QACnBC,EAAQ,EAAQ,QAChBC,EAAW,EAAQ,QACnBC,EAAQ,EAAQ,QAChBC,EAAO,EAAQ,QACfC,EAAS,EAAQ,QAqCjBC,EAAgB,GACpBA,EA9Bc,sBA8BWA,EA7BV,kBA8BfA,EAfqB,wBAeWA,EAdd,qBAelBA,EA9Bc,oBA8BWA,EA7BX,iBA8BdA,EAfiB,yBAeWA,EAdX,yBAejBA,EAdc,sBAcWA,EAbV,uBAcfA,EAbe,uBAaWA,EA5Bb,gBA6BbA,EA5BgB,mBA4BWA,EA3BX,mBA4BhBA,EA3BgB,mBA2BWA,EA1Bd,gBA2BbA,EA1BgB,mBA0BWA,EAzBX,mBA0BhBA,EAhBe,uBAgBWA,EAfJ,8BAgBtBA,EAfgB,wBAeWA,EAdX,yBAcsC,EACtDA,EArCe,kBAqCWA,EApCZ,qBAqCdA,EA5BiB,qBA4BW,EA8F5BzF,EAAOC,QA5EP,SAASI,EAAUmB,EAAOkE,EAASC,EAAYC,EAAKC,EAAQC,GAC1D,IAAIxE,EACAyE,EAnEgB,EAmEPL,EACTM,EAnEgB,EAmEPN,EACTO,EAnEmB,EAmEVP,EAKb,GAHIC,IACFrE,EAASuE,EAASF,EAAWnE,EAAOoE,EAAKC,EAAQC,GAASH,EAAWnE,SAExDpB,IAAXkB,EACF,OAAOA,EAET,IAAK+D,EAAS7D,GACZ,OAAOA,EAET,IAAI0E,EAAQhB,EAAQ1D,GACpB,GAAI0E,GAEF,GADA5E,EAASyD,EAAevD,IACnBuE,EACH,OAAOtB,EAAUjD,EAAOF,OAErB,CACL,IAAI6E,EAAMrB,EAAOtD,GACb4E,EA9EM,qBA8EGD,GA7EJ,8BA6EsBA,EAE/B,GAAIhB,EAAS3D,GACX,OAAOgD,EAAYhD,EAAOuE,GAE5B,GA/EY,mBA+ERI,GAxFM,sBAwFcA,GAAmBC,IAAWP,GAEpD,GADAvE,EAAU0E,GAAUI,EAAU,GAAKnB,EAAgBzD,IAC9CuE,EACH,OAAOC,EACHrB,EAAcnD,EAAO+C,EAAajD,EAAQE,IAC1CkD,EAAYlD,EAAO8C,EAAWhD,EAAQE,QAEvC,CACL,IAAKiE,EAAcU,GACjB,OAAON,EAASrE,EAAQ,GAE1BF,EAAS0D,EAAexD,EAAO2E,EAAKJ,IAIxCD,IAAUA,EAAQ,IAAI3B,GACtB,IAAIkC,EAAUP,EAAMQ,IAAI9E,GACxB,GAAI6E,EACF,OAAOA,EAETP,EAAMS,IAAI/E,EAAOF,GAEbgE,EAAM9D,GACRA,EAAMgF,SAAQ,SAASC,GACrBnF,EAAOoF,IAAIrG,EAAUoG,EAAUf,EAASC,EAAYc,EAAUjF,EAAOsE,OAE9DV,EAAM5D,IACfA,EAAMgF,SAAQ,SAASC,EAAUb,GAC/BtE,EAAOiF,IAAIX,EAAKvF,EAAUoG,EAAUf,EAASC,EAAYC,EAAKpE,EAAOsE,OAIzE,IAIIa,EAAQT,OAAQ9F,GAJL6F,EACVD,EAASnB,EAAeD,EACxBoB,EAASR,EAASD,GAEkB/D,GASzC,OARA4C,EAAUuC,GAASnF,GAAO,SAASiF,EAAUb,GACvCe,IAEFF,EAAWjF,EADXoE,EAAMa,IAIRpC,EAAY/C,EAAQsE,EAAKvF,EAAUoG,EAAUf,EAASC,EAAYC,EAAKpE,EAAOsE,OAEzExE,I,oCClKT,kDAaO,SAASsF,EAAwBC,EAAYC,GAClD,MAAMC,EAAcF,EAAWG,UAAYH,EAAWI,QAChDC,EAAcJ,EAAWE,UAAYF,EAAWG,QAChDE,EAAWJ,EAAcK,aAAQL,GAAe,KAChDM,EAAWH,EAAcE,aAAQF,GAAe,KAChDI,EAAWT,EAAWU,SAAWC,KAAKC,OAAQN,aAAQ,EAARA,EAAUO,WACxDC,EAAWb,EAAWS,SAAWC,KAAKC,OAAQJ,aAAQ,EAARA,EAAUK,WAG9D,OAAIJ,EAAiB,EACjBK,GAAkB,EAGjBR,EACAE,EAGEF,EAAWE,GAHK,EADD,I,uBC1BxB,IAAIO,EAAY,EAAQ,QACpBC,EAAa,EAAQ,QACrBC,EAAc,EAAQ,QAe1B9H,EAAOC,QANP,SAAoB8H,GAClB,OAAOF,EAAWE,GACdD,EAAYC,GACZH,EAAUG,K,oCCdhB,wCAIe,QACVC,IACHC,YAAa,8BACbC,aAAc,0BACdC,mBAAoB,iCACpBC,eAAgB,2CAChBC,iBAAkB,mDAClBC,cAAe,iCACfC,wBAAyB,sCACzBC,wBAAyB,sDACzBC,+BAAgC,8DAChCC,4BAA6B,2DAC7BC,cAAe,eACfC,kBAAmB,oBACnBC,gBAAiB,gCACjBC,SAAU,yDACVC,0BAA2B,2CAC3BC,kBAAmB,oCACnBC,wBAAyB,4CACzBC,4BAA6B,gDAC7BC,qBAAsB,mDACtBC,wCACE,4DACFC,kBAAmB,yCACnBC,sBAAuB,6DACvBC,2BACE,uEACFC,wBAAyB,iEACzBC,0BAA2B,yDAC3BC,uBACE,6GACFC,yBAA0B,8DAC1BC,kBAAmB,sDACnBC,iBAAkB,qDAClBC,WAAY,2DACZC,iBAAkB,wBAElBC,iBAAiBC,GACf,MAAMC,EAAMlC,IAAImC,SAASC,KAAK/B,kBAAkBhF,QAAQ,MAAOgH,mBAAmBJ,IAElF,OAAOK,IAAMhE,IAAI4D,IAGnBK,WAAWC,EAAOC,EAAUC,GAC1B,MAAMR,EAAMlC,IAAImC,SAASC,KAAKhC,gBAAgB/E,QAAQ,YAAaoH,GACnE,OAAOH,IACJhE,IAAI4D,EAAK,CACRS,OAAQ,CACNC,OAAQJ,EACRK,SAAUC,IACVC,QAAQ,KAGXC,MAAK,UAAC,KAAEC,IAGP,OAFAP,EAASO,GAEFA,MAIbC,iBAAgB,aAAEC,EAAY,QAAEC,EAAO,aAAEC,EAAY,MAAEC,IACrD,MAAMpB,EAAMlC,IAAImC,SAASC,KAAK9B,eAAejF,QAAQ,MAAOgH,mBAAmBe,IAE/E,OAAOd,IAAMiB,KAAKrB,EAAK,CACrBsB,UAAWH,EACXF,eACAG,WAIJG,kBAAiB,QAAEL,EAAO,OAAER,IAC1B,MAAMV,EAAMlC,IAAImC,SAASC,KAAKjB,sBAAsB9F,QAAQ,YAAa+H,GAEzE,OAAOd,IAAMhE,IAAI4D,EAAK,CACpBS,OAAQ,CACNC,aAKNc,oBAAoBf,EAAS,IAC3B,MAAMT,EAAMlC,IAAImC,SAASC,KAAK7B,yBAC9B,OAAO+B,IAAMhE,IAAI4D,EAAK,CAAES,YAG1BgB,gCAAgCC,GAC9B,MAAM1B,EAAMlC,IAAImC,SAASC,KAAK3B,gCAC9B,OAAO6B,IAAMhE,IAAI4D,EAAK,CAAES,OAAQ,CAAEkB,WAAYD,MAGhDE,yBAAyBF,GACvB,MAAM1B,EAAMlC,IAAImC,SAASC,KAAK5B,yBAC9B,OAAO8B,IAAMhE,IAAI4D,EAAK,CAAES,OAAQ,CAAEkB,WAAYD,MAGhDG,6BAA6BH,GAC3B,MAAM1B,EAAMlC,IAAImC,SAASC,KAAK1B,6BAC9B,OAAO4B,IAAMhE,IAAI4D,EAAK,CAAES,OAAQ,CAAEkB,WAAYD,MAGhDI,iBACE,MAAM9B,EAAMlC,IAAImC,SAASC,KAAKzB,eAC9B,OAAO2B,IAAMhE,IAAI4D,IAGnB+B,YAAYC,GACV,MAAMhC,EAAMlC,IAAImC,SAASC,KAAKxB,mBAC9B,OAAO0B,IAAMhE,IAAI4D,EAAK,CAAES,OAAQ,CAAEuB,cAGpCC,uBAAuBC,GACrB,MAAMlC,EAAMlC,IAAImC,SAASC,KAAKvB,iBAC9B,OAAOyB,IAAMhE,IAAI4D,EAAK,CAAES,OAAQ,CAAEyB,SAGpCC,QAAQD,EAAItD,EAAU6B,EAAS,IAC7B,MAAMT,EAAMlC,IAAImC,SAASC,KAAKtB,UAC3BzF,QAAQ,MAAOgH,mBAAmB+B,IAClC/I,QAAQ,aAAcgH,mBAAmBvB,IAE5C,OAAOwB,IAAMhE,IAAI4D,EAAK,CAAES,YAG1B2B,sBAAsBF,EAAIG,GACxB,MAAMrC,EAAMlC,IAAImC,SAASC,KAAKrB,2BAC9B,OAAOuB,IAAMiB,KAAKrB,EAAK,CAAEkC,KAAII,eAAgBD,KAG/CE,yBAAyBL,EAAIM,GAC3B,MAAMxC,EAAMlC,IAAImC,SAASC,KAAKnB,yBAC3B5F,QAAQ,MAAO+I,GACf/I,QAAQ,UAAWqJ,GAEtB,OAAOpC,IAAMiB,KAAKrB,IAGpByC,cACE,MAAMzC,EAAMlC,IAAImC,SAASC,KAAKlC,cAC9B,OAAOoC,IAAMhE,IAAI4D,IAGnB0C,oBACE,MAAM1C,EAAMlC,IAAImC,SAASC,KAAKjC,oBAC9B,OAAOmC,IAAMhE,IAAI4D,IAGnB2C,cAAcC,GACZ,MAAM5C,EAAMlC,IAAImC,SAASC,KAAKlC,cAC9B,OAAOoC,IAAMiB,KAAKrB,EAAK4C,IAGzBC,cAAcD,GACZ,MAAM5C,EAAMlC,IAAImC,SAASC,KAAKlC,cAC9B,OAAOoC,IAAM0C,IAAI,GAAG9C,KAAO4C,EAAKV,KAAMU,IAGxCG,cAAcb,GACZ,MAAMlC,EAAMlC,IAAImC,SAASC,KAAKnC,aAAa5E,QAAQ,MAAOgH,mBAAmB+B,IAC7E,OAAO9B,IAAM4C,OAAOhD,IAGtBiD,sBAAsBC,EAAWzC,EAAS,IACxC,MAAMT,EAAMlC,IAAImC,SAASC,KAAKhB,yCAAyC/F,QACrE,MACAgH,mBAAmB+C,IAGrB,OAAO9C,IAAMhE,IAAI4D,EAAK,CAAES,YAG1B0C,wBAAuB,SAAEC,EAAQ,GAAElB,IACjC,MAAMmB,EAAkBvF,IAAImC,SAASC,KAAKd,uBACvCjG,QAAQ,MAAOgH,mBAAmB+B,IAClC/I,QAAQ,aAAcgH,mBAAmBiD,IAE5C,OAAOhD,IAAMhE,IAAIiH,IAGnBC,wBAAuB,SAAEF,EAAQ,GAAElB,EAAE,KAAEqB,EAAI,IAAEvD,EAAM,KAAI,QAAEwD,EAAU,OACjE,MAAMjK,EAAU,CAAEkK,QAAS,IAAKC,MAC1BL,EAAkBvF,IAAImC,SAASC,KAAKd,uBACvCjG,QAAQ,MAAOgH,mBAAmB+B,IAClC/I,QAAQ,aAAcgH,mBAAmBiD,IAGtCO,EAAW,IAAIC,SASrB,OARAD,EAASE,OAAO,OAAQN,GACpBvD,GACF2D,EAASE,OAAO,MAAO7D,GAErBwD,GACFG,EAASE,OAAO,WAAYL,GAGvBpD,IAAMiB,KAAKgC,EAAiBM,EAAUpK,IAG/CuK,wBAAuB,SAAEV,EAAQ,GAAElB,EAAE,QAAE6B,EAAO,IAAE/D,EAAM,KAAI,QAAEwD,EAAU,OACpE,MAAMH,EAAkBvF,IAAImC,SAASC,KAAKb,4BACvClG,QAAQ,MAAOgH,mBAAmB+B,IAClC/I,QAAQ,aAAcgH,mBAAmBiD,IACzCjK,QAAQ,YAAagH,mBAAmB4D,IAGrCJ,EAAW,IAAIC,SAQrB,OAPW,MAAP5D,GACF2D,EAASE,OAAO,MAAO7D,GAEV,MAAXwD,GACFG,EAASE,OAAO,WAAYL,GAGvBpD,IAAM0C,IAAIO,EAAiBM,IAGpCK,mBAAkB,SAAEZ,EAAQ,GAAElB,EAAE,QAAE6B,IAChC,MAAME,EAA2BnG,IAAImC,SAASC,KAAKb,4BAChDlG,QAAQ,MAAOgH,mBAAmB+B,IAClC/I,QAAQ,aAAcgH,mBAAmBiD,IACzCjK,QAAQ,YAAagH,mBAAmB4D,IAE3C,OAAO3D,IAAM4C,OAAOiB,IAGtBC,cAAchC,EAAI3I,GAChB,MAAMyG,EAAMlC,IAAImC,SAASC,KAAKf,mBAAmBhG,QAAQ,MAAOgH,mBAAmB+B,IAEnF,OAAO9B,IACJhE,IAAI4D,EAAK,CACRS,OAAQ,IACHlH,KAGNuH,MAAK,UAAC,KAAEC,IACP,OAAOA,MAIboD,oBAAmB,GAAEjC,EAAE,aAAEkC,EAAY,cAAEC,EAAa,QAAEC,EAAO,QAAEC,IAC7D,MAAMvE,EAAMlC,IAAImC,SAASC,KAAKZ,yBAC3BnG,QAAQ,MAAOgH,mBAAmB+B,IAClC/I,QAAQ,iBAAkBgH,mBAAmBiE,IAEhD,OAAOhE,IAAMiB,KAAKrB,EAAK,CACrBwE,OAAQF,EAAU,WAAa,WAC/BG,eAAgBJ,EAChBE,aAIJG,mBAAkB,GAAExC,EAAE,aAAEkC,EAAY,cAAEC,EAAa,QAAEE,IACnD,OAAOrE,KAAKiE,mBAAmB,CAAEjC,KAAIkC,eAAcC,gBAAeC,SAAS,EAAMC,aAEnFI,kBAAiB,GAAEzC,EAAE,aAAEkC,EAAY,cAAEC,EAAa,QAAEE,IAClD,OAAOrE,KAAKiE,mBAAmB,CAAEjC,KAAIkC,eAAcE,SAAS,EAAOD,gBAAeE,aAGpFK,sBAAsB1C,EAAI2C,EAAYpE,EAAS,IAC7C,MAAMT,EAAMlC,IAAImC,SAASC,KAAKX,2BAC3BpG,QAAQ,eAAgBgH,mBAAmB0E,IAC3C1L,QAAQ,MAAOgH,mBAAmB+B,IACrC,OAAO9B,IAAMhE,IAAI4D,EAAK,CAAES,YAG1BqE,2BAA2B5C,EAAI2C,EAAYE,GACzC,MAAM/E,EAAMlC,IAAImC,SAASC,KAAKX,2BAC3BpG,QAAQ,eAAgBgH,mBAAmB0E,IAC3C1L,QAAQ,MAAOgH,mBAAmB+B,IACrC,OAAO9B,IAAMiB,KAAKrB,EAAK+E,IAGzBC,2BAA2B9C,EAAI2C,EAAYE,GACzC,MAAM/E,EAAMlC,IAAImC,SAASC,KAAKT,0BAC3BtG,QAAQ,eAAgBgH,mBAAmB0E,IAC3C1L,QAAQ,MAAOgH,mBAAmB+B,IAClC/I,QAAQ,QAASgH,mBAAmB4E,EAAqBE,OAE5D,OAAO7E,IAAM0C,IAAI9C,EAAK+E,IAGxBG,2BAA2BhD,EAAI2C,GAAY,KAAEI,IAC3C,MAAMjF,EAAMlC,IAAImC,SAASC,KAAKT,0BAC3BtG,QAAQ,eAAgBgH,mBAAmB0E,IAC3C1L,QAAQ,MAAOgH,mBAAmB+B,IAClC/I,QAAQ,QAASgH,mBAAmB8E,IAEvC,OAAO7E,IAAM4C,OAAOhD,IAGtBmF,sBAAqB,MAAEC,EAAK,OAAEC,KAAWC,IACvC,MAAMtF,EAAMlC,IAAImC,SAASC,KAAKR,mBAC9B,OAAOU,IAAMiB,KAAKrB,EAAK,CAAEoF,QAAOC,SAAQC,UAG1CC,qBAAoB,MAAEH,EAAK,MAAEI,KAAUF,IACrC,MAAMtF,EAAMlC,IAAImC,SAASC,KAAKP,kBAC9B,OAAOS,IAAMiB,KAAKrB,EAAK,CAAEoF,QAAOI,QAAOF,UAGzCG,eAAc,MAAEL,EAAK,SAAEM,KAAaJ,IAClC,MAAMtF,EAAMlC,IAAImC,SAASC,KAAKN,YAC9B,OAAOQ,IAAMiB,KAAKrB,EAAK,CAAEoF,QAAOM,WAAUJ,UAG5CK,yBAAyBC,GACvB,MAAM5F,EAAMlC,IAAImC,SAASC,KAAKL,kBAC9B,OAAOO,IAAMiB,KAAKrB,EAAK,CAAE4F,S,oCCtT7B,gBAiBA,MAAMC,EAfO,CACXZ,KAAM,gBACNxI,MAAO,CAILqJ,SAAU,CACRC,KAAMC,QACNC,UAAU,EACVC,SAAS,KAab,MAeMC,EAvCR,MAuC4B,GACxB,CAAEC,OApBe,WAAa,IAAiBC,EAATnG,KAAgBoG,eAAuC,OAAvDpG,KAA0CqG,MAAMC,IAAIH,GAAa,MAAjEnG,KAA2EuG,GAAG,CAACC,MAA/ExG,KAA0F4F,SAAyB,qBAAd,YAAmCa,MAAM,CAAC,KAAO,UAAtJzG,KAAoK0G,YAAY,CAAhL1G,KAAqL2G,GAAG,YAAY,IAoBhNC,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,uMCmHf,MAAM2P,EAjKO,CACXZ,KAAM,uBACN8B,WAAY,CACVC,6BAAA,IACAC,QAAA,KAEFC,OAAQ,CAAC,iBACTC,cAAc,EACd1K,MAAO,CAIL2K,gBAAiB,CACfrB,KAAMlP,MACNoP,UAAU,GAKZpF,OAAQ,CACNkF,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKX5O,MAAO,CACLyO,KAAMsB,OACNpB,UAAU,EACVC,QAAS,KAAM,CACbnF,KAAM,MAGVuG,YAAa,CACXvB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAKXsB,sBAAuB,CACrBzB,KAAMsB,OACNpB,UAAU,EACVC,QAAS,KAAM,KAKjBuB,YAAa,CACX1B,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKXwB,aAAc,CACZ3B,KAAMlP,MACNoP,UAAU,EACVC,QAAS,IAAM,IAEjByB,eAAgB,CACd5B,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MACT0B,UAAWtQ,GAAS,CAAC,QAAS,OAAOO,SAASP,IAKhDuQ,sBAAuB,CACrB9B,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAAoB9E,OAE/B0G,SAAU,CACR/B,KAAMC,QACNC,UAAU,EACVC,SAAS,IAGb6B,SAAU,CACR,YACE,OAAO7H,KAAK8H,iBAAmBhC,QAAQ9F,KAAKoH,cAE9C,YACE,OAAOpH,KAAK8H,iBAAmBhC,QAAQ9F,KAAK5I,MAAMyJ,OAEpD,kBACE,MAAMkH,EAAS/H,KAAKkH,gBAAgBc,OAAOC,GAAS,YAAMA,EAAM/G,MAAOlB,KAAK5I,MAAMyJ,OASlF,OARIb,KAAK8H,iBAAmB9H,KAAK5I,MAAMyJ,MACrCkH,EAAOG,KAAK,IACP,IACHhH,MAAOlB,KAAK2H,wBAKTI,EAAOpP,IAAI,MAEpBwP,cAAe,CACb,MACE,OAAOnI,KAAK5I,MAAMyJ,MAEpB,IAAIA,GAOFb,KAAKoI,MAAM,QAAS,CAClBvH,WAIN,iBACE,OAAOb,KAAK4H,SAAW,GAAK,CAC1BS,UAAWrI,KAAKsI,2BAChBC,MAAOvI,KAAKwI,kBAIlBC,QAAS,CACP,cAQEzI,KAAKoI,MAAM,UAAW,CACpBM,OAAQ,OAGZ,2BAA2BC,GACrBA,EAAMC,OAAOC,QAAQ,MACvB,YAAUF,IAGd,iBACE3I,KAAKoI,MAAM,YAEb,WAAWvC,GACLA,IAAS,IAEX7F,KAAKoI,MAAM,YAGXpI,KAAKoI,MAAM,UAAW,CACpBvC,YA6CK,MAba,IACxB,CAAEK,OAtBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,MAAM,CAACyC,YAAY,oCAAoCtC,MAAM,CAAC,cAAc,yBAAyB,CAACH,EAAG,mCAAmC,CAAC0C,IAAI,UAAUD,YAAY,gCAAgCtC,MAAM,CAAC,UAAU,GAAG,OAASqC,EAAInI,OAAO,kBAAkBmI,EAAIrB,eAAe,0BAA0BqB,EAAIxB,sBAAsB,gBAAgBwB,EAAIvB,YAAY,gBAAgBuB,EAAItB,aAAa,YAAYsB,EAAIlB,SAAS,QAAUkB,EAAIG,iBAAiBC,GAAG,CAAC,SAAW,SAASC,GAAQ,OAAOL,EAAIV,MAAM,aAAa,WAAa,SAASe,GAAQ,OAAOL,EAAIV,MAAM,eAAe,SAAWU,EAAIM,WAAW,UAAYN,EAAIO,YAAY,OAAS,SAASF,GAAQ,OAAOL,EAAIV,MAAM,WAAW,MAAQ,SAASe,GAAQ,OAAOL,EAAIV,MAAM,QAASe,IAAS,SAAW,SAASA,GAAQ,OAAOL,EAAIV,MAAM,aAAa,KAAO,SAASe,GAAQ,OAAOL,EAAIV,MAAM,UAAUkB,YAAYR,EAAIS,GAAG,CAAC,CAAC/N,IAAI,OAAOgO,GAAG,SAASR,GACz+B,IAAIS,EAAQT,EAAIS,MAChB,MAAO,CAAEX,EAAa,UAAExC,EAAG,WAAWwC,EAAIvC,GAAG,CAACC,MAAM,CAAE,qBAAsBsC,EAAIlB,UAAWnB,MAAM,CAAC,YAAYqC,EAAIlB,WAAWkB,EAAIY,gBAAgB,CAACZ,EAAIa,GAAGb,EAAIc,GAAGd,EAAI1R,MAAMyJ,SAAUiI,EAAa,UAAExC,EAAG,QAAQwC,EAAIe,GAAG,CAACd,YAAY,gCAAgCvC,MAAM,CAAE,gBAAiBsC,EAAIlB,UAAWnB,MAAM,CAAC,YAAcqC,EAAI1B,YAAY,aAAaqC,EAAM,SAAWX,EAAIlB,SAAS,cAAc,8BAA8BsB,GAAG,CAAC,QAAU,SAASC,GAAQ,OAAOL,EAAIV,MAAM,aAAa,SAAW,SAASe,GAAQ,OAAOL,EAAIV,MAAM,iBAAiB,QAAQU,EAAIxB,uBAAsB,IAAQ,CAACwB,EAAIa,GAAGb,EAAIc,GAAGd,EAAI1R,MAAMyJ,aAAaqE,MAAM,CAAC9N,MAAO0R,EAAiB,cAAExI,SAAS,SAAUwJ,GAAMhB,EAAIX,cAAc2B,GAAMC,WAAW,oBAAoB,IAoBpsBnD,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GC/LJ,IAAIgU,EAAa,EACjB,SAASC,IACP,MAAO,CAAC,eAmWV,MAAM,EAjWO,CACXlF,KAAM,mBACN8B,WAAY,CACVqD,mBAAA,IACAC,OAAA,IACAC,aAAA,gBAEFC,WAAY,CACVC,UAAW,KAEb,UAGE,OAFAN,GAAc,EACdhK,KAAKuK,WAAa,kBAAkBP,EAC7B,CACLO,WAAYvK,KAAKuK,WACjBC,iBAAkBxB,GAAOhJ,KAAKwK,iBAAiBxB,GAI/CyB,qBAAsB,IAAMzK,KAAKyK,qBACjC3C,cAAe,IAAM9H,KAAK8H,gBAG9Bb,cAAc,EACd1K,MAAO,CAILnF,MAAO,CACL2O,UAAU,EACVF,KAAMlP,MACNqP,QAAS,IAAM,IAKjBkB,gBAAiB,CACfrB,KAAMlP,MACNoP,UAAU,EACVC,QAAS,IAAM,GACf,UAAU5O,GAER,IAAKA,EAAMsT,QAET,OAAO,EAIT,MAAMC,EAAOhU,MAAMmE,QAAQ1D,IAAUA,EAAMwT,MAAMC,IAC/C,IAAI,MACF5C,GACE4C,EACJ,OAAO5C,EAAM6C,WAMf,OAJKH,GAEHI,QAAQC,KAAK,2GAERL,IAMXvD,YAAa,CACXvB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,UAEXiF,iBAAkB,CAChBpF,KAAMwB,OACNtB,UAAU,EACVC,QAAS,SAEXkF,aAAc,CACZrF,KAAMlP,MACNoP,UAAU,EACVC,QAAS,MAMXyE,qBAAsB,CACpB5E,KAAM,CAACwB,OAAQ1Q,MAAOwQ,QACtBpB,UAAU,EACVC,QAAS,MAKXmF,iBAAkB,CAChBtF,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKXoF,uBAAwB,CACtBvF,KAAMsB,OACNpB,UAAU,EACVC,QAAS,KAAM,KAKjBsB,sBAAuB,CACrBzB,KAAMsB,OACNpB,UAAU,EACVC,QAAS,KAAM,KAEjB4B,SAAU,CACR/B,KAAMC,QACNC,UAAU,EACVC,SAAS,GAWX8B,cAAe,CACbjC,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKX2B,sBAAuB,CACrB9B,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAAoB9E,OAQ/BmK,iBAAkB,CAChBxF,KAAMC,QACNC,UAAU,EACVC,SAAS,IAGbnF,KAAI,KACK,CACLkH,OAAQkC,IACRqB,eAAgB,KAChBC,iBAAkB,GAClBC,uBAAwB,QAG5B3D,SAAU,CACR,cACE,OAAO7H,KAAK+H,OAAO/H,KAAKsL,iBAE1B,gBACE,OAAOtL,KAAK+H,OAAOC,OAAOC,IAAU,YAAYA,KAElD,eACE,OAAOjI,KAAK+H,OAAOhS,OAAS,GAE9B,oBACE,OAAOiK,KAAKsL,iBAAmBtL,KAAKyL,cAEtC,WACE,OAAOzL,KAAK+H,OAAOhS,OAAS,GAAmC,KAA9BiK,KAAK+H,OAAO,GAAG3Q,MAAMyJ,MAExD,kBACE,OAAOb,KAAK0L,SAAW,KAAO1L,KAAKoH,aAErC,yBACE,OAAOpH,KAAKkH,gBAAgBc,OAAOC,IAC7BA,EAAM0D,YAGN1D,EAAM2D,SACA5L,KAAK+H,OAAO8D,KAAKC,GAAKA,EAAEjG,OAASoC,EAAMpC,UAMvDkG,MAAO,CACLhE,OAAQ,CACN,UAO8B,IAAvB/H,KAAK+H,OAAOhS,QAAiBiK,KAAKgM,oBAAwBhM,KAAK4H,UAClE5H,KAAK+H,OAAOG,KAAK,eAOnBlI,KAAKoI,MAAM,QAASpI,KAAK+H,SAE3BkE,MAAM,EACNC,WAAW,GAEb9U,MAAO,CACL,QAAQ+U,EAAUC,GAChB,IAAK,IAAQD,EAAUC,GAAW,CAChC,MAAMhV,EAAQ+U,EAASpW,OAASoW,EAAWlC,IAC3CjK,KAAKqM,cAAc,IAAUjV,MAGjC6U,MAAM,EACNC,WAAW,IAGfzD,QAAS,CACP,cAAc0D,GACZnM,KAAK+H,OAAS,YAAoBoE,GAAY,YAAkBA,EAAUnM,KAAK8H,eAAiBqE,GAElG,cAAcG,GACZ,OAAOtM,KAAKsL,iBAAmBgB,GAEjC,YAAYA,GACV,OAA+B,OAAxBtM,KAAKsL,gBAA2BgB,IAAQtM,KAAKyL,cAEtD,mBACE,OAAO,YAAYzL,KAAK+H,OAAO/H,KAAKyL,gBAEtC,cAAc5F,GACZ,OAAO7F,KAAKkH,gBAAgB2E,KAAKC,GAAKA,EAAEjG,OAASA,IAEnD,kBAAkBA,GAChB,IAAI0G,EACJ,OAA6D,QAApDA,EAAsBvM,KAAKwM,cAAc3G,UAA2C,IAAxB0G,OAAiC,EAASA,EAAoBtE,QAAU,GAE/I,kBAAkBqE,GAChB,MAAO,CACL,2BAA2B,EAC3B,+BAAgCtM,KAAKuH,YAAY+E,KAAStM,KAAK4H,WAGnE,SAAS0E,GACFtM,KAAK4H,WACR5H,KAAKsL,eAAiBgB,IAG1B,wBACMtM,KAAKsL,eAAiB,IACxBtL,KAAKsL,gBAAkB,EACvBtL,KAAKwL,uBAAyB,QAGlC,oBACMxL,KAAKsL,eAAiBtL,KAAK5I,MAAMrB,SACnCiK,KAAKsL,gBAAkB,EACvBtL,KAAKwL,uBAAyB,UAGlC,iBAAiBxC,GACf,MAAMyD,EAAYzD,EAAI0D,wBAAwBC,KACxCC,EAAa5M,KAAK6M,IAAIH,wBAAwBC,KAC9CG,EAAY,cAAcjU,KAAKC,MAAM2T,EAAYG,QACvD5M,KAAKuL,iBAAmB,CACtBuB,cAGJ,WAAW7E,GACTjI,KAAKwL,uBAAyB,MAC9B,MAAMuB,EAAW/M,KAAK+H,OAAOiF,QAAQ/E,IACnB,IAAd8E,GAAmB/M,KAAKsL,iBAAmByB,IAG1C/M,KAAKgM,oBACRhM,KAAK+H,OAAOG,KAAK,gBAEdlI,KAAKiN,mBAAqB,YAAYjN,KAAKkN,cAC9ClN,KAAK+H,OAAOoF,OAAOJ,EAAU,GAE/B/M,KAAKsL,eAAiB,OAExB,aAAagB,GACX,IAAI,OACF5D,GACEjS,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,GAAmBA,UAAU,GAAK,GAC7C,IAAvBuJ,KAAK+H,OAAOhS,SAGhBiK,KAAK+H,OAAOoF,OAAOb,EAAK,GAMpB5D,IAAW,IAEb1I,KAAKsL,eAAiBzS,KAAKuU,IAAId,EAAM,EAAG,GAC/BA,EAAMtM,KAAKsL,eAEpBtL,KAAKsL,gBAAkB,EACdgB,IAAQtM,KAAKsL,iBAEtBtL,KAAKsL,eAAiB,QAK1B,aAAagB,EAAKrE,GAChBjI,KAAKqN,KAAKrN,KAAK+H,OAAQuE,EAAK,YAAc,IACrCrE,EACH7Q,MAAO,CACLyJ,KAAM,MACHoH,EAAM7Q,UAGb4I,KAAKsL,eAAiBgB,GAGxB,aAAaA,GACX,IAAIgB,EAAa7W,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,GAAmBA,UAAU,GAAK,CAAC,IACtF,IAAKuJ,KAAKiN,mBAA2C,IAAtBK,EAAWvX,QAAkC,KAAlBuX,EAAW,GAEnE,YADAtN,KAAKsL,eAAiBtL,KAAKyL,cAG7B,MAAM8B,EAAYD,EAAW3U,IAAIkI,GAAQ,YAAWA,IACpDb,KAAK+H,OAAOoF,OAAOb,EAAM,EAAG,KAAMiB,GAClCvN,KAAKsL,eAAiBgB,EAAMgB,EAAWvX,QAEzC,gBACMiK,KAAKsL,iBAAmBtL,KAAKyL,aAAe,EAC9CzL,KAAKsL,eAAiBtL,KAAKyL,aAE3BzL,KAAKsL,eAAiB,MAG1B,SAKEtL,KAAKoI,MAAM,SAAU,YAAgB,IAAUpI,KAAK+H,aAgBxD,MAeM,EAAoB,IACxB,CAAE7B,OAvBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,yBAAyBwC,EAAIe,GAAG,CAACpD,MAAM,CAAC,MAAQqC,EAAIf,OAAO,gBAAgBe,EAAIoC,aAAa,UAAYpC,EAAI4C,SAAS,2BAA2B5C,EAAIsC,uBAAuB,qBAAqBtC,EAAIuC,iBAAiB,SAAWvC,EAAIlB,SAAS,cAAc,yBAAyBsB,GAAG,CAAC,OAASJ,EAAI0E,OAAO,MAAQ1E,EAAIuD,cAAc,wBAAwB,SAASlD,GAAQ,OAAOL,EAAIV,MAAM,wBAAyBe,IAAS,MAAQ,SAASA,GAAQ,OAAOL,EAAIV,MAAM,UAAU,gBAAgB,SAASe,GAAQ,OAAOL,EAAIV,MAAM,mBAAmBkB,YAAYR,EAAIS,GAAG,CAAC,CAAC/N,IAAI,eAAegO,GAAG,SAASiE,GAAW,MAAO,CAAC3E,EAAInC,GAAG,eAAe,KAAK,KAAK8G,MAAc,CAACjS,IAAI,QAAQgO,GAAG,WAAW,MAAO,CAAClD,EAAG,MAAM,CAACyC,YAAY,0CAA0CvC,MAAM,CAC51B,6DAA8DsC,EAAIuC,iBAClE,6CAA8CvC,EAAIlB,WACjD,CAACtB,EAAG,MAAM,CAACyC,YAAY,iCAAiCD,EAAI4E,GAAI5E,EAAU,QAAE,SAASb,EAAMqE,GAAK,OAAOhG,EAAGwC,EAAI6E,kBAAkB1F,EAAMpC,MAAM,CAACrK,IAAIyM,EAAMjG,GAAGgH,IAAI,SAAS4E,UAAS,EAAK7R,IAAI,YAAYyK,MAAMsC,EAAI+E,kBAAkBvB,GAAK7F,MAAM,CAAC,OAASqC,EAAI0D,cAAcvE,EAAMpC,MAAM,OAASiD,EAAIwC,iBAAmBgB,EAAI,kBAAkBxD,EAAI0C,uBAAuB,mBAAmB1C,EAAIgF,uBAAuB,gBAAgBhF,EAAIf,OAAO,MAAQuE,EAAI,YAAcxD,EAAIiF,gBAAgB,qBAAqBjF,EAAIqC,iBAAiB,0BAA0BrC,EAAIxB,sBAAsB,YAAYwB,EAAIlB,SAAS,gBAAgBkB,EAAIvB,YAAY+E,GAAK,2BAA2BxD,EAAInB,sBAAsB,iBAAiBmB,EAAIkF,eAAe9E,GAAG,CAAC,SAAW,SAASC,GAAQ,OAAOL,EAAImF,SAAS3B,IAAM,WAAa,SAASnD,GAAQ,OAAOL,EAAIoF,WAAWjG,IAAQ,QAAU,SAASkB,GAAQ,OAAOL,EAAIqF,aAAa7B,EAAKnD,IAAS,QAAU,SAASA,GAAQ,OAAOL,EAAIsF,aAAa9B,EAAKnD,IAAS,SAAWL,EAAIuF,cAAc,OAASvF,EAAI0E,OAAO,MAAQ,SAASrE,GAAQ,OAAOL,EAAIwF,aAAahC,EAAKnD,IAAS,SAAWL,EAAIyF,sBAAsB,KAAOzF,EAAI0F,mBAAmBtJ,MAAM,CAAC9N,MAAO6Q,EAAW,MAAE3H,SAAS,SAAUwJ,GAAMhB,EAAIuE,KAAKpF,EAAO,QAAS6B,IAAOC,WAAW,oBAAmB,KAAKjB,EAAIa,GAAG,KAAKrD,EAAG,gBAAgB,CAAC9K,IAAIsN,EAAIwC,eAAetC,IAAI,OAAOyF,MAAO3F,EAAoB,iBAAErC,MAAM,CAAC,KAAOqC,EAAIyB,WAAW,KAAO,QAAQmE,OAAM,IAAO,MAAK,IAAO,yBAAyB5F,EAAI6F,QAAO,KAoBt6C/H,gBAnBA,SAGE5Q,EAkB5B,OAhBuBA,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,oCCrZf,kDAOA,MAAM4Y,EAAsB,WAC1B,IAAIC,EAAKpY,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,GAAmBA,UAAU,GAAKqY,SAC7E,MAAMC,EAAM,cACZ,SAAOA,GAAiC,KAA1BA,EAAInX,WAAWoX,QAAiBD,EAAIE,cAAgB,YAAUJ,KAAgCE,EAAIE,aAAaJ,GAAI,K,uBCVnI,IAAIK,EAAY,EAAQ,QACpBC,EAAY,EAAQ,QACpBC,EAAW,EAAQ,QAGnBC,EAAYD,GAAYA,EAASlU,MAmBjCA,EAAQmU,EAAYF,EAAUE,GAAaH,EAE/CtZ,EAAOC,QAAUqF,G,oCC1BjB,6DA4BA,MAAMyK,EAvBO,CACXZ,KAAM,kBACN8B,WAAY,CACVyI,SAAA,KAEFjF,WAAY,CACVC,UAAW,KAEb/N,MAAO,CACL2E,MAAO,CACL2E,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAAM,YAAU,wBAAyB,UAEpDuJ,iBAAkB,CAChBxJ,UAAU,EACVC,SAAS,EACT0B,UAAWtQ,IAAmB,IAAVA,GAAoC,iBAAVA,GAAsBA,aAAiBoY,eAazF,MAeMvJ,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAiBC,EAATnG,KAAgBoG,eAAuC,OAAvDpG,KAA0CqG,MAAMC,IAAIH,GAAa,YAAjEnG,KAAiFuG,GAAG,CAAC8D,WAAW,CAAC,CAACtF,KAAK,aAAa0K,QAAQ,qBAAqBrY,MAAM,CAAGsY,UAA1J1P,KAAyKuP,kBAAoBxF,WAAW,kCAAkC4F,UAAU,CAAC,OAAQ,KAAQ5G,YAAY,uBAAuBtC,MAAM,CAAC,QAAU,UAAU,SAAW,WAAW,KAAO,QAAQ,KAAO,QAAQ,KAAO,QAAQ,MAAtYzG,KAAkZkB,MAAM,aAAxZlB,KAAyakB,QAAzalB,KAAqb0G,cAoBjcE,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,uBC/Df,IAAI4Z,EAAY,EAAQ,QACpBC,EAAW,EAAQ,QAqCvBja,EAAOC,QAhBP,SAAeia,EAAQC,EAAOC,GAa5B,YAZcha,IAAVga,IACFA,EAAQD,EACRA,OAAQ/Z,QAEIA,IAAVga,IAEFA,GADAA,EAAQH,EAASG,KACCA,EAAQA,EAAQ,QAEtBha,IAAV+Z,IAEFA,GADAA,EAAQF,EAASE,KACCA,EAAQA,EAAQ,GAE7BH,EAAUC,EAASC,GAASC,EAAOC,K,oCCnC5C,oJAGA,MAAMC,EAAWC,GAAQpK,QAAQoK,KAAU,IAASA,EAAK9Y,QAAU,IAAS8Y,EAAK9Y,QAG3E+Y,EAAU,WACd,IAAI,QACF9W,GACE5C,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,GAAmBA,UAAU,GAAK,GACxE,OAAOE,MAAMmE,QAAQzB,IAAYA,EAAQuR,MAAMqF,IAE3CG,EAAkBta,GAASA,EAAMC,SAAW,IAAIsa,IAAIva,GAAOwa,KAC3DC,EAAmBC,GAASA,EAAMC,QAAQP,GAAQD,EAASC,GAAQA,EAAOA,EAAK7W,SAkB/EqX,EAAiBF,GAfSA,IAASA,EAAM5F,MAAMqF,IAAaO,EAAM5F,MAAMuF,GAe9CQ,CAAwBH,IAdhCA,IAASJ,EAAgBG,EAAiBC,GAAO7X,IAAIkS,IAC3E,IAAI,MACFzT,GACEyT,EACJ,OAAOzT,KAUyDwZ,CAAgBJ,IAN1DA,IAASJ,EAAgBI,EAAMxI,OAAOmI,GAASxX,IAAIkY,IACzE,IAAI,KACFC,GACED,EACJ,OAAOC,KAEmFC,CAAgBP,I,kFCP5G5a,EAAOC,QAJP,SAAeuB,GACb,OAAgB,MAATA,I,kICiFT,MAAMuO,EAjGO,CACXZ,KAAM,iCACNiC,OAAQ,CAAC,uBAAwB,iBACjC,UACE,MAAO,CACLgK,qCAAsChR,OAG1CzD,MAAO,CAIL0U,aAAc,CACZlL,UAAU,EACV2B,UAAW,KAAM,EACjB1B,QAAS,OAGbnF,KAAI,KACK,CACLqQ,WAtByB,EAuBzBC,gBAAiB,KAGrBtJ,SAAU,CACR,mBACE,OAAO7H,KAAKmR,gBAAgBC,UAAUlB,GAAQlQ,KAAKqR,YAAYnB,EAAK9Y,MAAO4I,KAAKiR,gBAElF,oBACE,OAAOjR,KAAKmR,gBAAgBnR,KAAKsR,mBAEnC,aACE,OAAKtR,KAAK8H,kBAjCO,IAiCY9H,KAAKkR,WAlCT,IAmCrBlR,KAAKkR,UAA6ClR,KAAKuR,kBACpDvR,KAAKmR,gBAAgBnR,KAAKkR,WAFsC,MAIzE,cACE,MAAO,CAAClR,KAAKyK,uBAAwB,sDAGzCsB,MAAO,CACL,eACE/L,KAAKkR,WA5CoB,IA+C7BzI,QAAS,CACP4I,YAAW,CAACG,EAAYC,IACJ,MAAdD,GAAqC,MAAfC,IACG,iBAAfD,GAAkD,iBAAhBC,EAA2BD,EAAWE,gBAAkBD,EAAYC,cAAgBF,IAAeC,GAErJ,SAASvB,GACPlQ,KAAKmR,gBAAgBjJ,KAAKgI,IAE5B,WAAWA,GACT,MAAM5D,EAAMtM,KAAKmR,gBAAgBnE,QAAQkD,IAC5B,IAAT5D,IACFtM,KAAKmR,gBAAgBhE,OAAOb,EAAK,GAC7BA,IAAQtM,KAAKkR,YACflR,KAAKkR,WA5DgB,KAgE3B,WACMlR,KAAK8H,gBACP9H,KAAK2R,SAAS,GAEd3R,KAAK2R,SAAS,EAAG3R,KAAKmR,gBAAgBpb,OAAS,IAGnD,WACMiK,KAAK8H,gBACP9H,KAAK2R,UAAU,GAEf3R,KAAK2R,UAAU,EAAG,IAGtB,SAASC,EAAWC,GAClB,GAAK7R,KAAK8H,iBAAoB9H,KAAKkR,YAAcW,KA/ExB,IA+EkC7R,KAAKkR,WAAwClR,KAAKsR,mBAAqBO,GAG3H,CACL,MAAMC,GAnFiB,IAmFT9R,KAAKkR,UAGnBlR,KAAKsR,iBAELtR,KAAKkR,UACLlR,KAAKkR,UAAY,YAAiBY,EAAOF,EAAW5R,KAAKmR,gBAAgBpb,aARzEiK,KAAKkR,WAhFU,GA2FnB,WACE,OAAOlR,KAAK+R,WAAa/R,KAAK+R,WAAW3a,MAAQ,QAyCxC,MAba,IACxB,CAAE8O,OApBe,WAAa,IAAiBC,EAATnG,KAAgBoG,eAAuC,OAAvDpG,KAA0CqG,MAAMC,IAAIH,GAAa,KAAK,CAACK,MAAvExG,KAAiFgS,aAAa,CAA9FhS,KAAmG2G,GAAG,YAAY,IAoB9HC,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GCnHJ,MAQMic,EAAeC,GAJEA,KACrB,IAAIC,EAAcC,EAClB,MAAuR,sBAA/QF,SAA8E,QAA/BC,EAAeD,EAAMrM,YAAmC,IAAjBsM,GAAuF,QAAnDC,EAAwBD,EAAava,gBAAgD,IAA1Bwa,OAAhJ,EAA4LA,EAAsBC,KAAKF,KAGhQG,CAAeJ,GAEVvb,MAAMmE,QAAQoX,EAAMK,UAE3BL,EAAMK,SAAS3H,MAAMqH,GAAgBA,EAAaC,EAAMK,YAbtCL,KACpB,IAAIM,EAAaC,EACjB,MAAgR,qBAAxQP,SAA6E,QAA9BM,EAAcN,EAAMrM,YAAkC,IAAhB2M,GAAoF,QAAjDC,EAAuBD,EAAY5a,gBAA+C,IAAzB6a,OAA5I,EAAuLA,EAAqBJ,KAAKG,KAa1PE,CAAcR,GAuWpB,MAAM,EA1VO,CACXnN,KAAM,+BACN8B,WAAY,CACV8L,OAAA,SACAC,+BAAA,EACAC,2BAAA,KAEF7L,OAAQ,CAAC,aAAc,mBAAoB,iBAC3CC,cAAc,EACd1K,MAAO,CAILoE,OAAQ,CACNkF,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEX8M,OAAQ,CACNjN,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEXyD,MAAO,CACL5D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,UAEX+M,YAAa,CACXlN,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEX3M,QAAS,CACPwM,KAAMlP,MACNoP,UAAU,EACVC,QAAS,IAAM,MAEjBgN,gBAAiB,CACfnN,KAAMwB,OACNtB,UAAU,EACVC,QAAS,SAEXiN,0BAA2B,CACzBpN,KAAMqN,SACNnN,UAAU,EACVC,QAAS,IAAM,KAAM,GAKvB5O,MAAO,CACL2O,UAAU,EACV2B,UAAW,KAAM,GAKnBJ,sBAAuB,CACrBzB,KAAMsB,OACNpB,UAAU,EACVC,QAAS,KAAM,KAKjBuB,YAAa,CACX1B,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEXwB,aAAc,CACZ3B,KAAMlP,MACNoP,UAAU,EACVC,QAAS,IAAM,IAEjByB,eAAgB,CACd5B,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MACT0B,UAAWtQ,GAAS,CAAC,QAAS,OAAOO,SAASP,IAEhDwQ,SAAU,CACR/B,KAAMC,QACNC,UAAU,EACVC,SAAS,IAGb,OACE,MAAO,CACLmN,cAAenT,KAAK5I,QAGxByQ,SAAU,CACR,oBACE,QAAK7H,KAAK8H,oBACL9H,KAAK3G,SACH2G,KAAK3G,QAAQ+Z,KAAKvI,IACvB,IAAI,MACFzT,GACEyT,EACJ,OAAOzT,IAAU,QAGrB,iBACE,IAAIic,EACJ,OAA0C,QAAlCA,EAAgBrT,KAAK3G,eAAuC,IAAlBga,OAA2B,EAASA,EAAcxH,KAAKyH,GAAKA,EAAElc,QAAU4I,KAAK5I,QAEjI,mBACE,OAAOT,MAAMmE,QAAQkF,KAAK5I,OAAS,IAAK4I,KAAK5I,OAAS4I,KAAK5I,OAE7Dmc,WAAY,CACV,MACE,OAAIvT,KAAK8S,OACA9S,KAAKwT,iBAEPxT,KAAKyT,eAAiBzT,KAAKyT,eAAezT,KAAKgT,iBAAmBhT,KAAKwT,kBAEhF,IAAID,GAMFvT,KAAKoI,MAAM,QAASmL,KAGxB,0BACE,IAAIG,EAEJ,OAA4C,QAAnCA,EAAiB1T,KAAK3G,eAAwC,IAAnBqa,OAA4B,EAASA,EAAe3d,SA1IvF4d,KACrB,IAAKA,EACH,OAAO,EAET,MAAMC,EAAyB,mBAATD,EAAsBA,IAASA,EAErD,QAAShd,MAAMmE,QAAQ8Y,GAAUA,EAAOhJ,MAAMqH,GAAgBA,EAAa2B,KAoI4CC,CAAe7T,KAAK8T,OAAOC,cAEhJ,wBACE,IAAIC,EACJ,IAAKhU,KAAK3G,QACR,OAAO2G,KAAKwT,iBAEd,GAAIxT,KAAK5I,MAAO,CACd,MAAM6c,EAASjU,KAAKkU,+BAA+BlU,KAAKuT,aAAevT,KAAKkU,+BAA+BlU,KAAKuT,WAAY,CAC1HY,OAAO,IAET,OAAIF,EAAeA,EAAO7c,MACtB4I,KAAKoU,kBAA0B,IAC5B,KAET,MAAMC,EAAgBrU,KAAK3G,QAAQwS,KAAKyI,GAAMA,EAAGtO,SACjD,OAAIqO,EACKA,EAAcjd,MAEhB4I,KAAK8S,QAA4D,QAAtCkB,EAAiBhU,KAAK3G,QAAQ,UAAmC,IAAnB2a,OAA3Dhe,EAAgGge,EAAe5c,OAEtI,sBACE,OAAO4I,KAAKuH,cAAgBvH,KAAKW,QAAUX,KAAKwH,aAAazR,OAAS,GAAKiK,KAAKsH,wBAGpFyE,MAAO,CACLpL,OAAQ,CACNuL,WAAW,EACX,QAAQC,GACFA,EACFnM,KAAKiO,WAELjO,KAAKkO,eAIX,WAAW/B,GACT,GAAInM,KAAK8H,gBAAiB,OAC1B,GAAI9H,KAAK+S,YAAa,OAYtB,GAAwB,iBAAb5G,EAAuB,OAClC,MAAMoI,EAAmBpI,EAASzT,MAAM,KAAK3C,OAAS,GAAM,EAC5D,IAA+B,IAA3BoW,EAASa,QAAQ,MAAeuH,EAClC,OAEF,MAAOC,KAAcC,GAAc,YAActI,GAAUnE,OAAO,CAAC0M,EAAGpI,EAAKqI,IAAQ7O,QAAQ4O,IAAMpI,IAAQqI,EAAI5e,OAAS,GACtHiK,KAAKoI,MAAM,QAASoM,GAChBC,EAAW1e,QAKbiK,KAAKoI,MAAM,QAASqM,KAI1BhM,QAAS,CACP,eAAemM,GACTA,EAAEC,SAAW,KAAsB7U,KAAKW,SAI1CX,KAAKoI,MAAM,YACXwM,EAAEE,mBAGN,+BAA+BvB,GAC7B,IAAIwB,EACJ,IAAI,MACFZ,GACE1d,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,GAAmBA,UAAU,GAAK,CACtE0d,OAAO,GAET,OAA2C,QAAnCY,EAAiB/U,KAAK3G,eAAwC,IAAnB0b,OAA4B,EAASA,EAAelJ,KAAKoI,GAAUE,EAAQ,YAAMF,EAAOjU,KAAKgT,iBAAkBO,GAAcU,EAAOjU,KAAKgT,mBAAqBO,IAEnN,WACEvT,KAAKmT,cAAgBnT,KAAK5I,MAC1B4I,KAAKgV,UAAU,KACb,MAAM,MACJ1P,GACEtF,KAAKiV,MACL3P,IACFA,EAAM4P,QACN5P,EAAM6P,eAAe,CACnBC,MAAO,UACPC,OAAQ,QAEVrV,KAAKwK,iBAAiBlF,GACM,UAAxBtF,KAAKyH,iBACPnC,SAA8CA,EAAMgQ,kBAAkB,EAAG,QAKjF,aACE,IAAIC,EACCvV,KAAK3G,UAAW2G,KAAK8S,SAG4B,QAAhDyC,EAAuBvV,KAAKyT,sBAAqD,IAAzB8B,OAAkC,EAASA,EAAqBne,SAAW4I,KAAK5I,OAC5I4I,KAAKoI,MAAM,QAASpI,KAAKmT,gBAG7B,gBAAgBqC,GACd,MAAMC,EAA0BzV,KAAK8H,gBAAkB0N,EAAiB,YAAkBA,GAO1FxV,KAAKoI,MAAM,SAAUqN,GAChBzV,KAAK+S,cACR/S,KAAKoI,MAAM,QAASqN,IAA4B,IAAkBzV,KAAKuT,WAAakC,GACpFzV,KAAKoI,MAAM,WAAYqN,KAG3B,mBAAmBb,GACjB,MAAM,IACJpZ,GACEoZ,GACE,YACJb,EAAW,MACXzO,GACEtF,KAAKiV,MACHO,EAAiBzB,aAAiD,EAASA,EAAY2B,WACvFC,EAAW,CACfC,UAAW,KACoB,IAAzBtQ,EAAMuQ,iBACRjB,EAAEE,iBACF9U,KAAKoI,MAAM,cAGf0N,WAAY,KACNxQ,EAAMyQ,eAAiB/V,KAAKuT,WAAWxd,SACzC6e,EAAEE,iBACF9U,KAAKoI,MAAM,UAGf4N,UAAW,KACe,KAApBhW,KAAKuT,aACPqB,EAAEE,iBAIF9U,KAAKoI,MAAM,eAGf6N,MAAO,KACLrB,EAAEE,iBACoB,MAAlBU,EACFxV,KAAKkW,gBAAgBV,GAKrBxV,KAAKoI,MAAM,WAGf,IAAK,KACmB,MAAlBoN,IACFZ,EAAEE,iBACF9U,KAAKkW,gBAAgBV,KAGzBW,OAAQ,KACNvB,EAAEE,iBAIF9U,KAAKoI,MAAM,cAGTgO,EAAsB,CAC1BC,UAAW,IAAMtC,EAAYuC,WAC7BC,KAAM,IAAMxC,EAAYuC,WACxBE,QAAS,IAAMzC,EAAY0C,WAC3BC,GAAI,IAAM3C,EAAY0C,YAEpBzW,KAAK2W,yBACPxP,OAAOyP,OAAOjB,EAAUS,GAEtBjP,OAAOhM,KAAKwa,GAAUhe,SAAS6D,GACjCma,EAASna,KAGXwE,KAAKiT,0BAA0B2B,EAAG,CAChCY,iBACAjC,WAAYvT,KAAKuT,WACjB2C,gBAAiBW,GAAK7W,KAAKkW,gBAAgBW,MAG/C,aACM7W,KAAK+S,YACP/S,KAAKoI,MAAM,YACFpI,KAAKW,QAIdX,KAAKoI,MAAM,iBAiBjB,MAeM,EAAoB,IACxB,CAAElC,OAvBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,MAAMwC,EAAIvC,GAAGuC,EAAIe,GAAG,CAACd,YAAY,mCAAmCvC,MAAM,CACjL,0CAA2CsC,EAAInI,OAC/C,kBAAmBmI,EAAIlB,UACvBnB,MAAM,CAAC,cAAc,kCAAkC,MAAMqC,EAAIgO,qBAAoB,GAAOhO,EAAIlB,SAAW,GAAK,CAAES,UAAWS,EAAIiO,iBAAkB,CAAEjO,EAAU,OAAE,CAACA,EAAInC,GAAG,eAAe,KAAK,KAAK,CAAEqQ,YAAalO,EAAIoN,kBAAmBpN,EAAIa,GAAG,KAA2C,aAAnCb,EAAyB,sBAAM,KAAgBxC,EAAG,QAAQwC,EAAIe,GAAG,CAACQ,WAAW,CAAC,CAACtF,KAAK,QAAQ0K,QAAQ,UAAUrY,MAAO0R,EAAc,WAAEiB,WAAW,eAAef,IAAI,QAAQD,YAAY,yCAAyCtC,MAAM,CAAC,cAAc,sCAAsC,aAAaqC,EAAIW,MAAM,SAAWX,EAAIlB,SAAS,KAAO,YAAYqP,SAAS,CAAC,QAAUtgB,MAAMmE,QAAQgO,EAAIyK,YAAYzK,EAAIoO,GAAGpO,EAAIyK,WAAW,OAAO,EAAGzK,EAAc,YAAGI,GAAG,CAAC,QAAUJ,EAAIqO,mBAAmB,KAAOrO,EAAIsO,WAAW,OAAS,SAASjO,GAAQ,IAAIkO,EAAIvO,EAAIyK,WAAW+D,EAAKnO,EAAOP,OAAO2O,IAAID,EAAKE,QAAuB,GAAG7gB,MAAMmE,QAAQuc,GAAK,CAAC,IAAaI,EAAI3O,EAAIoO,GAAGG,EAAhB,MAA4BC,EAAKE,QAASC,EAAI,IAAI3O,EAAIyK,WAAW8D,EAAIK,OAAO,CAA5E,QAA2FD,GAAK,IAAI3O,EAAIyK,WAAW8D,EAAIM,MAAM,EAAEF,GAAKC,OAAOL,EAAIM,MAAMF,EAAI,UAAa3O,EAAIyK,WAAWgE,KAAS,QAAQzO,EAAIxB,uBAAsB,IAA8C,UAAnCwB,EAAyB,sBAAM,KAAaxC,EAAG,QAAQwC,EAAIe,GAAG,CAACQ,WAAW,CAAC,CAACtF,KAAK,QAAQ0K,QAAQ,UAAUrY,MAAO0R,EAAc,WAAEiB,WAAW,eAAef,IAAI,QAAQD,YAAY,yCAAyCtC,MAAM,CAAC,cAAc,sCAAsC,aAAaqC,EAAIW,MAAM,SAAWX,EAAIlB,SAAS,KAAO,SAASqP,SAAS,CAAC,QAAUnO,EAAI8O,GAAG9O,EAAIyK,WAAW,OAAOrK,GAAG,CAAC,QAAUJ,EAAIqO,mBAAmB,KAAOrO,EAAIsO,WAAW,OAAS,SAASjO,GAAQL,EAAIyK,WAAW,QAAS,QAAQzK,EAAIxB,uBAAsB,IAAQhB,EAAG,QAAQwC,EAAIe,GAAG,CAACQ,WAAW,CAAC,CAACtF,KAAK,QAAQ0K,QAAQ,UAAUrY,MAAO0R,EAAc,WAAEiB,WAAW,eAAef,IAAI,QAAQD,YAAY,yCAAyCtC,MAAM,CAAC,cAAc,sCAAsC,aAAaqC,EAAIW,MAAM,SAAWX,EAAIlB,SAAS,KAAQkB,EAAyB,sBAAEjD,MAAMoR,SAAS,CAAC,MAASnO,EAAc,YAAGI,GAAG,CAAC,QAAUJ,EAAIqO,mBAAmB,KAAOrO,EAAIsO,WAAW,MAAQ,SAASjO,GAAWA,EAAOP,OAAOiP,YAAqB/O,EAAIyK,WAAWpK,EAAOP,OAAOxR,UAAU,QAAQ0R,EAAIxB,uBAAsB,IAAQwB,EAAIa,GAAG,KAAKrD,EAAG,SAAS,CAAC9K,IAAK,YAAcsN,EAAIgP,KAAMrR,MAAM,CAAC,GAAKqC,EAAIyB,aAAa,CAAEzB,EAA2B,wBAAExC,EAAG,qCAAqC,CAAC9K,IAAK,YAAcsN,EAAIgP,KAAM9O,IAAI,cAAcvC,MAAM,CAAC,gBAAgBqC,EAAIiP,uBAAuB7O,GAAG,CAAC,WAAaJ,EAAIoN,kBAAkB,CAAEpN,EAAW,QAAEA,EAAI4E,GAAI5E,EAAW,SAAE,SAASmL,EAAO3H,GAAK,OAAOhG,EAAG,gCAAgC,CAAC9K,IAAMyY,EAAY,MAAI,IAAM3H,EAAK7F,MAAM,CAAC,MAAQwN,EAAO7c,MAAM,YAAY6c,EAAO+D,OAAO,CAAClP,EAAInC,GAAG,UAAS,WAAW,MAAO,CAAEsN,EAAgB,UAAE,CAAC3N,EAAG2N,EAAOgE,UAAU,CAAClc,IAAI,YAAY0K,MAAM,CAAC,OAASwN,MAAW,CAACnL,EAAIa,GAAG,qBAAqBb,EAAIc,GAAGqK,EAAOnL,EAAIkK,kBAAkB,wBAAuB,KAAK,CAAEiB,OAAQA,KAAW,MAAKnL,EAAInC,GAAG,gBAAgB,GAAGmC,EAAIoP,MAAM,IAAIpP,EAAInC,GAAG,QAAO,WAAW,MAAO,CAACmC,EAAIa,GAAGb,EAAIc,GAAGd,EAAIyK,gBAAe,KAAK,CAAE9J,MAAOX,EAAIW,MAAO8J,WAAYzK,EAAIyK,cAAe,IAoBvgG3M,gBAnBA,SAGE5Q,EAkB5B,OAhBuBA,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,oCC/af,0HAUA,MAAMuG,EAAQ,YAAsB,CAElC4b,YAAa,YAAS,MACrB,KAQGC,EAAsB,YAAO,CACjCrT,KAAM,IACNsT,OAAQ,CAAC,IAAY,IAAgB,KACrC,UACE,MAAO,CACLC,mBAAoB,IAAMtY,OAG9BgH,OAAQ,CAENuR,WAAY,CACVvS,QAAmC,IAAM,KAAM,MAGnDiB,cAAc,EACd1K,QACAsL,SAAU,CACR,UACE,OAAO7H,KAAKuY,cAGdC,QAAO,KACE,EAGT,SACE,OAAOxY,KAAKyY,QAAQC,MAGtB,YACE,OAAO1Y,KAAKyY,QAAQE,WAGtB,eACE,OAAO3Y,KAAKyY,QAAQG,cAItBC,eAAc,KACL,EAKT,kBACE,OAAQ7Y,KAAK2Y,WAAa3Y,KAAKyY,QAAQK,cAGzC,eACE,OAAO9Y,KAAKyY,QAAQM,cAEtB,eACE,MAAO,CAAC/Y,KAAKmY,YAAc,SAASnY,KAAKmY,YAAgB,OAE3D,aACE,MAAO,IACFnY,KAAKgZ,QACRC,KAAM,cAIZ,OAAOC,GACL,OAAOA,EAAE,QAAS,CAChB1S,MAAOxG,KAAKmZ,aACZ1S,MAAOzG,KAAKoZ,WAEZlQ,GAAIlJ,KAAKqZ,aACRrZ,KAAKsZ,qB,qBCvFZ,IAQIC,EAAW,oBACXC,EAAU,kDACVC,EAAS,2BAETC,EAAc,qBACdC,EAAa,kCACbC,EAAa,qCAIbC,EAPa,MAAQL,EAAU,IAAMC,EAAS,IAOtB,IAGxBK,EAFW,oBAEQD,GADP,gBAAwB,CAACH,EAAaC,EAAYC,GAAYG,KAAK,KAAnE,qBAA2FF,EAAW,MAElHG,EAAW,MAAQ,CAACN,EAAcF,EAAU,IAAKA,EAASG,EAAYC,EAAYL,GAAUQ,KAAK,KAAO,IAGxGE,EAAYC,OAAOT,EAAS,MAAQA,EAAS,KAAOO,EAAWF,EAAO,KAiB1ElkB,EAAOC,QARP,SAAqB8H,GAEnB,IADA,IAAIzG,EAAS+iB,EAAUE,UAAY,EAC5BF,EAAUG,KAAKzc,MAClBzG,EAEJ,OAAOA,I,qBCnBTtB,EAAOC,QAZP,SAAmBia,EAAQC,EAAOC,GAShC,OARIF,GAAWA,SACC9Z,IAAVga,IACFF,EAASA,GAAUE,EAAQF,EAASE,QAExBha,IAAV+Z,IACFD,EAASA,GAAUC,EAAQD,EAASC,IAGjCD,I,oCClBT,8MAKA,MAIMuK,EAASnK,GAAQpK,QAAQoK,IAJTA,KACpB,IAAIoK,EACJ,OAAQpK,SAAyE,QAA5BoK,EAAapK,EAAKY,YAAiC,IAAfwJ,OAA9C,EAA+EA,EAAWvkB,QAAU,IAAMY,MAAMmE,QAAQoV,aAAmC,EAASA,EAAKM,QAE9K+J,CAAcrK,GAChDC,EAAUqK,GAAS1U,QAAQ0U,IAAU7jB,MAAMmE,QAAQ0f,EAAMhK,QAAU1K,QAAQ0U,EAAMhK,MAAMza,SAE7FykB,EAAMhK,MAAM5F,MAAMyP,GAGZ3J,EAAiBF,GAASA,EAAM5F,MAAMyP,IAAW7J,EAAM5F,MAAMuF,GAU7DsK,EAAuBC,IAC3B,MAAMC,EAAQD,IACd,IAAK/jB,MAAMmE,QAAQ6f,GACjB,OAAO,EAET,MAAMC,EAAOD,EAAM3S,OAAO6S,GAASA,EAAM9e,KACzC,OAAO6e,EAAK7kB,QAAU6kB,EAAKhQ,MAAM7O,GAdR8e,KACzB,IAAIC,EAFa/e,EAGjB,OAAO+J,QAAQ+U,KAHE9e,GAGyE,QAApD+e,EAAwBD,EAAME,wBAAwD,IAA1BD,OAAmC,EAASA,EAAsB/e,MAAQ8e,EAAM9e,IAH1J,CAAC,+BAAgC,8BAA+B,MAAMpE,SAASoE,KAe/Dif,CAAmBjf,KAEvDkf,EAAuBP,IAC3B,MAAMC,EAAQD,IACRQ,EAAWP,EAAM9O,KAAKsP,GAAQxkB,MAAMmE,QAAQqgB,EAAK5I,WAAa4I,EAAK5I,SAASxc,QAElF,OADoBmlB,EAAWA,EAAS3I,SAAWoI,GAGlD3S,OAAO6S,IAAU,IAASA,EAAM/J,OAAS+J,EAAM/J,KAAK9B,OAAOjZ,OAAS,GAAG6U,MAAMiQ,GAlBrDA,KACzB,IAAIO,EACJ,MAAO,CAAC,IAA+B,KAAgCzjB,SAAwC,QAA9ByjB,EAAcP,EAAMhV,YAAkC,IAAhBuV,OAAyB,EAASA,EAAYrW,OAAwB,OAAf8V,EAAMhV,MAgB7FwV,CAAmBR,KAEtGS,EAAmBZ,KAClB,IAAWA,KAGZ,UAAIa,QAAQC,WAAW,KAClBP,EAAqBP,GAEvBD,EAAqBC,K,oCChD9B,4GAMA,MAAMne,EAAQ,CACZN,QAAS,YAAS,KAA0B,IAMxCwf,EAAe,YAAO,CAC1Blf,QACAsL,SAAU,CACR,YACE,MAAM,QACJ5L,GACE+D,KAEJ,MAAmB,KAAZ/D,GAAwBA,GAEjC,kBACE,OAA0B,IAAnB+D,KAAK2Y,WAEd,sBACE,MAAM,gBACJ+C,GACE1b,KACJ,MAAO,CACL,kBAAmB0b,EACnB,CAAC,mBAAmB1b,KAAK/D,UAAayf,GAAmB1b,KAAK2Y,gB,uBChCtE,IAAIgD,EAAmB,EAAQ,QAC3BC,EAAgB,EAAQ,QACxBC,EAAc,EAAQ,QACtBC,EAAc,EAAQ,QACtBC,EAAkB,EAAQ,QAwE9BnmB,EAAOC,QApCP,SAAwB4F,EAAQM,EAAKJ,GACnC,IAAIqgB,EAAOvgB,EAAOwgB,YAClB,OAAQlgB,GACN,IA3BiB,uBA4Bf,OAAO4f,EAAiBlgB,GAE1B,IAvCU,mBAwCV,IAvCU,gBAwCR,OAAO,IAAIugB,GAAMvgB,GAEnB,IAjCc,oBAkCZ,OAAOmgB,EAAcngB,EAAQE,GAE/B,IAnCa,wBAmCI,IAlCJ,wBAmCb,IAlCU,qBAkCI,IAjCH,sBAiCkB,IAhClB,sBAiCX,IAhCW,sBAgCI,IA/BG,6BA+BmB,IA9BzB,uBA8ByC,IA7BzC,uBA8BV,OAAOogB,EAAgBtgB,EAAQE,GAEjC,IAjDS,eAkDP,OAAO,IAAIqgB,EAEb,IAnDY,kBAoDZ,IAjDY,kBAkDV,OAAO,IAAIA,EAAKvgB,GAElB,IAtDY,kBAuDV,OAAOogB,EAAYpgB,GAErB,IAxDS,eAyDP,OAAO,IAAIugB,EAEb,IAzDY,kBA0DV,OAAOF,EAAYrgB,M,gSCjEzB,MA6BMygB,EAAkB,CAACC,EAAY3L,KACnC,MAAM4L,EAAS,GAwBf,GAvBI,YAAQD,IAEVA,EAAWnU,OAAOqU,EAAA,GAAUjgB,QAAQkgB,IAClC,GAAI,YAASA,GACXF,EAAOlU,KAAK,CACV1M,IAAK8gB,EACL7S,MAAO,YAAU6S,UAEd,GAAI,YAASA,IAAMA,EAAE9gB,KAAO,YAAS8gB,EAAE9gB,KAE5C4gB,EAAOlU,KAAK,YAAMoU,SACb,GAAI,YAASA,IAAyB,IAAnB,YAAKA,GAAGvmB,OAAc,CAE9C,MAAMyF,EAAM,YAAK8gB,GAAG,GACdC,EA7CO,EAAC/gB,EAAKpE,KACzB,IAAImlB,EAAQ,KAuBZ,OAtBI,YAASnlB,GAEXmlB,EAAQ,CACN/gB,MACAiO,MAAOrS,GAEA,YAAWA,GAEpBmlB,EAAQ,CACN/gB,MACAghB,UAAWplB,GAEJ,YAASA,IAClBmlB,EAAQ,YAAMnlB,GACdmlB,EAAM/gB,IAAM+gB,EAAM/gB,KAAOA,IACN,IAAVpE,IAGTmlB,EAAQ,CACN/gB,QAGG+gB,GAqBaE,CAAajhB,EAAK8gB,EAAE9gB,IAC9B+gB,GACFH,EAAOlU,KAAKqU,MAOE,IAAlBH,EAAOrmB,QAAgB,YAAQya,IAAUA,EAAMza,OAAS,EAAG,CAC7D,MAAM2mB,EAASlM,EAAM,GACrB,YAAKkM,GAAQtgB,QAAQugB,IACd,IAAmBA,IACtBP,EAAOlU,KAAK,CACV1M,IAAKmhB,EACLlT,MAAO,YAAUkT,OAOzB,MAAMC,EAAO,GACb,OAAOR,EAAOpU,OAAOsU,IACdM,EAAKN,EAAE9gB,OACVohB,EAAKN,EAAE9gB,MAAO,EACd8gB,EAAE7S,MAAQ,YAAS6S,EAAE7S,OAAS6S,EAAE7S,MAAQ,YAAU6S,EAAE9gB,MAC7C,MC9DXqhB,MAAOC,EACPvgB,MAAOwgB,EACPC,KAAMC,EACNtU,MAAOuU,GACL,YAAe,QAAS,CAC1BrX,KAAM,IACNjM,aAAc,KAKV,EAAQ,YAAS,IAClBmjB,EACHX,OAAQ,YAAS,IAAiB,MAElC5L,MAAO,YAAS,IAAiB,IAGjC2M,WAAY,YAAS,KAErB,CAACF,GAAkB,YAAS,IAAiB,MAMzCG,EAAa,YAAO,CACxB/E,OAAQ,CAACyE,EAAY,KACrBvgB,MAAK,EACL,OACE,MAAM,MACJiU,GACExQ,KACJ,MAAO,CAGLqd,WAAY,YAAQ7M,GAASA,EAAMmH,QAAU,KAGjD9P,SAAU,CACR,iBAGE,OAAOqU,EAAgBlc,KAAKoc,OAAQpc,KAAKqd,aAE3C,oBAKE,MAAM,SACJC,GACEtd,KACJ,OAAOA,KAAKud,eAAe1mB,OAAO,CAAC2mB,EAAKlB,KAGtC,GADAkB,EAAIlB,EAAE9gB,KAAO,YAAM8gB,GACfA,EAAEE,UAAW,CAEf,IAAIA,EAAYF,EAAEE,UACd,YAASA,IAAc,YAAWc,EAASd,IAC7CA,EAAYc,EAASd,GACX,YAAWA,KAErBA,OAAYxmB,GAGdwnB,EAAIlB,EAAE9gB,KAAKghB,UAAYA,EAEzB,OAAOgB,GACN,KAEL,gBACE,MAAM,eACJC,EAAc,YACdC,EAAW,cACXC,EAAa,WACbN,GACE,YAAgBrd,MAEpB,OAAQyd,GAAkBC,GAAeC,GAAiBN,GAC1D,IAAI1F,SAEN,UACE,MAAM,QACJiG,EAAO,YACPC,GACE,YAAgB7d,MAEpB,MAAO,CACLgI,OAAQhI,KAAK8d,YACbC,OAAQ/d,KAAKge,YACbC,SAAUje,KAAKke,cACfN,QAAS,OAAAO,EAAA,GAAQ,YAAUP,EAAS,GAAI,GACxCC,YAAa,OAAAM,EAAA,GAAQ,YAAUN,EAAa,GAAI,GAChDO,OAAQpe,KAAKoe,UAInBrS,MAAO,CACL,MAAMI,GAEJnM,KAAKqd,WAAa,YAAQlR,GAAYA,EAASwL,QAAU,IAG3D,cAAcxL,EAAUC,GACjB,YAAWD,EAAUC,IACxBpM,KAAKoI,MAAM8U,EAAkB/Q,IAIjC,QAAQA,EAAUC,GAEX,YAAWD,EAAUC,IACxBpM,KAAKoI,MAAM,IAA4B+D,KAI7C,UAEEnM,KAAKoI,MAAM8U,EAAkBld,KAAKqe,gBAEpC5V,QAAS,CAEP,kBAAkBjN,GAChB,MAAM+gB,EAAQvc,KAAKse,kBAAkB9iB,GAGrC,OAAO+gB,EAAQA,EAAMC,eAAYxmB,O,uBChJvC,IAAI0E,EAAS,EAAQ,QACjB6jB,EAAe,EAAQ,QAgB3B3oB,EAAOC,QAJP,SAAmBuB,GACjB,OAAOmnB,EAAannB,IAVT,gBAUmBsD,EAAOtD,K,kCCdvC,oIAQA,MAAMmF,EAAQ,CACZiiB,UAAW,YAAS,KAAmB,GAGvCC,eAAgB,YAAS,KAEzBtG,YAAa,YAAS,KACtBuG,WAAY,YAAS,KACrBC,aAAc,YAAS,MAMnBC,EAAa,YAAO,CACxBriB,QACAkM,QAAS,CACP,oBACE,MAAMyQ,EAAIlZ,KAAKoG,eACf,OAAIpG,KAAK6e,kBAAkB,KAClB3F,EAAE,IAAQ,CACf1S,MAAOxG,KAAK0e,YAAc,KAC1BniB,MAAO,CACL4b,YAAanY,KAAKmY,aAAenY,KAAK8e,aAAe,MAEvDtjB,IAAK,mBACJwE,KAAKsZ,cAAc,IAAuB,CAC3C9I,MAAOxQ,KAAKqe,cAAc1G,QAC1ByE,OAAQpc,KAAKud,eAAe5F,QAC5BoH,QAAS/e,KAAKud,eAAexnB,UAG1BmjB,KAET,cAEE,OAAOlZ,KAAKwe,UAAYxe,KAAKgf,aAAY,GAAQhf,KAAKif,yB,kCC5C5D,4GAAMC,EAAgC,2BAChCC,EAAiC,4BACjCC,EAA6C,CACjDC,IAAK,MACLC,OAAQ,W,qBCJV,IAAIC,EAAU,EAAQ,QAClBC,EAAiB,EAAQ,QAGzBtX,EAAOvR,MAAM8oB,UAAUvX,KA0B3B,SAASwX,EAAQvpB,EAAMa,GACrB,OAAY,GAALA,EACH,SAASX,EAAGC,GAAK,OAAOH,EAAKE,EAAGC,IAChC,SAASD,GAAK,OAAOF,EAAKE,IAUhC,SAASspB,EAAW7pB,GAIlB,IAHA,IAAIC,EAASD,EAAQA,EAAMC,OAAS,EAChCmB,EAASP,MAAMZ,GAEZA,KACLmB,EAAOnB,GAAUD,EAAMC,GAEzB,OAAOmB,EAwDT,SAAS0oB,EAAczpB,EAAM0pB,GAC3B,OAAO,WACL,IAAI9pB,EAASU,UAAUV,OACvB,GAAKA,EAAL,CAIA,IADA,IAAI+pB,EAAOnpB,MAAMZ,GACVA,KACL+pB,EAAK/pB,GAAUU,UAAUV,GAE3B,IAAImB,EAAS4oB,EAAK,GAAKD,EAAOE,WAAM/pB,EAAW8pB,GAE/C,OADA3pB,EAAK4pB,WAAM/pB,EAAW8pB,GACf5oB,IAkcXtB,EAAOC,QA/aP,SAASmqB,EAAYC,EAAMlb,EAAM5O,EAAMkD,GACrC,IAAI6mB,EAAuB,mBAARnb,EACfob,EAAQpb,IAASoC,OAAOpC,GAO5B,GALIob,IACF9mB,EAAUlD,EACVA,EAAO4O,EACPA,OAAO/O,GAEG,MAARG,EACF,MAAM,IAAIiqB,UAEZ/mB,IAAYA,EAAU,IAEtB,IAAIgnB,IACK,QAAShnB,IAAUA,EAAQinB,IADhCD,IAEO,UAAWhnB,IAAUA,EAAQknB,MAFpCF,IAGO,UAAWhnB,IAAUA,EAAQmnB,MAHpCH,IAIW,cAAehnB,IAAUA,EAAQonB,UAJ5CJ,IAKO,UAAWhnB,IAAUA,EAAQqnB,MAGpCC,EAAgBT,EAAQ/pB,EAAOqpB,EAC/BoB,EAAc,UAAWvnB,GAAYA,EAAQknB,MAC7CM,EAAc,UAAWxnB,GAAYA,EAAQmnB,MAC7CM,EAAc,UAAWznB,GAAYA,EAAQqnB,MAC7CK,EAAWb,EAAQ/pB,EAAK6qB,oBAAiBhrB,EAEzCirB,EAAUf,EAAQ/pB,EAAO,CAC3B,IAAO8pB,EAAKiB,IACZ,OAAUjB,EAAKrJ,OACf,MAASqJ,EAAKkB,MACd,MAASlB,EAAKM,MACd,QAAWN,EAAK7jB,QAChB,QAAW6jB,EAAKnlB,QAChB,QAAWmlB,EAAKmB,QAChB,WAAcnB,EAAKoB,WACnB,UAAapB,EAAKqB,UAClB,SAAYrB,EAAKsB,SACjB,KAAQtB,EAAK9kB,KACb,MAAS8kB,EAAKS,MACd,UAAaT,EAAKuB,UAClB,OAAUvB,EAAKwB,QAGbP,EAAMD,EAAQC,IACdtK,EAASqK,EAAQrK,OACjBuK,EAAQF,EAAQE,MAChBZ,EAAQU,EAAQV,MAChBmB,EAAOT,EAAQ7kB,QACftB,EAAUmmB,EAAQnmB,QAClBsmB,EAAUH,EAAQG,QAClBC,EAAaJ,EAAQI,WACrBC,EAAYL,EAAQK,UACpBnmB,EAAO8lB,EAAQ9lB,KACfulB,EAAQO,EAAQP,MAChBc,EAAYP,EAAQO,UACpBC,EAASR,EAAQQ,OAEjBE,EAAgBxmB,EAAKokB,EAAQqC,WAE7BC,EAAW,CACb,UAAa,SAASC,GACpB,OAAO,WACL,IAAI1qB,EAAQX,UAAU,GACtB,OAAOqE,EAAQ1D,GACX0qB,EAAUnC,EAAWvoB,IACrB0qB,EAAU/B,WAAM/pB,EAAWS,aAGnC,SAAY,SAAS8qB,GACnB,OAAO,WACL,IAAIprB,EAAOM,UAAU,GACjBsrB,EAAQtrB,UAAU,GAClBS,EAASqqB,EAASprB,EAAM4rB,GACxBhsB,EAASmB,EAAOnB,OAEpB,OAAIsqB,GAA8B,iBAAT0B,GACvBA,EAAQA,EAAQ,EAAKA,EAAQ,EAAK,EAC1BhsB,GAAUA,GAAUgsB,EAAS7qB,EAASwoB,EAAQxoB,EAAQ6qB,IAEzD7qB,IAGX,MAAS,SAAS2lB,GAChB,OAAO,SAASmF,GACd,IAAI7rB,EAAO6J,KACX,IAAKqhB,EAAWlrB,GACd,OAAO0mB,EAAM1mB,EAAMgR,OAAO6a,IAE5B,IAAIC,EAAQ,GAiBZ,OAhBAP,EAAKvmB,EAAK6mB,IAAS,SAASxmB,GACtB6lB,EAAWW,EAAOxmB,KACpBymB,EAAM/Z,KAAK,CAAC1M,EAAKrF,EAAKspB,UAAUjkB,QAIpCqhB,EAAM1mB,EAAMgR,OAAO6a,IAEnBN,EAAKO,GAAO,SAASC,GACnB,IAAI9qB,EAAQ8qB,EAAK,GACbb,EAAWjqB,GACbjB,EAAKspB,UAAUyC,EAAK,IAAM9qB,SAEnBjB,EAAKspB,UAAUyC,EAAK,OAGxB/rB,IAGX,OAAU,SAASgsB,GACjB,OAAO,SAASnrB,GACd,IAAI+qB,EAAQ/qB,EAAI,EAAI,EAAKwqB,EAAUxqB,GAAK,EACxC,OAAOupB,EAAM4B,EAAOnrB,GAAI+qB,KAG5B,MAAS,SAASrB,GAChB,OAAO,SAASvqB,EAAMisB,GACpB,IAAIL,EAAQK,EAAUA,EAAQrsB,OAAS,EACvC,OAAOwqB,EAAMG,EAAMvqB,EAAMisB,GAAUL,KAGvC,aAAgB,SAASf,GACvB,OAAO,SAASqB,GACd,OAAOrC,EAAYC,EAAMe,EAAaqB,GAAUhpB,MAetD,SAASipB,EAAQvd,EAAM5O,GACrB,GAAIkqB,EAAY,CACd,IAAI+B,EAAU7C,EAAQgD,cAAcxd,GACpC,GAAIqd,EACF,OAmJN,SAAuBjsB,EAAMisB,GAC3B,OAAOI,EAAQrsB,GAAM,SAASA,GAC5B,IAAIa,EAAIorB,EAAQrsB,OAChB,OA/ZN,SAAmBI,EAAMa,GACvB,OAAY,GAALA,EACH,SAASX,EAAGC,GAAK,OAAOH,EAAK4pB,WAAM/pB,EAAWS,YAC9C,SAASJ,GAAK,OAAOF,EAAK4pB,WAAM/pB,EAAWS,YA4ZpCgsB,CAAU/B,EAAMhB,EAAQvpB,EAAMa,GAAIorB,GAAUprB,MAtJ1CurB,CAAcpsB,EAAMisB,GAE7B,IAAIprB,GAAKkpB,GAASX,EAAQmD,YAAY3d,GACtC,GAAI/N,EACF,OA8HN,SAAqBb,EAAMa,GACzB,OAAOwrB,EAAQrsB,GAAM,SAASA,GAC5B,MAAsB,mBAARA,EAAqBupB,EAAQvpB,EAAMa,GAAKb,KAhI7CusB,CAAYvsB,EAAMa,GAG7B,OAAOb,EA2BT,SAASwsB,EAAU5d,EAAM5O,EAAMa,GAC7B,GAAIqpB,IAAiBQ,IAAetB,EAAQqD,UAAU7d,IAAQ,CAC5D,IAAIlE,EAAO0e,EAAQsD,aAAa9d,GAC5B+d,EAAQjiB,GAAQA,EAAKiiB,MAEzB,YAAkB9sB,IAAX8sB,EAAuB5B,EAAI/qB,EAAMa,GApP9C,SAAoBb,EAAM2sB,GACxB,OAAO,WAKL,IAJA,IAAI/sB,EAASU,UAAUV,OACnBokB,EAAYpkB,EAAS,EACrB+pB,EAAOnpB,MAAMZ,GAEVA,KACL+pB,EAAK/pB,GAAUU,UAAUV,GAE3B,IAAID,EAAQgqB,EAAKgD,GACbC,EAAYjD,EAAKnI,MAAM,EAAGmL,GAQ9B,OANIhtB,GACFoS,EAAK6X,MAAMgD,EAAWjtB,GAEpBgtB,GAAS3I,GACXjS,EAAK6X,MAAMgD,EAAWjD,EAAKnI,MAAMmL,EAAQ,IAEpC3sB,EAAK4pB,MAAM/f,KAAM+iB,IAkOuBC,CAAW7sB,EAAM2sB,GAEhE,OAAO3sB,EAYT,SAAS8sB,EAAUle,EAAM5O,EAAMa,GAC7B,OAAQqpB,GAAgBrpB,EAAI,IAAM8pB,IAAevB,EAAQ2D,UAAUne,IAC/D2b,EAAMvqB,EAAMopB,EAAQ4D,YAAYpe,IAASwa,EAAQ6D,SAASpsB,IAC1Db,EAWN,SAASktB,EAAY5nB,EAAQ6nB,GAS3B,IANA,IAAIxR,GAAS,EACT/b,GAHJutB,EAAO7B,EAAO6B,IAGIvtB,OACdokB,EAAYpkB,EAAS,EACrBmB,EAASiqB,EAAMha,OAAO1L,IACtB8nB,EAASrsB,EAEI,MAAVqsB,KAAoBzR,EAAQ/b,GAAQ,CACzC,IAAIyF,EAAM8nB,EAAKxR,GACX1a,EAAQmsB,EAAO/nB,GAEN,MAATpE,GACEiqB,EAAWjqB,IAAUgqB,EAAQhqB,IAAUkqB,EAAUlqB,KACrDmsB,EAAO/nB,GAAO2lB,EAAMrP,GAASqI,EAAY/iB,EAAQ+P,OAAO/P,KAE1DmsB,EAASA,EAAO/nB,GAElB,OAAOtE,EAqBT,SAASssB,EAAgBze,EAAM5O,GAC7B,IAAIstB,EAAWlE,EAAQmE,YAAY3e,IAASA,EACxC4e,EAAapE,EAAQqE,MAAMH,IAAaA,EACxCI,EAAaxqB,EAEjB,OAAO,SAASA,GACd,IAAIyqB,EAAU5D,EAAQa,EAAWE,EAC7B8C,EAAU7D,EAAQa,EAAS4C,GAAcxtB,EACzC6tB,EAAapN,EAAOA,EAAO,GAAIiN,GAAaxqB,GAEhD,OAAO2mB,EAAY8D,EAASL,EAAUM,EAASC,IA6CnD,SAASxB,EAAQrsB,EAAM2W,GACrB,OAAO,WACL,IAAI/W,EAASU,UAAUV,OACvB,IAAKA,EACH,OAAOI,IAGT,IADA,IAAI2pB,EAAOnpB,MAAMZ,GACVA,KACL+pB,EAAK/pB,GAAUU,UAAUV,GAE3B,IAAI+b,EAAQuO,EAAe,EAAKtqB,EAAS,EAEzC,OADA+pB,EAAKhO,GAAShF,EAAUgT,EAAKhO,IACtB3b,EAAK4pB,WAAM/pB,EAAW8pB,IAajC,SAASmE,EAAKlf,EAAM5O,EAAMiR,GACxB,IAAIlQ,EACAusB,EAAWlE,EAAQmE,YAAY3e,IAASA,EACxCmf,EAAU/tB,EACVguB,EAAUtC,EAAS4B,GA2CvB,OAzCIU,EACFD,EAAUC,EAAQhuB,GAEXkqB,IACHd,EAAQ6E,OAAOtuB,MAAM2tB,GACvBS,EAAUtE,EAAczpB,EAAMwpB,GAEvBJ,EAAQ6E,OAAO3oB,OAAOgoB,GAC7BS,EAAUtE,EAAczpB,EArahC,SAAsBA,GACpB,OAAO,SAASsF,GACd,OAAOtF,EAAK,GAAIsF,IAmakB4oB,CAAaluB,IAEpCopB,EAAQ6E,OAAOjoB,IAAIsnB,KAC1BS,EAAUtE,EAAczpB,EAAMktB,KAGlC3B,EAAKC,GAAe,SAAS2C,GAe3B,OAdA5C,EAAKnC,EAAQqC,UAAU0C,IAAS,SAASC,GACvC,GAAId,GAAYc,EAAW,CACzB,IAAI1jB,EAAO0e,EAAQsD,aAAaY,GAC5Be,EAAa3jB,GAAQA,EAAK2jB,WAQ9B,OANAttB,EAASstB,EACL7B,EAAUc,EAAUR,EAAUQ,EAAUS,EAASI,GAASA,GAC1DrB,EAAUQ,EAAUd,EAAUc,EAAUS,EAASI,GAASA,GAG9DptB,EAvMR,SAAmB6N,EAAM5O,EAAMa,GAC7B,OAAQ4pB,GAAeP,GAAgBrpB,EAAI,EACvCupB,EAAMpqB,EAAMa,GACZb,EAoMWsuB,CAAUhB,EADnBvsB,EAASorB,EAAQmB,EAAUvsB,GACUotB,IAC9B,OAGHptB,KAGVA,IAAWA,EAASgtB,GAChBhtB,GAAUf,IACZe,EAAS0pB,EAAaL,EAAMrpB,EAAQ,GAAK,WACvC,OAAOf,EAAK4pB,MAAM/f,KAAMvJ,aAG5BS,EAAOwtB,QAAUlB,EAAgBC,EAAUttB,GAC3Ce,EAAOkQ,YAAcjR,EAAKiR,YAAcA,EAEjClQ,EAKT,IAAKipB,EACH,OAAO8D,EAAKlf,EAAM5O,EAAMwqB,GAE1B,IAAIznB,EAAI/C,EAGJ8rB,EAAQ,GAwCZ,OAvCAP,EAAKC,GAAe,SAAS2C,GAC3B5C,EAAKnC,EAAQqC,UAAU0C,IAAS,SAAS9oB,GACvC,IAAIrF,EAAO+C,EAAEqmB,EAAQqE,MAAMpoB,IAAQA,GAC/BrF,GACF8rB,EAAM/Z,KAAK,CAAC1M,EAAKyoB,EAAKzoB,EAAKrF,EAAM+C,WAMvCwoB,EAAKvmB,EAAKjC,IAAI,SAASsC,GACrB,IAAIrF,EAAO+C,EAAEsC,GACb,GAAmB,mBAARrF,EAAoB,CAE7B,IADA,IAAIJ,EAASksB,EAAMlsB,OACZA,KACL,GAAIksB,EAAMlsB,GAAQ,IAAMyF,EACtB,OAGJrF,EAAKuuB,QAAUlB,EAAgBhoB,EAAKrF,GACpC8rB,EAAM/Z,KAAK,CAAC1M,EAAKrF,QAKrBurB,EAAKO,GAAO,SAASC,GACnBhpB,EAAEgpB,EAAK,IAAMA,EAAK,MAGpBhpB,EAAEwrB,QAnLF,SAAoBrrB,GAClB,OAAOH,EAAE8nB,aAAa0D,QAAQrrB,EAAvBH,MAAgClD,IAmLzCkD,EAAEkO,YAAclO,EAGhBwoB,EAAKvmB,EAAKjC,IAAI,SAASsC,GACrBkmB,EAAKnC,EAAQoF,YAAYnpB,IAAQ,IAAI,SAASopB,GAC5C1rB,EAAE0rB,GAAS1rB,EAAEsC,SAIVtC,I,kCCrjBT,uJAYA,MAAM2rB,EAAoB,IAAI,IACxBC,EAAgB,IAAI,IAsU1B,MAAMnf,EArUO,CACXZ,KAAM,uBACNggB,OAAQ,CACNC,kBAAA,IACAC,mBAAA,IACAC,yBAAA,IACAC,0BAAA,KAEFte,WAAY,CACVue,eAAA,IACAC,yBAAA,IACAC,0BAAA,KAEF/oB,MAAO,CAILiU,MAAO,CACL3K,KAAMlP,MACNoP,UAAU,EACVC,QAAS,IAAM,GACf0B,UAAW,KAKb6d,WAAY,CACV1f,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAKXwf,WAAY,CACV3f,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKXyf,SAAU,CACR5f,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAAsB0f,QAC/Bhe,UAAWtQ,GAASA,KAAS,KAK/BuuB,QAAS,CACP9f,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAAuBA,QAChC0B,UAAWtQ,GAASA,KAAS,KAK/BkZ,KAAM,CACJzK,KAAMwB,OACNtB,UAAU,EACVC,QAAS,SACT0B,UAAWtQ,GAASA,KAAS,KAK/B4gB,KAAM,CACJnS,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAKX2F,SAAU,CACR9F,KAAMC,QACNC,UAAU,EACVC,SAAS,GAMX4f,QAAS,CACP/f,KAAMC,QACNC,UAAU,EACVC,SAAS,GAMX6f,SAAU,CACRhgB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAAM,IAAS,yBAK1B8f,YAAa,CACXjgB,KAAM,CAACwB,OAAQ1Q,MAAOwQ,QACtBpB,UAAU,EACVC,QAAS,MAKX+f,QAAS,CACPlgB,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKXggB,UAAW,CACTngB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,eACT0B,UAAWtQ,GAAS+P,OAAOhM,KAAK,KAAoBxD,SAASP,IAM/D6uB,qBAAsB,CACpBpgB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MAMXkgB,mBAAoB,CAClBrgB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MAKXoP,MAAO,CACLvP,KAAMC,QACNC,UAAU,EACVC,SAAS,GAMXmgB,eAAgB,CACdtgB,KAAM,CAACnO,OAAQyP,QACfpB,UAAU,EACVC,aAAShQ,GAMXowB,WAAY,CACVvgB,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKXqgB,UAAW,CACTxgB,KAAMC,QACNC,UAAU,EACVC,SAAS,GAOXsgB,oBAAqB,CACnBzgB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IACT0B,UAAW6e,GAAY,CAAC,IAAmB,KAAgB5uB,SAAS4uB,IAKtEC,YAAa,CACX3gB,KAAMC,QACNC,UAAU,EACVC,SAAS,IAGbnF,KAAI,KACK,CACL4lB,aAAc,IAAS,eACvBC,qBAAsB,OAG1B7e,SAAU,CACR,gBACE,IAAI8e,EACJ,OAAmC,QAA9BA,EAAc3mB,KAAKwQ,aAAmC,IAAhBmW,GAA0BA,EAAY5wB,QAEjF,YAAiBiK,KAAK4mB,aAAa5gB,SAAWhG,KAAK8T,OAAO9N,SACjD,KAEF,OAET,kBACE,OAAOF,QAAQ9F,KAAK4mB,aAAaC,UAGrC,UACM7mB,KAAKwmB,aACPxmB,KAAK8mB,QAGTre,QAAS,CACP,OACEzI,KAAKiV,MAAM8R,aAAaD,QAE1B,QACE9mB,KAAKiV,MAAM8R,aAAaxe,SAE1B,SAMEvI,KAAKoI,MAAM,MAEb,cAAcO,GAMZ3I,KAAKoI,MAAM,IAA0BO,IAEvC,SAME3I,KAAKoI,MAAM,KACXpI,KAAK0mB,qBAAuB,MAE9B,UAAU/d,GACR,MAAM,KACJqe,GACEre,EACEse,EAAWjnB,KAAKknB,+BACtB,GAAID,EAASlxB,OAAS,EAAG,OACzB,IAAIoxB,GAAO,EACPH,IAAS,IACXhnB,KAAKonB,UAAU,EAAGH,GACTD,IAAS,IAClBhnB,KAAKonB,UAAUH,EAASlxB,OAAS,EAAGkxB,GAC3BD,IAAS,IAClBhnB,KAAKqnB,cAAc1e,EAAOse,GAAW,GAC5BD,IAAS,IAClBhnB,KAAKqnB,cAAc1e,EAAOse,EAAU,GAC3BD,IAAS,KAASA,IAAS,IACpChnB,KAAKsnB,gBAAgB3e,GAErBwe,GAAO,EAELA,GACF,YAAUxe,IAGd,+BACE,IAAI4e,EACJ,MAAM/W,EAAuD,QAA9C+W,EAAsBvnB,KAAKiV,MAAMuS,eAA6C,IAAxBD,OAAiC,EAASA,EAAoBE,iBAAiB3C,GACpJ,OAAO,YAAcnuB,MAAM+wB,KAAKlX,GAAS,MAE3C,cAAc7H,EAAOse,EAAUU,GAC7B,MAAM,OACJ/e,GACED,EACEif,EAAeX,EAASja,QAAQpE,GAChCif,EAAY,IAAMD,EAAeD,EAAQ,EAAGV,EAASlxB,OAAS,GACpEiK,KAAKonB,UAAUS,EAAWZ,IAE5B,UAAUnV,EAAOmV,GACf,IAAIa,EACJ9nB,KAAK0mB,qBAAuB5U,EACY,QAAvCgW,EAAkBb,EAASnV,UAAwC,IAApBgW,GAAsCA,EAAgB5S,SAExG,gBACElV,KAAKiV,MAAM8R,aAAagB,iBAE1B,aAAaC,GAGXC,OAAOC,sBAAsB,KAM3BloB,KAAKoI,MAAM,SAAU4f,MAGzB,gBAAgBpT,GACV5U,KAAKqmB,WAAazR,EAAEhM,OAAOC,QAAQic,IAAkBlQ,EAAEhM,OAAOC,QAAQgc,KAAuB7kB,KAAKiV,MAAM8R,aAAala,KACvH7M,KAAK+nB,iBAGTI,aAAY,IACH,IAAS,oBAElB9N,OAAA,KAEF+N,2BAAA,KAWA,MAeMniB,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,mBAAmB,CAAC0C,IAAI,eAAeD,YAAY,yBAAyBtC,MAAM,CAAC,kBAAkBqC,EAAImd,qBAAqB,YAAYnd,EAAI+c,SAAS,cAAc/c,EAAIyc,WAAW,eAAezc,EAAIgd,YAAY,eAAehd,EAAI0c,WAAW,SAAW1c,EAAI2c,SAAS,QAAU3c,EAAI6c,QAAQ,KAAO7c,EAAIwH,KAAK,KAAOxH,EAAIkP,KAAK,SAAWlP,EAAI6C,SAAS,QAAU7C,EAAI8c,QAAQ,WAAW9c,EAAIid,QAAQ,UAAYjd,EAAIkd,UAAU,MAAQld,EAAIsM,MAAM,OAAStM,EAAIqd,eAAe,cAAcrd,EAAIsd,WAAW,uBAAuBtd,EAAIwd,qBAAqBpd,GAAGJ,EAAIuf,GAAG,GAAG,CAACvf,EAAIwf,SAASvD,OAAOC,kBAAkBlc,EAAIyf,OAAOzf,EAAIwf,SAASvD,OAAOE,mBAAmBnc,EAAI0f,OAAO1f,EAAIwf,SAASvD,OAAOG,yBAAyBpc,EAAI2f,cAAc3f,EAAIwf,SAASvD,OAAOI,0BAA0Brc,EAAI4f,YAAYpf,YAAYR,EAAIS,GAAG,CAAET,EAAmB,gBAAE,CAACtN,IAAI,SAASgO,GAAG,WAAW,MAAO,CAACV,EAAInC,GAAG,YAAY+H,OAAM,GAAM,MAAM,MAAK,IAAO,CAAC5F,EAAIa,GAAG,KAAKb,EAAInC,GAAG,UAAUmC,EAAIa,GAAG,KAAKrD,EAAGwC,EAAI6f,cAAc,CAAC3f,IAAI,UAAUjN,IAAI,YAAYyK,MAAMsC,EAAIwf,SAASF,2BAA2B3hB,MAAM,CAAC,GAAKqC,EAAI2d,aAAa,kBAAkB3d,EAAIod,oBAAsBpd,EAAI+c,SAAS,cAAc,qBAAqB,SAAW,MAAM3c,GAAG,CAAC,QAAUJ,EAAI4f,UAAU,MAAQ5f,EAAIwe,kBAAkB,CAACxe,EAAInC,GAAG,WAAU,WAAW,MAAO,CAACmC,EAAI4E,GAAI5E,EAAS,OAAE,SAASoH,EAAK4B,GAAO,MAAO,CAAEhJ,EAAIuR,OAAOnK,GAAO,CAAC5J,EAAG,8BAA8B,CAAC9K,IAAIsN,EAAIqf,eAAe1hB,MAAM,CAAC,KAAOyJ,GAAMhH,GAAG,CAAC,OAASJ,EAAI8f,cAActf,YAAYR,EAAIS,GAAG,CAAE,cAAeT,EAAI8d,aAAc,CAACprB,IAAI,YAAYgO,GAAG,WAAW,MAAO,CAACV,EAAInC,GAAG,YAAY,KAAK,CAAC,KAAOuJ,MAASxB,OAAM,GAAM,MAAM,MAAK,MAAS,CAACpI,EAAG,+BAA+B,CAAC9K,IAAI0U,EAAKnL,KAAK0B,MAAM,CAAC,SAAqB,IAAVqL,EAAY,MAAQ5B,GAAMhH,GAAG,CAAC,OAASJ,EAAI8f,cAActf,YAAYR,EAAIS,GAAG,CAAET,EAAI8d,aAAa,eAAgB,CAACprB,IAAI,cAAcgO,GAAG,WAAW,MAAO,CAACV,EAAInC,GAAG,cAAc,KAAK,CAAC,MAAQuJ,MAASxB,OAAM,GAAM,MAAM,MAAK,IAAO,CAAC5F,EAAIa,GAAG,KAAMb,EAAI8d,aAAa,aAAc9d,EAAI4E,GAAIwC,EAAU,OAAE,SAAS2Y,GAAW,OAAOviB,EAAG,8BAA8B,CAAC9K,IAAIsN,EAAIqf,eAAe1hB,MAAM,CAAC,KAAOoiB,GAAW3f,GAAG,CAAC,OAASJ,EAAI8f,cAActf,YAAYR,EAAIS,GAAG,CAAC,CAAC/N,IAAI,YAAYgO,GAAG,WAAW,MAAO,CAACV,EAAInC,GAAG,YAAY,KAAK,CAAC,KAAOkiB,MAAcna,OAAM,IAAO,MAAK,QAAU5F,EAAIoP,MAAM,aAAW,GAAGpP,EAAIa,GAAG,KAAKb,EAAInC,GAAG,WAAW,IAoB50EC,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,kCCtXf,6kBAKA,MAAM8yB,EAAkB,uBAClBC,EAA2B,2BAC3BC,EAAuB,kBAC7B,SAASC,EAAYhhB,GACnB,OAAOA,EAAMpC,OAASijB,GAA+C,KAA5B7gB,EAAM7Q,MAAMyJ,KAAKmO,OAE5D,SAASka,EAAgBnhB,GACvB,MAAM7Q,EAAS,GAef,OAdA6Q,EAAO3L,QAAQ6L,IACTghB,EAAYhhB,KAGZA,EAAMpC,OAASijB,EACjB5xB,EAAOgR,KAAK,IACPD,IAEI/Q,EAAOnB,OAAS,GAA0C,iBAA9BmB,EAAOA,EAAOnB,OAAS,GAC5DmB,EAAOA,EAAOnB,OAAS,IAAM,IAAIkS,EAAM7Q,MAAMyJ,KAE7C3J,EAAOgR,KAAKD,EAAM7Q,MAAMyJ,SAGrB3J,EAET,SAASiyB,EAAkBphB,GACpBpR,MAAMmE,QAAQiN,GAAf,EAIN,SAASqhB,EAAoBrhB,GAC3B,MAAsB,iBAAXA,IAGXohB,EAAkBphB,GACXA,EAAOqL,KAAKtH,GAAkB,iBAANA,IAAmBA,EAAE9J,KA0BtD,SAASqnB,EAAiBvX,EAAOwX,EAAMvzB,GACrC,GAAa,IAATuzB,EAAY,OAAOxX,EACvB,IAAIgR,EAYJ,OAREA,EAHmBhR,GAAS,GAAKA,EAAQ/b,EAGjC+b,EACCwX,EAAO,GAEP,EAGDvzB,EAEH,YAAO+sB,EAAQwG,EAAMvzB,GAW9B,SAASwzB,EAAc1e,GACrB,IAAI,KACFmN,EAAI,MACJ9W,EAAK,KACL2E,EAAI,gBACJ2jB,GACE3e,EACJ,MAAO,CACLmN,OACA9W,QACA9J,MAAOyO,EACPoS,UAAWuR,GAGf,IAAIC,EAAiB,EACrB,MAAMC,EAAa,KACjB,MAAMC,EAAU,SAASF,EAEzB,OADAA,GAAkB,EACXE,GAYT,SAASC,EAAc3hB,GACrB,OAAKA,EAAMjG,GAMJiG,EALE,IACFA,EACHjG,GAAI0nB,KAKV,SAASG,IACP,IAAIhpB,EAAOpK,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,GAAmBA,UAAU,GAAK,GAC/E,MAAO,CACLuL,GAAI0nB,IACJ7jB,KAAMijB,EACN1xB,MAAO,CACLyJ,SAIN,SAASipB,EAAkBC,GACzB,IAAIjiB,EAAgBrR,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,IAAmBA,UAAU,GACnF0yB,EAAkBY,GAClB,MAAMhiB,EAASpR,MAAMmE,QAAQivB,GAAeA,EAAc,CAACA,GAC3D,OAAOhiB,EAAOlR,OAAO,CAACK,EAAQ4U,KAC5B,GAAiB,iBAANA,EACT,GAAIhE,EAAe,CACjB,MAAMkiB,EAAcle,EAAEkD,OAClBgb,GAAa9yB,EAAOgR,KAAK2hB,EAAWG,QACnC,CACgBle,EAAEpT,MAAM,KAAKsP,OAAOlC,SAC5B1J,QAAQ6tB,GAAY/yB,EAAOgR,KAAK2hB,EAAWI,UAG1D/yB,EAAOgR,KAAK0hB,EAAc9d,IAE5B,OAAO5U,GACN,IAYL,SAASgzB,EAAMpZ,EAAM1Q,GACnB,OAAO0Q,EAAKY,cAAc/Z,SAASyI,EAAMsR,eAE3C,MAAMyY,EAAsB,CAC1BtkB,KAAMijB,EACN9Q,KAAM,QACN9W,MAAO,wBAET,SAASkpB,EAAcC,GACrB,GAAmB,MAAf,IAAMA,IAA8B,MAAd,IAAKA,GAC7B,MAAO,CAACA,GAEV,GAAmB,MAAf,IAAMA,IAA8B,MAAd,IAAKA,GAC7B,MAAO,CAACA,GAEV,MAAMC,EAAQD,EAAI3xB,MAAM,KAClBxB,EAAS,GACf,IAAIqzB,GAA0B,EAC1BC,EAAe,GACnB,KAAOF,EAAMv0B,QAAQ,CACnB,MAAM00B,EAAOH,EAAMI,QAEnB,IAAoB,IADDD,EAAKzd,QAAQ,KAE1Bud,EACFC,GAAgB,IAAIC,EAEpBvzB,EAAOgR,KAAKuiB,OAET,CACL,MAAOE,EAAWC,GAAcH,EAAK/xB,MAAM,IAAK,GAC5C6xB,GACFA,GAA0B,EAC1BC,GAAgB,IAAIG,KACpBzzB,EAAOgR,KAAKsiB,GACZA,EAAe,GACXI,EAAW70B,QACbu0B,EAAMO,QAAQD,KAGhBL,GAA0B,EACtBI,EAAU50B,QACZmB,EAAOgR,KAAKyiB,GAEdH,EAAe,IAAII,IAIzB,OAAO1zB,EAUT,SAAS4zB,EAAkB7iB,GACzB,IAAK,IAASA,GACZ,OAAOA,EAET,IAAKA,EAAMtQ,SAAS,KAClB,OAAOsQ,EAKT,MAHe,CAAC,IAAK,KAGVmL,KAAK2X,GAAS,IAAM9iB,KAAW8iB,GAAS,IAAK9iB,KAAW8iB,GAC1D9iB,EAEF,IAAIA,O,mBCzNbrS,EAAOC,QAZP,SAA2BC,EAAOsB,EAAO4zB,GAIvC,IAHA,IAAIlZ,GAAS,EACT/b,EAAkB,MAATD,EAAgB,EAAIA,EAAMC,SAE9B+b,EAAQ/b,GACf,GAAIi1B,EAAW5zB,EAAOtB,EAAMgc,IAC1B,OAAO,EAGX,OAAO,I,qBClBTlc,EAAOC,QAAU,CACf,IAAO,EAAQ,QACf,OAAU,EAAQ,QAClB,MAAS,EAAQ,QACjB,MAAS,EAAQ,QACjB,QAAW,EAAQ,QACnB,QAAW,EAAQ,QACnB,QAAW,EAAQ,QACnB,WAAc,EAAQ,QACtB,UAAa,EAAQ,QACrB,SAAY,EAAQ,QACpB,KAAQ,EAAQ,QAChB,MAAS,EAAQ,QACjB,UAAa,EAAQ,QACrB,OAAU,EAAQ,U,kCCdpB,uGAmFA,MAAM8P,EA5EO,CACXZ,KAAM,gBACN8B,WAAY,CACVokB,SAAA,IACA3gB,UAAA,KAEF/N,MAAO,CACL2uB,QAAS,CACPrlB,KAAMlP,MACNoP,UAAU,GAEZolB,WAAY,CACVtlB,KAAMnO,OACNqO,UAAU,GAEZqlB,WAAY,CACVvlB,KAAMnO,OACNqO,UAAU,EACV2B,UAAWtQ,GAAS,IAAyBO,SAASP,IAExDi0B,UAAW,CACTxlB,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEXslB,gBAAiB,CACfzlB,KAAMwB,OACNtB,UAAU,GAEZwlB,iBAAkB,CAChB1lB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAEXwlB,qBAAsB,CACpB3lB,KAAMnO,OACNqO,UAAU,EACVC,QAAS,OAGb6B,SAAU,CACR,gBACE,OAAO7H,KAAKkrB,QAAQvT,MAAM3X,KAAKmrB,aAEjC,cACE,OAAOnrB,KAAKyrB,cAAc11B,OAAS,GAErC,iBACE,OAAOiK,KAAKqrB,UAAYrrB,KAAKkrB,QAAQvT,MAAM,EAAG3X,KAAKmrB,YAAcnrB,KAAKkrB,SAExE,YACE,MAAO,CACLQ,GAAI,KACJpzB,GAAI,KACJqzB,GAAI,MACJ3rB,KAAKorB,aAAe,MAExB,aACE,MAAO,IAAIprB,KAAKyrB,cAAc11B,QAEhC,oBACE,IAAKiK,KAAKurB,iBACR,MAAO,GAET,MAAMK,EAAe5rB,KAAKyrB,cAAc9yB,IAAIkzB,GAAU,IAAIA,EAAQ7rB,KAAKurB,iBAAkB,IAAIvc,QAAQ+K,KAAK,MAI1G,OAAO/Z,KAAKwrB,qBAAuB,IAASI,EAAc,CACxD71B,OAAQiK,KAAKwrB,uBACVI,KAaT,MAeM3lB,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,MAAM,CAACyC,YAAY,oBAAoBvC,MAAO,qBAAuBsC,EAAIgjB,WAAY,CAAChjB,EAAI4E,GAAI5E,EAAkB,gBAAE,SAAS+iB,EAAO/Z,GAAO,OAAOxL,EAAG,MAAM,CAAC9K,IAAIsW,EAAM/I,YAAY,2BAA2B,CAACD,EAAInC,GAAG,UAAS,WAAW,MAAO,CAACL,EAAG,YAAYwC,EAAIe,GAAG,CAACpD,MAAM,CAAC,KAAOqC,EAAIsiB,aAAa,YAAYS,GAAO,OAAU,CAAC,OAASA,KAAU,MAAK/iB,EAAIa,GAAG,KAAMb,EAAIuiB,WAAaviB,EAAIijB,YAAazlB,EAAG,MAAM,CAACyC,YAAY,2BAA2B,CAAED,EAAoB,iBAAExC,EAAG,aAAa,CAACG,MAAM,CAAC,OAAS,WAAc,OAAOqC,EAAImM,MAAM+W,SAAW,CAACljB,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAImjB,mBAAmB,YAAYnjB,EAAIoP,KAAKpP,EAAIa,GAAG,KAAKrD,EAAG,OAAO,CAAC0C,IAAI,QAAQxC,MAAM,CAAC,0BAA2BsC,EAAIgjB,WAAWrlB,MAAM,CAAC,cAAc,0BAA0B,cAAc,SAAS,CAACqC,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAIojB,YAAY,YAAYpjB,EAAIa,GAAG,KAAKrD,EAAG,OAAO,CAACyC,YAAY,aAAatC,MAAM,CAAC,cAAc,uBAAuB,CAACqC,EAAIa,GAAGb,EAAIc,GAAGd,EAAIwiB,qBAAqB,GAAGxiB,EAAIoP,MAAM,IAoBlhCtR,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,oCCtHf,0tCAWO,MAAMm2B,EAAmB,IACnBC,EAAoB,IAE3B,QAAEC,GAAYC,IACPC,EAAc,CACzBF,UACAG,YAAa,eACbC,gBAAiB,sBACjBC,MAAO,QAGHC,EAAQC,cAGRC,EAAeC,YAAc,IAAI1vB,KAAQ,CAAE2vB,KAAK,IAEzCC,EAAeC,aAAYN,EAAO,GAAsB,CAAEI,KAAK,IAEtEG,EAAYC,aAAG,qBACfC,EAAWC,aAAaV,EAAO,EAAG,CAAEI,KAAK,IACzCO,EAAaL,aAAYN,EAAO,GAAsB,CAAEI,KAAK,IAC7DQ,EAAcN,aAAYN,EAAO,IAAuB,CAAEI,KAAK,IAC/DS,EAAwBP,aAAYJ,EAAcV,EAAkB,CAAEY,KAAK,IAC3EU,EAAkB,SAACC,GAAC,OAAKC,YAAWD,EAAGnB,EAAYF,SAAS,IAErDuB,EAA0B,SAC1BC,EAAgC,eAEhCC,EAA+B,CAC1C,CACEhd,KAAMqc,aAAG,aACT/1B,MAAO,YACP22B,UAAWX,EACXY,QAASrB,GAEX,CACE7b,KAAMmd,kBAAQf,EAAW,CAAEgB,KAAM,KACjC92B,MAAOy2B,EACPE,UAAWf,EACXgB,QAASrB,GAEX,CACE7b,KAAMmd,kBAAQf,EAAW,CAAEgB,KAAM,KACjC92B,MAAO,eACP22B,UAAWT,EACXU,QAASrB,GAEX,CACE7b,KAAMmd,kBAAQf,EAAW,CAAEgB,KAAM,MACjC92B,MAAO,gBACP22B,UAAWR,EACXS,QAASrB,IAIAwB,EAAsB,SAACC,GAClC,OAAOH,kBACLd,aACE,6GAEF,CACEiB,kBAMOC,EAAuB,EAEvBC,EAAQ,CACnBC,MAAO,QACPC,KAAM,OACNC,QAAS,UACTC,QAAS,WAGEC,EAA0B,SAACC,GACtC,OAAOC,cAAI,iBAAkB,mBAAoBD,IAGtCE,EAAuBC,cAAI,qCAI3BC,EAAyB,yBACzBC,EAA0B,0BAC1BC,EAA0B,0BAE1BC,EAAe,CAC1BC,UAAW,YACXC,WAAY,aACZC,OAAQ,SACRC,iBAVmC,mBAWnCC,QAAS,UACTC,QAAS,UACTC,qBAAsB,wBAGXC,EAAe,CAC1BC,qBAAsB,uBACtBC,sBAAuB,wBACvBC,wBAAyB,0BACzBC,oBAAqB,uBAGVC,EAAqB,CAChC,CACEx0B,IAAK,oBACL0F,MAAO6tB,cAAI,0CACX5zB,KAAM,CACJg0B,EAAaC,UACbD,EAAaE,WACbF,EAAaG,OACbH,EAAaK,QACbL,EAAaM,WAQNQ,EAAwB,CACnCC,SAJyC,yBAKzCC,KAJqC,sBAS1BC,EAAwB,CACnCC,WAH2C,4BAQhCC,EAAsB,CACjC/B,MAHoC,qBAMzBgC,EAAa,CACxBC,4BAA6B,8BAC7BC,iCAAkC,mCAClCC,oBAAqB,sBACrBC,eAAgB,kBAGLC,EAAoC,CAC/C,CAACtC,EAAMC,OAAQ,GACf,CAACD,EAAME,MAAOrB,aAAG,QACjB,CAACmB,EAAMG,SAAUtB,aAAG,QACpB,CAACmB,EAAMI,SAAU,KAMNmC,EAAoC,CAC/C,CAAClB,EAAaC,sBAAuB,CACnCnmB,MAAOslB,cAAI,qCACX+B,KAAMxC,EAAMG,QACZsC,YAAahC,cACX,6IAEFiC,UAAW,6CACXC,YAAa,gDACbC,SAAUC,YAAa,8BAA+B,CAAEC,OAAQ,0BAElE,CAACzB,EAAaE,uBAAwB,CACpCpmB,MAAOslB,cAAI,sCACX+B,KAAMxC,EAAME,KACZuC,YAAahC,cACX,2IAEFiC,UAAW,kCACXC,YAAa,qCACbC,SAAUC,YAAa,8BAA+B,CAAEC,OAAQ,2BAElE,CAACzB,EAAaG,yBAA0B,CACtCrmB,MAAOslB,cAAI,wCACX+B,KAAMxC,EAAME,KACZuC,YAAahC,cACX,mGAEFiC,UAAW,gDACXC,YAAa,mDACbC,SAAUC,YAAa,8BAA+B,CAAEC,OAAQ,6BAElE,CAACzB,EAAaI,qBAAsB,CAClCtmB,MAAOslB,cAAI,oCACXgC,YAAahC,cACX,wFAEFiC,UAAW,4CACXC,YAAa,+CACbC,SAAUC,YAAa,8BAA+B,CAAEC,OAAQ,wBAChEN,KAAMxC,EAAMI,SAEd,CAACS,EAAaC,WAAY,CACxB3lB,MAAOslB,cAAI,0BACXgC,YAAahC,cAAI,wEACjBiC,UAAW,qCACXC,YAAa,2BACbC,SAAUC,YAAa,0CAA2C,CAChEC,OAAQ,sBAEVN,KAAMxC,EAAME,MAEd,CAACW,EAAaE,YAAa,CACzB5lB,MAAOslB,cAAI,2BACXgC,YAAahC,cACX,6HAEFiC,UAAW,qCACXC,YAAa,2BACbC,SAAUC,YAAa,0CAA2C,CAChEC,OAAQ,sBAEVN,KAAMxC,EAAME,MAEd,CAACW,EAAaG,QAAS,CACrB7lB,MAAOslB,cAAI,2BACX+B,KAAMxC,EAAMC,MACZwC,YAAahC,cAAI,sDACjBiC,UAAW,qBACXC,YAAa,+BACbC,SAAUC,YAAa,sCAEzB,CAAChC,EAAaK,SAAU,CACtB/lB,MAAOslB,cAAI,wBACX+B,KAAMxC,EAAMC,MACZwC,YAAahC,cAAI,wEAEnB,CAACI,EAAaM,SAAU,CACtBhmB,MAAOslB,cAAI,wBACX+B,KAAMxC,EAAMC,MACZwC,YAAahC,cAAI,+DACjBiC,UAAW,qCACXC,YAAa,sCACbC,SAAUC,YAAa,4CAIdE,EAA+B,IACvCR,EACH,CAAC1B,EAAaI,kBAAmB,CAC/BwB,YAAahC,cAAI,0DACjBiC,UAAW,qBACXC,YAAa,+BACbC,SAAUC,YAAa,sCAEzB,CAACb,EAAoB/B,OAAQ,CAC3BwC,YAAahC,cACX,wFAEFiC,UAAW,2BACXE,SAAUC,YAAa,2CAA4C,CACjEC,OAAQ,8BAGZ,CAACnB,EAAsBC,UAAW,CAChCa,YAAahC,cACX,iFAEFiC,UAAW,+CACXC,YAAa,oDACbC,SAAUC,YAAa,8DAEzB,CAAClB,EAAsBE,MAAO,CAC5BY,YAAahC,cAAI,wDACjBiC,UAAW,2CACXC,YAAa,gDACbC,SAAUC,YAAa,8DAEzB,CAACf,EAAsBC,YAAa,CAClCU,YAAahC,cAAI,kEACjBiC,UAAW,qCACXC,YAAa,kDAAkDxD,EAC7DD,eACYC,EAAgBZ,KAC9BqE,SAAUC,YAAa,yCAA0C,CAC/DC,OAAQ,uDAGZ,CAACjC,EAAaO,sBAAuB,CACnCqB,YAAahC,cACX,4FAEFiC,UAAW,qCACXC,YAAa,sCACbC,SAAUC,YAAa,2CAEzB,CAACZ,EAAWC,6BAA8B,CACxCO,YAAahC,cACX,sLAEFiC,UAAW,GACXC,YAAa,GACbC,SAAUC,YAAa,oDAIdG,EAA+BvC,cAC1C,2DAGWwC,EAAoC,CAC/CvD,QAASrB,EACToB,UAAWyD,aAAa7E,EAAO,IAGpB8E,EAAmC,SACnCC,EAAqC,WACrCC,EAAkC,QAClCC,EAAmC,SACnCC,EAA2C,iBAC3CC,EAAsC,YAGtCC,EAA0B,CACrC,CAACN,GAAmC,CAAEp4B,QAAS,CAAE6H,MAAOisB,aAAG,UAAW6E,UAAW,UACjF,CAACN,GAAqC,CACpCr4B,QAAS,CAAE6H,MAAOisB,aAAG,YAAa6E,UAAW,YAE/C,CAACL,GAAkC,CACjCt4B,QAAS,CAAE6H,MAAOisB,aAAG,SAAU6E,UAAW,SAE5C,CAACJ,GAAmC,CAClCv4B,QAAS,CAAE6H,MAAOisB,aAAG,UAAW6E,UAAW,WAE7C,CAACH,GAA2C,CAC1Cx4B,QAAS,CAAE6H,MAAOisB,aAAG,kBAAmB6E,UAAW,kBAErD,CAACF,GAAsC,CACrCz4B,QAAS,CAAE6H,MAAOisB,aAAG,aAAc6E,UAAW,cAIrCC,EAAoC,CAC/C,CAACR,GAAmC,gBACpC,CAACC,GAAqC,kBACtC,CAACC,GAAkC,eACnC,CAACC,GAAmC,gBACpC,CAACC,GAA2C,uBAC5C,CAACC,GAAsC,qB,kCClWzC,kCAGA,MAAMI,EAAY,IAAIC,IAYhBC,EAAmB,IAAI/hB,IAC7B,IAAIgiB,EAAgB,KACpB,MAAMC,EAAiB3pB,IACrBupB,EAAU91B,QAAQ,CAACyO,EAAM0nB,KACvB,IAAI,SACFjyB,EAAQ,WACRkyB,GACE3nB,EACJ,MAAM4nB,EAnBI,UAmBY9pB,EAAM9C,MAAiBwsB,GAAyB1pB,EACtE,IAEA4pB,EAAQG,SAASD,EAAc7pB,SAE9B4pB,EAAW76B,SAASgR,EAAM9C,MAG3B,IACEvF,EAASqI,GACT,MAAOiM,GACH,KA9BI,UAoCRjM,EAAM9C,OACRwsB,EAAgB,OAOdM,EAAchqB,IAClB0pB,EAAgB1pB,GAgElB,MA8BMiqB,EAAmB,CACvBC,KA/BW,CAAChkB,EAAIikB,KAChB,MAAM,SACJxyB,EAAQ,WACRkyB,GA3BJ,SAAsBO,GACpB,IAAI,IACFC,EAAG,MACH57B,EAAK,UACLuY,GACEojB,EACJ,MAAME,EAAgB9rB,OAAOhM,KAAKwU,GAalC,MAAO,CACLrP,SAAUlJ,EACVo7B,WAAYS,EAAcl9B,OAAS,EAAIk9B,EAAgB,CA1G7C,UAiHRC,CAAaJ,GACbZ,EAAUiB,IAAItkB,KAYlBqjB,EAAU/1B,IAAI0S,EAAI,CAChBvO,WACAkyB,eAjFmBA,KACrBA,EAAWp2B,QAAQg3B,IACZhB,EAAiBe,IAAIC,KAjDhB,UAoDJA,GACFtkB,SAASukB,iBAAiB,YAAaV,GAMzC7jB,SAASukB,iBAAiBD,EAAWd,EAAgB,CACnDgB,SAAS,IAEXlB,EAAiB91B,IAAI82B,MAGzBf,EAAgB,MAiEhBkB,CAAef,KAWfgB,OATa3kB,IACb,MAAM4kB,EAAQvB,EAAUh2B,IAAI2S,GAlER6kB,MAmEhBD,IACFvB,EAAUpvB,OAAO+L,IApEC6kB,EAqEJD,EAAMjB,YApEHp2B,QAAQg3B,IACrBhB,EAAiBe,IAAIC,IACnB,IAAIlB,EAAUyB,UAAU/oB,MAAMiG,IAChC,IAAI,WACF2hB,GACE3hB,EACJ,OAAQ2hB,EAAW76B,SAASy7B,OAE5BtkB,SAAS8kB,oBAAoBR,EAAWd,GACxCF,EAAiBtvB,OAAOswB,MAI1BM,EAAmB/7B,SAjFX,WAiF+By6B,EAAiBe,IAjFhD,UAkFVrkB,SAAS8kB,oBAAoB,YAAajB,O,qBCtF9C,IAAIkB,EAAa,EAAQ,QACrB14B,EAAO,EAAQ,QAenBvF,EAAOC,QAJP,SAAoB4F,EAAQumB,GAC1B,OAAOvmB,GAAUo4B,EAAW7R,EAAQ7mB,EAAK6mB,GAASvmB,K,8GCLpD,MAAM,EAAQ,YAAsB,CAClCM,IAAK,YAAS,IAAkB,KAChC+3B,UAAW,YAAS,KACpBnO,QAAS,YAAS,MACjB,KAKGoO,EAA6B,YAAO,CACxChvB,KAAM,IACNivB,YAAY,EACZz3B,MAAK,EACL,OAAO2c,EAAGrO,GACR,IAAI,MACFtO,EAAK,KACLsE,EAAI,SACJ0R,GACE1H,EACJ,MAAM,IACJ9O,EAAG,UACH+3B,EAAS,QACTnO,GACEppB,EACJ,OAAO2c,EAAE,KAAM,YAAU,YAAKrY,EAAM,CAAC,UAAW,CAC9C4F,MAAO,CACLwS,KAAM,kBAEN,CAACC,EAAEnd,EAAK,CACVgN,YAAa,kBACbvC,MAAO,CAACstB,EAAW,CACjB,CAAC,QAAQnO,GAAYA,IAEvBppB,QACAkK,MAAO5F,EAAK4F,OAAS,GACrBuC,IAAK,QACJuJ,Q,gBChCP,MAAM5M,EATO,CACXZ,KAAM,iBACN8B,WAAY,CACVktB,iBAEF9sB,cAAc,GAWd,MAeMhB,E,MAAoB,GACxB,CAAEC,OApBe,WAAa,IAAiBC,EAATnG,KAAgBoG,eAAuC,OAAvDpG,KAA0CqG,MAAMC,IAAIH,GAAa,kBAAjEnG,KAAuFuG,GAAvFvG,KAA8F6J,GAAG,CAACd,YAAY,oBAAoB,kBAAlI/I,KAAwJ2O,QAAO,GAA/J3O,KAA0K0G,YAAY,CAAtL1G,KAA2L2G,GAAG,YAAY,IAoBtNC,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,qBC/Cf,IAAIi+B,EAAa,EAAQ,QACrB1V,EAAe,EAAQ,QACvB2V,EAAgB,EAAQ,QAiC5Bt+B,EAAOC,QATP,SAAiBuB,GACf,IAAKmnB,EAAannB,GAChB,OAAO,EAET,IAAI2E,EAAMk4B,EAAW78B,GACrB,MAzBa,kBAyBN2E,GA1BO,yBA0BYA,GACC,iBAAjB3E,EAAM+8B,SAA4C,iBAAd/8B,EAAM2N,OAAqBmvB,EAAc98B,K,kCChCzF,8DAGA,MAAMg9B,EAAkB,CAAC,KAAM,KAAM,MAI/BC,EAAc1rB,IAElB,IAAKA,IAAUA,EAAMC,OAEnB,OAAO,EAET,MAAMiG,EAAKlG,EAAMC,OAEjB,GAAIiG,EAAGlD,WAAqD,IAAzCyoB,EAAgBpnB,QAAQ6B,EAAGylB,SAC5C,OAAO,EAGT,GAAI,YAAQ,iBAAkBzlB,GAC5B,OAAO,EAET,MAAMpF,EAAuB,UAAfoF,EAAGylB,QAAsBzlB,EAAK,YAAQ,QAASA,GAI7D,GAAIpF,EAAO,CACT,MAAM8qB,EAAW,YAAQ9qB,EAAO,OAC1BnE,EAAQivB,EAAW,YAAQA,GAAY,YAAO,0BAA2B9qB,GAC/E,GAAInE,IAAUA,EAAMqG,SAClB,OAAO,EAMX,OAAO,YAAQkD,EAAI,O,kCCpCrB,qCAqDA,MAAMlJ,EAlDO,CACXZ,KAAM,6BACN8B,WAAY,CACV2tB,eAAA,KAEFxtB,OAAQ,CAAC,wCACTC,cAAc,EACd1K,MAAO,CAILnF,MAAO,CACL2O,UAAU,EACV2B,UAAW,KAAM,IAGrBG,SAAU,CACR,WACE,OAAO7H,KAAKgR,qCAAqCe,aAAe/R,OAGpE+L,MAAO,CACL,SAASI,GACHA,GACF8b,OAAOC,sBAAsB,KAC3B,IAAIuM,EAAkBC,EACmB,QAAxCD,EAAmBz0B,KAAKiV,MAAM/E,YAAuC,IAArBukB,GAAyF,QAAjDC,EAAuBD,EAAiB5nB,WAA0C,IAAzB6nB,GAA2CA,EAAqBvf,eAAe,CAC/NC,MAAO,UACPC,OAAQ,YAMlB,UACErV,KAAKgR,qCAAqC2jB,SAAS30B,OAErD,gBACEA,KAAKgR,qCAAqC4jB,WAAW50B,OAEvDyI,QAAS,CACP,YAGEzI,KAAKgR,qCAAqC5I,MAAM,aAAcpI,KAAK5I,UAavE,MAeM6O,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAuC,OAAjB0C,EAAIzC,MAAMC,IAAIH,GAAa,mBAAmB2C,EAAIe,GAAG,CAACb,IAAI,OAAOD,YAAY,gCAAgCvC,MAAM,CAAE,uCAAwCsC,EAAI+rB,UAAWpuB,MAAM,CAAC,cAAc,6BAA6B,SAAW,KAAK,KAAO,KAAKquB,SAAS,CAAC,UAAY,SAAS3rB,GAAgC,OAAxBA,EAAO2L,iBAAwBhM,EAAIisB,UAAUhV,MAAM,KAAMtpB,cAAc,mBAAmBqS,EAAI6F,QAAO,GAAO,CAAC7F,EAAInC,GAAG,YAAY,IAoBndC,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,qBCxFf,IAAIqa,EAAM,EAAQ,QACd2kB,EAAO,EAAQ,QACfC,EAAa,EAAQ,QAYrBC,EAAc7kB,GAAQ,EAAI4kB,EAAW,IAAI5kB,EAAI,CAAC,EAAE,KAAK,IAT1C,IASoE,SAASsjB,GAC1F,OAAO,IAAItjB,EAAIsjB,IAD2DqB,EAI5Ep/B,EAAOC,QAAUq/B,G,qBClBjB,IAAIC,EAAW,EAAQ,QACnB96B,EAAY,EAAQ,QACpBS,EAAU,EAAQ,QAClBs6B,EAAW,EAAQ,QACnBC,EAAe,EAAQ,QACvBC,EAAQ,EAAQ,QAChB19B,EAAW,EAAQ,QA0BvBhC,EAAOC,QAPP,SAAgBuB,GACd,OAAI0D,EAAQ1D,GACH+9B,EAAS/9B,EAAOk+B,GAElBF,EAASh+B,GAAS,CAACA,GAASiD,EAAUg7B,EAAaz9B,EAASR,O,kCC7BrE,0KAEA,MAAMm+B,EAAyB,gBACzBC,EAAwB,cACxBC,EAAyB,eAIzBC,EAAqB,CAACH,EAAwBC,EAAuBC,GAAwB5+B,OAAO,CAACK,EAAQsE,KAAQ,IACtHtE,EACH,CAACsE,IAAM,IACL,IAIEm6B,EAAe,CAAC,IAAK,MAE3B,SAAU,WAEV,uCAAwC,wCAAyC,0CAA2C,gBAAiB,kBAAmB,kBAAmB,oBAAqB,6CAA6C5b,KAAK,M,kCCnB1P,gGAKA,MAAMxd,EAAQ,GAKRq5B,EAAgB,YAAO,CAC3BntB,QAAS,CACP,iBACE,MACE8U,eAAgBnB,GACdpc,KACEkZ,EAAIlZ,KAAKoG,eACf,IAAIyvB,EAAY3c,IAShB,OARIlZ,KAAK6e,kBAAkB,OACzBgX,EAAY3c,EAAE,WAAY,CACxB1d,IAAK,YACJ,CAACwE,KAAKsZ,cAAc,IAA0B,CAC/CyF,QAAS3C,EAAOrmB,OAChBqmB,cAGGyZ,O,kCC1Bb,mHAQA,MAGMC,EAAoB,CAAC,CACzB1+B,MAAO,IACP25B,YAAa,KACb/qB,SAAS,GACR,CACD5O,MAAO,KACP25B,YAAa,WA4Tf,MAAMprB,EA1TO,CACXZ,KAAM,wBAEN+F,UAAU,EACVjE,WAAY,CACVE,QAAA,IACAD,6BAAA,KAEFG,cAAc,EACd1K,MAAO,CACL2K,gBAAiB,CACfrB,KAAMlP,MACNoP,UAAU,EACVC,QAAS,IAAM,IAKjBqa,OAAQ,CACNxa,KAAMsB,OACNpB,UAAU,EACVC,QAAS,KAAM,KAKjBrF,OAAQ,CACNkF,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEX+vB,kBAAmB,CACjBlwB,KAAMlP,MACNoP,UAAU,EACVC,QAAS,IAAM,IAKjB5O,MAAO,CACLyO,KAAMsB,OACNpB,UAAU,EACVC,QAAS,KAAM,CACbgwB,SAAU,GACVn1B,KAAM,MAMVsK,iBAAkB,CAChBtF,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEXyB,eAAgB,CACd5B,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MACT0B,UAAWtQ,GAAS,CAAC,QAAS,OAAOO,SAASP,IAEhDwQ,SAAU,CACR/B,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEXiwB,2BAA4B,CAC1BpwB,KAAMsB,OACNpB,UAAU,EACVC,QAAS,KAAM,MAGnB,OACE,MAAO,CACLkwB,cAAe,KACfC,WAAY,IAAUn2B,KAAK5I,OAC3BoU,uBAAwBxL,KAAKyH,iBAGjCI,SAAU,CACR,YACE,OAAO7H,KAAKqgB,OAAO+V,WAAaN,GAElC,aACE,IAAIO,EACJ,OAAiJ,KAAtF,QAAlDA,EAAwBr2B,KAAKm2B,WAAWt1B,YAA4C,IAA1Bw1B,OAAmC,EAASA,EAAsBtgC,SAEvI,wCAEE,OADiBiK,KAAKs2B,YACJt2B,KAAKu2B,gBAlGR,SAoGjB,0BACE,MAAO,CAACv2B,KAAKqgB,UAAWrgB,KAAKkH,gBAAgBc,OAAOC,GAASA,IAAUjI,KAAKqgB,SAAS1nB,IAErF,MAEF,sBACE,MAAMq9B,EAAWh2B,KAAKo2B,UAAUvqB,KAAKyI,GAAMA,EAAGld,QAAU4I,KAAKm2B,WAAWH,UACxE,OAAOh2B,KAAKmL,iBAAmB6qB,aAA2C,EAASA,EAASjF,YAAciF,aAA2C,EAASA,EAAS5+B,OAEzK,iBACE,OAAO4I,KAAK4H,SAAW,GAAK,CAC1BS,UAAWrI,KAAKsI,2BAChBC,MAAOvI,KAAKwI,kBAIlBguB,SAAU,CACRC,cAvHkB,OAwHlBC,aAtHiB,OAuHjBC,iBAxHqB,YA0HvB5qB,MAAO,CACLoqB,WAAY,CACVlqB,MAAM,EACN,QAAQE,GAONnM,KAAKoI,MAAM,QAAS+D,KAGxB/U,MAAO,CACL,QAAQ+U,EAAUC,GACZ,IAAQD,aAA2C,EAASA,EAAStL,KAAMuL,aAA2C,EAASA,EAASvL,QAAUsL,aAA2C,EAASA,EAAS6pB,aAAe5pB,aAA2C,EAASA,EAAS4pB,YAG/Rh2B,KAAKm2B,WAAa,IAAUhqB,MAGhCxL,OAAQ,CACNuL,WAAW,EACX,QAAQ0qB,GACFA,GACF52B,KAAKwL,uBAAyBxL,KAAKyH,eAC9BzH,KAAKk2B,eACRl2B,KAAK62B,gBAAgB72B,KAAKs2B,WArJb,WACJ,UAuJXt2B,KAAKk2B,cAAgB,KAIjBl2B,KAAKqgB,OAAOtN,aACd/S,KAAKoI,MAAM,QAAS,IACfpI,KAAKm2B,WACRt1B,KAAMb,KAAK+1B,mBAAqB,KAGhC/1B,KAAKs2B,YAAgD,IAAlCt2B,KAAK+1B,kBAAkBhgC,QAM5CiK,KAAKoI,MAAM,eAMrB,UACE,KAAM,aAAcpI,KAAKm2B,YACvB,GAA8B,IAA1Bn2B,KAAKo2B,UAAUrgC,OAAc,CAC/B,MAAMigC,EAAWh2B,KAAKo2B,UAAU,GAAGh/B,MACnC4I,KAAKoI,MAAM,QAAS,IACfpI,KAAKm2B,WACRH,aAEFh2B,KAAKk2B,cArLQ,YAuLbl2B,KAAKoI,MAAM,QAAS,IACfpI,KAAKm2B,WACRH,SAAU,MAKlBvtB,QAAS,CACP,gBAAgBquB,GACV92B,KAAK4H,WACT5H,KAAKk2B,cAAgBY,EAChB92B,KAAKW,QAMRX,KAAKoI,MAAM,cAGf,4BAA4B0uB,GAC1B,OAAI92B,KAAK4H,SACA,iBAEF,CACL,qBAAsB5H,KAAKu2B,gBAAgBO,KAG/C,gBAAgBA,GACd,OAAO92B,KAAKW,QAAUX,KAAKk2B,gBAAkBY,GAE/C,yBACmC,KAA7B92B,KAAKm2B,WAAWH,UAAmBh2B,KAAKs2B,YAK1Ct2B,KAAKoI,MAAM,UAAW,YAAWpI,KAAKqgB,OAAOnf,SAGjD,aAAa61B,GACX,MAAMC,EAAiBh3B,KAAKkH,gBAAgB2E,KAAKhB,IAC/C,IAAI,KACFhF,GACEgF,EACJ,OAAOhF,IAASkxB,IAElB,GAAIC,IAAmBh3B,KAAKqgB,QAW5B,GAAI2W,EAAgB,CAClB,MAAMC,EAAej3B,KAAKqgB,OAAO6W,UAAYl3B,KAAKqgB,OAAO6W,WAAaF,EAAeE,SACrFl3B,KAAKoI,MAAM,UAAW,CACpBvC,KAAMmxB,EAAenxB,KACrBzO,MAAO6/B,EAAej3B,KAAKm2B,WAAa,CACtCt1B,KAAM,YAfVb,KAAKgV,UAAU,KAMbhV,KAAKoI,MAAM,iBAcjB,sBAAsB+uB,EAAKtmB,GACzB,IAAI,WACF0C,EAAU,eACViC,EAAc,gBACdU,GACErF,EACJ,MAAM,IACJrV,GACE27B,EACJ,GAAY,MAAR37B,GAAuB,aAARA,EAEjB,YADA0a,EAAgBV,GAGlB,MAAM4hB,EAAiB,GAAG7jB,IAAa/X,IACpB,IAAfA,EAAIzF,QAAiBiK,KAAKo2B,UAAUvqB,KAAKknB,IAC3C,IAAI,MACF37B,GACE27B,EACJ,OAAO37B,EAAMokB,WAAW4b,OAEpBp3B,KAAKs2B,WACPpgB,EAAgBV,GAEhB2hB,EAAIriB,mBAIV,sBACM9U,KAAKqgB,OAAOtN,aACd/S,KAAKoI,MAAM,QAAS,IACfpI,KAAKm2B,WACRt1B,KAAM,KAGVb,KAAK62B,gBAAgB72B,KAAKsoB,SAASkO,SAASE,eAE9C,kCACE12B,KAAK62B,gBAAgB72B,KAAKsoB,SAASkO,SAASG,kBAC5C32B,KAAKwL,uBAAyB,OAEhC,+BACExL,KAAK62B,gBAAgB72B,KAAKsoB,SAASkO,SAASC,eAC5Cz2B,KAAKwL,uBAAyB,OAEhC,0BACExL,KAAKq3B,sBACLr3B,KAAKwL,uBAAyB,SAEhC,8BACExL,KAAK62B,gBAAgB72B,KAAKsoB,SAASkO,SAASG,kBAC5C32B,KAAKwL,uBAAyB,SAEhC,eAAepU,GAMb4I,KAAKoI,MAAM,WAAYhR,IAEzB,2BAA2BuR,GACrBA,EAAMC,OAAOC,QAAQ,MACvB,YAAUF,IAGd,iBACE3I,KAAKoI,MAAM,cA4Bf,MAeMnC,EAAoB,IACxB,CAAEC,OAnCe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,MAAM,CAACyC,YAAY,2BAA2BvC,MAAM,CAC3J,kCAAmCsC,EAAInI,OACvC,kCAAmCmI,EAAIlB,SACvC,oBAAqBkB,EAAIlB,UACzBnB,MAAM,CAAC,cAAc,0BAA0B,CAACH,EAAG,mCAAmC,CAAC9K,IAAI,gBAAgBiL,MAAM,CAAC,MAAQqC,EAAIuX,OAAOnf,MAAM,OAAS4H,EAAIytB,gBAAgBztB,EAAIwf,SAASkO,SAASC,eAAe,kBAAkB3tB,EAAI0C,uBAAuB,QAAU1C,EAAIwuB,wBAAwB,YAAYxuB,EAAIlB,UAAUsB,GAAG,CAAC,SAAW,SAASC,GAAQ,OAAOL,EAAI+tB,gBAAgB/tB,EAAIwf,SAASkO,SAASC,gBAAgB,WAAa,SAASttB,GAAQ,OAAOL,EAAIV,MAAM,eAAe,SAAWU,EAAIsF,aAAa,UAAY,SAASjF,GAAQ,OAAOL,EAAIV,MAAM,YAAY,OAAS,SAASe,GAAQ,OAAOL,EAAIV,MAAM,WAAW,SAAW,SAASe,GAAQ,OAAOL,EAAIV,MAAM,aAAa,KAAOU,EAAIyuB,6BAA6BjuB,YAAYR,EAAIS,GAAG,CAAC,CAAC/N,IAAI,OAAOgO,GAAG,SAASR,GACrvB,IAAIuK,EAAavK,EAAIuK,WACvB,MAAO,CAACjN,EAAG,WAAW,CAACyC,YAAY,gCAAgCvC,MAAMsC,EAAI0uB,4BAA4B1uB,EAAIwf,SAASkO,SAASC,eAAehwB,MAAM,CAAC,YAAY,KAAK,CAACqC,EAAIa,GAAG,aAAab,EAAIc,GAAG2J,GAAY,qBAAqBzK,EAAIa,GAAG,KAAKrD,EAAG,mCAAmC,CAAC9K,IAAI,mBAAmBiL,MAAM,CAAC,OAASqC,EAAIytB,gBAAgBztB,EAAIwf,SAASkO,SAASG,kBAAkB,kBAAkB7tB,EAAI0C,uBAAuB,QAAU1C,EAAIstB,UAAU,oBAAoB,QAAQ,+BAA+BttB,EAAI2uB,sBAAsB,YAAY3uB,EAAIlB,UAAUsB,GAAG,CAAC,SAAW,SAASC,GAAQ,OAAOL,EAAI+tB,gBAAgB/tB,EAAIwf,SAASkO,SAASG,mBAAmB,UAAY7tB,EAAI4uB,uBAAuB,SAAW,SAASvuB,GAAQ,OAAOL,EAAI+tB,gBAAgB/tB,EAAIwf,SAASkO,SAASE,eAAe,WAAa,SAASvtB,GAAQ,OAAOL,EAAIV,MAAM,eAAe,SAAWU,EAAI6uB,6BAA6B,KAAO7uB,EAAI8uB,yBAAyBtuB,YAAYR,EAAIS,GAAG,CAAC,CAAC/N,IAAI,OAAOgO,GAAG,WAAW,MAAO,CAAClD,EAAG,WAAW,CAACyC,YAAY,oCAAoCvC,MAAMsC,EAAI0uB,4BAA4B1uB,EAAIwf,SAASkO,SAASG,kBAAkBlwB,MAAM,CAAC,QAAU,eAAe,YAAY,KAAK,CAACqC,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAI+uB,qBAAqB,gBAAgBnpB,OAAM,GAAM,CAAClT,IAAI,SAASgO,GAAG,SAASR,GAC/vC,IAAIiL,EAASjL,EAAIiL,OACnB,MAAO,CAAC3N,EAAG,MAAM,CAACyC,YAAY,WAAW,CAACD,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAIqC,iBAAmB8I,EAAO8c,YAAc9c,EAAO7c,OAAO,cAAe6c,EAAkB,YAAE3N,EAAG,OAAO,CAACyC,YAAY,iDAAiD,CAACD,EAAIa,GAAG,eAAeb,EAAIc,GAAGd,EAAIqC,iBAAmB8I,EAAO7c,MAAQ6c,EAAO8c,aAAa,gBAAgBjoB,EAAIoP,YAAYhT,MAAM,CAAC9N,MAAO0R,EAAIqtB,WAAmB,SAAE71B,SAAS,SAAUwJ,GAAMhB,EAAIuE,KAAKvE,EAAIqtB,WAAY,WAAYrsB,IAAOC,WAAW,yBAAyBjB,EAAIa,GAAG,KAAMb,EAAyC,sCAAExC,EAAG,mCAAmC,CAAC9K,IAAI,eAAeiL,MAAM,CAAC,OAASqC,EAAIytB,gBAAgBztB,EAAIwf,SAASkO,SAASE,cAAc,kBAAkB5tB,EAAI0C,uBAAuB,eAAe1C,EAAIuX,OAAOtN,YAAY,QAAUjK,EAAIuX,OAAOhnB,QAAQ,YAAYyP,EAAIlB,SAAS,0BAA0BkB,EAAImtB,4BAA4B/sB,GAAG,CAAC,SAAWJ,EAAIuuB,oBAAoB,UAAY,SAASluB,GAAQ,OAAOL,EAAI+tB,gBAAgB/tB,EAAIwf,SAASkO,SAASG,mBAAmB,SAAW7tB,EAAIgvB,eAAe,OAAS,SAAS3uB,GAAQ,OAAOL,EAAIV,MAAM,SAAUe,IAAS,OAAS,SAASA,GAAQ,OAAOL,EAAIV,MAAM,WAAW,WAAa,SAASe,GAAQ,OAAOL,EAAIV,MAAM,eAAe,MAAQ,SAASe,GAAQ,OAAOL,EAAIV,MAAM,QAASe,IAAS,SAAWL,EAAIivB,gCAAgC,KAAO,SAAS5uB,GAAQ,OAAOL,EAAIV,MAAM,UAAUkB,YAAYR,EAAIS,GAAG,CAAC,CAAC/N,IAAI,eAAegO,GAAG,SAASwuB,GAAO,MAAO,CAAClvB,EAAInC,GAAG,4BAA4B,KAAK,KAAKqxB,MAAU,CAACx8B,IAAI,cAAcgO,GAAG,WAAW,MAAO,CAACV,EAAInC,GAAG,iBAAiB+H,OAAM,GAAM,CAAClT,IAAI,OAAOgO,GAAG,SAASR,GAClkD,IAAIuK,EAAavK,EAAIuK,WACvB,MAAO,CAACzK,EAAInC,GAAG,cAAa,WAAW,MAAO,CAACL,EAAG,WAAWwC,EAAIvC,GAAG,CAACwC,YAAY,gCAAgCvC,MAAMsC,EAAI0uB,4BAA4B1uB,EAAIwf,SAASkO,SAASE,cAAcjwB,MAAM,CAAC,QAAU,eAAe,YAAYqC,EAAIlB,WAAWkB,EAAIY,gBAAgB,CAACpD,EAAG,OAAO,CAACyC,YAAY,yCAAyC,CAACD,EAAInC,GAAG,QAAO,WAAW,MAAO,CAACmC,EAAIa,GAAGb,EAAIc,GAAG2J,OAAe,KAAK,CAAEA,WAAYA,KAAe,QAAO,KAAK,CAC9aA,WAAYA,EACZ0kB,UAAWnvB,EAAIY,eACfwuB,WAAY/wB,OAAOyP,OAAO,GAAI,CAAC,iCAAiC,GAC9D9N,EAAI0uB,4BAA4B1uB,EAAIwf,SAASkO,SAASE,qBACnD,MAAK,GAAMxxB,MAAM,CAAC9N,MAAO0R,EAAIqtB,WAAe,KAAE71B,SAAS,SAAUwJ,GAAMhB,EAAIuE,KAAKvE,EAAIqtB,WAAY,OAAQrsB,IAAOC,WAAW,qBAAqBjB,EAAIoP,MAAM,IAoB1ItR,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,qBC/Xf,IAAImiC,EAAe,EAAQ,QACvBC,EAAY,EAAQ,QACpB36B,EAAa,EAAQ,QACrBxC,EAAW,EAAQ,QACnBo9B,EAAW,EAAQ,QACnBC,EAAa,EAAQ,QACrBC,EAAgB,EAAQ,QACxB/W,EAAY,EAAQ,QACpB5pB,EAAW,EAAQ,QAOnB4gC,EAAU,OA+Fd5iC,EAAOC,QAxDP,SAAkB8H,EAAQtE,GACxB,IAAItD,EA5CqB,GA6CrB0iC,EA5CuB,MA8C3B,GAAIx9B,EAAS5B,GAAU,CACrB,IAAIq/B,EAAY,cAAer/B,EAAUA,EAAQq/B,UAAYA,EAC7D3iC,EAAS,WAAYsD,EAAUmoB,EAAUnoB,EAAQtD,QAAUA,EAC3D0iC,EAAW,aAAcp/B,EAAU8+B,EAAa9+B,EAAQo/B,UAAYA,EAItE,IAAIE,GAFJh7B,EAAS/F,EAAS+F,IAEK5H,OACvB,GAAI0H,EAAWE,GAAS,CACtB,IAAIi7B,EAAaL,EAAc56B,GAC/Bg7B,EAAYC,EAAW7iC,OAEzB,GAAIA,GAAU4iC,EACZ,OAAOh7B,EAET,IAAIk7B,EAAM9iC,EAASuiC,EAAWG,GAC9B,GAAII,EAAM,EACR,OAAOJ,EAET,IAAIvhC,EAAS0hC,EACTR,EAAUQ,EAAY,EAAGC,GAAK9e,KAAK,IACnCpc,EAAOga,MAAM,EAAGkhB,GAEpB,QAAkB7iC,IAAd0iC,EACF,OAAOxhC,EAASuhC,EAKlB,GAHIG,IACFC,GAAQ3hC,EAAOnB,OAAS8iC,GAEtBR,EAASK,IACX,GAAI/6B,EAAOga,MAAMkhB,GAAKr4B,OAAOk4B,GAAY,CACvC,IAAIxO,EACA4O,EAAY5hC,EAMhB,IAJKwhC,EAAUK,SACbL,EAAYxe,OAAOwe,EAAU1W,OAAQpqB,EAAS4gC,EAAQQ,KAAKN,IAAc,MAE3EA,EAAUve,UAAY,EACd+P,EAAQwO,EAAUM,KAAKF,IAC7B,IAAIG,EAAS/O,EAAMpY,MAErB5a,EAASA,EAAOygB,MAAM,OAAc3hB,IAAXijC,EAAuBJ,EAAMI,SAEnD,GAAIt7B,EAAOqP,QAAQmrB,EAAaO,GAAYG,IAAQA,EAAK,CAC9D,IAAI/mB,EAAQ5a,EAAOgiC,YAAYR,GAC3B5mB,GAAS,IACX5a,EAASA,EAAOygB,MAAM,EAAG7F,IAG7B,OAAO5a,EAASuhC,I,sTCjGlB,MAAM,EAAQ,YAAsB,CAGlC3Z,YAAa,YAAS,MACrB,KAQGqa,EAAsB,YAAO,CACjCp0B,KAAM,IACNsT,OAAQ,CAAC5R,EAAA,EAAYwxB,EAAA,EAAgB,KACrC,UACE,MAAO,CACL3f,mBAAoB,IAAMtY,OAG9BgH,OAAQ,CAENuR,WAAY,CACVvS,QAAmC,IAAM,KAAM,MAGnDiB,cAAc,EACd1K,MAAK,EACLsL,SAAU,CACR,UACE,OAAO7H,KAAKuY,cAGd6gB,QAAO,KACE,EAGT,SACE,OAAOp5B,KAAKyY,QAAQC,MAGtB,YACE,OAAO1Y,KAAKyY,QAAQE,WAGtB,eACE,OAAO3Y,KAAKyY,QAAQG,cAMtB,iBACE,OAAQ5Y,KAAK2Y,WAAa3Y,KAAKyY,QAAQK,cAKzC,kBACE,OAAQ9Y,KAAK2Y,WAAa3Y,KAAKyY,QAAQK,cAGzC,eACE,OAAO9Y,KAAKyY,QAAQM,cAEtB,eACE,MAAO,CAAC/Y,KAAK8e,YAAc,SAAS9e,KAAK8e,YAAgB,OAE3D,aACE,MAAO,CACL7F,KAAM,cACHjZ,KAAKgZ,WAId,OAAOE,GACL,OAAOA,EAAE,QAAS,CAChB1S,MAAOxG,KAAKq5B,aACZ5yB,MAAOzG,KAAKs5B,WAEZpwB,GAAIlJ,KAAKqZ,aACRrZ,KAAKsZ,oB,gECrEZ,MAAMigB,EAAkBniC,GAAS,QAAQA,GAAS,MAC5CoiC,EAAkBpiC,GAAS,QAAQA,GAAS,MAI5C,EAAQ,CAEZqiC,eAAgB,YAAS,KAEzB3a,YAAa,YAAS,KACtB4a,WAAY,YAAS,KACrBC,aAAc,YAAS,MAMnBC,EAAa,YAAO,CACxBr9B,MAAK,EACLkM,QAAS,CACPoxB,aAAatd,GAEJ,CAACA,EAAM/V,MAAQ+V,EAAM/V,MAAQ,GAAI+V,EAAMud,QAAUvd,EAAMud,QAAU,IAE1E,YAAYnxB,EAAO4T,EAAOwd,GACpB/5B,KAAKg6B,YAAch6B,KAAKg6B,WAAWrxB,IAG5B,YAAYA,IAGZ,YAAoB3I,KAAK6M,OAKpC,YAAUlE,GACV3I,KAAKoI,MAAM,IAAyBmU,EAAM/gB,IAAK+gB,EAAO5T,EAAOoxB,KAE/D,cACE,IAAIA,EAAStjC,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,IAAmBA,UAAU,GAC5E,MACE8mB,eAAgBnB,EAAM,WACtB6d,EAAU,aACVC,EAAY,YACZpb,EAAW,YACX3G,EAAW,eACXshB,EAAc,eACdhb,GACE,YAAgBze,MACdkZ,EAAIlZ,KAAKoG,eAIf,GAAIpG,KAAK0b,iBAAqC,IAAlBU,EAAOrmB,OACjC,OAAOmjB,IAET,MAAMihB,EAAuBF,GAAcj6B,KAAKo6B,YAAY,KAGtDC,EAAgBH,EAAel6B,KAAKq6B,cAAgBrF,EAAA,EACpDsF,EAAgBJ,EAAel6B,KAAKs6B,cAAgBtF,EAAA,EA0FpDuF,EAASne,EAAOzjB,IAvFL,CAAC4jB,EAAOie,KACvB,MAAM,MACJ/wB,EAAK,UACLgxB,EAAS,QACT9U,EAAO,aACP+U,EAAY,IACZl/B,GACE+gB,EACJ,IAAIoe,EAAY,KACXpe,EAAM9S,MAAMuF,QAAWuN,EAAMqe,cAIhCD,EAAY,YAAUpe,EAAM/gB,MAE9B,MAAM0N,EAAK,GACPixB,IACFjxB,EAAG2xB,MAAQlyB,IACT3I,KAAK86B,YAAYnyB,EAAO4T,EAAOwd,IAEjC7wB,EAAG6xB,QAAUpyB,IACX,MAAMqyB,EAAUryB,EAAMqyB,QAClBA,IAAY,KAAcA,IAAY,KACxCh7B,KAAK86B,YAAYnyB,EAAO4T,EAAOwd,KAIrC,MAAMkB,EAAYhB,EAAaj6B,KAAKk7B,iBAAiB1/B,EAAK+gB,EAAOwd,GAAU,GACrEoB,EAAYlB,EAAaj6B,KAAKo7B,mBAAmB5/B,EAAK+gB,EAAOwd,GAAU,KACvEsB,EAAYpB,EAAaj6B,KAAKs7B,iBAAiB9/B,EAAK+gB,EAAOwd,GAAU,KACrEl5B,EAAO,CACX2F,MAAO,CAAC,CAGN,cAAe60B,GACdr7B,KAAK65B,aAAatd,GAAQ4e,GAC7B5+B,MAAO,CACLopB,UACA+U,gBAEFjsB,MAAO8N,EAAMgf,SAAW,GACxB90B,MAAO,CAGL+0B,SAAUrB,GAAwB5d,EAAMkf,SAAW,IAAM,KACzDC,KAAMnf,EAAMof,YAAc,KAC1Bz6B,MAAOqb,EAAMqe,aAAe,KAC5B,gBAAiBJ,EAAW,EAC5B,aAAcG,KACX36B,KAAK47B,YAAY,KAAMpgC,EAAK+gB,EAAMsf,OAAQ9B,EAAS,OAAS,OAAQ,OACpEkB,GAEL/xB,KACA1N,OAQF,IAAIsgC,EAAY,CAACvC,EAAgB/9B,GAAM+9B,EAAgB/9B,EAAIkW,eAAgB6nB,KAEvEQ,IACF+B,EAAY,CAACtC,EAAgBh+B,GAAMg+B,EAAgBh+B,EAAIkW,eAAgB8nB,OAAsBsC,IAE/F,MAAM9D,EAAQ,CACZvuB,QACAsyB,OAAQvgC,EACR+gB,QACAwd,SAEAM,gBACAC,iBAEI0B,EAAWh8B,KAAKsZ,cAAcwiB,EAAW9D,IAAU9e,EAAE,MAAO,CAChEjC,SAAU,OAAAglB,EAAA,GAAWxB,EAAWhxB,KAE5ByyB,EAAWb,EAAYniB,EAAE,OAAQ,CACrCnQ,YAAa,cACZ,KAAKsyB,MAAgB,KAGxB,OAAOniB,EAAE,IAAKrY,EAAM,CAACm7B,EAAUE,GAAUl0B,OAAOqU,EAAA,MAIdrU,OAAOqU,EAAA,GAGrC8f,EAAO,GACb,GAAIpC,EACFoC,EAAKj0B,KAAKgR,EAAE,IAAK,CACf1S,MAAOxG,KAAK2e,aACZpiB,MAAO,CACLopB,QAAS,YAAkBlH,GAAkBgb,EAA2Chb,IAEzF8b,QACE,CACL,MAAMvC,EAAQ,CACZjZ,QAAS3C,EAAOrmB,OAChBqmB,SAEAie,gBACAC,iBAEF6B,EAAKj0B,KAAKlI,KAAKsZ,cAAc,IAAqB0e,IAAU9e,KAC5DijB,EAAKj0B,KAAKgR,EAAE,IAAK,CACf1S,MAAOxG,KAAK25B,aACZp9B,MAAO,CACLopB,QAAS8T,IAEVc,IAEL,OAAOrhB,EAAE6gB,EAAS,IAASZ,EAAQ,CACjC3yB,OAAQuzB,EAAS/5B,KAAK0e,WAAa1e,KAAK05B,aAAe,KACvDn9B,MAAOw9B,EAAS,CACd5hB,YAAaA,GAAe2G,GAAe,MACzC,CACFA,YAAaA,GAAe,MAE9BtjB,IAAKu+B,EAAS,WAAa,YAC1BoC,Q,oCChNT,0bACA,MAAMnX,EAAoB,QACpBC,EAAqB,SACrBC,EAA2B,cAC3BC,EAA4B,eAG5BiX,EAAa,YACbC,EAAW,UACXC,EAAM,MACNC,EAAQ,QACRC,EAAO,OACPC,EAAQ,QAIRC,EAAoB,WACpBC,EAAiB,QACjBvU,EAA6B,4B,kCClBnC,6FAEA,MAQMwU,EAAc,IAAM,CAAClE,EAAWloB,KACpC,MAAOqsB,KAASz3B,GAAQoL,EAClBssB,EAAwC,mBAAdpE,EAA2BA,EAAY,IAAMA,EAC7E,MAAO,CAACmE,KAASz3B,EAAKqL,QAAQP,GAAQ,CAAC4sB,IAAoB5sB,GAAO9K,MAK9D23B,EAAS,IAAM,CAACjrB,EAAOkrB,EAASxsB,IAAU,IAAIA,EAAMmH,MAAM,EAAG7F,GAAQkrB,KAAYxsB,EAAMmH,MAAM7F,M,qBClBnG,IAAImrB,EAAS,EAAQ,QAGjBC,EAAcD,EAASA,EAAOxd,eAAYzpB,EAC1CmnC,EAAgBD,EAAcA,EAAYE,aAAUpnC,EAaxDJ,EAAOC,QAJP,SAAqBwnC,GACnB,OAAOF,EAAgBh2B,OAAOg2B,EAAc9qB,KAAKgrB,IAAW,K,kCCd9D,6lGAEO,MAAMC,EAAiB,IACjBC,EAAyB,EAEzBC,EAAc,OACdC,EAAa,MACbC,EAAiB,UACjBC,EAAkB,WAClBC,EAAiB,UAEjBC,EAAmB,CAACL,EAAaC,GAEjCK,EAAc,IACdC,EAAmB5Q,aAAG,MACtB6Q,EAAe,KACfC,EAAoB9Q,aAAG,iBACvB+Q,EAAc,KACdC,EAAmBhR,aAAG,aACtBiR,EAAiB,IACjBC,EAAsBlR,aAAG,eACzBmR,EAAkB,IAClBC,EAAuBpR,aAAG,UAE1BqR,EAAe,CAAC,CAAEpnC,MAAO0mC,EAAa/M,YAAagN,IACnDU,EAAgB,CAAC,CAAErnC,MAAO4mC,EAAcjN,YAAakN,IACrDS,EAAe,CAAC,CAAEtnC,MAAO8mC,EAAanN,YAAaoN,IACnDQ,EAAkB,CAAC,CAAEvnC,MAAOgnC,EAAgBrN,YAAasN,IACzDO,EAAmB,CAAC,CAAExnC,MAAOknC,EAAiBvN,YAAawN,IAC3DM,EAAmB,IAAIL,KAAiBC,GACxCK,EAAsB,IAAIN,KAAiBC,KAAkBC,GAC7DK,EAAyB,IAAIJ,KAAoBC,GAEjDI,EAAqB,CAACd,EAAaF,GAEnCiB,EAAc,CAAE7nC,MAAOomC,EAAa1sB,KAAMqc,aAAG,QAASjsB,MAAOisB,aAAG,SAChE+R,EAAa,CAAE9nC,MAAOqmC,EAAY3sB,KAAMqc,aAAG,OAAQjsB,MAAOisB,aAAG,QAC7DgS,EAAiB,CAAE/nC,MAAOsmC,EAAgB5sB,KAAMqc,aAAG,YACnDiS,EAAiB,CAAEhoC,MAAOwmC,EAAgB9sB,KAAMqc,aAAG,WAAYjsB,MAAOisB,aAAG,YACzEkS,EAAkB,CAC7BjoC,MAAOumC,EACP7sB,KAAMqc,aAAG,YACTjsB,MAAOisB,aAAG,aAGCmS,EAAmB,CAACL,EAAaC,GAEjCK,EAAqBD,EAAiB5nB,OAAO,CAAC2nB,EAAiBD,IAE/DI,EAAiB,CAC5BC,WAAY,aACZC,UAAW,aAGAC,EAAuB,uBAEvBC,EAA0B,CACrC/5B,KAAM85B,EACNvoC,MAAO,CACLyJ,KAAM,KAIGg/B,EAA0B1S,aAAG,eAC7B2S,EAAyB3S,aAAG,aAC5B4S,EAAuB5S,aAAG,YAC1B6S,EAAuBjR,cAAI,wBAC3BkR,EAAqB9S,aAAG,UACxB+S,EAA2B/S,aAAG,gBAC9BgT,EAAsBpR,cAAI,eAC1BqR,EAAoBrR,cAAI,uBACxBsR,EAAoBlT,aAAG,SAEvBmT,GAD2BnT,aAAG,gBACVA,aAAG,UACvBoT,EAAsBpT,aAAG,WACzBqT,EAAwBrT,aAAG,aAC3BsT,EAA0BtT,aAAG,eAC7BuT,GAA2B3R,cAAI,oBAC/B4R,GAAsBxT,aAAG,WACzByT,GAAuB7R,cAAI,wBAC3B8R,GAA4B1T,aAAG,iBAC/B2T,GAAqB3T,aAAG,UACxB4T,GAA+BhS,cAAI,mBACnCiS,GAA4B7T,aAAG,iBAC/B8T,GAAmB9T,aAAG,QACtB+T,GAAsB/T,aAAG,WACzBgU,GAA4BhU,aAAG,iBAC/BiU,GAAsBjU,aAAG,gBACzBkU,GAAqBlU,aAAG,eACxBmU,GAA8BnU,aAAG,mBACjCoU,GAA6BpU,aAAG,kBAChCqU,GAA4BrU,aAAG,iBAC/BsU,GAA0BtU,aAAG,eAE7BuU,GAAsB,WACtBC,GAAyB,cACzBC,GAAwB,aACxBC,GAAsB,WACtBC,GAAoB,SACpBC,GAA0B,eAC1BC,GAAqB,UACrBC,GAAmB,QACnBC,GAAmB,QACnBC,GAA0B,eAC1BC,GAAkB,OAClBC,GAA2B,gBAK3BC,GAAqB,UACrBC,GAAoB,SACpBC,GAAuB,YACvBC,GAAmB,QACnBC,GAAuB,YACvBC,GAAyB,cACzBC,GAA0B,eAC1BC,GAAqB,UACrBC,GAAsB,WACtBC,GAA2B,gBAC3BC,GAAoB,SACpBC,GAA8B,mBAC9BC,GAA2B,gBAC3BC,GAAkB,OAClBC,GAAqB,UACrBC,GAAoB,SACpBC,GAA2B,KAC3BC,GAAqB,UACrBC,GAAoB,SACpBC,GAA6B,kBAC7BC,GAA4B,iBAC5BC,GAAyB,cAIzBC,GAAe,CAC1BC,KAAM,OACNC,OAAQ,SACRC,MAAO,QACPC,QAAS,Y,kCC3IX,4NAGA,SAASC,EAAU9oB,GACjB,IAAI+oB,EACJ,OAAsD,OAA7CA,EAAsB/oB,EAAKgpB,oBAAyB,EAASD,EAAoBE,cAAgBnc,OAG5G,SAASoc,EAAmB9R,GAC1B,OAAO0R,EAAU1R,GAAS+R,iBAAiB/R,GAG7C,SAASgS,EAAOntC,GACd,OAAOA,aAAiB6sC,EAAU7sC,GAAOotC,KAE3C,SAASC,EAAYtpB,GACnB,OAAIopB,EAAOppB,IACDA,EAAKupB,UAAY,IAAIhzB,cAKxB,YAGT,SAASizB,EAAcvtC,GACrB,OAAOA,aAAiB6sC,EAAU7sC,GAAOoY,YAE3C,SAASo1B,EAAUxtC,GACjB,OAAOA,aAAiB6sC,EAAU7sC,GAAOytC,QAE3C,SAASC,EAAa3pB,GAEpB,MAA0B,oBAAf4pB,aAGJ5pB,aAAgB8oB,EAAU9oB,GAAM4pB,YAAc5pB,aAAgB4pB,YAEvE,SAASC,EAAkBzS,GACzB,MAAM,SACJ0S,EAAQ,UACRC,EAAS,UACTC,EAAS,QACTC,GACEf,EAAmB9R,GACvB,MAAO,kCAAkCnY,KAAK6qB,EAAWE,EAAYD,KAAe,CAAC,SAAU,YAAYvtC,SAASytC,GAEtH,SAASC,EAAe9S,GACtB,MAAO,CAAC,QAAS,KAAM,MAAM56B,SAAS8sC,EAAYlS,IAEpD,SAAS+S,EAAkB/S,GACzB,MAAMgT,EAASC,IACTC,EAAMpB,EAAmB9R,GAG/B,MAAyB,SAAlBkT,EAAI34B,WAA4C,SAApB24B,EAAIC,eAA2BD,EAAIE,eAAsC,WAAtBF,EAAIE,gBAAwCJ,KAAWE,EAAIG,gBAAwC,SAAvBH,EAAIG,iBAAuCL,KAAWE,EAAIz9B,QAAwB,SAAfy9B,EAAIz9B,QAA8B,CAAC,YAAa,cAAe,UAAUoL,KAAKhc,IAAUquC,EAAII,YAAc,IAAIluC,SAASP,KAAW,CAAC,QAAS,SAAU,SAAU,WAAWgc,KAAKhc,IAAUquC,EAAIK,SAAW,IAAInuC,SAASP,IAE7b,SAASouC,IACP,QAAmB,oBAARO,MAAwBA,IAAIC,WAChCD,IAAIC,SAAS,0BAA2B,QAEjD,SAASC,EAAsB9qB,GAC7B,MAAO,CAAC,OAAQ,OAAQ,aAAaxjB,SAAS8sC,EAAYtpB,IA9D5D,qaAiEA,MAAM+qB,EAAMrtC,KAAKqtC,IACX94B,EAAMvU,KAAKuU,IACX+4B,EAAQttC,KAAKstC,MACbrtC,EAAQD,KAAKC,MACbstC,EAAoBvvB,IAAK,CAC7BwvB,EAAGxvB,EACHyvB,EAAGzvB,IAGL,SAAS0vB,EAAiBhU,GACxB,MAAMkT,EAAMpB,EAAmB9R,GAG/B,IAAIiU,EAAQ1sC,WAAW2rC,EAAIe,QAAU,EACjCC,EAAS3sC,WAAW2rC,EAAIgB,SAAW,EACvC,MAAMC,EAAY/B,EAAcpS,GAC1BoU,EAAcD,EAAYnU,EAAQoU,YAAcH,EAChDI,EAAeF,EAAYnU,EAAQqU,aAAeH,EAClDI,EAAiBV,EAAMK,KAAWG,GAAeR,EAAMM,KAAYG,EAKzE,OAJIC,IACFL,EAAQG,EACRF,EAASG,GAEJ,CACLJ,QACAC,SACAK,EAAGD,GAIP,SAASE,EAAcxU,GACrB,OAAQqS,EAAUrS,GAAoCA,EAAzBA,EAAQyU,eAGvC,SAASC,EAAS1U,GAChB,MAAM2U,EAAaH,EAAcxU,GACjC,IAAKoS,EAAcuC,GACjB,OAAOd,EAAkB,GAE3B,MAAMe,EAAOD,EAAWx6B,yBAClB,MACJ85B,EAAK,OACLC,EAAM,EACNK,GACEP,EAAiBW,GACrB,IAAIb,GAAKS,EAAIX,EAAMgB,EAAKX,OAASW,EAAKX,OAASA,EAC3CF,GAAKQ,EAAIX,EAAMgB,EAAKV,QAAUU,EAAKV,QAAUA,EAUjD,OANKJ,GAAM3uC,OAAO0vC,SAASf,KACzBA,EAAI,GAEDC,GAAM5uC,OAAO0vC,SAASd,KACzBA,EAAI,GAEC,CACLD,IACAC,KAIJ,MAAMe,EAAyBjB,EAAkB,GACjD,SAASkB,EAAiB/U,EAASgV,EAASC,GAC1C,IAAIC,EAAqBC,EAIzB,QAHgB,IAAZH,IACFA,GAAU,IAEP/B,IACH,OAAO6B,EAET,MAAMM,EAAMpV,EAAU0R,EAAU1R,GAAWtK,OAC3C,OAAKuf,GAAwBD,GAAWC,IAAyBG,EACxDN,EAEF,CACLhB,GAAkD,OAA7CoB,EAAsBE,EAAIC,qBAA0B,EAASH,EAAoBI,aAAe,EACrGvB,GAAmD,OAA9CoB,EAAuBC,EAAIC,qBAA0B,EAASF,EAAqBI,YAAc,GAI1G,SAASp7B,EAAsB6lB,EAASwV,EAAcC,EAAiBC,QAChD,IAAjBF,IACFA,GAAe,QAEO,IAApBC,IACFA,GAAkB,GAEpB,MAAME,EAAa3V,EAAQ7lB,wBACrBw6B,EAAaH,EAAcxU,GACjC,IAAI4V,EAAQ/B,EAAkB,GAC1B2B,IACEE,EACErD,EAAUqD,KACZE,EAAQlB,EAASgB,IAGnBE,EAAQlB,EAAS1U,IAGrB,MAAM6V,EAAgBd,EAAiBJ,EAAYc,EAAiBC,GACpE,IAAI5B,GAAK6B,EAAWv7B,KAAOy7B,EAAc/B,GAAK8B,EAAM9B,EAChDC,GAAK4B,EAAW7oB,IAAM+oB,EAAc9B,GAAK6B,EAAM7B,EAC/CE,EAAQ0B,EAAW1B,MAAQ2B,EAAM9B,EACjCI,EAASyB,EAAWzB,OAAS0B,EAAM7B,EACvC,GAAIY,EAAY,CACd,MAAMS,EAAM1D,EAAUiD,GAChBmB,EAAYJ,GAAgBrD,EAAUqD,GAAgBhE,EAAUgE,GAAgBA,EACtF,IAAIK,EAAgBX,EAAIY,aACxB,KAAOD,GAAiBL,GAAgBI,IAAcV,GAAK,CACzD,MAAMa,EAAcvB,EAASqB,GACvBG,EAAaH,EAAc57B,wBAC3B+4B,EAAMnB,iBAAiBgE,GACvB37B,EAAO87B,EAAW97B,MAAQ27B,EAAcI,WAAa5uC,WAAW2rC,EAAIkD,cAAgBH,EAAYnC,EAChGhnB,EAAMopB,EAAWppB,KAAOipB,EAAcM,UAAY9uC,WAAW2rC,EAAIoD,aAAeL,EAAYlC,EAClGD,GAAKmC,EAAYnC,EACjBC,GAAKkC,EAAYlC,EACjBE,GAASgC,EAAYnC,EACrBI,GAAU+B,EAAYlC,EACtBD,GAAK15B,EACL25B,GAAKjnB,EACLipB,EAAgBrE,EAAUqE,GAAeC,cAG7C,OAAO,YAAiB,CACtB/B,QACAC,SACAJ,IACAC,MAIJ,SAASwC,EAAmB3tB,GAC1B,QAASopB,EAAOppB,GAAQA,EAAKgpB,cAAgBhpB,EAAKrM,WAAamZ,OAAOnZ,UAAUi6B,gBAGlF,SAASC,EAAczW,GACrB,OAAIqS,EAAUrS,GACL,CACL0W,WAAY1W,EAAQ0W,WACpBC,UAAW3W,EAAQ2W,WAGhB,CACLD,WAAY1W,EAAQ4W,YACpBD,UAAW3W,EAAQ6W,aAwCvB,SAASC,EAAoB9W,GAG3B,OAAO7lB,EAAsBo8B,EAAmBvW,IAAU5lB,KAAOq8B,EAAczW,GAAS0W,WAwB1F,SAASK,EAAcnuB,GACrB,GAA0B,SAAtBspB,EAAYtpB,GACd,OAAOA,EAET,MAAMjkB,EAENikB,EAAKouB,cAELpuB,EAAKquB,YAEL1E,EAAa3pB,IAASA,EAAKsuB,MAE3BX,EAAmB3tB,GACnB,OAAO2pB,EAAa5tC,GAAUA,EAAOuyC,KAAOvyC,EAc9C,SAASwyC,EAAqBvuB,EAAMwuB,GAClC,IAAIzF,OACS,IAATyF,IACFA,EAAO,IAET,MAAMC,EAhBR,SAASC,EAA2B1uB,GAClC,MAAMquB,EAAaF,EAAcnuB,GACjC,OAAI8qB,EAAsBuD,GACjBruB,EAAKgpB,cAAgBhpB,EAAKgpB,cAAc2F,KAAO3uB,EAAK2uB,KAEzDnF,EAAc6E,IAAexE,EAAkBwE,GAC1CA,EAEFK,EAA2BL,GAQPK,CAA2B1uB,GAChD4uB,EAASH,KAAsE,OAA7C1F,EAAsB/oB,EAAKgpB,oBAAyB,EAASD,EAAoB4F,MACnHnC,EAAM1D,EAAU2F,GACtB,OAAIG,EACKJ,EAAKjyB,OAAOiwB,EAAKA,EAAIC,gBAAkB,GAAI5C,EAAkB4E,GAAsBA,EAAqB,IAE1GD,EAAKjyB,OAAOkyB,EAAoBF,EAAqBE,IA6C9D,SAASI,EAAkCzX,EAAS0X,EAAkB1jB,GACpE,IAAI4gB,EACJ,GAAyB,aAArB8C,EACF9C,EA7CJ,SAAyB5U,EAAShM,GAChC,MAAMohB,EAAM1D,EAAU1R,GAChB0J,EAAO6M,EAAmBvW,GAC1BqV,EAAiBD,EAAIC,eAC3B,IAAIpB,EAAQvK,EAAKiO,YACbzD,EAASxK,EAAKkO,aACd9D,EAAI,EACJC,EAAI,EACR,GAAIsB,EAAgB,CAClBpB,EAAQoB,EAAepB,MACvBC,EAASmB,EAAenB,OACxB,MAAM2D,EAAsB5E,MACvB4E,GAAuBA,GAAoC,UAAb7jB,KACjD8f,EAAIuB,EAAeC,WACnBvB,EAAIsB,EAAeE,WAGvB,MAAO,CACLtB,QACAC,SACAJ,IACAC,KAwBO+D,CAAgB9X,EAAShM,QAC3B,GAAyB,aAArB0jB,EACT9C,EA3GJ,SAAyB5U,GACvB,MAAM0J,EAAO6M,EAAmBvW,GAC1B+X,EAAStB,EAAczW,GACvBuX,EAAOvX,EAAQ4R,cAAc2F,KAC7BtD,EAAQp5B,EAAI6uB,EAAKsO,YAAatO,EAAKiO,YAAaJ,EAAKS,YAAaT,EAAKI,aACvEzD,EAASr5B,EAAI6uB,EAAKuO,aAAcvO,EAAKkO,aAAcL,EAAKU,aAAcV,EAAKK,cACjF,IAAI9D,GAAKiE,EAAOrB,WAAaI,EAAoB9W,GACjD,MAAM+T,GAAKgE,EAAOpB,UAIlB,MAH2C,QAAvC7E,EAAmByF,GAAMl4B,YAC3By0B,GAAKj5B,EAAI6uB,EAAKiO,YAAaJ,EAAKI,aAAe1D,GAE1C,CACLA,QACAC,SACAJ,IACAC,KA4FOmE,CAAgB3B,EAAmBvW,SACrC,GAAIqS,EAAUqF,GACnB9C,EAvBJ,SAAoC5U,EAAShM,GAC3C,MAAM2hB,EAAax7B,EAAsB6lB,GAAS,EAAmB,UAAbhM,GAClDlH,EAAM6oB,EAAW7oB,IAAMkT,EAAQqW,UAC/Bj8B,EAAOu7B,EAAWv7B,KAAO4lB,EAAQmW,WACjCP,EAAQxD,EAAcpS,GAAW0U,EAAS1U,GAAW6T,EAAkB,GAK7E,MAAO,CACLI,MALYjU,EAAQ2X,YAAc/B,EAAM9B,EAMxCI,OALalU,EAAQ4X,aAAehC,EAAM7B,EAM1CD,EALQ15B,EAAOw7B,EAAM9B,EAMrBC,EALQjnB,EAAM8oB,EAAM7B,GAeboE,CAA2BT,EAAkB1jB,OAC/C,CACL,MAAM6hB,EAAgBd,EAAiB/U,GACvC4U,EAAO,IACF8C,EACH5D,EAAG4D,EAAiB5D,EAAI+B,EAAc/B,EACtCC,EAAG2D,EAAiB3D,EAAI8B,EAAc9B,GAG1C,OAAO,YAAiBa,GAE1B,SAASwD,EAAyBpY,EAASqY,GACzC,MAAMpB,EAAaF,EAAc/W,GACjC,QAAIiX,IAAeoB,IAAahG,EAAU4E,IAAevD,EAAsBuD,MAG5B,UAA5CnF,EAAmBmF,GAAYqB,UAAwBF,EAAyBnB,EAAYoB,IAqErG,SAASE,EAAoBvY,EAASwY,GACpC,OAAKpG,EAAcpS,IAAqD,UAAzC8R,EAAmB9R,GAASsY,SAGvDE,EACKA,EAASxY,GAEXA,EAAQ0V,aALN,KAqBX,SAAS+C,EAAgBzY,EAASwY,GAChC,MAAM9iB,EAASgc,EAAU1R,GACzB,IAAKoS,EAAcpS,GACjB,OAAOtK,EAET,IAAIggB,EAAe6C,EAAoBvY,EAASwY,GAChD,KAAO9C,GAAgB5C,EAAe4C,IAA+D,WAA9C5D,EAAmB4D,GAAc4C,UACtF5C,EAAe6C,EAAoB7C,EAAc8C,GAEnD,OAAI9C,IAA+C,SAA9BxD,EAAYwD,IAA0D,SAA9BxD,EAAYwD,IAA0E,WAA9C5D,EAAmB4D,GAAc4C,WAA0BvF,EAAkB2C,IACzKhgB,EAEFggB,GA1BT,SAA4B1V,GAC1B,IAAI0Y,EAAc3B,EAAc/W,GAChC,KAAOoS,EAAcsG,KAAiBhF,EAAsBgF,IAAc,CACxE,GAAI3F,EAAkB2F,GACpB,OAAOA,EAEPA,EAAc3B,EAAc2B,GAGhC,OAAO,KAiBgBC,CAAmB3Y,IAAYtK,EAGxD,SAASkjB,EAA8B5Y,EAAS0V,EAAc1hB,GAC5D,MAAM6kB,EAA0BzG,EAAcsD,GACxCc,EAAkBD,EAAmBb,GACrCV,EAAuB,UAAbhhB,EACV4gB,EAAOz6B,EAAsB6lB,GAAS,EAAMgV,EAASU,GAC3D,IAAIqC,EAAS,CACXrB,WAAY,EACZC,UAAW,GAEb,MAAMmC,EAAUjF,EAAkB,GAClC,GAAIgF,IAA4BA,IAA4B7D,EAI1D,IAHkC,SAA9B9C,EAAYwD,IAA4BjD,EAAkB+D,MAC5DuB,EAAStB,EAAcf,IAErBtD,EAAcsD,GAAe,CAC/B,MAAMqD,EAAa5+B,EAAsBu7B,GAAc,EAAMV,EAASU,GACtEoD,EAAQhF,EAAIiF,EAAWjF,EAAI4B,EAAaS,WACxC2C,EAAQ/E,EAAIgF,EAAWhF,EAAI2B,EAAaW,eAC/BG,IACTsC,EAAQhF,EAAIgD,EAAoBN,IAGpC,MAAO,CACL1C,EAAGc,EAAKx6B,KAAO29B,EAAOrB,WAAaoC,EAAQhF,EAC3CC,EAAGa,EAAK9nB,IAAMirB,EAAOpB,UAAYmC,EAAQ/E,EACzCE,MAAOW,EAAKX,MACZC,OAAQU,EAAKV,QAIjB,MAAM8E,EAAW,CACfC,gBAnGF,SAAyB3gC,GACvB,IAAI,QACF0nB,EAAO,SACPkZ,EAAQ,aACRC,EAAY,SACZnlB,GACE1b,EACJ,MACM8gC,EAAoB,IADoB,sBAAbF,EAxCnC,SAAqClZ,EAASqZ,GAC5C,MAAMC,EAAeD,EAAM1vC,IAAIq2B,GAC/B,GAAIsZ,EACF,OAAOA,EAET,IAAI30C,EAASwyC,EAAqBnX,GAASvqB,OAAO6G,GAAM+1B,EAAU/1B,IAA2B,SAApB41B,EAAY51B,IACjFi9B,EAAsC,KAC1C,MAAMC,EAA0D,UAAzC1H,EAAmB9R,GAASsY,SACnD,IAAII,EAAcc,EAAiBzC,EAAc/W,GAAWA,EAG5D,KAAOqS,EAAUqG,KAAiBhF,EAAsBgF,IAAc,CACpE,MAAMe,EAAgB3H,EAAmB4G,GACnCgB,EAA0B3G,EAAkB2F,GAC7CgB,GAAsD,UAA3BD,EAAcnB,WAC5CiB,EAAsC,OAEVC,GAAkBE,IAA4BH,GAAuCG,GAAsD,WAA3BD,EAAcnB,YAA2BiB,GAAuC,CAAC,WAAY,SAASn0C,SAASm0C,EAAoCjB,WAAa7F,EAAkBiG,KAAiBgB,GAA2BtB,EAAyBpY,EAAS0Y,IAG5Y/zC,EAASA,EAAO8Q,OAAOkkC,GAAYA,IAAajB,GAGhDa,EAAsCE,EAExCf,EAAc3B,EAAc2B,GAG9B,OADAW,EAAMzvC,IAAIo2B,EAASr7B,GACZA,EAY6Di1C,CAA4B5Z,EAASvyB,KAAKsG,IAAM,GAAGoR,OAAO+zB,GACtEC,GAClDU,EAAwBT,EAAkB,GAC1CU,EAAeV,EAAkB90C,OAAO,CAACy1C,EAASrC,KACtD,MAAM9C,EAAO6C,EAAkCzX,EAAS0X,EAAkB1jB,GAK1E,OAJA+lB,EAAQjtB,IAAMjS,EAAI+5B,EAAK9nB,IAAKitB,EAAQjtB,KACpCitB,EAAQC,MAAQrG,EAAIiB,EAAKoF,MAAOD,EAAQC,OACxCD,EAAQhtB,OAAS4mB,EAAIiB,EAAK7nB,OAAQgtB,EAAQhtB,QAC1CgtB,EAAQ3/B,KAAOS,EAAI+5B,EAAKx6B,KAAM2/B,EAAQ3/B,MAC/B2/B,GACNtC,EAAkCzX,EAAS6Z,EAAuB7lB,IACrE,MAAO,CACLigB,MAAO6F,EAAaE,MAAQF,EAAa1/B,KACzC85B,OAAQ4F,EAAa/sB,OAAS+sB,EAAahtB,IAC3CgnB,EAAGgG,EAAa1/B,KAChB25B,EAAG+F,EAAahtB,MA8ElBmtB,sDApTF,SAA+D3hC,GAC7D,IAAI,KACFs8B,EAAI,aACJc,EAAY,SACZ1hB,GACE1b,EACJ,MAAMugC,EAA0BzG,EAAcsD,GACxCc,EAAkBD,EAAmBb,GAC3C,GAAIA,IAAiBc,EACnB,OAAO5B,EAET,IAAImD,EAAS,CACXrB,WAAY,EACZC,UAAW,GAETf,EAAQ/B,EAAkB,GAC9B,MAAMiF,EAAUjF,EAAkB,GAClC,IAAIgF,IAA4BA,GAAwC,UAAb7kB,MACvB,SAA9Bke,EAAYwD,IAA4BjD,EAAkB+D,MAC5DuB,EAAStB,EAAcf,IAErBtD,EAAcsD,IAAe,CAC/B,MAAMqD,EAAa5+B,EAAsBu7B,GACzCE,EAAQlB,EAASgB,GACjBoD,EAAQhF,EAAIiF,EAAWjF,EAAI4B,EAAaS,WACxC2C,EAAQ/E,EAAIgF,EAAWhF,EAAI2B,EAAaW,UAG5C,MAAO,CACLpC,MAAOW,EAAKX,MAAQ2B,EAAM9B,EAC1BI,OAAQU,EAAKV,OAAS0B,EAAM7B,EAC5BD,EAAGc,EAAKd,EAAI8B,EAAM9B,EAAIiE,EAAOrB,WAAad,EAAM9B,EAAIgF,EAAQhF,EAC5DC,EAAGa,EAAKb,EAAI6B,EAAM7B,EAAIgE,EAAOpB,UAAYf,EAAM7B,EAAI+E,EAAQ/E,IAqR7D1B,YACA6H,cA5EF,SAAuBla,GACrB,OAAOgU,EAAiBhU,IA4ExByY,kBACAlC,qBACA7B,WACA,sBAAsBp8B,GACpB,IAAI,UACF6hC,EAAS,SACTC,EAAQ,SACRpmB,GACE1b,EACJ,MAAM+hC,EAAoB5sC,KAAKgrC,iBAAmBA,EAC5C6B,EAAkB7sC,KAAKysC,cAC7B,MAAO,CACLC,UAAWvB,EAA8BuB,QAAiBE,EAAkBD,GAAWpmB,GACvFomB,SAAU,CACRtG,EAAG,EACHC,EAAG,WACOuG,EAAgBF,MAIhCG,eAAgBva,GAAW57B,MAAM+wB,KAAK6K,EAAQua,kBAC9CC,MAAOxa,GAAqD,QAA1C8R,EAAmB9R,GAAS3gB,WAqFhD,SAASo7B,EAAWN,EAAWC,EAAUM,EAAQ5zC,QAC/B,IAAZA,IACFA,EAAU,IAEZ,MAAM,eACJ6zC,GAAiB,EAAI,eACrBC,GAAiB,EAAI,cACrBC,EAA0C,mBAAnBC,eAA6B,YACpDC,EAA8C,mBAAzBC,qBAAmC,eACxDC,GAAiB,GACfn0C,EACEo0C,EAAc1G,EAAc2F,GAC5BgB,EAAYR,GAAkBC,EAAiB,IAAKM,EAAc/D,EAAqB+D,GAAe,MAAQ/D,EAAqBiD,IAAa,GACtJe,EAAUtxC,QAAQ8vC,IAChBgB,GAAkBhB,EAAS7Y,iBAAiB,SAAU4Z,EAAQ,CAC5DU,SAAS,IAEXR,GAAkBjB,EAAS7Y,iBAAiB,SAAU4Z,KAExD,MAAMW,EAAYH,GAAeH,EApGnC,SAAqB/a,EAASsb,GAC5B,IACIC,EADAC,EAAK,KAET,MAAMC,EAAOlF,EAAmBvW,GAChC,SAAS0b,IACPC,aAAaJ,GACbC,GAAMA,EAAGI,aACTJ,EAAK,KA+DP,OA7DA,SAASK,EAAQC,EAAMC,QACR,IAATD,IACFA,GAAO,QAES,IAAdC,IACFA,EAAY,GAEdL,IACA,MAAM,KACJthC,EAAI,IACJ0S,EAAG,MACHmnB,EAAK,OACLC,GACElU,EAAQ7lB,wBAIZ,GAHK2hC,GACHR,KAEGrH,IAAUC,EACb,OAEF,MAKMptC,EAAU,CACdk1C,YANez1C,EAAMumB,GAIQ,OAHZvmB,EAAMk1C,EAAK9D,aAAev9B,EAAO65B,IAGC,OAFjC1tC,EAAMk1C,EAAK7D,cAAgB9qB,EAAMonB,IAEuB,OAD1D3tC,EAAM6T,GACyE,KAG/F2hC,UAAWlhC,EAAI,EAAG84B,EAAI,EAAGoI,KAAe,GAE1C,IAAIE,GAAgB,EACpB,SAASC,EAAcC,GACrB,MAAMC,EAAQD,EAAQ,GAAGE,kBACzB,GAAID,IAAUL,EAAW,CACvB,IAAKE,EACH,OAAOJ,IAEJO,EAKHP,GAAQ,EAAOO,GAJfb,EAAYe,WAAW,KACrBT,GAAQ,EAAO,OACd,KAKPI,GAAgB,EAKlB,IACET,EAAK,IAAIR,qBAAqBkB,EAAe,IACxCp1C,EAEH20C,KAAMA,EAAK7J,gBAEb,MAAOvvB,GACPm5B,EAAK,IAAIR,qBAAqBkB,EAAep1C,GAE/C00C,EAAGe,QAAQvc,GAEb6b,EAAQ,GACDH,EA8BwCc,CAAYtB,EAAaR,GAAU,KAClF,IAqBI+B,EArBAC,GAAkB,EAClBC,EAAiB,KACjB9B,IACF8B,EAAiB,IAAI7B,eAAexiC,IAClC,IAAKskC,GAActkC,EACfskC,GAAcA,EAAWvmC,SAAW6kC,GAAeyB,IAGrDA,EAAeE,UAAUzC,GACzB0C,qBAAqBJ,GACrBA,EAAiB/mB,sBAAsB,KACrCgnB,GAAkBA,EAAeJ,QAAQnC,MAG7CM,MAEEQ,IAAgBD,GAClB0B,EAAeJ,QAAQrB,GAEzByB,EAAeJ,QAAQnC,IAGzB,IAAI2C,EAAc9B,EAAiB9gC,EAAsBggC,GAAa,KAatE,OAZIc,GAGJ,SAAS+B,IACP,MAAMC,EAAc9iC,EAAsBggC,IACtC4C,GAAgBE,EAAYnJ,IAAMiJ,EAAYjJ,GAAKmJ,EAAYlJ,IAAMgJ,EAAYhJ,GAAKkJ,EAAYhJ,QAAU8I,EAAY9I,OAASgJ,EAAY/I,SAAW6I,EAAY7I,QACtKwG,IAEFqC,EAAcE,EACdR,EAAU9mB,sBAAsBqnB,GARhCA,GAUFtC,IACO,KACLS,EAAUtxC,QAAQ8vC,IAChBgB,GAAkBhB,EAAStY,oBAAoB,SAAUqZ,GACzDE,GAAkBjB,EAAStY,oBAAoB,SAAUqZ,KAE3DW,GAAaA,IACbsB,GAAkBA,EAAef,aACjCe,EAAiB,KACb1B,GACF6B,qBAAqBL,IAU3B,MAAMS,EAAkB,CAAC/C,EAAWC,EAAUtzC,KAI5C,MAAMuyC,EAAQ,IAAIzZ,IACZud,EAAgB,CACpBnE,cACGlyC,GAECs2C,EAAoB,IACrBD,EAAcnE,SACjBjlC,GAAIslC,GAEN,OAAO,YAAkBc,EAAWC,EAAU,IACzC+C,EACHnE,SAAUoE,M,kCChtBd,4MAeA,MAAMC,EAAYx4C,IAChBA,EAAQ,YAAUA,EAAO,IACV,EAAIA,EAAQ,KAIvBy4C,EAAgBz4C,GAAS,YAAkBA,IAAUw4C,EAAUx4C,GAAS,EAIxEmF,EAAQ,YAAsB,CAClCuzC,QAAS,YAAS,IAAyB,KAAMD,GACjDE,QAAS,YAAS,IAAyB,KAAMF,GACjDG,eAAgB,YAAS,KACzBtV,aAAc,YAAS,KAAmB,GAC1C/U,QAAS,YAAS,MACjB,KAQGsqB,EAAmB,YAAO,CAC9BlrC,KAAM,IAENsT,OAAQ,CAAC,IAAY,IAAgB,KACrCrR,OAAQ,CACNkpC,aAAc,CACZlqC,QAAmC,IAAM,KAAM,MAGnDiB,cAAc,EACd1K,QACAsL,SAAU,CACR,YACE,OAAO7H,KAAKkwC,gBAGdn0C,IAAG,IACM,KAET,UACE,OAAOiE,KAAKmwC,UAAUC,SAExB,UACE,OAAOpwC,KAAKmwC,UAAUE,SAExB,UACE,OAAOrwC,KAAKmwC,UAAUG,SAExB,SACE,OAAOtwC,KAAKmwC,UAAUI,QAExB,YACE,OAAOvwC,KAAKmwC,UAAUx3B,WAGxB,gBACE,OAAO3Y,KAAKowC,SAAWpwC,KAAK2Y,WAE9B,eACE,OAAO3Y,KAAKmwC,UAAUv3B,cAKxB,iBACE,OAAO5Y,KAAKmwC,UAAUt3B,gBAIxB,kBACE,OAAO7Y,KAAKmwC,UAAUK,iBAOxB,iBACE,OAAQxwC,KAAK2Y,YAAc3Y,KAAK4Y,cAAgB5Y,KAAKwwC,kBAAoBxwC,KAAK06B,cAEhF,aACE,OAAO16B,KAAKmwC,UAAUxqB,SAExB,cACE,OAAO3lB,KAAKmwC,UAAUrxB,aAExB,cACE,OAAO9e,KAAKmwC,UAAUh4B,aAExB,eACE,OAAOnY,KAAKmwC,UAAUp3B,cAExB,kBACE,OAAO62B,EAAU5vC,KAAK8vC,UAExB,kBACE,OAAOF,EAAU5vC,KAAK+vC,UAIxB,cACE,IAAI,QACFpqB,EAAO,YACP7G,EAAW,eACX2xB,GACEzwC,KAMJ,QALK2lB,GAAW3lB,KAAK6Y,iBAAmBiG,IAAgB6G,GAAW8qB,GAAkBzwC,KAAKswC,UAAYtwC,KAAKmY,cAAgBwN,GAAW8qB,GAAkBzwC,KAAKqwC,UAAYvxB,IAAgB6G,GAAW8qB,GAAkBzwC,KAAKowC,WAGzNzqB,EAAU3lB,KAAK0wC,YAAc1wC,KAAK+Y,cAAgB,mBAE7C,CAAC4M,EAAU,GAAG3lB,KAAKuwC,OAAS,KAAO,WAAW5qB,IAAY,KAAM8qB,EAAiB,wBAA0B,OAEpH,YACE,MAAM,eACJT,GACEhwC,KAIE2wC,EAAa3wC,KAAKqwC,SAAWrwC,KAAKswC,QAElCR,EAAU9vC,KAAK4wC,gBACfb,EAAU/vC,KAAK6wC,gBAErB,IAAI53B,EAAO,OACP+e,EAAQ,KAaZ,OATI2Y,GAEF13B,EAAO,eACP+e,EAAQ8X,EAAU,EAAI,UAAY,OACzB,YAAM9vC,KAAKjE,IAAK,QAEzBkd,EAAO,YACP+e,EAAQ+X,EAAU,EAAI,WAAa,OAE9B,CACLD,UACAC,UACA92B,OACA+e,WAEGh4B,KAAKgZ,QAGR,aAAchZ,KAAK8wC,gBAAkB,YAAkBd,GAA4C,YAASA,GAAkB,QAIpI,OAAO92B,GACL,MAAM8iB,EAAW,CAACh8B,KAAKsZ,iBACvB,OAAOJ,EAAElZ,KAAKjE,IAAK,CACjByK,MAAOxG,KAAK+wC,YACZtqC,MAAOzG,KAAKgxC,UAEZ9nC,GAAIlJ,KAAKqZ,aACR,CAACrZ,KAAK8wC,cAAgB53B,EAAE,MAAO,CAAC8iB,IAAaA,Q,kCClLpD,uHAOA,MAAMiV,EAAa,uBA6GnB,MAAMtrC,EA5GO,CACXZ,KAAM,IACNksC,aACApqC,WAAY,CACVqqC,MAAA,KAEF30C,MAAO,CACL2T,KAAM,CACJrK,KAAMsB,OACNpB,UAAU,EACVC,QAAS,KACT0B,UAAW,MAGfG,SAAU,CACR,SACE,IAAIspC,EAAYC,EAChB,MAA0G,iBAA9D,QAA5BD,EAAanxC,KAAKkQ,YAAiC,IAAfihC,OAAwB,EAASA,EAAWE,OAA0H,iBAA9D,QAA7BD,EAAcpxC,KAAKkQ,YAAkC,IAAhBkhC,OAAyB,EAASA,EAAYE,KAEpN,kBACE,OAAOxrC,QAAQ9F,KAAK4mB,aAAa5gB,UAEnC,gBACE,MAAM,KACJkK,GACElQ,KACJ,OAAIA,KAAKuxC,OAAe,CACtBC,GAAI,IACJ/qC,MAAO,CACL4qC,KAAMnhC,EAAKmhC,KACXC,GAAIphC,EAAKohC,MACNphC,EAAKuhC,YAEVxZ,UAAW,CACT4C,MAAO76B,KAAKgoB,SAGT,CACLwpB,GAAI,SACJ/qC,MAAO,IACDyJ,aAAmC,EAASA,EAAKuhC,WACrD5rC,KAAM,UAERoyB,UAAW,CACT4C,MAAO,KACL,IAAI6W,EACJxhC,SAA6E,QAAhCwhC,EAAexhC,EAAK8X,cAAqC,IAAjB0pB,GAAmCA,EAAar/B,UAAKrc,EAAWka,GACrJlQ,KAAKgoB,aAKb,YACE,IAAI2pB,EAAaC,EACjB,OAAqC,QAA7BD,EAAc3xC,KAAKkQ,YAAkC,IAAhByhC,GAA+E,QAApDC,EAAwBD,EAAYF,kBAAkD,IAA1BG,GAAoCA,EAAsBjmC,SAAW,KAAO,GAElN,iBACE,IAAIkmC,EAAaC,EACjB,OAAqC,QAA7BD,EAAc7xC,KAAKkQ,YAAkC,IAAhB2hC,GAA+E,QAApDC,EAAwBD,EAAYJ,kBAAkD,IAA1BK,GAAoCA,EAAsBnmC,SAAW,MAAQ,GAEnN,eACE,IAAIomC,EAAuBC,EAC3B,OAAsI,QAA9HD,EAAsD,QAA7BC,EAAchyC,KAAKkQ,YAAkC,IAAhB8hC,OAAyB,EAASA,EAAYC,oBAAoD,IAA1BF,EAAmCA,EAAwB,IAE3M,mBACE,MAAM9Z,EAAY,CAChB8C,QAAS/6B,KAAK0oB,WAKhB,OAHI1oB,KAAKkyC,kBACPja,EAAU4C,MAAQ76B,KAAKgoB,QAElBiQ,IAGXxvB,QAAS,CACP,UAAUE,GACR,MAAM,KACJqe,GACEre,EACJ,GAAIqe,IAAS,KAASA,IAAS,IAC7B,GAAIhnB,KAAKkyC,gBACPlyC,KAAKgoB,aACA,CACL,YAAUrf,GAKV,MAAMiM,EAAI,IAAIu9B,WAAW,QAAS,CAChCC,SAAS,EACTC,YAAY,IAKZ,IAAI5d,EAHN,GAAIz0B,KAAKuxC,OACPvxC,KAAKiV,MAAM/E,KAAKrD,IAAIylC,cAAc19B,QAGO,QAAxC6f,EAAmBz0B,KAAKiV,MAAM/E,YAAuC,IAArBukB,GAAuCA,EAAiB6d,cAAc19B,KAK/H,SACE5U,KAAKoI,MAAM,SAAUpI,KAAKkQ,SAa9B,MAeMjK,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,KAAKwC,EAAIvC,GAAG,CAACC,MAAM,CAACsC,EAAIwf,SAAS2oB,WAAYnoC,EAAImpC,cAAcxrC,MAAM,CAAC,SAAWqC,EAAIypC,UAAU,cAAc,6BAA6BzpC,EAAI0pC,kBAAkB,CAAC1pC,EAAInC,GAAG,WAAU,WAAW,MAAO,CAACL,EAAGwC,EAAI2pC,cAAcjB,GAAG1oC,EAAIvC,GAAGuC,EAAIe,GAAG,CAACb,IAAI,OAAOjN,IAAI,YAAYgN,YAAY,+BAA+BtC,MAAM,CAAC,SAAWqC,EAAI4pC,iBAAiB,YAAY5pC,EAAI2pC,cAAchsC,OAAM,GAAOqC,EAAI2pC,cAAcxa,WAAW,CAAC3xB,EAAG,OAAO,CAACyC,YAAY,qCAAqC,CAACD,EAAInC,GAAG,aAAY,WAAW,MAAO,CAACmC,EAAIa,GAAG,eAAeb,EAAIc,GAAGd,EAAIoH,KAAKY,MAAM,mBAAkB,UAAS,IAoBzpBlK,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,oCCvJf,soBAKA,MAAM28C,EAAQ,CAAC,MAAO,QAAS,SAAU,QACnCC,EAAa,CAAC,QAAS,OACvBC,EAA0BF,EAAM97C,OAAO,CAACi8C,EAAKC,IAASD,EAAIp7B,OAAOq7B,EAAMA,EAAO,IAAMH,EAAW,GAAIG,EAAO,IAAMH,EAAW,IAAK,IAChI1M,EAAMrtC,KAAKqtC,IACX94B,EAAMvU,KAAKuU,IAOX4lC,GANQn6C,KAAKstC,MACLttC,KAAKC,MAKK,CACtB6T,KAAM,QACN4/B,MAAO,OACPjtB,OAAQ,MACRD,IAAK,WAED4zB,EAAuB,CAC3BnwB,MAAO,MACP+V,IAAK,SAEP,SAASqa,EAAMpwB,EAAO1rB,EAAOyhC,GAC3B,OAAOzrB,EAAI0V,EAAOojB,EAAI9uC,EAAOyhC,IAE/B,SAASsa,EAAS/7C,EAAOg8C,GACvB,MAAwB,mBAAVh8C,EAAuBA,EAAMg8C,GAASh8C,EAEtD,SAASi8C,EAAQrtB,GACf,OAAOA,EAAUttB,MAAM,KAAK,GAE9B,SAAS46C,EAAattB,GACpB,OAAOA,EAAUttB,MAAM,KAAK,GAE9B,SAAS66C,EAAgBC,GACvB,MAAgB,MAATA,EAAe,IAAM,IAE9B,SAASC,EAAcD,GACrB,MAAgB,MAATA,EAAe,SAAW,QAEnC,SAASE,EAAY1tB,GACnB,MAAO,CAAC,MAAO,UAAUruB,SAAS07C,EAAQrtB,IAAc,IAAM,IAEhE,SAAS2tB,EAAiB3tB,GACxB,OAAOutB,EAAgBG,EAAY1tB,IAErC,SAAS4tB,EAAkB5tB,EAAW6tB,EAAOC,QAC/B,IAARA,IACFA,GAAM,GAER,MAAMC,EAAYT,EAAattB,GACzBguB,EAAgBL,EAAiB3tB,GACjCjwB,EAAS09C,EAAcO,GAC7B,IAAIC,EAAsC,MAAlBD,EAAwBD,KAAeD,EAAM,MAAQ,SAAW,QAAU,OAAuB,UAAdC,EAAwB,SAAW,MAI9I,OAHIF,EAAMnH,UAAU32C,GAAU89C,EAAMlH,SAAS52C,KAC3Ck+C,EAAoBC,EAAqBD,IAEpC,CAACA,EAAmBC,EAAqBD,IAElD,SAASE,EAAsBnuB,GAC7B,MAAMouB,EAAoBF,EAAqBluB,GAC/C,MAAO,CAACquB,EAA8BruB,GAAYouB,EAAmBC,EAA8BD,IAErG,SAASC,EAA8BruB,GACrC,OAAOA,EAAU/sB,QAAQ,aAAc86C,GAAad,EAAqBc,IAmB3E,SAASO,EAA0BtuB,EAAWuuB,EAAe3iC,EAAWkiC,GACtE,MAAMC,EAAYT,EAAattB,GAC/B,IAAI2jB,EAnBN,SAAqBoJ,EAAMyB,EAASV,GAClC,MAAMW,EAAK,CAAC,OAAQ,SACdC,EAAK,CAAC,QAAS,QACfC,EAAK,CAAC,MAAO,UACbC,EAAK,CAAC,SAAU,OACtB,OAAQ7B,GACN,IAAK,MACL,IAAK,SACH,OAAIe,EAAYU,EAAUE,EAAKD,EACxBD,EAAUC,EAAKC,EACxB,IAAK,OACL,IAAK,QACH,OAAOF,EAAUG,EAAKC,EACxB,QACE,MAAO,IAKAC,CAAYxB,EAAQrtB,GAA0B,UAAdpU,EAAuBkiC,GAOlE,OANIC,IACFpK,EAAOA,EAAKhxC,IAAIo6C,GAAQA,EAAO,IAAMgB,GACjCQ,IACF5K,EAAOA,EAAKjyB,OAAOiyB,EAAKhxC,IAAI07C,MAGzB1K,EAET,SAASuK,EAAqBluB,GAC5B,OAAOA,EAAU/sB,QAAQ,yBAA0B85C,GAAQC,EAAgBD,IAW7E,SAAS+B,EAAiBC,GACxB,MAA0B,iBAAZA,EAVhB,SAA6BA,GAC3B,MAAO,CACL11B,IAAK,EACLktB,MAAO,EACPjtB,OAAQ,EACR3S,KAAM,KACHooC,GAIgCC,CAAoBD,GAAW,CAClE11B,IAAK01B,EACLxI,MAAOwI,EACPz1B,OAAQy1B,EACRpoC,KAAMooC,GAGV,SAASE,EAAiB9N,GACxB,MAAM,EACJd,EAAC,EACDC,EAAC,MACDE,EAAK,OACLC,GACEU,EACJ,MAAO,CACLX,QACAC,SACApnB,IAAKinB,EACL35B,KAAM05B,EACNkG,MAAOlG,EAAIG,EACXlnB,OAAQgnB,EAAIG,EACZJ,IACAC,O,mBCpIJzwC,EAAQ6tB,YAAc,CAGpB,KAAQ,UACR,UAAa,eACb,QAAW,UACX,UAAa,YACb,OAAU,WACV,UAAa,cACb,cAAiB,kBACjB,WAAc,eACd,MAAS,OAGT,SAAY,aACZ,QAAW,UACX,SAAY,MAGZ,GAAM,cACN,EAAK,YACL,EAAK,WACL,IAAO,QACP,QAAW,YACX,OAAU,WACV,IAAO,OACP,QAAW,WACX,MAAS,SACT,MAAS,MACT,UAAa,MACb,WAAc,SACd,QAAW,YACX,SAAY,WACZ,OAAU,QACV,WAAc,QACd,SAAY,YACZ,cAAiB,iBACjB,OAAU,UACV,UAAa,KACb,QAAW,QACX,KAAQ,UACR,UAAa,SACb,KAAQ,OACR,QAAW,OACX,KAAQ,MACR,KAAQ,MACR,OAAU,kBACV,OAAU,QACV,MAAS,KACT,QAAW,OACX,KAAQ,OACR,MAAS,MACT,KAAQ,MACR,OAAU,kBACV,OAAU,QACV,MAAS,KACT,oBAAuB,MACvB,sBAAyB,QACzB,wBAA2B,UAC3B,SAAY,YACZ,cAAiB,iBACjB,QAAW,OACX,OAAU,UACV,QAAW,WACX,MAAS,aACT,QAAW,UACX,OAAU,aAIZ7tB,EAAQ+rB,UAAY,CAClB,EAAK,CACH,YAAa,cAAe,UAAW,YAAa,OAAQ,SAC5D,QAAS,aAAc,cAAe,kBAAmB,QAAS,OAClE,YAAa,YAAa,SAAU,WAAY,UAAW,SAAU,WACrE,WAAY,QAAS,SAAU,OAAQ,YAAa,WAAW,OAAQ,UACvE,QAAS,eAAgB,SAAU,WAAY,OAAQ,UAAW,YAClE,WAAY,QAAS,UAEvB,EAAK,CACH,MAAO,QAAS,MAAO,SAAU,gBAAiB,WAAY,kBAC9D,KAAM,SAAU,OAAQ,UAAW,UAAW,QAAS,gBACvD,YAAa,SAAU,aAAc,UAAW,SAAU,cAC1D,WAAY,WAAY,eAAgB,YAAa,QAAS,aAC9D,SAAU,OAAQ,YAAa,iBAAkB,YAAa,WAAY,KAC1E,QAAS,SAAU,OAAQ,YAAa,UAAW,WAAY,gBAC/D,cAAe,UAAW,cAAe,eAAgB,UACzD,eAAgB,QAAS,aAAc,SAAU,cAAe,MAChE,UAAW,KAAM,MAAO,MAAO,QAAS,WAAY,UAAW,eAC/D,WAAY,SAAU,YAAa,UAAW,UAAW,OAAQ,QACjE,cAAe,KAAM,MAAO,MAAO,UAAW,YAAa,kBAC3D,QAAS,SAAU,QAAS,eAAgB,QAAS,WAAY,MAAO,OACxE,SAAU,WAAY,MAAO,SAAU,WAAY,WAAY,UAC/D,eAAgB,YAAa,OAAQ,SAAU,aAAc,OAAQ,UACrE,SAAU,SAAU,QAAS,aAAc,QAAS,SAAU,SAC9D,SAAU,WAAY,SAAU,aAAc,OAAQ,SAAU,cAChE,gBAAiB,kBAAmB,oBAAqB,eACzD,QAAS,aAAc,aAAc,WAAY,QAAS,OAAQ,YAClE,iBAAkB,YAAa,MAAO,WAAY,OAAQ,QAAS,YACnE,eAAgB,iBAAkB,WAAY,QAAS,SAAU,WACjE,QAAS,YAAa,UAAW,OAAQ,MAAO,MAAO,YACvD,iBAEF,EAAK,CACH,eAAgB,aAAc,QAAS,eAAgB,iBACvD,WAAY,gBAAiB,eAAgB,oBAAqB,QAClE,eAAgB,cAAe,UAAW,iBAAkB,mBAC5D,aAAc,gBAAiB,cAAe,cAAe,eAC7D,kBAAmB,YAAa,UAAW,WAAY,cACvD,gBAAiB,YAAa,cAAe,YAAa,iBAC1D,SAAU,cAAe,UAAW,MAAO,QAAS,gBACpD,oBAAqB,YAAa,UAAW,YAAa,SAAU,QACpE,UAAW,WAEb,EAAK,CACH,OAAQ,UAAW,eAKvB/rB,EAAQutB,SAAW,CACjB,EAAK,CAAC,EAAG,GACT,EAAK,CAAC,EAAG,EAAG,GACZ,EAAK,CAAC,EAAG,EAAG,EAAG,IAIjBvtB,EAAQ6sB,YAAc,CACpB,eAAkB,EAClB,UAAa,EACb,MAAS,EACT,OAAU,EACV,KAAQ,EACR,SAAY,EACZ,UAAa,EACb,cAAiB,EACjB,QAAW,EACX,SAAY,EACZ,aAAgB,EAChB,cAAiB,EACjB,kBAAqB,EACrB,YAAe,EACf,QAAW,EACX,YAAe,EACf,aAAgB,EAChB,QAAW,EACX,aAAgB,EAChB,MAAS,EACT,WAAc,EACd,OAAU,EACV,YAAe,EACf,IAAO,EACP,QAAW,EACX,UAAa,EACb,UAAa,EACb,OAAU,EACV,YAAe,EACf,OAAU,EACV,OAAU,EACV,KAAQ,EACR,eAAkB,EAClB,UAAa,EACb,MAAS,EACT,UAAa,GAIf7sB,EAAQ0sB,cAAgB,CACtB,QAAW,CAAC,GACZ,YAAe,CAAC,EAAG,IAIrB1sB,EAAQstB,YAAc,CACpB,gBAAmB,CAAC,EAAG,GACvB,aAAgB,CAAC,EAAG,EAAG,GACvB,cAAiB,CAAC,EAAG,GACrB,WAAc,CAAC,EAAG,EAAG,GACrB,aAAgB,CAAC,EAAG,EAAG,GACvB,eAAkB,CAAC,EAAG,EAAG,GACzB,MAAS,CAAC,EAAG,EAAG,GAChB,eAAkB,CAAC,EAAG,EAAG,GACzB,iBAAoB,CAAC,EAAG,EAAG,GAC3B,YAAe,CAAC,EAAG,EAAG,GACtB,YAAe,CAAC,EAAG,EAAG,GACtB,aAAgB,CAAC,EAAG,GACpB,UAAa,CAAC,EAAG,EAAG,GACpB,SAAY,CAAC,EAAG,EAAG,GACnB,YAAe,CAAC,EAAG,EAAG,GACtB,cAAiB,CAAC,EAAG,EAAG,GACxB,UAAa,CAAC,EAAG,EAAG,GACpB,YAAe,CAAC,EAAG,EAAG,GACtB,UAAa,CAAC,EAAG,EAAG,GACpB,eAAkB,CAAC,EAAG,EAAG,GACzB,QAAW,CAAC,EAAG,EAAG,EAAG,GACrB,cAAiB,CAAC,EAAG,EAAG,GACxB,kBAAqB,CAAC,EAAG,EAAG,GAC5B,QAAW,CAAC,EAAG,EAAG,GAClB,UAAa,CAAC,EAAG,EAAG,GACpB,WAAc,CAAC,EAAG,EAAG,EAAG,GACxB,MAAS,CAAC,EAAG,EAAG,GAChB,QAAW,CAAC,EAAG,EAAG,GAClB,QAAW,CAAC,EAAG,EAAG,IAIpBttB,EAAQgtB,aAAe,CACrB,UAAa,CAAE,MAAS,GACxB,cAAiB,CAAE,MAAS,GAC5B,YAAe,CAAE,MAAS,GAC1B,gBAAmB,CAAE,MAAS,GAC9B,YAAe,CAAE,MAAS,GAC1B,gBAAmB,CAAE,MAAS,GAC9B,WAAc,CAAE,MAAS,GACzB,cAAiB,CAAE,MAAS,GAC5B,SAAY,CAAE,MAAS,GACvB,aAAgB,CAAE,MAAS,GAC3B,QAAW,CAAE,MAAS,GACtB,aAAgB,CAAE,MAAS,GAC3B,QAAW,CAAE,MAAS,GACtB,OAAU,CAAE,MAAS,IAIvBhtB,EAAQuuB,OAAS,CACf,MAAS,CACP,MAAQ,EACR,MAAQ,EACR,SAAW,EACX,WAAa,EACb,aAAe,EACf,QAAU,EACV,QAAU,EACV,SAAW,GAEb,OAAU,CACR,QAAU,EACV,WAAa,EACb,eAAiB,EACjB,UAAY,EACZ,aAAe,EACf,iBAAmB,EACnB,cAAgB,EAChB,YAAc,EACd,UAAY,EACZ,aAAe,EACf,cAAgB,EAChB,iBAAmB,EACnB,OAAS,EACT,UAAY,EACZ,cAAgB,EAChB,WAAa,GAEf,IAAO,CACL,KAAO,EACP,SAAW,EACX,OAAS,EACT,QAAU,EACV,YAAc,IAKlBvuB,EAAQ8uB,YAAe,WACrB,IAAIuwB,EAAiB/tC,OAAOsY,UAAUy1B,eAClCz5C,EAAS5F,EAAQ6tB,YACjBxsB,EAAS,GAEb,IAAK,IAAIsE,KAAOC,EAAQ,CACtB,IAAIrE,EAAQqE,EAAOD,GACf05C,EAAe7iC,KAAKnb,EAAQE,GAC9BF,EAAOE,GAAO8Q,KAAK1M,GAEnBtE,EAAOE,GAAS,CAACoE,GAGrB,OAAOtE,EAba,GAiBtBrB,EAAQ+tB,MAAQ,CACd,UAAa,SACb,cAAiB,aACjB,YAAe,WACf,gBAAmB,eACnB,OAAU,QACV,YAAe,aACf,YAAe,WACf,gBAAmB,eACnB,SAAY,OACZ,cAAiB,YACjB,aAAgB,WAChB,kBAAqB,gBACrB,MAAS,MACT,aAAgB,WAChB,YAAe,UACf,WAAc,SACd,cAAiB,YACjB,gBAAmB,cACnB,SAAY,QACZ,aAAgB,YAChB,SAAY,MACZ,YAAe,SACf,cAAiB,WACjB,WAAc,MACd,UAAa,QACb,eAAkB,aAClB,SAAY,OACZ,WAAc,SACd,UAAa,OACb,aAAgB,UAChB,eAAkB,YAClB,OAAU,OAIZ/tB,EAAQ+sB,UAAY,CAClB,WAAa,EACb,MAAQ,EACR,WAAa,EACb,UAAY,EACZ,OAAS,EACT,OAAS,EACT,cAAgB,GAIlB/sB,EAAQqtB,UAAY,CAClB,KAAO,EACP,QAAU,EACV,UAAY,EACZ,MAAQ,EACR,SAAW,EACX,QAAU,EACV,YAAc,EACd,QAAU,EACV,IAAM,EACN,IAAM,EACN,KAAO,EACP,SAAW,EACX,IAAM,EACN,KAAO,EACP,iBAAmB,EACnB,OAAS,EACT,UAAY,EACZ,UAAY,EACZ,SAAW,EACX,cAAgB,EAChB,YAAc,EACd,QAAU,EACV,OAAS,EACT,YAAc,EACd,UAAY,EACZ,KAAO,EACP,WAAa,EACb,eAAiB,I,kCCpWnB,sFAOA,MAAM3mB,EAAQ,YAAsB,IAAS,KAQvC44C,EAAmB,YAAO,CAC9BpwC,KAAM,IACNqwC,QAAS,IACT74C,QACAsL,SAAU,CACR9L,IAAG,IACM,S,mBCpBT,IAAIs5C,EAAM,CAAC,KAAO,WAAW,YAAc,CAAC,CAAC,KAAO,qBAAqB,KAAO,CAAC,KAAO,OAAO,MAAQ,aAAa,cAAgB,CAAC,KAAO,YAAY,KAAO,CAAC,KAAO,OAAO,MAAQ,cAAc,WAAa,GAAG,aAAe,CAAC,KAAO,eAAe,WAAa,CAAC,CAAC,KAAO,QAAQ,KAAO,CAAC,KAAO,OAAO,MAAQ,MAAM,UAAY,GAAG,WAAa,IAAI,CAAC,KAAO,QAAQ,KAAO,CAAC,KAAO,OAAO,MAAQ,SAAS,UAAY,GAAG,WAAa,QAAQ,IAAM,CAAC,MAAQ,EAAE,IAAM,KAC9cA,EAAIC,IAAItzB,OAAS,CAAC,KAAO,wDAAwD,KAAO,kBAAkB,eAAiB,CAAC,KAAO,EAAE,OAAS,IAkD9I,IAAIuzB,EAAiB,GAWrB,SAASC,EAAcH,EAAKtwC,GAC1B,IAAK,IAAI0wC,EAAI,EAAGA,EAAIJ,EAAIK,YAAY3/C,OAAQ0/C,IAAK,CAC/C,IAAIljB,EAAU8iB,EAAIK,YAAYD,GAC9B,GAAIljB,EAAQxtB,MAAQwtB,EAAQxtB,KAAK3N,OAAS2N,EACxC,OAAOwtB,GAbX8iB,EAAIK,YAAYt5C,SAAQ,SAASu5C,GAC/B,GAAIA,EAAI5wC,KAAM,CACZ,IAAI6wC,EAAO,IAAIvlC,KAjCrB,SAASwlC,EAA0B16B,EAAMy6B,GACvC,GAAkB,mBAAdz6B,EAAK26B,KACPF,EAAKt5C,IAAI6e,EAAKpW,KAAK3N,YACd,GAAkB,uBAAd+jB,EAAK26B,KAA+B,CAC7C,IAAIjwC,EAAOsV,EAAKtV,KACE,cAAdA,EAAKiwC,MACPF,EAAKt5C,IAAIuJ,EAAKd,KAAK3N,OAInB+jB,EAAK46B,cACP56B,EAAK46B,aAAaC,WAAW55C,SAAQ,SAAS65C,GAC5CJ,EAA0BI,EAAWL,MAIrCz6B,EAAK+6B,qBACP/6B,EAAK+6B,oBAAoB95C,SAAQ,SAASu5C,GACxCE,EAA0BF,EAAKC,MAI/Bz6B,EAAKu6B,aACPv6B,EAAKu6B,YAAYt5C,SAAQ,SAASu5C,GAChCE,EAA0BF,EAAKC,MAU/BC,CAA0BF,EAAKC,GAC/BL,EAAeI,EAAI5wC,KAAK3N,OAASw+C,MA4DvChgD,EAAOC,QAAUw/C,EAEbz/C,EAAOC,QAAmB,UAhD9B,SAAkBw/C,EAAKc,GAErB,IAAIC,EAAS,CACXN,KAAMT,EAAIS,KACVJ,YAAa,CAACF,EAAcH,EAAKc,KAE/Bd,EAAIH,eAAe,SACrBkB,EAAOd,IAAMD,EAAIC,KAKnB,IAAIe,EAASd,EAAeY,IAAkB,IAAI9lC,IAC9CimC,EAAU,IAAIjmC,IACdkmC,EAAU,IAAIlmC,IAOlB,IAJAgmC,EAAOj6C,SAAQ,SAASo6C,GACtBD,EAAQj6C,IAAIk6C,MAGPD,EAAQjmC,KAAO,GAAG,CACvB,IAAImmC,EAAWF,EACfA,EAAU,IAAIlmC,IAEdomC,EAASr6C,SAAQ,SAASo6C,GACnBF,EAAQnjB,IAAIqjB,KACfF,EAAQh6C,IAAIk6C,IACIjB,EAAeiB,IAAY,IAAInmC,KACrCjU,SAAQ,SAASs6C,GACzBH,EAAQj6C,IAAIo6C,UAapB,OAPAJ,EAAQl6C,SAAQ,SAASo6C,GACvB,IAAIliC,EAAKkhC,EAAcH,EAAKmB,GACxBliC,GACF8hC,EAAOV,YAAYxtC,KAAKoM,MAIrB8hC,EAKyBO,CAAStB,EAAK,c,qBCxHpD,IAAIuB,EAAa,EAAQ,QA8CzB,SAASr2B,EAAMpqB,EAAM4rB,EAAO80B,GAE1B,IAAI3/C,EAAS0/C,EAAWzgD,EA7CJ,OA6C2BH,OAAWA,OAAWA,OAAWA,OAAWA,EAD3F+rB,EAAQ80B,OAAQ7gD,EAAY+rB,GAG5B,OADA7qB,EAAOkQ,YAAcmZ,EAAMnZ,YACpBlQ,EAITqpB,EAAMnZ,YAAc,GAEpBxR,EAAOC,QAAU0qB,G,mBCvDjB,IAGI20B,EAHc/tC,OAAOsY,UAGQy1B,eAqBjCt/C,EAAOC,QAZP,SAAwBC,GACtB,IAAIC,EAASD,EAAMC,OACfmB,EAAS,IAAIpB,EAAMmmB,YAAYlmB,GAOnC,OAJIA,GAA6B,iBAAZD,EAAM,IAAkBo/C,EAAe7iC,KAAKvc,EAAO,WACtEoB,EAAO4a,MAAQhc,EAAMgc,MACrB5a,EAAOoO,MAAQxP,EAAMwP,OAEhBpO,I,0HCbT,MAAM,EAAQ,YAAsB,CAClC8K,GAAI,YAAS,KACbjG,IAAK,YAAS,IAAkB,UAChC4pB,QAAS,YAAS,MACjB,KAKGmxB,EAA+B,YAAO,CAC1C/xC,KAAM,IACNivB,YAAY,EACZz3B,MAAK,EACL,OAAO2c,EAAGrO,GACR,IAAI,MACFtO,EAAK,KACLsE,EAAI,SACJ0R,GACE1H,EACJ,MAAM,IACJ9O,EAAG,QACH4pB,GACEppB,EACJ,OAAO2c,EAAE,KAAM,YAAU,YAAKrY,EAAM,CAAC,UAAW,CAC9C4F,MAAO,CACLwS,KAAM,kBAEN,CAACC,EAAEnd,EAAK,CACVgN,YAAa,kBACbvC,MAAO,CACL,CAAC,QAAQmf,GAAYA,GAEvBlf,MAAO,IACD5F,EAAK4F,OAAS,GAClBzE,GAAIzF,EAAMyF,IAAM,KAChBiX,KAAM,YAAMld,EAAK,UAAY,KAAO,WAEtCiN,IAAK,UACJuJ,Q,gBCnCP,MAAM5M,EATO,CACXZ,KAAM,mBACN8B,WAAY,CACViwC,mBAEF7vC,cAAc,GAWd,MAeMhB,E,MAAoB,GACxB,CAAEC,OApBe,WAAa,IAAiBC,EAATnG,KAAgBoG,eAAuC,OAAvDpG,KAA0CqG,MAAMC,IAAIH,GAAa,oBAAjEnG,KAAyFuG,GAAzFvG,KAAgG6J,GAAG,CAACd,YAAY,8BAA8B,oBAA9I/I,KAAsK2O,QAAO,GAA7K3O,KAAwL0G,YAAY,CAApM1G,KAAyM2G,GAAG,YAAY,IAoBpOC,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,kRCrCf,MAAM,EAAQ,YAAsB,CAClC+gD,wBAAyB,YAAS,KAClCC,qBAAsB,YAAS,MAC9B,KAQGC,EAAsB,YAAO,CACjClyC,KAAM,IACNsT,OAAQ,CAAC5R,EAAA,EAAYwxB,EAAA,EAAgB,KACrC,UACE,MAAO,CACL3f,mBAAoB,IAAMtY,OAG9BgH,OAAQ,CAENuR,WAAY,CACVvS,QAAmC,IAAM,KAAM,MAGnDiB,cAAc,EACd1K,MAAK,EACLsL,SAAU,CACR,UACE,OAAO7H,KAAKuY,cAGd2+B,QAAO,KACE,EAGT,SACE,OAAOl3C,KAAKyY,QAAQC,MAGtB,YACE,OAAO1Y,KAAKyY,QAAQE,WAGtB,eACE,OAAO3Y,KAAKyY,QAAQG,cAItBC,eAAc,KACL,EAKT,kBACE,OAAQ7Y,KAAK2Y,WAAa3Y,KAAKyY,QAAQK,cAGzC,eACE,OAAO9Y,KAAKyY,QAAQM,cAEtB,oBACE,OAAO/Y,KAAKg3C,sBAAwBh3C,KAAK+2C,yBAE3C,aACE,MAAO,CACL99B,KAAM,cACHjZ,KAAKgZ,UAGZ,aACE,MAAM,qBACJg+B,GACEh3C,KACJ,OAAOg3C,EAAuB,IACzBA,EACHj7C,IAAK,SACH,KAGR,OAAOmd,GACL,MAAMrY,EAAO,CACXtE,MAAOyD,KAAKm3C,WACZ1wC,MAAOzG,KAAKo3C,YAUd,OARIp3C,KAAKq3C,mBAEPx2C,EAAKqI,GAAKlJ,KAAK+2C,yBAA2B,GAC1Cl2C,EAAKi0B,SAAW90B,KAAKqZ,aAGrBxY,EAAKqI,GAAKlJ,KAAKqZ,YAEVH,EAAElZ,KAAKq3C,kBAAoB,mBAAqB,QAASx2C,EAAMb,KAAKsZ,oB,wICvF/E,MAAM,EAAQ,CACZg+B,eAAgB,YAAS,KACzBC,YAAa,YAAS,KACtBC,aAAc,YAAS,IAAI,IAA+B,OAMtDC,EAAgB,YAAO,CAC3Bp/B,OAAQ,CAAC,KACT9b,MAAK,EACLkM,QAAS,CAEP,YAAYyH,EAAM1U,EAAKk8C,EAAS99C,GAC9B,MAAM,SACJ0jB,GACEtd,KACJ,GAAI03C,EAAS,CACX,MAAMtgD,EAAQ,OAAA8E,EAAA,GAAIgU,EAAM1U,EAAK,IAC7B,OAAI,YAAWk8C,GACNA,EAAQtgD,EAAOoE,EAAK0U,GAClB,YAASwnC,IAAY,YAAWp6B,EAASo6B,IAC3Cp6B,EAASo6B,GAAStgD,EAAOoE,EAAK0U,GAEhCwnC,EAET,OAAO99C,GAET,YAAYsW,EAAM1U,EAAKm8C,EAAS9xC,EAAMjM,GACpC,MAAM,SACJ0jB,GACEtd,KACJ,GAAI23C,EAAS,CACX,MAAMvgD,EAAQ,OAAA8E,EAAA,GAAIgU,EAAM1U,EAAK,IAC7B,OAAI,YAAWm8C,GACNA,EAAQvgD,EAAOoE,EAAK0U,EAAMrK,GACxB,YAAS8xC,IAAY,YAAWr6B,EAASq6B,IAC3Cr6B,EAASq6B,GAASvgD,EAAOoE,EAAK0U,EAAMrK,GAEtC8xC,EAET,OAAO/9C,GAGT,kBAAkBsW,EAAMqM,GACtB,MAAM,IACJ/gB,GACE+gB,EACEC,EAAYxc,KAAK43C,kBAAkBp8C,GACzC,IAAIpE,EAAQ,OAAA8E,EAAA,GAAIgU,EAAM1U,EAAK,MAI3B,OAHI,YAAWghB,KACbplB,EAAQolB,EAAUplB,EAAOoE,EAAK0U,IAEzB,YAAkB9Y,GAAS,GAAKA,GAGzC,qBAAqBygD,EAAgB3nC,GAEnC,MAAO,KACD2nC,GACF73C,KAAKqN,KAAK6C,EAAM,KAAyBA,EAAK,QAKpD,WAAWvH,GAGJ3I,KAAK83C,qBAAqBnvC,IAE7B3I,KAAK+3C,kBAAkB,IAAwBpvC,IAGnD,aAAaA,GAGN3I,KAAK83C,qBAAqBnvC,IAE7B3I,KAAK+3C,kBAAkB,IAA0BpvC,IAIrD,mBAAmB4T,EAAOie,EAAUtqB,EAAM8nC,GACxC,MAAM,UACJr/B,GACE3Y,MACE,IACJxE,EAAG,MACHiO,EAAK,YACLwuC,GACE17B,EACErD,EAAIlZ,KAAKoG,eACTyxC,EAAiB73C,KAAK6e,kBAAkB,KACxCq5B,EAAYl4C,KAAKm4C,kBAAkBjoC,EAAMqM,GACzCme,GAAgB/hB,IAAc3Y,KAAK4Y,cAAgB5Y,KAAK8Y,eAAiByD,EAAMme,aAI/E0d,EAAU1d,EAAeud,EAAc,IAAM,IAAMA,EAAc,KAAO,KACxEI,EAAcnoC,EAAK,MAA2BA,EAAK,KAAwB1U,GAAO0U,EAAK,KAAwB1U,GAAO+gB,EAAMoJ,SAAW,KACvI9kB,EAAO,CAKX2F,MAAO,CAAC+V,EAAM/V,MAAQ+V,EAAM/V,MAAQ,GAAIxG,KAAKs4C,YAAYpoC,EAAM1U,EAAK+gB,EAAMg8B,QAAS,KACnFh8C,MAAO,GACPkK,MAAO,CACL,gBAAiBY,OAAOmzB,EAAW,MAC/Byd,EAAcj4C,KAAK47B,YAAY1rB,EAAM1U,EAAK+gB,EAAMsf,OAAQ,MAAO,IAAM77B,KAAKs4C,YAAYpoC,EAAM1U,EAAK+gB,EAAMi8B,OAAQ,KAErHh9C,IAAK,OAAOw8C,UAAiBxd,KAAYh/B,KAEvCk/B,EAEF75B,EAAKtE,MAAQ,CACXyzC,eAAgBr3B,EAAYlP,EAAQ,KACpCixB,cAAc,EACd/U,QAAS0yB,IAKXx3C,EAAK4F,MAAM,cAAgBkS,IAAc,YAAkBlP,GAAS,YAASA,GAAS,KACtF5I,EAAK4F,MAAMwS,KAAOg/B,EAAc,YAAc,OAC9Cp3C,EAAK4F,MAAMuxB,MAAQigB,EAAc,MAAQ,KAErCI,GACFx3C,EAAK2F,MAAM0B,KAAK,GAAGlI,KAAK0Y,KAAO,KAAO,WAAW2/B,MAGrD,MAAM5qC,EAAY,CAChByC,OACA4B,MAAOkmC,EACPz7B,QACAk8B,YAAa,OAAAv8C,EAAA,GAAIgU,EAAM1U,EAAK,IAC5BpE,MAAO8gD,EACPQ,cAAe14C,KAAK24C,qBAAqBd,EAAgB3nC,GACzD0oC,eAAgB9yC,QAAQoK,EAAK,OAI3B,YAAgBlQ,MAAM64C,yBACxBprC,EAAUqrC,YAAc94C,KAAK+4C,cAAcf,GAC3CvqC,EAAUurC,UAAY,IAAMh5C,KAAKg5C,UAAUhB,GAC3CvqC,EAAUwrC,YAAc,IAAMj5C,KAAKi5C,YAAYjB,IAWjD,MAAMkB,EAAWl5C,KAAKm5C,yBAAyB39C,GAC/C,IAAI49C,EAAcF,EAAWl5C,KAAKsZ,cAAc4/B,EAAUzrC,GAAa,YAASyqC,GAOhF,OANIl4C,KAAK2Y,YAEPygC,EAAc,CAAClgC,EAAE,MAAO,CAACkgC,MAIpBlgC,EAAEk/B,EAASv3C,EAAM,CAACu4C,KAG3B,eAAelpC,EAAM8nC,GACnB,MACEz6B,eAAgBnB,EAAM,QACtBi9B,EAAO,WACPl8B,EAAU,YACVU,EAAW,QACXD,EAAO,aACP45B,EAAY,YACZD,EAAW,sBACX+B,GACE,YAAgBt5C,MACdkZ,EAAIlZ,KAAKoG,eACTyxC,EAAiB73C,KAAK6e,kBAAkB,KACxC06B,EAAiBrpC,EAAK,MAA2B2nC,EACjD2B,EAAqBx5C,KAAK0G,WAAW,MAA2B4yC,EAGhEG,EAAQ,GAKRC,EAAYH,EAAiBv5C,KAAK25C,OAAO,YAAY3B,MAAe,KAGpE4B,EAAOx9B,EAAOzjB,IAAI,CAAC4jB,EAAOie,IACvBx6B,KAAK65C,mBAAmBt9B,EAAOie,EAAUtqB,EAAM8nC,IAIxD,IAAI8B,EAAe,KACfj8B,GAAeD,GAAWA,EAAU,IACtCk8B,EAAezyC,QAAQwW,EAAc,GAAKD,EAAUo6B,EAAW,IAOjE,MAAM+B,EAAkB,YAAS,OAAA79C,EAAA,GAAIgU,EAAMiN,KAAgB,KACrD68B,EAASD,GAAmB,YAAS/B,GAIrCiC,EAAQF,EAAkB/5C,KAAK25C,OAAO,QAAQI,GAAqB,KAGnEG,EAAoB,YAAgBl6C,MAAMm6C,qBAAuBn6C,KAAKm6C,qBAAqBnC,GAAY,GACvGoC,EAAkB,YAAgBp6C,MAAMq6C,mBAAqBr6C,KAAKq6C,mBAAmBrC,GAAY,GAGjGsC,EAAgB,YAAW9C,GAAgBA,EAAatnC,EAAM,OAASsnC,EACvE+C,EAAc,YAAWhD,GAAyCA,EAAYrnC,EAAM,OAASqnC,EA8BnG,GA3BAkC,EAAMvxC,KAAKgR,EAAE,IAAK,CAChB1S,MAAO,CAAC8zC,EAAeJ,EAAmBX,EAAiB,sBAAwB,IACnFh9C,MAAO,CACLopB,QAASzV,EAAK,MAA0B,MAE1CzJ,MAAO,CACLzE,GAAIi4C,KACDM,EAEH/e,SAAUge,EAAqB,IAAM,KACrC,UAAWO,GAAmB,KAC9B,eAAgBL,EAChB,YAAaA,EACb,gBAAiBI,KACdM,GAELlxC,GAAI,CAEFsxC,WAAYx6C,KAAKy6C,WACjBC,WAAY16C,KAAK26C,cAEnBn/C,IAAK,iBAAiBw+C,MACtBhxC,IAAK,YACL,CAAC,MAAc,GACd4wC,IAGCL,EAAgB,CAClB,MAAMqB,EAAe,CACnB1qC,OACA4B,MAAOkmC,EACP57B,SACAs8B,cAAe14C,KAAK24C,qBAAqBd,EAAgB3nC,IAIvD,YAAgBlQ,MAAM64C,yBACxB+B,EAAa9B,YAAc94C,KAAK+4C,cAAcf,GAC9C4C,EAAa5B,UAAY,IAAMh5C,KAAKg5C,UAAUhB,GAC9C4C,EAAa3B,YAAc,IAAMj5C,KAAKi5C,YAAYjB,IAIpD,MAAM6C,EAAW3hC,EAAE,IAAK,CACtB3c,MAAO,CACLuzC,QAAS1zB,EAAOrmB,QAElByQ,MAAOxG,KAAKs3C,gBACX,CAACt3C,KAAKsZ,cAAc,IAAuBshC,KAI1CvB,GACFI,EAAMvxC,KAENgR,EAAE,KAAM,CACNnQ,YAAa,SACbtC,MAAO,CACL,cAAe,OACfwS,KAAM,gBAERzd,IAAK,6BAA6Bw+C,KAKtC,MAAMc,EAAuB,YAAW96C,KAAKw3C,cAA0Cx3C,KAAKw3C,aAAatnC,EAAM,KAAyBlQ,KAAKw3C,aACvIuD,EAAqB,YAAW/6C,KAAKu3C,aAAyCv3C,KAAKu3C,YAAYrnC,EAAM,KAAyBlQ,KAAKu3C,YACzIkC,EAAMvxC,KAAKgR,EAAE,IAAK,CAChBnQ,YAAa,kBACbvC,MAAO,CAACs0C,GACRv+C,MAAO,CACLopB,QAASzV,EAAK,MAA0B,MAE1CzJ,MAAO,IACFs0C,EAEH/4C,GAAI03C,EACJle,SAAU,MAEZhgC,IAAK,sBAAsBw+C,GAC1B,CAACa,UACKhD,IAET4B,EAAMvxC,KAAKgR,KACPmgC,GAEFI,EAAMvxC,KAAKgR,MAKf,OAAOugC,MC3TPuB,EAAkB5jD,GAAS,QAAQA,GAAS,MAI5C,EAAQ,YAAS,IAClB,KACA,EACH6jD,WAAY,YAAS,OAMjBC,EAAa,YAAO,CACxB7iC,OAAQ,CAACo/B,GACTl7C,MAAK,EACL,gBACEyD,KAAKm5C,yBAA2B,MAElC1wC,QAAS,CAKP,cACE,MAAM,MACJwM,GACEjV,KACEm7C,EAAQlmC,EAAMkmC,MAAQlmC,EAAMkmC,MAAMtuC,KAAOoI,EAAMkmC,MAAQ,KACvDC,GAAOnmC,EAAM,cAAgB,IAAItc,IAAI0iD,GAAMA,EAAGxuC,KAAOwuC,GAC3D,OAAOF,GAASA,EAAM5oC,UAAY4oC,EAAM5oC,SAASxc,OAAS,GAAKqlD,GAAOA,EAAIrlD,OAAS,EAAI,YAAKolD,EAAM5oC,UAAUvK,OAAOqzC,GAAM,OAAAvlD,EAAA,GAAcslD,EAAKC,IAAiC,IAI/K,gBAAgBxsC,GAEd,IAAK,YAAUA,GACb,OAAQ,EAEV,MAAMwsC,EAAoB,OAAfxsC,EAAGylB,QAAmBzlB,EAAK,YAAQ,KAAMA,GAAI,GACxD,OAAOwsC,EAAKr7C,KAAKs7C,cAActuC,QAAQquC,IAAO,GAGhD,kBAAkBx1C,EAAM8C,GACtB,GAAI9C,GAAQ7F,KAAKo6B,YAAYv0B,IAAS8C,GAASA,EAAMC,OAAQ,CAC3D,MAAMovC,EAAWh4C,KAAKu7C,gBAAgB5yC,EAAMC,QAC5C,GAAIovC,GAAY,EAAG,CAEjB,MAAM9nC,EAAOlQ,KAAKqe,cAAc25B,GAChCh4C,KAAKoI,MAAMvC,EAAMqK,EAAM8nC,EAAUrvC,MAIvC,qBAAqBA,GACnB,OAAO3I,KAAKg6B,YAAch6B,KAAKg6B,WAAWrxB,IAG5C,kBAAkBA,GAEhB,MAAM,OACJC,EAAM,QACNoyB,GACEryB,EACJ,IAAI3I,KAAK83C,qBAAqBnvC,IAA6B,OAAnBC,EAAO0rB,SAAqB,YAAgB1rB,IAA+B,IAApBA,EAAO4yC,SAItG,GAAI,OAAA1lD,EAAA,GAAc,CAAC,IAAY,KAAaklC,GAE1C,YAAUryB,GACV3I,KAAKy7C,kBAAkB9yC,QAClB,GAAI,OAAA7S,EAAA,GAAc,CAAC,IAAS,IAAW,IAAW,KAAWklC,GAAU,CAE5E,MAAMgd,EAAWh4C,KAAKu7C,gBAAgB3yC,GACtC,GAAIovC,GAAY,EAAG,CACjB,YAAUrvC,GACV,MAAMyyC,EAAMp7C,KAAKs7C,cACX5wB,EAAQ/hB,EAAM+yC,SAChB1gB,IAAY,KAAatQ,GAASsQ,IAAY,IAEhD,YAAaogB,EAAI,IACRpgB,IAAY,KAAYtQ,GAASsQ,IAAY,IAEtD,YAAaogB,EAAIA,EAAIrlD,OAAS,IACrBilC,IAAY,KAAWgd,EAAW,EAE3C,YAAaoD,EAAIpD,EAAW,IACnBhd,IAAY,KAAagd,EAAWoD,EAAIrlD,OAAS,GAE1D,YAAaqlD,EAAIpD,EAAW,OAKpC,kBAAkBrvC,GAChB,MAAM,MACJsM,GACEjV,KACEm7C,EAAQlmC,EAAMkmC,MAAQlmC,EAAMkmC,MAAMtuC,KAAOoI,EAAMkmC,MAAQ,KAGzDn7C,KAAK83C,qBAAqBnvC,IAAU,YAAYA,IAAU,YAAoBwyC,GAASn7C,KAAK6M,MAGhG7M,KAAK+3C,kBAAkB,IAAwBpvC,IAEjD,gCAAgCA,GACzB3I,KAAK83C,qBAAqBnvC,IAA0B,IAAhBA,EAAMgzC,OAC7C37C,KAAK+3C,kBAAkB,IAA+BpvC,IAG1D,sBAAsBA,GACf3I,KAAK83C,qBAAqBnvC,IAC7B3I,KAAK+3C,kBAAkB,IAA4BpvC,IAGvD,qBAAqBA,GACd3I,KAAK83C,qBAAqBnvC,IAAW,YAAYA,IACpD3I,KAAK+3C,kBAAkB,IAA2BpvC,IAOtD,cACE,MACE0V,cAAe7N,EAAK,WACpBorC,EAAU,aACVC,EAAY,YACZC,EAAW,gBACXC,EAAe,sBACfzC,GACE,YAAgBt5C,MACdkZ,EAAIlZ,KAAKoG,eACTozC,EAAqBx5C,KAAKo6B,YAAY,MAA2Bkf,EAGjEG,EAAQ,GAGRuC,EAAQJ,EAAaA,IAAe,KAC1C,GAAII,EAEFvC,EAAMvxC,KAAK8zC,OACN,CAOL,MAAMpQ,EAAQ,GACd,IAAIqQ,EAAkBjB,IACtBiB,EAAkBj8C,KAAK6e,kBAAkBo9B,GAAmBA,EAAkB,KAC9Ej8C,KAAKud,eAAenhB,QAAQmgB,IAC1B,MAAM,IACJ/gB,GACE+gB,EACE28B,EAAW8B,EAAgBx/C,GAC3B0gD,EAAoBlB,EAAgBx/C,EAAIkW,eAC9Ck6B,EAAMpwC,GAAOwE,KAAK6e,kBAAkBq6B,GAAYA,EAAWl5C,KAAK6e,kBAAkBq9B,GAA+CA,EAAoBD,IAIvJj8C,KAAKm5C,yBAA2BvN,EAIhC6N,EAAMvxC,KAAK2zC,EAAeA,IAAiB3iC,KAG3C1I,EAAMpU,QAAQ,CAAC8T,EAAM8nC,KAEnByB,EAAMvxC,KAAKlI,KAAKm8C,eAAejsC,EAAM8nC,MAIvCyB,EAAMvxC,KAAK4zC,EAAcA,IAAgB5iC,KAIzCugC,EAAMvxC,KAAK6zC,EAAkBA,IAAoB7iC,KAInD,MAAMvD,EAAW,CACfymC,SAAUp8C,KAAKq8C,gCAKfC,YAAat8C,KAAKu8C,sBAElBC,SAAUx8C,KAAKy8C,sBAIbjD,IACF7jC,EAASklB,MAAQ76B,KAAKy7C,kBACtB9lC,EAASolB,QAAU/6B,KAAK08C,mBAc1B,OAVexjC,EAAE+9B,EAAQ,CACvBzwC,MAAOxG,KAAKi7C,YAAc,KAC1B1+C,MAAO,YAAW,EAASyD,KAAK28C,QAGhCzzC,GAAIyM,EACJ3M,IAAK,SACJywC,Q,qBCpOT7jD,EAAOC,QAAU,EAAQ,S,qBCAzB,IAAI+gD,EAAa,EAAQ,QACrBgG,EAAW,EAAQ,QA2BnBl8B,EAAQk8B,GAAS,SAASzmD,EAAMisB,GAClC,OAAOw0B,EAAWzgD,EAzBE,SAyBqBH,OAAWA,OAAWA,EAAWosB,MAG5ExsB,EAAOC,QAAU6qB,G,0QCyBjB,MAAM/a,EArDO,CACXZ,KAAM,uBACN8B,WAAY,CACVg2C,kBAAA,IACA1yC,OAAA,KAEFjF,MAAO,CACL8X,KAAM,QACNrU,MAAO,SAETpM,MAAO,CAILnF,MAAO,CACLyO,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAKXoB,YAAa,CACXvB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,WAGb6B,SAAU,CACR,WACE,OAAO/B,QAAQ9F,KAAK5I,MAAMrB,SAE5B,iBACE,MAAO,IACFiK,KAAK0G,WACRpB,MAAOqD,IACL3I,KAAKoI,MAAM,QAASO,EAAMC,OAAOxR,WAKzCqR,QAAS,CACP,aACEzI,KAAKoI,MAAM,QAAS,IACpBpI,KAAK88C,cAEP,aACE98C,KAAKiV,MAAM3P,MAAM4P,WAyCR,MAba,IACxB,CAAEhP,OApBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,MAAM,CAACyC,YAAY,qBAAqB,CAACzC,EAAG,UAAU,CAACyC,YAAY,yBAAyBtC,MAAM,CAAC,KAAO,YAAY,KAAO,MAAMqC,EAAIa,GAAG,KAAKrD,EAAG,QAAQwC,EAAIvC,GAAG,CAACyC,IAAI,QAAQD,YAAY,0BAA0BtC,MAAM,CAAC,KAAO,SAAS,aAAaqC,EAAI1B,YAAY,YAAc0B,EAAI1B,aAAa6P,SAAS,CAAC,MAAQnO,EAAI1R,QAAQ0R,EAAIi0C,iBAAiBj0C,EAAIa,GAAG,KAAMb,EAAY,SAAExC,EAAG,uBAAuB,CAACyC,YAAY,iCAAiCG,GAAG,CAAC,MAAQ,SAASC,GAAiC,OAAzBA,EAAO6zC,kBAAyBl0C,EAAIm0C,WAAWl9B,MAAM,KAAMtpB,eAAeqS,EAAIoP,MAAM,IAoB3nBtR,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GCnEJ,MAAM,EAnBO,CACX+O,KAAM,iBACNxI,MAAO,CACLwI,KAAM,CACJc,KAAMwB,OACNtB,UAAU,GAEZyf,WAAY,CACV3f,KAAMC,QACNC,UAAU,EACVC,SAAS,IAGb,UACEhG,KAAKk9C,OAAS,IAAS,uBAwCZ,MAba,IACxB,CAAEh3C,OApBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,KAAK,CAACyC,YAAY,kBAAkBtC,MAAM,CAAC,KAAO,QAAQ,kBAAkBqC,EAAIo0C,SAAS,CAAC52C,EAAG,KAAK,CAACyC,YAAY,iEAAiEvC,MAAM,CAAE,aAAcsC,EAAI0c,YAAa/e,MAAM,CAAC,GAAKqC,EAAIo0C,OAAO,KAAO,iBAAiB,CAACp0C,EAAInC,GAAG,eAAc,WAAW,MAAO,CAACmC,EAAIa,GAAGb,EAAIc,GAAGd,EAAI/D,YAAW,GAAG+D,EAAIa,GAAG,KAAKb,EAAInC,GAAG,YAAY,IAoB3bC,gBAnBA,SAGE5Q,EAkB5B,OAhBuBA,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,G,YCnCJ,MAEMmnD,EAA2B,CAAC,cAAe,uBAAwB,UAAW,WA+rBpF,MAAM,EA7rBO,CACXp4C,KAAM,uBACNq4C,4BALkC,CAAC,gBAAiB,oBAAqB,wBAMzEr4B,OAAQ,CACNC,kBAAA,IACAC,mBAAA,KAEFpe,WAAY,CACVue,eAAA,IACAi4B,cAAA,IACAC,eAAA,EACAhuC,SAAA,IACAiuC,kBAAA,IACAC,qBAAA,EACAC,cAAA,IACAC,uBAAA,KAEFx4C,MAAO,CACL8X,KAAM,WACNrU,MAAO,UAETpM,MAAO,CAILiU,MAAO,CACL3K,KAAMlP,MACNoP,UAAU,EACVC,QAAS,IAAM,GACf0B,UAAW,KAKbi2C,SAAU,CACR93C,KAAM,CAAClP,MAAO0Q,OAAQ3P,QACtBqO,UAAU,EACVC,QAAS,IAAM,IAKjB43C,SAAU,CACR/3C,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKXuf,WAAY,CACV1f,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAKXwf,WAAY,CACV3f,KAAMC,QACNC,UAAU,EACVC,SAAS,GAGX63C,WAAY,CACVh4C,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAKXyf,SAAU,CACR5f,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAAsB0f,QAC/Bhe,UAAWtQ,GAASA,KAAS,KAK/BuuB,QAAS,CACP9f,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAAuBA,QAChC0B,UAAWtQ,GAASA,KAAS,KAK/BkZ,KAAM,CACJzK,KAAMwB,OACNtB,UAAU,EACVC,QAAS,SACT0B,UAAWtQ,GAASA,KAAS,KAK/B4gB,KAAM,CACJnS,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAKX2F,SAAU,CACR9F,KAAMC,QACNC,UAAU,EACVC,SAAS,GAMX4f,QAAS,CACP/f,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKX8f,YAAa,CACXjgB,KAAM,CAACwB,OAAQ1Q,MAAOwQ,QACtBpB,UAAU,EACVC,QAAS,MAKX+f,QAAS,CACPlgB,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKXggB,UAAW,CACTngB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,eACT0B,UAAWtQ,GAAS+P,OAAOhM,KAAK,KAAoBxD,SAASP,IAK/D0mD,gBAAiB,CACfj4C,KAAMC,QACNC,UAAU,EACVC,SAAS,GAMXigB,qBAAsB,CACpBpgB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MAMXkgB,mBAAoB,CAClBrgB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MAKX+3C,WAAY,CACVl4C,KAAMC,QACNC,UAAU,EACVC,SAAS,GAMXg4C,UAAW,CACTn4C,KAAMC,QACNC,UAAU,EACVC,SAAS,GAQXi4C,eAAgB,CACdp4C,KAAMC,QACNC,UAAU,EACVC,SAAS,GAQXk4C,WAAY,CACVr4C,KAAMnO,OACNqO,UAAU,EACVC,QAAS,MAMXm4C,sBAAuB,CACrBt4C,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKXo4C,cAAe,CACbv4C,KAAMwB,OACNtB,UAAU,EACVC,QAAS,oBAKXq4C,kBAAmB,CACjBx4C,KAAMwB,OACNtB,UAAU,EACVC,QAAS,UAQXs4C,iBAAkB,CAChBz4C,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAQXu4C,yBAA0B,CACxB14C,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAKXoP,MAAO,CACLvP,KAAMC,QACNC,UAAU,EACVC,SAAS,GAMXmgB,eAAgB,CACdtgB,KAAM,CAACnO,OAAQyP,QACfpB,UAAU,EACVC,aAAShQ,GAMXowB,WAAY,CACVvgB,KAAMC,QACNC,UAAU,EACVC,SAAS,GAOXsgB,oBAAqB,CACnBzgB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IACT0B,UAAW6e,GAAY,CAAC,IAAmB,KAAgB5uB,SAAS4uB,IAKtEC,YAAa,CACX3gB,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEXw4C,mBAAoB,CAClB34C,KAAMqN,SACNnN,UAAU,EACVC,QAAS,YAAgB,0CAA2C,YAAa,gBAGrFnF,KAAI,KACK,CACL49C,eAAgB,GAChB54B,SAAU,IAAS,wBACnB64B,UAAW,IAAS,YACpBh4B,qBAAsB,KACtBi4B,UAAW,GACXC,oBAAoB,EACpBC,uBAAuB,IAG3Bh3C,SAAU,CACR,aACE,OAAK7H,KAAK8+C,UAAY,YAAS9+C,KAAKwQ,MAAM,IAAY,KAC/C,OAET,iBACE,MAAO,CACL,qBAAsBxQ,KAAK4+C,mBAC3B,wBAAyB5+C,KAAK6+C,sBAC9B,CAAC,MAA6B,IAGlC,UACE,MAA2B,OAApB7+C,KAAK++C,WAAsB,KAAO,OAE3C,mBACE,OAAO,YAAiB/+C,KAAKwQ,QAE/B,WACE,OAAOxQ,KAAKwQ,MAAMza,OAAS,GAE7B,oBAGM,IAAIipD,EAFR,OAAKh/C,KAAKulB,WAYHvlB,KAAKulB,YAXLvlB,KAAK49C,UAAY59C,KAAKy+C,eAAe1oD,OAOhC,QALAipD,EAAwBh/C,KAAKuQ,iBAAiB1E,KAAKhB,IACzD,IAAI,MACFzT,GACEyT,EACJ,OAAOzT,IAAU4I,KAAKy+C,eAAe,YACG,IAA1BO,OAAmC,EAASA,EAAsBluC,KAE7E,IAIX,kBACE,OAAO9Q,KAAKy+C,eAAe9lD,IAAIglD,GAAY39C,KAAKuQ,iBAAiBa,UAAUP,IACzE,IAAI,MACFzZ,GACEyZ,EACJ,OAAOzZ,IAAUumD,KACfsB,QAEN,WACE,OAAOj/C,KAAKuQ,iBAAiBxa,SAAWiK,KAAKg+C,WAE/C,oBACE,OAAQh+C,KAAKuQ,iBAAiBxa,SAAWiK,KAAKg+C,WAEhD,0BACE,OAAOh+C,KAAK+9C,aAAe/9C,KAAKk/C,mBAElC,WACE,OAAOl/C,KAAK69C,YAAc,IAAS,oBAErC,kBACE,QAAK79C,KAAKs+C,qBAQLt+C,KAAK8+C,cAKL9+C,KAAK29C,UAAqC,IAAzB39C,KAAK29C,SAAS5nD,UAK5BiK,KAAKm/C,uBAEf,sBACE,QAAKn/C,KAAKu+C,6BAGLv+C,KAAK49C,aAQL59C,KAAK8+C,UAGH9+C,KAAK29C,SAAS5nD,SAAWiK,KAAKuQ,iBAAiBxa,UAExD,2BACE,OAAOiK,KAAKi+C,iBAAmBj+C,KAAKm+C,wBAA0Bn+C,KAAK4lB,UAAY5lB,KAAKg+C,WAEtF,kBACE,OAAOl4C,QAAQ9F,KAAK4mB,aAAaC,SAEnC,eACE,OAAO/gB,QAAQ9F,KAAKy+C,eAAe1oD,SAErC,sBACE,MAAMqpD,EAAgB,CAACp/C,KAAK8lB,aAI5B,OAHK9lB,KAAKq/C,cACRD,EAAcl3C,KAAK,mBAEdk3C,GAET,YACE,OAAOp/C,KAAK69C,YAAc79C,KAAK+9C,YAEjC,YACE,OAAOj4C,QAAQ9F,KAAK4mB,aAAa04B,UAGrCvzC,MAAO,CACL4xC,SAAU,CACRzxC,WAAW,EACX,QAAQqzC,GACF5oD,MAAMmE,QAAQykD,GAIhBv/C,KAAKy+C,eAAiB,IAAIc,GAE1Bv/C,KAAKy+C,eAAiB,IAAMc,GAAe,GAAK,CAACA,KAIvD/uC,MAAO,CACL,UACExQ,KAAKgV,UAAU,KAGbhV,KAAKw/C,qBA+Bb,UACMx/C,KAAKwmB,aACPxmB,KAAK8mB,OAEP9mB,KAAKw/C,iBAEP,gBACE,IAAIC,EAC6C,QAAhDA,EAAuBz/C,KAAK0/C,sBAAqD,IAAzBD,GAA2CA,EAAqBtR,cAE3H1lC,QAAS,CACP,OACEzI,KAAKiV,MAAM8R,aAAaD,QAE1B,QACE9mB,KAAKiV,MAAM8R,aAAaxe,SAE1Bo3C,aAAa7tC,GACM,IAAVA,EAAc,KAAOqrC,EAE9B,SAII,IAAIyC,EAHF5/C,KAAK+9C,WACP/9C,KAAK6/C,mBAGL7/C,KAAKonB,UAAgE,QAArDw4B,EAAwB5/C,KAAK8/C,gBAAgB,UAA0C,IAA1BF,EAAmCA,EAAwB,EAAG5/C,KAAKknB,gCAOlJlnB,KAAKoI,MAAM,MAEb,SAMEpI,KAAKoI,MAAM,KACXpI,KAAK0mB,qBAAuB,MAE9B,UAAU/d,GACR,MAAM,KACJqe,EAAI,OACJpe,GACED,EACEse,EAAWjnB,KAAKknB,+BACtB,GAAID,EAASlxB,OAAS,EAAG,OACzB,IAAIoxB,GAAO,EACX,MAAM44B,EAAgBn3C,EAAOo3C,QA3hBL,4BA4hBxB,GAAIh5B,IAAS,IAAM,CACjB,GAAI+4B,EACF,OAEF//C,KAAKonB,UAAU,EAAGH,QACb,GAAID,IAAS,IAAK,CACvB,GAAI+4B,EACF,OAEF//C,KAAKonB,UAAUH,EAASlxB,OAAS,EAAGkxB,QAC/B,GAAID,IAAS,IAAU,CAC5B,GAAI+4B,EACF,OAEE//C,KAAK+9C,YAA2C,IAA7B92B,EAASja,QAAQpE,GACtC5I,KAAK6/C,mBAEL7/C,KAAKqnB,cAAc1e,EAAOse,GAAW,QAE9BD,IAAS,IACd+4B,EACF//C,KAAKonB,UAAU,EAAGH,GAElBjnB,KAAKqnB,cAAc1e,EAAOse,EAAU,GAGtCE,GAAO,EAELA,GACF,YAAUxe,IAGd,+BACE,IAAIs3C,EACJ,MAAMzvC,EAAiD,QAAxCyvC,EAAmBjgD,KAAKiV,MAAM00B,YAAuC,IAArBsW,OAA8B,EAASA,EAAiBx4B,iBAjkBvG,mBAkkBhB,OAAO9wB,MAAM+wB,KAAKlX,GAAS,KAE7B,cAAc7H,EAAOse,EAAUU,GAC7B,MAAM,OACJ/e,GACED,EACEif,EAAeX,EAASja,QAAQpE,GAChCif,EAAY,IAAMD,EAAeD,EAAQ,EAAGV,EAASlxB,OAAS,GACpEiK,KAAKonB,UAAUS,EAAWZ,IAE5B,UAAUnV,EAAOmV,GACf,IAAIa,EACJ9nB,KAAK0mB,qBAAuB5U,EACY,QAAvCgW,EAAkBb,EAASnV,UAAwC,IAApBgW,GAAsCA,EAAgB5S,SAExG,mBACElV,KAAKiV,MAAMirC,UAAUpD,cAEvB,SAAS5sC,EAAMiwC,GACTngD,KAAK49C,SACP59C,KAAKogD,cAAclwC,EAAK9Y,MAAO+oD,GAE/BngD,KAAKqgD,eAAenwC,EAAK9Y,MAAO+oD,IAGpC,WAAWjwC,GACT,OAAOlQ,KAAKy+C,eAAerrC,KAAKhc,GAASA,IAAU8Y,EAAK9Y,QAE1D,UAAU8Y,GACR,OAAOlQ,KAAK0mB,uBAAyB1mB,KAAKuQ,iBAAiBvD,QAAQkD,IAErE,eAAe9Y,EAAO+oD,GAChBA,GAMFngD,KAAKoI,MAAM,SAAUhR,GAEvB4I,KAAK+nB,iBAEP,cAAc3wB,EAAO+oD,GACfA,EACFngD,KAAKoI,MAAM,SAAU,IAAIpI,KAAKy+C,eAAgBrnD,IAE9C4I,KAAKoI,MAAM,SAAUpI,KAAKy+C,eAAez2C,OAAOs4C,GAAiBA,IAAkBlpD,KAGvF,OAAOmpD,GAOLvgD,KAAKoI,MAAM,SAAUm4C,IAEvB,uBAMEvgD,KAAKoI,MAAM,UAEb,2BAMEpI,KAAKoI,MAAM,eAEb,gBACEpI,KAAKiV,MAAM8R,aAAagB,iBAE1B,+BAOE/nB,KAAKoI,MAAM,mBAEb,mCAAmC0J,GACjC,OAAwB,OAApB9R,KAAKk+C,WACA,GAEF,CACL,eAAgBl+C,KAAKk+C,WACrB,gBAAiBpsC,EAAQ,IAG7B,gBACE,IAAI0uC,EACJ,MACMnnD,EAAU,CACdk1C,WAAY,MACZP,KAHWhuC,KAAKiV,MAAM00B,KAItB2E,UAAW,GAEqC,QAAjDkS,EAAwBxgD,KAAK0/C,sBAAsD,IAA1Bc,GAA4CA,EAAsBrS,aAC5H,MAAMsS,EAAW,IAAIlT,qBAAqBmB,IACxCA,EAAQtyC,QAAQq3B,IACd,IAAIitB,EACJ1gD,KAAwC,QAAlC0gD,EAAgBjtB,EAAM7qB,cAAsC,IAAlB83C,OAA2B,EAASA,EAAcC,mBAAqBltB,EAAMmtB,kBAE9HvnD,GACGwnD,EAAc7gD,KAAKiV,MAAM,gBACzB6rC,EAAiB9gD,KAAKiV,MAAM,mBAC9B4rC,IACFA,EAAYF,kBAAoB,qBAChCF,EAAS3R,QAAQ+R,IAEfC,IACFA,EAAeH,kBAAoB,wBACnCF,EAAS3R,QAAQgS,IAEnB9gD,KAAK0/C,eAAiBe,GAExBxwC,SAAA,MAYF,MAeM,EAAoB,IACxB,CAAE/J,OApBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,mBAAmB,CAAC0C,IAAI,eAAevC,MAAM,CAAC,gBAAgB,UAAU,kBAAkBqC,EAAImd,qBAAqB,MAAQnd,EAAIsM,MAAM,YAAYtM,EAAI+c,SAAS,cAAc/c,EAAIi4C,kBAAkB,eAAej4C,EAAIk4C,oBAAoB,eAAel4C,EAAI0c,WAAW,SAAW1c,EAAI2c,SAAS,QAAU3c,EAAI6c,QAAQ,KAAO7c,EAAIwH,KAAK,KAAOxH,EAAIkP,KAAK,SAAWlP,EAAI6C,SAAS,QAAU7C,EAAI8c,QAAQ,WAAW9c,EAAIid,QAAQ,UAAYjd,EAAIkd,UAAU,OAASld,EAAIqd,eAAe,cAAcrd,EAAIsd,WAAW,uBAAuBtd,EAAIwd,qBAAqBpd,GAAGJ,EAAIuf,GAAG,GAAG,CAACvf,EAAIwf,SAASvD,OAAOC,kBAAkBlc,EAAIyf,OAAOzf,EAAIwf,SAASvD,OAAOE,mBAAmBnc,EAAI0f,SAASlf,YAAYR,EAAIS,GAAG,CAAET,EAAmB,gBAAE,CAACtN,IAAI,SAASgO,GAAG,WAAW,MAAO,CAACV,EAAInC,GAAG,YAAY+H,OAAM,GAAM,MAAM,MAAK,IAAO,CAAC5F,EAAIa,GAAG,KAAMb,EAAc,WAAExC,EAAG,MAAM,CAACyC,YAAY,6CAA6CvC,MAAMsC,EAAIwf,SAAS80B,6BAA6B,CAAC92C,EAAG,MAAM,CAACyC,YAAY,yDAAyDtC,MAAM,CAAC,GAAKqC,EAAIm4C,SAAS,cAAc,wBAAwB,CAACn4C,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAI+0C,YAAY,YAAY/0C,EAAIa,GAAG,KAAMb,EAAmB,gBAAExC,EAAG,YAAY,CAACyC,YAAY,2HAA2HtC,MAAM,CAAC,SAAW,WAAW,KAAO,QAAQ,cAAc,wBAAwByC,GAAG,CAAC,MAAQJ,EAAIo4C,uBAAuB,CAACp4C,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAIw1C,kBAAkB,YAAYx1C,EAAIoP,KAAKpP,EAAIa,GAAG,KAAMb,EAAuB,oBAAExC,EAAG,YAAY,CAACyC,YAAY,2HAA2HtC,MAAM,CAAC,SAAW,WAAW,KAAO,QAAQ,cAAc,6BAA6ByC,GAAG,CAAC,MAAQJ,EAAIq4C,2BAA2B,CAACr4C,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAIy1C,0BAA0B,YAAYz1C,EAAIoP,MAAM,GAAGpP,EAAIoP,KAAKpP,EAAIa,GAAG,KAAMb,EAAc,WAAExC,EAAG,MAAM,CAACE,MAAMsC,EAAIwf,SAAS80B,6BAA6B,CAAC92C,EAAG,0BAA0B,CAAC0C,IAAI,YAAYxC,MAAM,CAAE,sBAAuBsC,EAAI+0C,YAAap3C,MAAM,CAAC,cAAc,uBAAuB,YAAcqC,EAAIu1C,mBAAmBn1C,GAAG,CAAC,MAAQJ,EAAItI,OAAO,QAAU,CAAC,SAAS2I,GAAQ,IAAIA,EAAOtD,KAAKmH,QAAQ,QAAQlE,EAAIs4C,GAAGj4C,EAAO6xB,QAAQ,QAAQ,GAAG7xB,EAAO3N,IAAI,SAAW,OAAO,KAAO2N,EAAO2L,kBAAmBhM,EAAI4f,YAAYxjB,MAAM,CAAC9N,MAAO0R,EAAa,UAAExI,SAAS,SAAUwJ,GAAMhB,EAAI61C,UAAU70C,GAAMC,WAAW,eAAejB,EAAIa,GAAG,KAAMb,EAAa,UAAExC,EAAG,kBAAkB,CAACyC,YAAY,UAAUtC,MAAM,CAAC,cAAc,wBAAwB,KAAO,QAAQqC,EAAIoP,MAAM,GAAGpP,EAAIoP,KAAKpP,EAAIa,GAAG,KAAMb,EAAY,SAAExC,EAAGwC,EAAIi2C,WAAW,CAAC/1C,IAAI,OAAOjN,IAAI,YAAYgN,YAAY,uEAAuEvC,MAAMsC,EAAIu4C,eAAe56C,MAAM,CAAC,GAAKqC,EAAI41C,UAAU,kBAAkB51C,EAAIod,oBAAsBpd,EAAIm4C,UAAYn4C,EAAI+c,SAAS,KAAO,UAAU,SAAW,KAAK3c,GAAG,CAAC,QAAUJ,EAAI4f,YAAY,CAACpiB,EAAGwC,EAAIw4C,QAAQ,CAACvlD,IAAI,YAAYgN,YAAY,oBAAoBtC,MAAM,CAAC,cAAc,OAAO,cAAc,cAAc,CAACH,EAAG,MAAM,CAACyC,YAAY,YAAYvC,MAAM,CAAE,mBAAoBsC,EAAIy4C,UAAW,iBAAkBz4C,EAAIy4C,eAAgBz4C,EAAIa,GAAG,KAAKrD,EAAGwC,EAAIw4C,QAAQ,CAACt4C,IAAI,eAAejN,IAAI,YAAY0K,MAAM,CAAC,cAAc,UAAUqC,EAAIa,GAAG,KAAKb,EAAI4E,GAAI5E,EAAS,OAAE,SAASoH,EAAK4B,GAAO,MAAO,CAAEhJ,EAAImH,SAASC,GAAO,CAAC5J,EAAG,kBAAkBwC,EAAIe,GAAG,CAACrO,IAAI0U,EAAK9Y,MAAMqP,MAAM,CAAC,cAAe,gBAAmByJ,EAAU,MAAG,cAAcpH,EAAIq3C,WAAWjwC,GAAM,aAAapH,EAAI04C,UAAUtxC,GAAM,oBAAoBpH,EAAIg1C,iBAAiB50C,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOL,EAAI24C,SAASvxC,EAAM/G,MAAW,kBAAkBL,EAAI44C,mCAAmC5vC,IAAO,GAAO,CAAChJ,EAAInC,GAAG,aAAY,WAAW,MAAO,CAACmC,EAAIa,GAAG,iBAAiBb,EAAIc,GAAGsG,EAAKY,MAAM,mBAAkB,CAAC,KAAOZ,KAAQ,IAAI,CAAC5J,EAAG,mBAAmB,CAAC9K,IAAI0U,EAAKY,KAAKtK,MAAMsC,EAAI62C,aAAa7tC,GAAOrL,MAAM,CAAC,KAAOyJ,EAAKY,KAAK,eAAeZ,EAAKsV,YAAYlc,YAAYR,EAAIS,GAAG,CAAET,EAAI8d,aAAa,eAAgB,CAACprB,IAAI,cAAcgO,GAAG,WAAW,MAAO,CAACV,EAAInC,GAAG,cAAc,KAAK,CAAC,MAAQuJ,MAASxB,OAAM,GAAM,MAAM,MAAK,IAAO,CAAC5F,EAAIa,GAAG,KAAKb,EAAI4E,GAAIwC,EAAY,SAAE,SAAS+D,GAAQ,OAAO3N,EAAG,kBAAkB,CAAC9K,IAAIyY,EAAO7c,MAAMqP,MAAM,CAAC,cAAe,gBAAmBwN,EAAY,MAAG,cAAcnL,EAAIq3C,WAAWlsC,GAAQ,aAAanL,EAAI04C,UAAUvtC,GAAQ,oBAAoBnL,EAAIg1C,iBAAiB50C,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOL,EAAI24C,SAASxtC,EAAQ9K,MAAW,CAACL,EAAInC,GAAG,aAAY,WAAW,MAAO,CAACmC,EAAIa,GAAG,mBAAmBb,EAAIc,GAAGqK,EAAOnD,MAAM,qBAAoB,CAAC,KAAOmD,KAAU,OAAM,QAAOnL,EAAIa,GAAG,KAAMb,EAAyB,sBAAExC,EAAGwC,EAAIw4C,QAAQ,CAACvlD,IAAI,aAAa,CAACuK,EAAG,kBAAkB,CAACyC,YAAY,UAAUtC,MAAM,CAAC,cAAc,iCAAiC,KAAO,SAAS,GAAGqC,EAAIoP,KAAKpP,EAAIa,GAAG,KAAMb,EAA4B,yBAAExC,EAAG,2BAA2B,CAAC4C,GAAG,CAAC,OAASJ,EAAI64C,gCAAgC74C,EAAIoP,KAAKpP,EAAIa,GAAG,KAAKrD,EAAGwC,EAAIw4C,QAAQ,CAACt4C,IAAI,kBAAkBjN,IAAI,YAAY0K,MAAM,CAAC,cAAc,UAAUqC,EAAIa,GAAG,KAAKrD,EAAGwC,EAAIw4C,QAAQ,CAACvlD,IAAI,YAAYgN,YAAY,uBAAuBtC,MAAM,CAAC,cAAc,OAAO,cAAc,iBAAiB,CAACH,EAAG,MAAM,CAACyC,YAAY,eAAevC,MAAM,CAAE,mBAAoBsC,EAAI84C,gBAAiB,GAAG94C,EAAIoP,KAAKpP,EAAIa,GAAG,KAAMb,EAA2B,wBAAExC,EAAG,OAAO,CAACyC,YAAY,aAAatC,MAAM,CAAC,cAAc,4BAA4B,YAAY,cAAc,CAACqC,EAAInC,GAAG,0BAAyB,WAAW,MAAO,CAACmC,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAI01C,mBAAmB11C,EAAIyH,iBAAiBxa,SAAS,eAAc,GAAI+S,EAAqB,kBAAExC,EAAG,MAAM,CAACyC,YAAY,sDAAsDtC,MAAM,CAAC,YAAY,YAAY,cAAc,4BAA4B,CAACqC,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIs1C,eAAe,UAAUt1C,EAAIoP,KAAKpP,EAAIa,GAAG,KAAKb,EAAInC,GAAG,WAAW,IAoBzxLC,gBAnBA,SAGE5Q,EAkB5B,OAhBuBA,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,uBCvvBf,IAAI6rD,EAAW,EAAQ,QACnBC,EAAgB,EAAQ,QACxBC,EAAoB,EAAQ,QAC5BC,EAAW,EAAQ,QACnB9sB,EAAY,EAAQ,QACpBD,EAAa,EAAQ,QAkEzBr/B,EAAOC,QApDP,SAAkBC,EAAOyrB,EAAUyJ,GACjC,IAAIlZ,GAAS,EACTna,EAAWmqD,EACX/rD,EAASD,EAAMC,OACfksD,GAAW,EACX/qD,EAAS,GACTgrD,EAAOhrD,EAEX,GAAI8zB,EACFi3B,GAAW,EACXtqD,EAAWoqD,OAER,GAAIhsD,GAvBY,IAuBgB,CACnC,IAAIoG,EAAMolB,EAAW,KAAO2T,EAAUp/B,GACtC,GAAIqG,EACF,OAAO84B,EAAW94B,GAEpB8lD,GAAW,EACXtqD,EAAWqqD,EACXE,EAAO,IAAIL,OAGXK,EAAO3gC,EAAW,GAAKrqB,EAEzBirD,EACA,OAASrwC,EAAQ/b,GAAQ,CACvB,IAAIqB,EAAQtB,EAAMgc,GACdjK,EAAW0Z,EAAWA,EAASnqB,GAASA,EAG5C,GADAA,EAAS4zB,GAAwB,IAAV5zB,EAAeA,EAAQ,EAC1C6qD,GAAYp6C,GAAaA,EAAU,CAErC,IADA,IAAIu6C,EAAYF,EAAKnsD,OACdqsD,KACL,GAAIF,EAAKE,KAAev6C,EACtB,SAASs6C,EAGT5gC,GACF2gC,EAAKh6C,KAAKL,GAEZ3Q,EAAOgR,KAAK9Q,QAEJO,EAASuqD,EAAMr6C,EAAUmjB,KAC7Bk3B,IAAShrD,GACXgrD,EAAKh6C,KAAKL,GAEZ3Q,EAAOgR,KAAK9Q,IAGhB,OAAOF,I,qBCpET,IAAImrD,EAAY,EAAQ,QACpBlzC,EAAY,EAAQ,QACpBC,EAAW,EAAQ,QAGnBkzC,EAAYlzC,GAAYA,EAASpU,MAmBjCA,EAAQsnD,EAAYnzC,EAAUmzC,GAAaD,EAE/CzsD,EAAOC,QAAUmF,G,kCC1BjB,qCAmHA,MAAM2K,EAhHO,CACXZ,KAAM,eACN8B,WAAY,CACVyI,SAAA,KAEF/S,MAAO,CAIL2E,MAAO,CACL2E,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MAKXu8C,QAAS,CACP18C,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MAKXw8C,UAAW,CACT38C,KAAMnO,OACNqO,UAAU,EACVC,QAAS,KAKX+qB,YAAa,CACXlrB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MAKXy8C,kBAAmB,CACjB58C,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MAKX08C,kBAAmB,CACjB78C,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MAKX28C,oBAAqB,CACnB98C,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MAKX48C,oBAAqB,CACnB/8C,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MAKX68C,QAAS,CACPh9C,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEX88C,iBAAkB,CAChBj9C,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKX+8C,aAAc,CACZl9C,KAAM,CAAClP,MAAO0Q,OAAQF,QACtBpB,UAAU,EACVC,QAAS,IAAM,KAGnB6B,SAAU,CACR,SACE,OAAO7H,KAAKgjD,yBAA2BhjD,KAAKwiD,UAAY,MAE1D,2BACE,OAAO18C,QAAQ9F,KAAKwiD,YAEtB,4BACE,OAAO18C,QAAQ9F,KAAKyiD,mBAAqBziD,KAAK0iD,oBAEhD,8BACE,OAAO58C,QAAQ9F,KAAK2iD,qBAAuB3iD,KAAK4iD,sBAElD,iBACE,MAAO,CAAC5iD,KAAK6iD,QAAU,6BAA+B,mBAAoB7iD,KAAK+iD,iBAgBnF,MAeM98C,EAAoB,IACxB,CAAEC,OAvBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,UAAU,CAACyC,YAAY,UAAUvC,MAAM,CAC9I,6CAA8CsC,EAAI+5C,QAClD,cAAe/5C,EAAI+5C,UAClB,CAACv8C,EAAG,MAAM,CAACE,MAAM,CAAE,gCAAiCsC,EAAI+5C,QAAS,iBAAkB/5C,EAAI+5C,UAAW,CAAE/5C,EAAW,QAAExC,EAAG,MAAM,CAACyC,YAAY,gBAAgBvC,MAAM,CAAE,0BAA2BsC,EAAIg6C,kBAAmBr8C,MAAM,CAAC,IAAMqC,EAAIy5C,QAAQ,IAAM,GAAG,OAASz5C,EAAI29B,UAAU39B,EAAIoP,OAAOpP,EAAIa,GAAG,KAAKrD,EAAG,MAAM,CAACyC,YAAY,4CAA4CvC,MAAMsC,EAAIm6C,eAAex8C,MAAM,CAAC,cAAc,2BAA2B,CAACqC,EAAInC,GAAG,SAAQ,WAAW,MAAO,CAACL,EAAG,KAAK,CAACyC,YAAY,uDAAuDvC,MAAMsC,EAAI+5C,QAAU,KAAO,MAAM,CAAC/5C,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAI5H,OAAO,kBAAiB4H,EAAIa,GAAG,KAAMb,EAAIioB,aAAejoB,EAAI8d,aAAamK,YAAazqB,EAAG,IAAI,CAAC0C,IAAI,cAAcD,YAAY,kCAAkC,CAACD,EAAInC,GAAG,eAAc,WAAW,MAAO,CAACmC,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAIioB,aAAa,iBAAgB,GAAGjoB,EAAIoP,KAAKpP,EAAIa,GAAG,KAAKrD,EAAG,MAAM,CAACyC,YAAY,+BAA+BvC,MAAM,CAAE,qBAAsBsC,EAAI+5C,UAAW,CAAC/5C,EAAInC,GAAG,WAAU,WAAW,MAAO,CAAEmC,EAA6B,0BAAExC,EAAG,YAAY,CAACyC,YAAY,UAAUvC,MAAMsC,EAAI+5C,QAAU,UAAY,UAAUp8C,MAAM,CAAC,QAAU,UAAU,KAAOqC,EAAI25C,oBAAoB,CAAC35C,EAAIa,GAAGb,EAAIc,GAAGd,EAAI45C,sBAAsB55C,EAAIoP,KAAKpP,EAAIa,GAAG,KAAMb,EAA+B,4BAAExC,EAAG,YAAY,CAACyC,YAAY,kBAAkBvC,MAAM,CAAE,YAAasC,EAAI+5C,SAAUp8C,MAAM,CAAC,KAAOqC,EAAI65C,sBAAsB,CAAC75C,EAAIa,GAAGb,EAAIc,GAAGd,EAAI85C,qBAAqB,gBAAgB95C,EAAIoP,UAAS,IAAI,MAoBj7CtR,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,qBCzJf,IAAI0E,EAAS,EAAQ,QACjB6jB,EAAe,EAAQ,QA0B3B3oB,EAAOC,QAJP,SAAmBuB,GACjB,OAAOmnB,EAAannB,IApBL,oBAoBesD,EAAOtD,K,kCCxBvC,8CAGA,MAAM8rD,EAAc,IAAQ7pD,GAAW,IAAIk0C,qBAAqBmB,IAC9DA,EAAQtyC,QAAQq3B,IACdA,EAAM7qB,OAAOu6C,yBAAyB1vB,MAEvCp6B,GAAW,KA6Cd,MAAMsM,EA5CO,CACXZ,KAAM,yBACNxI,MAAO,CAILlD,QAAS,CACPwM,KAAMsB,OACNpB,UAAU,EACVC,QAAS,OAGb,UACE,MAAMy6C,EAAWyC,EAAYljD,KAAK3G,SAClC2G,KAAK6M,IAAIs2C,yBAA2B1vB,IAIlCzzB,KAAKoI,MAAM,SAAUqrB,GACjBA,EAAMmtB,eAIR5gD,KAAKoI,MAAM,UAKXpI,KAAKoI,MAAM,cAGfpI,KAAK6M,IAAIu2C,0BAA4B3C,EACrCA,EAAS3R,QAAQ9uC,KAAK6M,MAExB,YACE7M,KAAK6M,IAAIu2C,0BAA0BhU,UAAUpvC,KAAK6M,YAC3C7M,KAAK6M,IAAIs2C,gCACTnjD,KAAK6M,IAAIu2C,2BAGlBF,eAWA,MAeMj9C,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAiBC,EAATnG,KAAgBoG,eAAuC,OAAvDpG,KAA0CqG,MAAMC,IAAIH,GAAa,MAAM,CAAvEnG,KAA4E2G,GAAG,YAAY,IAoBvGC,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,qBCtFX,IAAIq/C,EAAM,CAAC,KAAO,WAAW,YAAc,CAAC,CAAC,KAAO,sBAAsB,UAAY,QAAQ,KAAO,CAAC,KAAO,OAAO,MAAQ,oBAAoB,oBAAsB,CAAC,CAAC,KAAO,qBAAqB,SAAW,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,aAAa,KAAO,CAAC,KAAO,cAAc,KAAO,CAAC,KAAO,YAAY,KAAO,CAAC,KAAO,OAAO,MAAQ,QAAQ,WAAa,IAAI,CAAC,KAAO,qBAAqB,SAAW,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,WAAW,KAAO,CAAC,KAAO,YAAY,KAAO,CAAC,KAAO,OAAO,MAAQ,WAAW,WAAa,IAAI,CAAC,KAAO,qBAAqB,SAAW,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,cAAc,KAAO,CAAC,KAAO,YAAY,KAAO,CAAC,KAAO,OAAO,MAAQ,YAAY,aAAe,CAAC,KAAO,eAAe,OAAQ,GAAO,WAAa,IAAI,CAAC,KAAO,qBAAqB,SAAW,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,UAAU,KAAO,CAAC,KAAO,YAAY,KAAO,CAAC,KAAO,OAAO,MAAQ,uBAAuB,WAAa,KAAK,WAAa,GAAG,aAAe,CAAC,KAAO,eAAe,WAAa,CAAC,CAAC,KAAO,QAAQ,KAAO,CAAC,KAAO,OAAO,MAAQ,SAAS,UAAY,CAAC,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,YAAY,MAAQ,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,eAAe,WAAa,CAAC,CAAC,KAAO,YAAY,KAAO,CAAC,KAAO,OAAO,MAAQ,QAAQ,UAAY,CAAC,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,MAAM,MAAQ,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,kBAAkB,aAAe,CAAC,KAAO,eAAe,WAAa,CAAC,CAAC,KAAO,QAAQ,KAAO,CAAC,KAAO,OAAO,MAAQ,MAAM,UAAY,GAAG,WAAa,IAAI,CAAC,KAAO,QAAQ,KAAO,CAAC,KAAO,OAAO,MAAQ,cAAc,UAAY,CAAC,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,eAAe,MAAQ,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,YAAY,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,oBAAoB,MAAQ,CAAC,KAAO,eAAe,OAAQ,IAAO,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,sBAAsB,MAAQ,CAAC,KAAO,eAAe,OAAQ,IAAO,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,QAAQ,MAAQ,CAAC,KAAO,YAAY,MAAQ,8BAA8B,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,SAAS,MAAQ,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,YAAY,WAAa,GAAG,aAAe,CAAC,KAAO,eAAe,WAAa,CAAC,CAAC,KAAO,QAAQ,KAAO,CAAC,KAAO,OAAO,MAAQ,SAAS,UAAY,GAAG,WAAa,GAAG,aAAe,CAAC,KAAO,eAAe,WAAa,CAAC,CAAC,KAAO,iBAAiB,KAAO,CAAC,KAAO,OAAO,MAAQ,aAAa,WAAa,aAAa,CAAC,KAAO,QAAQ,KAAO,CAAC,KAAO,OAAO,MAAQ,WAAW,UAAY,CAAC,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,YAAY,MAAQ,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,eAAe,WAAa,CAAC,CAAC,KAAO,YAAY,KAAO,CAAC,KAAO,OAAO,MAAQ,WAAW,UAAY,CAAC,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,MAAM,MAAQ,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,kBAAkB,aAAe,CAAC,KAAO,eAAe,WAAa,CAAC,CAAC,KAAO,QAAQ,KAAO,CAAC,KAAO,OAAO,MAAQ,MAAM,UAAY,GAAG,WAAa,IAAI,CAAC,KAAO,QAAQ,KAAO,CAAC,KAAO,OAAO,MAAQ,cAAc,UAAY,CAAC,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,eAAe,MAAQ,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,YAAY,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,oBAAoB,MAAQ,CAAC,KAAO,eAAe,OAAQ,IAAO,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,QAAQ,MAAQ,CAAC,KAAO,YAAY,MAAQ,8BAA8B,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,SAAS,MAAQ,CAAC,KAAO,WAAW,KAAO,CAAC,KAAO,OAAO,MAAQ,YAAY,WAAa,GAAG,aAAe,CAAC,KAAO,eAAe,WAAa,CAAC,CAAC,KAAO,QAAQ,KAAO,CAAC,KAAO,OAAO,MAAQ,SAAS,UAAY,GAAG,WAAa,GAAG,aAAe,CAAC,KAAO,eAAe,WAAa,CAAC,CAAC,KAAO,iBAAiB,KAAO,CAAC,KAAO,OAAO,MAAQ,aAAa,WAAa,iBAAiB,IAAM,CAAC,MAAQ,EAAE,IAAM,MACn+HA,EAAIC,IAAItzB,OAAS,CAAC,KAAO,quBAAuuB,KAAO,kBAAkB,eAAiB,CAAC,KAAO,EAAE,OAAS,IAG7zB,IAAIqhC,EAAQ,GAedhO,EAAIK,YAAcL,EAAIK,YAAYh+B,OAAc,EAAQ,QAAgCg+B,YAbxE1tC,QACV,SAAS2tC,GACP,GAAiB,uBAAbA,EAAIG,KAA+B,OAAO,EAC9C,IAAI/wC,EAAO4wC,EAAI5wC,KAAK3N,MACpB,OAAIisD,EAAMt+C,KAGRs+C,EAAMt+C,IAAQ,GACP,OAsCf,IAAIwwC,EAAiB,GAWrB,SAASC,EAAcH,EAAKtwC,GAC1B,IAAK,IAAI0wC,EAAI,EAAGA,EAAIJ,EAAIK,YAAY3/C,OAAQ0/C,IAAK,CAC/C,IAAIljB,EAAU8iB,EAAIK,YAAYD,GAC9B,GAAIljB,EAAQxtB,MAAQwtB,EAAQxtB,KAAK3N,OAAS2N,EACxC,OAAOwtB,GAbX8iB,EAAIK,YAAYt5C,SAAQ,SAASu5C,GAC/B,GAAIA,EAAI5wC,KAAM,CACZ,IAAI6wC,EAAO,IAAIvlC,KAjCrB,SAASwlC,EAA0B16B,EAAMy6B,GACvC,GAAkB,mBAAdz6B,EAAK26B,KACPF,EAAKt5C,IAAI6e,EAAKpW,KAAK3N,YACd,GAAkB,uBAAd+jB,EAAK26B,KAA+B,CAC7C,IAAIjwC,EAAOsV,EAAKtV,KACE,cAAdA,EAAKiwC,MACPF,EAAKt5C,IAAIuJ,EAAKd,KAAK3N,OAInB+jB,EAAK46B,cACP56B,EAAK46B,aAAaC,WAAW55C,SAAQ,SAAS65C,GAC5CJ,EAA0BI,EAAWL,MAIrCz6B,EAAK+6B,qBACP/6B,EAAK+6B,oBAAoB95C,SAAQ,SAASu5C,GACxCE,EAA0BF,EAAKC,MAI/Bz6B,EAAKu6B,aACPv6B,EAAKu6B,YAAYt5C,SAAQ,SAASu5C,GAChCE,EAA0BF,EAAKC,MAU/BC,CAA0BF,EAAKC,GAC/BL,EAAeI,EAAI5wC,KAAK3N,OAASw+C,MA4DvChgD,EAAOC,QAAUw/C,EAEbz/C,EAAOC,QAA0B,iBAhDrC,SAAkBw/C,EAAKc,GAErB,IAAIC,EAAS,CACXN,KAAMT,EAAIS,KACVJ,YAAa,CAACF,EAAcH,EAAKc,KAE/Bd,EAAIH,eAAe,SACrBkB,EAAOd,IAAMD,EAAIC,KAKnB,IAAIe,EAASd,EAAeY,IAAkB,IAAI9lC,IAC9CimC,EAAU,IAAIjmC,IACdkmC,EAAU,IAAIlmC,IAOlB,IAJAgmC,EAAOj6C,SAAQ,SAASo6C,GACtBD,EAAQj6C,IAAIk6C,MAGPD,EAAQjmC,KAAO,GAAG,CACvB,IAAImmC,EAAWF,EACfA,EAAU,IAAIlmC,IAEdomC,EAASr6C,SAAQ,SAASo6C,GACnBF,EAAQnjB,IAAIqjB,KACfF,EAAQh6C,IAAIk6C,IACIjB,EAAeiB,IAAY,IAAInmC,KACrCjU,SAAQ,SAASs6C,GACzBH,EAAQj6C,IAAIo6C,UAapB,OAPAJ,EAAQl6C,SAAQ,SAASo6C,GACvB,IAAIliC,EAAKkhC,EAAcH,EAAKmB,GACxBliC,GACF8hC,EAAOV,YAAYxtC,KAAKoM,MAIrB8hC,EAKgCO,CAAStB,EAAK,qB,kCCzH3D,kFAMA,MAAMiO,EAAiB,CACrB,CAAC,IAA2CjkC,KAAM,mDAClD,CAAC,IAA2CC,QAAS,oDAiEvD,MAAM3Z,EA/DO,CACXZ,KAAM,IACN8B,WAAY,CACVwe,yBAAA,KAEF9oB,MAAO,CAILie,MAAO,CACL3U,KAAMsB,OACNpB,UAAU,EACVC,QAAS,KACT0B,UAAW,KAQb67C,SAAU,CACR19C,KAAMC,QACNC,UAAU,EACVC,SAAS,GAMXw9C,eAAgB,CACd39C,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAA2CqZ,IACpD3X,UAAWtQ,GAAS+P,OAAOhM,KAAK,KAA4CxD,SAASP,KAGzFyQ,SAAU,CACR,cACE,OAAO7H,KAAKujD,SAAWD,EAAetjD,KAAKwjD,gBAAkB,MAE/D,aACE,IAAIC,EACJ,OAAOzjD,KAAK4mB,aAAa,iBAAkD,QAA9B68B,EAAczjD,KAAKwa,aAAmC,IAAhBipC,OAAyB,EAASA,EAAY1+C,OAEnI,iBACE,OAAO/E,KAAK0jD,WAAa1jD,KAAKk9C,OAAS,OAG3C,UACEl9C,KAAKk9C,OAAS,IAAS,kCAEzBz0C,QAAS,CACP,aAAauf,GACXhoB,KAAKoI,MAAM,SAAU4f,IAEvBG,aAAY,IACH,IAAS,sBAapB,MAeMliB,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,KAAK,CAACE,MAAMsC,EAAI66C,aAAa,CAAE76C,EAAc,WAAExC,EAAG,MAAM,CAACyC,YAAY,yDAAyDtC,MAAM,CAAC,GAAKqC,EAAIo0C,OAAO,cAAc,SAAS,CAACp0C,EAAInC,GAAG,eAAc,WAAW,MAAO,CAACmC,EAAIa,GAAGb,EAAIc,GAAGd,EAAI0R,MAAMzV,YAAW,GAAG+D,EAAIoP,KAAKpP,EAAIa,GAAG,KAAKrD,EAAG,KAAK,CAACyC,YAAY,+BAA+BtC,MAAM,CAAC,kBAAkBqC,EAAI86C,iBAAiB,CAAC96C,EAAInC,GAAG,WAAU,WAAW,OAAOmC,EAAI4E,GAAI5E,EAAI0R,MAAW,OAAE,SAAStK,GAAM,OAAO5J,EAAG,8BAA8B,CAAC9K,IAAIsN,EAAIqf,eAAe1hB,MAAM,CAAC,KAAOyJ,GAAMhH,GAAG,CAAC,OAASJ,EAAI8f,cAActf,YAAYR,EAAIS,GAAG,CAAC,CAAC/N,IAAI,YAAYgO,GAAG,WAAW,MAAO,CAACV,EAAInC,GAAG,YAAY,KAAK,CAAC,KAAOuJ,MAASxB,OAAM,IAAO,MAAK,YAAa,MAoBjwB9H,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,mBCzFfJ,EAAOC,QALP,SAAcC,GACZ,IAAIC,EAAkB,MAATD,EAAgB,EAAIA,EAAMC,OACvC,OAAOA,EAASD,EAAMC,EAAS,QAAKC,I,qBChBtC,IACIG,EADU,EAAQ,OACXuuB,CAAQ,QAAS,EAAQ,SAEpCvuB,EAAKiR,YAAc,EAAQ,QAC3BxR,EAAOC,QAAUM,G,uBCJjB,IAAI09B,EAAa,EAAQ,QACrBgwB,EAAa,EAAQ,QAczBjuD,EAAOC,QAJP,SAAqBmsB,EAAQvmB,GAC3B,OAAOo4B,EAAW7R,EAAQ6hC,EAAW7hC,GAASvmB,K,mBCPhD7F,EAAOC,QAAU,I,4ZCLwR,ECoB1R,CACfgR,WAAA,CACAi9C,sBACAC,aAEAxnD,MAAA,CACAynD,YAAA,CACAn+C,KAAAwB,OACAtB,UAAA,IAGA8B,SAAA,IACAo8C,YAAA,WACAC,kBAAA,SAAA5hD,GAAA,OAAAA,EAAA6hD,WAAAxG,UACAyG,kBAAA,SAAA9hD,GAAA,OAAAA,EAAA+hD,OAAAC,cACAC,eAAA,SAAAjiD,GAAA,OAAAA,EAAA6hD,WAAAtjD,MACA2jD,WAAA,SAAAliD,GAAA,OAAAA,EAAA+hD,OAAAxjD,QAEAkH,SACA,OACA,CACAiQ,KAAA,YACA9W,MAAAs/B,IACA36B,KAAA68B,KACAz6B,MAAAw8C,UACAC,kBAAA,KAAAH,eACA34C,QAAA,EACAyxB,OAAA,IACAsnB,gBAAA,KAAAA,iBAEA,CACA3sC,KAAA,SACA9W,MAAAo/B,IACAz6B,KAAA48B,KACAx6B,MAAA28C,UACAC,cAAAvlB,IACAwlB,cAAA,KAAAN,WACA54C,QAAA,EACAyxB,OAAA,IACA0nB,YAAA,KAAAA,eAIA3kD,QACA,OAAA4kD,YAAA,CACAC,gBAAA,KAAAf,kBACAgB,WAAA,KAAAd,qBAGAe,qBACA,OAAAC,YAAA,CACA,CAAA1iB,MAAA,KAAAwhB,kBACA,CAAAzhB,MAAA,KAAA2hB,sBAIA37C,QAAA,IACA48C,YAAA,0DACAC,aAAAC,GACA,OAAA9iB,MAAA4hB,EAAA,CAAA3hB,MAAA8iB,GACAC,YAAAF,GAEA,KAAAG,WAAA,CACAxB,kBAAAsB,IAAA,QACApB,kBAAAC,GAAA,Q,YClEe,EAXC,YACd,GCRW,WAAkB,IAAa/9C,EAALtG,KAAYqG,MAAMC,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,sBAAsB,CAACyC,YAAY,4BAA4BtC,MAAM,CAAC,UAA/GzG,KAA+HgkD,YAAY,8BAA8B,wBAAwB,2BAAjMhkD,KAAgOmtB,GAAG,kBAAkB,OAArPntB,KAAkQ+H,OAAO,uBAAzQ/H,KAAoSmlD,mBAAmB,kBAAkB,IAAIj8C,GAAG,CAAC,SAAjVlJ,KAAgWslD,gBAAhWtlD,KAAoX2J,GAAG,KAAKrD,EAAG,WAAW,CAACG,MAAM,CAAC,MAAlZzG,KAA8ZI,UAAU,KAEzb,IDSpB,EACA,KACA,KACA,M,yIEPa,ICPgS,EDOhS,CACf2E,KAAA,kBACA8B,WAAA,CACA8+C,iBACA16B,aACA26B,qBAEAv7C,WAAA,CACAC,UAAAu7C,KAEAtpD,MAAA,CACAupD,UAAA,CACAjgD,KAAAlP,MACAoP,UAAA,EACAC,QAAA,uBAGA6B,SAAA,CACAsjB,aACA,YAAA26B,UAAA/vD,OAtBA,EACA,EADA,GA0BAgwD,uBACA,YAAAD,UAAA/vD,OAAA,GAEAiwD,oBACA,gBAAAF,UAAA/vD,QAEAkwD,gBACA,YAAAH,UAAA,IAEAI,2BACA,OAAAr3B,cACA,yBACA,0BACA,KAAAi3B,UAAA/vD,OAAA,KAAAo1B,cAIAC,WAAA,GACAI,qBAAA,IE9Be,EAXC,YACd,GCRW,WAAkB,IAAI1iB,EAAI9I,KAAKsG,EAAGwC,EAAIzC,MAAMC,GAAG,OAAOA,EAAG,MAAM,CAAEwC,EAAIi9C,qBAAsBz/C,EAAG,oBAAoB,CAACG,MAAM,CAAC,UAAY,GAAG,QAAUqC,EAAIg9C,UAAU,cAAch9C,EAAIqiB,WAAW,cAAcriB,EAAIwf,SAAS8C,WAAW,qBAAqB,OAAO,0BAA0BtiB,EAAIwf,SAASkD,qBAAqB,qBAAqB1iB,EAAIo9C,0BAA0B58C,YAAYR,EAAIS,GAAG,CAAC,CAAC/N,IAAI,SAASgO,GAAG,UAAS,OAAEqiB,IAAU,MAAO,CAACvlB,EAAG,iBAAiB,CAAC+D,WAAW,CAAC,CAACtF,KAAK,aAAa0K,QAAQ,iBAAiBhJ,MAAM,CAAC,OAAS,SAAS,KAAOolB,EAAOs6B,QAAQ,MAAQt6B,EAAO9mB,OAAO,CAACuB,EAAG,YAAY,CAACG,MAAM,CAAC,IAAMolB,EAAOu6B,WAAW,KAAOt9C,EAAIwf,SAAS8C,eAAe,OAAO,MAAK,EAAM,aAActiB,EAAIk9C,kBAAmB1/C,EAAG,iBAAiB,CAAC+D,WAAW,CAAC,CAACtF,KAAK,aAAa0K,QAAQ,iBAAiBhJ,MAAM,CAAC,OAAS,SAAS,KAAOqC,EAAIm9C,cAAcE,QAAQ,MAAQr9C,EAAIm9C,cAAclhD,OAAO,CAACuB,EAAG,YAAY,CAACG,MAAM,CAAC,IAAMqC,EAAIm9C,cAAcG,WAAW,KAAOt9C,EAAIwf,SAAS8C,eAAe,GAAG,CAACtiB,EAAIa,GAAG,SAAS,KAE99B,IDSpB,EACA,KACA,KACA,M,QEdgT,ECgBnS,CACf5E,KAAA,oBACA8B,WAAA,CACAw/C,gBACAC,WACAn8C,WACAw7C,iBACA16B,aACAs7B,mBAEAl8C,WAAA,CACAC,UAAAu7C,KAEAh+C,SAAA,IACAo8C,YAAA,oCAEAx7C,QAAA,CACA+9C,iBAAAC,GACAx4B,kBAAAd,aAAA,uBACAu5B,QAAAC,IAAAC,cAAAltD,OAAA+sD,MAGAI,eAAAzvD,GACA,OAAAA,GAAA,KAAAA,EAEA0vD,iBAAAC,GACA,GAAAA,GAAA,IACA,MAAA74B,EAAAr1B,KAAAC,MAAAiuD,EAAA,IACA,OAAAl4B,cAAA,kBAAAX,GAEA,OAAA64B,GAAA,GAAAA,EAAA,GACAl4B,cAAA,oBAAAk4B,GAGA94B,kBAAAd,aAAA,uBAAA65B,SAAA,WAGAC,kBAAA,CACA,CACAzrD,IAAA,aACAiO,MAAA0jB,aAAA,iBACA2M,QAAA,QACAye,QAAA,sDAEA,CACA/8C,IAAA,cACAiO,MAAA0jB,aAAA,eACA3mB,MAAA,aACA+xC,QAAA,sDAEA,CACA/8C,IAAA,SACAiO,MAAA0jB,aAAA,UACAorB,QAAA,sDAEA,CACA/8C,IAAA,cACAiO,MAAA0jB,aAAA,aACAorB,QAAA,sDAEA,CACA/8C,IAAA,cACAiO,MAAA0jB,aAAA,YACA3mB,MAAA,aACA+xC,QAAA,sDAEA,CACA/8C,IAAA,aACAiO,MAAA0jB,aAAA,WACA3mB,MAAA,aACA+xC,QAAA,sDAEA,CACA/8C,IAAA,eACAiO,MAAA0jB,aAAA,gBACA3mB,MAAA,aACA+xC,QAAA,wDC1Ee,EAXC,YACd,GCRW,WAAkB,IAAIzvC,EAAI9I,KAAKsG,EAAGwC,EAAIzC,MAAMC,GAAG,OAAOA,EAAG,gBAAgB,CAACyC,YAAY,OAAOtC,MAAM,CAAC,OAASqC,EAAIwf,SAAS2+B,kBAAkB,MAAQn+C,EAAIo+C,cAAc,QAAU,MAAM59C,YAAYR,EAAIS,GAAG,CAAC,CAAC/N,IAAI,mBAAmBgO,GAAG,SAASgH,GAAO,MAAO,CAAClK,EAAG,MAAM,CAACyC,YAAY,oEAAoE,CAACzC,EAAG,MAAM,CAACyC,YAAY,kCAAkC,CAACzC,EAAG,UAAU,CAACyC,YAAY,qDAAqDtC,MAAM,CAAC,KAAO+J,EAAMN,KAAKi2C,QAAQ,OAAS,WAAW,CAACr9C,EAAIa,GAAGb,EAAIc,GAAG4G,EAAMN,KAAKhP,WAAW,GAAG4H,EAAIa,GAAG,KAAKrD,EAAG,KAAK,CAACyC,YAAY,4DAA4D,CAACzC,EAAG,KAAK,CAACwC,EAAIa,GAAG,IAAIb,EAAIc,GAAG4G,EAAMN,KAAKi3C,QAAQr+C,EAAIa,GAAG,KAAKrD,EAAG,KAAK,CAACwC,EAAIa,GAAGb,EAAIc,GAAGd,EAAI09C,iBAAiBh2C,EAAMN,KAAKk3C,gBAAgBt+C,EAAIa,GAAG,KAAM6G,EAAMN,KAAKs1C,UAAWl/C,EAAG,KAAK,CAACA,EAAG,OAAO,CAACyC,YAAY,2BAA2B,CAACzC,EAAG,UAAU,CAACyC,YAAY,UAAUtC,MAAM,CAAC,KAAO,eAAeqC,EAAIa,GAAG,iBAAiBb,EAAIc,GAAG4G,EAAMN,KAAKs1C,UAAUtkD,OAAO,iBAAiB,KAAK4H,EAAIoP,YAAY,CAAC1c,IAAI,oBAAoBgO,GAAG,UAAS,MAAEpS,IAAS,MAAO,CAAE0R,EAAI+9C,eAAezvD,GAAQ,CAACkP,EAAG,OAAO,CAAC2Q,SAAS,CAAC,YAAcnO,EAAIc,GAAGd,EAAIg+C,iBAAiB1vD,QAAY,CAAC0R,EAAIa,GAAG,WAAW,CAACnO,IAAI,eAAegO,GAAG,UAAS,MAAEpS,IAAS,MAAO,CAACkP,EAAG,iBAAiB,CAAC+D,WAAW,CAAC,CAACtF,KAAK,aAAa0K,QAAQ,iBAAiBhJ,MAAM,CAAC,OAAS,SAAS,KAAOrP,EAAM+uD,QAAQ,MAAQ/uD,EAAM2N,OAAO,CAACuB,EAAG,YAAY,CAACG,MAAM,CAAC,KAAO,GAAG,IAAMrP,EAAMgvD,WAAW,cAAchvD,EAAM2N,SAAS,MAAM,CAACvJ,IAAI,oBAAoBgO,GAAG,UAAS,MAAEpS,IAAS,MAAO,CAACkP,EAAG,mBAAmB,CAACG,MAAM,CAAC,UAAYrP,GAASA,EAAMrB,OACjmDqB,EACA,SAAgF,CAACoE,IAAI,mBAAmBgO,GAAG,UAAS,MAAEpS,IAAS,MAAO,CAACkP,EAAG,OAAO,CAACwC,EAAIa,GAAGb,EAAIc,GAAGxS,EAAMiwD,qBAAqB,CAAC7rD,IAAI,qBAAqBgO,GAAG,SAASgH,GAAO,MAAO,CAAClK,EAAG,OAAO,CAACyC,YAAY,oCAAoC,CAACD,EAAIa,GAAG,KAAKb,EAAIc,GAAG4G,EAAMN,KAAKo3C,WAAWC,WAAW,OAAOz+C,EAAIa,GAAG,KAAKrD,EAAG,OAAO,CAACyC,YAAY,mCAAmC,CAACD,EAAIa,GAAG,KAAKb,EAAIc,GAAG4G,EAAMN,KAAKo3C,WAAWE,WAAW,gBAExd,IDOpB,EACA,KACA,KACA,M,QEdgS,ECOnR,CACf3gD,WAAA,CACA4gD,YACAhK,kBACAiK,iBACAC,iBACAC,YACAC,qBAEAtrD,MAAA,CACAyG,UAAA,CACA6C,KAAAnO,OACAqO,UAAA,GAEAi+C,YAAA,CACAn+C,KAAAwB,OACAtB,UAAA,GAEA+hD,mBAAA,CACAjiD,KAAAwB,OACAtB,UAAA,EACAC,QAAA,MAEA+hD,kBAAA,CACAliD,KAAAwB,OACAtB,UAAA,IAGA8B,SAAA,IACAo8C,YAAA,iBACA+D,UAAA,YACApqC,QAAA,SAAAtb,GAAA,OAAAA,EAAA2lD,SAAArqC,SACAsgC,WAAA,SAAA57C,GAAA,OAAAA,EAAA2lD,SAAAC,OACAC,KAAA,SAAA7lD,GAAA,OAAAA,EAAA2lD,SAAAE,QAEAtqC,YAAA,CACA3hB,MACA,YAAAisD,MAEAhsD,IAAAisD,GACA,KAAAC,QAAAD,GACA,KAAAE,wBAIAC,UACA,KAAAC,aAAA,KAAAxlD,WACA,KAAAslD,sBAEA7/C,QAAA,IACA48C,YAAA,mECvCe,EAXC,YACd,GCRW,WAAkB,IAAIv8C,EAAI9I,KAAKsG,EAAGwC,EAAIzC,MAAMC,GAAG,OAAOA,EAAG,MAAM,CAACA,EAAG,aAAa,CAACG,MAAM,CAAC,eAAeqC,EAAIk7C,eAAel7C,EAAIa,GAAG,KAAKrD,EAAG,MAAM,CAACyC,YAAY,WAAW,CAACzC,EAAG,kBAAkB,CAAC+D,WAAW,CAAC,CAACtF,KAAK,OAAO0K,QAAQ,SAASrY,MAAO0R,EAAIk/C,UAAWj+C,WAAW,cAAchB,YAAY,UAAUtC,MAAM,CAAC,KAAO,QAAQqC,EAAIa,GAAG,KAAOb,EAAIk/C,UAAo6Bl/C,EAAIoP,KAA75B,CAAGpP,EAAIo1C,WAAod,CAAC53C,EAAG,MAAM,CAACA,EAAG,OAAO,CAACyC,YAAY,gBAAgB,CAACD,EAAIa,GAAGb,EAAIc,GAAGd,EAAIqkB,GAAG,gCAAgCrkB,EAAIa,GAAG,KAAKrD,EAAG,WAAW,CAACwC,EAAIa,GAAGb,EAAIc,GAAGd,EAAIo1C,gBAAgB,GAAGp1C,EAAIa,GAAG,KAAKrD,EAAG,uBAAuBwC,EAAIa,GAAG,KAAKrD,EAAG,gBAAgB,CAACyC,YAAY,YAAYtC,MAAM,CAAC,WAAWqC,EAAI8U,QAAQ,cAAc9U,EAAIo1C,WAAW,MAAQ,UAAUh5C,MAAM,CAAC9N,MAAO0R,EAAI+U,YAAavd,SAAS,SAAUwJ,GAAMhB,EAAI+U,YAAY/T,GAAKC,WAAW,kBAAn3BzD,EAAG,iBAAiB,CAACG,MAAM,CAAC,MAAQqC,EAAIqkB,GAAG,0BAA0B,sBAAsBrkB,EAAIqkB,GAAG,qBAAqB,sBAAsBrkB,EAAIg/C,mBAAmB,WAAWh/C,EAAIi/C,kBAAkB,aAAa,KAAKz+C,YAAYR,EAAIS,GAAG,CAAC,CAAC/N,IAAI,cAAcgO,GAAG,WAAW,MAAO,CAAClD,EAAG,MAAM,CAACyC,YAAY,kBAAkB,CAACzC,EAAG,IAAI,CAACwC,EAAIa,GAAGb,EAAIc,GAAGd,EAAIqkB,GAAG,wEAAwEze,OAAM,IAAO,MAAK,EAAM,gBAAsd,IAAI,KAE9vC,IDSpB,EACA,KACA,KACA,M,oBEdK,SAASg3C,GAAW,SAAE+C,IAC3B,OAAOC,QAAQC,IAAI,CACjBF,EAAS,wBAAyB,GAClCA,EAAS,mCAAoC,Q,wCCH1C,MCOMD,EAAe,UAAC,OAAEI,GAAU5lD,GAAS,OAAK4lD,EDPzB,iBCOsD5lD,IAEvEslD,EAAqB,UAAC,OAAEM,EAAM,MAAEtmD,EAAK,UAAEumD,IAClDD,EDRoC,0BCUpC,MAAM,UAAE5lD,EAAS,SAAEilD,GAAa3lD,GAE9BijD,SACEpB,YAAcxG,SAAUuG,GACxBG,QAAUC,aAAcF,KAExByE,EAEEC,EAAiB9D,YAAoB,CACzCC,gBAAiBf,EACjBgB,WAAYd,IAER7jD,EAAS,CACbwoD,WAAY/lD,EACZmlD,KAAMF,EAASE,QACZW,GAGL,OAAOE,IAAI1nD,oBAAoBf,GAC5BK,MAAK,SAACqoD,GACL,MAAM,QAAE1lD,EAAO,KAAE1C,GAASooD,EACpBC,EAAoBC,YAAiB5lD,GAC3CqlD,ED/BwC,iCC+BK,CAC3CX,SAAUmB,YAAmBF,GAC7BhC,cAAermD,OAGlBwoD,OAAM,UAAC,SAAEJ,IACR,MAAM,OAAE3kD,GAAW2kD,EACnBL,EDrCsC,+BCqCKtkD,GAC3CglD,sBAAY,CACVn1B,QAAShH,aAAG,yDAKPk7B,EAAU,UAAC,OAAEO,GAAUT,GAAI,OAAKS,ED1CrB,WC0C4CT,IC9CrD,ICEA,GACboB,YAAY,EACZjnD,MCNoB,CACpBU,UAAW,KACXglD,WAAW,EACXwB,UAAW,KACXtC,cAAe,GACfe,SAAU,IDEVwB,UACAC,UDNa,CACb,eAAuBpnD,EAAOU,GAC5BV,EAAMU,UAAYA,GAEpB,uBAA+BV,GAC7BA,EAAM0lD,WAAY,GAEpB,+BAAuC1lD,GAAO,SAAE2lD,EAAQ,cAAEf,IACxD5kD,EAAM0lD,WAAY,EAClB1lD,EAAMknD,UAAY,KAClBlnD,EAAM2lD,SAAWA,EACjB3lD,EAAM4kD,cAAgBA,GAExB,6BAAqC5kD,EAAOknD,GAC1ClnD,EAAM0lD,WAAY,EAClB1lD,EAAMknD,UAAYA,EAClBlnD,EAAM2lD,SAAW,GACjB3lD,EAAM4kD,cAAgB,IAExB,SAAiB5kD,EAAO6lD,GACtB7lD,EAAM2lD,SAAW,IAAK3lD,EAAM2lD,SAAUE,WGf1CwB,UAAIC,IAAIC,KAWOC,MARb,IAAID,IAAKE,MAAM,CACbN,UACAO,QAAS,CACPzE,YACA2B,oBCTS,WACb,MAAMx3C,EAAYZ,SAASm7C,eAAe,6BACpC,UACJjnD,EAAS,YACTghD,EAAW,mBACX8D,EAAkB,kBAClBC,EAAiB,cACjBmC,EAAa,WACbC,GACEz6C,EAAU06C,QACd,IAAK16C,EAAW,OAEhB26C,EAAM5B,SAAS,uBAAwB,CACrC6B,mBAAoBJ,EACpBK,eAAgBJ,EAChBK,gBAAiBxG,IAGnB,MAAM,kBAAEE,EAAiB,kBAAEE,GAAsBqG,YAC/CxiC,OAAOyiC,SAASlqD,QAElB6pD,EAAM5B,SAAS,qBAAsB,CAAEvE,oBAAmBE,sBAG1D,IAAIuF,UAAI,CACN96C,GAAIa,EACJ26C,QACAnkD,OAAOgT,GACEA,EAAEyxC,EAAkB,CACzBpuD,MAAO,CACLyG,UAAWtL,OAAOsL,GAClBghD,cACA8D,qBACAC,yBCpCV6C,I,kCCFA,iGAuIA,MAAMjlD,EA/HO,CACXZ,KAAM,YACN8B,WAAY,CACVyI,SAAA,IACAu7C,cAAA,IACAC,qBAAA,KAEFzgD,WAAY,CACVC,UAAW,KAEb/N,MAAO,CAILuU,KAAM,CACJjL,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAKX+kD,YAAa,CACXllD,KAAMlP,MACNoP,UAAU,EACVC,QAAS,IAAM,GAEf0B,UAAWqjD,GAAeA,EAAYngD,MAAM,MAM9CmT,OAAQ,CACNlY,KAAM,CAACwB,OAAQ3P,QACfqO,UAAU,EACVC,QAAS,MAKXglD,YAAa,CACXnlD,KAAMC,QACNC,UAAU,EACVC,SAAS,GAMXilD,qBAAsB,CACpBplD,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MAKXklD,cAAe,CACbrlD,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAKXmlD,oBAAqB,CACnBtlD,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAKXolD,yBAA0B,CACxBvlD,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAKXoP,MAAO,CACLvP,KAAMC,QACNC,UAAU,EACVC,SAAS,IAGb6B,SAAU,CACR,qBACE,OAAO7H,KAAKgrD,YAAc,cAAgB,gBAE5C,oBACE,OAAIhrD,KAAKirD,qBAA6BjrD,KAAKirD,qBACpCjrD,KAAKgrD,YAAc,YAAU,0BAA2B,6BAA+B,YAAU,2BAA4B,gCAGxIviD,QAAS,CACP,sBACE,MAAM4iD,GAAgBrrD,KAAKgrD,YAU3BhrD,KAAKoI,MAAM,sBAAuBijD,IAEpC,gBAAgB1iD,GAUd3I,KAAKoI,MAAM,eAAgBO,MAa/B,MAeM1C,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,kBAAkB,CAACyC,YAAY,cAAc,CAACzC,EAAG,yBAAyB,CAACE,MAAMsC,EAAIoiD,cAAczkD,MAAM,CAAC,cAAcqC,EAAIgI,KAAK,MAAQhI,EAAIiiD,YAAY,SAAWjiD,EAAIiV,OAAO,eAAejV,EAAIqiD,oBAAoB,UAAY,aAAa,MAAQriD,EAAIsM,OAAOlM,GAAG,CAAC,OAASJ,EAAIwiD,mBAAmBxiD,EAAIa,GAAG,KAAKrD,EAAG,YAAY,CAAC+D,WAAW,CAAC,CAACtF,KAAK,aAAa0K,QAAQ,iBAAiBjJ,MAAM,CAAC,2BAA4BsC,EAAIsiD,0BAA0B3kD,MAAM,CAAC,MAAQqC,EAAIyiD,kBAAkB,KAAOziD,EAAI0iD,mBAAmB,aAAa1iD,EAAIyiD,mBAAmBriD,GAAG,CAAC,MAAQJ,EAAI2iD,wBAAwB,IAoBvpB7kD,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,kCC1Kf,qFAgIA,MAAM2P,EAzHO,CACXZ,KAAM,oBACN8B,WAAY,CACVg2C,kBAAA,IACA1yC,OAAA,IACAuhD,YAAA,IACAjO,cAAA,KAEFx2C,cAAc,EACd/B,MAAO,CACL8X,KAAM,QACNrU,MAAO,SAETpM,MAAO,CAILnF,MAAO,CACLyO,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAEX2lD,WAAY,CACV9lD,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEXiF,iBAAkB,CAChBpF,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAAM,YAAU,qCAAsC,UAKjE2F,SAAU,CACR9F,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKXgiD,UAAW,CACTniD,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKXuJ,iBAAkB,CAChBxJ,UAAU,EACVC,SAAS,EACT0B,UAAWtQ,IAAmB,IAAVA,GAAoC,iBAAVA,GAAsBA,aAAiBoY,cAGzF3H,SAAU,CACR,kBACE,MAAM+jD,EAAa,CACjB/lD,KAAM,SACNuB,YAAa,YAAU,sCAAuC,aAC3DpH,KAAK2O,QAKV,OAHKi9C,EAAW,gBACdA,EAAW,cAAgBA,EAAWxkD,aAEjCwkD,GAET,WACE,OAAO9lD,QAAQ9F,KAAK5I,MAAMrB,SAE5B,iBACE,MAAO,IACFiK,KAAK0G,WACRpB,MAAOtF,KAAK6rD,QACZC,QAAS9rD,KAAK+rD,UACdC,SAAUhsD,KAAKisD,aAGnB,kBACE,OAAOjsD,KAAK0L,WAAa1L,KAAK2L,WAGlClD,QAAS,CACP,qBAAqB8pB,GACnB,IAAI25B,EAAmBC,EACvB,OAAO55B,KAAwD,QAA1C25B,EAAoBlsD,KAAKiV,MAAM3P,aAAyC,IAAtB4mD,OAA+B,EAASA,EAAkBr/C,MAAQ0lB,KAAkE,QAApD45B,EAAwBnsD,KAAKiV,MAAMm3C,mBAAmD,IAA1BD,OAAmC,EAASA,EAAsBt/C,MAEvR,aACE7M,KAAK6rD,QAAQ,IACb7rD,KAAK88C,cAEP,aACE98C,KAAKiV,MAAM3P,MAAMuH,IAAIqI,SAEvB,QAAQ9d,GACN4I,KAAKoI,MAAM,QAAShR,IAEtB,WAAWuR,GACT,MAAM,cACJ0jD,GACE1jD,EACA3I,KAAKssD,qBAAqBD,IAG9BrsD,KAAKoI,MAAM,WAAYO,IAEzB,UAAUA,GACR,MAAM,cACJ0jD,GACE1jD,EACA3I,KAAKssD,qBAAqBD,IAG9BrsD,KAAKoI,MAAM,UAAWO,MAgB1B,MAeM1C,EAAoB,IACxB,CAAEC,OAvBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,MAAM,CAACyC,YAAY,yBAAyB,CAACzC,EAAG,UAAU,CAACyC,YAAY,oCAAoCtC,MAAM,CAAC,KAAO,SAAS,QAAU,YAAYqC,EAAIa,GAAG,KAAKrD,EAAG,gBAAgBwC,EAAIvC,GAAGuC,EAAIe,GAAG,CAACb,IAAI,QAAQxC,MAAM,CAC7T,+BAAgCsC,EAAI6iD,WACpC,yCAA0C7iD,EAAI6iD,YAC9CllD,MAAM,CAAC,MAAQqC,EAAI1R,MAAM,SAAW0R,EAAI6C,WAAW,gBAAgB7C,EAAIyjD,iBAAgB,GAAOzjD,EAAIi0C,iBAAiBj0C,EAAIa,GAAG,KAAMb,EAAIk/C,WAAal/C,EAAI0jD,gBAAiBlmD,EAAG,MAAM,CAACyC,YAAY,qCAAqC,CAAED,EAAa,UAAExC,EAAG,kBAAkB,CAACyC,YAAY,uCAAuCD,EAAIoP,KAAKpP,EAAIa,GAAG,KAAMb,EAAmB,gBAAExC,EAAG,uBAAuB,CAAC0C,IAAI,cAAcD,YAAY,mDAAmDtC,MAAM,CAAC,MAAQqC,EAAImC,iBAAiB,oBAAoBnC,EAAIyG,kBAAkBrG,GAAG,CAAC,MAAQ,SAASC,GAAiC,OAAzBA,EAAO6zC,kBAAyBl0C,EAAIm0C,WAAWl9B,MAAM,KAAMtpB,YAAY,QAAUqS,EAAIijD,UAAU,SAAWjjD,EAAImjD,cAAcnjD,EAAIoP,MAAM,GAAGpP,EAAIoP,MAAM,IAoBxrBtR,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,kCCtKf,iGAwHA,MAAM2P,EA/GO,CACXZ,KAAM,UACN8B,WAAY,CACVyI,SAAA,IACAnF,OAAA,IACAm8C,OAAA,IACAh8C,UAAA,KAEF/N,MAAO,CACLkwD,gBAAiB,CACf5mD,KAAMwB,OACNtB,UAAU,EACV2B,UAAWtQ,GAAS,gBAAgBgjB,KAAKhjB,IAE3C8J,MAAO,CACL2E,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAEX+qB,YAAa,CACXlrB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAEX0mD,iBAAkB,CAChB7mD,KAAMwB,OACNtB,UAAU,EACVC,QAAS,OAEX4C,OAAQ,CACN/C,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAEX2mD,OAAQ,CACN9mD,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEX4mD,gBAAiB,CACf/mD,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEX2F,SAAU,CACR9F,KAAMC,QACNC,UAAU,EACVC,SAAS,IAGb,OACE,MAAO,CACL6mD,sBAAuB7sD,KAAKkB,MAAMg4B,YAAY,QAGlDrxB,SAAU,CACR,aACE,MAAMilD,EAAmB,YAAoB9sD,KAAKysD,iBAClD,MAAO,CACL,kBAAmBzsD,KAAK2sD,OACxB,qBAAsBG,IAAqB,IAAkBp0C,KAC7D,sBAAuBo0C,IAAqB,IAAkBC,QAGlE,eACE,MAAO,CACL,2BAA4B/sD,KAAKysD,gBACjC,uBAAwB,mBAAmBzsD,KAAKysD,kBAGpD,YACE,OAAOzsD,KAAK2sD,OAAS3sD,KAAKkB,MAAMyW,MAAM,EAAG3X,KAAK6sD,uBAAyB7sD,KAAKkB,OAE9E,cACE,OAAOlB,KAAKkB,MAAMyW,MAAM3X,KAAK6sD,sBAAwB,IAEvD,iBACE,OAAO7sD,KAAK4I,OAAS,IAAS,QAEhC,gBACE,OAAO5I,KAAK4I,OAAS5I,KAAKiV,MAAM+3C,WAAWngD,IAAM7M,KAAKiV,MAAM+3C,aAGhEjhD,MAAO,CACL,QACE/L,KAAK6sD,sBAAwB7sD,KAAKkB,MAAMg4B,YAAY,QAGxDzwB,QAAS,CACP,QAAQmM,GAON5U,KAAKoI,MAAM,QAASwM,IAEtB,QAAQA,GAON5U,KAAKoI,MAAM,QAASwM,MAaxB,MAeM3O,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,OAAOwC,EAAIe,GAAG,CAACd,YAAY,WAAWvC,MAAMsC,EAAIovB,WAAWzpB,MAAO3F,EAAgB,aAAEI,GAAG,CAAC,MAAQJ,EAAImkD,UAAU,OAAOnkD,EAAI6F,QAAO,GAAO,CAACrI,EAAGwC,EAAIokD,eAAe,CAAClkD,IAAI,aAAajN,IAAI,YAAYgN,YAAY,gBAAgBvC,MAAM,CAAE,0BAA2BsC,EAAIF,QAASnC,MAAM,CAAC,OAAOqC,EAAIF,QAASE,EAAIF,OAAe,SAAW,MAAM,CAACtC,EAAG,OAAO,CAACyC,YAAY,iBAAiB,CAACD,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAIqkD,WAAW,YAAYrkD,EAAIa,GAAG,KAAMb,EAAI6jD,QAAU7jD,EAAIskD,YAAa9mD,EAAG,OAAO,CAACyC,YAAY,wBAAwB,CAACD,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAIskD,aAAa,YAAYtkD,EAAIoP,OAAOpP,EAAIa,GAAG,KAAMb,EAAmB,gBAAExC,EAAG,YAAY,CAACyC,YAAY,yBAAyBtC,MAAM,CAAC,SAAW,WAAW,KAAO,QAAQ,QAAU,QAAQ,aAAa,eAAe,SAAWqC,EAAI6C,UAAUzC,GAAG,CAAC,MAAQJ,EAAIukD,UAAU,CAAC/mD,EAAG,UAAU,CAACG,MAAM,CAAC,KAAO,WAAW,KAAO,OAAO,GAAGqC,EAAIoP,KAAKpP,EAAIa,GAAG,KAAMb,EAAe,YAAExC,EAAG,aAAa,CAACG,MAAM,CAAC,OAAS,WAAc,OAAOqC,EAAIwkD,eAAiB,UAAYxkD,EAAI4jD,iBAAiB,SAAW,aAAa,CAAE5jD,EAAU,OAAExC,EAAG,OAAO,CAACyC,YAAY,0BAA0B,CAACD,EAAIa,GAAG,kBAAkBb,EAAIoP,KAAKpP,EAAIa,GAAG,SAASb,EAAIc,GAAGd,EAAIioB,aAAa,UAAUjoB,EAAIoP,MAAM,IAoBzvCtR,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,kCC3Jf,8DAMA,MAAMu3D,EAAmB,YAAO,CAC9B9kD,QAAS,CACP,YAAY1D,GACV,GAAI,IACF,OAAO,EAGT,MAAM2B,EAAa1G,KAAK0G,YAAc,GAIhC8mD,EAAUxtD,KAAKytD,SAAW,GAGhC,OAAQ,YAAY/mD,EAAW3B,KAAU,YAAQyoD,EAAQzoD,KAAUyoD,EAAQzoD,GAAMhP,OAAS,O,qBCpBhG,IAAIiqB,EAAc,EAAQ,QACtBC,EAAO,EAAQ,QAgBnBrqB,EAAOC,QAJP,SAAiBkP,EAAM5O,EAAMkD,GAC3B,OAAO2mB,EAAYC,EAAMlb,EAAM5O,EAAMkD,K,gGCVhC,MAAPq0D,EAAA,OACAC,EAAA,UACAC,EAAA,MACAC,EAAA,QAQe,ICfsQ,EDetQ,CACftxD,MAAA,CACA6D,MAAA,CACAyF,KAAAsB,OACApB,UAAA,EACAC,QAAA,MAEA8nD,wBAAA,CACAjoD,KAAAwB,OACAtB,UAAA,EACAC,QAAA6nD,EACAnmD,UAAA,SAAAtQ,GAAA,OAAAy2D,EAAAD,GAAAj2D,SAAAP,KAEA22D,oBAAA,CACAloD,KAAAwB,OACAtB,UAAA,EACAC,QAAA0nD,EACAhmD,UAAA,SAAAtQ,GAAA,MACA,CAAAs2D,EAAAC,GAAAh2D,SAAAP,MAGA2U,MAAA,CACA3L,MAAA,CACA8L,WAAA,EACAD,MAAA,EACA+hD,QAAAC,GACAA,GACA,KAAAC,YAAAD,MAKAE,UACAlmC,OAAAoL,iBAAA,gBAAA+6B,iBAEAC,gBACApmC,OAAA2L,oBAAA,gBAAAw6B,iBAEA3lD,QAAA,CACA2lD,eAAAzlD,GACA,KAAAP,MAAA,WAAAO,IAEAulD,YAAAD,GACA,MAAAnuD,EACA,KAAAguD,0BAAAF,EACAU,YAAA,KAAAluD,MAAA6nB,OAAAyiC,SAAArZ,MAAA,SACAkd,YAAAN,EAAAhmC,OAAAyiC,SAAArZ,KAAA,CAAAmd,cAAA,IAEA,KAAAT,sBAAAL,EACAe,YAAA3uD,GAEA4uD,YAAA5uD,KAIAoG,SAAA,IAAAyoD,EAAAC,EACA,eAAAD,GAAAC,EAAA,KAAAhoC,cAAA5gB,eAAA,IAAA2oD,OAAA,EAAAA,EAAAt8C,KAAAu8C,EAAA,CAAAV,YAAA,KAAAA,gB,YEhEIj2C,EAAY,YACd,OARE/R,OAAQU,GAWV,EACA,KACA,KACA,MAIa,IAAAqR,E,unBCHR,MAAM42C,EAAqB,SAAChuD,EAAO,GAAI0/C,EAAa,GAAIuO,EAAc,QAC3E,OAAKvO,WAAYxqD,OACV8K,EAAKmH,QAAO,SAACkI,GAAI,OAAKA,EAAK4+C,GAAap9C,cAAc/Z,SAAS4oD,EAAW7uC,kBADjD7Q,GAIrBkuD,EAAQ,SAACC,GAAI,OAAKrhC,YAAWqhC,EAAMziC,IAAYF,UAS/Co+B,EAA+B,SAAC3qD,EAAM,IACjD,MACEmvD,mBAAoBC,EAAuB,KAC3CC,mBAAoBC,EAAuB,KAC3CC,gBAAiBC,EAAiB,KAClCrK,gBAAiBf,EAAoB,KACrCqL,kBAAmBC,EAAuB,GAC1CtK,WAAYd,EAAoB,IAC9BqL,YAAiB3vD,GAErB,MAAO,CACLovD,uBACAE,uBACAE,iBACApL,oBACAsL,uBACApL,sBAUSsL,EAAmC,SAAC5vD,EAAM,IACrD,MAAM,KAAEm/C,EAAI,UAAErtC,EAAS,KAAEu2C,GAASsH,YAAiB3vD,GACnD,MAAO,CACLm/C,MAAMA,aAAI,EAAJA,EAAM7nD,QAAS,KACrBwa,WAAWA,aAAS,EAATA,EAAWxa,QAAS,KAC/B+wD,MAAMA,aAAI,EAAJA,EAAM/wD,QAAS,OAIZu4D,EAAoB,UAAC,WAChCzR,EAAa,EAAC,gBACd0R,EAAkB,GAAE,SACpBC,EAAW,CAAC,CAAEhqD,KAAM,SAAUyZ,OAAQ,GAAIwD,MAAO,MAEjD,GAAIo7B,GAAc0R,EAChB,MAAO,GAGT,MAAME,EAAcj3D,KAAKk3D,KAAMH,EAAkB1R,EAAc,KAE/D,OAAO2R,EAASl3D,KAAI,SAACuX,GACnB,MAAO,IACFA,EACH2oB,IAAKi3B,OAKEE,EAAc,SAACnqD,EAAO,SAAY,IAAAoqD,EAEK,QAAlDA,EAAAnhD,SAASohD,cAAc,UAAUrqD,sBAAiB,IAAAoqD,GAAlDA,EAAoDp1B,SAsDzCs1B,EAAkC,SAACC,EAAe,EAAG/4D,EAAY,GAE5E,OAAiB,KADFK,OAAO6B,MAAM7B,OAAO04D,IAAiB,EAAIA,IAClCp3D,QAAQ3B,IAWnBg5D,EAAgB,SAACC,EAASj5D,EAAY,GAAC,OACjDi5D,EAAUC,KAAgBv3D,QAAQ3B,IAExBm5D,EAAwB,SAACp5D,EAAOq5D,EAAOp5D,EAAYg3B,KAC9D,OAAQoiC,GACN,KAAKniC,IAAMI,QACT,OAAOyhC,EAAgC/4D,GACzC,KAAKk3B,IAAME,KACT,OAAO6hC,EAAcj5D,EAAOC,GAC9B,QACE,OAAOD,IAIPs5D,EAAqB,UAAC,WAAEC,EAAU,MAAEv5D,EAAK,KAAE05B,IAE/C,OAAK15B,EAIE+P,OAAOwsB,OAAOxE,KAAcx3B,SAASg5D,GACxCv5D,EACAo5D,EAAsBp5D,EAAO05B,GAJxB,KAaE8/B,EAAwB,SAACC,GACpC,MAAM,WAAEF,EAAU,MAAEv5D,KAAU05D,GAAeD,GACvC,KAAE//B,EAAI,MAAErnB,KAAUsnD,GAAiBlgC,IAAkC8/B,GAC3E,MAAO,IACFI,KACAD,EACH5vD,MAAOuI,EACPknD,aACAlnD,QACAqnB,KAAMF,IAAkCE,GACxC15B,MAAOs5D,EAAmB,CAAEt5D,QAAO05B,OAAM6/B,iBAYhCK,EAAoC,SAC/CC,EAAgB,KAChBC,GAAqB,GAErB,IAAKD,EAAe,MAAO,GAE3B,MACME,EAAyBD,EAAqBD,EAAgB,UAAUA,EACxEz6B,EAAW,CAAC46B,IAAIC,mBAAqB,GAAI,IAAKF,EAF7B,mDAIvB,OAAOG,eAAa96B,IAST+6B,EAA4B,eAAAC,EAAAC,EAAAC,EAAA,MAAO,CAE9CC,wBAAyB7rD,QAAW,QAAJ0rD,EAACJ,WAAG,IAAAI,GAAmB,QAAnBA,EAAHA,EAAKI,yBAAiB,IAAAJ,OAAA,EAAtBA,EAAwBG,yBACzDE,0BAA2B/rD,QAAW,QAAJ2rD,EAACL,WAAG,IAAAK,GAAmB,QAAnBA,EAAHA,EAAKG,yBAAiB,IAAAH,OAAA,EAAtBA,EAAwBI,2BAC3DC,6BAA8BhsD,QAAW,QAAJ4rD,EAACN,WAAG,IAAAM,GAAmB,QAAnBA,EAAHA,EAAKE,yBAAiB,IAAAF,OAAA,EAAtBA,EAAwBI,gCAenDC,EAAoC,UAAC,OAAE76D,EAAM,UAAE86D,IAC1D,MAAM,MAAEx3C,EAAQ,KAAI,QAAEy3C,EAAU,MAAS/6D,EAAO2J,KAChD,GAAI2Z,GAASy3C,EAAS,CAEpB,OADkBz3C,UAASy3C,GACVD,IAAc,GAEjC,MAAO,K,qBCzPT,IAAI/7D,EAAY,EAAQ,QA4BxBL,EAAOC,QAJP,SAAmBuB,GACjB,OAAOnB,EAAUmB,EAAO86D,K,qBCzB1B,IAAIC,EAAe,EAAQ,QACvBhjD,EAAY,EAAQ,QACpBC,EAAW,EAAQ,QAGnBgjD,EAAehjD,GAAYA,EAASipB,SAmBpCA,EAAW+5B,EAAejjD,EAAUijD,GAAgBD,EAExDv8D,EAAOC,QAAUwiC,G,kCC1BjB,qCAWA,MAAM1yB,EARO,CACXZ,KAAM,aACN8B,WAAY,CACVy/C,OAAA,MAYF,MAeMrgD,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAiBC,EAATnG,KAAgBoG,eAAuC,OAAvDpG,KAA0CqG,MAAMC,IAAIH,GAAa,UAAjEnG,KAA+EuG,GAA/EvG,KAAsF6J,GAAG,CAACd,YAAY,kBAAkB,UAAxH/I,KAAsI2O,QAAO,GAA7I3O,KAAwJ0G,YAAY,CAApK1G,KAAyK2G,GAAG,YAAY,IAoBpMC,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,kCC9Cf,0HAUA,MAKMuG,EAAQ,YAAsB,CAClCopB,QAAS,YAAS,MACjB,MAQG0sC,EAAmB,YAAO,CAC9BttD,KAAM,KACNsT,OAAQ,CAAC,IAAY,IAAgB,KACrC,UACE,MAAO,CACL63B,aAAc,IAAMlwC,OAGxBgH,OAAQ,CACNsR,mBAAoB,CAClBtS,QAAmC,IAAM,KAAM,MAGnDiB,cAAc,EACd1K,QACAsL,SAAU,CACR,kBACE,OAAO7H,KAAKsY,sBAGd,UACE,OAAOtY,KAAKsyD,gBAAgBpb,SAG9B,UACE,OAAOl3C,KAAKsyD,gBAAgBl5B,SAG9B,UACE,OAAOp5B,KAAKsyD,gBAAgB95C,SAG9B,SACE,OAAOxY,KAAKsyD,gBAAgB/hB,QAG9B,YACE,OAAOvwC,KAAKsyD,gBAAgB35C,WAG9B,eACE,OAAO3Y,KAAKsyD,gBAAgB15C,cAI9B,iBACE,OAAO5Y,KAAKsyD,gBAAgBz5C,gBAK9B,kBACE,OAAQ7Y,KAAK2Y,WAAa3Y,KAAKsyD,gBAAgB9hB,iBAGjD,eACE,OAAOxwC,KAAKsyD,gBAAgBv5C,cAG9B,cACE,OAAO/Y,KAAKqwC,QAAUrwC,KAAKsyD,gBAAgBxzC,YAAc,MAG3D,cACE,OAAO9e,KAAKswC,QAAUtwC,KAAKsyD,gBAAgBn6C,YAAc,MAE3D,YACE,MAlFQ,UAkFDnY,KAAK8e,aAlFJ,UAkF6B9e,KAAKmY,cAjFnC,SAiF6FnY,KAAK8e,aAjFlG,SAiF0H9e,KAAKmY,aAAwDnY,KAAKuwC,SAErM,YACE,MAAM,QACJ5qB,GACE3lB,KACJ,MAAO,CAAC2lB,EAAU,GAAG3lB,KAAKuyD,UAAY,KAAO,WAAW5sC,IAAY,OAEtE,UACE,MAAO,CACL1M,KAAM,SACHjZ,KAAKgZ,WAId,OAAOE,GACL,OAAOA,EAAE,KAAM,CACb1S,MAAOxG,KAAKwyD,UACZ/rD,MAAOzG,KAAKyyD,QAEZvpD,GAAIlJ,KAAKqZ,aACRrZ,KAAKsZ,qB,qBCjHZ,IASI9b,EATe,EAAQ,OASXk1D,CAAa,UAE7B98D,EAAOC,QAAU2H,G,qBCXjB,IAAIq2B,EAAa,EAAQ,QACrB8+B,EAAe,EAAQ,QAc3B/8D,EAAOC,QAJP,SAAuBmsB,EAAQvmB,GAC7B,OAAOo4B,EAAW7R,EAAQ2wC,EAAa3wC,GAASvmB,K,qGCZlD,I,qHCA8S,ECW/R,CACfoL,WAAA,CACA+rD,cACA//C,gCAEAtW,MAAA,CACAoE,OAAA,CACAkF,KAAAC,QACAC,UAAA,GAEAsa,OAAA,CACAxa,KAAAsB,OACApB,UAAA,GAEA3O,MAAA,CACAyO,KAAAsB,OACApB,UAAA,IAGAlF,OACA,OACAsjD,WAAA,KAAA9jC,OAAAqkC,mBAAA,GACA9+B,SAAA,IAGA/d,SAAA,CACAgrD,oBACA,YAAAxyC,OAAAwyC,mBAAAtzB,KAEAuzB,YACA,YAAAzyC,OAAA0yC,UAAAC,oBAAAC,mBAEAC,uBACA,YAAA7yC,OAAAskC,gBACA,KAAAtkC,OAAAskC,gBACA,KAAAwO,8BAGA1qD,QAAA,CACA2qD,mBAAAjP,EAAAtjD,GAAA,IAAAwyD,EAAA,KAOA,OACAlP,EAAAt4C,MACA,SAAA25C,GAAA,OACA6N,EAAAC,kBAAA9N,GAAA9zC,gBAAA6hD,YAAA1yD,GAAA6Q,kBACA,KAAAmhD,kBAAAhnD,MAAA,gBAAAzU,IAAA,OAAAA,IAAAyJ,MAGAyyD,kBAAA9N,GACAA,EAAAtkD,MAEAiyD,4BAAA3yD,GAAA,IAAAgzD,EAAA,KACA,YAAAC,QACArzD,MAAA,CACAA,MAAAszD,IACAC,UAAA,CAAAC,SAAA,KAAAvzC,OAAAuzC,SAAApzD,SAAAuyD,UAAA,KAAA1yC,OAAA0yC,aAEAnyD,MAAA,eAAAC,IAAA,IAAAgzD,EAAA,eAAAA,EAAAhzD,EAAA2yD,EAAAV,kBAAA,IAAAe,OAAA,EAAAA,EAAA1P,WAAAxpC,UAEAgqC,gBAAApE,GAAA,IAAAuT,EAAA,KACA,KAAAluC,SAAA,EACA,KAAAstC,qBAAA3S,GACA3/C,MAAA,SAAAqoD,GACA,MAEA8K,GAFAp9D,MAAAmE,QAAAmuD,OAAApoD,MAEAhK,QAAA,SAAAi8C,EAAAkhB,GAOA,OANAlhB,EAAAjnC,MAAA,SAAAqE,GAAA,OAAAA,EAAAhP,QAAA8yD,EAAA9yD,UAGA4xC,EAAA5qC,KAAA8rD,GAGAlhB,IACA,IAEAghB,EAAAzzC,OAAA4zC,eACAH,EAAA3P,WAAA4P,EAEAD,EAAA3P,WAAA4P,EAAAp8C,QAAAsnC,KAAAziD,QAGA6sD,OAAA,WACAC,sBAAA,CAAAn1B,QAAAhH,aAAA,iDAEA+mC,SAAA,WACAJ,EAAAluC,SAAA,Q,YC9FI3N,EAAY,YACd,GHRW,WAAkB,IAAInP,EAAI9I,KAAKsG,EAAGwC,EAAIzC,MAAMC,GAAG,OAAOA,EAAG,aAAawC,EAAIvC,GAAGuC,EAAIe,GAAG,CAACpD,MAAM,CAAC,OAASqC,EAAInI,OAAO,OAASmI,EAAIuX,OAAO,MAAQvX,EAAI1R,MAAM,sBAAsB0R,EAAI+pD,kBAAkB,YAAc/pD,EAAIq7C,WAAW,sBAAsBr7C,EAAI8c,QAAQ,yBAAyB9c,EAAIsqD,mBAAmB,mBAAmBtqD,EAAIwqD,mBAAmBpqD,GAAG,CAAC,oBAAoBJ,EAAI67C,iBAAiBr7C,YAAYR,EAAIS,GAAG,CAAC,CAAC/N,IAAI,OAAOgO,GAAG,UAAW2qD,gBAAgB,WAAE5gD,EAAU,iBAAE6gD,KAAsB,MAAO,CAACtrD,EAAIa,GAAG,UAAUb,EAAIc,GAAGwqD,EAAmBtrD,EAAIwqD,kBAAkBc,GAAoB7gD,GAAY,WAAW,CAAC/X,IAAI,mBAAmBgO,GAAG,UAAS,YAAEuK,IAAe,OAAOjL,EAAI4E,GAAIqG,GAAa,SAASyxC,GAAW,OAAOl/C,EAAG,gCAAgC,CAAC9K,IAAIgqD,EAAUxjD,GAAGyE,MAAM,CAAC,MAAQqC,EAAIwqD,kBAAkB9N,KAAa,CAAC18C,EAAIa,GAAG,WAAWb,EAAIc,GAAGd,EAAIwqD,kBAAkB9N,IAAY,oBAAmB,aAAa18C,EAAI6F,QAAO,GAAO7F,EAAIpC,eAE15B,IGSpB,EACA,KACA,KACA,MAIa,UAAAuR,E;;;;;;;;;;GCJf9Q,OAAOktD,eAAex+D,EAAS,aAAc,CAAEuB,OAAO,IAItD,IAF0Bk9D,EAEtB3K,GAFsB2K,EAEA,EAAQ,UAF2B,iBAAPA,GAAoB,YAAaA,EAAMA,EAAY,QAAIA,EAI7G,SAASC,EAAQ/2C,GAWf,OATE+2C,EADoB,mBAAXt3B,QAAoD,iBAApBA,OAAOu3B,SACtC,SAAUh3C,GAClB,cAAcA,GAGN,SAAUA,GAClB,OAAOA,GAAyB,mBAAXyf,QAAyBzf,EAAIvB,cAAgBghB,QAAUzf,IAAQyf,OAAOxd,UAAY,gBAAkBjC,IAI9GA,GAGjB,SAASi3C,EAAmB9/C,GAC1B,OAGF,SAA4BA,GAC1B,GAAIhe,MAAMmE,QAAQ6Z,GAAM,CACtB,IAAK,IAAI8gC,EAAI,EAAGif,EAAO,IAAI/9D,MAAMge,EAAI5e,QAAS0/C,EAAI9gC,EAAI5e,OAAQ0/C,IAAKif,EAAKjf,GAAK9gC,EAAI8gC,GAEjF,OAAOif,GAPFC,CAAmBhgD,IAW5B,SAA0BigD,GACxB,GAAI33B,OAAOu3B,YAAYrtD,OAAOytD,IAAkD,uBAAzCztD,OAAOsY,UAAU7nB,SAASya,KAAKuiD,GAAgC,OAAOj+D,MAAM+wB,KAAKktC,GAZtFC,CAAiBlgD,IAerD,WACE,MAAM,IAAIyL,UAAU,mDAhBuC00C,GAmB7D,IAAIC,EAA8B,oBAAX9sC,OAyBvB,SAAS+sC,EAAKx3C,EAAKriB,GACjB,OAAOA,EAAKtE,QAAO,SAAUi8C,EAAKt3C,GAKhC,OAJIgiB,EAAI03B,eAAe15C,KACrBs3C,EAAIt3C,GAAOgiB,EAAIhiB,IAGVs3C,IACN,IAGL,IAAImiB,EAAa,GACbC,EAAU,GACVC,EAAU,GAoHVC,EAAW,IAnHAzL,EAAI0L,OAAO,CACxBx0D,KAAM,WACJ,MAAO,CACLo0D,WAAYA,EACZC,QAASA,EACTC,QAASA,EACTG,eAAgBP,IAGpBtsD,QAAS,CACPqe,KAAM,SAAcyuC,GAClB,GAAKR,EAAL,CACA,IAAIzjB,EAAKikB,EAAUjkB,GACf5pB,EAAO6tC,EAAU7tC,KACjB8tC,EAAaD,EAAUC,WACvBC,EAAmBF,EAAUG,MAC7BA,OAA6B,IAArBD,EAA8Bj+D,IAAWi+D,EACrD,GAAKnkB,GAAO5pB,GAAS8tC,EAArB,CACA,IAvDUtlD,EAuDNylD,EAAe,CACjBrkB,GAAIA,EACJ5pB,KAAMA,EACN8tC,YA1DQtlD,EA0DWslD,EAzDrB7+D,MAAMmE,QAAQoV,IAA2B,WAAlBqkD,EAAQrkD,GAC1B/I,OAAOyuD,OAAO1lD,GAGhBA,GAsDDwlD,MAAOA,IAIiB,IAFfvuD,OAAOhM,KAAK6E,KAAKi1D,YAEnBjoD,QAAQskC,IACfqY,EAAIxtD,IAAI6D,KAAKi1D,WAAY3jB,EAAI,IAG/B,IApDqBukB,EAoDjBjuC,EAAe5nB,KAAK81D,oBAAoBH,GAExCI,EAAgB/1D,KAAKi1D,WAAW3jB,GAAI35B,MAAM,IAExB,IAAlBiQ,EACFmuC,EAAc7tD,KAAKytD,GAEnBI,EAAcnuC,GAAgB+tC,EAGhC31D,KAAKi1D,WAAW3jB,IA9DKukB,EA8D2B,SAAUx/D,EAAGC,GAC3D,OAAOD,EAAEq/D,MAAQp/D,EAAEo/D,OADYK,EA7DxBp9D,KAAI,SAAUke,EAAGvK,GAC5B,MAAO,CAACA,EAAKuK,MACZooC,MAAK,SAAU5oD,EAAGC,GACnB,OAAOu/D,EAAUx/D,EAAE,GAAIC,EAAE,KAAOD,EAAE,GAAKC,EAAE,MACxCqC,KAAI,SAAUq9D,GACf,OAAOA,EAAE,UA4DTztD,MAAO,SAAegtD,GACpB,IAAIU,EAAQx/D,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,IAAmBA,UAAU,GACvE66C,EAAKikB,EAAUjkB,GACf5pB,EAAO6tC,EAAU7tC,KACrB,GAAK4pB,IAAO5pB,IAAkB,IAAVuuC,IAEfj2D,KAAKi1D,WAAW3jB,GAIrB,GAAI2kB,EACFj2D,KAAKi1D,WAAW3jB,GAAM,OACjB,CACL,IAAIx/B,EAAQ9R,KAAK81D,oBAAoBP,GAErC,GAAIzjD,GAAS,EAAG,CAEd,IAAIikD,EAAgB/1D,KAAKi1D,WAAW3jB,GAAI35B,MAAM,GAC9Co+C,EAAc5oD,OAAO2E,EAAO,GAC5B9R,KAAKi1D,WAAW3jB,GAAMykB,KAI5BG,eAAgB,SAAwBttD,EAAQutD,EAAIF,GAC7ClB,IAED/0D,KAAKs1D,iBAAmBW,GAASj2D,KAAKk1D,QAAQtsD,IAChDmC,QAAQC,KAAK,wBAAwB0M,OAAO9O,EAAQ,oBAGtD5I,KAAKqN,KAAKrN,KAAKk1D,QAAStsD,EAAQzB,OAAOyuD,OAAO,CAACO,OAEjDC,iBAAkB,SAA0BxtD,GAC1C5I,KAAKq2D,QAAQr2D,KAAKk1D,QAAStsD,IAE7B0tD,eAAgB,SAAwBt0C,EAAQm0C,EAAIF,GAC7ClB,IAED/0D,KAAKs1D,iBAAmBW,GAASj2D,KAAKm1D,QAAQnzC,IAChDjX,QAAQC,KAAK,wBAAwB0M,OAAOsK,EAAQ,oBAGtDhiB,KAAKqN,KAAKrN,KAAKm1D,QAASnzC,EAAQ7a,OAAOyuD,OAAO,CAACO,OAEjDI,iBAAkB,SAA0Bv0C,GAC1ChiB,KAAKq2D,QAAQr2D,KAAKm1D,QAASnzC,IAE7Bw0C,UAAW,SAAmBllB,GAC5B,SAAUtxC,KAAKk1D,QAAQ5jB,KAAOtxC,KAAKk1D,QAAQ5jB,GAAI,KAEjDmlB,UAAW,SAAmBnlB,GAC5B,SAAUtxC,KAAKm1D,QAAQ7jB,KAAOtxC,KAAKm1D,QAAQ7jB,GAAI,KAEjDolB,cAAe,SAAuBplB,GACpC,QAAStxC,KAAKi1D,WAAW3jB,MAAStxC,KAAKi1D,WAAW3jB,GAAIv7C,QAGxD+/D,oBAAqB,SAA6BjrD,GAChD,IAAIymC,EAAKzmC,EAAKymC,GACV5pB,EAAO7c,EAAK6c,KAEhB,IAAK,IAAI+tB,KAAKz1C,KAAKi1D,WAAW3jB,GAC5B,GAAItxC,KAAKi1D,WAAW3jB,GAAImE,GAAG/tB,OAASA,EAClC,OAAQ+tB,EAIZ,OAAQ,MAIC,CAAawf,GAExB0B,EAAM,EACNhkD,EAASg3C,EAAI0L,OAAO,CACtBtwD,KAAM,SACNxI,MAAO,CACLoP,SAAU,CACR9F,KAAMC,SAERf,KAAM,CACJc,KAAMwB,OACNrB,QAAS,WACP,OAAOqB,OAAOsvD,OAGlBjB,MAAO,CACL7vD,KAAMnO,OACNsO,QAAS,GAEX4wD,KAAM,CACJ/wD,KAAMC,SAER+wD,UAAW,CACThxD,KAAMsB,OACNnB,QAAS,WACP,MAAO,KAGXjK,IAAK,CACH8J,KAAMwB,OACNrB,QAAS,OAEXsrC,GAAI,CACFzrC,KAAMwB,OACNrB,QAAS,WACP,OAAOqB,OAAOxO,KAAKstC,MAAsB,IAAhBttC,KAAKi+D,cAIpCvO,QAAS,WACP,IAAI8K,EAAQrzD,KAEZA,KAAKgV,WAAU,WACbogD,EAASkB,eAAejD,EAAMtuD,KAAMsuD,OAGxClF,QAAS,WACFnuD,KAAK2L,UACR3L,KAAK+2D,cAGTC,QAAS,WACHh3D,KAAK2L,SACP3L,KAAKi3D,QAELj3D,KAAK+2D,cAGT1I,cAAe,WACb+G,EAASmB,iBAAiBv2D,KAAK+E,MAC/B/E,KAAKi3D,SAEPlrD,MAAO,CACLulC,GAAI,SAAYnlC,EAAUC,GACxBA,GAAYA,IAAaD,GAAYnM,KAAKi3D,MAAM7qD,GAChDpM,KAAK+2D,eAGTtuD,QAAS,CACPwuD,MAAO,SAAeruD,GACpB,IAAIsuD,EAAS,CACXxvC,KAAM1nB,KAAK+E,KACXusC,GAAI1oC,GAAU5I,KAAKsxC,IAErB8jB,EAAS7sD,MAAM2uD,IAEjBC,eAAgB,WACd,OAAOn3D,KAAK4mB,aAAa5gB,QAAU,CAAChG,KAAK4mB,aAAa5gB,SAAWhG,KAAK8T,OAAO9N,SAE/EoxD,qBAAsB,SAA8B7kD,GAClD,MAA2B,mBAAbA,EAA0BA,EAASvS,KAAK62D,WAAatkD,GAErEwkD,WAAY,WACV,IAAIM,EAAcr3D,KAAKm3D,iBAEvB,GAAIE,EAAa,CACf,IAAI9B,EAAY,CACd7tC,KAAM1nB,KAAK+E,KACXusC,GAAItxC,KAAKsxC,GACTkkB,WAAYf,EAAmB4C,GAC/B3B,MAAO11D,KAAK01D,OAEdN,EAAStuC,KAAKyuC,QAEdv1D,KAAKi3D,UAIX/wD,OAAQ,SAAgBgT,GACtB,IAAI3G,EAAWvS,KAAK8T,OAAO9N,SAAWhG,KAAK4mB,aAAa5gB,SAAW,GAC/DsxD,EAAMt3D,KAAKjE,IAEf,OAAIwW,GAAYvS,KAAK2L,SACZ4G,EAASxc,QAAU,GAAKiK,KAAK42D,KAAO52D,KAAKo3D,qBAAqB7kD,GAAU,GAAK2G,EAAEo+C,EAAK,CAACt3D,KAAKo3D,qBAAqB7kD,KAE/GvS,KAAK42D,KAAO19C,IAAMA,EAAEo+C,EAAK,CAC9B9wD,MAAO,CACL,YAAY,GAEdiI,MAAO,CACL22B,QAAS,QAEX5pC,IAAK,4BAMT4O,EAAeu/C,EAAI0L,OAAO,CAC5BtwD,KAAM,eACNxI,MAAO,CACLqhD,SAAU,CACR/3C,KAAMC,QACNE,SAAS,GAEXjB,KAAM,CACJc,KAAMwB,OACNtB,UAAU,GAEZ6wD,KAAM,CACJ/wD,KAAMC,QACNE,SAAS,GAEX6wD,UAAW,CACThxD,KAAMsB,OACNnB,QAAS,WACP,MAAO,KAGXjK,IAAK,CACH8J,KAAMwB,OACNrB,QAAS,OAEXuxD,WAAY,CACV1xD,KAAM,CAACwB,OAAQF,OAAQ+L,YAG3BrS,KAAM,WACJ,MAAO,CACLo0D,WAAYG,EAASH,WACrBuC,aAAa,IAGjBjP,QAAS,WACP,IAAI8K,EAAQrzD,KAEZA,KAAKgV,WAAU,WACbogD,EAASc,eAAe7C,EAAMtuD,KAAMsuD,OAGxCtnD,MAAO,CACL0rD,cAAe,WACbz3D,KAAKoI,MAAM,SAAUpI,KAAKuS,WAAWxc,OAAS,IAEhDgP,KAAM,SAAcqjD,EAAQsP,GAK1BtC,EAASgB,iBAAiBsB,GAC1BtC,EAASc,eAAe9N,EAAQpoD,QAGpCmuD,QAAS,WACP,IAAIqF,EAASxzD,KAETA,KAAKu3D,YACPv3D,KAAKgV,WAAU,WAEbw+C,EAAOgE,aAAc,MAI3BnJ,cAAe,WACb+G,EAASgB,iBAAiBp2D,KAAK+E,OAEjC8C,SAAU,CACR4vD,cAAe,WACb,IAAIxC,EAAaj1D,KAAKi1D,WAAWj1D,KAAK+E,OAAS,GAE/C,OAAI/E,KAAK49C,SACAqX,EAGoB,IAAtBA,EAAWl/D,OAAe,GAAK,CAACk/D,EAAWA,EAAWl/D,OAAS,KAExEy/D,WAAY,WACV,OAtVN,SAA2BP,GACzB,IAAI4B,EAAYpgE,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,GAAmBA,UAAU,GAAK,GACpF,OAAOw+D,EAAWp+D,QAAO,SAAU2+D,EAAYD,GAC7C,IAAIoC,EAAOpC,EAAUC,WAAW,GAC5BoC,EAAgC,mBAATD,EAAsBA,EAAKd,GAAatB,EAAUC,WAC7E,OAAOA,EAAW99C,OAAOkgD,KACxB,IAgVQC,CAAkB73D,KAAKy3D,cAAez3D,KAAK62D,aAGtDpuD,QAAS,CAEP8J,SAAU,WACR,OAAkC,IAA3BvS,KAAKw1D,WAAWz/D,OAAeiK,KAAKw1D,WAAax1D,KAAK4mB,aAAa5gB,QAAUhG,KAAK4mB,aAAa5gB,QAAQhG,KAAK62D,WAAa72D,KAAK8T,OAAO9N,SAAW,IAGzJ8xD,UAAW,WACT,IAAIA,EAAY93D,KAAK42D,OAAS52D,KAAKu3D,WAMnC,OAJIO,GAAa93D,KAAKuS,WAAWxc,OAAS,GACxCgV,QAAQC,KAAK,uFAGR8sD,IAGX5xD,OAAQ,SAAgBgT,GACtB,IAAI4+C,EAAY93D,KAAK83D,YACjBvlD,EAAWvS,KAAKuS,WAChB+kD,EAAMt3D,KAAKu3D,YAAcv3D,KAAKjE,IAClC,OAAO+7D,EAAYvlD,EAAS,GAAKvS,KAAK42D,OAASU,EAAMp+C,IAAMA,EAAEo+C,EAAK,CAChE/6D,MAAO,CAELR,IAAKiE,KAAKu3D,YAAcv3D,KAAKjE,IAAMiE,KAAKjE,SAAM/F,GAEhDwQ,MAAO,CACL,qBAAqB,IAEtB+L,MAIHwlD,EAAQ,EACRC,EAAc,CAAC,WAAY,OAAQ,QAAS,OAAQ,YAAa,MAAO,MACxEC,EAAc,CAAC,WAAY,cAC3BC,EAAiBvO,EAAI0L,OAAO,CAC9BtwD,KAAM,iBACNkC,cAAc,EACd1K,MAAO,CACLoH,OAAQ,CACNkC,KAAM,CAACC,QAASuB,SAElB8wD,KAAM,CACJtyD,KAAMC,SAERsyD,QAAS,CACPvyD,KAAMwB,OACNtB,UAAU,GAGZ4F,SAAU,CACR9F,KAAMC,SAGRf,KAAM,CACJc,KAAMwB,OACNrB,QAAS,WACP,MAAO,WAAaqB,OAAO0wD,OAG/BrC,MAAO,CACL7vD,KAAMnO,OACNsO,QAAS,GAEX4wD,KAAM,CACJ/wD,KAAMC,SAER+wD,UAAW,CACThxD,KAAMsB,OACNnB,QAAS,WACP,MAAO,KAGXjK,IAAK,CACH8J,KAAMwB,OACNrB,QAAS,OAGXsrC,GAAI,CACFzrC,KAAMwB,OACNrB,QAAS,WACP,OAAOqB,OAAOxO,KAAKstC,MAAsB,IAAhBttC,KAAKi+D,aAIlClZ,SAAU,CACR/3C,KAAMC,QACNE,SAAS,GAEXqyD,WAAY,CACVxyD,KAAMC,SAERwyD,gBAAiB,CACfzyD,KAAMsB,OACNnB,QAAS,WACP,MAAO,KAGXuyD,UAAW,CACT1yD,KAAMwB,OACNrB,QAAS,OAEXuxD,WAAY,CACV1xD,KAAM,CAACwB,OAAQF,OAAQ+L,YAG3Bq1C,QAAS,WACP,GAAwB,oBAAbz5C,SAAX,CACA,IAAID,EAAKC,SAASohD,cAAclwD,KAAKo4D,SAErC,GAAKvpD,EAAL,CAKA,IAAItS,EAAQyD,KAAK28C,OAEjB,GAAIyY,EAASF,QAAQ34D,EAAMwI,MACrBxI,EAAM47D,KACRptD,QAAQC,KAAK,wBAAwB0M,OAAOnb,EAAMwI,KAAM,uEAExD/E,KAAKw4D,aAAepD,EAASF,QAAQ34D,EAAMwI,UAJ/C,CAUA,IAAIpB,EAASpH,EAAMoH,OAEnB,GAAIA,EAAQ,CACV,IAAIkC,EAAyB,iBAAXlC,EAAsBA,EAAS,MAC7C80D,EAAU3pD,SAAS4pD,cAAc7yD,GACrCgJ,EAAG8pD,YAAYF,GACf5pD,EAAK4pD,EAKP,IAAIG,EAAS5D,EAAKh1D,KAAK28C,OAAQsb,GAE/BW,EAAOhC,KAAO52D,KAAKq4D,WACnBO,EAAO78D,IAAMiE,KAAKu4D,UAClBK,EAAO/B,UAAY72D,KAAKs4D,gBACxBM,EAAO7zD,KAAO/E,KAAKsxC,GACnBtxC,KAAKw4D,aAAe,IAAIpuD,EAAa,CACnCyE,GAAIA,EACJgqD,OAAQ74D,KAAK84D,SAAW94D,KACxB+4D,UAAWH,UApCX7tD,QAAQiuD,MAAM,8BAA8BthD,OAAO1X,KAAKo4D,QAAS,8BAuCrE/J,cAAe,WACb,IAAIzlD,EAAS5I,KAAKw4D,aAElB,GAAIx4D,KAAK2D,OAAQ,CACf,IAAIkL,EAAKjG,EAAOiE,IAChBgC,EAAG26B,WAAWyvB,YAAYpqD,GAG5BjG,EAAOswD,YAEThzD,OAAQ,SAAgBgT,GACtB,IAAKlZ,KAAKw4D,aAER,OADAztD,QAAQC,KAAK,sCACNkO,IAIT,IAAKlZ,KAAK4mB,aAAauyC,OAAQ,CAC7B,IAAI58D,EAAQy4D,EAAKh1D,KAAK28C,OAAQqb,GAC9B,OAAO9+C,EAAEvG,EAAQ,CACfpW,MAAOA,EACPkK,MAAOzG,KAAK2O,OACZzF,GAAIlJ,KAAK0G,WACT4C,YAAatJ,KAAK4mB,cACjB5mB,KAAK8T,OAAO9N,SAIjB,IAAIwhB,EAAUxnB,KAAK4mB,aAAauyC,OAAO,CACrC7nB,GAAItxC,KAAKsxC,KAQX,OAJI36C,MAAMmE,QAAQ0sB,KAChBA,EAAUA,EAAQ,IAGfA,GAAgBtO,OAYzB,IAAIpH,EAAQ,CACVsnD,QARF,SAAiBC,GACf,IAAIhgE,EAAU5C,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,GAAmBA,UAAU,GAAK,GAClF4iE,EAAOphD,UAAU5e,EAAQkR,YAAc,SAAUoI,GACjD0mD,EAAOphD,UAAU5e,EAAQigE,kBAAoB,eAAgBlvD,GAC7DivD,EAAOphD,UAAU5e,EAAQkgE,oBAAsB,iBAAkBrB,KAOnEriE,EAAQmQ,QAAU8L,EAClBjc,EAAQ8c,OAASA,EACjB9c,EAAQuU,aAAeA,EACvBvU,EAAQqiE,eAAiBA,EACzBriE,EAAQ2jE,SAAWpE,G,qBCtmBnB,IAAIz5C,EAAmB,EAAQ,QAe/B/lB,EAAOC,QALP,SAAuB4jE,EAAU99D,GAC/B,IAAI+9D,EAAS/9D,EAASggB,EAAiB89C,EAASC,QAAUD,EAASC,OACnE,OAAO,IAAID,EAASx9C,YAAYy9C,EAAQD,EAASE,WAAYF,EAASG,c,qBCZxE,IAAI3lC,EAAa,EAAQ,QACrB1V,EAAe,EAAQ,QAgB3B3oB,EAAOC,QAJP,SAAsBuB,GACpB,OAAOmnB,EAAannB,IAVN,mBAUgB68B,EAAW78B,K,kCCd3C,oJAoXA,MAAMuO,EAxWO,CACXZ,KAAM,aACN8B,WAAY,CACVy/C,OAAA,IACAn8C,OAAA,KAEFjF,MAAO,CACL8X,KAAM,QACNrU,MAAO,SAETpM,MAAO,CACLnF,MAAO,CACLyO,KAAMnO,OACNqO,UAAU,EACVC,QAAS,EACT0B,UAAW2+B,GAAKA,EAAI,GAKtBzoB,QAAS,CACP/X,KAAMnO,OACNqO,UAAU,EACVC,QAAS,GACT0B,UAAW2+B,GAAKA,EAAI,GAKtB6X,WAAY,CACVr4C,KAAMnO,OACNqO,UAAU,EACVC,QAAS,GAKX6zD,OAAQ,CACNh0D,KAAMsB,OACNpB,UAAU,EACVC,QAAS,KAAM,CACb8zD,GAAI,EACJC,GAAI,EACJC,GAAI,EACJh0D,QAAS,IAEX0B,UAAWtQ,GAEe,IADH+P,OAAOhM,KAAK,KAAa6M,OAAOsI,IAASlZ,EAAMkZ,IAAOva,QACxCqB,EAAM4O,SAM7Ci0D,QAAS,CACPp0D,KAAMqN,SACNnN,UAAU,EACVC,QAAS,MAKXk0D,SAAU,CACRr0D,KAAMnO,OACNqO,UAAU,EACVC,QAAS,MAKXm0D,SAAU,CACRt0D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,YAAU,wBAAyB,aAK9Co0D,SAAU,CACRv0D,KAAMnO,OACNqO,UAAU,EACVC,QAAS,MAKXq0D,SAAU,CACRx0D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,YAAU,wBAAyB,SAK9Cs0D,aAAc,CACZz0D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,KAKXu0D,SAAU,CACR10D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,YAAU,mBAAoB,eAKzCw0D,eAAgB,CACd30D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,YAAU,8BAA+B,qBAKpDy0D,cAAe,CACb50D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,YAAU,6BAA8B,wBAKnD00D,cAAe,CACb70D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,YAAU,6BAA8B,oBAKnD20D,cAAe,CACb90D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,YAAU,6BAA8B,oBAKnD40D,UAAW,CAET/0D,KAAM,CAACqN,SAAU7L,QACjBtB,UAAU,EACVC,QAAS,YAAU,yBAA0B,uBAK/C60D,MAAO,CACLh1D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAAa2G,KACtBjF,UAAWtQ,GAAS+P,OAAOhM,KAAK,KAAcxD,SAASP,IAEzDuU,SAAU,CACR9F,KAAMC,QACNC,UAAU,EACVC,SAAS,IAGbnF,KAAI,KACK,CACLi6D,WAAY,IAAqBC,oBAEjCC,wBAAyB,IAG7BnzD,SAAU,CACR,YACE,OAAO7H,KAAKi7D,WAAa,GAAKj7D,KAAKk7D,qBAErC,cACE,OAAO,IAAWl7D,KAAKi6D,UAEzB,kBACE,YAA+C,IAAjCj6D,KAAK65D,OAAO75D,KAAK86D,YAA8B96D,KAAK65D,OAAO75D,KAAK86D,YAAc96D,KAAK65D,OAAO7zD,SAE1G,mBACE,OAAOnN,KAAKuU,IAAIvU,KAAKk3D,MAAM/vD,KAAKm7D,gBAAkB,GAAK,GAAI,IAE7D,aACE,OAAOtiE,KAAKk3D,KAAK/vD,KAAKk+C,WAAal+C,KAAK4d,UAE1C,cACE,OAAO5d,KAAK66D,QAAU,IAAaO,MAErC,iBACE,MAAMC,EAAU,GAUhB,OATIr7D,KAAK66D,QAAU,IAAaS,QAC9BD,EAAQnzD,KAAK,qBAEXlI,KAAK66D,QAAU,IAAatuB,OAC9B8uB,EAAQnzD,KAAK,kBAEXlI,KAAKu7D,aACPF,EAAQnzD,KAAK,kBAERmzD,GAET,yBACE,MAAMG,EAAOx7D,KAAK5I,MAAQ4I,KAAKy7D,iBAG/B,OAAOD,GAAQx7D,KAAKy7D,kBAAoBD,EAAO,GAAKx7D,KAAKi7D,WAAaj7D,KAAKg7D,yBAE7E,0BAGE,OADah7D,KAAKi7D,WAAa,EAAIj7D,KAAK5I,MAC1B4I,KAAKy7D,kBAAoBz7D,KAAKi7D,WAAaj7D,KAAKg7D,yBAEhE,eACE,IAAIxqD,EAAQ,GACZ,IAAKxQ,KAAKk7D,oBAAqB,CAC7B,IAAIQ,EAAY17D,KAAK27D,uBAAyB37D,KAAK5I,MAAQ4I,KAAKy7D,iBAAmB,EAEnFC,EAAY7iE,KAAKqtC,IAAIw1B,EAAW17D,KAAKi7D,WAAa,GAClD,IAAIW,EAAW57D,KAAK67D,wBAA0B77D,KAAK5I,MAAQ4I,KAAKy7D,iBAAmBz7D,KAAKi7D,WAExFW,EAAW/iE,KAAKuU,IAAIwuD,EAAU,GAG9BprD,GAjOWkX,EAiOOg0C,EAjODpqB,EAiOYsqB,EAjOL,IAAMl0C,EAAM4pB,EAAK,EAAG,IAiOL34C,IAAIwvD,GAAQnoD,KAAK87D,YAAY3T,IAChEnoD,KAAK27D,wBACPnrD,EAAMrD,OAAO,EAAG,EAAGnN,KAAK87D,YAAY,EAAG97D,KAAKw6D,gBAAiBx6D,KAAK+7D,gBAAgB,SAEhF/7D,KAAK67D,yBACPrrD,EAAMtI,KAAKlI,KAAK+7D,gBAAgB,SAAU/7D,KAAK87D,YAAY97D,KAAKi7D,WAAYj7D,KAAK26D,gBAtOzE,IAACjzC,EAAM4pB,EAyOnB,OAAO9gC,GAET,sBACE,OAAO1K,SAAS9F,KAAKk+C,aAAel+C,KAAKk6D,UAAYl6D,KAAKo6D,YAE5D,qBACE,OAAOp6D,KAAKg8D,eAAeh8D,KAAK5I,MAAQ,IAE1C,qBACE,OAAO4I,KAAKg8D,eAAeh8D,KAAK5I,MAAQ,IAE1C,oBACE,OAAO4I,KAAKi8D,qBAA6Bj8D,KAAKy6D,eAAiBz6D,KAAKk8D,aAAal8D,KAAK5I,MAAQ,KAEhG,oBACE,OAAO4I,KAAKm8D,qBAA6Bn8D,KAAK06D,eAAiB16D,KAAKk8D,aAAal8D,KAAK5I,MAAQ,KAEhG,eACE,OAAI4I,KAAKi8D,qBACLj8D,KAAKo8D,YAAoBp8D,KAAKi6D,QAAQj6D,KAAK5I,MAAQ,GAChD,MAET,eACE,OAAI4I,KAAKm8D,qBACLn8D,KAAKo8D,YAAoBp8D,KAAKi6D,QAAQj6D,KAAK5I,MAAQ,GAChD,OAGX,UACE6wB,OAAOoL,iBAAiB,SAAU,IAASrzB,KAAKq8D,cAAe,OAEjE,gBACEp0C,OAAO2L,oBAAoB,SAAU,IAAS5zB,KAAKq8D,cAAe,OAEpE5zD,QAAS,CACP,aAAa0/C,GACX,OAAI,IAAWnoD,KAAK46D,WACX56D,KAAK46D,UAAUzS,GAEjB,YAAQnoD,KAAK46D,UAAW,CAC7BzS,UAGJ,gBACEnoD,KAAK86D,WAAa,IAAqBC,qBAEzC,eAAe5S,GACb,OAAOnoD,KAAK2L,UAAYw8C,EAAO,GAAKnoD,KAAKk7D,qBAAuB/S,EAAOnoD,KAAK5I,QAAU4I,KAAKo6D,WAAap6D,KAAKk7D,qBAAuB/S,EAAOnoD,KAAKi7D,YAElJ,YAAY9S,GAEV,MAAMmU,EAAc,CAClB,cAFU7lE,UAAUV,OAAS,QAAsBC,IAAjBS,UAAU,GAAmBA,UAAU,GAAK,OAEvDuJ,KAAKk8D,aAAa/T,GACzC9W,KAAM,IACN7qC,MAAO,IAEH+1D,EAAepU,IAASnoD,KAAK5I,MAC7BolE,EAAax8D,KAAKg8D,eAAe7T,GACjC1hD,EAAQ,IACT61D,GAECrkC,EAAY,GAUlB,OATIskC,IACF91D,EAAMD,MAAM0B,KAAK,UACjBzB,EAAM,gBAAkB,QAGtBzG,KAAKo8D,cACP31D,EAAM4qC,KAAOrxC,KAAKi6D,QAAQ9R,IAE5BlwB,EAAU4C,MAAQjmB,GAAK5U,KAAKy8D,YAAY7nD,EAAGuzC,GACpC,CACL3gC,QAAS2gC,EACTlwC,UAAWukD,EAAa,OAAS,IACjC7wD,SAAU6wD,EACVhhE,IAAK,QAAQ2sD,EACbx0C,KAAM,cACN+oD,SAAU,CACRvU,OACAxnD,OAAQ47D,EACR5wD,SAAU6wD,GAEZ/1D,QACAwxB,cAGJ,gBAAgB8a,GACd,MAAO,CACLvrB,QAASxnB,KAAKs6D,aACd9+D,IAAK,YAAYu3C,EACjBp/B,KAAM,YAAYo/B,EAClB96B,UAAW,OACXtM,UAAU,EACV+wD,SAAU,GACVzkC,UAAW,KAGf,YAAYtvB,EAAOvR,GACZ4I,KAAKo8D,cACRzzD,EAAMmM,iBAMN9U,KAAKoI,MAAM,QAAShR,KAGxB,eAAeuR,EAAOvR,GACpB4I,KAAKy8D,YAAY9zD,EAAOvR,GAKxB4I,KAAKoI,MAAM,aAEb,WAAWO,EAAOvR,GAChB4I,KAAKy8D,YAAY9zD,EAAOvR,GAKxB4I,KAAKoI,MAAM,WAsBf,MAeMnC,EAAoB,IACxB,CAAEC,OA7Be,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAQ2C,EAAa,UAAExC,EAAG,MAAM,CAACyC,YAAY,gBAAgBtC,MAAM,CAAC,aAAaqC,EAAIyxD,WAAW,CAACj0D,EAAG,KAAK,CAACE,MAAMsC,EAAI6zD,gBAAgB,CAACr2D,EAAG,KAAK,CAACE,MAAM,CAC7OmF,SAAU7C,EAAImzD,mBACd,eAAgBnzD,EAAIyyD,aACpB90D,MAAM,CAAC,gBAAgBqC,EAAImzD,mBAAmB,cAAcnzD,EAAImzD,mBAAmB,cAAc,qBAAqB,CAAC31D,EAAGwC,EAAImzD,mBAAqB,OAAS,IAAI,CAAClgE,IAAI,YAAYgN,YAAY,qBAAqBtC,MAAM,CAAC,cAAc,qBAAqB,aAAaqC,EAAI8zD,kBAAkB,KAAO9zD,EAAI+zD,cAAc3zD,GAAG,CAAC,MAAQ,SAASC,IAASL,EAAImzD,oBAAqBnzD,EAAIg0D,eAAe3zD,EAAQL,EAAI1R,MAAQ,MAAc,CAAC0R,EAAInC,GAAG,YAAW,WAAW,MAAO,CAACL,EAAG,UAAU,CAACG,MAAM,CAAC,KAAO,kBAAkBqC,EAAIa,GAAG,KAAKrD,EAAG,OAAO,CAACyC,YAAY,yBAAyB,CAACD,EAAIa,GAAGb,EAAIc,GAAGd,EAAIqxD,gBAAe,KAAK,CAAEhS,KAAMr/C,EAAI1R,MAAQ,EAAGuU,SAAU7C,EAAImzD,sBAAuB,IAAI,GAAGnzD,EAAIa,GAAG,KAAKb,EAAI4E,GAAI5E,EAAgB,cAAE,SAASoH,GAAM,OAAO5J,EAAG,KAAK,CAAC9K,IAAI0U,EAAK1U,IAAIgL,MAAM,CACtvBmF,SAAUuE,EAAKvE,SACf,eAAgB7C,EAAIyyD,aACpB90D,MAAM,CAAC,cAAc,qBAAqB,CAACH,EAAG4J,EAAK+H,UAAUnP,EAAIvC,GAAGuC,EAAIe,GAAG,CAAC9N,IAAI,YAAYgN,YAAY,qBAAqBtC,MAAM,CAAC,cAAc,qBAAqB,KAAO,KAAK,gBAAgByJ,EAAKvE,WAAW,YAAYuE,EAAKzJ,OAAM,GAAOyJ,EAAK+nB,WAAW,CAACnvB,EAAInC,GAAGuJ,EAAKyD,MAAK,WAAW,MAAO,CAAC7K,EAAIa,GAAGb,EAAIc,GAAGsG,EAAKsX,aAAY,KAAKtX,EAAKwsD,WAAW,IAAI,MAAK5zD,EAAIa,GAAG,KAAKrD,EAAG,KAAK,CAACE,MAAM,CAC9XmF,SAAU7C,EAAIqzD,mBACd,eAAgBrzD,EAAIyyD,aACpB90D,MAAM,CAAC,gBAAgBqC,EAAIqzD,mBAAmB,cAAcrzD,EAAIqzD,mBAAmB,cAAc,qBAAqB,CAAC71D,EAAGwC,EAAIqzD,mBAAqB,OAAS,IAAI,CAACpgE,IAAI,YAAYgN,YAAY,qBAAqBtC,MAAM,CAAC,cAAc,qBAAqB,aAAaqC,EAAIi0D,kBAAkB,KAAOj0D,EAAIk0D,cAAc9zD,GAAG,CAAC,MAAQ,SAASC,IAASL,EAAIqzD,oBAAqBrzD,EAAIm0D,WAAW9zD,EAAQL,EAAI1R,MAAQ,MAAc,CAAC0R,EAAInC,GAAG,QAAO,WAAW,MAAO,CAACL,EAAG,OAAO,CAACyC,YAAY,yBAAyB,CAACD,EAAIa,GAAGb,EAAIc,GAAGd,EAAIuxD,aAAavxD,EAAIa,GAAG,KAAKrD,EAAG,UAAU,CAACG,MAAM,CAAC,KAAO,sBAAqB,KAAK,CAAE0hD,KAAMr/C,EAAI1R,MAAQ,EAAGuU,SAAU7C,EAAIqzD,sBAAuB,IAAI,IAAI,KAAKrzD,EAAIoP,MAoB3oBtR,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,sNCrZf,MAAMknE,EAAsB,kBAua5B,MAAMv3D,EAtaO,CACXZ,KAAM,eACNm4D,sBACAr2D,WAAY,CACVyI,SAAA,IACAnF,OAAA,KAEFE,WAAY,CACV8yD,QAAS,KAEX5gE,MAAO,CACLgpB,WAAY,CACV1f,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAEXwf,WAAY,CACV3f,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEXoP,MAAO,CACLvP,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEXyf,SAAU,CACR5f,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAAsB0f,QAC/Bhe,UAAWtQ,GAAS+P,OAAOhM,KAAK,KAAuBxD,SAASP,IAElEuuB,QAAS,CACP9f,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAAuBA,QAChC0B,UAAWtQ,GAAS+P,OAAOhM,KAAK,KAAwBxD,SAASP,IAEnEkZ,KAAM,CACJzK,KAAMwB,OACNtB,UAAU,EACVC,QAAS,SACT0B,UAAWtQ,GAAS+P,OAAOhM,KAAK,KAAmBxD,SAASP,IAE9D4gB,KAAM,CACJnS,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IAEX2F,SAAU,CACR9F,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEX4f,QAAS,CACP/f,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEX8f,YAAa,CACXjgB,KAAM,CAACwB,OAAQ1Q,MAAOwQ,QACtBpB,UAAU,EACVC,QAAS,MAEX+f,QAAS,CACPlgB,KAAMC,QACNC,UAAU,EACVC,SAAS,GAEXggB,UAAW,CACTngB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,eACT0B,UAAWtQ,IACL,CAAC,OAAQ,SAAU,SAASO,SAASP,IACvC,YAAW,+CAA+CA,gDAClD,IAAmBA,eAEtB+P,OAAOhM,KAAK,KAAoBxD,SAASP,KAIpDgmE,aAAc,CACZv3D,KAAM,CAACwB,OAAQvB,SACfC,UAAU,EACVC,SAAS,EACT0B,UAAWtQ,GACF,CAAC,OAAQ,UAAW,OAAQ,OAAQ,UAAU,GAAM,GAAOO,SAASP,IAM/EyuB,SAAU,CACRhgB,KAAMwB,OACNtB,UAAU,GAKZs3D,eAAgB,CACdx3D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,MAMX2hB,OAAQ,CACN9hB,KAAM,CAACnO,OAAQyP,QACfpB,UAAU,EACVC,QAAS,KAAM,CACbs3D,SC5He,KD+HnBl3C,WAAY,CACVvgB,KAAMC,QACNC,UAAU,EACVC,SAAS,GAOXsgB,oBAAqB,CACnBzgB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,IACT0B,UAAW6e,GAAY,CAAC,IAAmB,KAAgB5uB,SAAS4uB,KAGxE1lB,KAAI,KACK,CACL08D,WAAW,EACXC,SAAS,EACTC,eAAgB,IAAS,oBAG7B51D,SAAU,CACR,yBACE,IAAI61D,EACJ,QAAkD,QAAxCA,EAAmB19D,KAAKulB,kBAA6C,IAArBm4C,GAA+BA,EAAiB3nE,SAAWiK,KAAKwlB,YAE5H,aACE,OAAO1f,QAAQ9F,KAAKgY,MAAQhY,KAAK29D,yBAEnC,mBACE,OAAO39D,KAAK49D,YAA4B,eAAd59D,KAAKgY,MAEjC,cACE,OAAQhY,KAAK+lB,UAAY/lB,KAAKgY,MAAQhY,KAAK29D,wBAE7C,iBACE,MAAO,CACL,gBAAiB39D,KAAKo9D,aACtB,gBAAiB/1D,OAAOrH,KAAKw9D,SAC7B,gBAAiBx9D,KAAKy9D,eACtB,kBAAmBz9D,KAAK69D,mBAG5B,sBACE,MAAO,CAAC79D,KAAK8lB,YAAa,CACxB,0BAA0B,EAC1B,6BAA8B9lB,KAAK89D,iBACnC,qCAAsC99D,KAAK49D,aAAe59D,KAAK89D,iBAC/D,kCAAmC99D,KAAK+lB,QACxC,sCAAuC/lB,KAAK+9D,eAGhD,0BACE,OAAO/9D,KAAKoV,MAAQ,YAAc,IAEpC,mBACE,OAAOpV,KAAKq9D,eAAiB,GAAGr9D,KAAKq9D,kBAAkBr9D,KAAK6lB,WAAa7lB,KAAK6lB,UAEhF,kBACE,OAAQ7lB,KAAK4mB,aAAaC,QAE5B,gBACE,OAAI7mB,KAAKg+D,gBACA,CACLxsB,GAAI,IACJx5B,KAAMhY,KAAKgY,KACX5C,MAAOpV,KAAKoV,MACZ6oD,kBAAmBj+D,KAAKk+D,wBACxBz4C,SAAUzlB,KAAKylB,SACfE,QAAS3lB,KAAK2lB,QACdrV,KAAMtQ,KAAKsQ,KACX3E,SAAU3L,KAAK2L,SACfia,QAAS5lB,KAAK4lB,QACdpf,MAAOxG,KAAKghD,uBACThhD,KAAKm+D,eACRlmC,UAAW,CACT8C,QAASpyB,GAAS3I,KAAK0oB,UAAU/f,GACjCkyB,MAAOlyB,GAAS3I,KAAK6mB,OAAOle,KAI3B,CACL6oC,GAAI,MACJhrC,MAAO,gCACPyxB,UAAW,CACT8C,QAASpyB,GAAS3I,KAAK0oB,UAAU/f,GACjCkyB,MAAOlyB,GAAS3I,KAAK6mB,OAAOle,MAIlC,kBACE,OAAO3I,KAAKo+D,cAAcnmC,WAE5B,mBACE,MAAM,UACJA,EAAS,GACTuZ,KACGoa,GACD5rD,KAAKo+D,cACT,OAAOxS,GAET,kBACE,OAAO5rD,KAAKo+D,cAAc5sB,IAE5B,gBACE,IAAI6sB,EACJ,OAAOr+D,KAAKiV,MAAM4R,OAAOha,MAAqD,QAA5CwxD,EAAqBr+D,KAAKiV,MAAM4R,cAA2C,IAAvBw3C,OAAgC,EAASA,EAAmBC,oBAEpJ,eACE,MAAO,CACL,YAAat+D,KAAKw9D,QAClB,YAAsBx9D,KAAKomB,WAC3B,WAAYpmB,KAAKu9D,WAAav9D,KAAKunC,QACnC,cAAevnC,KAAKu9D,YAAcv9D,KAAKunC,UAG3C,UACE,OAAOvnC,KAAKsmB,sBAAwB,KAEtC,mBACE,MAAMN,EAAY,IAAmBhmB,KAAKgmB,YACnC,CAAE+tB,GAAa/tB,EAAUttB,MAAM,KACtC,MAAO,CACLstB,YACAO,SAAUvmB,KAAKsmB,oBACfi4C,WAAY,CAAC,YAAOv+D,KAAK2nB,QAAS,YAAc,CAC9CosB,YACAyqB,kBAAmB,IAA8Bx+D,KAAKgmB,aACpD,cAAS,YAAK,CAChBjG,MAAOlV,IACL,IAAI4zD,EACJ,IAAI,gBACFC,EAAe,SACfz3C,GACEpc,EACJ,MAAM8zD,EAAa13C,EAAS0lB,SAASujB,cAAc,IAAI,KACvD,IAAKyO,EACH,OAEF,MAAMC,EAA0BF,GAAiF,QAA7DD,EAAwBz+D,KAAK6+D,kCAAkE,IAA1BJ,EAAmCA,EAAwB,GC7QzK,ED8QXt3D,OAAOyP,OAAO+nD,EAAWlwD,MAAO,CAC9BqwD,UAAcjmE,KAAKuU,IAAIwxD,EAAyB,GAArC,cAOvB7yD,MAAO,CACLoyD,eAAgB,CACdlyD,MAAM,EACN,QAAQkyD,GACFn+D,KAAK4mB,aAAaC,QACpB1f,OAAOhM,KAAKgjE,GAAgB/hE,QAAQZ,IAClCwE,KAAK++D,cAAcC,aAAaxjE,EAAK2iE,EAAe3iE,SAM9D,UACEwE,KAAKi/D,wBAEP,gBACEj/D,KAAKk/D,gBAEPz2D,QAAS,CACP,uBACO,YAAmBzI,KAAK++D,gBAAmB,YAAkB/+D,KAAK++D,gBACrE,YAAW,yNACkG/+D,KAAK6M,MAGtH,sBACE7M,KAAKm/D,mCACLn/D,KAAKygD,SAAW,IAAI2e,iBAAiBp/D,KAAKm/D,kCAC1Cn/D,KAAKygD,SAAS3R,QAAQ9uC,KAAKiV,MAAMuS,QAAS,CACxCokC,YAAY,EACZyT,WAAW,EACXC,SAAS,IAEXt/D,KAAKu/D,eAAiB,qBAAWv/D,KAAK++D,cAAe/+D,KAAKiV,MAAMuS,QAASg4C,UACvE,MAAM,EACJn5B,EAAC,EACDC,SACQ,0BAAgBtmC,KAAK++D,cAAe/+D,KAAKiV,MAAMuS,QAASxnB,KAAKy/D,kBAOlEz/D,KAAKiV,MAAMuS,SAChBrgB,OAAOyP,OAAO5W,KAAKiV,MAAMuS,QAAQ/Y,MAAO,CACtC9B,KAAS05B,EAAH,KACNhnB,IAAQinB,EAAH,UAIX,eACE,IAAIo5B,EAAgBC,EACiB,QAApCD,EAAiB1/D,KAAKygD,gBAAyC,IAAnBif,GAAqCA,EAAevxB,aAChD,QAAhDwxB,EAAuB3/D,KAAKu/D,sBAAqD,IAAzBI,GAA2CA,EAAqBttD,KAAKrS,OAEhI,aAAa2I,GACX,GAAIA,GAAS3I,KAAKw9D,QAAS,CACzB,IAAIoC,GAAY,EAOhB,GANA5/D,KAAKoI,MAAM,IAA0B,CACnCqqB,cAAe9pB,EACf,iBACEi3D,GAAY,KAGZA,EAAW,OAAO,EAoBxB,OAlBA5/D,KAAKw9D,SAAWx9D,KAAKw9D,QACjBx9D,KAAKw9D,eAEDx9D,KAAKgV,YACXhV,KAAKu9D,WAAY,EAMjBv9D,KAAK6/D,gBACL7/D,KAAKoI,MAAM,OAEXpI,KAAKk/D,eACLl/D,KAAKoI,MAAM,OAIN,GAET,OACMpI,KAAKw9D,SAGTx9D,KAAK6mB,UAEP,MAAMle,GACC3I,KAAKw9D,SAGVx9D,KAAK6mB,OAAOle,IAQd,oBAAoBA,GAClB,IAAK3I,KAAKw9D,QACR,OAEF,MAAMsC,EAAiB9/D,KAAK6M,IAAI6lB,SAAS5jB,SAASixD,eAC5CC,QAAmBhgE,KAAK6mB,OAAOle,GAChCm3D,GAGDE,GACFhgE,KAAKigE,eAGT,cACEjgE,KAAK++D,cAAc7pD,SAErB,UAAUvM,GACR,MAAM,KACJqe,EACApe,QAAQ,QACN0rB,IAEA3rB,EACJ,IAAIu3D,GAAgB,EAChBC,GAAgB,EACJ,WAAZ7rC,GACF4rC,GAAgB,EAChBC,GAAgB,GACK,MAAZ7rC,IACT4rC,GAAgB,IAEdl5C,IAAS,KAASk5C,GAAiBl5C,IAAS,KAASm5C,IACvDngE,KAAK6mB,OAAOle,GAEVqe,IAAS,KACXhnB,KAAKoI,MAAM,IAA2BO,IAG1C,mCACE,IAAI4e,EACJ,MAAM64C,EAAgE,QAA9C74C,EAAsBvnB,KAAKiV,MAAMuS,eAA6C,IAAxBD,OAAiC,EAASA,EAAoB2oC,cAAc,IAAI,KAC9J,IAAKkQ,EAAgB,OACrB,MAAMC,EAA6BrgE,KAAKiV,MAAMuS,QAAQ9a,wBAChD4zD,EAA4BF,EAAe1zD,wBACjD1M,KAAK6+D,2BAA6BwB,EAA2B55B,OAAS65B,EAA0B75B,UAapG,MAeMxgC,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,MAAM,CAAC+D,WAAW,CAAC,CAACtF,KAAK,UAAU0K,QAAQ,0BAA0BrY,MAAO0R,EAAS,MAAEiB,WAAW,QAAQ4F,UAAU,CAAC,OAAQ,EAAK,SAAU,KAAQnJ,MAAM,CAACsC,EAAIwf,SAAS40C,oBAAqB,CAAE,YAAap0D,EAAIsM,SAAU,CAAC9O,EAAGwC,EAAIy3D,gBAAgBz3D,EAAIvC,GAAGuC,EAAIe,GAAG,CAACb,IAAI,SAASjN,IAAI,YAAY0K,MAAM,CAAC,GAAKqC,EAAI+c,SAAS,cAAc,wBAAwB3c,GAAG,CAAC,QAAU,SAASC,GAAQ,OAAIA,EAAOtD,KAAKmH,QAAQ,QAAQlE,EAAIs4C,GAAGj4C,EAAO6xB,QAAQ,MAAM,GAAG7xB,EAAO3N,IAAI,CAAC,MAAM,WAAoB,MAAO2N,EAAO6zC,kBAAkB7zC,EAAO2L,iBAAwBhM,EAAIP,MAAMwX,MAAM,KAAMtpB,eAAc,YAAYqS,EAAI03D,kBAAiB,GAAO13D,EAAI23D,iBAAiB,CAAC33D,EAAInC,GAAG,UAAS,WAAW,MAAO,CAACL,EAAG,OAAO,CAACyC,YAAY,8BAA8BvC,MAAM,CAAE,aAAcsC,EAAI0c,aAAc,CAAC1c,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAIyc,YAAY,cAAczc,EAAIa,GAAG,KAAOb,EAAIid,QAA4Gjd,EAAIoP,KAAvG5R,EAAG,UAAU,CAACyC,YAAY,yCAAyCtC,MAAM,CAAC,KAAO,uBAA+B,GAAGqC,EAAIa,GAAG,KAAKrD,EAAG,MAAM,CAAC0C,IAAI,UAAUD,YAAY,wBAAwBvC,MAAMsC,EAAI43D,aAAaj6D,MAAM,CAAC,GAAKqC,EAAI20D,eAAe,cAAc,sBAAsBv0D,GAAG,CAAC,QAAU,SAASC,GAAQ,OAAIA,EAAOtD,KAAKmH,QAAQ,QAAQlE,EAAIs4C,GAAGj4C,EAAO6xB,QAAQ,MAAM,GAAG7xB,EAAO3N,IAAI,CAAC,MAAM,WAAoB,MAAO2N,EAAO6zC,kBAAkB7zC,EAAO2L,iBAAwBhM,EAAIif,cAAchI,MAAM,KAAMtpB,eAAc,CAAC6P,EAAG,MAAM,CAACyC,YAAY,yBAAyB,CAACD,EAAInC,GAAG,YAAY,MAAM,IAoBl/CC,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,qBErdf,IAAI69B,EAAa,EAAQ,QACrBz4B,EAAS,EAAQ,QAerBxF,EAAOC,QAJP,SAAsB4F,EAAQumB,GAC5B,OAAOvmB,GAAUo4B,EAAW7R,EAAQ5mB,EAAO4mB,GAASvmB,K,qBCbtD,IAAIklE,EAAW,EAAQ,QA2BvB/qE,EAAOC,QALP,SAAkBC,EAAOk1B,GAEvB,OADAA,EAAkC,mBAAdA,EAA2BA,OAAah1B,EACpDF,GAASA,EAAMC,OAAU4qE,EAAS7qE,OAAOE,EAAWg1B,GAAc,K,+cCxBrE,MCMM41C,EAAe,UAAC,OAAEhY,GAAUroD,GACvC,MAAM,mBAAE+pD,EAAkB,eAAEC,EAAc,cAAEsW,EAAa,gBAAErW,GAAoBjqD,EAC/EqoD,EDRqC,0BCQC0B,GACtC1B,EDRiC,sBCQC2B,GAClC3B,EDRgC,qBCQCiY,GACjCjY,EDRkC,uBCQC4B,IAG9B,SAASsW,GAAc,OAAElY,EAAM,MAAEtmD,GAAS9B,EAAS,IACxD,MAAM,gBAAEgqD,GAAoBloD,EAG5B,OAFAsmD,EDX8B,oBCavBhrD,IAAImjE,SAASvW,EAAiBhqD,GAClCI,MAAK,SAACqoD,GAEL,OADAL,EDdkC,2BCcKK,EAASpoD,MACzCooD,KAERI,OAAM,UAAC,SAAEJ,IACR,MAAM,OAAE3kD,GAAW2kD,EACnBL,EDlBgC,yBCkBKtkD,GACrCglD,sBAAY,CACVn1B,QAAShH,aAAG,mDAKb,MAAMw3B,EAAkB,UAAC,OAAEiE,EAAM,MAAEtmD,GAAS0+D,EAAc,IAC/DpY,EDxBgC,sBCyBhC,MAAM,mBAAE0B,GAAuBhoD,EAE/B,OAAOpC,IACJhE,IAAIouD,EAAoB,CAAE/pD,OAAQ,CAAE0gE,aAAcD,KAClDpgE,MAAK,SAACqoD,GAEL,OADAL,ED7BoC,6BC6BKK,EAASpoD,MAC3CooD,KAERI,OAAM,UAAC,SAAEJ,IACR,MAAM,OAAE3kD,GAAW2kD,EACnBL,EDjCkC,2BCiCKtkD,GACvCglD,sBAAY,CACVn1B,QAAShH,aAAG,sDAKP43B,EAAc,UAAC,OAAE6D,EAAM,MAAEtmD,GAAS9B,EAAS,IAGtD,OAFAooD,EDvC4B,kBCyCrB1oD,IACJhE,IAAIoG,EAAMioD,eAAgB,CAAEhqD,OAAQ,CAAEC,YACtCI,MAAK,SAACqoD,GAEL,OADAL,ED3CgC,yBC2CKK,EAASpoD,MACvCooD,KAERI,OAAM,UAAC,SAAEJ,IACR,MAAM,OAAE3kD,GAAW2kD,EACnBL,ED/C8B,uBC+CKtkD,GACnCglD,sBAAY,CACVn1B,QAAShH,aAAG,kDAKpB,SAAS+zC,EAAU7nE,EAAU,IAC3B,MAAM,OAAEuvD,EAAM,gBAAE4B,EAAe,cAAEqW,EAAa,MAAEzgE,EAAK,OAAE4nB,EAAM,aAAEm5C,GAAiB9nE,EAGhF,IAAI+nE,EAOJ,OATAxY,EAAO,WAAW5gC,GAIhBo5C,EADE5W,EACiB5sD,IAAIyjE,aAAa7W,EAAiBpqD,GAAOQ,MAAK,SAACC,GAAI,MAAM,CAAEA,WAE3DjD,IAAI0jE,aAAaT,EAAe,CAAEzgE,UAGhDghE,EACJxgE,MAAK,SAACqoD,GAEL,OADAL,EAAO,WAAW5gC,YAAkBihC,EAASpoD,MACtCooD,KAERI,OAAM,UAAC,SAAEJ,IACR,MAAM,OAAE3kD,GAAW2kD,EACnBL,EAAO,WAAW5gC,UAAgB1jB,GAClCglD,sBAAY,CACVn1B,QAASgtC,OAKV,MAAMI,EAAe,UAAC,OAAE3Y,EAAM,MAAEtmD,GAASlC,EAAQ,IACtD,MAAM,gBAAEoqD,EAAe,cAAEqW,GAAkBv+D,EAE3C,OAAO4+D,EAAU,CACftY,SACAxoD,QACAoqD,kBACAqW,gBACA74C,OAAQ,UACRm5C,aAAch0C,aAAG,gDAIRq0C,EAAiB,UAAC,OAAE5Y,EAAM,MAAEtmD,GAASlC,EAAQ,IACxD,MAAM,gBAAEoqD,EAAe,cAAEqW,GAAkBv+D,EAE3C,OAAO4+D,EAAU,CACftY,SACAxoD,QACAoqD,kBACAqW,gBACA74C,OAAQ,YACRm5C,aAAch0C,aAAG,kDAIRu4B,EAAa,UAAC,OAAEkD,EAAM,SAAEH,GAAYlD,GAG/C,OAFAqD,EDhGkC,uBCgGCrD,GAE5BkD,EAAS,aAAclD,EAAS,CAAEvX,MAAM,KAGpCyzB,EAAa,UAAC,OAAE7Y,GAAU8Y,GACrC9Y,EDtGkC,uBCsGC8Y,IC7HtB,OACb,qBAA6Bp/D,EAAO/B,GAClC,MAAM,qBACJ2uD,EAAuB,KAAI,yBAC3ByS,EAA2B,GAAE,qBAC7BvS,EAAuB,KAAI,yBAC3BwS,EAA2B,GAAE,eAC7BtS,EAAiB,KAAI,mBACrBuS,EAAqB,GAAE,kBACvB3d,EAAoB,KAAI,sBACxB4d,EAAwB,GAAE,iBAC1BC,EAAmB,KAAI,qBACvBvS,EAAuB,GAAE,cACzBwS,EAAgB,KAAI,kBACpB5d,EAAoB,IAClB7jD,EACJ+B,EAAMy+D,SAAS/+C,OAAO27B,SAAWuR,EACjC5sD,EAAMy+D,SAAS/+C,OAAOsiC,aAAeqd,EACrCr/D,EAAMy+D,SAASn4D,OAAO+0C,SAAWyR,EACjC9sD,EAAMy+D,SAASn4D,OAAO07C,aAAesd,EACrCt/D,EAAM2/D,QAAQtkB,SAAW2R,EACzBhtD,EAAM2/D,QAAQ3d,aAAeud,EAC7Bv/D,EAAM4/D,UAAUvkB,SAAWokB,EAC3Bz/D,EAAM4/D,UAAU5d,aAAekL,EAC/BltD,EAAM6hD,WAAWxG,SAAWuG,EAC5B5hD,EAAM6hD,WAAWG,aAAewd,EAChCx/D,EAAM+hD,OAAO1G,SAAWqkB,EACxB1/D,EAAM+hD,OAAOC,aAAeF,GAE9B,wBAAgC9hD,EAAOgoD,GACrChoD,EAAMgoD,mBAAqBA,GAE7B,oBAA4BhoD,EAAOioD,GACjCjoD,EAAMioD,eAAiBA,GAEzB,mBAA2BjoD,EAAOu+D,GAChCv+D,EAAMu+D,cAAgBA,GAExB,qBAA6Bv+D,EAAOkoD,GAClCloD,EAAMkoD,gBAAkBA,GAE1B,mBAA2BloD,GACzBA,EAAM6hD,WAAW6D,WAAY,GAE/B,2BAAmC1lD,EAAOzB,GACxCyB,EAAM6hD,WAAW6D,WAAY,EAC7B1lD,EAAM6hD,WAAWtjD,KAAOA,EACxByB,EAAM6hD,WAAWqF,UAAY,MAE/B,yBAAiClnD,EAAOknD,GACtClnD,EAAM6hD,WAAW6D,WAAY,EAC7B1lD,EAAM6hD,WAAWqF,UAAYA,EAC7BlnD,EAAM6hD,WAAWtjD,KAAO,IAE1B,eAAuByB,GACrBA,EAAM+hD,OAAO2D,WAAY,GAE3B,uBAA+B1lD,EAAOzB,GACpCyB,EAAM+hD,OAAO2D,WAAY,EACzB1lD,EAAM+hD,OAAOxjD,KAAOA,EACpByB,EAAM+hD,OAAOmF,UAAY,MAE3B,qBAA6BlnD,EAAOknD,GAClClnD,EAAM+hD,OAAO2D,WAAY,EACzB1lD,EAAM+hD,OAAOmF,UAAYA,EACzBlnD,EAAM+hD,OAAOxjD,KAAO,IAEtB,gBAAwByB,GACtBA,EAAM2/D,QAAQja,WAAY,GAE5B,wBAAgC1lD,EAAOzB,GACrCyB,EAAM2/D,QAAQja,WAAY,EAC1B1lD,EAAM2/D,QAAQphE,KAAOA,EACrByB,EAAM2/D,QAAQzY,UAAY,MAE5B,sBAA8BlnD,EAAOknD,GACnClnD,EAAM2/D,QAAQja,WAAY,EAC1B1lD,EAAM2/D,QAAQzY,UAAYA,EAC1BlnD,EAAM2/D,QAAQphE,KAAO,IAEvB,kBAA0ByB,GACxBA,EAAM4/D,UAAUla,WAAY,GAE9B,0BAAkC1lD,EAAOzB,GACvCyB,EAAM4/D,UAAUla,WAAY,EAC5B1lD,EAAM4/D,UAAUrhE,KAAOA,EACvByB,EAAM4/D,UAAU1Y,UAAY,MAE9B,wBAAgClnD,EAAOknD,GACrClnD,EAAM4/D,UAAUla,WAAY,EAC5B1lD,EAAM4/D,UAAU1Y,UAAYA,EAC5BlnD,EAAM4/D,UAAUrhE,KAAO,IAEzB,iBAAyByB,GACvBA,EAAMy+D,SAAS/Y,WAAY,GAE7B,yBAAiC1lD,EAAOzB,GACtCyB,EAAMy+D,SAAS/Y,WAAY,EAC3B1lD,EAAMy+D,SAASlgE,KAAOA,EACtByB,EAAMy+D,SAASvX,UAAY,MAE7B,uBAA+BlnD,EAAOknD,GACpClnD,EAAMy+D,SAAS/Y,WAAY,EAC3B1lD,EAAMy+D,SAASvX,UAAYA,EAC3BlnD,EAAMy+D,SAASlgE,KAAO,KCtGX,KACb0oD,YAAY,EACZE,UACAC,YACApnD,MCRoB,CACpBgoD,mBAAoB,GACpBC,eAAgB,GAChBsW,cAAe,GACfrW,gBAAiB,GACjBuW,SAAU,CACR/Y,WAAW,EACXwB,UAAW,KACX3oD,KAAM,GACNmhB,OAAQ,CACN27B,SAAU,KACV2G,aAAc,IAEhB17C,OAAQ,CACN+0C,SAAU,KACV2G,aAAc,KAGlBH,WAAY,CACV6D,WAAW,EACXwB,UAAW,KACX3oD,KAAM,GACN88C,SAAU,KACV2G,aAAc,IAEhBD,OAAQ,CACN2D,WAAW,EACXwB,UAAW,KACX3oD,KAAM,GACN88C,SAAU,KACV2G,aAAc,IAEhB2d,QAAS,CACPja,WAAW,EACXwB,UAAW,KACX3oD,KAAM,GACN88C,SAAU,KACV2G,aAAc,IAEhB4d,UAAW,CACTla,WAAW,EACXwB,UAAW,KACX3oD,KAAM,GACN88C,SAAU,KACV2G,aAAc,O,kCC5ClB,oIAQA,MAAM/nD,EAAQ,CACZ4lE,QAAS,YAAS,KAClBC,YAAa,YAAS,MAQlBC,EAAe,YAAO,CAC1B9lE,QACAsL,SAAU,CACR,YACE,OAAO7H,KAAK2Y,UAAY3Y,KAAK25C,OAAO,aAAe,OAGvDlxC,QAAS,CACP,gBACE,MAAM,QACJ05D,EAAO,YACPC,GACEpiE,KACEkZ,EAAIlZ,KAAKoG,eACf,IAAIk8D,EAAWppD,IACf,MAAMqpD,EAAiBviE,KAAK6e,kBAAkB,KAW9C,OAVI0jD,GAAkBJ,GAAWC,KAC/BE,EAAWppD,EAAE,UAAW,CACtBzS,MAAO,CACLzE,GAAIhC,KAAKwiE,WAEXvrD,SAAUsrD,EAAiB,GAAK,YAAWH,EAAaD,GACxD3mE,IAAK,UACLwN,IAAK,WACJhJ,KAAKsZ,cAAc,OAEjBgpD,O,kCC5Cb,6GAyMA,MAAM38D,EAhMO,CACXZ,KAAM,qBACN8B,WAAY,CACVg2C,kBAAA,IACAvtC,SAAA,IACAo8C,YAAA,IACA+W,qBAAA,IACAp9C,yBAAA,IACAq9C,iBAAA,KAEFr4D,WAAY,CACVC,UAAW,KAEb/N,MAAO,CAILnF,MAAO,CACL2O,UAAU,EACVC,QAAS,GAGT0B,UAAW,KAAM,GAKnBwD,aAAc,CACZrF,KAAMlP,MACNoP,UAAU,EACVC,QAAS,MAKXoB,YAAa,CACXvB,KAAMwB,OACNtB,UAAU,EACVC,QAAS,UAEX28D,UAAW,CACT98D,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKX2F,SAAU,CACR9F,KAAMC,QACNC,UAAU,EACVC,SAAS,GAKX48D,qBAAsB,CACpB/8D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,mBAKXiF,iBAAkB,CAChBpF,KAAMwB,OACNtB,UAAU,EACVC,QAAS,SAKX68D,iBAAkB,CAChBh9D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,SAKX88D,wBAAyB,CACvBj9D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,yBAEX+8D,qBAAsB,CACpBl9D,KAAMwB,OACNtB,UAAU,EACVC,QAAS,sCAKXuJ,iBAAkB,CAChBxJ,UAAU,EACVC,SAAS,EACT0B,UAAWtQ,IAAmB,IAAVA,GAAoC,iBAAVA,GAAsBA,aAAiBoY,aAKvFpE,uBAAwB,CACtBvF,KAAMsB,OACNpB,UAAU,EACVC,QAAS,KAAM,KAQjBqF,iBAAkB,CAChBxF,KAAMC,QACNC,UAAU,EACVC,SAAS,IAGbnF,KAAI,KACK,CACL2G,aAAc,KACdg6C,WAAW,IAGf35C,SAAU,CACR,kBACE,MAAM+jD,EAAa,CACjB/lD,KAAM,SACNuB,YAAapH,KAAKoH,eACfpH,KAAK2O,QAKV,OAHKi9C,EAAW,gBACdA,EAAW,cAAgBA,EAAWxkD,aAEjCwkD,GAET,WACE,OAAO9lD,QAAQ9F,KAAKwH,gBAGxBuE,MAAO,CACL3U,MAAO,CACL,QAAQ+U,GACNnM,KAAKwH,aAAe2E,GAEtBD,WAAW,GAEb,aAAaC,GACPA,IAAanM,KAAK5I,OACtB4I,KAAKoI,MAAM,QAAS+D,KAGxB1D,QAAS,CACP,OAAOrR,GAKL4I,KAAKoI,MAAM,SAAUhR,IAEvB,kBAAkB8Y,GAChBlQ,KAAKwH,aAAe0I,EAMpBlQ,KAAKoI,MAAM,wBAAyB8H,GACpC2+B,WAAW,KACT//B,SAASixD,cAAciD,UAG3B,aACEhjE,KAAKwH,aAAe,GAIpBxH,KAAKoI,MAAM,SACPpI,KAAKiV,MAAM3P,OACbtF,KAAKiV,MAAM3P,MAAMuH,IAAIqI,SAGzB,mBAIElV,KAAKoI,MAAM,oBAaf,MAeMnC,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,sBAAsB,CAACyC,YAAY,yBAAyBvC,MAAM,CAAE,4CAA6CsC,EAAIuC,kBAAmB/B,YAAYR,EAAIS,GAAG,CAAET,EAAgB,aAAE,CAACtN,IAAI,UAAUgO,GAAG,WAAW,MAAO,CAAClD,EAAG,yBAAyB,CAAC0C,IAAI,kBAAkBD,YAAY,iCAAiCtC,MAAM,CAAC,KAAO,UAAU,SAAW,WAAW,cAAc,iBAAiB,eAAe,GAAG,cAAc,GAAG,SAAWqC,EAAI6C,UAAUrC,YAAYR,EAAIS,GAAG,CAAC,CAAC/N,IAAI,SAASgO,GAAG,WAAW,MAAO,CAAClD,EAAG,MAAM,CAACyC,YAAY,yKAAyK,CAACD,EAAIa,GAAG,eAAeb,EAAIc,GAAGd,EAAI85D,sBAAsB,kBAAkBl0D,OAAM,GAAO5F,EAAIoC,aAAmB,OAAE,CAAC1P,IAAI,SAASgO,GAAG,WAAW,MAAO,CAAClD,EAAG,MAAM,CAACyC,YAAY,mFAAmF,CAACzC,EAAG,YAAY,CAAC0C,IAAI,eAAeD,YAAY,oBAAoBtC,MAAM,CAAC,SAAW,YAAYyC,GAAG,CAAC,MAAQJ,EAAIm6D,mBAAmB,CAACn6D,EAAIa,GAAG,iBAAiBb,EAAIc,GAAGd,EAAIg6D,yBAAyB,mBAAmB,KAAKp0D,OAAM,GAAM,MAAM,MAAK,IAAO,CAAC5F,EAAIa,GAAG,KAAMb,EAAIoC,aAAmB,OAAEpC,EAAI4E,GAAI5E,EAAgB,cAAE,SAASoH,EAAK5D,GAAK,OAAOhG,EAAG,8BAA8B,CAAC9K,IAAI8Q,EAAIvD,YAAY,sCAAsCG,GAAG,CAAC,OAAS,SAASC,GAAQ,OAAOL,EAAIo6D,kBAAkBhzD,KAAQ5G,YAAYR,EAAIS,GAAG,CAAC,CAAC/N,IAAI,YAAYgO,GAAG,WAAW,MAAO,CAACV,EAAInC,GAAG,gBAAe,WAAW,MAAO,CAACmC,EAAIa,GAAGb,EAAIc,GAAGsG,OAAS,CAAC,YAAcA,MAASxB,OAAM,IAAO,MAAK,QAAUpI,EAAG,MAAM,CAACyC,YAAY,6CAA6C,CAACD,EAAIa,GAAG,aAAab,EAAIc,GAAGd,EAAIi6D,sBAAsB,eAAe,KAAKr0D,OAAM,GAAM,KAAM5F,EAAoB,iBAAE,CAACtN,IAAI,SAASgO,GAAG,WAAW,MAAO,CAAClD,EAAG,YAAYwC,EAAIe,GAAG,CAACb,IAAI,eAAeD,YAAY,uCAAuCtC,MAAM,CAAC,SAAW,WAAW,KAAO,SAAS,SAAWqC,EAAI6C,SAAS,aAAa,SAAS,cAAc,iBAAiBzC,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOL,EAAItI,OAAOsI,EAAItB,iBAAiB,YAAYsB,EAAIsC,wBAAuB,MAAUsD,OAAM,GAAM,MAAM,MAAK,IAAO,CAAC5F,EAAIa,GAAG,KAAKb,EAAInC,GAAG,SAAQ,WAAW,MAAO,CAACL,EAAG,gBAAgBwC,EAAIe,GAAG,CAACb,IAAI,QAAQD,YAAY,+BAA+BvC,MAAM,CAAE,oBAAqBsC,EAAIuC,kBAAmB5E,MAAM,CAAC,SAAWqC,EAAI6C,UAAUzC,GAAG,CAAC,MAAQ,SAASC,GAAQL,EAAI04C,WAAY,GAAO,KAAO,SAASr4C,GAAQL,EAAI04C,WAAY,IAAS1sB,SAAS,CAAC,QAAU,SAAS3rB,GAAQ,OAAIA,EAAOtD,KAAKmH,QAAQ,QAAQlE,EAAIs4C,GAAGj4C,EAAO6xB,QAAQ,QAAQ,GAAG7xB,EAAO3N,IAAI,SAAkB,KAAcsN,EAAItI,OAAOsI,EAAItB,gBAAgBtC,MAAM,CAAC9N,MAAO0R,EAAgB,aAAExI,SAAS,SAAUwJ,GAAMhB,EAAItB,aAAasC,GAAMC,WAAW,iBAAiB,gBAAgBjB,EAAIyjD,iBAAgB,QAAWzjD,EAAIa,GAAG,KAAMb,EAAI65D,WAAa75D,EAAI4C,WAAa5C,EAAI6C,SAAUrF,EAAG,uBAAuB,CAACyC,YAAY,8FAA8FtC,MAAM,CAAC,MAAQqC,EAAImC,iBAAiB,oBAAoBnC,EAAIyG,iBAAiB,cAAc,gCAAgCrG,GAAG,CAAC,MAAQJ,EAAIm0C,cAAcn0C,EAAIoP,MAAM,IAoB5sGtR,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,kCC5Of,sYAGA,SAASmtE,EAA2Bt4D,EAAMmb,EAAW8tB,GACnD,IAAI,UACFpH,EAAS,SACTC,GACE9hC,EACJ,MAAMu4D,EAAW,YAAYp9C,GACvBguB,EAAgB,YAAiBhuB,GACjCq9C,EAAc,YAAcrvB,GAC5BjB,EAAO,YAAQ/sB,GACfs9C,EAA0B,MAAbF,EACbG,EAAU72B,EAAUrG,EAAIqG,EAAUlG,MAAQ,EAAImG,EAASnG,MAAQ,EAC/Dg9B,EAAU92B,EAAUpG,EAAIoG,EAAUjG,OAAS,EAAIkG,EAASlG,OAAS,EACjEg9B,EAAc/2B,EAAU22B,GAAe,EAAI12B,EAAS02B,GAAe,EACzE,IAAIK,EACJ,OAAQ3wB,GACN,IAAK,MACH2wB,EAAS,CACPr9B,EAAGk9B,EACHj9B,EAAGoG,EAAUpG,EAAIqG,EAASlG,QAE5B,MACF,IAAK,SACHi9B,EAAS,CACPr9B,EAAGk9B,EACHj9B,EAAGoG,EAAUpG,EAAIoG,EAAUjG,QAE7B,MACF,IAAK,QACHi9B,EAAS,CACPr9B,EAAGqG,EAAUrG,EAAIqG,EAAUlG,MAC3BF,EAAGk9B,GAEL,MACF,IAAK,OACHE,EAAS,CACPr9B,EAAGqG,EAAUrG,EAAIsG,EAASnG,MAC1BF,EAAGk9B,GAEL,MACF,QACEE,EAAS,CACPr9B,EAAGqG,EAAUrG,EACbC,EAAGoG,EAAUpG,GAGnB,OAAQ,YAAatgB,IACnB,IAAK,QACH09C,EAAO1vB,IAAkByvB,GAAe3vB,GAAOwvB,GAAc,EAAI,GACjE,MACF,IAAK,MACHI,EAAO1vB,IAAkByvB,GAAe3vB,GAAOwvB,GAAc,EAAI,GAGrE,OAAOI,EAUT,MAAMj0B,EAAkB+vB,MAAO9yB,EAAWC,EAAUtsB,KAClD,MAAM,UACJ2F,EAAY,SAAQ,SACpBO,EAAW,WAAU,WACrBg4C,EAAa,GAAE,SACfhzB,GACElrB,EACEsjD,EAAkBpF,EAAWv2D,OAAOlC,SACpCguC,QAA+B,MAAlBvI,EAASwB,WAAgB,EAASxB,EAASwB,MAAMJ,IACpE,IAAIkH,QAActI,EAASq4B,gBAAgB,CACzCl3B,YACAC,WACApmB,cAEE,EACF8f,EAAC,EACDC,GACE68B,EAA2BtvB,EAAO7tB,EAAW8tB,GAC7C+vB,EAAoB79C,EACpB89C,EAAiB,GACjBC,EAAa,EACjB,IAAK,IAAItuB,EAAI,EAAGA,EAAIkuB,EAAgB5tE,OAAQ0/C,IAAK,CAC/C,MAAM,KACJ1wC,EAAI,GACJyE,GACEm6D,EAAgBluB,IAElBpP,EAAG29B,EACH19B,EAAG29B,EAAK,KACRpjE,EAAI,MACJqjE,SACQ16D,EAAG,CACX68B,IACAC,IACA69B,iBAAkBn+C,EAClBA,UAAW69C,EACXt9C,WACAu9C,iBACAjwB,QACAtI,WACAtkB,SAAU,CACRylB,YACAC,cAGJtG,EAAa,MAAT29B,EAAgBA,EAAQ39B,EAC5BC,EAAa,MAAT29B,EAAgBA,EAAQ39B,EAC5Bw9B,EAAiB,IACZA,EACH,CAAC/+D,GAAO,IACH++D,EAAe/+D,MACflE,IAGHqjE,GAASH,GAAc,KACzBA,IACqB,iBAAVG,IACLA,EAAMl+C,YACR69C,EAAoBK,EAAMl+C,WAExBk+C,EAAMrwB,QACRA,GAAwB,IAAhBqwB,EAAMrwB,YAAuBtI,EAASq4B,gBAAgB,CAC5Dl3B,YACAC,WACApmB,aACG29C,EAAMrwB,SAGXxN,IACAC,KACE68B,EAA2BtvB,EAAOgwB,EAAmB/vB,KAE3D2B,GAAK,GAGT,MAAO,CACLpP,IACAC,IACAtgB,UAAW69C,EACXt9C,WACAu9C,mBAYJtE,eAAe4E,EAAe9hE,EAAOjJ,GACnC,IAAIgrE,OACY,IAAZhrE,IACFA,EAAU,IAEZ,MAAM,EACJgtC,EAAC,EACDC,EAAC,SACDiF,EAAQ,MACRsI,EAAK,SACL5sB,EAAQ,SACRV,GACEjkB,GACE,SACJmpC,EAAW,oBAAmB,aAC9BC,EAAe,WAAU,eACzB44B,EAAiB,WAAU,YAC3BC,GAAc,EAAK,QACnBxvB,EAAU,GACR,YAAS17C,EAASiJ,GAChBkiE,EAAgB,YAAiBzvB,GAEjCxiB,EAAUtL,EAASs9C,EADa,aAAnBD,EAAgC,YAAc,WACbA,GAC9CG,EAAqB,kBAAuBl5B,EAASC,gBAAgB,CACzEjZ,QAAiH,OAAtG8xC,QAAqD,MAAtB94B,EAAS3G,eAAoB,EAAS2G,EAAS3G,UAAUrS,MAAqB8xC,EAAgC9xC,EAAUA,EAAQyU,sBAAyD,MAA/BuE,EAASzC,wBAA6B,EAASyC,EAASzC,mBAAmB7hB,EAAS0lB,WACxRlB,WACAC,eACAnlB,cAEI4gB,EAA0B,aAAnBm9B,EAAgC,CAC3Cj+B,IACAC,IACAE,MAAOqN,EAAMlH,SAASnG,MACtBC,OAAQoN,EAAMlH,SAASlG,QACrBoN,EAAMnH,UACJzE,QAAkD,MAA5BsD,EAASP,qBAA0B,EAASO,EAASP,gBAAgB/jB,EAAS0lB,WACpG+3B,QAA4C,MAAtBn5B,EAAS3G,eAAoB,EAAS2G,EAAS3G,UAAUqD,WAA+C,MAArBsD,EAAStE,cAAmB,EAASsE,EAAStE,SAASgB,KAGlK,CACF5B,EAAG,EACHC,EAAG,GAECq+B,EAAoB,YAAiBp5B,EAASiB,4DAA8DjB,EAASiB,sDAAsD,CAC/KvlB,WACAkgB,OACAc,eACA1hB,aACG4gB,GACL,MAAO,CACL9nB,KAAMolD,EAAmBplD,IAAMslD,EAAkBtlD,IAAMmlD,EAAcnlD,KAAOqlD,EAAYp+B,EACxFhnB,QAASqlD,EAAkBrlD,OAASmlD,EAAmBnlD,OAASklD,EAAcllD,QAAUolD,EAAYp+B,EACpG35B,MAAO83D,EAAmB93D,KAAOg4D,EAAkBh4D,KAAO63D,EAAc73D,MAAQ+3D,EAAYr+B,EAC5FkG,OAAQo4B,EAAkBp4B,MAAQk4B,EAAmBl4B,MAAQi4B,EAAcj4B,OAASm4B,EAAYr+B,GASpG,MAAMu+B,EAAQvrE,IAAW,CACvB0L,KAAM,QACN1L,UACA,SAASiJ,GACP,MAAM,EACJ+jC,EAAC,EACDC,EAAC,UACDtgB,EAAS,MACT6tB,EAAK,SACLtI,EAAQ,SACRtkB,EAAQ,eACR68C,GACExhE,GAEE,QACJiwB,EAAO,QACPwiB,EAAU,GACR,YAAS17C,EAASiJ,IAAU,GAChC,GAAe,MAAXiwB,EACF,MAAO,GAET,MAAMiyC,EAAgB,YAAiBzvB,GACjC2uB,EAAS,CACbr9B,IACAC,KAEIkN,EAAO,YAAiBxtB,GACxBjwB,EAAS,YAAcy9C,GACvBqxB,QAAwBt5B,EAASkB,cAAcla,GAC/CuyC,EAAmB,MAATtxB,EACVuxB,EAAUD,EAAU,MAAQ,OAC5BE,EAAUF,EAAU,SAAW,QAC/BG,EAAaH,EAAU,eAAiB,cACxCI,EAAUrxB,EAAMnH,UAAU32C,GAAU89C,EAAMnH,UAAU8G,GAAQkwB,EAAOlwB,GAAQK,EAAMlH,SAAS52C,GAC1FovE,EAAYzB,EAAOlwB,GAAQK,EAAMnH,UAAU8G,GAC3C4xB,QAAuD,MAA5B75B,EAASP,qBAA0B,EAASO,EAASP,gBAAgBzY,IACtG,IAAI8yC,EAAaD,EAAoBA,EAAkBH,GAAc,EAGhEI,SAA6C,MAAtB95B,EAAS3G,eAAoB,EAAS2G,EAAS3G,UAAUwgC,MACnFC,EAAap+C,EAAS0lB,SAASs4B,IAAepxB,EAAMlH,SAAS52C,IAE/D,MAAMuvE,EAAoBJ,EAAU,EAAIC,EAAY,EAI9CI,EAAyBF,EAAa,EAAIR,EAAgB9uE,GAAU,EAAI,EACxEyvE,EAAa,YAAIhB,EAAcO,GAAUQ,GACzCE,EAAa,YAAIjB,EAAcQ,GAAUO,GAIzCG,EAAQF,EACRp4D,EAAMi4D,EAAaR,EAAgB9uE,GAAU0vE,EAC7CnK,EAAS+J,EAAa,EAAIR,EAAgB9uE,GAAU,EAAIuvE,EACxD39C,EAAS,YAAM+9C,EAAOpK,EAAQluD,GAM9Bu4D,GAAmB7B,EAAec,OAAoC,MAA3B,YAAa5+C,IAAsBs1C,IAAW3zC,GAAUksB,EAAMnH,UAAU32C,GAAU,GAAKulE,EAASoK,EAAQF,EAAaC,GAAcZ,EAAgB9uE,GAAU,EAAI,EAC5M6vE,EAAkBD,EAAkBrK,EAASoK,EAAQpK,EAASoK,EAAQpK,EAASluD,EAAM,EAC3F,MAAO,CACL,CAAComC,GAAOkwB,EAAOlwB,GAAQoyB,EACvB/kE,KAAM,CACJ,CAAC2yC,GAAO7rB,EACRk+C,aAAcvK,EAAS3zC,EAASi+C,KAC5BD,GAAmB,CACrBC,oBAGJ1B,MAAOyB,MAoBb,MAAMG,EAAgB,SAAUzsE,GAI9B,YAHgB,IAAZA,IACFA,EAAU,IAEL,CACL0L,KAAM,gBACN1L,UACA,SAASiJ,GACP,IAAIyjE,EAAuBC,EAAwBC,EACnD,MAAM,MACJpyB,EAAK,eACLiwB,EAAc,UACd99C,EAAS,SACTulB,EAAQ,SACRtkB,GACE3kB,GACE,UACJ4jE,GAAY,EAAK,UACjBnyB,EAAS,kBACTyqB,EAAoB,IAAU,cAC9B2H,GAAgB,KACbC,GACD,YAAS/sE,EAASiJ,GAChB+jE,OAA6BrwE,IAAd+9C,GAA2ByqB,IAAsB,IAtC5E,SAA0BzqB,EAAWoyB,EAAe3H,GAElD,OAD2CzqB,EAAY,IAAIyqB,EAAkBx2D,OAAOge,GAAa,YAAaA,KAAe+tB,MAAeyqB,EAAkBx2D,OAAOge,GAAa,YAAaA,KAAe+tB,IAAcyqB,EAAkBx2D,OAAOge,GAAa,YAAQA,KAAeA,IAC/Ohe,OAAOge,IAC3C+tB,IACK,YAAa/tB,KAAe+tB,KAAcoyB,GAAgB,YAA8BngD,KAAeA,IAkC3BsgD,CAAiBvyB,GAAa,KAAMoyB,EAAe3H,GAAqBA,EACrJv5B,QAAiBm/B,EAAe9hE,EAAO8jE,GACvCx+C,GAA0E,OAAzDm+C,EAAwBjC,EAAegC,oBAAyB,EAASC,EAAsBj0D,QAAU,EAC1Hy0D,EAAmBF,EAAaz+C,GACtC,GAAwB,MAApB2+C,EACF,MAAO,GAET,MAAMC,EAAiB,YAAkBD,EAAkB1yB,QAAgC,MAAlBtI,EAASwB,WAAgB,EAASxB,EAASwB,MAAM9lB,EAAS0lB,YAGnI,GAAI3mB,IAAcugD,EAChB,MAAO,CACLrC,MAAO,CACLl+C,UAAWqgD,EAAa,KAI9B,MAAMI,EAAmB,CAACxhC,EAAS,YAAQshC,IAAoBthC,EAASuhC,EAAe,IAAKvhC,EAASuhC,EAAe,KAC9GE,EAAe,KAAiE,OAA1DV,EAAyBlC,EAAegC,oBAAyB,EAASE,EAAuBW,YAAc,GAAK,CAC9I3gD,UAAWugD,EACXI,UAAWF,IAEPG,EAAgBP,EAAaz+C,EAAe,GAGlD,GAAIg/C,EACF,MAAO,CACL/lE,KAAM,CACJiR,MAAO8V,EAAe,EACtB++C,UAAWD,GAEbxC,MAAO,CACLl+C,UAAW4gD,IAIjB,MAAMC,EAA8BH,EAAa/tE,IAAI+0B,IACnD,MAAMqmB,EAAY,YAAarmB,EAAE1H,WACjC,MAAO,CAAC0H,EAAE1H,UAAW+tB,GAAamyB,EAElCx4C,EAAEi5C,UAAUhvD,MAAM,EAAG,GAAG9gB,OAAO,CAACi8C,EAAKj8B,IAAMi8B,EAAMj8B,EAAG,GAEpD6W,EAAEi5C,UAAU,GAAIj5C,EAAEi5C,aACjB1nB,KAAK,CAAC5oD,EAAGC,IAAMD,EAAE,GAAKC,EAAE,IAKrBwwE,GAA8E,OAA3Db,EAJWY,EAA4B7+D,OAAO0lB,GAAKA,EAAE,GAAG/V,MAAM,EAGvF,YAAa+V,EAAE,IAAM,EAAI,GAAG9iB,MAAMiM,GAAKA,GAAK,IACiC,SAAc,EAASovD,EAAsB,KAAOY,EAA4B,GAAG,GAChK,OAAIC,IAAmB9gD,EACd,CACLnlB,KAAM,CACJiR,MAAO8V,EAAe,EACtB++C,UAAWD,GAEbxC,MAAO,CACLl+C,UAAW8gD,IAIV,MAWPC,EAAO,SAAU1tE,GAIrB,YAHgB,IAAZA,IACFA,EAAU,IAEL,CACL0L,KAAM,OACN1L,UACA,SAASiJ,GACP,IAAI0kE,EAAuBC,EAC3B,MAAM,UACJjhD,EAAS,eACT89C,EAAc,MACdjwB,EAAK,iBACLswB,EAAgB,SAChB54B,EAAQ,SACRtkB,GACE3kB,GAEFg7D,SAAU4J,GAAgB,EAC1BhB,UAAWiB,GAAiB,EAC5BC,mBAAoBC,EAA2B,iBAC/CC,EAAmB,UAAS,0BAC5BC,EAA4B,OAAM,cAClChzB,GAAgB,KACb6xB,GACD,YAAS/sE,EAASiJ,GAMtB,GAAsD,OAAjD0kE,EAAwBlD,EAAec,QAAkBoC,EAAsBpB,gBAClF,MAAO,GAET,MAAM7yB,EAAO,YAAQ/sB,GACfwhD,EAAkB,YAAYrD,GAC9BsD,EAAkB,YAAQtD,KAAsBA,EAChDrwB,QAA+B,MAAlBvI,EAASwB,WAAgB,EAASxB,EAASwB,MAAM9lB,EAAS0lB,WACvEy6B,EAAqBC,IAAgCI,IAAoBlzB,EAAgB,CAAC,YAAqB4vB,IAAqB,YAAsBA,IAC1JuD,EAA6D,SAA9BH,GAChCF,GAA+BK,GAClCN,EAAmBl/D,QAAQ,YAA0Bi8D,EAAkB5vB,EAAegzB,EAA2BzzB,IAEnH,MAAMjB,EAAa,CAACsxB,KAAqBiD,GACnCniC,QAAiBm/B,EAAe9hE,EAAO8jE,GACvCO,EAAY,GAClB,IAAIgB,GAAiE,OAA/CV,EAAuBnD,EAAeiD,WAAgB,EAASE,EAAqBN,YAAc,GAIxH,GAHIO,GACFP,EAAUz+D,KAAK+8B,EAAS8N,IAEtBo0B,EAAgB,CAClB,MAAMx0B,EAAQ,YAAkB3sB,EAAW6tB,EAAOC,GAClD6yB,EAAUz+D,KAAK+8B,EAAS0N,EAAM,IAAK1N,EAAS0N,EAAM,KAQpD,GANAg1B,EAAgB,IAAIA,EAAe,CACjC3hD,YACA2gD,eAIGA,EAAU/7D,MAAMmoC,GAAQA,GAAQ,GAAI,CACvC,IAAI60B,EAAuBC,EAC3B,MAAMhgD,IAA+D,OAAhD+/C,EAAwB9D,EAAeiD,WAAgB,EAASa,EAAsB91D,QAAU,GAAK,EACpH80D,EAAgB/zB,EAAWhrB,GACjC,GAAI++C,EAEF,MAAO,CACL/lE,KAAM,CACJiR,MAAO+V,EACP8+C,UAAWgB,GAEbzD,MAAO,CACLl+C,UAAW4gD,IAOjB,IAAIE,EAAgJ,OAA9He,EAAwBF,EAAc3/D,OAAO0lB,GAAKA,EAAEi5C,UAAU,IAAM,GAAG1nB,KAAK,CAAC5oD,EAAGC,IAAMD,EAAEswE,UAAU,GAAKrwE,EAAEqwE,UAAU,IAAI,SAAc,EAASkB,EAAsB7hD,UAG1L,IAAK8gD,EACH,OAAQQ,GACN,IAAK,UACH,CACE,IAAIQ,EACJ,MAAM9hD,EASmJ,OATtI8hD,EAAyBH,EAAc3/D,OAAO0lB,IAC/D,GAAIg6C,EAA8B,CAChC,MAAMK,EAAkB,YAAYr6C,EAAE1H,WACtC,OAAO+hD,IAAoBP,GAGP,MAApBO,EAEF,OAAO,IACNpvE,IAAI+0B,GAAK,CAACA,EAAE1H,UAAW0H,EAAEi5C,UAAU3+D,OAAOi9B,GAAYA,EAAW,GAAGpuC,OAAO,CAACi8C,EAAK7N,IAAa6N,EAAM7N,EAAU,KAAKga,KAAK,CAAC5oD,EAAGC,IAAMD,EAAE,GAAKC,EAAE,IAAI,SAAc,EAASwxE,EAAuB,GAC5L9hD,IACF8gD,EAAiB9gD,GAEnB,MAEJ,IAAK,mBACH8gD,EAAiB3C,EAIvB,GAAIn+C,IAAc8gD,EAChB,MAAO,CACL5C,MAAO,CACLl+C,UAAW8gD,IAKnB,MAAO,MAKb,SAASkB,EAAe/iC,EAAUkC,GAChC,MAAO,CACL9nB,IAAK4lB,EAAS5lB,IAAM8nB,EAAKV,OACzB8F,MAAOtH,EAASsH,MAAQpF,EAAKX,MAC7BlnB,OAAQ2lB,EAAS3lB,OAAS6nB,EAAKV,OAC/B95B,KAAMs4B,EAASt4B,KAAOw6B,EAAKX,OAG/B,SAASyhC,EAAsBhjC,GAC7B,OAAO,IAAM7xB,KAAK2/B,GAAQ9N,EAAS8N,IAAS,GAO9C,MAAMm1B,EAAO,SAAU7uE,GAIrB,YAHgB,IAAZA,IACFA,EAAU,IAEL,CACL0L,KAAM,OACN1L,UACA,SAASiJ,GACP,MAAM,MACJuxC,GACEvxC,GACE,SACJikB,EAAW,qBACR6/C,GACD,YAAS/sE,EAASiJ,GACtB,OAAQikB,GACN,IAAK,kBACH,CACE,MAIM8kB,EAAU28B,QAJO5D,EAAe9hE,EAAO,IACxC8jE,EACH9B,eAAgB,cAEuBzwB,EAAMnH,WAC/C,MAAO,CACL7rC,KAAM,CACJsnE,uBAAwB98B,EACxB+8B,gBAAiBH,EAAsB58B,KAI/C,IAAK,UACH,CACE,MAIMA,EAAU28B,QAJO5D,EAAe9hE,EAAO,IACxC8jE,EACH7B,aAAa,IAE0B1wB,EAAMlH,UAC/C,MAAO,CACL9rC,KAAM,CACJwnE,eAAgBh9B,EAChBi9B,QAASL,EAAsB58B,KAIvC,QAEI,MAAO,OAOnB,SAASk9B,EAAgB10B,GACvB,MAAM20B,EAAO,eAAO30B,EAAMl7C,IAAIwuC,GAAQA,EAAKx6B,OACrC87D,EAAO,eAAO50B,EAAMl7C,IAAIwuC,GAAQA,EAAK9nB,MAG3C,MAAO,CACLgnB,EAAGmiC,EACHliC,EAAGmiC,EACHjiC,MALW,eAAOqN,EAAMl7C,IAAIwuC,GAAQA,EAAKoF,QAK3Bi8B,EACd/hC,OALW,eAAOoN,EAAMl7C,IAAIwuC,GAAQA,EAAK7nB,SAK1BmpD,GAuBnB,MAAMpzD,EAAS,SAAUhc,GAIvB,YAHgB,IAAZA,IACFA,EAAU,IAEL,CACL0L,KAAM,SACN1L,UACA,SAASiJ,GACP,MAAM,UACJ0jB,EAAS,SACTiB,EAAQ,MACR4sB,EAAK,SACLtI,EAAQ,SACRhlB,GACEjkB,GAIE,QACJyyC,EAAU,EAAC,EACX1O,EAAC,EACDC,GACE,YAASjtC,EAASiJ,GAChBomE,EAAoB/xE,MAAM+wB,WAAwC,MAA3B6jB,EAASuB,oBAAyB,EAASvB,EAASuB,eAAe7lB,EAASylB,aAAgB,IACnIi8B,EA5CZ,SAAwB90B,GACtB,MAAM+0B,EAAc/0B,EAAMl8B,QAAQsnC,KAAK,CAAC5oD,EAAGC,IAAMD,EAAEiwC,EAAIhwC,EAAEgwC,GACnDuiC,EAAS,GACf,IAAIC,EAAW,KACf,IAAK,IAAIrzB,EAAI,EAAGA,EAAImzB,EAAY7yE,OAAQ0/C,IAAK,CAC3C,MAAMtO,EAAOyhC,EAAYnzB,IACpBqzB,GAAY3hC,EAAKb,EAAIwiC,EAASxiC,EAAIwiC,EAASriC,OAAS,EACvDoiC,EAAO3gE,KAAK,CAACi/B,IAEb0hC,EAAOA,EAAO9yE,OAAS,GAAGmS,KAAKi/B,GAEjC2hC,EAAW3hC,EAEb,OAAO0hC,EAAOlwE,IAAIwuC,GAAQ,YAAiBohC,EAAgBphC,KA+BnC4hC,CAAeL,GAC7BM,EAAW,YAAiBT,EAAgBG,IAC5ClE,EAAgB,YAAiBzvB,GAsDvC,MAAMk0B,QAAmB19B,EAASq4B,gBAAgB,CAChDl3B,UAAW,CACThgC,sBAvDJ,WAEE,GAA2B,IAAvBi8D,EAAY5yE,QAAgB4yE,EAAY,GAAGh8D,KAAOg8D,EAAY,GAAGp8B,OAAc,MAALlG,GAAkB,MAALC,EAEzF,OAAOqiC,EAAY98D,KAAKs7B,GAAQd,EAAIc,EAAKx6B,KAAO63D,EAAc73D,MAAQ05B,EAAIc,EAAKoF,MAAQi4B,EAAcj4B,OAASjG,EAAIa,EAAK9nB,IAAMmlD,EAAcnlD,KAAOinB,EAAIa,EAAK7nB,OAASklD,EAAcllD,SAAW0pD,EAI/L,GAAIL,EAAY5yE,QAAU,EAAG,CAC3B,GAA+B,MAA3B,YAAYiwB,GAAoB,CAClC,MAAMkjD,EAAYP,EAAY,GACxBQ,EAAWR,EAAYA,EAAY5yE,OAAS,GAC5CqzE,EAA+B,QAAvB,YAAQpjD,GAChB3G,EAAM6pD,EAAU7pD,IAChBC,EAAS6pD,EAAS7pD,OAClB3S,EAAOy8D,EAAQF,EAAUv8D,KAAOw8D,EAASx8D,KACzC4/B,EAAQ68B,EAAQF,EAAU38B,MAAQ48B,EAAS58B,MAGjD,MAAO,CACLltB,MACAC,SACA3S,OACA4/B,QACA/F,MAPY+F,EAAQ5/B,EAQpB85B,OAPannB,EAASD,EAQtBgnB,EAAG15B,EACH25B,EAAGjnB,GAGP,MAAMgqD,EAAoC,SAAvB,YAAQrjD,GACrBsjD,EAAW,eAAOX,EAAYhwE,IAAIwuC,GAAQA,EAAKoF,QAC/Cg9B,EAAU,eAAOZ,EAAYhwE,IAAIwuC,GAAQA,EAAKx6B,OAC9C68D,EAAeb,EAAY3gE,OAAOm/B,GAAQkiC,EAAaliC,EAAKx6B,OAAS48D,EAAUpiC,EAAKoF,QAAU+8B,GAC9FjqD,EAAMmqD,EAAa,GAAGnqD,IACtBC,EAASkqD,EAAaA,EAAazzE,OAAS,GAAGupB,OAKrD,MAAO,CACLD,MACAC,SACA3S,KAPW48D,EAQXh9B,MAPY+8B,EAQZ9iC,MARY8iC,EADDC,EAUX9iC,OAPannB,EAASD,EAQtBgnB,EAXWkjC,EAYXjjC,EAAGjnB,GAGP,OAAO2pD,IAMPr8B,SAAU1lB,EAAS0lB,SACnBpmB,aAEF,OAAIstB,EAAMnH,UAAUrG,IAAM4iC,EAAWv8B,UAAUrG,GAAKwN,EAAMnH,UAAUpG,IAAM2iC,EAAWv8B,UAAUpG,GAAKuN,EAAMnH,UAAUlG,QAAUyiC,EAAWv8B,UAAUlG,OAASqN,EAAMnH,UAAUjG,SAAWwiC,EAAWv8B,UAAUjG,OACnM,CACLy9B,MAAO,CACLrwB,MAAOo1B,IAIN,MAuDb,MAAMthD,EAAS,SAAUtuB,GAIvB,YAHgB,IAAZA,IACFA,EAAU,GAEL,CACL0L,KAAM,SACN1L,UACA,SAASiJ,GACP,IAAImnE,EAAuBzC,EAC3B,MAAM,EACJ3gC,EAAC,EACDC,EAAC,UACDtgB,EAAS,eACT89C,GACExhE,EACEonE,QA9DZlK,eAAoCl9D,EAAOjJ,GACzC,MAAM,UACJ2sB,EAAS,SACTulB,EAAQ,SACRtkB,GACE3kB,EACEwxC,QAA+B,MAAlBvI,EAASwB,WAAgB,EAASxB,EAASwB,MAAM9lB,EAAS0lB,WACvEoG,EAAO,YAAQ/sB,GACf+tB,EAAY,YAAa/tB,GACzBs9C,EAAwC,MAA3B,YAAYt9C,GACzB2jD,EAAgB,CAAC,OAAQ,OAAOhyE,SAASo7C,IAAS,EAAI,EACtD62B,EAAiB91B,GAAOwvB,GAAc,EAAI,EAC1CuG,EAAW,YAASxwE,EAASiJ,GAGnC,IAAI,SACFg7D,EAAQ,UACR4I,EAAS,cACTlyB,GACsB,iBAAb61B,EAAwB,CACjCvM,SAAUuM,EACV3D,UAAW,EACXlyB,cAAe,MACb,CACFspB,SAAUuM,EAASvM,UAAY,EAC/B4I,UAAW2D,EAAS3D,WAAa,EACjClyB,cAAe61B,EAAS71B,eAK1B,OAHID,GAAsC,iBAAlBC,IACtBkyB,EAA0B,QAAdnyB,GAAuC,EAAjBC,EAAqBA,GAElDsvB,EAAa,CAClBj9B,EAAG6/B,EAAY0D,EACftjC,EAAGg3B,EAAWqM,GACZ,CACFtjC,EAAGi3B,EAAWqM,EACdrjC,EAAG4/B,EAAY0D,GA0BYE,CAAqBxnE,EAAOjJ,GAIrD,OAAI2sB,KAAkE,OAAlDyjD,EAAwB3F,EAAen8C,aAAkB,EAAS8hD,EAAsBzjD,YAAgE,OAAjDghD,EAAwBlD,EAAec,QAAkBoC,EAAsBpB,gBACjM,GAEF,CACLv/B,EAAGA,EAAIqjC,EAAWrjC,EAClBC,EAAGA,EAAIojC,EAAWpjC,EAClBzlC,KAAM,IACD6oE,EACH1jD,iBAYJ0E,EAAQ,SAAUrxB,GAItB,YAHgB,IAAZA,IACFA,EAAU,IAEL,CACL0L,KAAM,QACN1L,UACA,SAASiJ,GACP,MAAM,EACJ+jC,EAAC,EACDC,EAAC,UACDtgB,GACE1jB,GAEFg7D,SAAU4J,GAAgB,EAC1BhB,UAAWiB,GAAiB,EAAK,QACjC4C,EAAU,CACRvgE,GAAIqB,IACF,IAAI,EACFw7B,EAAC,EACDC,GACEz7B,EACJ,MAAO,CACLw7B,IACAC,UAIH8/B,GACD,YAAS/sE,EAASiJ,GAChBohE,EAAS,CACbr9B,IACAC,KAEIrB,QAAiBm/B,EAAe9hE,EAAO8jE,GACvCF,EAAY,YAAY,YAAQlgD,IAChCs3C,EAAW,YAAgB4I,GACjC,IAAI8D,EAAgBtG,EAAOpG,GACvB2M,EAAiBvG,EAAOwC,GAC5B,GAAIgB,EAAe,CACjB,MACMgD,EAAuB,MAAb5M,EAAmB,SAAW,QACxCp3B,EAAM8jC,EAAgB/kC,EAFC,MAAbq4B,EAAmB,MAAQ,QAGrClwD,EAAM48D,EAAgB/kC,EAASilC,GACrCF,EAAgB,YAAM9jC,EAAK8jC,EAAe58D,GAE5C,GAAI+5D,EAAgB,CAClB,MACM+C,EAAwB,MAAdhE,EAAoB,SAAW,QACzChgC,EAAM+jC,EAAiBhlC,EAFC,MAAdihC,EAAoB,MAAQ,QAGtC94D,EAAM68D,EAAiBhlC,EAASilC,GACtCD,EAAiB,YAAM/jC,EAAK+jC,EAAgB78D,GAE9C,MAAM+8D,EAAgBJ,EAAQvgE,GAAG,IAC5BlH,EACH,CAACg7D,GAAW0M,EACZ,CAAC9D,GAAY+D,IAEf,MAAO,IACFE,EACHtpE,KAAM,CACJwlC,EAAG8jC,EAAc9jC,EAAIA,EACrBC,EAAG6jC,EAAc7jC,EAAIA,EACrB8jC,QAAS,CACP,CAAC9M,GAAW4J,EACZ,CAAChB,GAAYiB,QAUnBkD,EAAa,SAAUhxE,GAI3B,YAHgB,IAAZA,IACFA,EAAU,IAEL,CACLA,UACA,GAAGiJ,GACD,MAAM,EACJ+jC,EAAC,EACDC,EAAC,UACDtgB,EAAS,MACT6tB,EAAK,eACLiwB,GACExhE,GACE,OACJqlB,EAAS,EACT21C,SAAU4J,GAAgB,EAC1BhB,UAAWiB,GAAiB,GAC1B,YAAS9tE,EAASiJ,GAChBohE,EAAS,CACbr9B,IACAC,KAEI4/B,EAAY,YAAYlgD,GACxBs3C,EAAW,YAAgB4I,GACjC,IAAI8D,EAAgBtG,EAAOpG,GACvB2M,EAAiBvG,EAAOwC,GAC5B,MAAMoE,EAAY,YAAS3iD,EAAQrlB,GAC7BioE,EAAsC,iBAAdD,EAAyB,CACrDhN,SAAUgN,EACVpE,UAAW,GACT,CACF5I,SAAU,EACV4I,UAAW,KACRoE,GAEL,GAAIpD,EAAe,CACjB,MAAMsD,EAAmB,MAAblN,EAAmB,SAAW,QACpCmN,EAAW52B,EAAMnH,UAAU4wB,GAAYzpB,EAAMlH,SAAS69B,GAAOD,EAAejN,SAC5EoN,EAAW72B,EAAMnH,UAAU4wB,GAAYzpB,EAAMnH,UAAU89B,GAAOD,EAAejN,SAC/E0M,EAAgBS,EAClBT,EAAgBS,EACPT,EAAgBU,IACzBV,EAAgBU,GAGpB,GAAIvD,EAAgB,CAClB,IAAIsC,EAAuBkB,EAC3B,MAAMH,EAAmB,MAAblN,EAAmB,QAAU,SACnCsN,EAAe,CAAC,MAAO,QAAQjzE,SAAS,YAAQquB,IAChDykD,EAAW52B,EAAMnH,UAAUw5B,GAAaryB,EAAMlH,SAAS69B,IAAQI,IAAmE,OAAlDnB,EAAwB3F,EAAen8C,aAAkB,EAAS8hD,EAAsBvD,KAAmB,IAAM0E,EAAe,EAAIL,EAAerE,WACnOwE,EAAW72B,EAAMnH,UAAUw5B,GAAaryB,EAAMnH,UAAU89B,IAAQI,EAAe,GAAyD,OAAnDD,EAAyB7G,EAAen8C,aAAkB,EAASgjD,EAAuBzE,KAAe,IAAM0E,EAAeL,EAAerE,UAAY,GAChP+D,EAAiBQ,EACnBR,EAAiBQ,EACRR,EAAiBS,IAC1BT,EAAiBS,GAGrB,MAAO,CACL,CAACpN,GAAW0M,EACZ,CAAC9D,GAAY+D,MAYf35D,EAAO,SAAUjX,GAIrB,YAHgB,IAAZA,IACFA,EAAU,IAEL,CACL0L,KAAM,OACN1L,UACA,SAASiJ,GACP,IAAIuoE,EAAuBC,EAC3B,MAAM,UACJ9kD,EAAS,MACT6tB,EAAK,SACLtI,EAAQ,SACRtkB,GACE3kB,GACE,MACJyd,EAAQ,YACLqmD,GACD,YAAS/sE,EAASiJ,GAChB2iC,QAAiBm/B,EAAe9hE,EAAO8jE,GACvCrzB,EAAO,YAAQ/sB,GACf+tB,EAAY,YAAa/tB,GACzB8+C,EAAqC,MAA3B,YAAY9+C,IACtB,MACJwgB,EAAK,OACLC,GACEoN,EAAMlH,SACV,IAAIo+B,EACAC,EACS,QAATj4B,GAA2B,WAATA,GACpBg4B,EAAah4B,EACbi4B,EAAYj3B,WAAyC,MAAlBxI,EAASwB,WAAgB,EAASxB,EAASwB,MAAM9lB,EAAS0lB,WAAc,QAAU,OAAS,OAAS,UAEvIq+B,EAAYj4B,EACZg4B,EAA2B,QAAdh3B,EAAsB,MAAQ,UAE7C,MAAMk3B,EAAwBxkC,EAASxB,EAAS5lB,IAAM4lB,EAAS3lB,OACzD4rD,EAAuB1kC,EAAQvB,EAASt4B,KAAOs4B,EAASsH,MACxD4+B,EAA0B,YAAI1kC,EAASxB,EAAS8lC,GAAaE,GAC7DG,EAAyB,YAAI5kC,EAAQvB,EAAS+lC,GAAYE,GAC1DG,GAAW/oE,EAAMwhE,eAAep5C,MACtC,IAAIg0C,EAAkByM,EAClBG,EAAiBF,EAOrB,GAN4D,OAAvDP,EAAwBvoE,EAAMwhE,eAAep5C,QAAkBmgD,EAAsBT,QAAQ/jC,IAChGilC,EAAiBJ,GAE0C,OAAxDJ,EAAyBxoE,EAAMwhE,eAAep5C,QAAkBogD,EAAuBV,QAAQ9jC,IAClGo4B,EAAkBuM,GAEhBI,IAAYt3B,EAAW,CACzB,MAAMw3B,EAAO,YAAItmC,EAASt4B,KAAM,GAC1B6+D,EAAO,YAAIvmC,EAASsH,MAAO,GAC3Bk/B,EAAO,YAAIxmC,EAAS5lB,IAAK,GACzBqsD,EAAO,YAAIzmC,EAAS3lB,OAAQ,GAC9BwlD,EACFwG,EAAiB9kC,EAAQ,GAAc,IAAT+kC,GAAuB,IAATC,EAAaD,EAAOC,EAAO,YAAIvmC,EAASt4B,KAAMs4B,EAASsH,QAEnGmyB,EAAkBj4B,EAAS,GAAc,IAATglC,GAAuB,IAATC,EAAaD,EAAOC,EAAO,YAAIzmC,EAAS5lB,IAAK4lB,EAAS3lB,eAGlGS,EAAM,IACPzd,EACHgpE,iBACA5M,oBAEF,MAAMiN,QAAuBpgC,EAASkB,cAAcxlB,EAAS0lB,UAC7D,OAAInG,IAAUmlC,EAAenlC,OAASC,IAAWklC,EAAellC,OACvD,CACLy9B,MAAO,CACLrwB,OAAO,IAIN,O,kCC3gCb,wKAcA,MAAMt3C,EAAQ,CACZgnD,SAAU,YAAS,KAAmB,GACtCoI,WAAY,YAAS,KAAmB,GACxCigB,WAAY,YAAS,KAAmB,GACxClzD,KAAM,YAAS,KAAmB,GAClC8H,MAAO,YAAS,KAAmB,GACnCqrD,MAAO,YAAS,KAAmB,GACnCC,iBAAkB,YAAS,KAAmB,GAC9CC,SAAU,YAAS,KAAmB,GACtCC,WAAY,YAAS,KAA0B,GAC/CC,MAAO,YAAS,KAAmB,GAEnCnzD,aAAc,YAAS,KAA0B,GACjDugC,QAAS,YAAS,KAAmB,GACrC6yB,WAAY,YAAS,KACrBnzD,aAAc,YAAS,MAMnBozD,EAAqB,YAAO,CAChC9zD,OAAQ,CAAC,KACT,UACE,MAAO,CACLE,WAAY,IAAMvY,OAKtBiH,cAAc,EACd1K,QACAsL,SAAU,CACRukE,cAAa,KACJ,EAGT,eACE,MAAM,WACJJ,GACEhsE,KACJ,MAAsB,KAAfgsE,GAA2BA,GAEpC,iBACE,IAAI,aACFlzD,GACE9Y,KAEJ,OADA8Y,EAAgC,KAAjBA,GAA6BA,GACrC9Y,KAAK2Y,WAAoBG,GAElC,iBACE,MAAM,aACJF,GACE5Y,KACJ,MAAO,CAACA,KAAK6Y,eAAiB,wBAA0B,IAAqB,IAAjBD,EAAwB,mBAAqBA,EAAe,oBAAoB5Y,KAAKgsE,WAAe,IAAIhkE,OAAO,MAE7K,gBACE,MAAM,eACJ6Q,GACE7Y,KACJ,OAAO6Y,IAAmB,YAAUA,GAAkB,CACpDimD,UAAWjmD,GACT,IAEN,eACE,IAAI,MACFgzD,EAAK,aACL9yD,EAAY,uBACZszD,EAAsB,oBACtBC,EAAmB,WACnBJ,EAAU,aACVK,GACE,YAAgBvsE,MAEpB,OADA6rE,EAAQ7rE,KAAKosE,cAAgBP,EAAQA,GAAS7rE,KAAKqe,cAActoB,OAAS,IAAMw2E,EACzE,CAEPL,EAEA,CACE,gBAAiBlsE,KAAKq5C,QACtB,cAAewyB,EACf,aAAc7rE,KAAK0Y,KACnB,iBAAkB1Y,KAAKujD,SACvB,mBAAoBvjD,KAAK2rD,WACzB,WAAY3rD,KAAKisE,MAEjB,YAAajsE,KAAK+rE,SAClB,gBAAiB/rE,KAAKwgB,MACtB,sBAAuBxgB,KAAK4rE,WAC5B,6BAA8B5rE,KAAK8rE,kBAClC/yD,EAAe,GAAG/Y,KAAK0Y,KAAO,KAAO,WAAWK,IAAiB,GAEpEuzD,EAEAD,IAEF,aACE,MACEhuD,cAAe7N,EAAK,cACpBmN,EACAJ,eAAgBnB,EAAM,qBACtBowD,EAAoB,aACpBD,GACE,YAAgBvsE,MACdysE,EAAYzsE,KAAKosE,cAAgB,GAAK,CAC1C,YAAa,YAASG,GACtB,gBAAiB,YAASnwD,EAAOrmB,QAEjC,mBAAoBiK,KAAKgZ,QAAQ,qBAAuBhZ,KAAKiV,MAAMktD,QAAUniE,KAAKwiE,UAAY,MAGhG,MAAO,CAGL,gBAJehyD,GAASmN,GAAiBA,EAAc5nB,OAASya,EAAMza,OAAS,YAAS4nB,EAAc5nB,QAAU,QAM7GiK,KAAKgZ,QAERhX,GAAIhC,KAAK25C,SACT1gC,KAAMjZ,KAAKgZ,QAAQC,MAAQ,WACxBwzD,KACAD,KAIT,OAAOtzD,GACL,MAAM,eACJyjD,EAAc,cACd+P,EAAa,eACbC,EAAc,YACd3tD,EAAW,YACX4tD,EAAW,YACXC,GACE,YAAgB7sE,MACdg8B,EAAW,GACbh8B,KAAKosE,cACPpwC,EAAS9zB,KAAKlI,KAAKsZ,kBAGnB0iB,EAAS9zB,KAAKwkE,EAAgBA,IAAkB,MAGhD1wC,EAAS9zB,KAAKykE,EAAiBA,IAAmB,MAGlD3wC,EAAS9zB,KAAK8W,EAAcA,IAAgB,MAG5Cgd,EAAS9zB,KAAK0kE,EAAcA,IAAgB,MAG5C5wC,EAAS9zB,KAAK2kE,EAAcA,IAAgB,OAI9C,MAAMC,EAAS5zD,EAAE,QAAS,CACxBnQ,YAAa,gBACbvC,MAAOxG,KAAK+sE,aACZtmE,MAAOzG,KAAKgtE,WACZxxE,IAAK,WACJwgC,EAASh0B,OAAO,MAGnB,OAAO20D,EAAe5mE,OAAS,EAAImjB,EAAE,MAAO,CAC1C1S,MAAOm2D,EACPluD,MAAOzO,KAAKitE,cACZzxE,IAAK,QACJ,CAACsxE,IAAWA,M,qBCrLnB,IAAII,EAAY,EAAQ,QAiBxBt3E,EAAOC,QANP,SAAmBC,EAAOgtB,EAAO+V,GAC/B,IAAI9iC,EAASD,EAAMC,OAEnB,OADA8iC,OAAc7iC,IAAR6iC,EAAoB9iC,EAAS8iC,GAC1B/V,GAAS+V,GAAO9iC,EAAUD,EAAQo3E,EAAUp3E,EAAOgtB,EAAO+V,K,qBCdrE,IAAIn+B,EAAS,EAAQ,QACjB6jB,EAAe,EAAQ,QAgB3B3oB,EAAOC,QAJP,SAAmBuB,GACjB,OAAOmnB,EAAannB,IAVT,gBAUmBsD,EAAOtD,K,qBCdvC,IAAIw/C,EAAa,EAAQ,QA4BzBhhD,EAAOC,QANP,SAAaM,EAAMa,EAAG6/C,GAGpB,OAFA7/C,EAAI6/C,OAAQ7gD,EAAYgB,EACxBA,EAAKb,GAAa,MAALa,EAAab,EAAKJ,OAASiB,EACjC4/C,EAAWzgD,EAtBA,SAsBqBH,OAAWA,OAAWA,OAAWA,EAAWgB,K,sOCNrF,MAAM,EAAQ,YAAsB,YAAS,IACxC,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACD,KAKEm2E,EAA0B,YAAO,CACrCpoE,KAAM,IAGNsT,OAAQ,CAER5R,EAAA,EAAY,IAAkBzE,EAAA,EAAS,IAEvC,IAAY,IAAoB,IAAc,IAAY,IAAY,IAGtE,IAAc,KACdzF,MAAK,I,yBC3CP,MAAM,WACJ2vE,GACEiB,EAAW9zE,QAAQkD,MA+BvB,MAAMoJ,EA9BO,CACXZ,KAAM,cACN8B,WAAY,CACVsmE,cAEFlmE,cAAc,EACd1K,MAAO,CACL2vE,aACA9vD,OAAQ,CACNvW,KAAMlP,MACNoP,UAAU,EACVC,QAAS,MAEX8S,aAAc,CACZjT,KAAMC,QACNE,SAAS,EACTD,UAAU,IAGd8B,SAAU,CACR,oBACE,OAAO7H,KAAK8Y,aAAe,0BAA4B,MAEzD,kBACE,MAAO,CAAC,WAAY9Y,KAAKksE,WAAYlsE,KAAKotE,sBAa9C,MAeMnnE,EAAoB,IACxB,CAAEC,OApBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAuC,OAAjB0C,EAAIzC,MAAMC,IAAIH,GAAa,eAAe2C,EAAIvC,GAAGuC,EAAIe,GAAG,CAACpD,MAAM,CAAC,cAAcqC,EAAIukE,gBAAgB,OAASvkE,EAAIsT,QAAQ9S,YAAYR,EAAIS,GAAG,CAACT,EAAI4E,GAAIvG,OAAOhM,KAAK2N,EAAI8d,eAAe,SAASjT,GAAM,MAAO,CAACnY,IAAImY,EAAKnK,GAAG,SAASwuB,GAAO,MAAO,CAAClvB,EAAInC,GAAGgN,EAAK,KAAK,KAAKqkB,UAAa,MAAK,IAAO,eAAelvB,EAAI6F,QAAO,GAAO7F,EAAIpC,cAoBnXE,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,mBCtEf,IAAIwiC,EAAU,OAed5iC,EAAOC,QANP,SAAqBy3E,GACnB,IAAIp2E,EAAS,IAAIo2E,EAAOrxD,YAAYqxD,EAAOtrD,OAAQwW,EAAQQ,KAAKs0C,IAEhE,OADAp2E,EAAOijB,UAAYmzD,EAAOnzD,UACnBjjB,I,kCCbT,6DAoDA,MAAMyO,EA/CO,CACXZ,KAAM,gBACN8B,WAAY,CACVsD,OAAA,KAEF5N,MAAO,CACL4jD,WAAY,CACVt6C,KAAMC,QACNE,SAAS,EACTD,UAAU,GAEZy7C,UAAW,CACT37C,KAAMC,QACNE,SAAS,EACTD,UAAU,GAEZ+3C,gBAAiB,CACfj4C,KAAMC,QACNC,UAAU,EACVC,SAAS,IAGb6B,SAAU,CACR,iBACE,OAAI7H,KAAK89C,gBACA,GAEF,0BAGXr1C,QAAS,CACP,kBACEzI,KAAKoI,MAAM,UAAWpI,KAAKmgD,aAE7B,UAAUx3C,GACR,MAAM,KACJqe,GACEre,EACAqe,IAAS,KAASA,IAAS,MAC7B,YAAUre,GACV3I,KAAKutE,sBAiBX,MAeMtnE,EAAoB,IACxB,CAAEC,OAvBe,WAAa,IAAI4C,EAAI9I,KAASmG,EAAG2C,EAAI1C,eAAmBE,EAAGwC,EAAIzC,MAAMC,IAAIH,EAAG,OAAOG,EAAG,KAAK,CAACyC,YAAY,uBAAuBtC,MAAM,CAAC,KAAO,SAAS,SAAWqC,EAAI04C,UAAY,GAAK,EAAE,gBAAgB14C,EAAIq3C,YAAYj3C,GAAG,CAAC,MAAQJ,EAAIykE,gBAAgB,QAAUzkE,EAAI4f,YAAY,CAACpiB,EAAG,OAAO,CAACyC,YAAY,gCAAgC,CAACzC,EAAG,UAAU,CAACE,MAAM,CAC5W,kCACA,CAAE,gBAAiBsC,EAAIq3C,YACvBr3C,EAAI0kE,gBAAiB/mE,MAAM,CAAC,KAAO,qBAAqB,cAAc,4BAA4BqC,EAAIa,GAAG,KAAKrD,EAAG,OAAO,CAACyC,YAAY,qCAAqC,CAACD,EAAInC,GAAG,YAAY,IAAI,MAoB5KC,gBAnBA,SAGE5Q,EAkB5B2P,OAhBuB3P,GAIc,OAFLA,GAkBhC,OACAA,OACAA,OACAA,GAGW,O,qBC5DfJ,EAAOC,QArBP,SAAmBC,EAAOgtB,EAAO+V,GAC/B,IAAI/mB,GAAS,EACT/b,EAASD,EAAMC,OAEf+sB,EAAQ,IACVA,GAASA,EAAQ/sB,EAAS,EAAKA,EAAS+sB,IAE1C+V,EAAMA,EAAM9iC,EAASA,EAAS8iC,GACpB,IACRA,GAAO9iC,GAETA,EAAS+sB,EAAQ+V,EAAM,EAAMA,EAAM/V,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAI5rB,EAASP,MAAMZ,KACV+b,EAAQ/b,GACfmB,EAAO4a,GAAShc,EAAMgc,EAAQgR,GAEhC,OAAO5rB,K","file":"pages.projects.analytics.code_reviews.index.efd41c12.chunk.js","sourcesContent":["/**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\nfunction head(array) {\n  return (array && array.length) ? array[0] : undefined;\n}\n\nmodule.exports = head;\n","var baseClone = require('./_baseClone'),\n    baseIteratee = require('./_baseIteratee');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1;\n\n/**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n *   { 'user': 'barney', 'age': 36, 'active': true },\n *   { 'user': 'fred',   'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n *     return func.test(string);\n *   };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\nfunction iteratee(func) {\n  return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n}\n\nmodule.exports = iteratee;\n","/**\n * Adds two numbers together\n * @param {Number} a\n * @param {Number} b\n */\nconst addition = (a, b) => a + b;\n\n/**\n * Returns the sum of all arguments\n * @param  {...Number} numbers\n */\nconst sum = function () {\n  for (var _len = arguments.length, numbers = new Array(_len), _key = 0; _key < _len; _key++) {\n    numbers[_key] = arguments[_key];\n  }\n  return numbers.reduce(addition);\n}; // eslint-disable-line unicorn/no-array-callback-reference\n\n/**\n * Returns the average of all arguments\n * @param  {...Number} numbers\n */\nconst average = function () {\n  return sum(...arguments) / arguments.length;\n};\n\n/**\n * Returns the modulo of n for a divisor.\n *\n * Maps the integer n into the range [0, divisor) when the divisor is positive,\n * and (divisor, 0] when the divisor is negative.\n *\n * This is useful when indexing into an array, to ensure you always stay within\n * the array bounds.\n *\n * See https://2ality.com/2019/08/remainder-vs-modulo.html.\n *\n * @param {number} n The number to mod.\n * @param {number} divisor The divisor (e.g., the length of an array).\n * @returns {number}\n */\nfunction modulo(n, divisor) {\n  const result = (n % divisor + divisor) % divisor;\n  // Never return -0.\n  return result === 0 ? 0 : result;\n}\n\n/**\n * Convert number to engineering format, using SI suffix\n * @param {Number|String} value - Number or Number-convertible String\n * @param {Number} precision\n * @return {String} number, possibly with a suffix\n */\nconst engineeringNotation = function (value) {\n  let precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n  const invalidValues = [NaN, Infinity, -Infinity];\n  const num = Number(value);\n  if (invalidValues.includes(num) || invalidValues.includes(Number(precision))) {\n    return num.toString();\n  }\n  const allYourBase = {\n    '-24': 'y',\n    '-21': 'z',\n    '-18': 'a',\n    '-15': 'f',\n    '-12': 'p',\n    '-9': 'n',\n    '-6': 'μ',\n    '-3': 'm',\n    0: '',\n    3: 'k',\n    6: 'M',\n    9: 'G',\n    12: 'T',\n    15: 'P',\n    18: 'E',\n    21: 'Z',\n    24: 'Y'\n  };\n  const exponentialNotation = num.toExponential(precision);\n  const power = exponentialNotation.split('e').map(Number)[1] || 0;\n  if (power < -24 || power > 24) {\n    return exponentialNotation;\n  }\n  const scaledPower = 3 * Math.floor(power / 3);\n  const scaledMantissa = (exponentialNotation / 10 ** scaledPower\n  // strip trailing decimals from floating point rounding errors\n  ).toFixed(precision)\n  // strip trailing 0s after a decimal point\n  .replace(/\\.([1-9]*)0+$/, (_, fractionalDigits) => {\n    if (fractionalDigits) {\n      return `.${fractionalDigits}`;\n    }\n    return '';\n  });\n  return `${scaledMantissa}${allYourBase[scaledPower]}`;\n};\n\n/**\n * Formats a number as a locale-based string using `Intl.NumberFormat`.\n *\n * 2333 -> 2,333\n * 232324 -> 232,324\n *\n * @param {Number|string} value - number to be converted\n * @param {{}?} options - options to be passed to\n * `Intl.NumberFormat` such as `unit` and `style`.\n * @param {String|String[]} locales - If set, forces a different\n * language code from the one currently in the document.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat/NumberFormat\n *\n * @returns {String}\n */\nconst formatNumberToLocale = function (value) {\n  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  let locales = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n  if (Number.isNaN(Number(value))) {\n    return value;\n  }\n  return new Intl.NumberFormat(locales, options).format(value);\n};\n\n// Converts a value (string, number, etc.) to a number\n// Taken from bootstrap-vue\nconst toFloat = function (value) {\n  let defaultValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;\n  const float = parseFloat(value);\n  return Number.isNaN(float) ? defaultValue : float;\n};\n\nexport { addition, average, engineeringNotation, formatNumberToLocale, modulo, sum, toFloat };\n","var Stack = require('./_Stack'),\n    arrayEach = require('./_arrayEach'),\n    assignValue = require('./_assignValue'),\n    baseAssign = require('./_baseAssign'),\n    baseAssignIn = require('./_baseAssignIn'),\n    cloneBuffer = require('./_cloneBuffer'),\n    copyArray = require('./_copyArray'),\n    copySymbols = require('./_copySymbols'),\n    copySymbolsIn = require('./_copySymbolsIn'),\n    getAllKeys = require('./_getAllKeys'),\n    getAllKeysIn = require('./_getAllKeysIn'),\n    getTag = require('./_getTag'),\n    initCloneArray = require('./_initCloneArray'),\n    initCloneByTag = require('./_initCloneByTag'),\n    initCloneObject = require('./_initCloneObject'),\n    isArray = require('./isArray'),\n    isBuffer = require('./isBuffer'),\n    isMap = require('./isMap'),\n    isObject = require('./isObject'),\n    isSet = require('./isSet'),\n    keys = require('./keys'),\n    keysIn = require('./keysIn');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_FLAT_FLAG = 2,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n *  1 - Deep clone\n *  2 - Flatten inherited properties\n *  4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n  var result,\n      isDeep = bitmask & CLONE_DEEP_FLAG,\n      isFlat = bitmask & CLONE_FLAT_FLAG,\n      isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n  if (customizer) {\n    result = object ? customizer(value, key, object, stack) : customizer(value);\n  }\n  if (result !== undefined) {\n    return result;\n  }\n  if (!isObject(value)) {\n    return value;\n  }\n  var isArr = isArray(value);\n  if (isArr) {\n    result = initCloneArray(value);\n    if (!isDeep) {\n      return copyArray(value, result);\n    }\n  } else {\n    var tag = getTag(value),\n        isFunc = tag == funcTag || tag == genTag;\n\n    if (isBuffer(value)) {\n      return cloneBuffer(value, isDeep);\n    }\n    if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n      result = (isFlat || isFunc) ? {} : initCloneObject(value);\n      if (!isDeep) {\n        return isFlat\n          ? copySymbolsIn(value, baseAssignIn(result, value))\n          : copySymbols(value, baseAssign(result, value));\n      }\n    } else {\n      if (!cloneableTags[tag]) {\n        return object ? value : {};\n      }\n      result = initCloneByTag(value, tag, isDeep);\n    }\n  }\n  // Check for circular references and return its corresponding clone.\n  stack || (stack = new Stack);\n  var stacked = stack.get(value);\n  if (stacked) {\n    return stacked;\n  }\n  stack.set(value, result);\n\n  if (isSet(value)) {\n    value.forEach(function(subValue) {\n      result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n    });\n  } else if (isMap(value)) {\n    value.forEach(function(subValue, key) {\n      result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n    });\n  }\n\n  var keysFunc = isFull\n    ? (isFlat ? getAllKeysIn : getAllKeys)\n    : (isFlat ? keysIn : keys);\n\n  var props = isArr ? undefined : keysFunc(value);\n  arrayEach(props || value, function(subValue, key) {\n    if (props) {\n      key = subValue;\n      subValue = value[key];\n    }\n    // Recursively populate clone (susceptible to call stack limits).\n    assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n  });\n  return result;\n}\n\nmodule.exports = baseClone;\n","import { newDate } from '~/lib/utils/datetime_utility';\n\n/**\n * This method is to be used with `Array.prototype.sort` function\n * where array contains milestones with `due_date`/`dueDate` and/or\n * `expired` properties.\n * This method sorts given milestone params based on their expiration\n * status by putting expired milestones at the bottom and upcoming\n * milestones at the top of the list.\n *\n * @param {object} milestoneA\n * @param {object} milestoneB\n */\nexport function sortMilestonesByDueDate(milestoneA, milestoneB) {\n  const rawDueDateA = milestoneA.due_date || milestoneA.dueDate;\n  const rawDueDateB = milestoneB.due_date || milestoneB.dueDate;\n  const dueDateA = rawDueDateA ? newDate(rawDueDateA) : null;\n  const dueDateB = rawDueDateB ? newDate(rawDueDateB) : null;\n  const expiredA = milestoneA.expired || Date.now() > dueDateA?.getTime();\n  const expiredB = milestoneB.expired || Date.now() > dueDateB?.getTime();\n\n  // Move all expired milestones to the bottom.\n  if (expiredA) return 1;\n  if (expiredB) return -1;\n\n  // Move milestones without due dates just above expired milestones.\n  if (!dueDateA) return 1;\n  if (!dueDateB) return -1;\n\n  // Sort by due date in ascending order.\n  return dueDateA - dueDateB;\n}\n","var asciiSize = require('./_asciiSize'),\n    hasUnicode = require('./_hasUnicode'),\n    unicodeSize = require('./_unicodeSize');\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n  return hasUnicode(string)\n    ? unicodeSize(string)\n    : asciiSize(string);\n}\n\nmodule.exports = stringSize;\n","import Api, { DEFAULT_PER_PAGE } from '~/api';\nimport axios from '~/lib/utils/axios_utils';\nimport { contentTypeMultipartFormData } from '~/lib/utils/headers';\n\nexport default {\n  ...Api,\n  geoSitePath: '/api/:version/geo_sites/:id',\n  geoSitesPath: '/api/:version/geo_sites',\n  geoSitesStatusPath: '/api/:version/geo_sites/status',\n  ldapGroupsPath: '/api/:version/ldap/:provider/groups.json',\n  subscriptionPath: '/api/:version/namespaces/:id/gitlab_subscription',\n  childEpicPath: '/api/:version/groups/:id/epics',\n  codeReviewAnalyticsPath: '/api/:version/analytics/code_review',\n  groupActivityIssuesPath: '/api/:version/analytics/group_activity/issues_count',\n  groupActivityMergeRequestsPath: '/api/:version/analytics/group_activity/merge_requests_count',\n  groupActivityNewMembersPath: '/api/:version/analytics/group_activity/new_members_count',\n  countriesPath: '/-/countries',\n  countryStatesPath: '/-/country_states',\n  paymentFormPath: '/-/subscriptions/payment_form',\n  filePath: '/api/:version/projects/:id/repository/files/:file_path',\n  validatePaymentMethodPath: '/-/subscriptions/validate_payment_method',\n  vulnerabilityPath: '/api/:version/vulnerabilities/:id',\n  vulnerabilityActionPath: '/api/:version/vulnerabilities/:id/:action',\n  vulnerabilityIssueLinksPath: '/api/:version/vulnerabilities/:id/issue_links',\n  descendantGroupsPath: '/api/:version/groups/:group_id/descendant_groups',\n  projectDeploymentFrequencyAnalyticsPath:\n    '/api/:version/projects/:id/analytics/deployment_frequency',\n  projectGroupsPath: '/api/:version/projects/:id/groups.json',\n  issueMetricImagesPath: '/api/:version/projects/:id/issues/:issue_iid/metric_images',\n  issueMetricSingleImagePath:\n    '/api/:version/projects/:id/issues/:issue_iid/metric_images/:image_id',\n  environmentApprovalPath: '/api/:version/projects/:id/deployments/:deployment_id/approval',\n  protectedEnvironmentsPath: '/api/:version/:entity_type/:id/protected_environments/',\n  mrStatusCheckRetryPath:\n    '/api/:version/projects/:id/merge_requests/:merge_request_iid/status_checks/:external_status_check_id/retry',\n  protectedEnvironmentPath: '/api/:version/:entity_type/:id/protected_environments/:name',\n  aiCompletionsPath: '/api/:version/ai/experimentation/openai/completions',\n  aiEmbeddingsPath: '/api/:version/ai/experimentation/openai/embeddings',\n  aiChatPath: '/api/:version/ai/experimentation/openai/chat/completions',\n  tanukiBotAskPath: '/-/llm/tanuki_bot/ask',\n\n  userSubscription(namespaceId) {\n    const url = Api.buildUrl(this.subscriptionPath).replace(':id', encodeURIComponent(namespaceId));\n\n    return axios.get(url);\n  },\n\n  ldapGroups(query, provider, callback) {\n    const url = Api.buildUrl(this.ldapGroupsPath).replace(':provider', provider);\n    return axios\n      .get(url, {\n        params: {\n          search: query,\n          per_page: DEFAULT_PER_PAGE,\n          active: true,\n        },\n      })\n      .then(({ data }) => {\n        callback(data);\n\n        return data;\n      });\n  },\n\n  createChildEpic({ confidential, groupId, parentEpicId, title }) {\n    const url = Api.buildUrl(this.childEpicPath).replace(':id', encodeURIComponent(groupId));\n\n    return axios.post(url, {\n      parent_id: parentEpicId,\n      confidential,\n      title,\n    });\n  },\n\n  descendantGroups({ groupId, search }) {\n    const url = Api.buildUrl(this.descendantGroupsPath).replace(':group_id', groupId);\n\n    return axios.get(url, {\n      params: {\n        search,\n      },\n    });\n  },\n\n  codeReviewAnalytics(params = {}) {\n    const url = Api.buildUrl(this.codeReviewAnalyticsPath);\n    return axios.get(url, { params });\n  },\n\n  groupActivityMergeRequestsCount(groupPath) {\n    const url = Api.buildUrl(this.groupActivityMergeRequestsPath);\n    return axios.get(url, { params: { group_path: groupPath } });\n  },\n\n  groupActivityIssuesCount(groupPath) {\n    const url = Api.buildUrl(this.groupActivityIssuesPath);\n    return axios.get(url, { params: { group_path: groupPath } });\n  },\n\n  groupActivityNewMembersCount(groupPath) {\n    const url = Api.buildUrl(this.groupActivityNewMembersPath);\n    return axios.get(url, { params: { group_path: groupPath } });\n  },\n\n  fetchCountries() {\n    const url = Api.buildUrl(this.countriesPath);\n    return axios.get(url);\n  },\n\n  fetchStates(country) {\n    const url = Api.buildUrl(this.countryStatesPath);\n    return axios.get(url, { params: { country } });\n  },\n\n  fetchPaymentFormParams(id) {\n    const url = Api.buildUrl(this.paymentFormPath);\n    return axios.get(url, { params: { id } });\n  },\n\n  getFile(id, filePath, params = {}) {\n    const url = Api.buildUrl(this.filePath)\n      .replace(':id', encodeURIComponent(id))\n      .replace(':file_path', encodeURIComponent(filePath));\n\n    return axios.get(url, { params });\n  },\n\n  validatePaymentMethod(id, gitlabUserId) {\n    const url = Api.buildUrl(this.validatePaymentMethodPath);\n    return axios.post(url, { id, gitlab_user_id: gitlabUserId });\n  },\n\n  changeVulnerabilityState(id, state) {\n    const url = Api.buildUrl(this.vulnerabilityActionPath)\n      .replace(':id', id)\n      .replace(':action', state);\n\n    return axios.post(url);\n  },\n\n  getGeoSites() {\n    const url = Api.buildUrl(this.geoSitesPath);\n    return axios.get(url);\n  },\n\n  getGeoSitesStatus() {\n    const url = Api.buildUrl(this.geoSitesStatusPath);\n    return axios.get(url);\n  },\n\n  createGeoSite(site) {\n    const url = Api.buildUrl(this.geoSitesPath);\n    return axios.post(url, site);\n  },\n\n  updateGeoSite(site) {\n    const url = Api.buildUrl(this.geoSitesPath);\n    return axios.put(`${url}/${site.id}`, site);\n  },\n\n  removeGeoSite(id) {\n    const url = Api.buildUrl(this.geoSitePath).replace(':id', encodeURIComponent(id));\n    return axios.delete(url);\n  },\n\n  deploymentFrequencies(projectId, params = {}) {\n    const url = Api.buildUrl(this.projectDeploymentFrequencyAnalyticsPath).replace(\n      ':id',\n      encodeURIComponent(projectId),\n    );\n\n    return axios.get(url, { params });\n  },\n\n  fetchIssueMetricImages({ issueIid, id }) {\n    const metricImagesUrl = Api.buildUrl(this.issueMetricImagesPath)\n      .replace(':id', encodeURIComponent(id))\n      .replace(':issue_iid', encodeURIComponent(issueIid));\n\n    return axios.get(metricImagesUrl);\n  },\n\n  uploadIssueMetricImage({ issueIid, id, file, url = null, urlText = null }) {\n    const options = { headers: { ...contentTypeMultipartFormData } };\n    const metricImagesUrl = Api.buildUrl(this.issueMetricImagesPath)\n      .replace(':id', encodeURIComponent(id))\n      .replace(':issue_iid', encodeURIComponent(issueIid));\n\n    // Construct multipart form data\n    const formData = new FormData();\n    formData.append('file', file);\n    if (url) {\n      formData.append('url', url);\n    }\n    if (urlText) {\n      formData.append('url_text', urlText);\n    }\n\n    return axios.post(metricImagesUrl, formData, options);\n  },\n\n  updateIssueMetricImage({ issueIid, id, imageId, url = null, urlText = null }) {\n    const metricImagesUrl = Api.buildUrl(this.issueMetricSingleImagePath)\n      .replace(':id', encodeURIComponent(id))\n      .replace(':issue_iid', encodeURIComponent(issueIid))\n      .replace(':image_id', encodeURIComponent(imageId));\n\n    // Construct multipart form data\n    const formData = new FormData();\n    if (url != null) {\n      formData.append('url', url);\n    }\n    if (urlText != null) {\n      formData.append('url_text', urlText);\n    }\n\n    return axios.put(metricImagesUrl, formData);\n  },\n\n  deleteMetricImage({ issueIid, id, imageId }) {\n    const individualMetricImageUrl = Api.buildUrl(this.issueMetricSingleImagePath)\n      .replace(':id', encodeURIComponent(id))\n      .replace(':issue_iid', encodeURIComponent(issueIid))\n      .replace(':image_id', encodeURIComponent(imageId));\n\n    return axios.delete(individualMetricImageUrl);\n  },\n\n  projectGroups(id, options) {\n    const url = Api.buildUrl(this.projectGroupsPath).replace(':id', encodeURIComponent(id));\n\n    return axios\n      .get(url, {\n        params: {\n          ...options,\n        },\n      })\n      .then(({ data }) => {\n        return data;\n      });\n  },\n\n  deploymentApproval({ id, deploymentId, representedAs, approve, comment }) {\n    const url = Api.buildUrl(this.environmentApprovalPath)\n      .replace(':id', encodeURIComponent(id))\n      .replace(':deployment_id', encodeURIComponent(deploymentId));\n\n    return axios.post(url, {\n      status: approve ? 'approved' : 'rejected',\n      represented_as: representedAs,\n      comment,\n    });\n  },\n\n  approveDeployment({ id, deploymentId, representedAs, comment }) {\n    return this.deploymentApproval({ id, deploymentId, representedAs, approve: true, comment });\n  },\n  rejectDeployment({ id, deploymentId, representedAs, comment }) {\n    return this.deploymentApproval({ id, deploymentId, approve: false, representedAs, comment });\n  },\n\n  protectedEnvironments(id, entityType, params = {}) {\n    const url = Api.buildUrl(this.protectedEnvironmentsPath)\n      .replace(':entity_type', encodeURIComponent(entityType))\n      .replace(':id', encodeURIComponent(id));\n    return axios.get(url, { params });\n  },\n\n  createProtectedEnvironment(id, entityType, protectedEnvironment) {\n    const url = Api.buildUrl(this.protectedEnvironmentsPath)\n      .replace(':entity_type', encodeURIComponent(entityType))\n      .replace(':id', encodeURIComponent(id));\n    return axios.post(url, protectedEnvironment);\n  },\n\n  updateProtectedEnvironment(id, entityType, protectedEnvironment) {\n    const url = Api.buildUrl(this.protectedEnvironmentPath)\n      .replace(':entity_type', encodeURIComponent(entityType))\n      .replace(':id', encodeURIComponent(id))\n      .replace(':name', encodeURIComponent(protectedEnvironment.name));\n\n    return axios.put(url, protectedEnvironment);\n  },\n\n  deleteProtectedEnvironment(id, entityType, { name }) {\n    const url = Api.buildUrl(this.protectedEnvironmentPath)\n      .replace(':entity_type', encodeURIComponent(entityType))\n      .replace(':id', encodeURIComponent(id))\n      .replace(':name', encodeURIComponent(name));\n\n    return axios.delete(url);\n  },\n\n  requestAICompletions({ model, prompt, ...rest }) {\n    const url = Api.buildUrl(this.aiCompletionsPath);\n    return axios.post(url, { model, prompt, rest });\n  },\n\n  requestAIEmbeddings({ model, input, ...rest }) {\n    const url = Api.buildUrl(this.aiEmbeddingsPath);\n    return axios.post(url, { model, input, rest });\n  },\n\n  requestAIChat({ model, messages, ...rest }) {\n    const url = Api.buildUrl(this.aiChatPath);\n    return axios.post(url, { model, messages, rest });\n  },\n\n  requestTanukiBotResponse(q) {\n    const url = Api.buildUrl(this.tanukiBotAskPath);\n    return axios.post(url, { q });\n  },\n};\n","import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlButtonGroup',\n  props: {\n    /**\n     * When set, rendered the button group in vertical mode.\n     */\n    vertical: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._g({class:!_vm.vertical ? 'btn-group' : 'btn-group-vertical',attrs:{\"role\":\"group\"}},_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import GlToken from '../token/token';\nimport { stopEvent } from '../../../utils/utils';\nimport GlFilteredSearchTokenSegment from './filtered_search_token_segment';\nimport { termTokenDefinition, match, tokenToOption, INTENT_ACTIVATE_PREVIOUS, TOKEN_CLOSE_SELECTOR, TERM_TOKEN_TYPE } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlFilteredSearchTerm',\n  components: {\n    GlFilteredSearchTokenSegment,\n    GlToken\n  },\n  inject: ['termsAsTokens'],\n  inheritAttrs: false,\n  props: {\n    /**\n     * Tokens available for this filtered search instance.\n     */\n    availableTokens: {\n      type: Array,\n      required: true\n    },\n    /**\n     * Determines if the term is being edited or not.\n     */\n    active: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Current term value.\n     */\n    value: {\n      type: Object,\n      required: false,\n      default: () => ({\n        data: ''\n      })\n    },\n    placeholder: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * HTML attributes to add to the search input.\n     */\n    searchInputAttributes: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    },\n    /**\n     * If this is the last token.\n     */\n    isLastToken: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * The current `value` (tokens) of the ancestor GlFilteredSearch component.\n     */\n    currentValue: {\n      type: Array,\n      required: false,\n      default: () => []\n    },\n    cursorPosition: {\n      type: String,\n      required: false,\n      default: 'end',\n      validator: value => ['start', 'end'].includes(value)\n    },\n    /**\n     * The title of the text search option. Ignored unless termsAsTokens is enabled.\n     */\n    searchTextOptionLabel: {\n      type: String,\n      required: false,\n      default: termTokenDefinition.title\n    },\n    viewOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  computed: {\n    showInput() {\n      return this.termsAsTokens() || Boolean(this.placeholder);\n    },\n    showToken() {\n      return this.termsAsTokens() && Boolean(this.value.data);\n    },\n    suggestedTokens() {\n      const tokens = this.availableTokens.filter(token => match(token.title, this.value.data));\n      if (this.termsAsTokens() && this.value.data) {\n        tokens.push({\n          ...termTokenDefinition,\n          title: this.searchTextOptionLabel\n        });\n      }\n\n      // eslint-disable-next-line unicorn/no-array-callback-reference\n      return tokens.map(tokenToOption);\n    },\n    internalValue: {\n      get() {\n        return this.value.data;\n      },\n      set(data) {\n        /**\n         * Emitted when the token changes its value.\n         *\n         * @event input\n         * @type {object} dataObj Object containing the update value.\n         */\n        this.$emit('input', {\n          data\n        });\n      }\n    },\n    eventListeners() {\n      return this.viewOnly ? {} : {\n        mousedown: this.stopMousedownOnCloseButton,\n        close: this.destroyByClose\n      };\n    }\n  },\n  methods: {\n    onBackspace() {\n      /**\n       * Emitted when token value is empty and backspace is pressed.\n       * Includes user intent to activate previous token.\n       *\n       * @event destroy\n       * @type {object} details The user intent\n       */\n      this.$emit('destroy', {\n        intent: INTENT_ACTIVATE_PREVIOUS\n      });\n    },\n    stopMousedownOnCloseButton(event) {\n      if (event.target.closest(TOKEN_CLOSE_SELECTOR)) {\n        stopEvent(event);\n      }\n    },\n    destroyByClose() {\n      this.$emit('destroy');\n    },\n    onComplete(type) {\n      if (type === TERM_TOKEN_TYPE) {\n        // We've completed this term token\n        this.$emit('complete');\n      } else {\n        // We're changing the current token type\n        this.$emit('replace', {\n          type\n        });\n      }\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-filtered-search-term gl-h-auto\",attrs:{\"data-testid\":\"filtered-search-term\"}},[_c('gl-filtered-search-token-segment',{ref:\"segment\",staticClass:\"gl-filtered-search-term-token\",attrs:{\"is-term\":\"\",\"active\":_vm.active,\"cursor-position\":_vm.cursorPosition,\"search-input-attributes\":_vm.searchInputAttributes,\"is-last-token\":_vm.isLastToken,\"current-value\":_vm.currentValue,\"view-only\":_vm.viewOnly,\"options\":_vm.suggestedTokens},on:{\"activate\":function($event){return _vm.$emit('activate')},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"complete\":_vm.onComplete,\"backspace\":_vm.onBackspace,\"submit\":function($event){return _vm.$emit('submit')},\"split\":function($event){return _vm.$emit('split', $event)},\"previous\":function($event){return _vm.$emit('previous')},\"next\":function($event){return _vm.$emit('next')}},scopedSlots:_vm._u([{key:\"view\",fn:function(ref){\nvar label = ref.label;\nreturn [(_vm.showToken)?_c('gl-token',_vm._g({class:{ 'gl-cursor-pointer': !_vm.viewOnly },attrs:{\"view-only\":_vm.viewOnly}},_vm.eventListeners),[_vm._v(_vm._s(_vm.value.data))]):(_vm.showInput)?_c('input',_vm._b({staticClass:\"gl-filtered-search-term-input\",class:{ 'gl-bg-gray-10': _vm.viewOnly },attrs:{\"placeholder\":_vm.placeholder,\"aria-label\":label,\"readonly\":_vm.viewOnly,\"data-testid\":\"filtered-search-term-input\"},on:{\"focusin\":function($event){return _vm.$emit('activate')},\"focusout\":function($event){return _vm.$emit('deactivate')}}},'input',_vm.searchInputAttributes,false)):[_vm._v(_vm._s(_vm.value.data))]]}}]),model:{value:(_vm.internalValue),callback:function ($$v) {_vm.internalValue=$$v;},expression:\"internalValue\"}})],1)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import isEqual from 'lodash/isEqual';\nimport cloneDeep from 'lodash/cloneDeep';\nimport { PortalTarget } from 'portal-vue';\nimport { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlIcon from '../icon/icon';\nimport GlSearchBoxByClick from '../search_box_by_click/search_box_by_click';\nimport GlFilteredSearchTerm from './filtered_search_term';\nimport { termTokenDefinition, createTerm, isEmptyTerm, needDenormalization, denormalizeTokens, INTENT_ACTIVATE_PREVIOUS, ensureTokenId, normalizeTokens } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nlet portalUuid = 0;\nfunction initialState() {\n  return [createTerm()];\n}\nvar script = {\n  name: 'GlFilteredSearch',\n  components: {\n    GlSearchBoxByClick,\n    GlIcon,\n    PortalTarget\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective\n  },\n  provide() {\n    portalUuid += 1;\n    this.portalName = `filters_portal_${portalUuid}`;\n    return {\n      portalName: this.portalName,\n      alignSuggestions: ref => this.alignSuggestions(ref),\n      // Return a function reference instead of a prop to work around vue-apollo@3 bug.\n      // TODO: This can be reverted once https://github.com/vuejs/vue-apollo/pull/1153\n      // has been merged and we consume it, or we upgrade to vue-apollo@4.\n      suggestionsListClass: () => this.suggestionsListClass,\n      termsAsTokens: () => this.termsAsTokens\n    };\n  },\n  inheritAttrs: false,\n  props: {\n    /**\n     * If provided, used as value of filtered search\n     */\n    value: {\n      required: false,\n      type: Array,\n      default: () => []\n    },\n    /**\n     * Available tokens\n     */\n    availableTokens: {\n      type: Array,\n      required: false,\n      default: () => [],\n      validator(value) {\n        // eslint-disable-next-line no-underscore-dangle\n        if (!value.__v_raw) {\n          // This is Vue 2\n          return true;\n        }\n\n        // eslint-disable-next-line no-underscore-dangle\n        const isOk = Array.isArray(value) && value.every(_ref => {\n          let {\n            token\n          } = _ref;\n          return token.__v_skip;\n        });\n        if (!isOk) {\n          // eslint-disable-next-line no-console\n          console.warn('You are using Vue3. In Vue3 each token component passed to filtered search must be wrapped into markRaw');\n        }\n        return isOk;\n      }\n    },\n    /**\n     * If provided, used as history items for this component\n     */\n    placeholder: {\n      type: String,\n      required: false,\n      default: 'Search'\n    },\n    clearButtonTitle: {\n      type: String,\n      required: false,\n      default: 'Clear'\n    },\n    historyItems: {\n      type: Array,\n      required: false,\n      default: null\n    },\n    /**\n     * Additional classes to add to the suggestion list menu. NOTE: this not reactive, and the value\n     * must be available and fixed when the component is instantiated\n     */\n    suggestionsListClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    /**\n     * Display operators' descriptions instead of their values (e.g., \"is\" instead of \"=\").\n     */\n    showFriendlyText: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * HTML attributes to add to the search button\n     */\n    searchButtonAttributes: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    },\n    /**\n     * HTML attributes to add to the search input\n     */\n    searchInputAttributes: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    },\n    viewOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Render search terms as GlTokens. Ideally, this prop will be as\n     * short-lived as possible, and this behavior will become the default and\n     * only behavior.\n     *\n     * This prop is *not* reactive.\n     *\n     * See https://gitlab.com/gitlab-org/gitlab-ui/-/issues/2159.\n     */\n    termsAsTokens: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * The title of the text search option. Ignored unless termsAsTokens is enabled.\n     */\n    searchTextOptionLabel: {\n      type: String,\n      required: false,\n      default: termTokenDefinition.title\n    },\n    /**\n     * Display search button to perform a search.\n     *\n     * Note: it is required to ensure accessibility for WCAG 2.1 3.2.2: On Input.\n     * If the search button is hidden, a separate button should be provided for the same context.\n     */\n    showSearchButton: {\n      type: Boolean,\n      required: false,\n      default: true\n    }\n  },\n  data() {\n    return {\n      tokens: initialState(),\n      activeTokenIdx: null,\n      suggestionsStyle: {},\n      intendedCursorPosition: 'end'\n    };\n  },\n  computed: {\n    activeToken() {\n      return this.tokens[this.activeTokenIdx];\n    },\n    appliedTokens() {\n      return this.tokens.filter(token => !isEmptyTerm(token));\n    },\n    lastTokenIdx() {\n      return this.tokens.length - 1;\n    },\n    isLastTokenActive() {\n      return this.activeTokenIdx === this.lastTokenIdx;\n    },\n    hasValue() {\n      return this.tokens.length > 1 || this.tokens[0].value.data !== '';\n    },\n    termPlaceholder() {\n      return this.hasValue ? null : this.placeholder;\n    },\n    currentAvailableTokens() {\n      return this.availableTokens.filter(token => {\n        if (token.disabled) {\n          return false;\n        }\n        if (token.unique) {\n          return !this.tokens.find(t => t.type === token.type);\n        }\n        return true;\n      });\n    }\n  },\n  watch: {\n    tokens: {\n      handler() {\n        if (process.env.NODE_ENV !== 'production') {\n          const invalidToken = this.tokens.find(token => !token.id);\n          if (invalidToken) {\n            throw new Error(`Token does not have an id:\\n${JSON.stringify(invalidToken)}`);\n          }\n        }\n        if ((this.tokens.length === 0 || !this.isLastTokenEmpty()) && !this.viewOnly) {\n          this.tokens.push(createTerm());\n        }\n\n        /**\n         * Emitted when the tokens (value) changes\n         * @property {array} tokens\n         */\n        this.$emit('input', this.tokens);\n      },\n      deep: true,\n      immediate: true\n    },\n    value: {\n      handler(newValue, oldValue) {\n        if (!isEqual(newValue, oldValue)) {\n          const value = newValue.length ? newValue : initialState();\n          this.applyNewValue(cloneDeep(value));\n        }\n      },\n      deep: true,\n      immediate: true\n    }\n  },\n  methods: {\n    applyNewValue(newValue) {\n      this.tokens = needDenormalization(newValue) ? denormalizeTokens(newValue, this.termsAsTokens) : newValue;\n    },\n    isActiveToken(idx) {\n      return this.activeTokenIdx === idx;\n    },\n    isLastToken(idx) {\n      return this.activeTokenIdx === null && idx === this.lastTokenIdx;\n    },\n    isLastTokenEmpty() {\n      return isEmptyTerm(this.tokens[this.lastTokenIdx]);\n    },\n    getTokenEntry(type) {\n      return this.availableTokens.find(t => t.type === type);\n    },\n    getTokenComponent(type) {\n      var _this$getTokenEntry;\n      return ((_this$getTokenEntry = this.getTokenEntry(type)) === null || _this$getTokenEntry === void 0 ? void 0 : _this$getTokenEntry.token) || GlFilteredSearchTerm;\n    },\n    getTokenClassList(idx) {\n      return {\n        'gl-filtered-search-item': true,\n        'gl-filtered-search-last-item': this.isLastToken(idx) && !this.viewOnly\n      };\n    },\n    activate(idx) {\n      if (!this.viewOnly) {\n        this.activeTokenIdx = idx;\n      }\n    },\n    activatePreviousToken() {\n      if (this.activeTokenIdx > 0) {\n        this.activeTokenIdx -= 1;\n        this.intendedCursorPosition = 'end';\n      }\n    },\n    activateNextToken() {\n      if (this.activeTokenIdx < this.value.length) {\n        this.activeTokenIdx += 1;\n        this.intendedCursorPosition = 'start';\n      }\n    },\n    alignSuggestions(ref) {\n      const offsetRef = ref.getBoundingClientRect().left;\n      const offsetMenu = this.$el.getBoundingClientRect().left;\n      const transform = `translateX(${Math.floor(offsetRef - offsetMenu)}px)`;\n      this.suggestionsStyle = {\n        transform\n      };\n    },\n    deactivate(token) {\n      this.intendedCursorPosition = 'end';\n      const tokenIdx = this.tokens.indexOf(token);\n      if (tokenIdx === -1 || this.activeTokenIdx !== tokenIdx) {\n        return;\n      }\n      if (!this.isLastTokenEmpty()) {\n        this.tokens.push(createTerm());\n      }\n      if (!this.isLastTokenActive && isEmptyTerm(this.activeToken)) {\n        this.tokens.splice(tokenIdx, 1);\n      }\n      this.activeTokenIdx = null;\n    },\n    destroyToken(idx) {\n      let {\n        intent\n      } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (this.tokens.length === 1) {\n        return;\n      }\n      this.tokens.splice(idx, 1);\n\n      // First, attempt to honor the user's activation intent behind the\n      // destruction of the token, if any. Otherwise, try to maintain the\n      // active state for the token that was active at the time. If that's not\n      // possible, make sure no token is active.\n      if (intent === INTENT_ACTIVATE_PREVIOUS) {\n        // If there is a previous token, activate it; else, activate the first token\n        this.activeTokenIdx = Math.max(idx - 1, 0);\n      } else if (idx < this.activeTokenIdx) {\n        // Preserve the active token's active status (it shifted down one index)\n        this.activeTokenIdx -= 1;\n      } else if (idx === this.activeTokenIdx) {\n        // User destroyed the active token; don't activate another one.\n        this.activeTokenIdx = null;\n      }\n      // Do nothing if there was no active token, or if idx > this.activeTokenIdx,\n      // to preserve the active state of the remaining tokens.\n    },\n    replaceToken(idx, token) {\n      this.$set(this.tokens, idx, ensureTokenId({\n        ...token,\n        value: {\n          data: '',\n          ...token.value\n        }\n      }));\n      this.activeTokenIdx = idx;\n    },\n    // This method can be deleted once termsAsTokens behavior is the default.\n    createTokens(idx) {\n      let newStrings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [''];\n      if (!this.isLastTokenActive && newStrings.length === 1 && newStrings[0] === '') {\n        this.activeTokenIdx = this.lastTokenIdx;\n        return;\n      }\n      const newTokens = newStrings.map(data => createTerm(data));\n      this.tokens.splice(idx + 1, 0, ...newTokens);\n      this.activeTokenIdx = idx + newStrings.length;\n    },\n    completeToken() {\n      if (this.activeTokenIdx === this.lastTokenIdx - 1) {\n        this.activeTokenIdx = this.lastTokenIdx;\n      } else {\n        this.activeTokenIdx = null;\n      }\n    },\n    submit() {\n      /**\n       * Emitted when search is submitted\n       * @property {array} tokens\n       */\n      this.$emit('submit', normalizeTokens(cloneDeep(this.tokens)));\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-search-box-by-click',_vm._b({attrs:{\"value\":_vm.tokens,\"history-items\":_vm.historyItems,\"clearable\":_vm.hasValue,\"search-button-attributes\":_vm.searchButtonAttributes,\"show-search-button\":_vm.showSearchButton,\"disabled\":_vm.viewOnly,\"data-testid\":\"filtered-search-input\"},on:{\"submit\":_vm.submit,\"input\":_vm.applyNewValue,\"history-item-selected\":function($event){return _vm.$emit('history-item-selected', $event)},\"clear\":function($event){return _vm.$emit('clear')},\"clear-history\":function($event){return _vm.$emit('clear-history')}},scopedSlots:_vm._u([{key:\"history-item\",fn:function(slotScope){return [_vm._t(\"history-item\",null,null,slotScope)]}},{key:\"input\",fn:function(){return [_c('div',{staticClass:\"gl-filtered-search-scrollable-container\",class:{\n        'gl-filtered-search-scrollable-container-with-search-button': _vm.showSearchButton,\n        '!gl-bg-gray-10 !gl-shadow-inner-1-gray-100': _vm.viewOnly,\n      }},[_c('div',{staticClass:\"gl-filtered-search-scrollable\"},_vm._l((_vm.tokens),function(token,idx){return _c(_vm.getTokenComponent(token.type),{key:token.id,ref:\"tokens\",refInFor:true,tag:\"component\",class:_vm.getTokenClassList(idx),attrs:{\"config\":_vm.getTokenEntry(token.type),\"active\":_vm.activeTokenIdx === idx,\"cursor-position\":_vm.intendedCursorPosition,\"available-tokens\":_vm.currentAvailableTokens,\"current-value\":_vm.tokens,\"index\":idx,\"placeholder\":_vm.termPlaceholder,\"show-friendly-text\":_vm.showFriendlyText,\"search-input-attributes\":_vm.searchInputAttributes,\"view-only\":_vm.viewOnly,\"is-last-token\":_vm.isLastToken(idx),\"search-text-option-label\":_vm.searchTextOptionLabel,\"applied-tokens\":_vm.appliedTokens},on:{\"activate\":function($event){return _vm.activate(idx)},\"deactivate\":function($event){return _vm.deactivate(token)},\"destroy\":function($event){return _vm.destroyToken(idx, $event)},\"replace\":function($event){return _vm.replaceToken(idx, $event)},\"complete\":_vm.completeToken,\"submit\":_vm.submit,\"split\":function($event){return _vm.createTokens(idx, $event)},\"previous\":_vm.activatePreviousToken,\"next\":_vm.activateNextToken},model:{value:(token.value),callback:function ($$v) {_vm.$set(token, \"value\", $$v);},expression:\"token.value\"}})}),1)]),_vm._v(\" \"),_c('portal-target',{key:_vm.activeTokenIdx,ref:\"menu\",style:(_vm.suggestionsStyle),attrs:{\"name\":_vm.portalName,\"slim\":\"\"}})]},proxy:true}],null,true)},'gl-search-box-by-click',_vm.$attrs,false))};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { getSel, isElement } from '../../../utils/dom';\n\n// Helper to determine if a there is an active text selection on the document page\n// Used to filter out click events caused by the mouse up at end of selection\n//\n// Accepts an element as only argument to test to see if selection overlaps or is\n// contained within the element\nconst textSelectionActive = function () {\n  let el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : document;\n  const sel = getSel();\n  return sel && sel.toString().trim() !== '' && sel.containsNode && isElement(el) ? /* istanbul ignore next */sel.containsNode(el, true) : false;\n};\n\nexport { textSelectionActive };\n","var baseIsSet = require('./_baseIsSet'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","import { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlButton from '../../base/button/button';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'ClearIconButton',\n  components: {\n    GlButton\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective\n  },\n  props: {\n    title: {\n      type: String,\n      required: false,\n      default: () => translate('ClearIconButton.title', 'Clear')\n    },\n    tooltipContainer: {\n      required: false,\n      default: false,\n      validator: value => value === false || typeof value === 'string' || value instanceof HTMLElement\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-button',_vm._g({directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip.hover\",value:({ container: _vm.tooltipContainer }),expression:\"{ container: tooltipContainer }\",modifiers:{\"hover\":true}}],staticClass:\"gl-clear-icon-button\",attrs:{\"variant\":\"default\",\"category\":\"tertiary\",\"size\":\"small\",\"name\":\"clear\",\"icon\":\"clear\",\"title\":_vm.title,\"aria-label\":_vm.title}},_vm.$listeners))};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var baseClamp = require('./_baseClamp'),\n    toNumber = require('./toNumber');\n\n/**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\nfunction clamp(number, lower, upper) {\n  if (upper === undefined) {\n    upper = lower;\n    lower = undefined;\n  }\n  if (upper !== undefined) {\n    upper = toNumber(upper);\n    upper = upper === upper ? upper : 0;\n  }\n  if (lower !== undefined) {\n    lower = toNumber(lower);\n    lower = lower === lower ? lower : 0;\n  }\n  return baseClamp(toNumber(number), lower, upper);\n}\n\nmodule.exports = clamp;\n","import isNumber from 'lodash/isNumber';\nimport isString from 'lodash/isString';\n\nconst isOption = item => Boolean(item) && (isString(item.value) || isNumber(item.value));\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst isGroup = function () {\n  let {\n    options\n  } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return Array.isArray(options) && options.every(isOption);\n};\nconst hasNoDuplicates = array => array.length === new Set(array).size;\nconst flattenedOptions = items => items.flatMap(item => isOption(item) ? item : item.options);\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst isAllOptionsOrAllGroups = items => items.every(isOption) || items.every(isGroup);\nconst hasUniqueValues = items => hasNoDuplicates(flattenedOptions(items).map(_ref => {\n  let {\n    value\n  } = _ref;\n  return value;\n}));\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst hasUniqueGroups = items => hasNoDuplicates(items.filter(isGroup).map(_ref2 => {\n  let {\n    text\n  } = _ref2;\n  return text;\n}));\nconst itemsValidator = items => isAllOptionsOrAllGroups(items) && hasUniqueValues(items) && hasUniqueGroups(items);\n\nexport { flattenedOptions, isOption, itemsValidator };\n","/**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\nfunction isNil(value) {\n  return value == null;\n}\n\nmodule.exports = isNil;\n","import { stepIndexAndWrap } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst DEFER_TO_INITIAL_VALUE = -1;\nconst NO_ACTIVE_ITEM = -2;\nvar script = {\n  name: 'GlFilteredSearchSuggestionList',\n  inject: ['suggestionsListClass', 'termsAsTokens'],\n  provide() {\n    return {\n      filteredSearchSuggestionListInstance: this\n    };\n  },\n  props: {\n    /**\n     * Value to be initially selected in list.\n     */\n    initialValue: {\n      required: false,\n      validator: () => true,\n      default: null\n    }\n  },\n  data() {\n    return {\n      activeIdx: DEFER_TO_INITIAL_VALUE,\n      registeredItems: []\n    };\n  },\n  computed: {\n    initialActiveIdx() {\n      return this.registeredItems.findIndex(item => this.valuesMatch(item.value, this.initialValue));\n    },\n    initialActiveItem() {\n      return this.registeredItems[this.initialActiveIdx];\n    },\n    activeItem() {\n      if (!this.termsAsTokens() && this.activeIdx === NO_ACTIVE_ITEM) return null;\n      if (this.activeIdx === DEFER_TO_INITIAL_VALUE) return this.initialActiveItem;\n      return this.registeredItems[this.activeIdx];\n    },\n    listClasses() {\n      return [this.suggestionsListClass(), 'dropdown-menu gl-filtered-search-suggestion-list'];\n    }\n  },\n  watch: {\n    initialValue() {\n      this.activeIdx = DEFER_TO_INITIAL_VALUE;\n    }\n  },\n  methods: {\n    valuesMatch(firstValue, secondValue) {\n      if (firstValue == null || secondValue == null) return false;\n      return typeof firstValue === 'string' && typeof secondValue === 'string' ? firstValue.toLowerCase() === secondValue.toLowerCase() : firstValue === secondValue;\n    },\n    register(item) {\n      this.registeredItems.push(item);\n    },\n    unregister(item) {\n      const idx = this.registeredItems.indexOf(item);\n      if (idx !== -1) {\n        this.registeredItems.splice(idx, 1);\n        if (idx === this.activeIdx) {\n          this.activeIdx = DEFER_TO_INITIAL_VALUE;\n        }\n      }\n    },\n    nextItem() {\n      if (this.termsAsTokens()) {\n        this.stepItem(1);\n      } else {\n        this.stepItem(1, this.registeredItems.length - 1);\n      }\n    },\n    prevItem() {\n      if (this.termsAsTokens()) {\n        this.stepItem(-1);\n      } else {\n        this.stepItem(-1, 0);\n      }\n    },\n    stepItem(direction, endIdx) {\n      if (!this.termsAsTokens() && (this.activeIdx === endIdx || this.activeIdx === DEFER_TO_INITIAL_VALUE && this.initialActiveIdx === endIdx)) {\n        // The user wants to move past the end of the list, so ensure nothing is selected.\n        this.activeIdx = NO_ACTIVE_ITEM;\n      } else {\n        const index = this.activeIdx === DEFER_TO_INITIAL_VALUE ?\n        // Currently active item is set by initialValue (i.e., text input matching),\n        // so step relative to that.\n        this.initialActiveIdx :\n        // Otherwise, step relative to the explicitly (via up/down arrows) activated item.\n        this.activeIdx;\n        this.activeIdx = stepIndexAndWrap(index, direction, this.registeredItems.length);\n      }\n    },\n    getValue() {\n      return this.activeItem ? this.activeItem.value : null;\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{class:_vm.listClasses},[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import last from 'lodash/last';\nimport { Portal } from 'portal-vue';\nimport { LEFT_MOUSE_BUTTON } from '../../../utils/constants';\nimport GlFilteredSearchSuggestion from './filtered_search_suggestion';\nimport GlFilteredSearchSuggestionList from './filtered_search_suggestion_list';\nimport { TERM_TOKEN_TYPE, splitOnQuotes, match, wrapTokenInQuotes } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n// We need some helpers to ensure @vue/compat compatibility\n// @vue/compat will render comment nodes for v-if and comments in HTML\n// Also it makes use of fragments - both comments and nodes are Symbols.\n// In Vue3 all of them (Comment, Fragment) are exposed as named exports on vue module\n// However we want to maintain compatibility with Vue2, so taking this hacky approach\n// relying on Symbol.toString()\n\n// I'm keeping this directly here instead of helper to increase probability of\n// fixing ASAP and because I don't want this helper to be reused\n// FIXME: replace with Symbols when we will switch to Vue3\n\nconst isVue3Comment = vnode => {\n  var _vnode$type, _vnode$type$toString;\n  return (vnode === null || vnode === void 0 ? void 0 : (_vnode$type = vnode.type) === null || _vnode$type === void 0 ? void 0 : (_vnode$type$toString = _vnode$type.toString) === null || _vnode$type$toString === void 0 ? void 0 : _vnode$type$toString.call(_vnode$type)) === 'Symbol(Comment)';\n};\nconst isVue3Fragment = vnode => {\n  var _vnode$type2, _vnode$type2$toString;\n  return (vnode === null || vnode === void 0 ? void 0 : (_vnode$type2 = vnode.type) === null || _vnode$type2 === void 0 ? void 0 : (_vnode$type2$toString = _vnode$type2.toString) === null || _vnode$type2$toString === void 0 ? void 0 : _vnode$type2$toString.call(_vnode$type2)) === 'Symbol(Fragment)';\n};\nconst isVNodeEmpty = vnode => {\n  if (isVue3Fragment(vnode)) {\n    // vnode.children might be an array or single node in edge cases\n    return Array.isArray(vnode.children) ?\n    // eslint-disable-next-line unicorn/no-array-callback-reference\n    vnode.children.every(isVNodeEmpty) : isVNodeEmpty(vnode.children);\n  }\n  if (isVue3Comment(vnode)) {\n    return true;\n  }\n  return false;\n};\nconst isSlotNotEmpty = slot => {\n  if (!slot) {\n    return false;\n  }\n  const vnodes = typeof slot === 'function' ? slot() : slot;\n  // eslint-disable-next-line unicorn/no-array-callback-reference\n  return !(Array.isArray(vnodes) ? vnodes.every(isVNodeEmpty) : isVNodeEmpty(vnodes));\n};\nvar script = {\n  name: 'GlFilteredSearchTokenSegment',\n  components: {\n    Portal,\n    GlFilteredSearchSuggestionList,\n    GlFilteredSearchSuggestion\n  },\n  inject: ['portalName', 'alignSuggestions', 'termsAsTokens'],\n  inheritAttrs: false,\n  props: {\n    /**\n     * If this token segment is currently being edited.\n     */\n    active: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    isTerm: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    label: {\n      type: String,\n      required: false,\n      default: 'Search'\n    },\n    multiSelect: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    options: {\n      type: Array,\n      required: false,\n      default: () => null\n    },\n    optionTextField: {\n      type: String,\n      required: false,\n      default: 'title'\n    },\n    customInputKeydownHandler: {\n      type: Function,\n      required: false,\n      default: () => () => false\n    },\n    /**\n     * Current term value\n     */\n    value: {\n      required: true,\n      validator: () => true\n    },\n    /**\n     * HTML attributes to add to the search input\n     */\n    searchInputAttributes: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    },\n    /**\n     * If this is the last token\n     */\n    isLastToken: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    currentValue: {\n      type: Array,\n      required: false,\n      default: () => []\n    },\n    cursorPosition: {\n      type: String,\n      required: false,\n      default: 'end',\n      validator: value => ['start', 'end'].includes(value)\n    },\n    viewOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  data() {\n    return {\n      fallbackValue: this.value\n    };\n  },\n  computed: {\n    hasTermSuggestion() {\n      if (!this.termsAsTokens()) return false;\n      if (!this.options) return false;\n      return this.options.some(_ref => {\n        let {\n          value\n        } = _ref;\n        return value === TERM_TOKEN_TYPE;\n      });\n    },\n    matchingOption() {\n      var _this$options;\n      return (_this$options = this.options) === null || _this$options === void 0 ? void 0 : _this$options.find(o => o.value === this.value);\n    },\n    nonMultipleValue() {\n      return Array.isArray(this.value) ? last(this.value) : this.value;\n    },\n    inputValue: {\n      get() {\n        if (this.isTerm) {\n          return this.nonMultipleValue;\n        }\n        return this.matchingOption ? this.matchingOption[this.optionTextField] : this.nonMultipleValue;\n      },\n      set(inputValue) {\n        /**\n         * Emitted when this token segment's value changes.\n         *\n         * @type {object} option The current option.\n         */\n        this.$emit('input', inputValue);\n      }\n    },\n    hasOptionsOrSuggestions() {\n      var _this$options2;\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      return ((_this$options2 = this.options) === null || _this$options2 === void 0 ? void 0 : _this$options2.length) || isSlotNotEmpty(this.$slots.suggestions);\n    },\n    defaultSuggestedValue() {\n      var _this$options$;\n      if (!this.options) {\n        return this.nonMultipleValue;\n      }\n      if (this.value) {\n        const option = this.getMatchingOptionForInputValue(this.inputValue) || this.getMatchingOptionForInputValue(this.inputValue, {\n          loose: true\n        });\n        if (option) return option.value;\n        if (this.hasTermSuggestion) return TERM_TOKEN_TYPE;\n        return null;\n      }\n      const defaultOption = this.options.find(op => op.default);\n      if (defaultOption) {\n        return defaultOption.value;\n      }\n      return this.isTerm ? undefined : (_this$options$ = this.options[0]) === null || _this$options$ === void 0 ? void 0 : _this$options$.value;\n    },\n    containerAttributes() {\n      return this.isLastToken && !this.active && this.currentValue.length > 1 && this.searchInputAttributes;\n    }\n  },\n  watch: {\n    active: {\n      immediate: true,\n      handler(newValue) {\n        if (newValue) {\n          this.activate();\n        } else {\n          this.deactivate();\n        }\n      }\n    },\n    inputValue(newValue) {\n      if (this.termsAsTokens()) return;\n      if (this.multiSelect) return;\n\n      /**\n       * This is a temporary workaround to implement the same behaviour\n       * implemented in https://gitlab.com/gitlab-org/gitlab-ui/-/issues/2381\n       * for tokens with `terms-as-tokens=false` and `multi-select=false`.\n       *\n       * We're aiming to remove this temporary fix when\n       * https://gitlab.com/groups/gitlab-org/-/epics/15948 gets completed, as\n       * that refactoring will use the `@input` handler on the GlFilteredSearch\n       * component to handle tokens instead of doing workarounds.\n       */\n      if (typeof newValue !== 'string') return;\n      const hasUnclosedQuote = newValue.split('\"').length % 2 === 0;\n      if (newValue.indexOf(' ') === -1 || hasUnclosedQuote) {\n        return;\n      }\n      const [firstWord, ...otherWords] = splitOnQuotes(newValue).filter((w, idx, arr) => Boolean(w) || idx === arr.length - 1);\n      this.$emit('input', firstWord);\n      if (otherWords.length) {\n        /**\n         * Emitted when Space appears in token segment value\n         * @property {array|string} newStrings New strings to be converted into term tokens\n         */\n        this.$emit('split', otherWords);\n      }\n    }\n  },\n  methods: {\n    emitIfInactive(e) {\n      if (e.button === LEFT_MOUSE_BUTTON && !this.active) {\n        /**\n         * Emitted on mousedown event on the main component.\n         */\n        this.$emit('activate');\n        e.preventDefault();\n      }\n    },\n    getMatchingOptionForInputValue(inputValue) {\n      var _this$options3;\n      let {\n        loose\n      } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        loose: false\n      };\n      return (_this$options3 = this.options) === null || _this$options3 === void 0 ? void 0 : _this$options3.find(option => loose ? match(option[this.optionTextField], inputValue) : option[this.optionTextField] === inputValue);\n    },\n    activate() {\n      this.fallbackValue = this.value;\n      this.$nextTick(() => {\n        const {\n          input\n        } = this.$refs;\n        if (input) {\n          input.focus();\n          input.scrollIntoView({\n            block: 'nearest',\n            inline: 'end'\n          });\n          this.alignSuggestions(input);\n          if (this.cursorPosition === 'start') {\n            input === null || input === void 0 ? void 0 : input.setSelectionRange(0, 0);\n          }\n        }\n      });\n    },\n    deactivate() {\n      var _this$matchingOption;\n      if (!this.options || this.isTerm) {\n        return;\n      }\n      if (((_this$matchingOption = this.matchingOption) === null || _this$matchingOption === void 0 ? void 0 : _this$matchingOption.value) !== this.value) {\n        this.$emit('input', this.fallbackValue);\n      }\n    },\n    applySuggestion(suggestedValue) {\n      const formattedSuggestedValue = this.termsAsTokens() ? suggestedValue : wrapTokenInQuotes(suggestedValue);\n\n      /**\n       * Emitted when autocomplete entry is selected.\n       *\n       * @type {string} value The selected value.\n       */\n      this.$emit('select', formattedSuggestedValue);\n      if (!this.multiSelect) {\n        this.$emit('input', formattedSuggestedValue === TERM_TOKEN_TYPE ? this.inputValue : formattedSuggestedValue);\n        this.$emit('complete', formattedSuggestedValue);\n      }\n    },\n    handleInputKeydown(e) {\n      const {\n        key\n      } = e;\n      const {\n        suggestions,\n        input\n      } = this.$refs;\n      const suggestedValue = suggestions === null || suggestions === void 0 ? void 0 : suggestions.getValue();\n      const handlers = {\n        ArrowLeft: () => {\n          if (input.selectionStart === 0) {\n            e.preventDefault();\n            this.$emit('previous');\n          }\n        },\n        ArrowRight: () => {\n          if (input.selectionEnd === this.inputValue.length) {\n            e.preventDefault();\n            this.$emit('next');\n          }\n        },\n        Backspace: () => {\n          if (this.inputValue === '') {\n            e.preventDefault();\n            /**\n             * Emitted when Backspace is pressed and the value is empty\n             */\n            this.$emit('backspace');\n          }\n        },\n        Enter: () => {\n          e.preventDefault();\n          if (suggestedValue != null) {\n            this.applySuggestion(suggestedValue);\n          } else {\n            /**\n             * Emitted when Enter is pressed and no suggestion is selected\n             */\n            this.$emit('submit');\n          }\n        },\n        ':': () => {\n          if (suggestedValue != null) {\n            e.preventDefault();\n            this.applySuggestion(suggestedValue);\n          }\n        },\n        Escape: () => {\n          e.preventDefault();\n          /**\n           * Emitted when suggestion is selected from the suggestion list\n           */\n          this.$emit('complete');\n        }\n      };\n      const suggestionsHandlers = {\n        ArrowDown: () => suggestions.nextItem(),\n        Down: () => suggestions.nextItem(),\n        ArrowUp: () => suggestions.prevItem(),\n        Up: () => suggestions.prevItem()\n      };\n      if (this.hasOptionsOrSuggestions) {\n        Object.assign(handlers, suggestionsHandlers);\n      }\n      if (Object.keys(handlers).includes(key)) {\n        handlers[key]();\n        return;\n      }\n      this.customInputKeydownHandler(e, {\n        suggestedValue,\n        inputValue: this.inputValue,\n        applySuggestion: v => this.applySuggestion(v)\n      });\n    },\n    handleBlur() {\n      if (this.multiSelect) {\n        this.$emit('complete');\n      } else if (this.active) {\n        /**\n         * Emitted when this term token will lose its focus.\n         */\n        this.$emit('deactivate');\n      }\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._g(_vm._b({staticClass:\"gl-filtered-search-token-segment\",class:{\n    'gl-filtered-search-token-segment-active': _vm.active,\n    '!gl-cursor-text': _vm.viewOnly,\n  },attrs:{\"data-testid\":\"filtered-search-token-segment\"}},'div',_vm.containerAttributes,false),_vm.viewOnly ? {} : { mousedown: _vm.emitIfInactive }),[(_vm.active)?[_vm._t(\"before-input\",null,null,{ submitValue: _vm.applySuggestion }),_vm._v(\" \"),(((_vm.searchInputAttributes).type)==='checkbox')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputValue),expression:\"inputValue\"}],ref:\"input\",staticClass:\"gl-filtered-search-token-segment-input\",attrs:{\"data-testid\":\"filtered-search-token-segment-input\",\"aria-label\":_vm.label,\"readonly\":_vm.viewOnly,\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.inputValue)?_vm._i(_vm.inputValue,null)>-1:(_vm.inputValue)},on:{\"keydown\":_vm.handleInputKeydown,\"blur\":_vm.handleBlur,\"change\":function($event){var $$a=_vm.inputValue,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.inputValue=$$a.concat([$$v]));}else {$$i>-1&&(_vm.inputValue=$$a.slice(0,$$i).concat($$a.slice($$i+1)));}}else {_vm.inputValue=$$c;}}}},'input',_vm.searchInputAttributes,false)):(((_vm.searchInputAttributes).type)==='radio')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputValue),expression:\"inputValue\"}],ref:\"input\",staticClass:\"gl-filtered-search-token-segment-input\",attrs:{\"data-testid\":\"filtered-search-token-segment-input\",\"aria-label\":_vm.label,\"readonly\":_vm.viewOnly,\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.inputValue,null)},on:{\"keydown\":_vm.handleInputKeydown,\"blur\":_vm.handleBlur,\"change\":function($event){_vm.inputValue=null;}}},'input',_vm.searchInputAttributes,false)):_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.inputValue),expression:\"inputValue\"}],ref:\"input\",staticClass:\"gl-filtered-search-token-segment-input\",attrs:{\"data-testid\":\"filtered-search-token-segment-input\",\"aria-label\":_vm.label,\"readonly\":_vm.viewOnly,\"type\":(_vm.searchInputAttributes).type},domProps:{\"value\":(_vm.inputValue)},on:{\"keydown\":_vm.handleInputKeydown,\"blur\":_vm.handleBlur,\"input\":function($event){if($event.target.composing){ return; }_vm.inputValue=$event.target.value;}}},'input',_vm.searchInputAttributes,false)),_vm._v(\" \"),_c('portal',{key:(\"operator-\" + _vm._uid),attrs:{\"to\":_vm.portalName}},[(_vm.hasOptionsOrSuggestions)?_c('gl-filtered-search-suggestion-list',{key:(\"operator-\" + _vm._uid),ref:\"suggestions\",attrs:{\"initial-value\":_vm.defaultSuggestedValue},on:{\"suggestion\":_vm.applySuggestion}},[(_vm.options)?_vm._l((_vm.options),function(option,idx){return _c('gl-filtered-search-suggestion',{key:((option.value) + \"-\" + idx),attrs:{\"value\":option.value,\"icon-name\":option.icon}},[_vm._t(\"option\",function(){return [(option.component)?[_c(option.component,{tag:\"component\",attrs:{\"option\":option}})]:[_vm._v(\"\\n                \"+_vm._s(option[_vm.optionTextField])+\"\\n              \")]]},null,{ option: option })],2)}):_vm._t(\"suggestions\")],2):_vm._e()],1)]:_vm._t(\"view\",function(){return [_vm._v(_vm._s(_vm.inputValue))]},null,{ label: _vm.label, inputValue: _vm.inputValue })],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { extend } from '../../vue';\nimport { NAME_TFOOT } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  // Supported values: 'lite', 'dark', or null\n  footVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_TFOOT);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTfoot = /*#__PURE__*/extend({\n  name: NAME_TFOOT,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableRowGroup: () => this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isTfoot() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader() {\n      return false;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    tfootClasses() {\n      return [this.footVariant ? `thead-${this.footVariant}` : null];\n    },\n    tfootAttrs() {\n      return {\n        ...this.bvAttrs,\n        role: 'rowgroup'\n      };\n    }\n  },\n  render(h) {\n    return h('tfoot', {\n      class: this.tfootClasses,\n      attrs: this.tfootAttrs,\n      // Pass down any native listeners\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});\n\nexport { BTfoot, props };\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f',\n    reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n    rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n    rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n    rsCombo = '[' + rsComboRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n  var result = reUnicode.lastIndex = 0;\n  while (reUnicode.test(string)) {\n    ++result;\n  }\n  return result;\n}\n\nmodule.exports = unicodeSize;\n","/**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\nfunction baseClamp(number, lower, upper) {\n  if (number === number) {\n    if (upper !== undefined) {\n      number = number <= upper ? number : upper;\n    }\n    if (lower !== undefined) {\n      number = number >= lower ? number : lower;\n    }\n  }\n  return number;\n}\n\nmodule.exports = baseClamp;\n","import Vue from 'vue';\nimport isFunction from 'lodash/isFunction';\nimport isString from 'lodash/isString';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';\n\nconst itemValidator = item => {\n  var _item$text;\n  return (item === null || item === void 0 ? void 0 : (_item$text = item.text) === null || _item$text === void 0 ? void 0 : _item$text.length) > 0 && !Array.isArray(item === null || item === void 0 ? void 0 : item.items);\n};\nconst isItem = item => Boolean(item) && itemValidator(item);\nconst isGroup = group => Boolean(group) && Array.isArray(group.items) && Boolean(group.items.length) &&\n// eslint-disable-next-line unicorn/no-array-callback-reference\ngroup.items.every(isItem);\n\n// eslint-disable-next-line unicorn/no-array-callback-reference\nconst itemsValidator = items => items.every(isItem) || items.every(isGroup);\nconst isListItem = tag => ['gl-disclosure-dropdown-group', 'gl-disclosure-dropdown-item', 'li'].includes(tag);\nconst isValidSlotTagVue2 = vNode => {\n  var _vNode$componentOptio;\n  return Boolean(vNode) && isListItem(((_vNode$componentOptio = vNode.componentOptions) === null || _vNode$componentOptio === void 0 ? void 0 : _vNode$componentOptio.tag) || vNode.tag);\n};\nconst isValidSlotTagVue3 = vNode => {\n  var _vNode$type;\n  return [DISCLOSURE_DROPDOWN_ITEM_NAME, DISCLOSURE_DROPDOWN_GROUP_NAME].includes((_vNode$type = vNode.type) === null || _vNode$type === void 0 ? void 0 : _vNode$type.name) || vNode.type === 'li';\n};\nconst hasOnlyListItemsVue2 = defaultSlot => {\n  const nodes = defaultSlot();\n  if (!Array.isArray(nodes)) {\n    return false;\n  }\n  const tags = nodes.filter(vNode => vNode.tag);\n  return tags.length && tags.every(tag => isValidSlotTagVue2(tag));\n};\nconst hasOnlyListItemsVue3 = defaultSlot => {\n  const nodes = defaultSlot();\n  const fragment = nodes.find(node => Array.isArray(node.children) && node.children.length);\n  const targetNodes = fragment ? fragment.children : nodes;\n  return targetNodes\n  // Remove empty text vNodes\n  .filter(vNode => !isString(vNode.text) || vNode.text.trim().length > 0).every(vNode => isValidSlotTagVue3(vNode));\n};\nconst hasOnlyListItems = defaultSlot => {\n  if (!isFunction(defaultSlot)) {\n    return false;\n  }\n  if (Vue.version.startsWith('3')) {\n    return hasOnlyListItemsVue3(defaultSlot);\n  }\n  return hasOnlyListItemsVue2(defaultSlot);\n};\n\nexport { hasOnlyListItems, isGroup, isItem, itemsValidator };\n","import { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN_STRING } from '../../../constants/props';\nimport { makeProp } from '../../../utils/props';\n\n// --- Props ---\n\nconst props = {\n  stacked: makeProp(PROP_TYPE_BOOLEAN_STRING, false)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst stackedMixin = extend({\n  props,\n  computed: {\n    isStacked() {\n      const {\n        stacked\n      } = this;\n      // `true` when always stacked, or returns breakpoint specified\n      return stacked === '' ? true : stacked;\n    },\n    isStackedAlways() {\n      return this.isStacked === true;\n    },\n    stackedTableClasses() {\n      const {\n        isStackedAlways\n      } = this;\n      return {\n        'b-table-stacked': isStackedAlways,\n        [`b-table-stacked-${this.stacked}`]: !isStackedAlways && this.isStacked\n      };\n    }\n  }\n});\n\nexport { props, stackedMixin };\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n    cloneDataView = require('./_cloneDataView'),\n    cloneRegExp = require('./_cloneRegExp'),\n    cloneSymbol = require('./_cloneSymbol'),\n    cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n  var Ctor = object.constructor;\n  switch (tag) {\n    case arrayBufferTag:\n      return cloneArrayBuffer(object);\n\n    case boolTag:\n    case dateTag:\n      return new Ctor(+object);\n\n    case dataViewTag:\n      return cloneDataView(object, isDeep);\n\n    case float32Tag: case float64Tag:\n    case int8Tag: case int16Tag: case int32Tag:\n    case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n      return cloneTypedArray(object, isDeep);\n\n    case mapTag:\n      return new Ctor;\n\n    case numberTag:\n    case stringTag:\n      return new Ctor(object);\n\n    case regexpTag:\n      return cloneRegExp(object);\n\n    case setTag:\n      return new Ctor;\n\n    case symbolTag:\n      return cloneSymbol(object);\n  }\n}\n\nmodule.exports = initCloneByTag;\n","import { identity } from '../../../utils/identity';\nimport { isArray, isString, isObject, isFunction } from '../../../utils/inspect';\nimport { clone, keys } from '../../../utils/object';\nimport { startCase } from '../../../utils/string';\nimport { IGNORED_FIELD_KEYS } from './constants';\n\n// Private function to massage field entry into common object format\nconst processField = (key, value) => {\n  let field = null;\n  if (isString(value)) {\n    // Label shortcut\n    field = {\n      key,\n      label: value\n    };\n  } else if (isFunction(value)) {\n    // Formatter shortcut\n    field = {\n      key,\n      formatter: value\n    };\n  } else if (isObject(value)) {\n    field = clone(value);\n    field.key = field.key || key;\n  } else if (value !== false) {\n    // Fallback to just key\n    /* istanbul ignore next */\n    field = {\n      key\n    };\n  }\n  return field;\n};\n\n// We normalize fields into an array of objects\n// [ { key:..., label:..., ...}, {...}, ..., {..}]\nconst normalizeFields = (origFields, items) => {\n  const fields = [];\n  if (isArray(origFields)) {\n    // Normalize array Form\n    origFields.filter(identity).forEach(f => {\n      if (isString(f)) {\n        fields.push({\n          key: f,\n          label: startCase(f)\n        });\n      } else if (isObject(f) && f.key && isString(f.key)) {\n        // Full object definition. We use assign so that we don't mutate the original\n        fields.push(clone(f));\n      } else if (isObject(f) && keys(f).length === 1) {\n        // Shortcut object (i.e. { 'foo_bar': 'This is Foo Bar' }\n        const key = keys(f)[0];\n        const field = processField(key, f[key]);\n        if (field) {\n          fields.push(field);\n        }\n      }\n    });\n  }\n\n  // If no field provided, take a sample from first record (if exits)\n  if (fields.length === 0 && isArray(items) && items.length > 0) {\n    const sample = items[0];\n    keys(sample).forEach(k => {\n      if (!IGNORED_FIELD_KEYS[k]) {\n        fields.push({\n          key: k,\n          label: startCase(k)\n        });\n      }\n    });\n  }\n\n  // Ensure we have a unique array of fields and that they have String labels\n  const memo = {};\n  return fields.filter(f => {\n    if (!memo[f.key]) {\n      memo[f.key] = true;\n      f.label = isString(f.label) ? f.label : startCase(f.key);\n      return true;\n    }\n    return false;\n  });\n};\n\nexport { normalizeFields };\n","import { extend } from '../../../vue';\nimport { EVENT_NAME_CONTEXT_CHANGED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY, PROP_TYPE_STRING } from '../../../constants/props';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { isArray, isString, isFunction } from '../../../utils/inspect';\nimport { looseEqual } from '../../../utils/loose-equal';\nimport { mathMax } from '../../../utils/math';\nimport { makeModelMixin } from '../../../utils/model';\nimport { toInteger } from '../../../utils/number';\nimport { sortKeys, clone } from '../../../utils/object';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { normalizeFields } from './normalize-fields';\n\n// --- Constants ---\n\nconst {\n  mixin: modelMixin,\n  props: modelProps,\n  prop: MODEL_PROP_NAME,\n  event: MODEL_EVENT_NAME\n} = makeModelMixin('value', {\n  type: PROP_TYPE_ARRAY,\n  defaultValue: []\n});\n\n// --- Props ---\n\nconst props = sortKeys({\n  ...modelProps,\n  fields: makeProp(PROP_TYPE_ARRAY, null),\n  // Provider mixin adds in `Function` type\n  items: makeProp(PROP_TYPE_ARRAY, []),\n  // Primary key for record\n  // If provided the value in each row must be unique!\n  primaryKey: makeProp(PROP_TYPE_STRING),\n  // `v-model` for retrieving the current displayed rows\n  [MODEL_PROP_NAME]: makeProp(PROP_TYPE_ARRAY, [])\n});\n\n// --- Mixin ---\n\n// @vue/component\nconst itemsMixin = extend({\n  mixins: [modelMixin, useParentMixin],\n  props,\n  data() {\n    const {\n      items\n    } = this;\n    return {\n      // Our local copy of the items\n      // Must be an array\n      localItems: isArray(items) ? items.slice() : []\n    };\n  },\n  computed: {\n    computedFields() {\n      // We normalize fields into an array of objects\n      // `[ { key:..., label:..., ...}, {...}, ..., {..}]`\n      return normalizeFields(this.fields, this.localItems);\n    },\n    computedFieldsObj() {\n      // Fields as a simple lookup hash object\n      // Mainly for formatter lookup and use in `scopedSlots` for convenience\n      // If the field has a formatter, it normalizes formatter to a\n      // function ref or `undefined` if no formatter\n      const {\n        bvParent\n      } = this;\n      return this.computedFields.reduce((obj, f) => {\n        // We use object spread here so we don't mutate the original field object\n        obj[f.key] = clone(f);\n        if (f.formatter) {\n          // Normalize formatter to a function ref or `undefined`\n          let formatter = f.formatter;\n          if (isString(formatter) && isFunction(bvParent[formatter])) {\n            formatter = bvParent[formatter];\n          } else if (!isFunction(formatter)) {\n            /* istanbul ignore next */\n            formatter = undefined;\n          }\n          // Return formatter function or `undefined` if none\n          obj[f.key].formatter = formatter;\n        }\n        return obj;\n      }, {});\n    },\n    computedItems() {\n      const {\n        paginatedItems,\n        sortedItems,\n        filteredItems,\n        localItems\n      } = safeVueInstance(this);\n      // Fallback if various mixins not provided\n      return (paginatedItems || sortedItems || filteredItems || localItems || /* istanbul ignore next */\n      []).slice();\n    },\n    context() {\n      const {\n        perPage,\n        currentPage\n      } = safeVueInstance(this);\n      // Current state of sorting, filtering and pagination props/values\n      return {\n        filter: this.localFilter,\n        sortBy: this.localSortBy,\n        sortDesc: this.localSortDesc,\n        perPage: mathMax(toInteger(perPage, 0), 0),\n        currentPage: mathMax(toInteger(currentPage, 0), 1),\n        apiUrl: this.apiUrl\n      };\n    }\n  },\n  watch: {\n    items(newValue) {\n      // Set `localItems`/`filteredItems` to a copy of the provided array\n      this.localItems = isArray(newValue) ? newValue.slice() : [];\n    },\n    // Watch for changes on `computedItems` and update the `v-model`\n    computedItems(newValue, oldValue) {\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(MODEL_EVENT_NAME, newValue);\n      }\n    },\n    // Watch for context changes\n    context(newValue, oldValue) {\n      // Emit context information for external paging/filtering/sorting handling\n      if (!looseEqual(newValue, oldValue)) {\n        this.$emit(EVENT_NAME_CONTEXT_CHANGED, newValue);\n      }\n    }\n  },\n  mounted() {\n    // Initially update the `v-model` of displayed items\n    this.$emit(MODEL_EVENT_NAME, this.computedItems);\n  },\n  methods: {\n    // Method to get the formatter method for a given field key\n    getFieldFormatter(key) {\n      const field = this.computedFieldsObj[key];\n      // `this.computedFieldsObj` has pre-normalized the formatter to a\n      // function ref if present, otherwise `undefined`\n      return field ? field.formatter : undefined;\n    }\n  }\n});\n\nexport { MODEL_EVENT_NAME, MODEL_PROP_NAME, itemsMixin, props };\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n  return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","import { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { SLOT_NAME_CUSTOM_FOOT } from '../../../constants/slots';\nimport { makeProp } from '../../../utils/props';\nimport { BTfoot } from '../tfoot';\n\n// --- Props ---\n\nconst props = {\n  footClone: makeProp(PROP_TYPE_BOOLEAN, false),\n  // Any Bootstrap theme variant (or custom)\n  // Falls back to `headRowVariant`\n  footRowVariant: makeProp(PROP_TYPE_STRING),\n  // 'dark', 'light', or `null` (or custom)\n  footVariant: makeProp(PROP_TYPE_STRING),\n  tfootClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tfootTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst tfootMixin = extend({\n  props,\n  methods: {\n    renderTFootCustom() {\n      const h = this.$createElement;\n      if (this.hasNormalizedSlot(SLOT_NAME_CUSTOM_FOOT)) {\n        return h(BTfoot, {\n          class: this.tfootClass || null,\n          props: {\n            footVariant: this.footVariant || this.headVariant || null\n          },\n          key: 'bv-tfoot-custom'\n        }, this.normalizeSlot(SLOT_NAME_CUSTOM_FOOT, {\n          items: this.computedItems.slice(),\n          fields: this.computedFields.slice(),\n          columns: this.computedFields.length\n        }));\n      }\n      return h();\n    },\n    renderTfoot() {\n      // Passing true to renderThead will make it render a tfoot\n      return this.footClone ? this.renderThead(true) : this.renderTFootCustom();\n    }\n  }\n});\n\nexport { props, tfootMixin };\n","const DISCLOSURE_DROPDOWN_ITEM_NAME = 'GlDisclosureDropdownItem';\nconst DISCLOSURE_DROPDOWN_GROUP_NAME = 'GlDisclosureDropdownGroup';\nconst DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS = {\n  top: 'top',\n  bottom: 'bottom'\n};\n\nexport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME, DISCLOSURE_DROPDOWN_ITEM_NAME };\n","var mapping = require('./_mapping'),\n    fallbackHolder = require('./placeholder');\n\n/** Built-in value reference. */\nvar push = Array.prototype.push;\n\n/**\n * Creates a function, with an arity of `n`, that invokes `func` with the\n * arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} n The arity of the new function.\n * @returns {Function} Returns the new function.\n */\nfunction baseArity(func, n) {\n  return n == 2\n    ? function(a, b) { return func.apply(undefined, arguments); }\n    : function(a) { return func.apply(undefined, arguments); };\n}\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments, ignoring\n * any additional arguments.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @param {number} n The arity cap.\n * @returns {Function} Returns the new function.\n */\nfunction baseAry(func, n) {\n  return n == 2\n    ? function(a, b) { return func(a, b); }\n    : function(a) { return func(a); };\n}\n\n/**\n * Creates a clone of `array`.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the cloned array.\n */\nfunction cloneArray(array) {\n  var length = array ? array.length : 0,\n      result = Array(length);\n\n  while (length--) {\n    result[length] = array[length];\n  }\n  return result;\n}\n\n/**\n * Creates a function that clones a given object using the assignment `func`.\n *\n * @private\n * @param {Function} func The assignment function.\n * @returns {Function} Returns the new cloner function.\n */\nfunction createCloner(func) {\n  return function(object) {\n    return func({}, object);\n  };\n}\n\n/**\n * A specialized version of `_.spread` which flattens the spread array into\n * the arguments of the invoked `func`.\n *\n * @private\n * @param {Function} func The function to spread arguments over.\n * @param {number} start The start position of the spread.\n * @returns {Function} Returns the new function.\n */\nfunction flatSpread(func, start) {\n  return function() {\n    var length = arguments.length,\n        lastIndex = length - 1,\n        args = Array(length);\n\n    while (length--) {\n      args[length] = arguments[length];\n    }\n    var array = args[start],\n        otherArgs = args.slice(0, start);\n\n    if (array) {\n      push.apply(otherArgs, array);\n    }\n    if (start != lastIndex) {\n      push.apply(otherArgs, args.slice(start + 1));\n    }\n    return func.apply(this, otherArgs);\n  };\n}\n\n/**\n * Creates a function that wraps `func` and uses `cloner` to clone the first\n * argument it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} cloner The function to clone arguments.\n * @returns {Function} Returns the new immutable function.\n */\nfunction wrapImmutable(func, cloner) {\n  return function() {\n    var length = arguments.length;\n    if (!length) {\n      return;\n    }\n    var args = Array(length);\n    while (length--) {\n      args[length] = arguments[length];\n    }\n    var result = args[0] = cloner.apply(undefined, args);\n    func.apply(undefined, args);\n    return result;\n  };\n}\n\n/**\n * The base implementation of `convert` which accepts a `util` object of methods\n * required to perform conversions.\n *\n * @param {Object} util The util object.\n * @param {string} name The name of the function to convert.\n * @param {Function} func The function to convert.\n * @param {Object} [options] The options object.\n * @param {boolean} [options.cap=true] Specify capping iteratee arguments.\n * @param {boolean} [options.curry=true] Specify currying.\n * @param {boolean} [options.fixed=true] Specify fixed arity.\n * @param {boolean} [options.immutable=true] Specify immutable operations.\n * @param {boolean} [options.rearg=true] Specify rearranging arguments.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction baseConvert(util, name, func, options) {\n  var isLib = typeof name == 'function',\n      isObj = name === Object(name);\n\n  if (isObj) {\n    options = func;\n    func = name;\n    name = undefined;\n  }\n  if (func == null) {\n    throw new TypeError;\n  }\n  options || (options = {});\n\n  var config = {\n    'cap': 'cap' in options ? options.cap : true,\n    'curry': 'curry' in options ? options.curry : true,\n    'fixed': 'fixed' in options ? options.fixed : true,\n    'immutable': 'immutable' in options ? options.immutable : true,\n    'rearg': 'rearg' in options ? options.rearg : true\n  };\n\n  var defaultHolder = isLib ? func : fallbackHolder,\n      forceCurry = ('curry' in options) && options.curry,\n      forceFixed = ('fixed' in options) && options.fixed,\n      forceRearg = ('rearg' in options) && options.rearg,\n      pristine = isLib ? func.runInContext() : undefined;\n\n  var helpers = isLib ? func : {\n    'ary': util.ary,\n    'assign': util.assign,\n    'clone': util.clone,\n    'curry': util.curry,\n    'forEach': util.forEach,\n    'isArray': util.isArray,\n    'isError': util.isError,\n    'isFunction': util.isFunction,\n    'isWeakMap': util.isWeakMap,\n    'iteratee': util.iteratee,\n    'keys': util.keys,\n    'rearg': util.rearg,\n    'toInteger': util.toInteger,\n    'toPath': util.toPath\n  };\n\n  var ary = helpers.ary,\n      assign = helpers.assign,\n      clone = helpers.clone,\n      curry = helpers.curry,\n      each = helpers.forEach,\n      isArray = helpers.isArray,\n      isError = helpers.isError,\n      isFunction = helpers.isFunction,\n      isWeakMap = helpers.isWeakMap,\n      keys = helpers.keys,\n      rearg = helpers.rearg,\n      toInteger = helpers.toInteger,\n      toPath = helpers.toPath;\n\n  var aryMethodKeys = keys(mapping.aryMethod);\n\n  var wrappers = {\n    'castArray': function(castArray) {\n      return function() {\n        var value = arguments[0];\n        return isArray(value)\n          ? castArray(cloneArray(value))\n          : castArray.apply(undefined, arguments);\n      };\n    },\n    'iteratee': function(iteratee) {\n      return function() {\n        var func = arguments[0],\n            arity = arguments[1],\n            result = iteratee(func, arity),\n            length = result.length;\n\n        if (config.cap && typeof arity == 'number') {\n          arity = arity > 2 ? (arity - 2) : 1;\n          return (length && length <= arity) ? result : baseAry(result, arity);\n        }\n        return result;\n      };\n    },\n    'mixin': function(mixin) {\n      return function(source) {\n        var func = this;\n        if (!isFunction(func)) {\n          return mixin(func, Object(source));\n        }\n        var pairs = [];\n        each(keys(source), function(key) {\n          if (isFunction(source[key])) {\n            pairs.push([key, func.prototype[key]]);\n          }\n        });\n\n        mixin(func, Object(source));\n\n        each(pairs, function(pair) {\n          var value = pair[1];\n          if (isFunction(value)) {\n            func.prototype[pair[0]] = value;\n          } else {\n            delete func.prototype[pair[0]];\n          }\n        });\n        return func;\n      };\n    },\n    'nthArg': function(nthArg) {\n      return function(n) {\n        var arity = n < 0 ? 1 : (toInteger(n) + 1);\n        return curry(nthArg(n), arity);\n      };\n    },\n    'rearg': function(rearg) {\n      return function(func, indexes) {\n        var arity = indexes ? indexes.length : 0;\n        return curry(rearg(func, indexes), arity);\n      };\n    },\n    'runInContext': function(runInContext) {\n      return function(context) {\n        return baseConvert(util, runInContext(context), options);\n      };\n    }\n  };\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Casts `func` to a function with an arity capped iteratee if needed.\n   *\n   * @private\n   * @param {string} name The name of the function to inspect.\n   * @param {Function} func The function to inspect.\n   * @returns {Function} Returns the cast function.\n   */\n  function castCap(name, func) {\n    if (config.cap) {\n      var indexes = mapping.iterateeRearg[name];\n      if (indexes) {\n        return iterateeRearg(func, indexes);\n      }\n      var n = !isLib && mapping.iterateeAry[name];\n      if (n) {\n        return iterateeAry(func, n);\n      }\n    }\n    return func;\n  }\n\n  /**\n   * Casts `func` to a curried function if needed.\n   *\n   * @private\n   * @param {string} name The name of the function to inspect.\n   * @param {Function} func The function to inspect.\n   * @param {number} n The arity of `func`.\n   * @returns {Function} Returns the cast function.\n   */\n  function castCurry(name, func, n) {\n    return (forceCurry || (config.curry && n > 1))\n      ? curry(func, n)\n      : func;\n  }\n\n  /**\n   * Casts `func` to a fixed arity function if needed.\n   *\n   * @private\n   * @param {string} name The name of the function to inspect.\n   * @param {Function} func The function to inspect.\n   * @param {number} n The arity cap.\n   * @returns {Function} Returns the cast function.\n   */\n  function castFixed(name, func, n) {\n    if (config.fixed && (forceFixed || !mapping.skipFixed[name])) {\n      var data = mapping.methodSpread[name],\n          start = data && data.start;\n\n      return start  === undefined ? ary(func, n) : flatSpread(func, start);\n    }\n    return func;\n  }\n\n  /**\n   * Casts `func` to an rearged function if needed.\n   *\n   * @private\n   * @param {string} name The name of the function to inspect.\n   * @param {Function} func The function to inspect.\n   * @param {number} n The arity of `func`.\n   * @returns {Function} Returns the cast function.\n   */\n  function castRearg(name, func, n) {\n    return (config.rearg && n > 1 && (forceRearg || !mapping.skipRearg[name]))\n      ? rearg(func, mapping.methodRearg[name] || mapping.aryRearg[n])\n      : func;\n  }\n\n  /**\n   * Creates a clone of `object` by `path`.\n   *\n   * @private\n   * @param {Object} object The object to clone.\n   * @param {Array|string} path The path to clone by.\n   * @returns {Object} Returns the cloned object.\n   */\n  function cloneByPath(object, path) {\n    path = toPath(path);\n\n    var index = -1,\n        length = path.length,\n        lastIndex = length - 1,\n        result = clone(Object(object)),\n        nested = result;\n\n    while (nested != null && ++index < length) {\n      var key = path[index],\n          value = nested[key];\n\n      if (value != null &&\n          !(isFunction(value) || isError(value) || isWeakMap(value))) {\n        nested[key] = clone(index == lastIndex ? value : Object(value));\n      }\n      nested = nested[key];\n    }\n    return result;\n  }\n\n  /**\n   * Converts `lodash` to an immutable auto-curried iteratee-first data-last\n   * version with conversion `options` applied.\n   *\n   * @param {Object} [options] The options object. See `baseConvert` for more details.\n   * @returns {Function} Returns the converted `lodash`.\n   */\n  function convertLib(options) {\n    return _.runInContext.convert(options)(undefined);\n  }\n\n  /**\n   * Create a converter function for `func` of `name`.\n   *\n   * @param {string} name The name of the function to convert.\n   * @param {Function} func The function to convert.\n   * @returns {Function} Returns the new converter function.\n   */\n  function createConverter(name, func) {\n    var realName = mapping.aliasToReal[name] || name,\n        methodName = mapping.remap[realName] || realName,\n        oldOptions = options;\n\n    return function(options) {\n      var newUtil = isLib ? pristine : helpers,\n          newFunc = isLib ? pristine[methodName] : func,\n          newOptions = assign(assign({}, oldOptions), options);\n\n      return baseConvert(newUtil, realName, newFunc, newOptions);\n    };\n  }\n\n  /**\n   * Creates a function that wraps `func` to invoke its iteratee, with up to `n`\n   * arguments, ignoring any additional arguments.\n   *\n   * @private\n   * @param {Function} func The function to cap iteratee arguments for.\n   * @param {number} n The arity cap.\n   * @returns {Function} Returns the new function.\n   */\n  function iterateeAry(func, n) {\n    return overArg(func, function(func) {\n      return typeof func == 'function' ? baseAry(func, n) : func;\n    });\n  }\n\n  /**\n   * Creates a function that wraps `func` to invoke its iteratee with arguments\n   * arranged according to the specified `indexes` where the argument value at\n   * the first index is provided as the first argument, the argument value at\n   * the second index is provided as the second argument, and so on.\n   *\n   * @private\n   * @param {Function} func The function to rearrange iteratee arguments for.\n   * @param {number[]} indexes The arranged argument indexes.\n   * @returns {Function} Returns the new function.\n   */\n  function iterateeRearg(func, indexes) {\n    return overArg(func, function(func) {\n      var n = indexes.length;\n      return baseArity(rearg(baseAry(func, n), indexes), n);\n    });\n  }\n\n  /**\n   * Creates a function that invokes `func` with its first argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function() {\n      var length = arguments.length;\n      if (!length) {\n        return func();\n      }\n      var args = Array(length);\n      while (length--) {\n        args[length] = arguments[length];\n      }\n      var index = config.rearg ? 0 : (length - 1);\n      args[index] = transform(args[index]);\n      return func.apply(undefined, args);\n    };\n  }\n\n  /**\n   * Creates a function that wraps `func` and applys the conversions\n   * rules by `name`.\n   *\n   * @private\n   * @param {string} name The name of the function to wrap.\n   * @param {Function} func The function to wrap.\n   * @returns {Function} Returns the converted function.\n   */\n  function wrap(name, func, placeholder) {\n    var result,\n        realName = mapping.aliasToReal[name] || name,\n        wrapped = func,\n        wrapper = wrappers[realName];\n\n    if (wrapper) {\n      wrapped = wrapper(func);\n    }\n    else if (config.immutable) {\n      if (mapping.mutate.array[realName]) {\n        wrapped = wrapImmutable(func, cloneArray);\n      }\n      else if (mapping.mutate.object[realName]) {\n        wrapped = wrapImmutable(func, createCloner(func));\n      }\n      else if (mapping.mutate.set[realName]) {\n        wrapped = wrapImmutable(func, cloneByPath);\n      }\n    }\n    each(aryMethodKeys, function(aryKey) {\n      each(mapping.aryMethod[aryKey], function(otherName) {\n        if (realName == otherName) {\n          var data = mapping.methodSpread[realName],\n              afterRearg = data && data.afterRearg;\n\n          result = afterRearg\n            ? castFixed(realName, castRearg(realName, wrapped, aryKey), aryKey)\n            : castRearg(realName, castFixed(realName, wrapped, aryKey), aryKey);\n\n          result = castCap(realName, result);\n          result = castCurry(realName, result, aryKey);\n          return false;\n        }\n      });\n      return !result;\n    });\n\n    result || (result = wrapped);\n    if (result == func) {\n      result = forceCurry ? curry(result, 1) : function() {\n        return func.apply(this, arguments);\n      };\n    }\n    result.convert = createConverter(realName, func);\n    result.placeholder = func.placeholder = placeholder;\n\n    return result;\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  if (!isObj) {\n    return wrap(name, func, defaultHolder);\n  }\n  var _ = func;\n\n  // Convert methods by ary cap.\n  var pairs = [];\n  each(aryMethodKeys, function(aryKey) {\n    each(mapping.aryMethod[aryKey], function(key) {\n      var func = _[mapping.remap[key] || key];\n      if (func) {\n        pairs.push([key, wrap(key, func, _)]);\n      }\n    });\n  });\n\n  // Convert remaining methods.\n  each(keys(_), function(key) {\n    var func = _[key];\n    if (typeof func == 'function') {\n      var length = pairs.length;\n      while (length--) {\n        if (pairs[length][0] == key) {\n          return;\n        }\n      }\n      func.convert = createConverter(key, func);\n      pairs.push([key, func]);\n    }\n  });\n\n  // Assign to `_` leaving `_.prototype` unchanged to allow chaining.\n  each(pairs, function(pair) {\n    _[pair[0]] = pair[1];\n  });\n\n  _.convert = convertLib;\n  _.placeholder = _;\n\n  // Assign aliases.\n  each(keys(_), function(key) {\n    each(mapping.realToAlias[key] || [], function(alias) {\n      _[alias] = _[key];\n    });\n  });\n\n  return _;\n}\n\nmodule.exports = baseConvert;\n","import clamp from 'lodash/clamp';\nimport uniqueId from 'lodash/uniqueId';\nimport { stopEvent, filterVisible } from '../../../../utils/utils';\nimport { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_FOCUS_CONTENT, POSITION_ABSOLUTE, POSITION_FIXED, HOME, END, ARROW_UP, ARROW_DOWN, ENTER, SPACE, GL_DROPDOWN_CONTENTS_CLASS } from '../constants';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';\nimport GlBaseDropdown, { BASE_DROPDOWN_CLASS } from '../base_dropdown/base_dropdown';\nimport GlDisclosureDropdownItem, { ITEM_CLASS } from './disclosure_dropdown_item';\nimport GlDisclosureDropdownGroup from './disclosure_dropdown_group';\nimport { itemsValidator, hasOnlyListItems, isItem } from './utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst DROPDOWN_SELECTOR = `.${BASE_DROPDOWN_CLASS}`;\nconst ITEM_SELECTOR = `.${ITEM_CLASS}`;\nvar script = {\n  name: 'GlDisclosureDropdown',\n  events: {\n    GL_DROPDOWN_SHOWN,\n    GL_DROPDOWN_HIDDEN,\n    GL_DROPDOWN_BEFORE_CLOSE,\n    GL_DROPDOWN_FOCUS_CONTENT\n  },\n  components: {\n    GlBaseDropdown,\n    GlDisclosureDropdownItem,\n    GlDisclosureDropdownGroup\n  },\n  props: {\n    /**\n     * Items to display in the dropdown\n     */\n    items: {\n      type: Array,\n      required: false,\n      default: () => [],\n      validator: itemsValidator\n    },\n    /**\n     * Toggle button text\n     */\n    toggleText: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Toggle text to be read by screen readers only\n     */\n    textSrOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Styling option - dropdown's toggle category\n     */\n    category: {\n      type: String,\n      required: false,\n      default: buttonCategoryOptions.primary,\n      validator: value => value in buttonCategoryOptions\n    },\n    /**\n     * Styling option - dropdown's toggle variant\n     */\n    variant: {\n      type: String,\n      required: false,\n      default: dropdownVariantOptions.default,\n      validator: value => value in dropdownVariantOptions\n    },\n    /**\n     * The size of the dropdown toggle\n     */\n    size: {\n      type: String,\n      required: false,\n      default: 'medium',\n      validator: value => value in buttonSizeOptions\n    },\n    /**\n     * Icon name that will be rendered in the toggle button\n     */\n    icon: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Set to \"true\" to disable the dropdown\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Set to \"true\" when dropdown content (items) is loading\n     * It will render a small loader in the dropdown toggle and make it disabled\n     */\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Custom toggle id.\n     * For instance, it can be referenced by tooltip or popover\n     */\n    toggleId: {\n      type: String,\n      required: false,\n      default: () => uniqueId('dropdown-toggle-btn-')\n    },\n    /**\n     * Additional CSS classes to customize toggle appearance\n     */\n    toggleClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    /**\n     * Set to \"true\" to hide the caret\n     */\n    noCaret: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Align disclosure dropdown with respect to the toggle button\n     */\n    placement: {\n      type: String,\n      required: false,\n      default: 'bottom-start',\n      validator: value => Object.keys(dropdownPlacements).includes(value)\n    },\n    /**\n     * The `aria-labelledby` attribute value for the toggle button\n     * Provide the string of ids seperated by space\n     */\n    toggleAriaLabelledBy: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The `aria-labelledby` attribute value for the list of options\n     * Provide the string of ids seperated by space\n     */\n    listAriaLabelledBy: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Render the toggle button as a block element\n     */\n    block: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Custom offset to be applied to Floating UI's offset middleware.\n     * https://floating-ui.com/docs/offset\n     */\n    dropdownOffset: {\n      type: [Number, Object],\n      required: false,\n      default: undefined\n    },\n    /**\n     * Lets the dropdown extend to match its content's width, up to a maximum width\n     * defined by the `$gl-new-dropdown-max-width` variable.\n     */\n    fluidWidth: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Close the dropdown on item click (action)\n     */\n    autoClose: {\n      type: Boolean,\n      required: false,\n      default: true\n    },\n    /**\n     * Strategy to be applied by computePosition. If the dropdown's container is too short for it to\n     * fit in, setting this to fixed will let it position itself above its container.\n     * https://floating-ui.com/docs/computePosition#strategy\n     */\n    positioningStrategy: {\n      type: String,\n      required: false,\n      default: POSITION_ABSOLUTE,\n      validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n    },\n    /**\n     * Opens dropdown on render\n     */\n    startOpened: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  data() {\n    return {\n      disclosureId: uniqueId('disclosure-'),\n      nextFocusedItemIndex: null\n    };\n  },\n  computed: {\n    disclosureTag() {\n      var _this$items;\n      if ((_this$items = this.items) !== null && _this$items !== void 0 && _this$items.length ||\n      // eslint-disable-next-line @gitlab/vue-prefer-dollar-scopedslots\n      hasOnlyListItems(this.$scopedSlots.default || this.$slots.default)) {\n        return 'ul';\n      }\n      return 'div';\n    },\n    hasCustomToggle() {\n      return Boolean(this.$scopedSlots.toggle);\n    }\n  },\n  mounted() {\n    if (this.startOpened) {\n      this.open();\n    }\n  },\n  methods: {\n    open() {\n      this.$refs.baseDropdown.open();\n    },\n    close() {\n      this.$refs.baseDropdown.close();\n    },\n    onShow() {\n      /**\n       * Emitted when dropdown is shown\n       *\n       * @event shown\n       */\n      this.$emit(GL_DROPDOWN_SHOWN);\n    },\n    onBeforeClose(event) {\n      /**\n       * Emitted when dropdown is about to be closed\n       *\n       * @event beforeClose\n       */\n      this.$emit(GL_DROPDOWN_BEFORE_CLOSE, event);\n    },\n    onHide() {\n      /**\n       * Emitted when dropdown is hidden\n       *\n       * @event hidden\n       */\n      this.$emit(GL_DROPDOWN_HIDDEN);\n      this.nextFocusedItemIndex = null;\n    },\n    onKeydown(event) {\n      const {\n        code\n      } = event;\n      const elements = this.getFocusableListItemElements();\n      if (elements.length < 1) return;\n      let stop = true;\n      if (code === HOME) {\n        this.focusItem(0, elements);\n      } else if (code === END) {\n        this.focusItem(elements.length - 1, elements);\n      } else if (code === ARROW_UP) {\n        this.focusNextItem(event, elements, -1);\n      } else if (code === ARROW_DOWN) {\n        this.focusNextItem(event, elements, 1);\n      } else if (code === ENTER || code === SPACE) {\n        this.handleAutoClose(event);\n      } else {\n        stop = false;\n      }\n      if (stop) {\n        stopEvent(event);\n      }\n    },\n    getFocusableListItemElements() {\n      var _this$$refs$content;\n      const items = (_this$$refs$content = this.$refs.content) === null || _this$$refs$content === void 0 ? void 0 : _this$$refs$content.querySelectorAll(ITEM_SELECTOR);\n      return filterVisible(Array.from(items || []));\n    },\n    focusNextItem(event, elements, offset) {\n      const {\n        target\n      } = event;\n      const currentIndex = elements.indexOf(target);\n      const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);\n      this.focusItem(nextIndex, elements);\n    },\n    focusItem(index, elements) {\n      var _elements$index;\n      this.nextFocusedItemIndex = index;\n      (_elements$index = elements[index]) === null || _elements$index === void 0 ? void 0 : _elements$index.focus();\n    },\n    closeAndFocus() {\n      this.$refs.baseDropdown.closeAndFocus();\n    },\n    handleAction(action) {\n      // See https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4376 for\n      // detailed explanation why we need requestAnimationFrame\n      window.requestAnimationFrame(() => {\n        /**\n         * Emitted when one of disclosure dropdown items is clicked\n         *\n         * @event action\n         */\n        this.$emit('action', action);\n      });\n    },\n    handleAutoClose(e) {\n      if (this.autoClose && e.target.closest(ITEM_SELECTOR) && e.target.closest(DROPDOWN_SELECTOR) === this.$refs.baseDropdown.$el) {\n        this.closeAndFocus();\n      }\n    },\n    uniqueItemId() {\n      return uniqueId(`disclosure-item-`);\n    },\n    isItem\n  },\n  GL_DROPDOWN_CONTENTS_CLASS\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:\"baseDropdown\",staticClass:\"gl-disclosure-dropdown\",attrs:{\"aria-labelledby\":_vm.toggleAriaLabelledBy,\"toggle-id\":_vm.toggleId,\"toggle-text\":_vm.toggleText,\"toggle-class\":_vm.toggleClass,\"text-sr-only\":_vm.textSrOnly,\"category\":_vm.category,\"variant\":_vm.variant,\"size\":_vm.size,\"icon\":_vm.icon,\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"no-caret\":_vm.noCaret,\"placement\":_vm.placement,\"block\":_vm.block,\"offset\":_vm.dropdownOffset,\"fluid-width\":_vm.fluidWidth,\"positioning-strategy\":_vm.positioningStrategy},on:_vm._d({},[_vm.$options.events.GL_DROPDOWN_SHOWN,_vm.onShow,_vm.$options.events.GL_DROPDOWN_HIDDEN,_vm.onHide,_vm.$options.events.GL_DROPDOWN_BEFORE_CLOSE,_vm.onBeforeClose,_vm.$options.events.GL_DROPDOWN_FOCUS_CONTENT,_vm.onKeydown]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:\"toggle\",fn:function(){return [_vm._t(\"toggle\")]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._t(\"header\"),_vm._v(\" \"),_c(_vm.disclosureTag,{ref:\"content\",tag:\"component\",class:_vm.$options.GL_DROPDOWN_CONTENTS_CLASS,attrs:{\"id\":_vm.disclosureId,\"aria-labelledby\":_vm.listAriaLabelledBy || _vm.toggleId,\"data-testid\":\"disclosure-content\",\"tabindex\":\"-1\"},on:{\"keydown\":_vm.onKeydown,\"click\":_vm.handleAutoClose}},[_vm._t(\"default\",function(){return [_vm._l((_vm.items),function(item,index){return [(_vm.isItem(item))?[_c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([('list-item' in _vm.$scopedSlots)?{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":item})]},proxy:true}:null],null,true)})]:[_c('gl-disclosure-dropdown-group',{key:item.name,attrs:{\"bordered\":index !== 0,\"group\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([(_vm.$scopedSlots['group-label'])?{key:\"group-label\",fn:function(){return [_vm._t(\"group-label\",null,{\"group\":item})]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.$scopedSlots['list-item'])?_vm._l((item.items),function(groupItem){return _c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":groupItem},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":groupItem})]},proxy:true}],null,true)})}):_vm._e()],2)]]})]})],2),_vm._v(\" \"),_vm._t(\"footer\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { DROPDOWN_SELECTOR, ITEM_SELECTOR };\n","import first from 'lodash/first';\nimport last from 'lodash/last';\nimport isString from 'lodash/isString';\nimport { modulo } from '../../../utils/number_utils';\n\nconst TERM_TOKEN_TYPE = 'filtered-search-term';\nconst INTENT_ACTIVATE_PREVIOUS = 'intent-activate-previous';\nconst TOKEN_CLOSE_SELECTOR = '.gl-token-close';\nfunction isEmptyTerm(token) {\n  return token.type === TERM_TOKEN_TYPE && token.value.data.trim() === '';\n}\nfunction normalizeTokens(tokens) {\n  const result = [];\n  tokens.forEach(token => {\n    if (isEmptyTerm(token)) {\n      return;\n    }\n    if (token.type !== TERM_TOKEN_TYPE) {\n      result.push({\n        ...token\n      });\n    } else if (result.length > 0 && typeof result[result.length - 1] === 'string') {\n      result[result.length - 1] += ` ${token.value.data}`;\n    } else {\n      result.push(token.value.data);\n    }\n  });\n  return result;\n}\nfunction assertValidTokens(tokens) {\n  if (!Array.isArray(tokens) && !typeof tokens === 'string') {\n    throw new TypeError('Either string or array of tokens is expected');\n  }\n}\nfunction needDenormalization(tokens) {\n  if (typeof tokens === 'string') {\n    return true;\n  }\n  assertValidTokens(tokens);\n  return tokens.some(t => typeof t === 'string' || !t.id);\n}\n\n/**\n * Given an initial index, step size and array length, returns an index that is\n * within the array bounds (unless step is 0; see † below).\n *\n * The step can be any positive or negative integer, including zero.\n *\n * An out-of-bounds index is considered 'uninitialised', and is handled\n * specially. For instance, the 'next' index of 'uninitialised' is the first\n * index:\n *\n *     stepIndexAndWrap(-1, 1, 5) === 0\n *\n * The 'previous' index of 'uninitialised' is the last index:\n *\n *     stepIndexAndWrap(-1, -1, 5) === 4\n *\n * †: If step is 0, the index is returned as-is, which may be out-of-bounds.\n *\n * @param {number} index The initial index.\n * @param {number} step The amount to step by (positive or negative).\n * @param {number} length The length of the array.\n * @returns {number}\n */\nfunction stepIndexAndWrap(index, step, length) {\n  if (step === 0) return index;\n  let start;\n  const indexInRange = index >= 0 && index < length;\n  if (indexInRange) {\n    // Step from the valid index.\n    start = index;\n  } else if (step > 0) {\n    // Step forwards from the beginning of the array.\n    start = -1;\n  } else {\n    // Step backwards from the end of the array.\n    start = length;\n  }\n  return modulo(start + step, length);\n}\n\n/**\n * Transforms a given token definition to an option definition.\n *\n * @param {Object} token A token definition (see GlFilteredSearch's\n *     availableTokens prop).\n * @returns {Object} A option definition (see GlFilteredSearchTokenSegment's\n *     options prop).\n */\nfunction tokenToOption(_ref) {\n  let {\n    icon,\n    title,\n    type,\n    optionComponent\n  } = _ref;\n  return {\n    icon,\n    title,\n    value: type,\n    component: optionComponent\n  };\n}\nlet tokenIdCounter = 0;\nconst getTokenId = () => {\n  const tokenId = `token-${tokenIdCounter}`;\n  tokenIdCounter += 1;\n  return tokenId;\n};\n/**\n * Ensure the given token has an `id` property, which `GlFilteredSearch` relies\n * on as a unique key for the token.\n *\n * If the given token does not have an `id`, it returns a shallow copy of the\n * token with an `id`. Otherwise, it returns the given token.\n *\n * @param {object} token The token to check.\n * @returns {object} A token with an `id`.\n */\nfunction ensureTokenId(token) {\n  if (!token.id) {\n    return {\n      ...token,\n      id: getTokenId()\n    };\n  }\n  return token;\n}\nfunction createTerm() {\n  let data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n  return {\n    id: getTokenId(),\n    type: TERM_TOKEN_TYPE,\n    value: {\n      data\n    }\n  };\n}\nfunction denormalizeTokens(inputTokens) {\n  let termsAsTokens = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n  assertValidTokens(inputTokens);\n  const tokens = Array.isArray(inputTokens) ? inputTokens : [inputTokens];\n  return tokens.reduce((result, t) => {\n    if (typeof t === 'string') {\n      if (termsAsTokens) {\n        const trimmedText = t.trim();\n        if (trimmedText) result.push(createTerm(trimmedText));\n      } else {\n        const stringTokens = t.split(' ').filter(Boolean);\n        stringTokens.forEach(strToken => result.push(createTerm(strToken)));\n      }\n    } else {\n      result.push(ensureTokenId(t));\n    }\n    return result;\n  }, []);\n}\n\n/**\n * Returns `true` if `text` contains `query` (case insensitive).\n *\n * This is used in `filter` and `find` array methods for token segment options.\n *\n * @param {string} text The string to look within.\n * @param {string} query The string to find inside the text.\n * @returns {boolean}\n */\nfunction match(text, query) {\n  return text.toLowerCase().includes(query.toLowerCase());\n}\nconst termTokenDefinition = {\n  type: TERM_TOKEN_TYPE,\n  icon: 'title',\n  title: 'Search for this text'\n};\nfunction splitOnQuotes(str) {\n  if (first(str) === \"'\" && last(str) === \"'\") {\n    return [str];\n  }\n  if (first(str) === '\"' && last(str) === '\"') {\n    return [str];\n  }\n  const queue = str.split(' ');\n  const result = [];\n  let waitingForMatchingQuote = false;\n  let quoteContent = '';\n  while (queue.length) {\n    const part = queue.shift();\n    const quoteIndex = part.indexOf('\"');\n    if (quoteIndex === -1) {\n      if (waitingForMatchingQuote) {\n        quoteContent += ` ${part}`;\n      } else {\n        result.push(part);\n      }\n    } else {\n      const [firstPart, secondPart] = part.split('\"', 2);\n      if (waitingForMatchingQuote) {\n        waitingForMatchingQuote = false;\n        quoteContent += ` ${firstPart}\"`;\n        result.push(quoteContent);\n        quoteContent = '';\n        if (secondPart.length) {\n          queue.unshift(secondPart);\n        }\n      } else {\n        waitingForMatchingQuote = true;\n        if (firstPart.length) {\n          result.push(firstPart);\n        }\n        quoteContent = `\"${secondPart}`;\n      }\n    }\n  }\n  return result;\n}\n\n/**\n *  wraps the incoming token in double quotes.\n *  Eg. Foo Bar becomes \"Foo Bar\"\n *\n *  1. token must have space.\n *  2. token should not already have a quote around it.\n */\nfunction wrapTokenInQuotes(token) {\n  if (!isString(token)) {\n    return token;\n  }\n  if (!token.includes(' ')) {\n    return token;\n  }\n  const quotes = [\"'\", '\"'];\n\n  // If the token starts and ends with a quote, eg. \"Foo Bar\", then return the original token.\n  if (quotes.some(quote => first(token) === quote && last(token) === quote)) {\n    return token;\n  }\n  return `\"${token}\"`;\n}\n\nexport { INTENT_ACTIVATE_PREVIOUS, TERM_TOKEN_TYPE, TOKEN_CLOSE_SELECTOR, createTerm, denormalizeTokens, ensureTokenId, isEmptyTerm, match, needDenormalization, normalizeTokens, splitOnQuotes, stepIndexAndWrap, termTokenDefinition, tokenToOption, wrapTokenInQuotes };\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array == null ? 0 : array.length;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","module.exports = {\n  'ary': require('../ary'),\n  'assign': require('../_baseAssign'),\n  'clone': require('../clone'),\n  'curry': require('../curry'),\n  'forEach': require('../_arrayEach'),\n  'isArray': require('../isArray'),\n  'isError': require('../isError'),\n  'isFunction': require('../isFunction'),\n  'isWeakMap': require('../isWeakMap'),\n  'iteratee': require('../iteratee'),\n  'keys': require('../_baseKeys'),\n  'rearg': require('../rearg'),\n  'toInteger': require('../toInteger'),\n  'toPath': require('../toPath')\n};\n","import truncate from 'lodash/truncate';\nimport get from 'lodash/get';\nimport { avatarsInlineSizeOptions } from '../../../utils/constants';\nimport GlAvatar from '../avatar/avatar';\nimport GlTooltip from '../tooltip/tooltip';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'AvatarsInline',\n  components: {\n    GlAvatar,\n    GlTooltip\n  },\n  props: {\n    avatars: {\n      type: Array,\n      required: true\n    },\n    maxVisible: {\n      type: Number,\n      required: true\n    },\n    avatarSize: {\n      type: Number,\n      required: true,\n      validator: value => avatarsInlineSizeOptions.includes(value)\n    },\n    collapsed: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    badgeSrOnlyText: {\n      type: String,\n      required: true\n    },\n    badgeTooltipProp: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    badgeTooltipMaxChars: {\n      type: Number,\n      required: false,\n      default: null\n    }\n  },\n  computed: {\n    hiddenAvatars() {\n      return this.avatars.slice(this.maxVisible);\n    },\n    collapsable() {\n      return this.hiddenAvatars.length > 0;\n    },\n    visibleAvatars() {\n      return this.collapsed ? this.avatars.slice(0, this.maxVisible) : this.avatars;\n    },\n    badgeSize() {\n      return {\n        16: 'sm',\n        24: 'md',\n        32: 'lg'\n      }[this.avatarSize] || 'lg';\n    },\n    badgeLabel() {\n      return `+${this.hiddenAvatars.length}`;\n    },\n    badgeTooltipTitle() {\n      if (!this.badgeTooltipProp) {\n        return '';\n      }\n      const tooltipTitle = this.hiddenAvatars.map(avatar => get(avatar, this.badgeTooltipProp, '').trim()).join(', ');\n\n      // truncate will append '...'\n      // we need to take these extra 3 characters into account in badgeTooltipMaxChars\n      return this.badgeTooltipMaxChars ? truncate(tooltipTitle, {\n        length: this.badgeTooltipMaxChars\n      }) : tooltipTitle;\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-avatars-inline\",class:(\"gl-avatars-inline-\" + _vm.badgeSize)},[_vm._l((_vm.visibleAvatars),function(avatar,index){return _c('div',{key:index,staticClass:\"gl-avatars-inline-child\"},[_vm._t(\"avatar\",function(){return [_c('gl-avatar',_vm._b({attrs:{\"size\":_vm.avatarSize}},'gl-avatar',avatar,false))]},{\"avatar\":avatar})],2)}),_vm._v(\" \"),(_vm.collapsed && _vm.collapsable)?_c('div',{staticClass:\"gl-avatars-inline-child\"},[(_vm.badgeTooltipProp)?_c('gl-tooltip',{attrs:{\"target\":function () { return _vm.$refs.badge; }}},[_vm._v(\"\\n      \"+_vm._s(_vm.badgeTooltipTitle)+\"\\n    \")]):_vm._e(),_vm._v(\" \"),_c('span',{ref:\"badge\",class:['gl-avatars-inline-badge', _vm.badgeSize],attrs:{\"data-testid\":\"collapsed-avatars-badge\",\"aria-hidden\":\"true\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.badgeLabel)+\"\\n    \")]),_vm._v(\" \"),_c('span',{staticClass:\"gl-sr-only\",attrs:{\"data-testid\":\"badge-sr-only-text\"}},[_vm._v(_vm._s(_vm.badgeSrOnlyText))])],1):_vm._e()],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import dateFormat, { masks } from '~/lib/dateformat';\nimport {\n  nDaysBefore,\n  getStartOfDay,\n  getCurrentUtcDate,\n  nWeeksBefore,\n  nYearsBefore,\n} from '~/lib/utils/datetime_utility';\nimport { s__, __, sprintf, n__ } from '~/locale';\nimport { helpPagePath } from '~/helpers/help_page_helper';\n\nexport const DATE_RANGE_LIMIT = 180;\nexport const PROJECTS_PER_PAGE = 50;\n\nconst { isoDate } = masks;\nexport const dateFormats = {\n  isoDate,\n  defaultDate: 'mmm dd, yyyy',\n  defaultDateTime: 'mmm dd, yyyy h:MMtt',\n  month: 'mmmm',\n};\n\nconst TODAY = getCurrentUtcDate();\nconst SAME_DAY_OFFSET = 1;\n\nconst startOfToday = getStartOfDay(new Date(), { utc: true });\n\nexport const LAST_30_DAYS = nDaysBefore(TODAY, 30 - SAME_DAY_OFFSET, { utc: true });\n\nconst lastXDays = __('Last %{days} days');\nconst lastWeek = nWeeksBefore(TODAY, 1, { utc: true });\nconst last90Days = nDaysBefore(TODAY, 90 - SAME_DAY_OFFSET, { utc: true });\nconst last180Days = nDaysBefore(TODAY, 180 - SAME_DAY_OFFSET, { utc: true });\nconst mrThroughputStartDate = nDaysBefore(startOfToday, DATE_RANGE_LIMIT, { utc: true });\nconst formatDateParam = (d) => dateFormat(d, dateFormats.isoDate, true);\n\nexport const DATE_RANGE_CUSTOM_VALUE = 'custom';\nexport const DATE_RANGE_LAST_30_DAYS_VALUE = 'last_30_days';\n\nexport const DEFAULT_DROPDOWN_DATE_RANGES = [\n  {\n    text: __('Last week'),\n    value: 'last_week',\n    startDate: lastWeek,\n    endDate: TODAY,\n  },\n  {\n    text: sprintf(lastXDays, { days: 30 }),\n    value: DATE_RANGE_LAST_30_DAYS_VALUE,\n    startDate: LAST_30_DAYS,\n    endDate: TODAY,\n  },\n  {\n    text: sprintf(lastXDays, { days: 90 }),\n    value: 'last_90_days',\n    startDate: last90Days,\n    endDate: TODAY,\n  },\n  {\n    text: sprintf(lastXDays, { days: 180 }),\n    value: 'last_180_days',\n    startDate: last180Days,\n    endDate: TODAY,\n  },\n];\n\nexport const MAX_DATE_RANGE_TEXT = (maxDateRange) => {\n  return sprintf(\n    __(\n      'Showing data for workflow items completed in this date range. Date range limited to %{maxDateRange} days.',\n    ),\n    {\n      maxDateRange,\n    },\n  );\n};\n\n// Limits the number of decimals we round values to\nexport const MAX_METRIC_PRECISION = 4;\n\nexport const UNITS = {\n  COUNT: 'COUNT',\n  DAYS: 'DAYS',\n  PER_DAY: 'PER_DAY',\n  PERCENT: 'PERCENT',\n};\n\nexport const NUMBER_OF_DAYS_SELECTED = (numDays) => {\n  return n__('1 day selected', '%d days selected', numDays);\n};\n\nexport const METRIC_POPOVER_LABEL = s__('ValueStreamAnalytics|View details');\n\nexport const ISSUES_COMPLETED_TYPE = 'issues_completed';\n\nexport const ALL_METRICS_QUERY_TYPE = 'ALL_METRICS_QUERY_TYPE';\nexport const DORA_METRICS_QUERY_TYPE = 'DORA_METRICS_QUERY_TYPE';\nexport const FLOW_METRICS_QUERY_TYPE = 'FLOW_METRICS_QUERY_TYPE';\n\nexport const FLOW_METRICS = {\n  LEAD_TIME: 'lead_time',\n  CYCLE_TIME: 'cycle_time',\n  ISSUES: 'issues',\n  ISSUES_COMPLETED: ISSUES_COMPLETED_TYPE,\n  COMMITS: 'commits',\n  DEPLOYS: 'deploys',\n  MEDIAN_TIME_TO_MERGE: 'median_time_to_merge',\n};\n\nexport const DORA_METRICS = {\n  DEPLOYMENT_FREQUENCY: 'deployment_frequency',\n  LEAD_TIME_FOR_CHANGES: 'lead_time_for_changes',\n  TIME_TO_RESTORE_SERVICE: 'time_to_restore_service',\n  CHANGE_FAILURE_RATE: 'change_failure_rate',\n};\n\nexport const VSA_METRICS_GROUPS = [\n  {\n    key: 'lifecycle_metrics',\n    title: s__('ValueStreamAnalytics|Lifecycle metrics'),\n    keys: [\n      FLOW_METRICS.LEAD_TIME,\n      FLOW_METRICS.CYCLE_TIME,\n      FLOW_METRICS.ISSUES,\n      FLOW_METRICS.COMMITS,\n      FLOW_METRICS.DEPLOYS,\n    ],\n  },\n];\n\nexport const VULNERABILITY_CRITICAL_TYPE = 'vulnerability_critical';\nexport const VULNERABILITY_HIGH_TYPE = 'vulnerability_high';\n\nexport const VULNERABILITY_METRICS = {\n  CRITICAL: VULNERABILITY_CRITICAL_TYPE,\n  HIGH: VULNERABILITY_HIGH_TYPE,\n};\n\nexport const MERGE_REQUEST_THROUGHPUT_TYPE = 'merge_request_throughput';\n\nexport const MERGE_REQUEST_METRICS = {\n  THROUGHPUT: MERGE_REQUEST_THROUGHPUT_TYPE,\n};\n\nexport const CONTRIBUTOR_COUNT_TYPE = 'contributor_count';\n\nexport const CONTRIBUTOR_METRICS = {\n  COUNT: CONTRIBUTOR_COUNT_TYPE,\n};\n\nexport const AI_METRICS = {\n  CODE_SUGGESTIONS_USAGE_RATE: 'code_suggestions_usage_rate',\n  CODE_SUGGESTIONS_ACCEPTANCE_RATE: 'code_suggestions_acceptance_rate',\n  DUO_CHAT_USAGE_RATE: 'duo_chat_usage_rate',\n  DUO_USAGE_RATE: 'duo_usage_rate',\n};\n\nexport const VALUE_STREAM_METRIC_DISPLAY_UNITS = {\n  [UNITS.COUNT]: '',\n  [UNITS.DAYS]: __('days'),\n  [UNITS.PER_DAY]: __('/day'),\n  [UNITS.PERCENT]: '%',\n};\n\n// NOTE: ideally we would return these fields in the metrics queries\n//       the flow metrics query returns some but not all fields we need\n//        while the DORA query do not return any.\nexport const VALUE_STREAM_METRIC_TILE_METADATA = {\n  [DORA_METRICS.DEPLOYMENT_FREQUENCY]: {\n    label: s__('DORA4Metrics|Deployment frequency'),\n    unit: UNITS.PER_DAY,\n    description: s__(\n      'ValueStreamAnalytics|Average number of deployments to production per day. This metric measures how often value is delivered to end users.',\n    ),\n    groupLink: '-/analytics/ci_cd?tab=deployment-frequency',\n    projectLink: '-/pipelines/charts?chart=deployment-frequency',\n    docsLink: helpPagePath('user/analytics/dora_metrics', { anchor: 'deployment-frequency' }),\n  },\n  [DORA_METRICS.LEAD_TIME_FOR_CHANGES]: {\n    label: s__('DORA4Metrics|Lead time for changes'),\n    unit: UNITS.DAYS,\n    description: s__(\n      'ValueStreamAnalytics|The time to successfully deliver a commit into production. This metric reflects the efficiency of CI/CD pipelines.',\n    ),\n    groupLink: '-/analytics/ci_cd?tab=lead-time',\n    projectLink: '-/pipelines/charts?chart=lead-time',\n    docsLink: helpPagePath('user/analytics/dora_metrics', { anchor: 'lead-time-for-changes' }),\n  },\n  [DORA_METRICS.TIME_TO_RESTORE_SERVICE]: {\n    label: s__('DORA4Metrics|Time to restore service'),\n    unit: UNITS.DAYS,\n    description: s__(\n      'ValueStreamAnalytics|The time it takes an organization to recover from a failure in production.',\n    ),\n    groupLink: '-/analytics/ci_cd?tab=time-to-restore-service',\n    projectLink: '-/pipelines/charts?chart=time-to-restore-service',\n    docsLink: helpPagePath('user/analytics/dora_metrics', { anchor: 'time-to-restore-service' }),\n  },\n  [DORA_METRICS.CHANGE_FAILURE_RATE]: {\n    label: s__('DORA4Metrics|Change failure rate'),\n    description: s__(\n      'ValueStreamAnalytics|Percentage of deployments that cause an incident in production.',\n    ),\n    groupLink: '-/analytics/ci_cd?tab=change-failure-rate',\n    projectLink: '-/pipelines/charts?chart=change-failure-rate',\n    docsLink: helpPagePath('user/analytics/dora_metrics', { anchor: 'change-failure-rate' }),\n    unit: UNITS.PERCENT,\n  },\n  [FLOW_METRICS.LEAD_TIME]: {\n    label: s__('DORA4Metrics|Lead time'),\n    description: s__('ValueStreamAnalytics|Median time from issue created to issue closed.'),\n    groupLink: '-/analytics/value_stream_analytics',\n    projectLink: '-/value_stream_analytics',\n    docsLink: helpPagePath('user/group/value_stream_analytics/index', {\n      anchor: 'lifecycle-metrics',\n    }),\n    unit: UNITS.DAYS,\n  },\n  [FLOW_METRICS.CYCLE_TIME]: {\n    label: s__('DORA4Metrics|Cycle time'),\n    description: s__(\n      \"ValueStreamAnalytics|Median time from the earliest commit of a linked issue's merge request to when that issue is closed.\",\n    ),\n    groupLink: '-/analytics/value_stream_analytics',\n    projectLink: '-/value_stream_analytics',\n    docsLink: helpPagePath('user/group/value_stream_analytics/index', {\n      anchor: 'lifecycle-metrics',\n    }),\n    unit: UNITS.DAYS,\n  },\n  [FLOW_METRICS.ISSUES]: {\n    label: s__('DORA4Metrics|New issues'),\n    unit: UNITS.COUNT,\n    description: s__('ValueStreamAnalytics|Number of new issues created.'),\n    groupLink: '-/issues_analytics',\n    projectLink: '-/analytics/issues_analytics',\n    docsLink: helpPagePath('user/group/issues_analytics/index'),\n  },\n  [FLOW_METRICS.COMMITS]: {\n    label: s__('DORA4Metrics|Commits'),\n    unit: UNITS.COUNT,\n    description: s__('ValueStreamAnalytics|Number of commits pushed to the default branch'),\n  },\n  [FLOW_METRICS.DEPLOYS]: {\n    label: s__('DORA4Metrics|Deploys'),\n    unit: UNITS.COUNT,\n    description: s__('ValueStreamAnalytics|Total number of deploys to production.'),\n    groupLink: '-/analytics/productivity_analytics',\n    projectLink: '-/analytics/merge_request_analytics',\n    docsLink: helpPagePath('user/analytics/merge_request_analytics'),\n  },\n};\n\nexport const VALUE_STREAM_METRIC_METADATA = {\n  ...VALUE_STREAM_METRIC_TILE_METADATA,\n  [FLOW_METRICS.ISSUES_COMPLETED]: {\n    description: s__('ValueStreamAnalytics|Number of issues closed by month.'),\n    groupLink: '-/issues_analytics',\n    projectLink: '-/analytics/issues_analytics',\n    docsLink: helpPagePath('user/group/issues_analytics/index'),\n  },\n  [CONTRIBUTOR_METRICS.COUNT]: {\n    description: s__(\n      'ValueStreamAnalytics|Number of monthly unique users with contributions in the group.',\n    ),\n    groupLink: '-/contribution_analytics',\n    docsLink: helpPagePath('user/profile/contributions_calendar.html', {\n      anchor: 'user-contribution-events',\n    }),\n  },\n  [VULNERABILITY_METRICS.CRITICAL]: {\n    description: s__(\n      'ValueStreamAnalytics|Number of critical vulnerabilities identified per month.',\n    ),\n    groupLink: '-/security/vulnerabilities?severity=CRITICAL',\n    projectLink: '-/security/vulnerability_report?severity=CRITICAL',\n    docsLink: helpPagePath('user/application_security/vulnerabilities/severities.html'),\n  },\n  [VULNERABILITY_METRICS.HIGH]: {\n    description: s__('ValueStreamAnalytics|High vulnerabilities over time.'),\n    groupLink: '-/security/vulnerabilities?severity=HIGH',\n    projectLink: '-/security/vulnerability_report?severity=HIGH',\n    docsLink: helpPagePath('user/application_security/vulnerabilities/severities.html'),\n  },\n  [MERGE_REQUEST_METRICS.THROUGHPUT]: {\n    description: s__('ValueStreamAnalytics|Number of merge requests merged by month.'),\n    groupLink: '-/analytics/productivity_analytics',\n    projectLink: `-/analytics/merge_request_analytics?start_date=${formatDateParam(\n      mrThroughputStartDate,\n    )}&end_date=${formatDateParam(startOfToday)}`,\n    docsLink: helpPagePath('user/analytics/merge_request_analytics', {\n      anchor: 'view-the-number-of-merge-requests-in-a-date-range',\n    }),\n  },\n  [FLOW_METRICS.MEDIAN_TIME_TO_MERGE]: {\n    description: s__(\n      'ValueStreamAnalytics|Median time between merge request created and merge request merged.',\n    ),\n    groupLink: '-/analytics/productivity_analytics',\n    projectLink: '-/analytics/merge_request_analytics',\n    docsLink: helpPagePath('user/analytics/merge_request_analytics'),\n  },\n  [AI_METRICS.CODE_SUGGESTIONS_USAGE_RATE]: {\n    description: s__(\n      'AiImpactAnalytics|Monthly user engagement with AI Code Suggestions. Percentage ratio calculated as monthly unique Code Suggestions users / total monthly unique code contributors.',\n    ),\n    groupLink: '',\n    projectLink: '',\n    docsLink: helpPagePath('user/project/repository/code_suggestions/index'),\n  },\n};\n\nexport const USAGE_OVERVIEW_NO_DATA_ERROR = s__(\n  'ValueStreamAnalytics|Failed to load usage overview data',\n);\n\nexport const USAGE_OVERVIEW_DEFAULT_DATE_RANGE = {\n  endDate: TODAY,\n  startDate: nYearsBefore(TODAY, 1),\n};\n\nexport const USAGE_OVERVIEW_IDENTIFIER_GROUPS = 'groups';\nexport const USAGE_OVERVIEW_IDENTIFIER_PROJECTS = 'projects';\nexport const USAGE_OVERVIEW_IDENTIFIER_USERS = 'users';\nexport const USAGE_OVERVIEW_IDENTIFIER_ISSUES = 'issues';\nexport const USAGE_OVERVIEW_IDENTIFIER_MERGE_REQUESTS = 'merge_requests';\nexport const USAGE_OVERVIEW_IDENTIFIER_PIPELINES = 'pipelines';\n\n// Defines the constants used for querying the API as well as the order they appear\nexport const USAGE_OVERVIEW_METADATA = {\n  [USAGE_OVERVIEW_IDENTIFIER_GROUPS]: { options: { title: __('Groups'), titleIcon: 'group' } },\n  [USAGE_OVERVIEW_IDENTIFIER_PROJECTS]: {\n    options: { title: __('Projects'), titleIcon: 'project' },\n  },\n  [USAGE_OVERVIEW_IDENTIFIER_USERS]: {\n    options: { title: __('Users'), titleIcon: 'user' },\n  },\n  [USAGE_OVERVIEW_IDENTIFIER_ISSUES]: {\n    options: { title: __('Issues'), titleIcon: 'issues' },\n  },\n  [USAGE_OVERVIEW_IDENTIFIER_MERGE_REQUESTS]: {\n    options: { title: __('Merge requests'), titleIcon: 'merge-request' },\n  },\n  [USAGE_OVERVIEW_IDENTIFIER_PIPELINES]: {\n    options: { title: __('Pipelines'), titleIcon: 'pipeline' },\n  },\n};\n\nexport const USAGE_OVERVIEW_QUERY_INCLUDE_KEYS = {\n  [USAGE_OVERVIEW_IDENTIFIER_GROUPS]: 'includeGroups',\n  [USAGE_OVERVIEW_IDENTIFIER_PROJECTS]: 'includeProjects',\n  [USAGE_OVERVIEW_IDENTIFIER_USERS]: 'includeUsers',\n  [USAGE_OVERVIEW_IDENTIFIER_ISSUES]: 'includeIssues',\n  [USAGE_OVERVIEW_IDENTIFIER_MERGE_REQUESTS]: 'includeMergeRequests',\n  [USAGE_OVERVIEW_IDENTIFIER_PIPELINES]: 'includePipelines',\n};\n","/**\n * Map<HTMLElement, { callback: Function, eventTypes: Array<string> }>\n */\nconst callbacks = new Map();\nconst click = 'click';\nconst focusin = 'focusin';\nconst supportedEventTypes = [click, focusin];\nconst defaultEventType = click;\n\n/**\n * A Set to keep track of currently active event types.\n * This ensures that event listeners are only added for the event types that are in use.\n *\n * @type {Set<string>}\n */\nconst activeEventTypes = new Set();\nlet lastMousedown = null;\nconst globalListener = event => {\n  callbacks.forEach((_ref, element) => {\n    let {\n      callback,\n      eventTypes\n    } = _ref;\n    const originalEvent = event.type === click ? lastMousedown || event : event;\n    if (\n    // Ignore events that aren't targeted outside the element\n    element.contains(originalEvent.target) ||\n    // Ignore events that aren't the specified types for this element\n    !eventTypes.includes(event.type)) {\n      return;\n    }\n    try {\n      callback(event);\n    } catch (e) {\n      if (process.env.NODE_ENV !== 'production') {\n        // eslint-disable-next-line no-console\n        console.error(e);\n      }\n    }\n  });\n  if (event.type === click) {\n    lastMousedown = null;\n  }\n};\n\n// We need to listen for mouse events because text selection fires click event only when selection ends.\n// This means that the click event target could differ from the element where it originally started.\n// As example: if we use mouse events we could guarantee that selecting text within a dropdown won't close it.\nconst onMousedown = event => {\n  lastMousedown = event;\n};\nconst startListening = eventTypes => {\n  eventTypes.forEach(eventType => {\n    if (!activeEventTypes.has(eventType)) {\n      // Listening to mousedown events, ensures that a text selection doesn't trigger the\n      // GlOutsideDirective 'click' callback if the selection started within the target element.\n      if (eventType === click) {\n        document.addEventListener('mousedown', onMousedown);\n      }\n\n      // Added { capture: true } to all event types to prevent the behavior discussed in https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/1686#note_412545027\n      // Ensures the event listener handles the event in the capturing phase, avoiding issues encountered previously.\n      // Cannot be tested with Jest or Cypress, but can be tested with Playwright in the future: https://gitlab.com/gitlab-org/gitlab-ui/-/merge_requests/4272#note_1947425384\n      document.addEventListener(eventType, globalListener, {\n        capture: true\n      });\n      activeEventTypes.add(eventType);\n    }\n  });\n  lastMousedown = null;\n};\nconst stopListening = eventTypesToUnbind => {\n  eventTypesToUnbind.forEach(eventType => {\n    if (activeEventTypes.has(eventType)) {\n      if ([...callbacks.values()].every(_ref2 => {\n        let {\n          eventTypes\n        } = _ref2;\n        return !eventTypes.includes(eventType);\n      })) {\n        document.removeEventListener(eventType, globalListener);\n        activeEventTypes.delete(eventType);\n      }\n    }\n  });\n  if (eventTypesToUnbind.includes(click) && !activeEventTypes.has(click)) {\n    document.removeEventListener('mousedown', onMousedown);\n  }\n};\nfunction parseBinding(_ref3) {\n  let {\n    arg,\n    value,\n    modifiers\n  } = _ref3;\n  const modifiersList = Object.keys(modifiers);\n  if (process.env.NODE_ENV !== 'production') {\n    if (typeof value !== 'function') {\n      throw new Error(`[GlOutsideDirective] Value must be a function; got ${typeof value}!`);\n    }\n    if (typeof arg !== 'undefined') {\n      throw new Error(`[GlOutsideDirective] Arguments are not supported. Consider using modifiers instead.`);\n    }\n    const unsupportedModifiers = modifiersList.filter(modifier => !supportedEventTypes.includes(modifier));\n    if (unsupportedModifiers.length > 0) {\n      throw new Error(`[GlOutsideDirective] Cannot bind ${unsupportedModifiers.join(', ')} events; supported event types are: ${supportedEventTypes.join(', ')}`);\n    }\n  }\n  return {\n    callback: value,\n    eventTypes: modifiersList.length > 0 ? modifiersList : [defaultEventType]\n  };\n}\nconst bind = (el, bindings) => {\n  const {\n    callback,\n    eventTypes\n  } = parseBinding(bindings);\n  if (callbacks.has(el)) {\n    // This element is already bound. This is possible if two components, which\n    // share the same root node, (i.e., one is a higher-order component\n    // wrapping another) _both_ have this directive applied.\n    //\n    // Because Vue binds directives in the direction towards the root, only the\n    // deepest instance of this directive will be bound.\n    //\n    // A future iteration may add support for binding all instances on a given\n    // element.\n    return;\n  }\n  callbacks.set(el, {\n    callback,\n    eventTypes\n  });\n  startListening(eventTypes);\n};\nconst unbind = el => {\n  const entry = callbacks.get(el);\n  if (entry) {\n    callbacks.delete(el);\n    stopListening(entry.eventTypes);\n  }\n};\nconst OutsideDirective = {\n  bind,\n  unbind\n};\n\nexport { OutsideDirective };\n","var copyObject = require('./_copyObject'),\n    keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n  return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","import { extend, mergeData } from '../../vue';\nimport { NAME_DROPDOWN_TEXT } from '../../constants/components';\nimport { PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../constants/props';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  tag: makeProp(PROP_TYPE_STRING, 'p'),\n  textClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_DROPDOWN_TEXT);\n\n// --- Main component ---\n\n// @vue/component\nconst BDropdownText = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN_TEXT,\n  functional: true,\n  props,\n  render(h, _ref) {\n    let {\n      props,\n      data,\n      children\n    } = _ref;\n    const {\n      tag,\n      textClass,\n      variant\n    } = props;\n    return h('li', mergeData(omit(data, ['attrs']), {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(tag, {\n      staticClass: 'b-dropdown-text',\n      class: [textClass, {\n        [`text-${variant}`]: variant\n      }],\n      props,\n      attrs: data.attrs || {},\n      ref: 'text'\n    }, children)]);\n  }\n});\n\nexport { BDropdownText, props };\n","import { BDropdownText } from '../../../vendor/bootstrap-vue/src/components/dropdown/dropdown-text';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlDropdownText',\n  components: {\n    BDropdownText\n  },\n  inheritAttrs: false\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-dropdown-text',_vm._g(_vm._b({staticClass:\"gl-dropdown-text\"},'b-dropdown-text',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike'),\n    isPlainObject = require('./isPlainObject');\n\n/** `Object#toString` result references. */\nvar domExcTag = '[object DOMException]',\n    errorTag = '[object Error]';\n\n/**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\nfunction isError(value) {\n  if (!isObjectLike(value)) {\n    return false;\n  }\n  var tag = baseGetTag(value);\n  return tag == errorTag || tag == domExcTag ||\n    (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n}\n\nmodule.exports = isError;\n","import { closest, getAttr, getById, select, matches } from '../../../utils/dom';\nimport { EVENT_FILTER } from './constants';\n\nconst TABLE_TAG_NAMES = ['TD', 'TH', 'TR'];\n\n// Returns `true` if we should ignore the click/double-click/keypress event\n// Avoids having the user need to use `@click.stop` on the form control\nconst filterEvent = event => {\n  // Exit early when we don't have a target element\n  if (!event || !event.target) {\n    /* istanbul ignore next */\n    return false;\n  }\n  const el = event.target;\n  // Exit early when element is disabled or a table element\n  if (el.disabled || TABLE_TAG_NAMES.indexOf(el.tagName) !== -1) {\n    return false;\n  }\n  // Ignore the click when it was inside a dropdown menu\n  if (closest('.dropdown-menu', el)) {\n    return true;\n  }\n  const label = el.tagName === 'LABEL' ? el : closest('label', el);\n  // If the label's form control is not disabled then we don't propagate event\n  // Modern browsers have `label.control` that references the associated input, but IE 11\n  // does not have this property on the label element, so we resort to DOM lookups\n  if (label) {\n    const labelFor = getAttr(label, 'for');\n    const input = labelFor ? getById(labelFor) : select('input, select, textarea', label);\n    if (input && !input.disabled) {\n      return true;\n    }\n  }\n  // Otherwise check if the event target matches one of the selectors in the\n  // event filter (i.e. anchors, non disabled inputs, etc.)\n  // Return `true` if we should ignore the event\n  return matches(el, EVENT_FILTER);\n};\n\nexport { filterEvent };\n","import GlDropdownItem from '../dropdown/dropdown_item';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlFilteredSearchSuggestion',\n  components: {\n    GlDropdownItem\n  },\n  inject: ['filteredSearchSuggestionListInstance'],\n  inheritAttrs: false,\n  props: {\n    /**\n     * Value that will be emitted if this suggestion is selected.\n     */\n    value: {\n      required: true,\n      validator: () => true\n    }\n  },\n  computed: {\n    isActive() {\n      return this.filteredSearchSuggestionListInstance.activeItem === this;\n    }\n  },\n  watch: {\n    isActive(newValue) {\n      if (newValue) {\n        window.requestAnimationFrame(() => {\n          var _this$$refs$item, _this$$refs$item$$el;\n          (_this$$refs$item = this.$refs.item) === null || _this$$refs$item === void 0 ? void 0 : (_this$$refs$item$$el = _this$$refs$item.$el) === null || _this$$refs$item$$el === void 0 ? void 0 : _this$$refs$item$$el.scrollIntoView({\n            block: 'nearest',\n            inline: 'end'\n          });\n        });\n      }\n    }\n  },\n  created() {\n    this.filteredSearchSuggestionListInstance.register(this);\n  },\n  beforeDestroy() {\n    this.filteredSearchSuggestionListInstance.unregister(this);\n  },\n  methods: {\n    emitValue() {\n      // We use href argument for gl-dropdown-item to use <a> instead of <button>\n      // due to https://bugs.webkit.org/show_bug.cgi?id=22261\n      this.filteredSearchSuggestionListInstance.$emit('suggestion', this.value);\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-dropdown-item',_vm._b({ref:\"item\",staticClass:\"gl-filtered-search-suggestion\",class:{ 'gl-filtered-search-suggestion-active': _vm.isActive },attrs:{\"data-testid\":\"filtered-search-suggestion\",\"tabindex\":\"-1\",\"href\":\"#\"},nativeOn:{\"mousedown\":function($event){$event.preventDefault();return _vm.emitValue.apply(null, arguments)}}},'gl-dropdown-item',_vm.$attrs,false),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var Set = require('./_Set'),\n    noop = require('./noop'),\n    setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n  return new Set(values);\n};\n\nmodule.exports = createSet;\n","var arrayMap = require('./_arrayMap'),\n    copyArray = require('./_copyArray'),\n    isArray = require('./isArray'),\n    isSymbol = require('./isSymbol'),\n    stringToPath = require('./_stringToPath'),\n    toKey = require('./_toKey'),\n    toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n  if (isArray(value)) {\n    return arrayMap(value, toKey);\n  }\n  return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n","// Constants used by table helpers\n\nconst FIELD_KEY_CELL_VARIANT = '_cellVariants';\nconst FIELD_KEY_ROW_VARIANT = '_rowVariant';\nconst FIELD_KEY_SHOW_DETAILS = '_showDetails';\n\n// Object of item keys that should be ignored for headers and\n// stringification and filter events\nconst IGNORED_FIELD_KEYS = [FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS].reduce((result, key) => ({\n  ...result,\n  [key]: true\n}), {});\n\n// Filter CSS selector for click/dblclick/etc. events\n// If any of these selectors match the clicked element, we ignore the event\nconst EVENT_FILTER = ['a', 'a *',\n// Include content inside links\n'button', 'button *',\n// Include content inside buttons\n'input:not(.disabled):not([disabled])', 'select:not(.disabled):not([disabled])', 'textarea:not(.disabled):not([disabled])', '[role=\"link\"]', '[role=\"link\"] *', '[role=\"button\"]', '[role=\"button\"] *', '[tabindex]:not(.disabled):not([disabled])'].join(',');\n\nexport { EVENT_FILTER, FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT, FIELD_KEY_SHOW_DETAILS, IGNORED_FIELD_KEYS };\n","import { extend } from '../../../vue';\nimport { SLOT_NAME_TABLE_COLGROUP } from '../../../constants/slots';\n\n// --- Props ---\n\nconst props = {};\n\n// --- Mixin ---\n\n// @vue/component\nconst colgroupMixin = extend({\n  methods: {\n    renderColgroup() {\n      const {\n        computedFields: fields\n      } = this;\n      const h = this.$createElement;\n      let $colgroup = h();\n      if (this.hasNormalizedSlot(SLOT_NAME_TABLE_COLGROUP)) {\n        $colgroup = h('colgroup', {\n          key: 'colgroup'\n        }, [this.normalizeSlot(SLOT_NAME_TABLE_COLGROUP, {\n          columns: fields.length,\n          fields\n        })]);\n      }\n      return $colgroup;\n    }\n  }\n});\n\nexport { colgroupMixin, props };\n","import cloneDeep from 'lodash/cloneDeep';\nimport isEqual from 'lodash/isEqual';\nimport GlToken from '../token/token';\nimport { stopEvent } from '../../../utils/utils';\nimport GlFilteredSearchTokenSegment from './filtered_search_token_segment';\nimport { tokenToOption, createTerm, TOKEN_CLOSE_SELECTOR } from './filtered_search_utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst SEGMENT_TITLE = 'TYPE';\nconst SEGMENT_OPERATOR = 'OPERATOR';\nconst SEGMENT_DATA = 'DATA';\nconst DEFAULT_OPERATORS = [{\n  value: '=',\n  description: 'is',\n  default: true\n}, {\n  value: '!=',\n  description: 'is not'\n}];\nvar script = {\n  name: 'GlFilteredSearchToken',\n  // FIXME: temporary workaround to ensure compatibility with @vue/compat\n  __v_skip: true,\n  components: {\n    GlToken,\n    GlFilteredSearchTokenSegment\n  },\n  inheritAttrs: false,\n  props: {\n    availableTokens: {\n      type: Array,\n      required: false,\n      default: () => []\n    },\n    /**\n     * Token configuration with available operators and options.\n     */\n    config: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    },\n    /**\n     * Determines if the token is being edited or not.\n     */\n    active: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    multiSelectValues: {\n      type: Array,\n      required: false,\n      default: () => []\n    },\n    /**\n     * Current token value.\n     */\n    value: {\n      type: Object,\n      required: false,\n      default: () => ({\n        operator: '',\n        data: ''\n      })\n    },\n    /**\n     * Display operators' descriptions instead of their values (e.g., \"is\" instead of \"=\").\n     */\n    showFriendlyText: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    cursorPosition: {\n      type: String,\n      required: false,\n      default: 'end',\n      validator: value => ['start', 'end'].includes(value)\n    },\n    viewOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    dataSegmentInputAttributes: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    }\n  },\n  data() {\n    return {\n      activeSegment: null,\n      tokenValue: cloneDeep(this.value),\n      intendedCursorPosition: this.cursorPosition\n    };\n  },\n  computed: {\n    operators() {\n      return this.config.operators || DEFAULT_OPERATORS;\n    },\n    tokenEmpty() {\n      var _this$tokenValue$data;\n      return ((_this$tokenValue$data = this.tokenValue.data) === null || _this$tokenValue$data === void 0 ? void 0 : _this$tokenValue$data.length) === 0;\n    },\n    hasDataOrDataSegmentIsCurrentlyActive() {\n      const hasData = !this.tokenEmpty;\n      return hasData || this.isSegmentActive(SEGMENT_DATA);\n    },\n    availableTokensWithSelf() {\n      return [this.config, ...this.availableTokens.filter(token => token !== this.config)].map(\n      // eslint-disable-next-line unicorn/no-array-callback-reference\n      tokenToOption);\n    },\n    operatorDescription() {\n      const operator = this.operators.find(op => op.value === this.tokenValue.operator);\n      return this.showFriendlyText ? operator === null || operator === void 0 ? void 0 : operator.description : operator === null || operator === void 0 ? void 0 : operator.value;\n    },\n    eventListeners() {\n      return this.viewOnly ? {} : {\n        mousedown: this.stopMousedownOnCloseButton,\n        close: this.destroyByClose\n      };\n    }\n  },\n  segments: {\n    SEGMENT_TITLE,\n    SEGMENT_DATA,\n    SEGMENT_OPERATOR\n  },\n  watch: {\n    tokenValue: {\n      deep: true,\n      handler(newValue) {\n        /**\n         * Emitted when the token changes its value.\n         *\n         * @event input\n         * @type {object} dataObj Object containing the update value.\n         */\n        this.$emit('input', newValue);\n      }\n    },\n    value: {\n      handler(newValue, oldValue) {\n        if (isEqual(newValue === null || newValue === void 0 ? void 0 : newValue.data, oldValue === null || oldValue === void 0 ? void 0 : oldValue.data) && (newValue === null || newValue === void 0 ? void 0 : newValue.operator) === (oldValue === null || oldValue === void 0 ? void 0 : oldValue.operator)) {\n          return;\n        }\n        this.tokenValue = cloneDeep(newValue);\n      }\n    },\n    active: {\n      immediate: true,\n      handler(tokenIsActive) {\n        if (tokenIsActive) {\n          this.intendedCursorPosition = this.cursorPosition;\n          if (!this.activeSegment) {\n            this.activateSegment(this.tokenEmpty ? SEGMENT_OPERATOR : SEGMENT_DATA);\n          }\n        } else {\n          this.activeSegment = null;\n\n          // restore multi select values if we have them\n          // otherwise destroy the token\n          if (this.config.multiSelect) {\n            this.$emit('input', {\n              ...this.tokenValue,\n              data: this.multiSelectValues || ''\n            });\n          }\n          if (this.tokenEmpty && this.multiSelectValues.length === 0) {\n            /**\n             * Emitted when token is about to be destroyed.\n             *\n             * @event destroy\n             */\n            this.$emit('destroy');\n          }\n        }\n      }\n    }\n  },\n  created() {\n    if (!('operator' in this.tokenValue)) {\n      if (this.operators.length === 1) {\n        const operator = this.operators[0].value;\n        this.$emit('input', {\n          ...this.tokenValue,\n          operator\n        });\n        this.activeSegment = SEGMENT_DATA;\n      } else {\n        this.$emit('input', {\n          ...this.tokenValue,\n          operator: ''\n        });\n      }\n    }\n  },\n  methods: {\n    activateSegment(segment) {\n      if (this.viewOnly) return;\n      this.activeSegment = segment;\n      if (!this.active) {\n        /**\n         * Emitted when this term token is clicked.\n         *\n         * @event activate\n         */\n        this.$emit('activate');\n      }\n    },\n    getAdditionalSegmentClasses(segment) {\n      if (this.viewOnly) {\n        return 'gl-cursor-text';\n      }\n      return {\n        'gl-cursor-pointer': !this.isSegmentActive(segment)\n      };\n    },\n    isSegmentActive(segment) {\n      return this.active && this.activeSegment === segment;\n    },\n    replaceWithTermIfEmpty() {\n      if (this.tokenValue.operator === '' && this.tokenEmpty) {\n        /**\n         * Emitted when this token is converted to another type\n         * @property {object} token Replacement token configuration\n         */\n        this.$emit('replace', createTerm(this.config.title));\n      }\n    },\n    replaceToken(newType) {\n      const newTokenConfig = this.availableTokens.find(_ref => {\n        let {\n          type\n        } = _ref;\n        return type === newType;\n      });\n      if (newTokenConfig === this.config) {\n        this.$nextTick(() => {\n          /**\n           * Emitted when this term token will lose its focus.\n           *\n           * @event deactivate\n           */\n          this.$emit('deactivate');\n        });\n        return;\n      }\n      if (newTokenConfig) {\n        const isCompatible = this.config.dataType && this.config.dataType === newTokenConfig.dataType;\n        this.$emit('replace', {\n          type: newTokenConfig.type,\n          value: isCompatible ? this.tokenValue : {\n            data: ''\n          }\n        });\n      }\n    },\n    handleOperatorKeydown(evt, _ref2) {\n      let {\n        inputValue,\n        suggestedValue,\n        applySuggestion\n      } = _ref2;\n      const {\n        key\n      } = evt;\n      if (key === ' ' || key === 'Spacebar') {\n        applySuggestion(suggestedValue);\n        return;\n      }\n      const potentialValue = `${inputValue}${key}`;\n      if (key.length === 1 && !this.operators.find(_ref3 => {\n        let {\n          value\n        } = _ref3;\n        return value.startsWith(potentialValue);\n      })) {\n        if (this.tokenEmpty) {\n          applySuggestion(suggestedValue);\n        } else {\n          evt.preventDefault();\n        }\n      }\n    },\n    activateDataSegment() {\n      if (this.config.multiSelect) {\n        this.$emit('input', {\n          ...this.tokenValue,\n          data: ''\n        });\n      }\n      this.activateSegment(this.$options.segments.SEGMENT_DATA);\n    },\n    activatePreviousOperatorSegment() {\n      this.activateSegment(this.$options.segments.SEGMENT_OPERATOR);\n      this.intendedCursorPosition = 'end';\n    },\n    activatePreviousTitleSegment() {\n      this.activateSegment(this.$options.segments.SEGMENT_TITLE);\n      this.intendedCursorPosition = 'end';\n    },\n    activateNextDataSegment() {\n      this.activateDataSegment();\n      this.intendedCursorPosition = 'start';\n    },\n    activateNextOperatorSegment() {\n      this.activateSegment(this.$options.segments.SEGMENT_OPERATOR);\n      this.intendedCursorPosition = 'start';\n    },\n    handleComplete(value) {\n      /**\n       * Emitted when the token entry has been completed.\n       *\n       * @event complete\n       */\n      this.$emit('complete', value);\n    },\n    stopMousedownOnCloseButton(event) {\n      if (event.target.closest(TOKEN_CLOSE_SELECTOR)) {\n        stopEvent(event);\n      }\n    },\n    destroyByClose() {\n      this.$emit('destroy');\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-filtered-search-token\",class:{\n    'gl-filtered-search-token-active': _vm.active,\n    'gl-filtered-search-token-hover': !_vm.viewOnly,\n    'gl-cursor-default': _vm.viewOnly,\n  },attrs:{\"data-testid\":\"filtered-search-token\"}},[_c('gl-filtered-search-token-segment',{key:\"title-segment\",attrs:{\"value\":_vm.config.title,\"active\":_vm.isSegmentActive(_vm.$options.segments.SEGMENT_TITLE),\"cursor-position\":_vm.intendedCursorPosition,\"options\":_vm.availableTokensWithSelf,\"view-only\":_vm.viewOnly},on:{\"activate\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_TITLE)},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"complete\":_vm.replaceToken,\"backspace\":function($event){return _vm.$emit('destroy')},\"submit\":function($event){return _vm.$emit('submit')},\"previous\":function($event){return _vm.$emit('previous')},\"next\":_vm.activateNextOperatorSegment},scopedSlots:_vm._u([{key:\"view\",fn:function(ref){\n  var inputValue = ref.inputValue;\nreturn [_c('gl-token',{staticClass:\"gl-filtered-search-token-type\",class:_vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_TITLE),attrs:{\"view-only\":\"\"}},[_vm._v(\"\\n        \"+_vm._s(inputValue)+\"\\n      \")])]}}])}),_vm._v(\" \"),_c('gl-filtered-search-token-segment',{key:\"operator-segment\",attrs:{\"active\":_vm.isSegmentActive(_vm.$options.segments.SEGMENT_OPERATOR),\"cursor-position\":_vm.intendedCursorPosition,\"options\":_vm.operators,\"option-text-field\":\"value\",\"custom-input-keydown-handler\":_vm.handleOperatorKeydown,\"view-only\":_vm.viewOnly},on:{\"activate\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_OPERATOR)},\"backspace\":_vm.replaceWithTermIfEmpty,\"complete\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_DATA)},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"previous\":_vm.activatePreviousTitleSegment,\"next\":_vm.activateNextDataSegment},scopedSlots:_vm._u([{key:\"view\",fn:function(){return [_c('gl-token',{staticClass:\"gl-filtered-search-token-operator\",class:_vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_OPERATOR),attrs:{\"variant\":\"search-value\",\"view-only\":\"\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.operatorDescription)+\"\\n      \")])]},proxy:true},{key:\"option\",fn:function(ref){\n  var option = ref.option;\nreturn [_c('div',{staticClass:\"gl-flex\"},[_vm._v(\"\\n        \"+_vm._s(_vm.showFriendlyText ? option.description : option.value)+\"\\n        \"),(option.description)?_c('span',{staticClass:\"gl-filtered-search-token-operator-description\"},[_vm._v(\"\\n          \"+_vm._s(_vm.showFriendlyText ? option.value : option.description)+\"\\n        \")]):_vm._e()])]}}]),model:{value:(_vm.tokenValue.operator),callback:function ($$v) {_vm.$set(_vm.tokenValue, \"operator\", $$v);},expression:\"tokenValue.operator\"}}),_vm._v(\" \"),(_vm.hasDataOrDataSegmentIsCurrentlyActive)?_c('gl-filtered-search-token-segment',{key:\"data-segment\",attrs:{\"active\":_vm.isSegmentActive(_vm.$options.segments.SEGMENT_DATA),\"cursor-position\":_vm.intendedCursorPosition,\"multi-select\":_vm.config.multiSelect,\"options\":_vm.config.options,\"view-only\":_vm.viewOnly,\"search-input-attributes\":_vm.dataSegmentInputAttributes},on:{\"activate\":_vm.activateDataSegment,\"backspace\":function($event){return _vm.activateSegment(_vm.$options.segments.SEGMENT_OPERATOR)},\"complete\":_vm.handleComplete,\"select\":function($event){return _vm.$emit('select', $event)},\"submit\":function($event){return _vm.$emit('submit')},\"deactivate\":function($event){return _vm.$emit('deactivate')},\"split\":function($event){return _vm.$emit('split', $event)},\"previous\":_vm.activatePreviousOperatorSegment,\"next\":function($event){return _vm.$emit('next')}},scopedSlots:_vm._u([{key:\"before-input\",fn:function(scope){return [_vm._t(\"before-data-segment-input\",null,null,scope)]}},{key:\"suggestions\",fn:function(){return [_vm._t(\"suggestions\")]},proxy:true},{key:\"view\",fn:function(ref){\n  var inputValue = ref.inputValue;\nreturn [_vm._t(\"view-token\",function(){return [_c('gl-token',_vm._g({staticClass:\"gl-filtered-search-token-data\",class:_vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_DATA),attrs:{\"variant\":\"search-value\",\"view-only\":_vm.viewOnly}},_vm.eventListeners),[_c('span',{staticClass:\"gl-filtered-search-token-data-content\"},[_vm._t(\"view\",function(){return [_vm._v(_vm._s(inputValue))]},null,{ inputValue: inputValue })],2)])]},null,{\n          inputValue: inputValue,\n          listeners: _vm.eventListeners,\n          cssClasses: Object.assign({}, {'gl-filtered-search-token-data': true},\n            _vm.getAdditionalSegmentClasses(_vm.$options.segments.SEGMENT_DATA)),\n        })]}}],null,true),model:{value:(_vm.tokenValue.data),callback:function ($$v) {_vm.$set(_vm.tokenValue, \"data\", $$v);},expression:\"tokenValue.data\"}}):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var baseToString = require('./_baseToString'),\n    castSlice = require('./_castSlice'),\n    hasUnicode = require('./_hasUnicode'),\n    isObject = require('./isObject'),\n    isRegExp = require('./isRegExp'),\n    stringSize = require('./_stringSize'),\n    stringToArray = require('./_stringToArray'),\n    toInteger = require('./toInteger'),\n    toString = require('./toString');\n\n/** Used as default options for `_.truncate`. */\nvar DEFAULT_TRUNC_LENGTH = 30,\n    DEFAULT_TRUNC_OMISSION = '...';\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'length': 24,\n *   'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'length': 24,\n *   'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n *   'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\nfunction truncate(string, options) {\n  var length = DEFAULT_TRUNC_LENGTH,\n      omission = DEFAULT_TRUNC_OMISSION;\n\n  if (isObject(options)) {\n    var separator = 'separator' in options ? options.separator : separator;\n    length = 'length' in options ? toInteger(options.length) : length;\n    omission = 'omission' in options ? baseToString(options.omission) : omission;\n  }\n  string = toString(string);\n\n  var strLength = string.length;\n  if (hasUnicode(string)) {\n    var strSymbols = stringToArray(string);\n    strLength = strSymbols.length;\n  }\n  if (length >= strLength) {\n    return string;\n  }\n  var end = length - stringSize(omission);\n  if (end < 1) {\n    return omission;\n  }\n  var result = strSymbols\n    ? castSlice(strSymbols, 0, end).join('')\n    : string.slice(0, end);\n\n  if (separator === undefined) {\n    return result + omission;\n  }\n  if (strSymbols) {\n    end += (result.length - end);\n  }\n  if (isRegExp(separator)) {\n    if (string.slice(end).search(separator)) {\n      var match,\n          substring = result;\n\n      if (!separator.global) {\n        separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n      }\n      separator.lastIndex = 0;\n      while ((match = separator.exec(substring))) {\n        var newEnd = match.index;\n      }\n      result = result.slice(0, newEnd === undefined ? end : newEnd);\n    }\n  } else if (string.indexOf(baseToString(separator), end) != end) {\n    var index = result.lastIndexOf(separator);\n    if (index > -1) {\n      result = result.slice(0, index);\n    }\n  }\n  return result + omission;\n}\n\nmodule.exports = truncate;\n","import { extend } from '../../vue';\nimport { NAME_THEAD } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  // Also sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n  // Supported values: 'lite', 'dark', or `null`\n  headVariant: makeProp(PROP_TYPE_STRING)\n}, NAME_THEAD);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BThead = /*#__PURE__*/extend({\n  name: NAME_THEAD,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableRowGroup: () => this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isThead() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky headers only apply to cells in table `thead`\n    isStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    theadClasses() {\n      return [this.headVariant ? `thead-${this.headVariant}` : null];\n    },\n    theadAttrs() {\n      return {\n        role: 'rowgroup',\n        ...this.bvAttrs\n      };\n    }\n  },\n  render(h) {\n    return h('thead', {\n      class: this.theadClasses,\n      attrs: this.theadAttrs,\n      // Pass down any native listeners\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});\n\nexport { BThead, props };\n","import { extend } from '../../../vue';\nimport { EVENT_NAME_HEAD_CLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE } from '../../../constants/key-codes';\nimport { PROP_TYPE_STRING, PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { SLOT_NAME_THEAD_TOP } from '../../../constants/slots';\nimport { stopEvent } from '../../../utils/events';\nimport { htmlOrText } from '../../../utils/html';\nimport { identity } from '../../../utils/identity';\nimport { isUndefinedOrNull } from '../../../utils/inspect';\nimport { noop } from '../../../utils/noop';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { startCase } from '../../../utils/string';\nimport { BThead } from '../thead';\nimport { BTfoot } from '../tfoot';\nimport { BTr } from '../tr';\nimport { BTh } from '../th';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\n\n// --- Helper methods ---\n\nconst getHeadSlotName = value => `head(${value || ''})`;\nconst getFootSlotName = value => `foot(${value || ''})`;\n\n// --- Props ---\n\nconst props = {\n  // Any Bootstrap theme variant (or custom)\n  headRowVariant: makeProp(PROP_TYPE_STRING),\n  // 'light', 'dark' or `null` (or custom)\n  headVariant: makeProp(PROP_TYPE_STRING),\n  theadClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  theadTrClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst theadMixin = extend({\n  props,\n  methods: {\n    fieldClasses(field) {\n      // Header field (<th>) classes\n      return [field.class ? field.class : '', field.thClass ? field.thClass : ''];\n    },\n    headClicked(event, field, isFoot) {\n      if (this.stopIfBusy && this.stopIfBusy(event)) {\n        // If table is busy (via provider) then don't propagate\n        return;\n      } else if (filterEvent(event)) {\n        // Clicked on a non-disabled control so ignore\n        return;\n      } else if (textSelectionActive(this.$el)) {\n        // User is selecting text, so ignore\n        /* istanbul ignore next: JSDOM doesn't support getSelection() */\n        return;\n      }\n      stopEvent(event);\n      this.$emit(EVENT_NAME_HEAD_CLICKED, field.key, field, event, isFoot);\n    },\n    renderThead() {\n      let isFoot = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n      const {\n        computedFields: fields,\n        isSortable,\n        isSelectable,\n        headVariant,\n        footVariant,\n        headRowVariant,\n        footRowVariant\n      } = safeVueInstance(this);\n      const h = this.$createElement;\n\n      // In always stacked mode, we don't bother rendering the head/foot\n      // Or if no field headings (empty table)\n      if (this.isStackedAlways || fields.length === 0) {\n        return h();\n      }\n      const hasHeadClickListener = isSortable || this.hasListener(EVENT_NAME_HEAD_CLICKED);\n\n      // Reference to `selectAllRows` and `clearSelected()`, if table is selectable\n      const selectAllRows = isSelectable ? this.selectAllRows : noop;\n      const clearSelected = isSelectable ? this.clearSelected : noop;\n\n      // Helper function to generate a field <th> cell\n      const makeCell = (field, colIndex) => {\n        const {\n          label,\n          labelHtml,\n          variant,\n          stickyColumn,\n          key\n        } = field;\n        let ariaLabel = null;\n        if (!field.label.trim() && !field.headerTitle) {\n          // In case field's label and title are empty/blank\n          // We need to add a hint about what the column is about for non-sighted users\n          /* istanbul ignore next */\n          ariaLabel = startCase(field.key);\n        }\n        const on = {};\n        if (hasHeadClickListener) {\n          on.click = event => {\n            this.headClicked(event, field, isFoot);\n          };\n          on.keydown = event => {\n            const keyCode = event.keyCode;\n            if (keyCode === CODE_ENTER || keyCode === CODE_SPACE) {\n              this.headClicked(event, field, isFoot);\n            }\n          };\n        }\n        const sortAttrs = isSortable ? this.sortTheadThAttrs(key, field, isFoot) : {};\n        const sortClass = isSortable ? this.sortTheadThClasses(key, field, isFoot) : null;\n        const sortLabel = isSortable ? this.sortTheadThLabel(key, field, isFoot) : null;\n        const data = {\n          class: [{\n            // We need to make the header cell relative when we have\n            // a `.gl-sr-only` sort label to work around overflow issues\n            'gl-relative': sortLabel\n          }, this.fieldClasses(field), sortClass],\n          props: {\n            variant,\n            stickyColumn\n          },\n          style: field.thStyle || {},\n          attrs: {\n            // We only add a `tabindex` of `0` if there is a head-clicked listener\n            // and the current field is sortable\n            tabindex: hasHeadClickListener && field.sortable ? '0' : null,\n            abbr: field.headerAbbr || null,\n            title: field.headerTitle || null,\n            'aria-colindex': colIndex + 1,\n            'aria-label': ariaLabel,\n            ...this.getThValues(null, key, field.thAttr, isFoot ? 'foot' : 'head', {}),\n            ...sortAttrs\n          },\n          on,\n          key\n        };\n\n        // Handle edge case where in-document templates are used with new\n        // `v-slot:name` syntax where the browser lower-cases the v-slot's\n        // name (attributes become lower cased when parsed by the browser)\n        // We have replaced the square bracket syntax with round brackets\n        // to prevent confusion with dynamic slot names\n        let slotNames = [getHeadSlotName(key), getHeadSlotName(key.toLowerCase()), getHeadSlotName()];\n        // Footer will fallback to header slot names\n        if (isFoot) {\n          slotNames = [getFootSlotName(key), getFootSlotName(key.toLowerCase()), getFootSlotName(), ...slotNames];\n        }\n        const scope = {\n          label,\n          column: key,\n          field,\n          isFoot,\n          // Add in row select methods\n          selectAllRows,\n          clearSelected\n        };\n        const $content = this.normalizeSlot(slotNames, scope) || h('div', {\n          domProps: htmlOrText(labelHtml, label)\n        });\n        const $srLabel = sortLabel ? h('span', {\n          staticClass: 'gl-sr-only'\n        }, ` (${sortLabel})`) : null;\n\n        // Return the header cell\n        return h(BTh, data, [$content, $srLabel].filter(identity));\n      };\n\n      // Generate the array of <th> cells\n      const $cells = fields.map(makeCell).filter(identity);\n\n      // Generate the row(s)\n      const $trs = [];\n      if (isFoot) {\n        $trs.push(h(BTr, {\n          class: this.tfootTrClass,\n          props: {\n            variant: isUndefinedOrNull(footRowVariant) ? headRowVariant : /* istanbul ignore next */footRowVariant\n          }\n        }, $cells));\n      } else {\n        const scope = {\n          columns: fields.length,\n          fields,\n          // Add in row select methods\n          selectAllRows,\n          clearSelected\n        };\n        $trs.push(this.normalizeSlot(SLOT_NAME_THEAD_TOP, scope) || h());\n        $trs.push(h(BTr, {\n          class: this.theadTrClass,\n          props: {\n            variant: headRowVariant\n          }\n        }, $cells));\n      }\n      return h(isFoot ? BTfoot : BThead, {\n        class: (isFoot ? this.tfootClass : this.theadClass) || null,\n        props: isFoot ? {\n          footVariant: footVariant || headVariant || null\n        } : {\n          headVariant: headVariant || null\n        },\n        key: isFoot ? 'bv-tfoot' : 'bv-thead'\n      }, $trs);\n    }\n  }\n});\n\nexport { props, theadMixin };\n","// base dropdown events\nconst GL_DROPDOWN_SHOWN = 'shown';\nconst GL_DROPDOWN_HIDDEN = 'hidden';\nconst GL_DROPDOWN_BEFORE_CLOSE = 'beforeClose';\nconst GL_DROPDOWN_FOCUS_CONTENT = 'focusContent';\n\n// KEY Codes\nconst ARROW_DOWN = 'ArrowDown';\nconst ARROW_UP = 'ArrowUp';\nconst END = 'End';\nconst ENTER = 'Enter';\nconst HOME = 'Home';\nconst SPACE = 'Space';\n\n// Positioning strategies\n// https://floating-ui.com/docs/computePosition#strategy\nconst POSITION_ABSOLUTE = 'absolute';\nconst POSITION_FIXED = 'fixed';\nconst GL_DROPDOWN_CONTENTS_CLASS = 'gl-new-dropdown-contents';\n\nexport { ARROW_DOWN, ARROW_UP, END, ENTER, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_FOCUS_CONTENT, GL_DROPDOWN_HIDDEN, GL_DROPDOWN_SHOWN, HOME, POSITION_ABSOLUTE, POSITION_FIXED, SPACE };\n","import curry from 'lodash/fp/curry';\n\nconst getRepeatingValue = index => {\n  const values = [100, 500, 400, 200, 100, 800, 400, 500, 600, 300, 800, 900, 110, 700, 400, 300, 500, 300, 400, 600, 700];\n  return index < values.length ? values[index] : values[index % values.length];\n};\nconst generateTimeSeries = () => new Array(100).fill(0).map((el, i) => [new Date(2018, 0, i), getRepeatingValue(i)]);\n\n// takes an element and a list and `intersperses' that element between the elements of the list.\n// (',' ['a', 'b', 'c']) -> ['a', ',', 'b', ',', 'c']\nconst intersperse = curry((separator, items) => {\n  const [head, ...rest] = items;\n  const separatorFactory = typeof separator === 'function' ? separator : () => separator;\n  return [head, ...rest.flatMap(item => [separatorFactory(), item], rest)];\n});\n\n// inserts a value at a given index into an array\n// (1, 2, [1, 3, 4]) -> [1, 2, 3, 4]\nconst insert = curry((index, newItem, items) => [...items.slice(0, index), newItem, ...items.slice(index)]);\n\nexport { generateTimeSeries, insert, intersperse };\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n  return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","import { __, s__ } from '~/locale';\n\nexport const DEBOUNCE_DELAY = 500;\nexport const MAX_RECENT_TOKENS_SIZE = 3;\n\nexport const FILTER_NONE = 'None';\nexport const FILTER_ANY = 'Any';\nexport const FILTER_CURRENT = 'Current';\nexport const FILTER_UPCOMING = 'Upcoming';\nexport const FILTER_STARTED = 'Started';\n\nexport const FILTERS_NONE_ANY = [FILTER_NONE, FILTER_ANY];\n\nexport const OPERATOR_IS = '=';\nexport const OPERATOR_IS_TEXT = __('is');\nexport const OPERATOR_NOT = '!=';\nexport const OPERATOR_NOT_TEXT = __('is not one of');\nexport const OPERATOR_OR = '||';\nexport const OPERATOR_OR_TEXT = __('is one of');\nexport const OPERATOR_AFTER = '≥';\nexport const OPERATOR_AFTER_TEXT = __('on or after');\nexport const OPERATOR_BEFORE = '<';\nexport const OPERATOR_BEFORE_TEXT = __('before');\n\nexport const OPERATORS_IS = [{ value: OPERATOR_IS, description: OPERATOR_IS_TEXT }];\nexport const OPERATORS_NOT = [{ value: OPERATOR_NOT, description: OPERATOR_NOT_TEXT }];\nexport const OPERATORS_OR = [{ value: OPERATOR_OR, description: OPERATOR_OR_TEXT }];\nexport const OPERATORS_AFTER = [{ value: OPERATOR_AFTER, description: OPERATOR_AFTER_TEXT }];\nexport const OPERATORS_BEFORE = [{ value: OPERATOR_BEFORE, description: OPERATOR_BEFORE_TEXT }];\nexport const OPERATORS_IS_NOT = [...OPERATORS_IS, ...OPERATORS_NOT];\nexport const OPERATORS_IS_NOT_OR = [...OPERATORS_IS, ...OPERATORS_NOT, ...OPERATORS_OR];\nexport const OPERATORS_AFTER_BEFORE = [...OPERATORS_AFTER, ...OPERATORS_BEFORE];\n\nexport const OPERATORS_TO_GROUP = [OPERATOR_OR, OPERATOR_NOT];\n\nexport const OPTION_NONE = { value: FILTER_NONE, text: __('None'), title: __('None') };\nexport const OPTION_ANY = { value: FILTER_ANY, text: __('Any'), title: __('Any') };\nexport const OPTION_CURRENT = { value: FILTER_CURRENT, text: __('Current') };\nexport const OPTION_STARTED = { value: FILTER_STARTED, text: __('Started'), title: __('Started') };\nexport const OPTION_UPCOMING = {\n  value: FILTER_UPCOMING,\n  text: __('Upcoming'),\n  title: __('Upcoming'),\n};\n\nexport const OPTIONS_NONE_ANY = [OPTION_NONE, OPTION_ANY];\n\nexport const DEFAULT_MILESTONES = OPTIONS_NONE_ANY.concat([OPTION_UPCOMING, OPTION_STARTED]);\n\nexport const SORT_DIRECTION = {\n  descending: 'descending',\n  ascending: 'ascending',\n};\n\nexport const FILTERED_SEARCH_TERM = 'filtered-search-term';\n\nexport const TOKEN_EMPTY_SEARCH_TERM = {\n  type: FILTERED_SEARCH_TERM,\n  value: {\n    data: '',\n  },\n};\n\nexport const TOKEN_TITLE_APPROVED_BY = __('Approved-By');\nexport const TOKEN_TITLE_MERGE_USER = __('Merged-By');\nexport const TOKEN_TITLE_APPROVER = __('Approver');\nexport const TOKEN_TITLE_ASSIGNEE = s__('SearchToken|Assignee');\nexport const TOKEN_TITLE_AUTHOR = __('Author');\nexport const TOKEN_TITLE_CONFIDENTIAL = __('Confidential');\nexport const TOKEN_TITLE_CONTACT = s__('Crm|Contact');\nexport const TOKEN_TITLE_DRAFT = s__('MergeRequests|Draft');\nexport const TOKEN_TITLE_GROUP = __('Group');\nexport const TOKEN_TITLE_GROUP_INVITE = __('Group invite');\nexport const TOKEN_TITLE_LABEL = __('Label');\nexport const TOKEN_TITLE_PROJECT = __('Project');\nexport const TOKEN_TITLE_MILESTONE = __('Milestone');\nexport const TOKEN_TITLE_MY_REACTION = __('My-Reaction');\nexport const TOKEN_TITLE_ORGANIZATION = s__('Crm|Organization');\nexport const TOKEN_TITLE_RELEASE = __('Release');\nexport const TOKEN_TITLE_REVIEWER = s__('SearchToken|Reviewer');\nexport const TOKEN_TITLE_SOURCE_BRANCH = __('Source Branch');\nexport const TOKEN_TITLE_STATUS = __('Status');\nexport const TOKEN_TITLE_JOBS_RUNNER_TYPE = s__('Job|Runner type');\nexport const TOKEN_TITLE_TARGET_BRANCH = __('Target Branch');\nexport const TOKEN_TITLE_TYPE = __('Type');\nexport const TOKEN_TITLE_VERSION = __('Version');\nexport const TOKEN_TITLE_SEARCH_WITHIN = __('Search Within');\nexport const TOKEN_TITLE_CREATED = __('Created date');\nexport const TOKEN_TITLE_CLOSED = __('Closed date');\nexport const TOKEN_TITLE_DEPLOYED_BEFORE = __('Deployed-before');\nexport const TOKEN_TITLE_DEPLOYED_AFTER = __('Deployed-after');\nexport const TOKEN_TITLE_ASSIGNED_SEAT = __('Assigned seat');\nexport const TOKEN_TITLE_ENVIRONMENT = __('Environment');\n\nexport const TOKEN_TYPE_APPROVER = 'approver';\nexport const TOKEN_TYPE_APPROVED_BY = 'approved-by';\nexport const TOKEN_TYPE_MERGE_USER = 'merge-user';\nexport const TOKEN_TYPE_ASSIGNEE = 'assignee';\nexport const TOKEN_TYPE_AUTHOR = 'author';\nexport const TOKEN_TYPE_CONFIDENTIAL = 'confidential';\nexport const TOKEN_TYPE_CONTACT = 'contact';\nexport const TOKEN_TYPE_DRAFT = 'draft';\nexport const TOKEN_TYPE_GROUP = 'group';\nexport const TOKEN_TYPE_GROUP_INVITE = 'group-invite';\nexport const TOKEN_TYPE_EPIC = 'epic';\nexport const TOKEN_TYPE_ASSIGNED_SEAT = 'assigned-seat';\n// As health status gets reused between issue lists and boards\n// this is in the shared constants. Until we have not decoupled the EE filtered search bar\n// from the CE component, we need to keep this in the CE code.\n// https://gitlab.com/gitlab-org/gitlab/-/issues/377838\nexport const TOKEN_TYPE_PROJECT = 'project';\nexport const TOKEN_TYPE_HEALTH = 'health';\nexport const TOKEN_TYPE_ITERATION = 'iteration';\nexport const TOKEN_TYPE_LABEL = 'label';\nexport const TOKEN_TYPE_MILESTONE = 'milestone';\nexport const TOKEN_TYPE_MY_REACTION = 'my-reaction';\nexport const TOKEN_TYPE_ORGANIZATION = 'organization';\nexport const TOKEN_TYPE_RELEASE = 'release';\nexport const TOKEN_TYPE_REVIEWER = 'reviewer';\nexport const TOKEN_TYPE_SOURCE_BRANCH = 'source-branch';\nexport const TOKEN_TYPE_STATUS = 'status';\nexport const TOKEN_TYPE_JOBS_RUNNER_TYPE = 'jobs-runner-type';\nexport const TOKEN_TYPE_TARGET_BRANCH = 'target-branch';\nexport const TOKEN_TYPE_TYPE = 'type';\nexport const TOKEN_TYPE_VERSION = 'version';\nexport const TOKEN_TYPE_WEIGHT = 'weight';\nexport const TOKEN_TYPE_SEARCH_WITHIN = 'in';\nexport const TOKEN_TYPE_CREATED = 'created';\nexport const TOKEN_TYPE_CLOSED = 'closed';\nexport const TOKEN_TYPE_DEPLOYED_BEFORE = 'deployed-before';\nexport const TOKEN_TYPE_DEPLOYED_AFTER = 'deployed-after';\nexport const TOKEN_TYPE_ENVIRONMENT = 'environment';\n\n// Due to the i18n eslint rule we can't have a capitalized string even if it is a case-aware URL param\n/* eslint-disable @gitlab/require-i18n-strings */\nexport const ENTITY_TYPES = {\n  USER: 'User',\n  AUTHOR: 'Author',\n  GROUP: 'Group',\n  PROJECT: 'Project',\n};\n/* eslint-enable @gitlab/require-i18n-strings */\n","import { rectToClientRect, computePosition as computePosition$1 } from '@floating-ui/core';\nexport { arrow, autoPlacement, detectOverflow, flip, hide, inline, limitShift, offset, shift, size } from '@floating-ui/core';\n\nfunction getWindow(node) {\n  var _node$ownerDocument;\n  return ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\n\nfunction getComputedStyle$1(element) {\n  return getWindow(element).getComputedStyle(element);\n}\n\nfunction isNode(value) {\n  return value instanceof getWindow(value).Node;\n}\nfunction getNodeName(node) {\n  if (isNode(node)) {\n    return (node.nodeName || '').toLowerCase();\n  }\n  // Mocked nodes in testing environments may not be instances of Node. By\n  // returning `#document` an infinite loop won't occur.\n  // https://github.com/floating-ui/floating-ui/issues/2317\n  return '#document';\n}\n\nfunction isHTMLElement(value) {\n  return value instanceof getWindow(value).HTMLElement;\n}\nfunction isElement(value) {\n  return value instanceof getWindow(value).Element;\n}\nfunction isShadowRoot(node) {\n  // Browsers without `ShadowRoot` support.\n  if (typeof ShadowRoot === 'undefined') {\n    return false;\n  }\n  return node instanceof getWindow(node).ShadowRoot || node instanceof ShadowRoot;\n}\nfunction isOverflowElement(element) {\n  const {\n    overflow,\n    overflowX,\n    overflowY,\n    display\n  } = getComputedStyle$1(element);\n  return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n  return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isContainingBlock(element) {\n  const safari = isSafari();\n  const css = getComputedStyle$1(element);\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  return css.transform !== 'none' || css.perspective !== 'none' || (css.containerType ? css.containerType !== 'normal' : false) || !safari && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !safari && (css.filter ? css.filter !== 'none' : false) || ['transform', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction isSafari() {\n  if (typeof CSS === 'undefined' || !CSS.supports) return false;\n  return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n  return ['html', 'body', '#document'].includes(getNodeName(node));\n}\n\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createEmptyCoords = v => ({\n  x: v,\n  y: v\n});\n\nfunction getCssDimensions(element) {\n  const css = getComputedStyle$1(element);\n  // In testing environments, the `width` and `height` properties are empty\n  // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n  let width = parseFloat(css.width) || 0;\n  let height = parseFloat(css.height) || 0;\n  const hasOffset = isHTMLElement(element);\n  const offsetWidth = hasOffset ? element.offsetWidth : width;\n  const offsetHeight = hasOffset ? element.offsetHeight : height;\n  const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n  if (shouldFallback) {\n    width = offsetWidth;\n    height = offsetHeight;\n  }\n  return {\n    width,\n    height,\n    $: shouldFallback\n  };\n}\n\nfunction unwrapElement(element) {\n  return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n  const domElement = unwrapElement(element);\n  if (!isHTMLElement(domElement)) {\n    return createEmptyCoords(1);\n  }\n  const rect = domElement.getBoundingClientRect();\n  const {\n    width,\n    height,\n    $\n  } = getCssDimensions(domElement);\n  let x = ($ ? round(rect.width) : rect.width) / width;\n  let y = ($ ? round(rect.height) : rect.height) / height;\n\n  // 0, NaN, or Infinity should always fallback to 1.\n\n  if (!x || !Number.isFinite(x)) {\n    x = 1;\n  }\n  if (!y || !Number.isFinite(y)) {\n    y = 1;\n  }\n  return {\n    x,\n    y\n  };\n}\n\nconst noOffsets = /*#__PURE__*/createEmptyCoords(0);\nfunction getVisualOffsets(element, isFixed, floatingOffsetParent) {\n  var _win$visualViewport, _win$visualViewport2;\n  if (isFixed === void 0) {\n    isFixed = true;\n  }\n  if (!isSafari()) {\n    return noOffsets;\n  }\n  const win = element ? getWindow(element) : window;\n  if (!floatingOffsetParent || isFixed && floatingOffsetParent !== win) {\n    return noOffsets;\n  }\n  return {\n    x: ((_win$visualViewport = win.visualViewport) == null ? void 0 : _win$visualViewport.offsetLeft) || 0,\n    y: ((_win$visualViewport2 = win.visualViewport) == null ? void 0 : _win$visualViewport2.offsetTop) || 0\n  };\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n  if (includeScale === void 0) {\n    includeScale = false;\n  }\n  if (isFixedStrategy === void 0) {\n    isFixedStrategy = false;\n  }\n  const clientRect = element.getBoundingClientRect();\n  const domElement = unwrapElement(element);\n  let scale = createEmptyCoords(1);\n  if (includeScale) {\n    if (offsetParent) {\n      if (isElement(offsetParent)) {\n        scale = getScale(offsetParent);\n      }\n    } else {\n      scale = getScale(element);\n    }\n  }\n  const visualOffsets = getVisualOffsets(domElement, isFixedStrategy, offsetParent);\n  let x = (clientRect.left + visualOffsets.x) / scale.x;\n  let y = (clientRect.top + visualOffsets.y) / scale.y;\n  let width = clientRect.width / scale.x;\n  let height = clientRect.height / scale.y;\n  if (domElement) {\n    const win = getWindow(domElement);\n    const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n    let currentIFrame = win.frameElement;\n    while (currentIFrame && offsetParent && offsetWin !== win) {\n      const iframeScale = getScale(currentIFrame);\n      const iframeRect = currentIFrame.getBoundingClientRect();\n      const css = getComputedStyle(currentIFrame);\n      const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n      const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n      x *= iframeScale.x;\n      y *= iframeScale.y;\n      width *= iframeScale.x;\n      height *= iframeScale.y;\n      x += left;\n      y += top;\n      currentIFrame = getWindow(currentIFrame).frameElement;\n    }\n  }\n  return rectToClientRect({\n    width,\n    height,\n    x,\n    y\n  });\n}\n\nfunction getDocumentElement(node) {\n  return ((isNode(node) ? node.ownerDocument : node.document) || window.document).documentElement;\n}\n\nfunction getNodeScroll(element) {\n  if (isElement(element)) {\n    return {\n      scrollLeft: element.scrollLeft,\n      scrollTop: element.scrollTop\n    };\n  }\n  return {\n    scrollLeft: element.pageXOffset,\n    scrollTop: element.pageYOffset\n  };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n  let {\n    rect,\n    offsetParent,\n    strategy\n  } = _ref;\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  if (offsetParent === documentElement) {\n    return rect;\n  }\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  let scale = createEmptyCoords(1);\n  const offsets = createEmptyCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && strategy !== 'fixed') {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent);\n      scale = getScale(offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    }\n  }\n  return {\n    width: rect.width * scale.x,\n    height: rect.height * scale.y,\n    x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,\n    y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y\n  };\n}\n\nfunction getWindowScrollBarX(element) {\n  // If <html> has a CSS width greater than the viewport, then this will be\n  // incorrect for RTL.\n  return getBoundingClientRect(getDocumentElement(element)).left + getNodeScroll(element).scrollLeft;\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n  const html = getDocumentElement(element);\n  const scroll = getNodeScroll(element);\n  const body = element.ownerDocument.body;\n  const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n  const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n  let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n  const y = -scroll.scrollTop;\n  if (getComputedStyle$1(body).direction === 'rtl') {\n    x += max(html.clientWidth, body.clientWidth) - width;\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\nfunction getParentNode(node) {\n  if (getNodeName(node) === 'html') {\n    return node;\n  }\n  const result =\n  // Step into the shadow DOM of the parent of a slotted node.\n  node.assignedSlot ||\n  // DOM Element detected.\n  node.parentNode ||\n  // ShadowRoot detected.\n  isShadowRoot(node) && node.host ||\n  // Fallback.\n  getDocumentElement(node);\n  return isShadowRoot(result) ? result.host : result;\n}\n\nfunction getNearestOverflowAncestor(node) {\n  const parentNode = getParentNode(node);\n  if (isLastTraversableNode(parentNode)) {\n    return node.ownerDocument ? node.ownerDocument.body : node.body;\n  }\n  if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n    return parentNode;\n  }\n  return getNearestOverflowAncestor(parentNode);\n}\n\nfunction getOverflowAncestors(node, list) {\n  var _node$ownerDocument;\n  if (list === void 0) {\n    list = [];\n  }\n  const scrollableAncestor = getNearestOverflowAncestor(node);\n  const isBody = scrollableAncestor === ((_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.body);\n  const win = getWindow(scrollableAncestor);\n  if (isBody) {\n    return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n  }\n  return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor));\n}\n\nfunction getViewportRect(element, strategy) {\n  const win = getWindow(element);\n  const html = getDocumentElement(element);\n  const visualViewport = win.visualViewport;\n  let width = html.clientWidth;\n  let height = html.clientHeight;\n  let x = 0;\n  let y = 0;\n  if (visualViewport) {\n    width = visualViewport.width;\n    height = visualViewport.height;\n    const visualViewportBased = isSafari();\n    if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n      x = visualViewport.offsetLeft;\n      y = visualViewport.offsetTop;\n    }\n  }\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n  const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n  const top = clientRect.top + element.clientTop;\n  const left = clientRect.left + element.clientLeft;\n  const scale = isHTMLElement(element) ? getScale(element) : createEmptyCoords(1);\n  const width = element.clientWidth * scale.x;\n  const height = element.clientHeight * scale.y;\n  const x = left * scale.x;\n  const y = top * scale.y;\n  return {\n    width,\n    height,\n    x,\n    y\n  };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n  let rect;\n  if (clippingAncestor === 'viewport') {\n    rect = getViewportRect(element, strategy);\n  } else if (clippingAncestor === 'document') {\n    rect = getDocumentRect(getDocumentElement(element));\n  } else if (isElement(clippingAncestor)) {\n    rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n  } else {\n    const visualOffsets = getVisualOffsets(element);\n    rect = {\n      ...clippingAncestor,\n      x: clippingAncestor.x - visualOffsets.x,\n      y: clippingAncestor.y - visualOffsets.y\n    };\n  }\n  return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n  const parentNode = getParentNode(element);\n  if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n    return false;\n  }\n  return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n  const cachedResult = cache.get(element);\n  if (cachedResult) {\n    return cachedResult;\n  }\n  let result = getOverflowAncestors(element).filter(el => isElement(el) && getNodeName(el) !== 'body');\n  let currentContainingBlockComputedStyle = null;\n  const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n  let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n  // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n  while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    const computedStyle = getComputedStyle$1(currentNode);\n    const currentNodeIsContaining = isContainingBlock(currentNode);\n    if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n      currentContainingBlockComputedStyle = null;\n    }\n    const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n    if (shouldDropCurrentNode) {\n      // Drop non-containing blocks.\n      result = result.filter(ancestor => ancestor !== currentNode);\n    } else {\n      // Record last containing block for next iteration.\n      currentContainingBlockComputedStyle = computedStyle;\n    }\n    currentNode = getParentNode(currentNode);\n  }\n  cache.set(element, result);\n  return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n  let {\n    element,\n    boundary,\n    rootBoundary,\n    strategy\n  } = _ref;\n  const elementClippingAncestors = boundary === 'clippingAncestors' ? getClippingElementAncestors(element, this._c) : [].concat(boundary);\n  const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n  const firstClippingAncestor = clippingAncestors[0];\n  const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n    const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n    accRect.top = max(rect.top, accRect.top);\n    accRect.right = min(rect.right, accRect.right);\n    accRect.bottom = min(rect.bottom, accRect.bottom);\n    accRect.left = max(rect.left, accRect.left);\n    return accRect;\n  }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n  return {\n    width: clippingRect.right - clippingRect.left,\n    height: clippingRect.bottom - clippingRect.top,\n    x: clippingRect.left,\n    y: clippingRect.top\n  };\n}\n\nfunction getDimensions(element) {\n  return getCssDimensions(element);\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n  if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n    return null;\n  }\n  if (polyfill) {\n    return polyfill(element);\n  }\n  return element.offsetParent;\n}\nfunction getContainingBlock(element) {\n  let currentNode = getParentNode(element);\n  while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n    if (isContainingBlock(currentNode)) {\n      return currentNode;\n    } else {\n      currentNode = getParentNode(currentNode);\n    }\n  }\n  return null;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n  const window = getWindow(element);\n  if (!isHTMLElement(element)) {\n    return window;\n  }\n  let offsetParent = getTrueOffsetParent(element, polyfill);\n  while (offsetParent && isTableElement(offsetParent) && getComputedStyle$1(offsetParent).position === 'static') {\n    offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n  }\n  if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle$1(offsetParent).position === 'static' && !isContainingBlock(offsetParent))) {\n    return window;\n  }\n  return offsetParent || getContainingBlock(element) || window;\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n  const isOffsetParentAnElement = isHTMLElement(offsetParent);\n  const documentElement = getDocumentElement(offsetParent);\n  const isFixed = strategy === 'fixed';\n  const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n  let scroll = {\n    scrollLeft: 0,\n    scrollTop: 0\n  };\n  const offsets = createEmptyCoords(0);\n  if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n    if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n      scroll = getNodeScroll(offsetParent);\n    }\n    if (isHTMLElement(offsetParent)) {\n      const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n      offsets.x = offsetRect.x + offsetParent.clientLeft;\n      offsets.y = offsetRect.y + offsetParent.clientTop;\n    } else if (documentElement) {\n      offsets.x = getWindowScrollBarX(documentElement);\n    }\n  }\n  return {\n    x: rect.left + scroll.scrollLeft - offsets.x,\n    y: rect.top + scroll.scrollTop - offsets.y,\n    width: rect.width,\n    height: rect.height\n  };\n}\n\nconst platform = {\n  getClippingRect,\n  convertOffsetParentRelativeRectToViewportRelativeRect,\n  isElement,\n  getDimensions,\n  getOffsetParent,\n  getDocumentElement,\n  getScale,\n  async getElementRects(_ref) {\n    let {\n      reference,\n      floating,\n      strategy\n    } = _ref;\n    const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n    const getDimensionsFn = this.getDimensions;\n    return {\n      reference: getRectRelativeToOffsetParent(reference, await getOffsetParentFn(floating), strategy),\n      floating: {\n        x: 0,\n        y: 0,\n        ...(await getDimensionsFn(floating))\n      }\n    };\n  },\n  getClientRects: element => Array.from(element.getClientRects()),\n  isRTL: element => getComputedStyle$1(element).direction === 'rtl'\n};\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n  let io = null;\n  let timeoutId;\n  const root = getDocumentElement(element);\n  function cleanup() {\n    clearTimeout(timeoutId);\n    io && io.disconnect();\n    io = null;\n  }\n  function refresh(skip, threshold) {\n    if (skip === void 0) {\n      skip = false;\n    }\n    if (threshold === void 0) {\n      threshold = 1;\n    }\n    cleanup();\n    const {\n      left,\n      top,\n      width,\n      height\n    } = element.getBoundingClientRect();\n    if (!skip) {\n      onMove();\n    }\n    if (!width || !height) {\n      return;\n    }\n    const insetTop = floor(top);\n    const insetRight = floor(root.clientWidth - (left + width));\n    const insetBottom = floor(root.clientHeight - (top + height));\n    const insetLeft = floor(left);\n    const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n    const options = {\n      rootMargin,\n      threshold: max(0, min(1, threshold)) || 1\n    };\n    let isFirstUpdate = true;\n    function handleObserve(entries) {\n      const ratio = entries[0].intersectionRatio;\n      if (ratio !== threshold) {\n        if (!isFirstUpdate) {\n          return refresh();\n        }\n        if (!ratio) {\n          timeoutId = setTimeout(() => {\n            refresh(false, 1e-7);\n          }, 100);\n        } else {\n          refresh(false, ratio);\n        }\n      }\n      isFirstUpdate = false;\n    }\n\n    // Older browsers don't support a `document` as the root and will throw an\n    // error.\n    try {\n      io = new IntersectionObserver(handleObserve, {\n        ...options,\n        // Handle <iframe>s\n        root: root.ownerDocument\n      });\n    } catch (e) {\n      io = new IntersectionObserver(handleObserve, options);\n    }\n    io.observe(element);\n  }\n  refresh(true);\n  return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    ancestorScroll = true,\n    ancestorResize = true,\n    elementResize = typeof ResizeObserver === 'function',\n    layoutShift = typeof IntersectionObserver === 'function',\n    animationFrame = false\n  } = options;\n  const referenceEl = unwrapElement(reference);\n  const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n  ancestors.forEach(ancestor => {\n    ancestorScroll && ancestor.addEventListener('scroll', update, {\n      passive: true\n    });\n    ancestorResize && ancestor.addEventListener('resize', update);\n  });\n  const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n  let reobserveFrame = -1;\n  let resizeObserver = null;\n  if (elementResize) {\n    resizeObserver = new ResizeObserver(_ref => {\n      let [firstEntry] = _ref;\n      if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n        // Prevent update loops when using the `size` middleware.\n        // https://github.com/floating-ui/floating-ui/issues/1740\n        resizeObserver.unobserve(floating);\n        cancelAnimationFrame(reobserveFrame);\n        reobserveFrame = requestAnimationFrame(() => {\n          resizeObserver && resizeObserver.observe(floating);\n        });\n      }\n      update();\n    });\n    if (referenceEl && !animationFrame) {\n      resizeObserver.observe(referenceEl);\n    }\n    resizeObserver.observe(floating);\n  }\n  let frameId;\n  let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n  if (animationFrame) {\n    frameLoop();\n  }\n  function frameLoop() {\n    const nextRefRect = getBoundingClientRect(reference);\n    if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {\n      update();\n    }\n    prevRefRect = nextRefRect;\n    frameId = requestAnimationFrame(frameLoop);\n  }\n  update();\n  return () => {\n    ancestors.forEach(ancestor => {\n      ancestorScroll && ancestor.removeEventListener('scroll', update);\n      ancestorResize && ancestor.removeEventListener('resize', update);\n    });\n    cleanupIo && cleanupIo();\n    resizeObserver && resizeObserver.disconnect();\n    resizeObserver = null;\n    if (animationFrame) {\n      cancelAnimationFrame(frameId);\n    }\n  };\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a reference element when it is given a certain CSS positioning\n * strategy.\n */\nconst computePosition = (reference, floating, options) => {\n  // This caches the expensive `getClippingElementAncestors` function so that\n  // multiple lifecycle resets re-use the same result. It only lives for a\n  // single call. If other functions become expensive, we can add them as well.\n  const cache = new Map();\n  const mergedOptions = {\n    platform,\n    ...options\n  };\n  const platformWithCache = {\n    ...mergedOptions.platform,\n    _c: cache\n  };\n  return computePosition$1(reference, floating, {\n    ...mergedOptions,\n    platform: platformWithCache\n  });\n};\n\nexport { autoUpdate, computePosition, getOverflowAncestors, platform };\n","import { extend } from '../../vue';\nimport { NAME_TABLE_CELL } from '../../constants/components';\nimport { PROP_TYPE_NUMBER_STRING, PROP_TYPE_STRING, PROP_TYPE_BOOLEAN } from '../../constants/props';\nimport { isTag } from '../../utils/dom';\nimport { isUndefinedOrNull } from '../../utils/inspect';\nimport { toInteger } from '../../utils/number';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { toString } from '../../utils/string';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Helper methods ---\n\n// Parse a rowspan or colspan into a digit (or `null` if < `1` )\nconst parseSpan = value => {\n  value = toInteger(value, 0);\n  return value > 0 ? value : null;\n};\n\n/* istanbul ignore next */\nconst spanValidator = value => isUndefinedOrNull(value) || parseSpan(value) > 0;\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  colspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n  rowspan: makeProp(PROP_TYPE_NUMBER_STRING, null, spanValidator),\n  stackedHeading: makeProp(PROP_TYPE_STRING),\n  stickyColumn: makeProp(PROP_TYPE_BOOLEAN, false),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TABLE_CELL);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTd = /*#__PURE__*/extend({\n  name: NAME_TABLE_CELL,\n  // Mixin order is important!\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  inject: {\n    getBvTableTr: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTableTr() {\n      return this.getBvTableTr();\n    },\n    // Overridden by `<b-th>`\n    tag() {\n      return 'td';\n    },\n    inTbody() {\n      return this.bvTableTr.inTbody;\n    },\n    inThead() {\n      return this.bvTableTr.inThead;\n    },\n    inTfoot() {\n      return this.bvTableTr.inTfoot;\n    },\n    isDark() {\n      return this.bvTableTr.isDark;\n    },\n    isStacked() {\n      return this.bvTableTr.isStacked;\n    },\n    // We only support stacked-heading in tbody in stacked mode\n    isStackedCell() {\n      return this.inTbody && this.isStacked;\n    },\n    isResponsive() {\n      return this.bvTableTr.isResponsive;\n    },\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky headers only apply to cells in table `thead`\n    isStickyHeader() {\n      return this.bvTableTr.isStickyHeader;\n    },\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return this.bvTableTr.hasStickyHeader;\n    },\n    // Needed to handle background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    // Sticky column cells are only available in responsive\n    // mode (horizontal scrolling) or when sticky header mode\n    // Applies to cells in `thead`, `tbody` and `tfoot`\n    isStickyColumn() {\n      return !this.isStacked && (this.isResponsive || this.hasStickyHeader) && this.stickyColumn;\n    },\n    rowVariant() {\n      return this.bvTableTr.variant;\n    },\n    headVariant() {\n      return this.bvTableTr.headVariant;\n    },\n    footVariant() {\n      return this.bvTableTr.footVariant;\n    },\n    tableVariant() {\n      return this.bvTableTr.tableVariant;\n    },\n    computedColspan() {\n      return parseSpan(this.colspan);\n    },\n    computedRowspan() {\n      return parseSpan(this.rowspan);\n    },\n    // We use computed props here for improved performance by caching\n    // the results of the string interpolation\n    cellClasses() {\n      let {\n        variant,\n        headVariant,\n        isStickyColumn\n      } = this;\n      if (!variant && this.isStickyHeader && !headVariant || !variant && isStickyColumn && this.inTfoot && !this.footVariant || !variant && isStickyColumn && this.inThead && !headVariant || !variant && isStickyColumn && this.inTbody) {\n        // Needed for sticky-header mode as Bootstrap v4 table cells do\n        // not inherit parent's `background-color`\n        variant = this.rowVariant || this.tableVariant || 'b-table-default';\n      }\n      return [variant ? `${this.isDark ? 'bg' : 'table'}-${variant}` : null, isStickyColumn ? 'b-table-sticky-column' : null];\n    },\n    cellAttrs() {\n      const {\n        stackedHeading\n      } = this;\n\n      // We use computed props here for improved performance by caching\n      // the results of the object spread (Object.assign)\n      const headOrFoot = this.inThead || this.inTfoot;\n      // Make sure col/rowspan's are > 0 or null\n      const colspan = this.computedColspan;\n      const rowspan = this.computedRowspan;\n      // Default role and scope\n      let role = 'cell';\n      let scope = null;\n\n      // Compute role and scope\n      // We only add scopes with an explicit span of 1 or greater\n      if (headOrFoot) {\n        // Header or footer cells\n        role = 'columnheader';\n        scope = colspan > 0 ? 'colspan' : 'col';\n      } else if (isTag(this.tag, 'th')) {\n        // th's in tbody\n        role = 'rowheader';\n        scope = rowspan > 0 ? 'rowgroup' : 'row';\n      }\n      return {\n        colspan,\n        rowspan,\n        role,\n        scope,\n        // Allow users to override role/scope plus add other attributes\n        ...this.bvAttrs,\n        // Add in the stacked cell label data-attribute if in\n        // stacked mode (if a stacked heading label is provided)\n        'data-label': this.isStackedCell && !isUndefinedOrNull(stackedHeading) ? /* istanbul ignore next */toString(stackedHeading) : null\n      };\n    }\n  },\n  render(h) {\n    const $content = [this.normalizeSlot()];\n    return h(this.tag, {\n      class: this.cellClasses,\n      attrs: this.cellAttrs,\n      // Transfer any native listeners\n      on: this.bvListeners\n    }, [this.isStackedCell ? h('div', [$content]) : $content]);\n  }\n});\n\nexport { BTd, props };\n","import { BLink } from '../../../../vendor/bootstrap-vue/src/components/link/link';\nimport { ENTER, SPACE } from '../constants';\nimport { stopEvent } from '../../../../utils/utils';\nimport { isItem } from './utils';\nimport { DISCLOSURE_DROPDOWN_ITEM_NAME } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst ITEM_CLASS = 'gl-new-dropdown-item';\nvar script = {\n  name: DISCLOSURE_DROPDOWN_ITEM_NAME,\n  ITEM_CLASS,\n  components: {\n    BLink\n  },\n  props: {\n    item: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: isItem\n    }\n  },\n  computed: {\n    isLink() {\n      var _this$item, _this$item2;\n      return typeof ((_this$item = this.item) === null || _this$item === void 0 ? void 0 : _this$item.href) === 'string' || typeof ((_this$item2 = this.item) === null || _this$item2 === void 0 ? void 0 : _this$item2.to) === 'string';\n    },\n    isCustomContent() {\n      return Boolean(this.$scopedSlots.default);\n    },\n    itemComponent() {\n      const {\n        item\n      } = this;\n      if (this.isLink) return {\n        is: BLink,\n        attrs: {\n          href: item.href,\n          to: item.to,\n          ...item.extraAttrs\n        },\n        listeners: {\n          click: this.action\n        }\n      };\n      return {\n        is: 'button',\n        attrs: {\n          ...(item === null || item === void 0 ? void 0 : item.extraAttrs),\n          type: 'button'\n        },\n        listeners: {\n          click: () => {\n            var _item$action;\n            item === null || item === void 0 ? void 0 : (_item$action = item.action) === null || _item$action === void 0 ? void 0 : _item$action.call(undefined, item);\n            this.action();\n          }\n        }\n      };\n    },\n    listIndex() {\n      var _this$item3, _this$item3$extraAttr;\n      return (_this$item3 = this.item) !== null && _this$item3 !== void 0 && (_this$item3$extraAttr = _this$item3.extraAttrs) !== null && _this$item3$extraAttr !== void 0 && _this$item3$extraAttr.disabled ? null : 0;\n    },\n    componentIndex() {\n      var _this$item4, _this$item4$extraAttr;\n      return (_this$item4 = this.item) !== null && _this$item4 !== void 0 && (_this$item4$extraAttr = _this$item4.extraAttrs) !== null && _this$item4$extraAttr !== void 0 && _this$item4$extraAttr.disabled ? null : -1;\n    },\n    wrapperClass() {\n      var _this$item$wrapperCla, _this$item5;\n      return (_this$item$wrapperCla = (_this$item5 = this.item) === null || _this$item5 === void 0 ? void 0 : _this$item5.wrapperClass) !== null && _this$item$wrapperCla !== void 0 ? _this$item$wrapperCla : '';\n    },\n    wrapperListeners() {\n      const listeners = {\n        keydown: this.onKeydown\n      };\n      if (this.isCustomContent) {\n        listeners.click = this.action;\n      }\n      return listeners;\n    }\n  },\n  methods: {\n    onKeydown(event) {\n      const {\n        code\n      } = event;\n      if (code === ENTER || code === SPACE) {\n        if (this.isCustomContent) {\n          this.action();\n        } else {\n          stopEvent(event);\n          /** Instead of simply navigating or calling the action, we want\n           * the `a/button` to be the target of the event as it might have additional attributes.\n           * E.g. `a` might have `target` attribute.\n           */\n          const e = new MouseEvent('click', {\n            bubbles: true,\n            cancelable: true\n          });\n          if (this.isLink) {\n            this.$refs.item.$el.dispatchEvent(e);\n          } else {\n            var _this$$refs$item;\n            (_this$$refs$item = this.$refs.item) === null || _this$$refs$item === void 0 ? void 0 : _this$$refs$item.dispatchEvent(e);\n          }\n        }\n      }\n    },\n    action() {\n      this.$emit('action', this.item);\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',_vm._g({class:[_vm.$options.ITEM_CLASS, _vm.wrapperClass],attrs:{\"tabindex\":_vm.listIndex,\"data-testid\":\"disclosure-dropdown-item\"}},_vm.wrapperListeners),[_vm._t(\"default\",function(){return [_c(_vm.itemComponent.is,_vm._g(_vm._b({ref:\"item\",tag:\"component\",staticClass:\"gl-new-dropdown-item-content\",attrs:{\"tabindex\":_vm.componentIndex}},'component',_vm.itemComponent.attrs,false),_vm.itemComponent.listeners),[_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n          \"+_vm._s(_vm.item.text)+\"\\n        \")]})],2)])]})],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { ITEM_CLASS };\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n  x: v,\n  y: v\n});\nconst oppositeSideMap = {\n  left: 'right',\n  right: 'left',\n  bottom: 'top',\n  top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n  start: 'end',\n  end: 'start'\n};\nfunction clamp(start, value, end) {\n  return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n  return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n  return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n  return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n  return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n  return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n  return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n  return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n  if (rtl === void 0) {\n    rtl = false;\n  }\n  const alignment = getAlignment(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const length = getAxisLength(alignmentAxis);\n  let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n  if (rects.reference[length] > rects.floating[length]) {\n    mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n  }\n  return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n  const oppositePlacement = getOppositePlacement(placement);\n  return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n  return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n  const lr = ['left', 'right'];\n  const rl = ['right', 'left'];\n  const tb = ['top', 'bottom'];\n  const bt = ['bottom', 'top'];\n  switch (side) {\n    case 'top':\n    case 'bottom':\n      if (rtl) return isStart ? rl : lr;\n      return isStart ? lr : rl;\n    case 'left':\n    case 'right':\n      return isStart ? tb : bt;\n    default:\n      return [];\n  }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n  const alignment = getAlignment(placement);\n  let list = getSideList(getSide(placement), direction === 'start', rtl);\n  if (alignment) {\n    list = list.map(side => side + \"-\" + alignment);\n    if (flipAlignment) {\n      list = list.concat(list.map(getOppositeAlignmentPlacement));\n    }\n  }\n  return list;\n}\nfunction getOppositePlacement(placement) {\n  return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n  return {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n    ...padding\n  };\n}\nfunction getPaddingObject(padding) {\n  return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n    top: padding,\n    right: padding,\n    bottom: padding,\n    left: padding\n  };\n}\nfunction rectToClientRect(rect) {\n  const {\n    x,\n    y,\n    width,\n    height\n  } = rect;\n  return {\n    width,\n    height,\n    top: y,\n    left: x,\n    right: x + width,\n    bottom: y + height,\n    x,\n    y\n  };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","/** Used to map aliases to their real names. */\nexports.aliasToReal = {\n\n  // Lodash aliases.\n  'each': 'forEach',\n  'eachRight': 'forEachRight',\n  'entries': 'toPairs',\n  'entriesIn': 'toPairsIn',\n  'extend': 'assignIn',\n  'extendAll': 'assignInAll',\n  'extendAllWith': 'assignInAllWith',\n  'extendWith': 'assignInWith',\n  'first': 'head',\n\n  // Methods that are curried variants of others.\n  'conforms': 'conformsTo',\n  'matches': 'isMatch',\n  'property': 'get',\n\n  // Ramda aliases.\n  '__': 'placeholder',\n  'F': 'stubFalse',\n  'T': 'stubTrue',\n  'all': 'every',\n  'allPass': 'overEvery',\n  'always': 'constant',\n  'any': 'some',\n  'anyPass': 'overSome',\n  'apply': 'spread',\n  'assoc': 'set',\n  'assocPath': 'set',\n  'complement': 'negate',\n  'compose': 'flowRight',\n  'contains': 'includes',\n  'dissoc': 'unset',\n  'dissocPath': 'unset',\n  'dropLast': 'dropRight',\n  'dropLastWhile': 'dropRightWhile',\n  'equals': 'isEqual',\n  'identical': 'eq',\n  'indexBy': 'keyBy',\n  'init': 'initial',\n  'invertObj': 'invert',\n  'juxt': 'over',\n  'omitAll': 'omit',\n  'nAry': 'ary',\n  'path': 'get',\n  'pathEq': 'matchesProperty',\n  'pathOr': 'getOr',\n  'paths': 'at',\n  'pickAll': 'pick',\n  'pipe': 'flow',\n  'pluck': 'map',\n  'prop': 'get',\n  'propEq': 'matchesProperty',\n  'propOr': 'getOr',\n  'props': 'at',\n  'symmetricDifference': 'xor',\n  'symmetricDifferenceBy': 'xorBy',\n  'symmetricDifferenceWith': 'xorWith',\n  'takeLast': 'takeRight',\n  'takeLastWhile': 'takeRightWhile',\n  'unapply': 'rest',\n  'unnest': 'flatten',\n  'useWith': 'overArgs',\n  'where': 'conformsTo',\n  'whereEq': 'isMatch',\n  'zipObj': 'zipObject'\n};\n\n/** Used to map ary to method names. */\nexports.aryMethod = {\n  '1': [\n    'assignAll', 'assignInAll', 'attempt', 'castArray', 'ceil', 'create',\n    'curry', 'curryRight', 'defaultsAll', 'defaultsDeepAll', 'floor', 'flow',\n    'flowRight', 'fromPairs', 'invert', 'iteratee', 'memoize', 'method', 'mergeAll',\n    'methodOf', 'mixin', 'nthArg', 'over', 'overEvery', 'overSome','rest', 'reverse',\n    'round', 'runInContext', 'spread', 'template', 'trim', 'trimEnd', 'trimStart',\n    'uniqueId', 'words', 'zipAll'\n  ],\n  '2': [\n    'add', 'after', 'ary', 'assign', 'assignAllWith', 'assignIn', 'assignInAllWith',\n    'at', 'before', 'bind', 'bindAll', 'bindKey', 'chunk', 'cloneDeepWith',\n    'cloneWith', 'concat', 'conformsTo', 'countBy', 'curryN', 'curryRightN',\n    'debounce', 'defaults', 'defaultsDeep', 'defaultTo', 'delay', 'difference',\n    'divide', 'drop', 'dropRight', 'dropRightWhile', 'dropWhile', 'endsWith', 'eq',\n    'every', 'filter', 'find', 'findIndex', 'findKey', 'findLast', 'findLastIndex',\n    'findLastKey', 'flatMap', 'flatMapDeep', 'flattenDepth', 'forEach',\n    'forEachRight', 'forIn', 'forInRight', 'forOwn', 'forOwnRight', 'get',\n    'groupBy', 'gt', 'gte', 'has', 'hasIn', 'includes', 'indexOf', 'intersection',\n    'invertBy', 'invoke', 'invokeMap', 'isEqual', 'isMatch', 'join', 'keyBy',\n    'lastIndexOf', 'lt', 'lte', 'map', 'mapKeys', 'mapValues', 'matchesProperty',\n    'maxBy', 'meanBy', 'merge', 'mergeAllWith', 'minBy', 'multiply', 'nth', 'omit',\n    'omitBy', 'overArgs', 'pad', 'padEnd', 'padStart', 'parseInt', 'partial',\n    'partialRight', 'partition', 'pick', 'pickBy', 'propertyOf', 'pull', 'pullAll',\n    'pullAt', 'random', 'range', 'rangeRight', 'rearg', 'reject', 'remove',\n    'repeat', 'restFrom', 'result', 'sampleSize', 'some', 'sortBy', 'sortedIndex',\n    'sortedIndexOf', 'sortedLastIndex', 'sortedLastIndexOf', 'sortedUniqBy',\n    'split', 'spreadFrom', 'startsWith', 'subtract', 'sumBy', 'take', 'takeRight',\n    'takeRightWhile', 'takeWhile', 'tap', 'throttle', 'thru', 'times', 'trimChars',\n    'trimCharsEnd', 'trimCharsStart', 'truncate', 'union', 'uniqBy', 'uniqWith',\n    'unset', 'unzipWith', 'without', 'wrap', 'xor', 'zip', 'zipObject',\n    'zipObjectDeep'\n  ],\n  '3': [\n    'assignInWith', 'assignWith', 'clamp', 'differenceBy', 'differenceWith',\n    'findFrom', 'findIndexFrom', 'findLastFrom', 'findLastIndexFrom', 'getOr',\n    'includesFrom', 'indexOfFrom', 'inRange', 'intersectionBy', 'intersectionWith',\n    'invokeArgs', 'invokeArgsMap', 'isEqualWith', 'isMatchWith', 'flatMapDepth',\n    'lastIndexOfFrom', 'mergeWith', 'orderBy', 'padChars', 'padCharsEnd',\n    'padCharsStart', 'pullAllBy', 'pullAllWith', 'rangeStep', 'rangeStepRight',\n    'reduce', 'reduceRight', 'replace', 'set', 'slice', 'sortedIndexBy',\n    'sortedLastIndexBy', 'transform', 'unionBy', 'unionWith', 'update', 'xorBy',\n    'xorWith', 'zipWith'\n  ],\n  '4': [\n    'fill', 'setWith', 'updateWith'\n  ]\n};\n\n/** Used to map ary to rearg configs. */\nexports.aryRearg = {\n  '2': [1, 0],\n  '3': [2, 0, 1],\n  '4': [3, 2, 0, 1]\n};\n\n/** Used to map method names to their iteratee ary. */\nexports.iterateeAry = {\n  'dropRightWhile': 1,\n  'dropWhile': 1,\n  'every': 1,\n  'filter': 1,\n  'find': 1,\n  'findFrom': 1,\n  'findIndex': 1,\n  'findIndexFrom': 1,\n  'findKey': 1,\n  'findLast': 1,\n  'findLastFrom': 1,\n  'findLastIndex': 1,\n  'findLastIndexFrom': 1,\n  'findLastKey': 1,\n  'flatMap': 1,\n  'flatMapDeep': 1,\n  'flatMapDepth': 1,\n  'forEach': 1,\n  'forEachRight': 1,\n  'forIn': 1,\n  'forInRight': 1,\n  'forOwn': 1,\n  'forOwnRight': 1,\n  'map': 1,\n  'mapKeys': 1,\n  'mapValues': 1,\n  'partition': 1,\n  'reduce': 2,\n  'reduceRight': 2,\n  'reject': 1,\n  'remove': 1,\n  'some': 1,\n  'takeRightWhile': 1,\n  'takeWhile': 1,\n  'times': 1,\n  'transform': 2\n};\n\n/** Used to map method names to iteratee rearg configs. */\nexports.iterateeRearg = {\n  'mapKeys': [1],\n  'reduceRight': [1, 0]\n};\n\n/** Used to map method names to rearg configs. */\nexports.methodRearg = {\n  'assignInAllWith': [1, 0],\n  'assignInWith': [1, 2, 0],\n  'assignAllWith': [1, 0],\n  'assignWith': [1, 2, 0],\n  'differenceBy': [1, 2, 0],\n  'differenceWith': [1, 2, 0],\n  'getOr': [2, 1, 0],\n  'intersectionBy': [1, 2, 0],\n  'intersectionWith': [1, 2, 0],\n  'isEqualWith': [1, 2, 0],\n  'isMatchWith': [2, 1, 0],\n  'mergeAllWith': [1, 0],\n  'mergeWith': [1, 2, 0],\n  'padChars': [2, 1, 0],\n  'padCharsEnd': [2, 1, 0],\n  'padCharsStart': [2, 1, 0],\n  'pullAllBy': [2, 1, 0],\n  'pullAllWith': [2, 1, 0],\n  'rangeStep': [1, 2, 0],\n  'rangeStepRight': [1, 2, 0],\n  'setWith': [3, 1, 2, 0],\n  'sortedIndexBy': [2, 1, 0],\n  'sortedLastIndexBy': [2, 1, 0],\n  'unionBy': [1, 2, 0],\n  'unionWith': [1, 2, 0],\n  'updateWith': [3, 1, 2, 0],\n  'xorBy': [1, 2, 0],\n  'xorWith': [1, 2, 0],\n  'zipWith': [1, 2, 0]\n};\n\n/** Used to map method names to spread configs. */\nexports.methodSpread = {\n  'assignAll': { 'start': 0 },\n  'assignAllWith': { 'start': 0 },\n  'assignInAll': { 'start': 0 },\n  'assignInAllWith': { 'start': 0 },\n  'defaultsAll': { 'start': 0 },\n  'defaultsDeepAll': { 'start': 0 },\n  'invokeArgs': { 'start': 2 },\n  'invokeArgsMap': { 'start': 2 },\n  'mergeAll': { 'start': 0 },\n  'mergeAllWith': { 'start': 0 },\n  'partial': { 'start': 1 },\n  'partialRight': { 'start': 1 },\n  'without': { 'start': 1 },\n  'zipAll': { 'start': 0 }\n};\n\n/** Used to identify methods which mutate arrays or objects. */\nexports.mutate = {\n  'array': {\n    'fill': true,\n    'pull': true,\n    'pullAll': true,\n    'pullAllBy': true,\n    'pullAllWith': true,\n    'pullAt': true,\n    'remove': true,\n    'reverse': true\n  },\n  'object': {\n    'assign': true,\n    'assignAll': true,\n    'assignAllWith': true,\n    'assignIn': true,\n    'assignInAll': true,\n    'assignInAllWith': true,\n    'assignInWith': true,\n    'assignWith': true,\n    'defaults': true,\n    'defaultsAll': true,\n    'defaultsDeep': true,\n    'defaultsDeepAll': true,\n    'merge': true,\n    'mergeAll': true,\n    'mergeAllWith': true,\n    'mergeWith': true,\n  },\n  'set': {\n    'set': true,\n    'setWith': true,\n    'unset': true,\n    'update': true,\n    'updateWith': true\n  }\n};\n\n/** Used to map real names to their aliases. */\nexports.realToAlias = (function() {\n  var hasOwnProperty = Object.prototype.hasOwnProperty,\n      object = exports.aliasToReal,\n      result = {};\n\n  for (var key in object) {\n    var value = object[key];\n    if (hasOwnProperty.call(result, value)) {\n      result[value].push(key);\n    } else {\n      result[value] = [key];\n    }\n  }\n  return result;\n}());\n\n/** Used to map method names to other names. */\nexports.remap = {\n  'assignAll': 'assign',\n  'assignAllWith': 'assignWith',\n  'assignInAll': 'assignIn',\n  'assignInAllWith': 'assignInWith',\n  'curryN': 'curry',\n  'curryRightN': 'curryRight',\n  'defaultsAll': 'defaults',\n  'defaultsDeepAll': 'defaultsDeep',\n  'findFrom': 'find',\n  'findIndexFrom': 'findIndex',\n  'findLastFrom': 'findLast',\n  'findLastIndexFrom': 'findLastIndex',\n  'getOr': 'get',\n  'includesFrom': 'includes',\n  'indexOfFrom': 'indexOf',\n  'invokeArgs': 'invoke',\n  'invokeArgsMap': 'invokeMap',\n  'lastIndexOfFrom': 'lastIndexOf',\n  'mergeAll': 'merge',\n  'mergeAllWith': 'mergeWith',\n  'padChars': 'pad',\n  'padCharsEnd': 'padEnd',\n  'padCharsStart': 'padStart',\n  'propertyOf': 'get',\n  'rangeStep': 'range',\n  'rangeStepRight': 'rangeRight',\n  'restFrom': 'rest',\n  'spreadFrom': 'spread',\n  'trimChars': 'trim',\n  'trimCharsEnd': 'trimEnd',\n  'trimCharsStart': 'trimStart',\n  'zipAll': 'zip'\n};\n\n/** Used to track methods that skip fixing their arity. */\nexports.skipFixed = {\n  'castArray': true,\n  'flow': true,\n  'flowRight': true,\n  'iteratee': true,\n  'mixin': true,\n  'rearg': true,\n  'runInContext': true\n};\n\n/** Used to track methods that skip rearranging arguments. */\nexports.skipRearg = {\n  'add': true,\n  'assign': true,\n  'assignIn': true,\n  'bind': true,\n  'bindKey': true,\n  'concat': true,\n  'difference': true,\n  'divide': true,\n  'eq': true,\n  'gt': true,\n  'gte': true,\n  'isEqual': true,\n  'lt': true,\n  'lte': true,\n  'matchesProperty': true,\n  'merge': true,\n  'multiply': true,\n  'overArgs': true,\n  'partial': true,\n  'partialRight': true,\n  'propertyOf': true,\n  'random': true,\n  'range': true,\n  'rangeRight': true,\n  'subtract': true,\n  'zip': true,\n  'zipObject': true,\n  'zipObjectDeep': true\n};\n","import { extend } from '../../vue';\nimport { NAME_TH } from '../../constants/components';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { props as props$1, BTd } from './td';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(props$1, NAME_TH);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTh = /*#__PURE__*/extend({\n  name: NAME_TH,\n  extends: BTd,\n  props,\n  computed: {\n    tag() {\n      return 'th';\n    }\n  }\n});\n\nexport { BTh, props };\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"FragmentDefinition\",\"name\":{\"kind\":\"Name\",\"value\":\"Milestone\"},\"typeCondition\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Milestone\"}},\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"title\"},\"arguments\":[],\"directives\":[]}]}}],\"loc\":{\"start\":0,\"end\":49}};\n    doc.loc.source = {\"body\":\"fragment Milestone on Milestone {\\n  id\\n  title\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  \n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"Milestone\"] = oneQuery(doc, \"Milestone\");\n        \n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_CURRY_FLAG = 8;\n\n/**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n *   return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\nfunction curry(func, arity, guard) {\n  arity = guard ? undefined : arity;\n  var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n  result.placeholder = curry.placeholder;\n  return result;\n}\n\n// Assign default placeholders.\ncurry.placeholder = {};\n\nmodule.exports = curry;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n  var length = array.length,\n      result = new array.constructor(length);\n\n  // Add properties assigned by `RegExp#exec`.\n  if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n    result.index = array.index;\n    result.input = array.input;\n  }\n  return result;\n}\n\nmodule.exports = initCloneArray;\n","import { extend, mergeData } from '../../vue';\nimport { NAME_DROPDOWN_HEADER } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { isTag } from '../../utils/dom';\nimport { omit } from '../../utils/object';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  id: makeProp(PROP_TYPE_STRING),\n  tag: makeProp(PROP_TYPE_STRING, 'header'),\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_DROPDOWN_HEADER);\n\n// --- Main component ---\n\n// @vue/component\nconst BDropdownHeader = /*#__PURE__*/extend({\n  name: NAME_DROPDOWN_HEADER,\n  functional: true,\n  props,\n  render(h, _ref) {\n    let {\n      props,\n      data,\n      children\n    } = _ref;\n    const {\n      tag,\n      variant\n    } = props;\n    return h('li', mergeData(omit(data, ['attrs']), {\n      attrs: {\n        role: 'presentation'\n      }\n    }), [h(tag, {\n      staticClass: 'dropdown-header',\n      class: {\n        [`text-${variant}`]: variant\n      },\n      attrs: {\n        ...(data.attrs || {}),\n        id: props.id || null,\n        role: isTag(tag, 'header') ? null : 'heading'\n      },\n      ref: 'header'\n    }, children)]);\n  }\n});\n\nexport { BDropdownHeader, props };\n","import { BDropdownHeader } from '../../../vendor/bootstrap-vue/src/components/dropdown/dropdown-header';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlDropdownHeader',\n  components: {\n    BDropdownHeader\n  },\n  inheritAttrs: false\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-dropdown-header',_vm._g(_vm._b({staticClass:\"gl-dropdown-section-header\"},'b-dropdown-header',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { extend } from '../../vue';\nimport { NAME_TBODY } from '../../constants/components';\nimport { PROP_TYPE_OBJECT } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  tbodyTransitionHandlers: makeProp(PROP_TYPE_OBJECT),\n  tbodyTransitionProps: makeProp(PROP_TYPE_OBJECT)\n}, NAME_TBODY);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTbody = /*#__PURE__*/extend({\n  name: NAME_TBODY,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableRowGroup: () => this\n    };\n  },\n  inject: {\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    getBvTable: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTable() {\n      return this.getBvTable();\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isTbody() {\n      return true;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTable.dark;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTable.isStacked;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTable.isResponsive;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader() {\n      return false;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTable.stickyHeader;\n    },\n    // Sniffed by `<b-tr>` / `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTable.tableVariant;\n    },\n    isTransitionGroup() {\n      return this.tbodyTransitionProps || this.tbodyTransitionHandlers;\n    },\n    tbodyAttrs() {\n      return {\n        role: 'rowgroup',\n        ...this.bvAttrs\n      };\n    },\n    tbodyProps() {\n      const {\n        tbodyTransitionProps\n      } = this;\n      return tbodyTransitionProps ? {\n        ...tbodyTransitionProps,\n        tag: 'tbody'\n      } : {};\n    }\n  },\n  render(h) {\n    const data = {\n      props: this.tbodyProps,\n      attrs: this.tbodyAttrs\n    };\n    if (this.isTransitionGroup) {\n      // We use native listeners if a transition group for any delegated events\n      data.on = this.tbodyTransitionHandlers || {};\n      data.nativeOn = this.bvListeners;\n    } else {\n      // Otherwise we place any listeners on the tbody element\n      data.on = this.bvListeners;\n    }\n    return h(this.isTransitionGroup ? 'transition-group' : 'tbody', data, this.normalizeSlot());\n  }\n});\n\nexport { BTbody, props };\n","import { extend, REF_FOR_KEY } from '../../../vue';\nimport { EVENT_NAME_ROW_HOVERED, EVENT_NAME_ROW_UNHOVERED, EVENT_NAME_ROW_CLICKED } from '../../../constants/events';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_OBJECT_FUNCTION, PROP_TYPE_FUNCTION } from '../../../constants/props';\nimport { SLOT_NAME_ROW_DETAILS } from '../../../constants/slots';\nimport { useParentMixin } from '../../../mixins/use-parent';\nimport { get } from '../../../utils/get';\nimport { isFunction, isString, isUndefinedOrNull } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { toString } from '../../../utils/string';\nimport { BTr } from '../tr';\nimport { BTd } from '../td';\nimport { BTh } from '../th';\nimport { FIELD_KEY_SHOW_DETAILS, FIELD_KEY_CELL_VARIANT, FIELD_KEY_ROW_VARIANT } from './constants';\n\n// --- Props ---\n\nconst props = {\n  detailsTdClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tbodyTrAttr: makeProp(PROP_TYPE_OBJECT_FUNCTION),\n  tbodyTrClass: makeProp([...PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_FUNCTION])\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst tbodyRowMixin = extend({\n  mixins: [useParentMixin],\n  props,\n  methods: {\n    // Methods for computing classes, attributes and styles for table cells\n    getTdValues(item, key, tdValue, defaultValue) {\n      const {\n        bvParent\n      } = this;\n      if (tdValue) {\n        const value = get(item, key, '');\n        if (isFunction(tdValue)) {\n          return tdValue(value, key, item);\n        } else if (isString(tdValue) && isFunction(bvParent[tdValue])) {\n          return bvParent[tdValue](value, key, item);\n        }\n        return tdValue;\n      }\n      return defaultValue;\n    },\n    getThValues(item, key, thValue, type, defaultValue) {\n      const {\n        bvParent\n      } = this;\n      if (thValue) {\n        const value = get(item, key, '');\n        if (isFunction(thValue)) {\n          return thValue(value, key, item, type);\n        } else if (isString(thValue) && isFunction(bvParent[thValue])) {\n          return bvParent[thValue](value, key, item, type);\n        }\n        return thValue;\n      }\n      return defaultValue;\n    },\n    // Method to get the value for a field\n    getFormattedValue(item, field) {\n      const {\n        key\n      } = field;\n      const formatter = this.getFieldFormatter(key);\n      let value = get(item, key, null);\n      if (isFunction(formatter)) {\n        value = formatter(value, key, item);\n      }\n      return isUndefinedOrNull(value) ? '' : value;\n    },\n    // Factory function methods\n    toggleDetailsFactory(hasDetailsSlot, item) {\n      // Returns a function to toggle a row's details slot\n      return () => {\n        if (hasDetailsSlot) {\n          this.$set(item, FIELD_KEY_SHOW_DETAILS, !item[FIELD_KEY_SHOW_DETAILS]);\n        }\n      };\n    },\n    // Row event handlers\n    rowHovered(event) {\n      // `mouseenter` handler (non-bubbling)\n      // `this.tbodyRowEventStopped` from tbody mixin\n      if (!this.tbodyRowEventStopped(event)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_HOVERED, event);\n      }\n    },\n    rowUnhovered(event) {\n      // `mouseleave` handler (non-bubbling)\n      // `this.tbodyRowEventStopped` from tbody mixin\n      if (!this.tbodyRowEventStopped(event)) {\n        // `this.emitTbodyRowEvent` from tbody mixin\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_UNHOVERED, event);\n      }\n    },\n    // Renders a TD or TH for a row's field\n    renderTbodyRowCell(field, colIndex, item, rowIndex) {\n      const {\n        isStacked\n      } = this;\n      const {\n        key,\n        label,\n        isRowHeader\n      } = field;\n      const h = this.$createElement;\n      const hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n      const formatted = this.getFormattedValue(item, field);\n      const stickyColumn = !isStacked && (this.isResponsive || this.stickyHeader) && field.stickyColumn;\n      // We only uses the helper components for sticky columns to\n      // improve performance of BTable/BTableLite by reducing the\n      // total number of vue instances created during render\n      const cellTag = stickyColumn ? isRowHeader ? BTh : BTd : isRowHeader ? 'th' : 'td';\n      const cellVariant = item[FIELD_KEY_CELL_VARIANT] && item[FIELD_KEY_CELL_VARIANT][key] ? item[FIELD_KEY_CELL_VARIANT][key] : field.variant || null;\n      const data = {\n        // For the Vue key, we concatenate the column index and\n        // field key (as field keys could be duplicated)\n        // TODO: Although we do prevent duplicate field keys...\n        //   So we could change this to: `row-${rowIndex}-cell-${key}`\n        class: [field.class ? field.class : '', this.getTdValues(item, key, field.tdClass, '')],\n        props: {},\n        attrs: {\n          'aria-colindex': String(colIndex + 1),\n          ...(isRowHeader ? this.getThValues(item, key, field.thAttr, 'row', {}) : this.getTdValues(item, key, field.tdAttr, {}))\n        },\n        key: `row-${rowIndex}-cell-${colIndex}-${key}`\n      };\n      if (stickyColumn) {\n        // We are using the helper BTd or BTh\n        data.props = {\n          stackedHeading: isStacked ? label : null,\n          stickyColumn: true,\n          variant: cellVariant\n        };\n      } else {\n        // Using native TD or TH element, so we need to\n        // add in the attributes and variant class\n        data.attrs['data-label'] = isStacked && !isUndefinedOrNull(label) ? toString(label) : null;\n        data.attrs.role = isRowHeader ? 'rowheader' : 'cell';\n        data.attrs.scope = isRowHeader ? 'row' : null;\n        // Add in the variant class\n        if (cellVariant) {\n          data.class.push(`${this.dark ? 'bg' : 'table'}-${cellVariant}`);\n        }\n      }\n      const slotScope = {\n        item,\n        index: rowIndex,\n        field,\n        unformatted: get(item, key, ''),\n        value: formatted,\n        toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item),\n        detailsShowing: Boolean(item[FIELD_KEY_SHOW_DETAILS])\n      };\n      // If table supports selectable mode, then add in the following scope\n      // this.supportsSelectableRows will be undefined if mixin isn't loaded\n      if (safeVueInstance(this).supportsSelectableRows) {\n        slotScope.rowSelected = this.isRowSelected(rowIndex);\n        slotScope.selectRow = () => this.selectRow(rowIndex);\n        slotScope.unselectRow = () => this.unselectRow(rowIndex);\n      }\n\n      // The new `v-slot` syntax doesn't like a slot name starting with\n      // a square bracket and if using in-document HTML templates, the\n      // v-slot attributes are lower-cased by the browser.\n      // Switched to round bracket syntax to prevent confusion with\n      // dynamic slot name syntax.\n      // We look for slots in this order: `cell(${key})`, `cell(${key.toLowerCase()})`, 'cell()'\n      // Slot names are now cached by mixin tbody in `this.$_bodyFieldSlotNameCache`\n      // Will be `null` if no slot (or fallback slot) exists\n      const slotName = this.$_bodyFieldSlotNameCache[key];\n      let $childNodes = slotName ? this.normalizeSlot(slotName, slotScope) : toString(formatted);\n      if (this.isStacked) {\n        // We wrap in a DIV to ensure rendered as a single cell when visually stacked!\n        $childNodes = [h('div', [$childNodes])];\n      }\n\n      // Render either a td or th cell\n      return h(cellTag, data, [$childNodes]);\n    },\n    // Renders an item's row (or rows if details supported)\n    renderTbodyRow(item, rowIndex) {\n      const {\n        computedFields: fields,\n        striped,\n        primaryKey,\n        currentPage,\n        perPage,\n        tbodyTrClass,\n        tbodyTrAttr,\n        hasSelectableRowClick\n      } = safeVueInstance(this);\n      const h = this.$createElement;\n      const hasDetailsSlot = this.hasNormalizedSlot(SLOT_NAME_ROW_DETAILS);\n      const rowShowDetails = item[FIELD_KEY_SHOW_DETAILS] && hasDetailsSlot;\n      const hasRowClickHandler = this.$listeners[EVENT_NAME_ROW_CLICKED] || hasSelectableRowClick;\n\n      // We can return more than one TR if rowDetails enabled\n      const $rows = [];\n\n      // Details ID needed for `aria-details` when details showing\n      // We set it to `null` when not showing so that attribute\n      // does not appear on the element\n      const detailsId = rowShowDetails ? this.safeId(`_details_${rowIndex}_`) : null;\n\n      // For each item data field in row\n      const $tds = fields.map((field, colIndex) => {\n        return this.renderTbodyRowCell(field, colIndex, item, rowIndex);\n      });\n\n      // Calculate the row number in the dataset (indexed from 1)\n      let ariaRowIndex = null;\n      if (currentPage && perPage && perPage > 0) {\n        ariaRowIndex = String((currentPage - 1) * perPage + rowIndex + 1);\n      }\n\n      // Create a unique :key to help ensure that sub components are re-rendered rather than\n      // re-used, which can cause issues. If a primary key is not provided we use the rendered\n      // rows index within the tbody.\n      // See: https://github.com/bootstrap-vue/bootstrap-vue/issues/2410\n      const primaryKeyValue = toString(get(item, primaryKey)) || null;\n      const rowKey = primaryKeyValue || toString(rowIndex);\n\n      // If primary key is provided, use it to generate a unique ID on each tbody > tr\n      // In the format of '{tableId}__row_{primaryKeyValue}'\n      const rowId = primaryKeyValue ? this.safeId(`_row_${primaryKeyValue}`) : null;\n\n      // Selectable classes and attributes\n      const selectableClasses = safeVueInstance(this).selectableRowClasses ? this.selectableRowClasses(rowIndex) : {};\n      const selectableAttrs = safeVueInstance(this).selectableRowAttrs ? this.selectableRowAttrs(rowIndex) : {};\n\n      // Additional classes and attributes\n      const userTrClasses = isFunction(tbodyTrClass) ? tbodyTrClass(item, 'row') : tbodyTrClass;\n      const userTrAttrs = isFunction(tbodyTrAttr) ? /* istanbul ignore next */tbodyTrAttr(item, 'row') : tbodyTrAttr;\n\n      // Add the item row\n      $rows.push(h(BTr, {\n        class: [userTrClasses, selectableClasses, rowShowDetails ? 'b-table-has-details' : ''],\n        props: {\n          variant: item[FIELD_KEY_ROW_VARIANT] || null\n        },\n        attrs: {\n          id: rowId,\n          ...userTrAttrs,\n          // Users cannot override the following attributes\n          tabindex: hasRowClickHandler ? '0' : null,\n          'data-pk': primaryKeyValue || null,\n          'aria-details': detailsId,\n          'aria-owns': detailsId,\n          'aria-rowindex': ariaRowIndex,\n          ...selectableAttrs\n        },\n        on: {\n          // Note: These events are not A11Y friendly!\n          mouseenter: this.rowHovered,\n          mouseleave: this.rowUnhovered\n        },\n        key: `__b-table-row-${rowKey}__`,\n        ref: 'item-rows',\n        [REF_FOR_KEY]: true\n      }, $tds));\n\n      // Row Details slot\n      if (rowShowDetails) {\n        const detailsScope = {\n          item,\n          index: rowIndex,\n          fields,\n          toggleDetails: this.toggleDetailsFactory(hasDetailsSlot, item)\n        };\n        // If table supports selectable mode, then add in the following scope\n        // this.supportsSelectableRows will be undefined if mixin isn't loaded\n        if (safeVueInstance(this).supportsSelectableRows) {\n          detailsScope.rowSelected = this.isRowSelected(rowIndex);\n          detailsScope.selectRow = () => this.selectRow(rowIndex);\n          detailsScope.unselectRow = () => this.unselectRow(rowIndex);\n        }\n\n        // Render the details slot in a TD\n        const $details = h(BTd, {\n          props: {\n            colspan: fields.length\n          },\n          class: this.detailsTdClass\n        }, [this.normalizeSlot(SLOT_NAME_ROW_DETAILS, detailsScope)]);\n\n        // Add a hidden row to keep table row striping consistent when details showing\n        // Only added if the table is striped\n        if (striped) {\n          $rows.push(\n          // We don't use `BTr` here as we don't need the extra functionality\n          h('tr', {\n            staticClass: 'd-none',\n            attrs: {\n              'aria-hidden': 'true',\n              role: 'presentation'\n            },\n            key: `__b-table-details-stripe__${rowKey}`\n          }));\n        }\n\n        // Add the actual details row\n        const userDetailsTrClasses = isFunction(this.tbodyTrClass) ? /* istanbul ignore next */this.tbodyTrClass(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrClass;\n        const userDetailsTrAttrs = isFunction(this.tbodyTrAttr) ? /* istanbul ignore next */this.tbodyTrAttr(item, SLOT_NAME_ROW_DETAILS) : this.tbodyTrAttr;\n        $rows.push(h(BTr, {\n          staticClass: 'b-table-details',\n          class: [userDetailsTrClasses],\n          props: {\n            variant: item[FIELD_KEY_ROW_VARIANT] || null\n          },\n          attrs: {\n            ...userDetailsTrAttrs,\n            // Users cannot override the following attributes\n            id: detailsId,\n            tabindex: '-1'\n          },\n          key: `__b-table-details__${rowKey}`\n        }, [$details]));\n      } else if (hasDetailsSlot) {\n        // Only add the placeholder if a the table has a row-details slot defined (but not shown)\n        $rows.push(h());\n        if (striped) {\n          // Add extra placeholder if table is striped\n          $rows.push(h());\n        }\n      }\n\n      // Return the row(s)\n      return $rows;\n    }\n  }\n});\n\nexport { props, tbodyRowMixin };\n","import { extend } from '../../../vue';\nimport { EVENT_NAME_ROW_CLICKED, EVENT_NAME_ROW_MIDDLE_CLICKED, EVENT_NAME_ROW_CONTEXTMENU, EVENT_NAME_ROW_DBLCLICKED } from '../../../constants/events';\nimport { CODE_ENTER, CODE_SPACE, CODE_UP, CODE_DOWN, CODE_HOME, CODE_END } from '../../../constants/key-codes';\nimport { PROP_TYPE_ARRAY_OBJECT_STRING } from '../../../constants/props';\nimport { from, arrayIncludes } from '../../../utils/array';\nimport { isElement, closest, isActiveElement, attemptFocus } from '../../../utils/dom';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { stopEvent } from '../../../utils/events';\nimport { sortKeys } from '../../../utils/object';\nimport { makeProp, pluckProps } from '../../../utils/props';\nimport { props as props$1, BTbody } from '../tbody';\nimport { filterEvent } from './filter-event';\nimport { textSelectionActive } from './text-selection-active';\nimport { props as props$2, tbodyRowMixin } from './mixin-tbody-row';\n\n// --- Helper methods ---\n\nconst getCellSlotName = value => `cell(${value || ''})`;\n\n// --- Props ---\n\nconst props = sortKeys({\n  ...props$1,\n  ...props$2,\n  tbodyClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING)\n});\n\n// --- Mixin ---\n\n// @vue/component\nconst tbodyMixin = extend({\n  mixins: [tbodyRowMixin],\n  props,\n  beforeDestroy() {\n    this.$_bodyFieldSlotNameCache = null;\n  },\n  methods: {\n    // Returns all the item TR elements (excludes detail and spacer rows)\n    // `this.$refs['item-rows']` is an array of item TR components/elements\n    // Rows should all be `<b-tr>` components, but we map to TR elements\n    // Also note that `this.$refs['item-rows']` may not always be in document order\n    getTbodyTrs() {\n      const {\n        $refs\n      } = this;\n      const tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n      const trs = ($refs['item-rows'] || []).map(tr => tr.$el || tr);\n      return tbody && tbody.children && tbody.children.length > 0 && trs && trs.length > 0 ? from(tbody.children).filter(tr => arrayIncludes(trs, tr)) : /* istanbul ignore next */[];\n    },\n    // Returns index of a particular TBODY item TR\n    // We set `true` on closest to include self in result\n    getTbodyTrIndex(el) {\n      /* istanbul ignore next: should not normally happen */\n      if (!isElement(el)) {\n        return -1;\n      }\n      const tr = el.tagName === 'TR' ? el : closest('tr', el, true);\n      return tr ? this.getTbodyTrs().indexOf(tr) : -1;\n    },\n    // Emits a row event, with the item object, row index and original event\n    emitTbodyRowEvent(type, event) {\n      if (type && this.hasListener(type) && event && event.target) {\n        const rowIndex = this.getTbodyTrIndex(event.target);\n        if (rowIndex > -1) {\n          // The array of TRs correlate to the `computedItems` array\n          const item = this.computedItems[rowIndex];\n          this.$emit(type, item, rowIndex, event);\n        }\n      }\n    },\n    tbodyRowEventStopped(event) {\n      return this.stopIfBusy && this.stopIfBusy(event);\n    },\n    // Delegated row event handlers\n    onTbodyRowKeydown(event) {\n      // Keyboard navigation and row click emulation\n      const {\n        target,\n        keyCode\n      } = event;\n      if (this.tbodyRowEventStopped(event) || target.tagName !== 'TR' || !isActiveElement(target) || target.tabIndex !== 0) {\n        // Early exit if not an item row TR\n        return;\n      }\n      if (arrayIncludes([CODE_ENTER, CODE_SPACE], keyCode)) {\n        // Emulated click for keyboard users, transfer to click handler\n        stopEvent(event);\n        this.onTBodyRowClicked(event);\n      } else if (arrayIncludes([CODE_UP, CODE_DOWN, CODE_HOME, CODE_END], keyCode)) {\n        // Keyboard navigation\n        const rowIndex = this.getTbodyTrIndex(target);\n        if (rowIndex > -1) {\n          stopEvent(event);\n          const trs = this.getTbodyTrs();\n          const shift = event.shiftKey;\n          if (keyCode === CODE_HOME || shift && keyCode === CODE_UP) {\n            // Focus first row\n            attemptFocus(trs[0]);\n          } else if (keyCode === CODE_END || shift && keyCode === CODE_DOWN) {\n            // Focus last row\n            attemptFocus(trs[trs.length - 1]);\n          } else if (keyCode === CODE_UP && rowIndex > 0) {\n            // Focus previous row\n            attemptFocus(trs[rowIndex - 1]);\n          } else if (keyCode === CODE_DOWN && rowIndex < trs.length - 1) {\n            // Focus next row\n            attemptFocus(trs[rowIndex + 1]);\n          }\n        }\n      }\n    },\n    onTBodyRowClicked(event) {\n      const {\n        $refs\n      } = this;\n      const tbody = $refs.tbody ? $refs.tbody.$el || $refs.tbody : null;\n      // Don't emit event when the table is busy, the user clicked\n      // on a non-disabled control or is selecting text\n      if (this.tbodyRowEventStopped(event) || filterEvent(event) || textSelectionActive(tbody || this.$el)) {\n        return;\n      }\n      this.emitTbodyRowEvent(EVENT_NAME_ROW_CLICKED, event);\n    },\n    onTbodyRowMiddleMouseRowClicked(event) {\n      if (!this.tbodyRowEventStopped(event) && event.which === 2) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_MIDDLE_CLICKED, event);\n      }\n    },\n    onTbodyRowContextmenu(event) {\n      if (!this.tbodyRowEventStopped(event)) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_CONTEXTMENU, event);\n      }\n    },\n    onTbodyRowDblClicked(event) {\n      if (!this.tbodyRowEventStopped(event) && !filterEvent(event)) {\n        this.emitTbodyRowEvent(EVENT_NAME_ROW_DBLCLICKED, event);\n      }\n    },\n    // Render the tbody element and children\n    // Note:\n    //   Row hover handlers are handled by the tbody-row mixin\n    //   As mouseenter/mouseleave events do not bubble\n    renderTbody() {\n      const {\n        computedItems: items,\n        renderBusy,\n        renderTopRow,\n        renderEmpty,\n        renderBottomRow,\n        hasSelectableRowClick\n      } = safeVueInstance(this);\n      const h = this.$createElement;\n      const hasRowClickHandler = this.hasListener(EVENT_NAME_ROW_CLICKED) || hasSelectableRowClick;\n\n      // Prepare the tbody rows\n      const $rows = [];\n\n      // Add the item data rows or the busy slot\n      const $busy = renderBusy ? renderBusy() : null;\n      if ($busy) {\n        // If table is busy and a busy slot, then return only the busy \"row\" indicator\n        $rows.push($busy);\n      } else {\n        // Table isn't busy, or we don't have a busy slot\n\n        // Create a slot cache for improved performance when looking up cell slot names\n        // Values will be keyed by the field's `key` and will store the slot's name\n        // Slots could be dynamic (i.e. `v-if`), so we must compute on each render\n        // Used by tbody-row mixin render helper\n        const cache = {};\n        let defaultSlotName = getCellSlotName();\n        defaultSlotName = this.hasNormalizedSlot(defaultSlotName) ? defaultSlotName : null;\n        this.computedFields.forEach(field => {\n          const {\n            key\n          } = field;\n          const slotName = getCellSlotName(key);\n          const lowercaseSlotName = getCellSlotName(key.toLowerCase());\n          cache[key] = this.hasNormalizedSlot(slotName) ? slotName : this.hasNormalizedSlot(lowercaseSlotName) ? /* istanbul ignore next */lowercaseSlotName : defaultSlotName;\n        });\n        // Created as a non-reactive property so to not trigger component updates\n        // Must be a fresh object each render\n        this.$_bodyFieldSlotNameCache = cache;\n\n        // Add static top row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n        $rows.push(renderTopRow ? renderTopRow() : h());\n\n        // Render the rows\n        items.forEach((item, rowIndex) => {\n          // Render the individual item row (rows if details slot)\n          $rows.push(this.renderTbodyRow(item, rowIndex));\n        });\n\n        // Empty items / empty filtered row slot (only shows if `items.length < 1`)\n        $rows.push(renderEmpty ? renderEmpty() : h());\n\n        // Static bottom row slot (hidden in visibly stacked mode\n        // as we can't control `data-label` attr)\n        $rows.push(renderBottomRow ? renderBottomRow() : h());\n      }\n\n      // Note: these events will only emit if a listener is registered\n      const handlers = {\n        auxclick: this.onTbodyRowMiddleMouseRowClicked,\n        // TODO:\n        //   Perhaps we do want to automatically prevent the\n        //   default context menu from showing if there is a\n        //   `row-contextmenu` listener registered\n        contextmenu: this.onTbodyRowContextmenu,\n        // The following event(s) is not considered A11Y friendly\n        dblclick: this.onTbodyRowDblClicked\n        // Hover events (`mouseenter`/`mouseleave`) are handled by `tbody-row` mixin\n      };\n      // Add in click/keydown listeners if needed\n      if (hasRowClickHandler) {\n        handlers.click = this.onTBodyRowClicked;\n        handlers.keydown = this.onTbodyRowKeydown;\n      }\n\n      // Assemble rows into the tbody\n      const $tbody = h(BTbody, {\n        class: this.tbodyClass || null,\n        props: pluckProps(props$1, this.$props),\n        // BTbody transfers all native event listeners to the root element\n        // TODO: Only set the handlers if the table is not busy\n        on: handlers,\n        ref: 'tbody'\n      }, $rows);\n\n      // Return the assembled tbody\n      return $tbody;\n    }\n  }\n});\n\nexport { props, tbodyMixin };\n","module.exports = require('./head');\n","var createWrap = require('./_createWrap'),\n    flatRest = require('./_flatRest');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_REARG_FLAG = 256;\n\n/**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n *   return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\nvar rearg = flatRest(function(func, indexes) {\n  return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n});\n\nmodule.exports = rearg;\n","import GlClearIconButton from '../../../shared_components/clear_icon_button/clear_icon_button';\nimport GlIcon from '../../icon/icon';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlListboxSearchInput',\n  components: {\n    GlClearIconButton,\n    GlIcon\n  },\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    /**\n     * If provided, used as value of search input\n     */\n    value: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Search input placeholder text and aria-label\n     */\n    placeholder: {\n      type: String,\n      required: false,\n      default: 'Search'\n    }\n  },\n  computed: {\n    hasValue() {\n      return Boolean(this.value.length);\n    },\n    inputListeners() {\n      return {\n        ...this.$listeners,\n        input: event => {\n          this.$emit('input', event.target.value);\n        }\n      };\n    }\n  },\n  methods: {\n    clearInput() {\n      this.$emit('input', '');\n      this.focusInput();\n    },\n    focusInput() {\n      this.$refs.input.focus();\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-listbox-search\"},[_c('gl-icon',{staticClass:\"gl-listbox-search-icon\",attrs:{\"name\":\"search-sm\",\"size\":12}}),_vm._v(\" \"),_c('input',_vm._g({ref:\"input\",staticClass:\"gl-listbox-search-input\",attrs:{\"type\":\"search\",\"aria-label\":_vm.placeholder,\"placeholder\":_vm.placeholder},domProps:{\"value\":_vm.value}},_vm.inputListeners)),_vm._v(\" \"),(_vm.hasValue)?_c('gl-clear-icon-button',{staticClass:\"gl-listbox-search-clear-button\",on:{\"click\":function($event){$event.stopPropagation();return _vm.clearInput.apply(null, arguments)}}}):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import uniqueId from 'lodash/uniqueId';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlListboxGroup',\n  props: {\n    name: {\n      type: String,\n      required: true\n    },\n    textSrOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  created() {\n    this.nameId = uniqueId('gl-listbox-group-');\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{staticClass:\"gl-mb-0 gl-pl-0\",attrs:{\"role\":\"group\",\"aria-labelledby\":_vm.nameId}},[_c('li',{staticClass:\"gl-pb-2 gl-pl-4 gl-pt-3 gl-text-sm gl-font-bold gl-text-strong\",class:{ 'gl-sr-only': _vm.textSrOnly },attrs:{\"id\":_vm.nameId,\"role\":\"presentation\"}},[_vm._t(\"group-label\",function(){return [_vm._v(_vm._s(_vm.name))]})],2),_vm._v(\" \"),_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import clamp from 'lodash/clamp';\nimport uniqueId from 'lodash/uniqueId';\nimport isNil from 'lodash/isNil';\nimport { stopEvent } from '../../../../utils/utils';\nimport { GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, HOME, END, ARROW_UP, ARROW_DOWN } from '../constants';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements } from '../../../../utils/constants';\nimport GlButton from '../../button/button';\nimport GlLoadingIcon from '../../loading_icon/loading_icon';\nimport GlIntersectionObserver from '../../../utilities/intersection_observer/intersection_observer';\nimport GlSearchBoxByType from '../../search_box_by_type/search_box_by_type';\nimport GlBaseDropdown from '../base_dropdown/base_dropdown';\nimport { translatePlural } from '../../../../utils/i18n';\nimport GlListboxItem from './listbox_item';\nimport GlListboxSearchInput from './listbox_search_input';\nimport GlListboxGroup from './listbox_group';\nimport { itemsValidator, isOption, flattenedOptions } from './utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst ITEM_SELECTOR = '[role=\"option\"]';\nconst HEADER_ITEMS_BORDER_CLASSES = ['gl-border-b-1', 'gl-border-b-solid', 'gl-border-b-dropdown'];\nconst GROUP_TOP_BORDER_CLASSES = ['gl-border-t', 'gl-border-t-dropdown', 'gl-pt-1', 'gl-mt-2'];\nconst SEARCH_INPUT_SELECTOR = '.gl-listbox-search-input';\nvar script = {\n  name: 'GlCollapsibleListbox',\n  HEADER_ITEMS_BORDER_CLASSES,\n  events: {\n    GL_DROPDOWN_SHOWN,\n    GL_DROPDOWN_HIDDEN\n  },\n  components: {\n    GlBaseDropdown,\n    GlListboxItem,\n    GlListboxGroup,\n    GlButton,\n    GlSearchBoxByType,\n    GlListboxSearchInput,\n    GlLoadingIcon,\n    GlIntersectionObserver\n  },\n  model: {\n    prop: 'selected',\n    event: 'select'\n  },\n  props: {\n    /**\n     * Items to display in the dropdown\n     */\n    items: {\n      type: Array,\n      required: false,\n      default: () => [],\n      validator: itemsValidator\n    },\n    /**\n     * Array of selected items values for multi-select and selected item value for single-select\n     */\n    selected: {\n      type: [Array, String, Number],\n      required: false,\n      default: () => []\n    },\n    /**\n     * Allow multi-selection\n     */\n    multiple: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Toggle button text\n     */\n    toggleText: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Toggle text to be read by screen readers only\n     */\n    textSrOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /** The header text */\n    headerText: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Styling option - dropdown's toggle category\n     */\n    category: {\n      type: String,\n      required: false,\n      default: buttonCategoryOptions.primary,\n      validator: value => value in buttonCategoryOptions\n    },\n    /**\n     * Styling option - dropdown's toggle variant\n     */\n    variant: {\n      type: String,\n      required: false,\n      default: dropdownVariantOptions.default,\n      validator: value => value in dropdownVariantOptions\n    },\n    /**\n     * The size of the dropdown toggle\n     */\n    size: {\n      type: String,\n      required: false,\n      default: 'medium',\n      validator: value => value in buttonSizeOptions\n    },\n    /**\n     * Icon name that will be rendered in the toggle button\n     */\n    icon: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Set to \"true\" to disable the dropdown\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Set to \"true\" when dropdown content (items) is loading\n     * It will render a small loader in the dropdown toggle and make it disabled\n     */\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Additional CSS classes to customize toggle appearance\n     */\n    toggleClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    /**\n     * Set to \"true\" to hide the caret\n     */\n    noCaret: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Align listbox menu with respect to the toggle button\n     */\n    placement: {\n      type: String,\n      required: false,\n      default: 'bottom-start',\n      validator: value => Object.keys(dropdownPlacements).includes(value)\n    },\n    /**\n     * Center selected item checkmark\n     */\n    isCheckCentered: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * The `aria-labelledby` attribute value for the toggle button\n     * Provide the string of ids seperated by space\n     */\n    toggleAriaLabelledBy: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The `aria-labelledby` attribute value for the list of options\n     * Provide the string of ids seperated by space\n     */\n    listAriaLabelledBy: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Enable search\n     */\n    searchable: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Set to \"true\" when items search is in progress.\n     * It will display loading icon below the search input\n     */\n    searching: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Enables infinite scroll.\n     * When set to `true`, the `@bottom-reached` event will be fired when\n     * the bottom of the listbox is scrolled to.\n     * Does not support groups.\n     */\n    infiniteScroll: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * This prop is used for infinite scroll.\n     * It represents the total number of items that exist,\n     * even if they have not yet been loaded.\n     * Do not set this prop if the total number of items is unknown.\n     */\n    totalItems: {\n      type: Number,\n      required: false,\n      default: null\n    },\n    /**\n     * This prop is used for infinite scroll.\n     * Set to `true` when more items are being loaded.\n     */\n    infiniteScrollLoading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Message to be displayed when filtering produced no results\n     */\n    noResultsText: {\n      type: String,\n      required: false,\n      default: 'No results found'\n    },\n    /**\n     * Search input placeholder text and aria-label\n     */\n    searchPlaceholder: {\n      type: String,\n      required: false,\n      default: 'Search'\n    },\n    /**\n     * The reset button's label, to be rendered in the header. If this is omitted, the button is not\n     * rendered.\n     * The reset button requires a header to be set, so this prop should be used in conjunction with\n     * headerText.\n     */\n    resetButtonLabel: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * The select all button's label, to be rendered in the header. If this is omitted, the button is not\n     * rendered.\n     * The select all button requires a header to be set, so this prop should be used in conjunction with\n     * headerText.\n     */\n    showSelectAllButtonLabel: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Render the toggle button as a block element\n     */\n    block: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Custom offset to be applied to Floating UI's offset middleware.\n     * https://floating-ui.com/docs/offset\n     */\n    dropdownOffset: {\n      type: [Number, Object],\n      required: false,\n      default: undefined\n    },\n    /**\n     * Lets the dropdown extend to match its content's width, up to a maximum width\n     * defined by the `$gl-new-dropdown-max-width` variable.\n     */\n    fluidWidth: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Strategy to be applied by computePosition. If the dropdown's container is too short for it to\n     * fit in, setting this to fixed will let it position itself above its container.\n     * https://floating-ui.com/docs/computePosition#strategy\n     */\n    positioningStrategy: {\n      type: String,\n      required: false,\n      default: POSITION_ABSOLUTE,\n      validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n    },\n    /**\n     * Opens dropdown on render\n     */\n    startOpened: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    srOnlyResultsLabel: {\n      type: Function,\n      required: false,\n      default: translatePlural('GlCollapsibleListbox.srOnlyResultsLabel', '%d result', '%d results')\n    }\n  },\n  data() {\n    return {\n      selectedValues: [],\n      toggleId: uniqueId('dropdown-toggle-btn-'),\n      listboxId: uniqueId('listbox-'),\n      nextFocusedItemIndex: null,\n      searchStr: '',\n      topBoundaryVisible: true,\n      bottomBoundaryVisible: true\n    };\n  },\n  computed: {\n    listboxTag() {\n      if (!this.hasItems || isOption(this.items[0])) return 'ul';\n      return 'div';\n    },\n    listboxClasses() {\n      return {\n        'top-scrim-visible': !this.topBoundaryVisible,\n        'bottom-scrim-visible': !this.bottomBoundaryVisible,\n        [GL_DROPDOWN_CONTENTS_CLASS]: true\n      };\n    },\n    itemTag() {\n      return this.listboxTag === 'ul' ? 'li' : 'div';\n    },\n    flattenedOptions() {\n      return flattenedOptions(this.items);\n    },\n    hasItems() {\n      return this.items.length > 0;\n    },\n    listboxToggleText() {\n      if (!this.toggleText) {\n        if (!this.multiple && this.selectedValues.length) {\n          var _this$flattenedOption;\n          return (_this$flattenedOption = this.flattenedOptions.find(_ref => {\n            let {\n              value\n            } = _ref;\n            return value === this.selectedValues[0];\n          })) === null || _this$flattenedOption === void 0 ? void 0 : _this$flattenedOption.text;\n        }\n        return '';\n      }\n      return this.toggleText;\n    },\n    selectedIndices() {\n      return this.selectedValues.map(selected => this.flattenedOptions.findIndex(_ref2 => {\n        let {\n          value\n        } = _ref2;\n        return value === selected;\n      })).sort();\n    },\n    showList() {\n      return this.flattenedOptions.length && !this.searching;\n    },\n    showNoResultsText() {\n      return !this.flattenedOptions.length && !this.searching;\n    },\n    announceSRSearchResults() {\n      return this.searchable && !this.showNoResultsText;\n    },\n    headerId() {\n      return this.headerText && uniqueId('listbox-header-');\n    },\n    showResetButton() {\n      if (!this.resetButtonLabel) {\n        return false;\n      }\n\n      /**\n       * if dropdown has no items\n       * reset all should be hidden\n       */\n      if (!this.hasItems) {\n        return false;\n      }\n\n      // hide if no selection\n      if (!this.selected || this.selected.length === 0) {\n        return false;\n      }\n\n      // only show reset button if show all button is not there\n      return !this.showSelectAllButton;\n    },\n    showSelectAllButton() {\n      if (!this.showSelectAllButtonLabel) {\n        return false;\n      }\n      if (!this.multiple) {\n        return false;\n      }\n\n      /**\n       * if dropdown has no items\n       * select all should be hidden\n       */\n      if (!this.hasItems) {\n        return false;\n      }\n      return this.selected.length !== this.flattenedOptions.length;\n    },\n    showIntersectionObserver() {\n      return this.infiniteScroll && !this.infiniteScrollLoading && !this.loading && !this.searching;\n    },\n    hasCustomToggle() {\n      return Boolean(this.$scopedSlots.toggle);\n    },\n    hasSelection() {\n      return Boolean(this.selectedValues.length);\n    },\n    toggleButtonClasses() {\n      const toggleClasses = [this.toggleClass];\n      if (!this.hasSelection) {\n        toggleClasses.push('!gl-text-subtle');\n      }\n      return toggleClasses;\n    },\n    hasHeader() {\n      return this.headerText || this.searchable;\n    },\n    hasFooter() {\n      return Boolean(this.$scopedSlots.footer);\n    }\n  },\n  watch: {\n    selected: {\n      immediate: true,\n      handler(newSelected) {\n        if (Array.isArray(newSelected)) {\n          if (process.env.NODE_ENV !== 'production' && !this.multiple && newSelected.length) {\n            throw new Error('To allow multi-selection, please, set \"multiple\" property to \"true\"');\n          }\n          this.selectedValues = [...newSelected];\n        } else {\n          this.selectedValues = isNil(newSelected) ? [] : [newSelected];\n        }\n      }\n    },\n    items: {\n      handler() {\n        this.$nextTick(() => {\n          /* Every time the list of items changes (on search),\n           * the observed elements are recreated, thus we need to start obesrving them again */\n          this.observeScroll();\n        });\n      }\n    },\n    ...(process.env.NODE_ENV !== 'production' ? {\n      resetButtonLabel: {\n        immediate: true,\n        handler(newResetButtonLabel) {\n          if (newResetButtonLabel && !this.headerText) {\n            throw new Error('The reset button cannot be rendered without a header. Either provide a header via the headerText prop, or do not provide the resetButtonLabel prop.');\n          }\n        }\n      },\n      showSelectAllButtonLabel: {\n        immediate: true,\n        handler(showSelectAllButtonLabel) {\n          if (showSelectAllButtonLabel && !this.headerText) {\n            throw new Error('The select all button cannot be rendered without a header. Either provide a header via the headerText prop, or do not provide the showSelectAllButtonLabel prop.');\n          }\n        }\n      },\n      infiniteScroll: {\n        immediate: true,\n        handler(newValue) {\n          if (newValue && this.items.some(item => !isOption(item))) {\n            throw new Error('Infinite scroll does not support groups. Please set the \"infiniteScroll\" prop to \"false\"');\n          }\n        }\n      }\n    } : {})\n  },\n  mounted() {\n    if (this.startOpened) {\n      this.open();\n    }\n    this.observeScroll();\n  },\n  beforeDestroy() {\n    var _this$scrollObserver;\n    (_this$scrollObserver = this.scrollObserver) === null || _this$scrollObserver === void 0 ? void 0 : _this$scrollObserver.disconnect();\n  },\n  methods: {\n    open() {\n      this.$refs.baseDropdown.open();\n    },\n    close() {\n      this.$refs.baseDropdown.close();\n    },\n    groupClasses(index) {\n      return index === 0 ? null : GROUP_TOP_BORDER_CLASSES;\n    },\n    onShow() {\n      if (this.searchable) {\n        this.focusSearchInput();\n      } else {\n        var _this$selectedIndices;\n        this.focusItem((_this$selectedIndices = this.selectedIndices[0]) !== null && _this$selectedIndices !== void 0 ? _this$selectedIndices : 0, this.getFocusableListItemElements());\n      }\n      /**\n       * Emitted when dropdown is shown\n       *\n       * @event shown\n       */\n      this.$emit(GL_DROPDOWN_SHOWN);\n    },\n    onHide() {\n      /**\n       * Emitted when dropdown is hidden\n       *\n       * @event hidden\n       */\n      this.$emit(GL_DROPDOWN_HIDDEN);\n      this.nextFocusedItemIndex = null;\n    },\n    onKeydown(event) {\n      const {\n        code,\n        target\n      } = event;\n      const elements = this.getFocusableListItemElements();\n      if (elements.length < 1) return;\n      let stop = true;\n      const isSearchInput = target.matches(SEARCH_INPUT_SELECTOR);\n      if (code === HOME) {\n        if (isSearchInput) {\n          return;\n        }\n        this.focusItem(0, elements);\n      } else if (code === END) {\n        if (isSearchInput) {\n          return;\n        }\n        this.focusItem(elements.length - 1, elements);\n      } else if (code === ARROW_UP) {\n        if (isSearchInput) {\n          return;\n        }\n        if (this.searchable && elements.indexOf(target) === 0) {\n          this.focusSearchInput();\n        } else {\n          this.focusNextItem(event, elements, -1);\n        }\n      } else if (code === ARROW_DOWN) {\n        if (isSearchInput) {\n          this.focusItem(0, elements);\n        } else {\n          this.focusNextItem(event, elements, 1);\n        }\n      } else {\n        stop = false;\n      }\n      if (stop) {\n        stopEvent(event);\n      }\n    },\n    getFocusableListItemElements() {\n      var _this$$refs$list;\n      const items = (_this$$refs$list = this.$refs.list) === null || _this$$refs$list === void 0 ? void 0 : _this$$refs$list.querySelectorAll(ITEM_SELECTOR);\n      return Array.from(items || []);\n    },\n    focusNextItem(event, elements, offset) {\n      const {\n        target\n      } = event;\n      const currentIndex = elements.indexOf(target);\n      const nextIndex = clamp(currentIndex + offset, 0, elements.length - 1);\n      this.focusItem(nextIndex, elements);\n    },\n    focusItem(index, elements) {\n      var _elements$index;\n      this.nextFocusedItemIndex = index;\n      (_elements$index = elements[index]) === null || _elements$index === void 0 ? void 0 : _elements$index.focus();\n    },\n    focusSearchInput() {\n      this.$refs.searchBox.focusInput();\n    },\n    onSelect(item, isSelected) {\n      if (this.multiple) {\n        this.onMultiSelect(item.value, isSelected);\n      } else {\n        this.onSingleSelect(item.value, isSelected);\n      }\n    },\n    isSelected(item) {\n      return this.selectedValues.some(value => value === item.value);\n    },\n    isFocused(item) {\n      return this.nextFocusedItemIndex === this.flattenedOptions.indexOf(item);\n    },\n    onSingleSelect(value, isSelected) {\n      if (isSelected) {\n        /**\n         * Emitted when selection is changed\n         *\n         * @event select\n         */\n        this.$emit('select', value);\n      }\n      this.closeAndFocus();\n    },\n    onMultiSelect(value, isSelected) {\n      if (isSelected) {\n        this.$emit('select', [...this.selectedValues, value]);\n      } else {\n        this.$emit('select', this.selectedValues.filter(selectedValue => selectedValue !== value));\n      }\n    },\n    search(searchTerm) {\n      /**\n       * Emitted when the search query string is changed\n       *\n       * @event search\n       * @type {string}\n       */\n      this.$emit('search', searchTerm);\n    },\n    onResetButtonClicked() {\n      /**\n       * Emitted when the reset button is clicked\n       *\n       * @event reset\n       */\n      this.$emit('reset');\n    },\n    onSelectAllButtonClicked() {\n      /**\n       * Emitted when the select all button is clicked\n       *\n       * @event select-all\n       */\n      this.$emit('select-all');\n    },\n    closeAndFocus() {\n      this.$refs.baseDropdown.closeAndFocus();\n    },\n    onIntersectionObserverAppear() {\n      /**\n       * Emitted when bottom of listbox has been scrolled to.\n       * Used for infinite scroll.\n       *\n       * @event bottom-reached\n       */\n      this.$emit('bottom-reached');\n    },\n    listboxItemMoreItemsAriaAttributes(index) {\n      if (this.totalItems === null) {\n        return {};\n      }\n      return {\n        'aria-setsize': this.totalItems,\n        'aria-posinset': index + 1\n      };\n    },\n    observeScroll() {\n      var _this$scrollObserver2;\n      const root = this.$refs.list;\n      const options = {\n        rootMargin: '8px',\n        root,\n        threshold: 1.0\n      };\n      (_this$scrollObserver2 = this.scrollObserver) === null || _this$scrollObserver2 === void 0 ? void 0 : _this$scrollObserver2.disconnect();\n      const observer = new IntersectionObserver(entries => {\n        entries.forEach(entry => {\n          var _entry$target;\n          this[(_entry$target = entry.target) === null || _entry$target === void 0 ? void 0 : _entry$target.$__visibilityProp] = entry.isIntersecting;\n        });\n      }, options);\n      const topBoundary = this.$refs['top-boundary'];\n      const bottomBoundary = this.$refs['bottom-boundary'];\n      if (topBoundary) {\n        topBoundary.$__visibilityProp = 'topBoundaryVisible';\n        observer.observe(topBoundary);\n      }\n      if (bottomBoundary) {\n        bottomBoundary.$__visibilityProp = 'bottomBoundaryVisible';\n        observer.observe(bottomBoundary);\n      }\n      this.scrollObserver = observer;\n    },\n    isOption\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-base-dropdown',{ref:\"baseDropdown\",attrs:{\"aria-haspopup\":\"listbox\",\"aria-labelledby\":_vm.toggleAriaLabelledBy,\"block\":_vm.block,\"toggle-id\":_vm.toggleId,\"toggle-text\":_vm.listboxToggleText,\"toggle-class\":_vm.toggleButtonClasses,\"text-sr-only\":_vm.textSrOnly,\"category\":_vm.category,\"variant\":_vm.variant,\"size\":_vm.size,\"icon\":_vm.icon,\"disabled\":_vm.disabled,\"loading\":_vm.loading,\"no-caret\":_vm.noCaret,\"placement\":_vm.placement,\"offset\":_vm.dropdownOffset,\"fluid-width\":_vm.fluidWidth,\"positioning-strategy\":_vm.positioningStrategy},on:_vm._d({},[_vm.$options.events.GL_DROPDOWN_SHOWN,_vm.onShow,_vm.$options.events.GL_DROPDOWN_HIDDEN,_vm.onHide]),scopedSlots:_vm._u([(_vm.hasCustomToggle)?{key:\"toggle\",fn:function(){return [_vm._t(\"toggle\")]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.headerText)?_c('div',{staticClass:\"gl-flex gl-min-h-8 gl-items-center !gl-p-4\",class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('div',{staticClass:\"gl-grow gl-pr-2 gl-text-sm gl-font-bold gl-text-strong\",attrs:{\"id\":_vm.headerId,\"data-testid\":\"listbox-header-text\"}},[_vm._v(\"\\n      \"+_vm._s(_vm.headerText)+\"\\n    \")]),_vm._v(\" \"),(_vm.showResetButton)?_c('gl-button',{staticClass:\"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-shadow-inner-2-blue-400\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"listbox-reset-button\"},on:{\"click\":_vm.onResetButtonClicked}},[_vm._v(\"\\n      \"+_vm._s(_vm.resetButtonLabel)+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.showSelectAllButton)?_c('gl-button',{staticClass:\"!gl-m-0 !gl-w-auto gl-max-w-1/2 gl-flex-shrink-0 gl-text-ellipsis !gl-px-2 !gl-text-sm focus:!gl-shadow-inner-2-blue-400\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"data-testid\":\"listbox-select-all-button\"},on:{\"click\":_vm.onSelectAllButtonClicked}},[_vm._v(\"\\n      \"+_vm._s(_vm.showSelectAllButtonLabel)+\"\\n    \")]):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.searchable)?_c('div',{class:_vm.$options.HEADER_ITEMS_BORDER_CLASSES},[_c('gl-listbox-search-input',{ref:\"searchBox\",class:{ 'gl-listbox-topmost': !_vm.headerText },attrs:{\"data-testid\":\"listbox-search-input\",\"placeholder\":_vm.searchPlaceholder},on:{\"input\":_vm.search,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }$event.preventDefault();},_vm.onKeydown]},model:{value:(_vm.searchStr),callback:function ($$v) {_vm.searchStr=$$v;},expression:\"searchStr\"}}),_vm._v(\" \"),(_vm.searching)?_c('gl-loading-icon',{staticClass:\"gl-my-3\",attrs:{\"data-testid\":\"listbox-search-loader\",\"size\":\"md\"}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),(_vm.showList)?_c(_vm.listboxTag,{ref:\"list\",tag:\"component\",staticClass:\"gl-new-dropdown-contents gl-new-dropdown-contents-with-scrim-overlay\",class:_vm.listboxClasses,attrs:{\"id\":_vm.listboxId,\"aria-labelledby\":_vm.listAriaLabelledBy || _vm.headerId || _vm.toggleId,\"role\":\"listbox\",\"tabindex\":\"0\"},on:{\"keydown\":_vm.onKeydown}},[_c(_vm.itemTag,{tag:\"component\",staticClass:\"top-scrim-wrapper\",attrs:{\"aria-hidden\":\"true\",\"data-testid\":\"top-scrim\"}},[_c('div',{staticClass:\"top-scrim\",class:{ 'top-scrim-light': !_vm.hasHeader, 'top-scrim-dark': _vm.hasHeader }})]),_vm._v(\" \"),_c(_vm.itemTag,{ref:\"top-boundary\",tag:\"component\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_vm._l((_vm.items),function(item,index){return [(_vm.isOption(item))?[_c('gl-listbox-item',_vm._b({key:item.value,attrs:{\"data-testid\":(\"listbox-item-\" + (item.value)),\"is-selected\":_vm.isSelected(item),\"is-focused\":_vm.isFocused(item),\"is-check-centered\":_vm.isCheckCentered},on:{\"select\":function($event){return _vm.onSelect(item, $event)}}},'gl-listbox-item',_vm.listboxItemMoreItemsAriaAttributes(index),false),[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n            \"+_vm._s(item.text)+\"\\n          \")]},{\"item\":item})],2)]:[_c('gl-listbox-group',{key:item.text,class:_vm.groupClasses(index),attrs:{\"name\":item.text,\"text-sr-only\":item.textSrOnly},scopedSlots:_vm._u([(_vm.$scopedSlots['group-label'])?{key:\"group-label\",fn:function(){return [_vm._t(\"group-label\",null,{\"group\":item})]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._l((item.options),function(option){return _c('gl-listbox-item',{key:option.value,attrs:{\"data-testid\":(\"listbox-item-\" + (option.value)),\"is-selected\":_vm.isSelected(option),\"is-focused\":_vm.isFocused(option),\"is-check-centered\":_vm.isCheckCentered},on:{\"select\":function($event){return _vm.onSelect(option, $event)}}},[_vm._t(\"list-item\",function(){return [_vm._v(\"\\n              \"+_vm._s(option.text)+\"\\n            \")]},{\"item\":option})],2)})],2)]]}),_vm._v(\" \"),(_vm.infiniteScrollLoading)?_c(_vm.itemTag,{tag:\"component\"},[_c('gl-loading-icon',{staticClass:\"gl-my-3\",attrs:{\"data-testid\":\"listbox-infinite-scroll-loader\",\"size\":\"md\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.showIntersectionObserver)?_c('gl-intersection-observer',{on:{\"appear\":_vm.onIntersectionObserverAppear}}):_vm._e(),_vm._v(\" \"),_c(_vm.itemTag,{ref:\"bottom-boundary\",tag:\"component\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_c(_vm.itemTag,{tag:\"component\",staticClass:\"bottom-scrim-wrapper\",attrs:{\"aria-hidden\":\"true\",\"data-testid\":\"bottom-scrim\"}},[_c('div',{staticClass:\"bottom-scrim\",class:{ '!gl-rounded-none': _vm.hasFooter }})])],2):_vm._e(),_vm._v(\" \"),(_vm.announceSRSearchResults)?_c('span',{staticClass:\"gl-sr-only\",attrs:{\"data-testid\":\"listbox-number-of-results\",\"aria-live\":\"assertive\"}},[_vm._t(\"search-summary-sr-only\",function(){return [_vm._v(\"\\n      \"+_vm._s(_vm.srOnlyResultsLabel(_vm.flattenedOptions.length))+\"\\n    \")]})],2):(_vm.showNoResultsText)?_c('div',{staticClass:\"gl-py-3 gl-pl-7 gl-pr-5 gl-text-base gl-text-subtle\",attrs:{\"aria-live\":\"assertive\",\"data-testid\":\"listbox-no-results-text\"}},[_vm._v(\"\\n    \"+_vm._s(_vm.noResultsText)+\"\\n  \")]):_vm._e(),_vm._v(\" \"),_vm._t(\"footer\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { ITEM_SELECTOR, SEARCH_INPUT_SELECTOR };\n","var SetCache = require('./_SetCache'),\n    arrayIncludes = require('./_arrayIncludes'),\n    arrayIncludesWith = require('./_arrayIncludesWith'),\n    cacheHas = require('./_cacheHas'),\n    createSet = require('./_createSet'),\n    setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      length = array.length,\n      isCommon = true,\n      result = [],\n      seen = result;\n\n  if (comparator) {\n    isCommon = false;\n    includes = arrayIncludesWith;\n  }\n  else if (length >= LARGE_ARRAY_SIZE) {\n    var set = iteratee ? null : createSet(array);\n    if (set) {\n      return setToArray(set);\n    }\n    isCommon = false;\n    includes = cacheHas;\n    seen = new SetCache;\n  }\n  else {\n    seen = iteratee ? [] : result;\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var seenIndex = seen.length;\n      while (seenIndex--) {\n        if (seen[seenIndex] === computed) {\n          continue outer;\n        }\n      }\n      if (iteratee) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n    else if (!includes(seen, computed, comparator)) {\n      if (seen !== result) {\n        seen.push(computed);\n      }\n      result.push(value);\n    }\n  }\n  return result;\n}\n\nmodule.exports = baseUniq;\n","var baseIsMap = require('./_baseIsMap'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","import GlButton from '../../base/button/button';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlEmptyState',\n  components: {\n    GlButton\n  },\n  props: {\n    /**\n     * The title (heading) of the empty state.\n     */\n    title: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The illustration's URL.\n     */\n    svgPath: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The illustration's height used to prevent content reflow.\n     */\n    svgHeight: {\n      type: Number,\n      required: false,\n      default: 144\n    },\n    /**\n     * The desciption/body text of the empty state.\n     */\n    description: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The primary GlButton's href.\n     */\n    primaryButtonLink: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The primary GlButton's text. If falsey, the button is not shown.\n     */\n    primaryButtonText: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The secondary GlButton's href.\n     */\n    secondaryButtonLink: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * The secondary GlButton's text. If falsey, the button is not shown.\n     */\n    secondaryButtonText: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Determines whether to render the compact layout.\n     */\n    compact: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    invertInDarkMode: {\n      type: Boolean,\n      required: false,\n      default: true\n    },\n    /**\n     * CSS classes to add to the content container\n     */\n    contentClass: {\n      type: [Array, String, Object],\n      required: false,\n      default: () => []\n    }\n  },\n  computed: {\n    height() {\n      return this.shouldPreventImageReflow ? this.svgHeight : null;\n    },\n    shouldPreventImageReflow() {\n      return Boolean(this.svgHeight);\n    },\n    shouldRenderPrimaryButton() {\n      return Boolean(this.primaryButtonLink && this.primaryButtonText);\n    },\n    shouldRenderSecondaryButton() {\n      return Boolean(this.secondaryButtonLink && this.secondaryButtonText);\n    },\n    contentClasses() {\n      return [this.compact ? 'gl-grow gl-basis-0 gl-px-4' : 'gl-m-auto gl-p-5', this.contentClass];\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"gl-flex\",class:{\n    'gl-empty-state gl-flex-col gl-text-center': !_vm.compact,\n    'gl-flex-row': _vm.compact,\n  }},[_c('div',{class:{ 'gl-hidden gl-px-4 sm:gl-block': _vm.compact, 'gl-max-w-full': !_vm.compact }},[(_vm.svgPath)?_c('img',{staticClass:\"gl-max-w-full\",class:{ 'gl-dark-invert-keep-hue': _vm.invertInDarkMode },attrs:{\"src\":_vm.svgPath,\"alt\":\"\",\"height\":_vm.height}}):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"gl-empty-state-content gl-mx-auto gl-my-0\",class:_vm.contentClasses,attrs:{\"data-testid\":\"gl-empty-state-content\"}},[_vm._t(\"title\",function(){return [_c('h1',{staticClass:\"gl-mb-0 gl-mt-0 gl-text-size-h-display gl-leading-36\",class:_vm.compact ? 'h5' : 'h4'},[_vm._v(\"\\n        \"+_vm._s(_vm.title)+\"\\n      \")])]}),_vm._v(\" \"),(_vm.description || _vm.$scopedSlots.description)?_c('p',{ref:\"description\",staticClass:\"gl-mb-0 gl-mt-4 gl-text-subtle\"},[_vm._t(\"description\",function(){return [_vm._v(\"\\n        \"+_vm._s(_vm.description)+\"\\n      \")]})],2):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-5 gl-flex gl-flex-wrap\",class:{ 'gl-justify-center': !_vm.compact }},[_vm._t(\"actions\",function(){return [(_vm.shouldRenderPrimaryButton)?_c('gl-button',{staticClass:\"gl-mb-3\",class:_vm.compact ? 'gl-mr-3' : 'gl-mx-2',attrs:{\"variant\":\"confirm\",\"href\":_vm.primaryButtonLink}},[_vm._v(_vm._s(_vm.primaryButtonText))]):_vm._e(),_vm._v(\" \"),(_vm.shouldRenderSecondaryButton)?_c('gl-button',{staticClass:\"gl-mb-3 gl-mr-3\",class:{ '!gl-mx-2': !_vm.compact },attrs:{\"href\":_vm.secondaryButtonLink}},[_vm._v(_vm._s(_vm.secondaryButtonText)+\"\\n        \")]):_vm._e()]})],2)],2)])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar weakMapTag = '[object WeakMap]';\n\n/**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\nfunction isWeakMap(value) {\n  return isObjectLike(value) && getTag(value) == weakMapTag;\n}\n\nmodule.exports = isWeakMap;\n","import memoize from 'lodash/memoize';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst getObserver = memoize(options => new IntersectionObserver(entries => {\n  entries.forEach(entry => {\n    entry.target.$_gl_intersectionHandler(entry);\n  });\n}, options || {}));\nvar script = {\n  name: 'GlIntersectionObserver',\n  props: {\n    /**\n     * Extra options to pass directly to the intersection observer API.\n     */\n    options: {\n      type: Object,\n      required: false,\n      default: null\n    }\n  },\n  mounted() {\n    const observer = getObserver(this.options);\n    this.$el.$_gl_intersectionHandler = entry => {\n      /**\n       * Emitted when the element's visibility changes\n       */\n      this.$emit('update', entry);\n      if (entry.isIntersecting) {\n        /**\n         * Emitted when the element appears on the page\n         */\n        this.$emit('appear');\n      } else {\n        /**\n         * Emitted when the element disappears from the page\n         */\n        this.$emit('disappear');\n      }\n    };\n    this.$el.$_gl_intersectionObserver = observer;\n    observer.observe(this.$el);\n  },\n  destroyed() {\n    this.$el.$_gl_intersectionObserver.unobserve(this.$el);\n    delete this.$el.$_gl_intersectionHandler;\n    delete this.$el.$_gl_intersectionObserver;\n  },\n  // Expose getObserver method for tests\n  getObserver\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","\n    var doc = {\"kind\":\"Document\",\"definitions\":[{\"kind\":\"OperationDefinition\",\"operation\":\"query\",\"name\":{\"kind\":\"Name\",\"value\":\"searchMilestones\"},\"variableDefinitions\":[{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}},\"type\":{\"kind\":\"NonNullType\",\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"ID\"}}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"String\"}},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isProject\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"Boolean\"}},\"defaultValue\":{\"kind\":\"BooleanValue\",\"value\":false},\"directives\":[]},{\"kind\":\"VariableDefinition\",\"variable\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}},\"type\":{\"kind\":\"NamedType\",\"name\":{\"kind\":\"Name\",\"value\":\"MilestoneStateEnum\"}},\"directives\":[]}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"group\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"skip\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isProject\"}}}]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"milestones\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"searchTitle\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeAncestors\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeDescendants\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"sort\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"EXPIRED_LAST_DUE_DATE_ASC\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Milestone\"},\"directives\":[]}]}}]}}]}},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"project\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"fullPath\"}}}],\"directives\":[{\"kind\":\"Directive\",\"name\":{\"kind\":\"Name\",\"value\":\"include\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"if\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"isProject\"}}}]}],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"id\"},\"arguments\":[],\"directives\":[]},{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"milestones\"},\"arguments\":[{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"searchTitle\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"search\"}}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"includeAncestors\"},\"value\":{\"kind\":\"BooleanValue\",\"value\":true}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"sort\"},\"value\":{\"kind\":\"EnumValue\",\"value\":\"EXPIRED_LAST_DUE_DATE_ASC\"}},{\"kind\":\"Argument\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"},\"value\":{\"kind\":\"Variable\",\"name\":{\"kind\":\"Name\",\"value\":\"state\"}}}],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"Field\",\"name\":{\"kind\":\"Name\",\"value\":\"nodes\"},\"arguments\":[],\"directives\":[],\"selectionSet\":{\"kind\":\"SelectionSet\",\"selections\":[{\"kind\":\"FragmentSpread\",\"name\":{\"kind\":\"Name\",\"value\":\"Milestone\"},\"directives\":[]}]}}]}}]}}]}}],\"loc\":{\"start\":0,\"end\":702}};\n    doc.loc.source = {\"body\":\"#import \\\"./milestone.fragment.graphql\\\"\\n\\nquery searchMilestones(\\n  $fullPath: ID!\\n  $search: String\\n  $isProject: Boolean = false\\n  $state: MilestoneStateEnum\\n) {\\n  group(fullPath: $fullPath) @skip(if: $isProject) {\\n    id\\n    milestones(\\n      searchTitle: $search\\n      includeAncestors: true\\n      includeDescendants: true\\n      sort: EXPIRED_LAST_DUE_DATE_ASC\\n      state: $state\\n    ) {\\n      nodes {\\n        ...Milestone\\n      }\\n    }\\n  }\\n  project(fullPath: $fullPath) @include(if: $isProject) {\\n    id\\n    milestones(\\n      searchTitle: $search\\n      includeAncestors: true\\n      sort: EXPIRED_LAST_DUE_DATE_ASC\\n      state: $state\\n    ) {\\n      nodes {\\n        ...Milestone\\n      }\\n    }\\n  }\\n}\\n\",\"name\":\"GraphQL request\",\"locationOffset\":{\"line\":1,\"column\":1}};\n  \n\n    var names = {};\n    function unique(defs) {\n      return defs.filter(\n        function(def) {\n          if (def.kind !== 'FragmentDefinition') return true;\n          var name = def.name.value\n          if (names[name]) {\n            return false;\n          } else {\n            names[name] = true;\n            return true;\n          }\n        }\n      )\n    }\n  doc.definitions = doc.definitions.concat(unique(require(\"./milestone.fragment.graphql\").definitions));\n\n\n    // Collect any fragment/type references from a node, adding them to the refs Set\n    function collectFragmentReferences(node, refs) {\n      if (node.kind === \"FragmentSpread\") {\n        refs.add(node.name.value);\n      } else if (node.kind === \"VariableDefinition\") {\n        var type = node.type;\n        if (type.kind === \"NamedType\") {\n          refs.add(type.name.value);\n        }\n      }\n\n      if (node.selectionSet) {\n        node.selectionSet.selections.forEach(function(selection) {\n          collectFragmentReferences(selection, refs);\n        });\n      }\n\n      if (node.variableDefinitions) {\n        node.variableDefinitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n\n      if (node.definitions) {\n        node.definitions.forEach(function(def) {\n          collectFragmentReferences(def, refs);\n        });\n      }\n    }\n\n    var definitionRefs = {};\n    (function extractReferences() {\n      doc.definitions.forEach(function(def) {\n        if (def.name) {\n          var refs = new Set();\n          collectFragmentReferences(def, refs);\n          definitionRefs[def.name.value] = refs;\n        }\n      });\n    })();\n\n    function findOperation(doc, name) {\n      for (var i = 0; i < doc.definitions.length; i++) {\n        var element = doc.definitions[i];\n        if (element.name && element.name.value == name) {\n          return element;\n        }\n      }\n    }\n\n    function oneQuery(doc, operationName) {\n      // Copy the DocumentNode, but clear out the definitions\n      var newDoc = {\n        kind: doc.kind,\n        definitions: [findOperation(doc, operationName)]\n      };\n      if (doc.hasOwnProperty(\"loc\")) {\n        newDoc.loc = doc.loc;\n      }\n\n      // Now, for the operation we're running, find any fragments referenced by\n      // it or the fragments it references\n      var opRefs = definitionRefs[operationName] || new Set();\n      var allRefs = new Set();\n      var newRefs = new Set();\n\n      // IE 11 doesn't support \"new Set(iterable)\", so we add the members of opRefs to newRefs one by one\n      opRefs.forEach(function(refName) {\n        newRefs.add(refName);\n      });\n\n      while (newRefs.size > 0) {\n        var prevRefs = newRefs;\n        newRefs = new Set();\n\n        prevRefs.forEach(function(refName) {\n          if (!allRefs.has(refName)) {\n            allRefs.add(refName);\n            var childRefs = definitionRefs[refName] || new Set();\n            childRefs.forEach(function(childRef) {\n              newRefs.add(childRef);\n            });\n          }\n        });\n      }\n\n      allRefs.forEach(function(refName) {\n        var op = findOperation(doc, refName);\n        if (op) {\n          newDoc.definitions.push(op);\n        }\n      });\n\n      return newDoc;\n    }\n    \n    module.exports = doc;\n    \n        module.exports[\"searchMilestones\"] = oneQuery(doc, \"searchMilestones\");\n        \n","import uniqueId from 'lodash/uniqueId';\nimport GlDisclosureDropdownItem from './disclosure_dropdown_item';\nimport { isGroup } from './utils';\nimport { DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS, DISCLOSURE_DROPDOWN_GROUP_NAME } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst BORDER_CLASSES = {\n  [DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.top]: 'gl-border-t gl-border-t-dropdown gl-pt-2 gl-mt-2',\n  [DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.bottom]: 'gl-border-b gl-border-b-dropdown gl-pb-2 gl-mb-2'\n};\nvar script = {\n  name: DISCLOSURE_DROPDOWN_GROUP_NAME,\n  components: {\n    GlDisclosureDropdownItem\n  },\n  props: {\n    /**\n     * Group of items\n     */\n    group: {\n      type: Object,\n      required: false,\n      default: null,\n      validator: isGroup\n    },\n    /**\n     * If 'true', will set top border for the group\n     * to separate from other groups. You can control\n     * the border position using the `borderPosition`\n     * property.\n     */\n    bordered: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Controls the position of the group's border. Valid\n     * values are 'top' and 'bottom'.\n     */\n    borderPosition: {\n      type: String,\n      required: false,\n      default: DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS.top,\n      validator: value => Object.keys(DISCLOSURE_DROPDOWN_GROUP_BORDER_POSITIONS).includes(value)\n    }\n  },\n  computed: {\n    borderClass() {\n      return this.bordered ? BORDER_CLASSES[this.borderPosition] : null;\n    },\n    showHeader() {\n      var _this$group;\n      return this.$scopedSlots['group-label'] || ((_this$group = this.group) === null || _this$group === void 0 ? void 0 : _this$group.name);\n    },\n    groupLabeledBy() {\n      return this.showHeader ? this.nameId : null;\n    }\n  },\n  created() {\n    this.nameId = uniqueId('gl-disclosure-dropdown-group-');\n  },\n  methods: {\n    handleAction(action) {\n      this.$emit('action', action);\n    },\n    uniqueItemId() {\n      return uniqueId(`disclosure-item-`);\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{class:_vm.borderClass},[(_vm.showHeader)?_c('div',{staticClass:\"gl-py-2 gl-pl-4 gl-text-sm gl-font-bold gl-text-strong\",attrs:{\"id\":_vm.nameId,\"aria-hidden\":\"true\"}},[_vm._t(\"group-label\",function(){return [_vm._v(_vm._s(_vm.group.name))]})],2):_vm._e(),_vm._v(\" \"),_c('ul',{staticClass:\"gl-mb-0 gl-list-none gl-pl-0\",attrs:{\"aria-labelledby\":_vm.groupLabeledBy}},[_vm._t(\"default\",function(){return _vm._l((_vm.group.items),function(item){return _c('gl-disclosure-dropdown-item',{key:_vm.uniqueItemId(),attrs:{\"item\":item},on:{\"action\":_vm.handleAction},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"list-item\",null,{\"item\":item})]},proxy:true}],null,true)})})})],2)])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { BORDER_CLASSES };\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n  var length = array == null ? 0 : array.length;\n  return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var convert = require('./convert'),\n    func = convert('curry', require('../curry'));\n\nfunc.placeholder = require('./placeholder');\nmodule.exports = func;\n","var copyObject = require('./_copyObject'),\n    getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n  return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","/**\n * The default argument placeholder value for methods.\n *\n * @type {Object}\n */\nmodule.exports = {};\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter_bar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./filter_bar.vue?vue&type=script&lang=js\"","<script>\n// eslint-disable-next-line no-restricted-imports\nimport { mapState, mapActions } from 'vuex';\nimport {\n  OPTIONS_NONE_ANY,\n  TOKEN_TITLE_LABEL,\n  TOKEN_TITLE_MILESTONE,\n  TOKEN_TYPE_LABEL,\n  TOKEN_TYPE_MILESTONE,\n} from '~/vue_shared/components/filtered_search_bar/constants';\nimport FilteredSearchBar from '~/vue_shared/components/filtered_search_bar/filtered_search_bar_root.vue';\nimport {\n  prepareTokens,\n  processFilters,\n  filterToQueryObject,\n} from '~/vue_shared/components/filtered_search_bar/filtered_search_utils';\nimport LabelToken from '~/vue_shared/components/filtered_search_bar/tokens/label_token.vue';\nimport MilestoneToken from '~/vue_shared/components/filtered_search_bar/tokens/milestone_token.vue';\nimport UrlSync from '~/vue_shared/components/url_sync.vue';\n\nexport default {\n  components: {\n    FilteredSearchBar,\n    UrlSync,\n  },\n  props: {\n    projectPath: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    ...mapState('filters', {\n      selectedMilestone: (state) => state.milestones.selected,\n      selectedLabelList: (state) => state.labels.selectedList,\n      milestonesData: (state) => state.milestones.data,\n      labelsData: (state) => state.labels.data,\n    }),\n    tokens() {\n      return [\n        {\n          icon: 'milestone',\n          title: TOKEN_TITLE_MILESTONE,\n          type: TOKEN_TYPE_MILESTONE,\n          token: MilestoneToken,\n          initialMilestones: this.milestonesData,\n          unique: true,\n          symbol: '%',\n          fetchMilestones: this.fetchMilestones,\n        },\n        {\n          icon: 'labels',\n          title: TOKEN_TITLE_LABEL,\n          type: TOKEN_TYPE_LABEL,\n          token: LabelToken,\n          defaultLabels: OPTIONS_NONE_ANY,\n          initialLabels: this.labelsData,\n          unique: false,\n          symbol: '~',\n          fetchLabels: this.fetchLabels,\n        },\n      ];\n    },\n    query() {\n      return filterToQueryObject({\n        milestone_title: this.selectedMilestone,\n        label_name: this.selectedLabelList,\n      });\n    },\n    initialFilterValue() {\n      return prepareTokens({\n        [TOKEN_TYPE_MILESTONE]: this.selectedMilestone,\n        [TOKEN_TYPE_LABEL]: this.selectedLabelList,\n      });\n    },\n  },\n  methods: {\n    ...mapActions('filters', ['setFilters', 'fetchMilestones', 'fetchLabels']),\n    handleFilter(filters) {\n      const { [TOKEN_TYPE_LABEL]: labels, [TOKEN_TYPE_MILESTONE]: milestone } =\n        processFilters(filters);\n\n      this.setFilters({\n        selectedMilestone: milestone ? milestone[0] : null,\n        selectedLabelList: labels || [],\n      });\n    },\n  },\n};\n</script>\n\n<template>\n  <div>\n    <filtered-search-bar\n      class=\"row-content-block gl-grow\"\n      :namespace=\"projectPath\"\n      recent-searches-storage-key=\"code-review-analytics\"\n      :search-input-placeholder=\"__('Filter results')\"\n      :tokens=\"tokens\"\n      :initial-filter-value=\"initialFilterValue\"\n      terms-as-tokens\n      @onFilter=\"handleFilter\"\n    />\n    <url-sync :query=\"query\" />\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./filter_bar.vue?vue&type=template&id=03d4709f\"\nimport script from \"./filter_bar.vue?vue&type=script&lang=js\"\nexport * from \"./filter_bar.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('filtered-search-bar',{staticClass:\"row-content-block gl-grow\",attrs:{\"namespace\":_vm.projectPath,\"recent-searches-storage-key\":\"code-review-analytics\",\"search-input-placeholder\":_vm.__('Filter results'),\"tokens\":_vm.tokens,\"initial-filter-value\":_vm.initialFilterValue,\"terms-as-tokens\":\"\"},on:{\"onFilter\":_vm.handleFilter}}),_vm._v(\" \"),_c('url-sync',{attrs:{\"query\":_vm.query}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script>\nimport { GlAvatarLink, GlAvatar, GlAvatarsInline, GlTooltipDirective } from '@gitlab/ui';\nimport { n__ } from '~/locale';\n\nexport const MAX_VISIBLE_AVATARS_DEFAULT = 3;\nexport const MAX_VISIBLE_AVATARS_COLLAPSED = 2;\n\nexport default {\n  name: 'ApproversColumn',\n  components: {\n    GlAvatarLink,\n    GlAvatar,\n    GlAvatarsInline,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  props: {\n    approvers: {\n      type: Array,\n      required: false,\n      default: () => [],\n    },\n  },\n  computed: {\n    maxVisible() {\n      return this.approvers.length > MAX_VISIBLE_AVATARS_DEFAULT\n        ? MAX_VISIBLE_AVATARS_COLLAPSED\n        : MAX_VISIBLE_AVATARS_DEFAULT;\n    },\n    hasMultipleApprovers() {\n      return this.approvers.length > 1;\n    },\n    hasSingleApprover() {\n      return this.approvers.length === 1;\n    },\n    firstApprover() {\n      return this.approvers[0];\n    },\n    approversBadgeSrOnlyText() {\n      return n__(\n        '%d additional approver',\n        '%d additional approvers',\n        this.approvers.length - this.maxVisible,\n      );\n    },\n  },\n  avatarSize: 24,\n  badgeTooltipMaxChars: 50,\n};\n</script>\n\n<template>\n  <div>\n    <gl-avatars-inline\n      v-if=\"hasMultipleApprovers\"\n      collapsed\n      :avatars=\"approvers\"\n      :max-visible=\"maxVisible\"\n      :avatar-size=\"$options.avatarSize\"\n      badge-tooltip-prop=\"name\"\n      :badge-tooltip-max-chars=\"$options.badgeTooltipMaxChars\"\n      :badge-sr-only-text=\"approversBadgeSrOnlyText\"\n    >\n      <template #avatar=\"{ avatar }\">\n        <gl-avatar-link v-gl-tooltip target=\"_blank\" :href=\"avatar.web_url\" :title=\"avatar.name\">\n          <gl-avatar :src=\"avatar.avatar_url\" :size=\"$options.avatarSize\" />\n        </gl-avatar-link>\n      </template>\n    </gl-avatars-inline>\n    <gl-avatar-link\n      v-else-if=\"hasSingleApprover\"\n      v-gl-tooltip\n      target=\"_blank\"\n      :href=\"firstApprover.web_url\"\n      :title=\"firstApprover.name\"\n    >\n      <gl-avatar :src=\"firstApprover.avatar_url\" :size=\"$options.avatarSize\" />\n    </gl-avatar-link>\n    <template v-else> &ndash; </template>\n  </div>\n</template>\n","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./approvers_column.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./approvers_column.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./approvers_column.vue?vue&type=template&id=21dd5880\"\nimport script from \"./approvers_column.vue?vue&type=script&lang=js\"\nexport * from \"./approvers_column.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.hasMultipleApprovers)?_c('gl-avatars-inline',{attrs:{\"collapsed\":\"\",\"avatars\":_vm.approvers,\"max-visible\":_vm.maxVisible,\"avatar-size\":_vm.$options.avatarSize,\"badge-tooltip-prop\":\"name\",\"badge-tooltip-max-chars\":_vm.$options.badgeTooltipMaxChars,\"badge-sr-only-text\":_vm.approversBadgeSrOnlyText},scopedSlots:_vm._u([{key:\"avatar\",fn:function({ avatar }){return [_c('gl-avatar-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"target\":\"_blank\",\"href\":avatar.web_url,\"title\":avatar.name}},[_c('gl-avatar',{attrs:{\"src\":avatar.avatar_url,\"size\":_vm.$options.avatarSize}})],1)]}}],null,false,515854463)}):(_vm.hasSingleApprover)?_c('gl-avatar-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"target\":\"_blank\",\"href\":_vm.firstApprover.web_url,\"title\":_vm.firstApprover.name}},[_c('gl-avatar',{attrs:{\"src\":_vm.firstApprover.avatar_url,\"size\":_vm.$options.avatarSize}})],1):[_vm._v(\" – \")]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./merge_request_table.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./merge_request_table.vue?vue&type=script&lang=js\"","<script>\n// eslint-disable-next-line no-restricted-imports\nimport { mapState } from 'vuex';\nimport { escape } from 'lodash';\nimport {\n  GlTableLite,\n  GlLink,\n  GlIcon,\n  GlAvatarLink,\n  GlAvatar,\n  GlTooltipDirective,\n} from '@gitlab/ui';\nimport { getTimeago } from '~/lib/utils/datetime_utility';\nimport { __, sprintf, n__ } from '~/locale';\nimport ApproversColumn from './approvers_column.vue';\n\nexport default {\n  name: 'MergeRequestTable',\n  components: {\n    GlTableLite,\n    GlLink,\n    GlIcon,\n    GlAvatarLink,\n    GlAvatar,\n    ApproversColumn,\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective,\n  },\n  computed: {\n    ...mapState('mergeRequests', ['mergeRequests']),\n  },\n  methods: {\n    getTimeAgoString(createdAt) {\n      return sprintf(__('created %{timeAgo}'), {\n        timeAgo: escape(getTimeago().format(createdAt)),\n      });\n    },\n    showReviewTime(value) {\n      return value !== null && value !== '';\n    },\n    formatReviewTime(hours) {\n      if (hours >= 24) {\n        const days = Math.floor(hours / 24);\n        return n__('1 day', '%d days', days);\n      }\n      if (hours >= 1 && hours < 24) {\n        return n__('1 hour', '%d hours', hours);\n      }\n\n      return sprintf(__('%{lessThan} 1 hour'), { lessThan: '<' }, false);\n    },\n  },\n  tableHeaderFields: [\n    {\n      key: 'mr_details',\n      label: __('Merge Request'),\n      thClass: 'w-30p',\n      tdClass: 'table-col gl-flex gl-items-center sm:gl-table-cell',\n    },\n    {\n      key: 'review_time',\n      label: __('Review time'),\n      class: 'text-right',\n      tdClass: 'table-col gl-flex gl-items-center sm:gl-table-cell',\n    },\n    {\n      key: 'author',\n      label: __('Author'),\n      tdClass: 'table-col gl-flex gl-items-center sm:gl-table-cell',\n    },\n    {\n      key: 'approved_by',\n      label: __('Approvers'),\n      tdClass: 'table-col gl-flex gl-items-center sm:gl-table-cell',\n    },\n    {\n      key: 'notes_count',\n      label: __('Comments'),\n      class: 'text-right',\n      tdClass: 'table-col gl-flex gl-items-center sm:gl-table-cell',\n    },\n    {\n      key: 'diff_stats',\n      label: __('Commits'),\n      class: 'text-right',\n      tdClass: 'table-col gl-flex gl-items-center sm:gl-table-cell',\n    },\n    {\n      key: 'line_changes',\n      label: __('Line changes'),\n      class: 'text-right',\n      tdClass: 'table-col gl-flex gl-items-center sm:gl-table-cell',\n    },\n  ],\n};\n</script>\n\n<template>\n  <gl-table-lite\n    class=\"my-3\"\n    :fields=\"$options.tableHeaderFields\"\n    :items=\"mergeRequests\"\n    stacked=\"sm\"\n  >\n    <template #cell(mr_details)=\"items\">\n      <div class=\"flex-column align-items-end align-items-sm-start gl-flex gl-grow\">\n        <div class=\"str-truncated my-2 gl-max-w-34\">\n          <gl-link\n            :href=\"items.item.web_url\"\n            target=\"_blank\"\n            class=\"gl-font-bold gl-text-default hover:gl-text-default\"\n            >{{ items.item.title }}</gl-link\n          >\n        </div>\n        <ul class=\"horizontal-list list-items-separated mb-0 gl-text-subtle\">\n          <li>!{{ items.item.iid }}</li>\n          <li>{{ getTimeAgoString(items.item.created_at) }}</li>\n          <li v-if=\"items.item.milestone\">\n            <span class=\"gl-flex gl-items-center\">\n              <gl-icon name=\"milestone\" class=\"gl-mr-2\" />\n              {{ items.item.milestone.title }}\n            </span>\n          </li>\n        </ul>\n      </div>\n    </template>\n\n    <template #cell(review_time)=\"{ value }\">\n      <template v-if=\"showReviewTime(value)\">\n        <span v-text=\"formatReviewTime(value)\"></span>\n      </template>\n      <template v-else> &ndash; </template>\n    </template>\n\n    <template #cell(author)=\"{ value }\">\n      <gl-avatar-link v-gl-tooltip target=\"_blank\" :href=\"value.web_url\" :title=\"value.name\">\n        <gl-avatar :size=\"24\" :src=\"value.avatar_url\" :entity-name=\"value.name\" />\n      </gl-avatar-link>\n    </template>\n\n    <template #cell(approved_by)=\"{ value }\">\n      <approvers-column\n        :approvers=\"\n          value && value.length\n            ? value\n            : [] /* eslint-disable-line @gitlab/vue-no-new-non-primitive-in-template */\n        \"\n      />\n    </template>\n\n    <template #cell(diff_stats)=\"{ value }\">\n      <span>{{ value.commits_count }}</span>\n    </template>\n\n    <template #cell(line_changes)=\"items\">\n      <span class=\"font-weight-bold gl-text-success\"> +{{ items.item.diff_stats.additions }} </span>\n      <span class=\"font-weight-bold gl-text-danger\"> -{{ items.item.diff_stats.deletions }} </span>\n    </template>\n  </gl-table-lite>\n</template>\n","import { render, staticRenderFns } from \"./merge_request_table.vue?vue&type=template&id=20fcd8ee\"\nimport script from \"./merge_request_table.vue?vue&type=script&lang=js\"\nexport * from \"./merge_request_table.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('gl-table-lite',{staticClass:\"my-3\",attrs:{\"fields\":_vm.$options.tableHeaderFields,\"items\":_vm.mergeRequests,\"stacked\":\"sm\"},scopedSlots:_vm._u([{key:\"cell(mr_details)\",fn:function(items){return [_c('div',{staticClass:\"flex-column align-items-end align-items-sm-start gl-flex gl-grow\"},[_c('div',{staticClass:\"str-truncated my-2 gl-max-w-34\"},[_c('gl-link',{staticClass:\"gl-font-bold gl-text-default hover:gl-text-default\",attrs:{\"href\":items.item.web_url,\"target\":\"_blank\"}},[_vm._v(_vm._s(items.item.title))])],1),_vm._v(\" \"),_c('ul',{staticClass:\"horizontal-list list-items-separated mb-0 gl-text-subtle\"},[_c('li',[_vm._v(\"!\"+_vm._s(items.item.iid))]),_vm._v(\" \"),_c('li',[_vm._v(_vm._s(_vm.getTimeAgoString(items.item.created_at)))]),_vm._v(\" \"),(items.item.milestone)?_c('li',[_c('span',{staticClass:\"gl-flex gl-items-center\"},[_c('gl-icon',{staticClass:\"gl-mr-2\",attrs:{\"name\":\"milestone\"}}),_vm._v(\"\\n            \"+_vm._s(items.item.milestone.title)+\"\\n          \")],1)]):_vm._e()])])]}},{key:\"cell(review_time)\",fn:function({ value }){return [(_vm.showReviewTime(value))?[_c('span',{domProps:{\"textContent\":_vm._s(_vm.formatReviewTime(value))}})]:[_vm._v(\" – \")]]}},{key:\"cell(author)\",fn:function({ value }){return [_c('gl-avatar-link',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],attrs:{\"target\":\"_blank\",\"href\":value.web_url,\"title\":value.name}},[_c('gl-avatar',{attrs:{\"size\":24,\"src\":value.avatar_url,\"entity-name\":value.name}})],1)]}},{key:\"cell(approved_by)\",fn:function({ value }){return [_c('approvers-column',{attrs:{\"approvers\":value && value.length\n          ? value\n          : [] /* eslint-disable-line @gitlab/vue-no-new-non-primitive-in-template */}})]}},{key:\"cell(diff_stats)\",fn:function({ value }){return [_c('span',[_vm._v(_vm._s(value.commits_count))])]}},{key:\"cell(line_changes)\",fn:function(items){return [_c('span',{staticClass:\"font-weight-bold gl-text-success\"},[_vm._v(\" +\"+_vm._s(items.item.diff_stats.additions)+\" \")]),_vm._v(\" \"),_c('span',{staticClass:\"font-weight-bold gl-text-danger\"},[_vm._v(\" -\"+_vm._s(items.item.diff_stats.deletions)+\" \")])]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app.vue?vue&type=script&lang=js\"","<script>\nimport { GlBadge, GlLoadingIcon, GlEmptyState, GlPagination } from '@gitlab/ui';\n// eslint-disable-next-line no-restricted-imports\nimport { mapState, mapActions } from 'vuex';\nimport FilterBar from './filter_bar.vue';\nimport MergeRequestTable from './merge_request_table.vue';\n\nexport default {\n  components: {\n    GlBadge,\n    GlLoadingIcon,\n    GlPagination,\n    GlEmptyState,\n    FilterBar,\n    MergeRequestTable,\n  },\n  props: {\n    projectId: {\n      type: Number,\n      required: true,\n    },\n    projectPath: {\n      type: String,\n      required: true,\n    },\n    newMergeRequestUrl: {\n      type: String,\n      required: false,\n      default: null,\n    },\n    emptyStateSvgPath: {\n      type: String,\n      required: true,\n    },\n  },\n  computed: {\n    ...mapState('mergeRequests', {\n      isLoading: 'isLoading',\n      perPage: (state) => state.pageInfo.perPage,\n      totalItems: (state) => state.pageInfo.total,\n      page: (state) => state.pageInfo.page,\n    }),\n    currentPage: {\n      get() {\n        return this.page;\n      },\n      set(newVal) {\n        this.setPage(newVal);\n        this.fetchMergeRequests();\n      },\n    },\n  },\n  created() {\n    this.setProjectId(this.projectId);\n    this.fetchMergeRequests();\n  },\n  methods: {\n    ...mapActions('mergeRequests', ['setProjectId', 'fetchMergeRequests', 'setPage']),\n  },\n};\n</script>\n\n<template>\n  <div>\n    <filter-bar :project-path=\"projectPath\" />\n    <div class=\"gl-mt-3\">\n      <gl-loading-icon v-show=\"isLoading\" size=\"lg\" class=\"gl-mt-5\" />\n      <template v-if=\"!isLoading\">\n        <gl-empty-state\n          v-if=\"!totalItems\"\n          :title=\"__(`No open merge requests`)\"\n          :primary-button-text=\"__('New merge request')\"\n          :primary-button-link=\"newMergeRequestUrl\"\n          :svg-path=\"emptyStateSvgPath\"\n          :svg-height=\"150\"\n        >\n          <template #description>\n            <div class=\"gl-text-center\">\n              <p>{{ __('Create a merge request, or edit your criteria and try again.') }}</p>\n            </div>\n          </template>\n        </gl-empty-state>\n        <template v-else>\n          <div>\n            <span class=\"gl-font-bold\">{{ __('Merge Requests in Review') }}</span>\n            <gl-badge>{{ totalItems }}</gl-badge>\n          </div>\n          <merge-request-table />\n          <gl-pagination\n            v-model=\"currentPage\"\n            :per-page=\"perPage\"\n            :total-items=\"totalItems\"\n            align=\"center\"\n            class=\"gl-w-full\"\n          />\n        </template>\n      </template>\n    </div>\n  </div>\n</template>\n","import { render, staticRenderFns } from \"./app.vue?vue&type=template&id=f118eae0\"\nimport script from \"./app.vue?vue&type=script&lang=js\"\nexport * from \"./app.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('filter-bar',{attrs:{\"project-path\":_vm.projectPath}}),_vm._v(\" \"),_c('div',{staticClass:\"gl-mt-3\"},[_c('gl-loading-icon',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLoading),expression:\"isLoading\"}],staticClass:\"gl-mt-5\",attrs:{\"size\":\"lg\"}}),_vm._v(\" \"),(!_vm.isLoading)?[(!_vm.totalItems)?_c('gl-empty-state',{attrs:{\"title\":_vm.__(`No open merge requests`),\"primary-button-text\":_vm.__('New merge request'),\"primary-button-link\":_vm.newMergeRequestUrl,\"svg-path\":_vm.emptyStateSvgPath,\"svg-height\":150},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [_c('div',{staticClass:\"gl-text-center\"},[_c('p',[_vm._v(_vm._s(_vm.__('Create a merge request, or edit your criteria and try again.')))])])]},proxy:true}],null,false,2522047870)}):[_c('div',[_c('span',{staticClass:\"gl-font-bold\"},[_vm._v(_vm._s(_vm.__('Merge Requests in Review')))]),_vm._v(\" \"),_c('gl-badge',[_vm._v(_vm._s(_vm.totalItems))])],1),_vm._v(\" \"),_c('merge-request-table'),_vm._v(\" \"),_c('gl-pagination',{staticClass:\"gl-w-full\",attrs:{\"per-page\":_vm.perPage,\"total-items\":_vm.totalItems,\"align\":\"center\"},model:{value:(_vm.currentPage),callback:function ($$v) {_vm.currentPage=$$v},expression:\"currentPage\"}})]]:_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export function setFilters({ dispatch }) {\n  return Promise.all([\n    dispatch('mergeRequests/setPage', 1),\n    dispatch('mergeRequests/fetchMergeRequests', null),\n  ]);\n}\n","export const SET_PROJECT_ID = 'SET_PROJECT_ID';\n\nexport const REQUEST_MERGE_REQUESTS = 'REQUEST_MERGE_REQUESTS';\nexport const RECEIVE_MERGE_REQUESTS_SUCCESS = 'RECEIVE_MERGE_REQUESTS_SUCCESS';\nexport const RECEIVE_MERGE_REQUESTS_ERROR = 'RECEIVE_MERGE_REQUESTS_ERROR';\n\nexport const SET_PAGE = 'SET_PAGE';\n","import API from 'ee/api';\nimport { createAlert } from '~/alert';\nimport { normalizeHeaders, parseIntPagination } from '~/lib/utils/common_utils';\nimport { __ } from '~/locale';\nimport { filterToQueryObject } from '~/vue_shared/components/filtered_search_bar/filtered_search_utils';\nimport * as types from './mutation_types';\n\nexport const setProjectId = ({ commit }, projectId) => commit(types.SET_PROJECT_ID, projectId);\n\nexport const fetchMergeRequests = ({ commit, state, rootState }) => {\n  commit(types.REQUEST_MERGE_REQUESTS);\n\n  const { projectId, pageInfo } = state;\n  const {\n    filters: {\n      milestones: { selected: selectedMilestone },\n      labels: { selectedList: selectedLabelList },\n    },\n  } = rootState;\n\n  const filterBarQuery = filterToQueryObject({\n    milestone_title: selectedMilestone,\n    label_name: selectedLabelList,\n  });\n  const params = {\n    project_id: projectId,\n    page: pageInfo.page,\n    ...filterBarQuery,\n  };\n\n  return API.codeReviewAnalytics(params)\n    .then((response) => {\n      const { headers, data } = response;\n      const normalizedHeaders = normalizeHeaders(headers);\n      commit(types.RECEIVE_MERGE_REQUESTS_SUCCESS, {\n        pageInfo: parseIntPagination(normalizedHeaders),\n        mergeRequests: data,\n      });\n    })\n    .catch(({ response }) => {\n      const { status } = response;\n      commit(types.RECEIVE_MERGE_REQUESTS_ERROR, status);\n      createAlert({\n        message: __('An error occurred while loading merge requests.'),\n      });\n    });\n};\n\nexport const setPage = ({ commit }, page) => commit(types.SET_PAGE, page);\n","import * as types from './mutation_types';\n\nexport default {\n  [types.SET_PROJECT_ID](state, projectId) {\n    state.projectId = projectId;\n  },\n  [types.REQUEST_MERGE_REQUESTS](state) {\n    state.isLoading = true;\n  },\n  [types.RECEIVE_MERGE_REQUESTS_SUCCESS](state, { pageInfo, mergeRequests }) {\n    state.isLoading = false;\n    state.errorCode = null;\n    state.pageInfo = pageInfo;\n    state.mergeRequests = mergeRequests;\n  },\n  [types.RECEIVE_MERGE_REQUESTS_ERROR](state, errorCode) {\n    state.isLoading = false;\n    state.errorCode = errorCode;\n    state.pageInfo = {};\n    state.mergeRequests = [];\n  },\n  [types.SET_PAGE](state, page) {\n    state.pageInfo = { ...state.pageInfo, page };\n  },\n};\n","import * as actions from './actions';\nimport mutations from './mutations';\nimport state from './state';\n\nexport default {\n  namespaced: true,\n  state: state(),\n  actions,\n  mutations,\n};\n","export default () => ({\n  projectId: null,\n  isLoading: false,\n  errorCode: null,\n  mergeRequests: [],\n  pageInfo: {},\n});\n","import Vue from 'vue';\n// eslint-disable-next-line no-restricted-imports\nimport Vuex from 'vuex';\nimport filters from '~/vue_shared/components/filtered_search_bar/store/modules/filters';\nimport * as actions from './actions';\nimport mergeRequests from './modules/merge_requests/index';\n\nVue.use(Vuex);\n\nconst createStore = () =>\n  new Vuex.Store({\n    actions,\n    modules: {\n      filters,\n      mergeRequests,\n    },\n  });\n\nexport default createStore();\n","import Vue from 'vue';\nimport { extractFilterQueryParameters } from '~/analytics/shared/utils';\nimport CodeAnalyticsApp from './components/app.vue';\nimport store from './store';\n\nexport default () => {\n  const container = document.getElementById('js-code-review-analytics');\n  const {\n    projectId,\n    projectPath,\n    newMergeRequestUrl,\n    emptyStateSvgPath,\n    milestonePath,\n    labelsPath,\n  } = container.dataset;\n  if (!container) return;\n\n  store.dispatch('filters/setEndpoints', {\n    milestonesEndpoint: milestonePath,\n    labelsEndpoint: labelsPath,\n    projectEndpoint: projectPath,\n  });\n\n  const { selectedMilestone, selectedLabelList } = extractFilterQueryParameters(\n    window.location.search,\n  );\n  store.dispatch('filters/initialize', { selectedMilestone, selectedLabelList });\n\n  // eslint-disable-next-line no-new\n  new Vue({\n    el: container,\n    store,\n    render(h) {\n      return h(CodeAnalyticsApp, {\n        props: {\n          projectId: Number(projectId),\n          projectPath,\n          newMergeRequestUrl,\n          emptyStateSvgPath,\n        },\n      });\n    },\n  });\n};\n","import initCodeReviewAnalyticsApp from 'ee/analytics/code_review_analytics/code_review_analytics_bundle';\n\ninitCodeReviewAnalyticsApp();\n","import { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlButton from '../button/button';\nimport GlButtonGroup from '../button_group/button_group';\nimport GlCollapsibleListbox from '../new_dropdowns/listbox/listbox';\nimport { isOption } from '../new_dropdowns/listbox/utils';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlSorting',\n  components: {\n    GlButton,\n    GlButtonGroup,\n    GlCollapsibleListbox\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective\n  },\n  props: {\n    /**\n     * Text to place in the toggle button.\n     */\n    text: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Sort options to display in the dropdown\n     */\n    sortOptions: {\n      type: Array,\n      required: false,\n      default: () => [],\n      // eslint-disable-next-line unicorn/no-array-callback-reference\n      validator: sortOptions => sortOptions.every(isOption)\n    },\n    /**\n     * The value of the item currently selected in the dropdown.\n     * Only to be used with the `sortOptions` prop.\n     */\n    sortBy: {\n      type: [String, Number],\n      required: false,\n      default: null\n    },\n    /**\n     * Determines the current sort order icon displayed.\n     */\n    isAscending: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * The text for the tooltip and aria-label of the sort direction toggle\n     * button instead of the defaults for ascending/descending.\n     */\n    sortDirectionToolTip: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Additional class(es) to apply to the root element of the GlCollapsibleListbox.\n     */\n    dropdownClass: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Additional class(es) to apply to the dropdown toggle.\n     */\n    dropdownToggleClass: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Additional class(es) to apply to the sort direction toggle button.\n     */\n    sortDirectionToggleClass: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    /**\n     * Render the dropdown toggle button as a block element\n     */\n    block: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  computed: {\n    localSortDirection() {\n      return this.isAscending ? 'sort-lowest' : 'sort-highest';\n    },\n    sortDirectionText() {\n      if (this.sortDirectionToolTip) return this.sortDirectionToolTip;\n      return this.isAscending ? translate('GlSorting.sortAscending', 'Sort direction: ascending') : translate('GlSorting.sortDescending', 'Sort direction: descending');\n    }\n  },\n  methods: {\n    toggleSortDirection() {\n      const newDirection = !this.isAscending;\n\n      /**\n       * Emitted when the sort direction button is clicked.\n       *\n       * The event's payload will be true if the direction has been changed to\n       * ascending, or false if descending.\n       *\n       * @property {boolean} isAscending\n       */\n      this.$emit('sortDirectionChange', newDirection);\n    },\n    onSortByChanged(event) {\n      /**\n       * Emitted when the sort field is changed.\n       *\n       * The event's payload is the value of the selected sort field.\n       *\n       * Only emitted when using the `sortOptions` prop.\n       *\n       * @property {string|number} value\n       */\n      this.$emit('sortByChange', event);\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-button-group',{staticClass:\"gl-sorting\"},[_c('gl-collapsible-listbox',{class:_vm.dropdownClass,attrs:{\"toggle-text\":_vm.text,\"items\":_vm.sortOptions,\"selected\":_vm.sortBy,\"toggle-class\":_vm.dropdownToggleClass,\"placement\":\"bottom-end\",\"block\":_vm.block},on:{\"select\":_vm.onSortByChanged}}),_vm._v(\" \"),_c('gl-button',{directives:[{name:\"gl-tooltip\",rawName:\"v-gl-tooltip\"}],class:['sorting-direction-button', _vm.sortDirectionToggleClass],attrs:{\"title\":_vm.sortDirectionText,\"icon\":_vm.localSortDirection,\"aria-label\":_vm.sortDirectionText},on:{\"click\":_vm.toggleSortDirection}})],1)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import GlClearIconButton from '../../shared_components/clear_icon_button/clear_icon_button';\nimport GlFormInput from '../form/form_input/form_input';\nimport GlIcon from '../icon/icon';\nimport GlLoadingIcon from '../loading_icon/loading_icon';\nimport { translate } from '../../../utils/i18n';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlSearchboxByType',\n  components: {\n    GlClearIconButton,\n    GlIcon,\n    GlFormInput,\n    GlLoadingIcon\n  },\n  inheritAttrs: false,\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    /**\n     * If provided, used as value of search input\n     */\n    value: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    borderless: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    clearButtonTitle: {\n      type: String,\n      required: false,\n      default: () => translate('GlSearchBoxByType.clearButtonTitle', 'Clear')\n    },\n    /**\n     * If provided and true, disables the input and controls\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Puts search box into loading state, rendering spinner\n     */\n    isLoading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Container for tooltip. Valid values: DOM node, selector string or `false` for default\n     */\n    tooltipContainer: {\n      required: false,\n      default: false,\n      validator: value => value === false || typeof value === 'string' || value instanceof HTMLElement\n    }\n  },\n  computed: {\n    inputAttributes() {\n      const attributes = {\n        type: 'search',\n        placeholder: translate('GlSearchBoxByType.input.placeholder', 'Search'),\n        ...this.$attrs\n      };\n      if (!attributes['aria-label']) {\n        attributes['aria-label'] = attributes.placeholder;\n      }\n      return attributes;\n    },\n    hasValue() {\n      return Boolean(this.value.length);\n    },\n    inputListeners() {\n      return {\n        ...this.$listeners,\n        input: this.onInput,\n        focusin: this.onFocusin,\n        focusout: this.onFocusout\n      };\n    },\n    showClearButton() {\n      return this.hasValue && !this.disabled;\n    }\n  },\n  methods: {\n    isInputOrClearButton(element) {\n      var _this$$refs$input, _this$$refs$clearButt;\n      return element === ((_this$$refs$input = this.$refs.input) === null || _this$$refs$input === void 0 ? void 0 : _this$$refs$input.$el) || element === ((_this$$refs$clearButt = this.$refs.clearButton) === null || _this$$refs$clearButt === void 0 ? void 0 : _this$$refs$clearButt.$el);\n    },\n    clearInput() {\n      this.onInput('');\n      this.focusInput();\n    },\n    focusInput() {\n      this.$refs.input.$el.focus();\n    },\n    onInput(value) {\n      this.$emit('input', value);\n    },\n    onFocusout(event) {\n      const {\n        relatedTarget\n      } = event;\n      if (this.isInputOrClearButton(relatedTarget)) {\n        return;\n      }\n      this.$emit('focusout', event);\n    },\n    onFocusin(event) {\n      const {\n        relatedTarget\n      } = event;\n      if (this.isInputOrClearButton(relatedTarget)) {\n        return;\n      }\n      this.$emit('focusin', event);\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"gl-search-box-by-type\"},[_c('gl-icon',{staticClass:\"gl-search-box-by-type-search-icon\",attrs:{\"name\":\"search\",\"variant\":\"subtle\"}}),_vm._v(\" \"),_c('gl-form-input',_vm._g(_vm._b({ref:\"input\",class:{\n      'gl-search-box-by-type-input': !_vm.borderless,\n      'gl-search-box-by-type-input-borderless': _vm.borderless,\n    },attrs:{\"value\":_vm.value,\"disabled\":_vm.disabled}},'gl-form-input',_vm.inputAttributes,false),_vm.inputListeners)),_vm._v(\" \"),(_vm.isLoading || _vm.showClearButton)?_c('div',{staticClass:\"gl-search-box-by-type-right-icons\"},[(_vm.isLoading)?_c('gl-loading-icon',{staticClass:\"gl-search-box-by-type-loading-icon\"}):_vm._e(),_vm._v(\" \"),(_vm.showClearButton)?_c('gl-clear-icon-button',{ref:\"clearButton\",staticClass:\"gl-search-box-by-type-clear gl-clear-icon-button\",attrs:{\"title\":_vm.clearButtonTitle,\"tooltip-container\":_vm.tooltipContainer},on:{\"click\":function($event){$event.stopPropagation();return _vm.clearInput.apply(null, arguments)},\"focusin\":_vm.onFocusin,\"focusout\":_vm.onFocusout}}):_vm._e()],1):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { labelColorOptions } from '../../../utils/constants';\nimport { colorFromBackground } from '../../../utils/utils';\nimport GlButton from '../button/button';\nimport GlIcon from '../icon/icon';\nimport GlLink from '../link/link';\nimport GlTooltip from '../tooltip/tooltip';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nvar script = {\n  name: 'GlLabel',\n  components: {\n    GlButton,\n    GlIcon,\n    GlLink,\n    GlTooltip\n  },\n  props: {\n    backgroundColor: {\n      type: String,\n      required: true,\n      validator: value => /^(#|rgb|rgba)/.test(value)\n    },\n    title: {\n      type: String,\n      required: true,\n      default: ''\n    },\n    description: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    tooltipPlacement: {\n      type: String,\n      required: false,\n      default: 'top'\n    },\n    target: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    scoped: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    showCloseButton: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  data() {\n    return {\n      splitScopedLabelIndex: this.title.lastIndexOf('::')\n    };\n  },\n  computed: {\n    cssClasses() {\n      const textColorVariant = colorFromBackground(this.backgroundColor);\n      return {\n        'gl-label-scoped': this.scoped,\n        'gl-label-text-dark': textColorVariant === labelColorOptions.dark,\n        'gl-label-text-light': textColorVariant === labelColorOptions.light\n      };\n    },\n    cssVariables() {\n      return {\n        '--label-background-color': this.backgroundColor,\n        '--label-inset-border': `inset 0 0 0 2px ${this.backgroundColor}`\n      };\n    },\n    scopedKey() {\n      return this.scoped ? this.title.slice(0, this.splitScopedLabelIndex) : this.title;\n    },\n    scopedValue() {\n      return this.title.slice(this.splitScopedLabelIndex + 2);\n    },\n    labelComponent() {\n      return this.target ? GlLink : 'span';\n    },\n    tooltipTarget() {\n      return this.target ? this.$refs.labelTitle.$el : this.$refs.labelTitle;\n    }\n  },\n  watch: {\n    title() {\n      this.splitScopedLabelIndex = this.title.lastIndexOf('::');\n    }\n  },\n  methods: {\n    onClick(e) {\n      /**\n       * Emitted when label is clicked\n       *\n       * @event click\n       * @type {object}\n       */\n      this.$emit('click', e);\n    },\n    onClose(e) {\n      /**\n       * Emitted when x is clicked\n       *\n       * @event close\n       * @type {object}\n       */\n      this.$emit('close', e);\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',_vm._b({staticClass:\"gl-label\",class:_vm.cssClasses,style:(_vm.cssVariables),on:{\"click\":_vm.onClick}},'span',_vm.$attrs,false),[_c(_vm.labelComponent,{ref:\"labelTitle\",tag:\"component\",staticClass:\"gl-label-link\",class:{ 'gl-label-link-underline': _vm.target },attrs:{\"href\":_vm.target ? _vm.target : false,\"tabindex\":\"0\"}},[_c('span',{staticClass:\"gl-label-text\"},[_vm._v(\"\\n      \"+_vm._s(_vm.scopedKey)+\"\\n    \")]),_vm._v(\" \"),(_vm.scoped && _vm.scopedValue)?_c('span',{staticClass:\"gl-label-text-scoped\"},[_vm._v(\"\\n      \"+_vm._s(_vm.scopedValue)+\"\\n    \")]):_vm._e()]),_vm._v(\" \"),(_vm.showCloseButton)?_c('gl-button',{staticClass:\"gl-label-close !gl-p-0\",attrs:{\"category\":\"tertiary\",\"size\":\"small\",\"variant\":\"reset\",\"aria-label\":\"Remove label\",\"disabled\":_vm.disabled},on:{\"click\":_vm.onClose}},[_c('gl-icon',{attrs:{\"name\":\"close-xs\",\"size\":12}})],1):_vm._e(),_vm._v(\" \"),(_vm.description)?_c('gl-tooltip',{attrs:{\"target\":function () { return _vm.tooltipTarget; },\"placement\":_vm.tooltipPlacement,\"boundary\":\"viewport\"}},[(_vm.scoped)?_c('span',{staticClass:\"gl-label-tooltip-title\"},[_vm._v(\"Scoped label\")]):_vm._e(),_vm._v(\"\\n    \"+_vm._s(_vm.description)+\"\\n  \")]):_vm._e()],1)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { extend, isVue3 } from '../vue';\nimport { isUndefined, isArray } from '../utils/inspect';\n\n// Mixin to determine if an event listener has been registered\n\n// @vue/component\nconst hasListenerMixin = extend({\n  methods: {\n    hasListener(name) {\n      if (isVue3) {\n        return true;\n      }\n      // Only includes listeners registered via `v-on:name`\n      const $listeners = this.$listeners || {};\n      // Includes `v-on:name` and `this.$on('name')` registered listeners\n      // Note this property is not part of the public Vue API, but it is\n      // the only way to determine if a listener was added via `vm.$on`\n      const $events = this._events || {};\n      // Registered listeners in `this._events` are always an array,\n      // but might be zero length\n      return !isUndefined($listeners[name]) || isArray($events[name]) && $events[name].length > 0;\n    }\n  }\n});\n\nexport { hasListenerMixin };\n","var baseConvert = require('./_baseConvert'),\n    util = require('./_util');\n\n/**\n * Converts `func` of `name` to an immutable auto-curried iteratee-first data-last\n * version with conversion `options` applied. If `name` is an object its methods\n * will be converted.\n *\n * @param {string} name The name of the function to wrap.\n * @param {Function} [func] The function to wrap.\n * @param {Object} [options] The options object. See `baseConvert` for more details.\n * @returns {Function|Object} Returns the converted function or object.\n */\nfunction convert(name, func, options) {\n  return baseConvert(util, name, func, options);\n}\n\nmodule.exports = convert;\n","<script>\nimport { historyPushState, historyReplaceState } from '~/lib/utils/common_utils';\nimport { mergeUrlParams, setUrlParams } from '~/lib/utils/url_utility';\n\nexport const HISTORY_PUSH_UPDATE_METHOD = 'push';\nexport const HISTORY_REPLACE_UPDATE_METHOD = 'replace';\nexport const URL_SET_PARAMS_STRATEGY = 'set';\nexport const URL_MERGE_PARAMS_STRATEGY = 'merge';\n\n/**\n * Renderless component to update the query string,\n * the update is done by updating the query property or\n * by using updateQuery method in the scoped slot.\n * note: do not use both prop and updateQuery method.\n */\nexport default {\n  props: {\n    query: {\n      type: Object,\n      required: false,\n      default: null,\n    },\n    urlParamsUpdateStrategy: {\n      type: String,\n      required: false,\n      default: URL_MERGE_PARAMS_STRATEGY,\n      validator: (value) => [URL_MERGE_PARAMS_STRATEGY, URL_SET_PARAMS_STRATEGY].includes(value),\n    },\n    historyUpdateMethod: {\n      type: String,\n      required: false,\n      default: HISTORY_PUSH_UPDATE_METHOD,\n      validator: (value) =>\n        [HISTORY_PUSH_UPDATE_METHOD, HISTORY_REPLACE_UPDATE_METHOD].includes(value),\n    },\n  },\n  watch: {\n    query: {\n      immediate: true,\n      deep: true,\n      handler(newQuery) {\n        if (newQuery) {\n          this.updateQuery(newQuery);\n        }\n      },\n    },\n  },\n  mounted() {\n    window.addEventListener('popstate', this.handlePopState);\n  },\n  beforeDestroy() {\n    window.removeEventListener('popstate', this.handlePopState);\n  },\n  methods: {\n    handlePopState(event) {\n      this.$emit('popstate', event);\n    },\n    updateQuery(newQuery) {\n      const url =\n        this.urlParamsUpdateStrategy === URL_SET_PARAMS_STRATEGY\n          ? setUrlParams(this.query, window.location.href, true, true, true)\n          : mergeUrlParams(newQuery, window.location.href, { spreadArrays: true });\n\n      if (this.historyUpdateMethod === HISTORY_PUSH_UPDATE_METHOD) {\n        historyPushState(url);\n      } else {\n        historyReplaceState(url);\n      }\n    },\n  },\n  render() {\n    return this.$scopedSlots.default?.({ updateQuery: this.updateQuery });\n  },\n};\n</script>\n","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./url_sync.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./url_sync.vue?vue&type=script&lang=js\"","var render, staticRenderFns\nimport script from \"./url_sync.vue?vue&type=script&lang=js\"\nexport * from \"./url_sync.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","import { flatten } from 'lodash';\nimport dateFormat from '~/lib/dateformat';\nimport { SECONDS_IN_DAY } from '~/lib/utils/datetime_utility';\nimport { slugify } from '~/lib/utils/text_utility';\nimport { joinPaths } from '~/lib/utils/url_utility';\nimport { urlQueryToFilter } from '~/vue_shared/components/filtered_search_bar/filtered_search_utils';\nimport {\n  dateFormats,\n  FLOW_METRICS,\n  MAX_METRIC_PRECISION,\n  UNITS,\n  VALUE_STREAM_METRIC_DISPLAY_UNITS,\n  VALUE_STREAM_METRIC_TILE_METADATA,\n} from './constants';\n\nexport const filterBySearchTerm = (data = [], searchTerm = '', filterByKey = 'name') => {\n  if (!searchTerm?.length) return data;\n  return data.filter((item) => item[filterByKey].toLowerCase().includes(searchTerm.toLowerCase()));\n};\n\nexport const toYmd = (date) => dateFormat(date, dateFormats.isoDate);\n\n/**\n * Takes a url and extracts query parameters used for the shared\n * filter bar\n *\n * @param {string} url The URL to extract query parameters from\n * @returns {Object}\n */\nexport const extractFilterQueryParameters = (url = '') => {\n  const {\n    source_branch_name: selectedSourceBranch = null,\n    target_branch_name: selectedTargetBranch = null,\n    author_username: selectedAuthor = null,\n    milestone_title: selectedMilestone = null,\n    assignee_username: selectedAssigneeList = [],\n    label_name: selectedLabelList = [],\n  } = urlQueryToFilter(url);\n\n  return {\n    selectedSourceBranch,\n    selectedTargetBranch,\n    selectedAuthor,\n    selectedMilestone,\n    selectedAssigneeList,\n    selectedLabelList,\n  };\n};\n\n/**\n * Takes a url and extracts sorting and pagination query parameters into an object\n *\n * @param {string} url The URL to extract query parameters from\n * @returns {Object}\n */\nexport const extractPaginationQueryParameters = (url = '') => {\n  const { sort, direction, page } = urlQueryToFilter(url);\n  return {\n    sort: sort?.value || null,\n    direction: direction?.value || null,\n    page: page?.value || null,\n  };\n};\n\nexport const getDataZoomOption = ({\n  totalItems = 0,\n  maxItemsPerPage = 40,\n  dataZoom = [{ type: 'slider', bottom: 10, start: 0 }],\n}) => {\n  if (totalItems <= maxItemsPerPage) {\n    return {};\n  }\n\n  const intervalEnd = Math.ceil((maxItemsPerPage / totalItems) * 100);\n\n  return dataZoom.map((item) => {\n    return {\n      ...item,\n      end: intervalEnd,\n    };\n  });\n};\n\nexport const removeFlash = (type = 'alert') => {\n  // flash-warning don't have dismiss button.\n  document.querySelector(`.flash-${type} .js-close`)?.click();\n};\n\n/**\n * Prepares metric data to be rendered in the metric_card component\n *\n * @param {MetricData[]} data - The metric data to be rendered\n * @param {Object} popoverContent - Key value pair of data to display in the popover\n * @returns {TransformedMetricData[]} An array of metrics ready to render in the metric_card\n */\nexport const prepareTimeMetricsData = (data = [], popoverContent = {}) =>\n  data.map(({ title: label, identifier, ...rest }) => {\n    const metricIdentifier = identifier || slugify(label);\n    return {\n      ...rest,\n      label,\n      identifier: metricIdentifier,\n      description: popoverContent[metricIdentifier]?.description || '',\n    };\n  });\n\nconst requestData = ({ request, endpoint, requestPath, params, name }) => {\n  return request({ endpoint, params, requestPath })\n    .then(({ data }) => data)\n    .catch(() => {\n      throw new Error(name);\n    });\n};\n\n/**\n * Takes a configuration array of metrics requests (key metrics and DORA) and returns\n * a flat array of all the responses. Different metrics are retrieved from different endpoints\n * additionally we only support certain metrics for FOSS users.\n *\n * @param {Array} requests - array of metric api requests to be made\n * @param {String} requestPath - path for the group / project we are requesting\n * @param {Object} params - optional parameters to filter, including `created_after` and `created_before` dates\n * @returns a flat array of metrics\n */\nexport const fetchMetricsData = (requests = [], requestPath, params) => {\n  const promises = requests.map((r) => requestData({ ...r, requestPath, params }));\n  return Promise.all(promises).then((responses) =>\n    prepareTimeMetricsData(flatten(responses), VALUE_STREAM_METRIC_TILE_METADATA),\n  );\n};\n\n/**\n * Formats any valid number as percentage\n *\n * @param {number|string} decimalValue Decimal value between 0 and 1 to be converted to a percentage\n * @param {number} precision The number of decimal places to round to\n *\n * @returns {string} Returns a formatted string multiplied by 100\n */\nexport const formatAsPercentageWithoutSymbol = (decimalValue = 0, precision = 1) => {\n  const parsed = Number.isNaN(Number(decimalValue)) ? 0 : decimalValue;\n  return (parsed * 100).toFixed(precision);\n};\n\n/**\n * Converts a time in seconds to number of days, with variable precision\n *\n * @param {Number} seconds Time in seconds\n * @param {Number} precision Specifies the number of digits after the decimal\n *\n * @returns {Float} The number of days\n */\nexport const secondsToDays = (seconds, precision = 1) =>\n  (seconds / SECONDS_IN_DAY).toFixed(precision);\n\nexport const scaledValueForDisplay = (value, units, precision = MAX_METRIC_PRECISION) => {\n  switch (units) {\n    case UNITS.PERCENT:\n      return formatAsPercentageWithoutSymbol(value);\n    case UNITS.DAYS:\n      return secondsToDays(value, precision);\n    default:\n      return value;\n  }\n};\n\nconst prepareMetricValue = ({ identifier, value, unit }) => {\n  // NOTE: the flow metrics graphql endpoint returns values already scaled for display\n  if (!value) {\n    // ensures we return `-` for 0/null etc\n    return '-';\n  }\n  return Object.values(FLOW_METRICS).includes(identifier)\n    ? value\n    : scaledValueForDisplay(value, unit);\n};\n\n/**\n * Prepares metric data to be rendered in the metric_tile component\n *\n * @param {MetricData[]} data - The metric data to be rendered\n * @returns {TransformedMetricData[]} An array of metrics ready to render in the metric_tile\n */\nexport const rawMetricToMetricTile = (metric) => {\n  const { identifier, value, ...metricRest } = metric;\n  const { unit, label, ...metadataRest } = VALUE_STREAM_METRIC_TILE_METADATA[identifier];\n  return {\n    ...metadataRest,\n    ...metricRest,\n    title: label,\n    identifier,\n    label,\n    unit: VALUE_STREAM_METRIC_DISPLAY_UNITS[unit],\n    value: prepareMetricValue({ value, unit, identifier }),\n  };\n};\n\n/**\n * Generates a URL link to the VSD dashboard based on the\n * namespace path passed into the method.\n *\n * @param {String} namespacePath - Path of the specified namespace\n * @param {Boolean} isProjectNamespace\n * @returns a URL or blank string if there is no namespacePath set\n */\nexport const generateValueStreamsDashboardLink = (\n  namespacePath = null,\n  isProjectNamespace = false,\n) => {\n  if (!namespacePath) return '';\n\n  const dashboardsSlug = '/-/analytics/dashboards/value_streams_dashboard';\n  const formattedNamespacePath = isProjectNamespace ? namespacePath : `groups/${namespacePath}`;\n  const segments = [gon.relative_url_root || '', '/', formattedNamespacePath, dashboardsSlug];\n\n  return joinPaths(...segments);\n};\n\n/**\n * Extracts the relevant feature and license flags needed for VSA\n *\n * @param {Object} gon the global `window.gon` object populated when the page loads\n * @returns an object containing the extracted feature flags and their boolean status\n */\nexport const extractVSAFeaturesFromGON = () => ({\n  // licensed feature toggles\n  cycleAnalyticsForGroups: Boolean(gon?.licensed_features?.cycleAnalyticsForGroups),\n  cycleAnalyticsForProjects: Boolean(gon?.licensed_features?.cycleAnalyticsForProjects),\n  groupLevelAnalyticsDashboard: Boolean(gon?.licensed_features?.groupLevelAnalyticsDashboard),\n});\n\n/**\n * Takes a raw GraphQL response which could contain data for a group or project namespace,\n * and returns the data for the namespace which is present in the response.\n *\n * @param {Object} params\n * @param {string} params.resultKey - The data to be extracted from the namespace.\n * @param {Object} params.result\n * @param {Object} params.result.data\n * @param {Object} params.result.data.group - The group GraphQL response.\n * @param {Object} params.result.data.project - The project GraphQL response.\n * @returns {Object} The data extracted from either group[resultKey] or project[resultKey].\n */\nexport const extractQueryResponseFromNamespace = ({ result, resultKey }) => {\n  const { group = null, project = null } = result.data;\n  if (group || project) {\n    const namespace = group ?? project;\n    return namespace[resultKey] || {};\n  }\n  return {};\n};\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n    CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n  return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","var baseIsRegExp = require('./_baseIsRegExp'),\n    baseUnary = require('./_baseUnary'),\n    nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n","import GlLink from '../link/link';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'AvatarLink',\n  components: {\n    GlLink\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-link',_vm._g(_vm._b({staticClass:\"gl-avatar-link\"},'gl-link',_vm.$attrs,false),_vm.$listeners),[_vm._t(\"default\")],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { extend } from '../../vue';\nimport { NAME_TR } from '../../constants/components';\nimport { PROP_TYPE_STRING } from '../../constants/props';\nimport { makePropsConfigurable, makeProp } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { listenersMixin } from '../../mixins/listeners';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\n\n// --- Constants ---\n\nconst LIGHT = 'light';\nconst DARK = 'dark';\n\n// --- Props ---\n\nconst props = makePropsConfigurable({\n  variant: makeProp(PROP_TYPE_STRING)\n}, NAME_TR);\n\n// --- Main component ---\n\n// TODO:\n//   In Bootstrap v5, we won't need \"sniffing\" as table element variants properly inherit\n//   to the child elements, so this can be converted to a functional component\n// @vue/component\nconst BTr = /*#__PURE__*/extend({\n  name: NAME_TR,\n  mixins: [attrsMixin, listenersMixin, normalizeSlotMixin],\n  provide() {\n    return {\n      getBvTableTr: () => this\n    };\n  },\n  inject: {\n    getBvTableRowGroup: {\n      default: /* istanbul ignore next */() => () => ({})\n    }\n  },\n  inheritAttrs: false,\n  props,\n  computed: {\n    bvTableRowGroup() {\n      return this.getBvTableRowGroup();\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inTbody() {\n      return this.bvTableRowGroup.isTbody;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inThead() {\n      return this.bvTableRowGroup.isThead;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    inTfoot() {\n      return this.bvTableRowGroup.isTfoot;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isDark() {\n      return this.bvTableRowGroup.isDark;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isStacked() {\n      return this.bvTableRowGroup.isStacked;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    isResponsive() {\n      return this.bvTableRowGroup.isResponsive;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    // Sticky headers are only supported in thead\n    isStickyHeader() {\n      return this.bvTableRowGroup.isStickyHeader;\n    },\n    // Sniffed by <b-tr> / `<b-td>` / `<b-th>`\n    // Needed to handle header background classes, due to lack of\n    // background color inheritance with Bootstrap v4 table CSS\n    hasStickyHeader() {\n      return !this.isStacked && this.bvTableRowGroup.hasStickyHeader;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    tableVariant() {\n      return this.bvTableRowGroup.tableVariant;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    headVariant() {\n      return this.inThead ? this.bvTableRowGroup.headVariant : null;\n    },\n    // Sniffed by `<b-td>` / `<b-th>`\n    footVariant() {\n      return this.inTfoot ? this.bvTableRowGroup.footVariant : null;\n    },\n    isRowDark() {\n      return this.headVariant === LIGHT || this.footVariant === LIGHT ? /* istanbul ignore next */false : this.headVariant === DARK || this.footVariant === DARK ? /* istanbul ignore next */true : this.isDark;\n    },\n    trClasses() {\n      const {\n        variant\n      } = this;\n      return [variant ? `${this.isRowDark ? 'bg' : 'table'}-${variant}` : null];\n    },\n    trAttrs() {\n      return {\n        role: 'row',\n        ...this.bvAttrs\n      };\n    }\n  },\n  render(h) {\n    return h('tr', {\n      class: this.trClasses,\n      attrs: this.trAttrs,\n      // Pass native listeners to child\n      on: this.bvListeners\n    }, this.normalizeSlot());\n  }\n});\n\nexport { BTr, props };\n","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n","var copyObject = require('./_copyObject'),\n    getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n  return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('base-token',_vm._g(_vm._b({attrs:{\"active\":_vm.active,\"config\":_vm.config,\"value\":_vm.value,\"default-suggestions\":_vm.defaultMilestones,\"suggestions\":_vm.milestones,\"suggestions-loading\":_vm.loading,\"get-active-token-value\":_vm.getActiveMilestone,\"value-identifier\":_vm.getMilestoneTitle},on:{\"fetch-suggestions\":_vm.fetchMilestones},scopedSlots:_vm._u([{key:\"view\",fn:function({ viewTokenProps: { inputValue, activeTokenValue } }){return [_vm._v(\"\\n    %\"+_vm._s(activeTokenValue ? _vm.getMilestoneTitle(activeTokenValue) : inputValue)+\"\\n  \")]}},{key:\"suggestions-list\",fn:function({ suggestions }){return _vm._l((suggestions),function(milestone){return _c('gl-filtered-search-suggestion',{key:milestone.id,attrs:{\"value\":_vm.getMilestoneTitle(milestone)}},[_vm._v(\"\\n      \"+_vm._s(_vm.getMilestoneTitle(milestone))+\"\\n    \")])})}}])},'base-token',_vm.$attrs,false),_vm.$listeners))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./milestone_token.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../../node_modules/thread-loader/dist/cjs.js??ref--13-0!../../../../../../../node_modules/babel-loader/lib/index.js??ref--13-1!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./milestone_token.vue?vue&type=script&lang=js\"","<script>\nimport { GlFilteredSearchSuggestion } from '@gitlab/ui';\nimport { createAlert } from '~/alert';\nimport { __ } from '~/locale';\nimport { WORKSPACE_GROUP, WORKSPACE_PROJECT } from '~/issues/constants';\nimport searchMilestonesQuery from '~/issues/list/queries/search_milestones.query.graphql';\nimport { sortMilestonesByDueDate } from '~/milestones/utils';\nimport BaseToken from '~/vue_shared/components/filtered_search_bar/tokens/base_token.vue';\nimport { stripQuotes } from '~/lib/utils/text_utility';\nimport { DEFAULT_MILESTONES } from '../constants';\n\nexport default {\n  components: {\n    BaseToken,\n    GlFilteredSearchSuggestion,\n  },\n  props: {\n    active: {\n      type: Boolean,\n      required: true,\n    },\n    config: {\n      type: Object,\n      required: true,\n    },\n    value: {\n      type: Object,\n      required: true,\n    },\n  },\n  data() {\n    return {\n      milestones: this.config.initialMilestones || [],\n      loading: false,\n    };\n  },\n  computed: {\n    defaultMilestones() {\n      return this.config.defaultMilestones || DEFAULT_MILESTONES;\n    },\n    namespace() {\n      return this.config.isProject ? WORKSPACE_PROJECT : WORKSPACE_GROUP;\n    },\n    fetchMilestonesQuery() {\n      return this.config.fetchMilestones\n        ? this.config.fetchMilestones\n        : this.fetchMilestonesBySearchTerm;\n    },\n  },\n  methods: {\n    getActiveMilestone(milestones, data) {\n      /* We need to check default milestones against the value not the\n       * title because there is a discrepancy between the value graphql\n       * accepts and the title.\n       * https://gitlab.com/gitlab-org/gitlab/-/issues/337687#note_648058797\n       */\n\n      return (\n        milestones.find(\n          (milestone) =>\n            this.getMilestoneTitle(milestone).toLowerCase() === stripQuotes(data).toLowerCase(),\n        ) || this.defaultMilestones.find(({ value }) => value === data)\n      );\n    },\n    getMilestoneTitle(milestone) {\n      return milestone.title;\n    },\n    fetchMilestonesBySearchTerm(search) {\n      return this.$apollo\n        .query({\n          query: searchMilestonesQuery,\n          variables: { fullPath: this.config.fullPath, search, isProject: this.config.isProject },\n        })\n        .then(({ data }) => data[this.namespace]?.milestones.nodes);\n    },\n    fetchMilestones(searchTerm) {\n      this.loading = true;\n      this.fetchMilestonesQuery(searchTerm)\n        .then((response) => {\n          const data = Array.isArray(response) ? response : response.data;\n\n          const uniqueData = data.reduce((acc, current) => {\n            const existingItem = acc.find((item) => item.title === current.title);\n\n            if (!existingItem) {\n              acc.push(current);\n            }\n\n            return acc;\n          }, []);\n\n          if (this.config.shouldSkipSort) {\n            this.milestones = uniqueData;\n          } else {\n            this.milestones = uniqueData.slice().sort(sortMilestonesByDueDate);\n          }\n        })\n        .catch(() => {\n          createAlert({ message: __('There was a problem fetching milestones.') });\n        })\n        .finally(() => {\n          this.loading = false;\n        });\n    },\n  },\n};\n</script>\n\n<template>\n  <base-token\n    :active=\"active\"\n    :config=\"config\"\n    :value=\"value\"\n    :default-suggestions=\"defaultMilestones\"\n    :suggestions=\"milestones\"\n    :suggestions-loading=\"loading\"\n    :get-active-token-value=\"getActiveMilestone\"\n    :value-identifier=\"getMilestoneTitle\"\n    v-bind=\"$attrs\"\n    @fetch-suggestions=\"fetchMilestones\"\n    v-on=\"$listeners\"\n  >\n    <template #view=\"{ viewTokenProps: { inputValue, activeTokenValue } }\">\n      %{{ activeTokenValue ? getMilestoneTitle(activeTokenValue) : inputValue }}\n    </template>\n    <template #suggestions-list=\"{ suggestions }\">\n      <gl-filtered-search-suggestion\n        v-for=\"milestone in suggestions\"\n        :key=\"milestone.id\"\n        :value=\"getMilestoneTitle(milestone)\"\n      >\n        {{ getMilestoneTitle(milestone) }}\n      </gl-filtered-search-suggestion>\n    </template>\n  </base-token>\n</template>\n","import { render, staticRenderFns } from \"./milestone_token.vue?vue&type=template&id=7f709866\"\nimport script from \"./milestone_token.vue?vue&type=script&lang=js\"\nexport * from \"./milestone_token.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n  script,\n  render,\n  staticRenderFns,\n  false,\n  null,\n  null,\n  null\n  \n)\n\nexport default component.exports","\n /*! \n  * portal-vue © Thorsten Lünborg, 2019 \n  * \n  * Version: 2.1.7\n  * \n  * LICENCE: MIT \n  * \n  * https://github.com/linusborg/portal-vue\n  * \n */\n\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Vue = _interopDefault(require('vue'));\n\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _toConsumableArray(arr) {\n  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n}\n\nfunction _iterableToArray(iter) {\n  if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n  throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar inBrowser = typeof window !== 'undefined';\nfunction freeze(item) {\n  if (Array.isArray(item) || _typeof(item) === 'object') {\n    return Object.freeze(item);\n  }\n\n  return item;\n}\nfunction combinePassengers(transports) {\n  var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return transports.reduce(function (passengers, transport) {\n    var temp = transport.passengers[0];\n    var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n    return passengers.concat(newPassengers);\n  }, []);\n}\nfunction stableSort(array, compareFn) {\n  return array.map(function (v, idx) {\n    return [idx, v];\n  }).sort(function (a, b) {\n    return compareFn(a[1], b[1]) || a[0] - b[0];\n  }).map(function (c) {\n    return c[1];\n  });\n}\nfunction pick(obj, keys) {\n  return keys.reduce(function (acc, key) {\n    if (obj.hasOwnProperty(key)) {\n      acc[key] = obj[key];\n    }\n\n    return acc;\n  }, {});\n}\n\nvar transports = {};\nvar targets = {};\nvar sources = {};\nvar Wormhole = Vue.extend({\n  data: function data() {\n    return {\n      transports: transports,\n      targets: targets,\n      sources: sources,\n      trackInstances: inBrowser\n    };\n  },\n  methods: {\n    open: function open(transport) {\n      if (!inBrowser) return;\n      var to = transport.to,\n          from = transport.from,\n          passengers = transport.passengers,\n          _transport$order = transport.order,\n          order = _transport$order === void 0 ? Infinity : _transport$order;\n      if (!to || !from || !passengers) return;\n      var newTransport = {\n        to: to,\n        from: from,\n        passengers: freeze(passengers),\n        order: order\n      };\n      var keys = Object.keys(this.transports);\n\n      if (keys.indexOf(to) === -1) {\n        Vue.set(this.transports, to, []);\n      }\n\n      var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n\n      var newTransports = this.transports[to].slice(0);\n\n      if (currentIndex === -1) {\n        newTransports.push(newTransport);\n      } else {\n        newTransports[currentIndex] = newTransport;\n      }\n\n      this.transports[to] = stableSort(newTransports, function (a, b) {\n        return a.order - b.order;\n      });\n    },\n    close: function close(transport) {\n      var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var to = transport.to,\n          from = transport.from;\n      if (!to || !from && force === false) return;\n\n      if (!this.transports[to]) {\n        return;\n      }\n\n      if (force) {\n        this.transports[to] = [];\n      } else {\n        var index = this.$_getTransportIndex(transport);\n\n        if (index >= 0) {\n          // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n          var newTransports = this.transports[to].slice(0);\n          newTransports.splice(index, 1);\n          this.transports[to] = newTransports;\n        }\n      }\n    },\n    registerTarget: function registerTarget(target, vm, force) {\n      if (!inBrowser) return;\n\n      if (this.trackInstances && !force && this.targets[target]) {\n        console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n      }\n\n      this.$set(this.targets, target, Object.freeze([vm]));\n    },\n    unregisterTarget: function unregisterTarget(target) {\n      this.$delete(this.targets, target);\n    },\n    registerSource: function registerSource(source, vm, force) {\n      if (!inBrowser) return;\n\n      if (this.trackInstances && !force && this.sources[source]) {\n        console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n      }\n\n      this.$set(this.sources, source, Object.freeze([vm]));\n    },\n    unregisterSource: function unregisterSource(source) {\n      this.$delete(this.sources, source);\n    },\n    hasTarget: function hasTarget(to) {\n      return !!(this.targets[to] && this.targets[to][0]);\n    },\n    hasSource: function hasSource(to) {\n      return !!(this.sources[to] && this.sources[to][0]);\n    },\n    hasContentFor: function hasContentFor(to) {\n      return !!this.transports[to] && !!this.transports[to].length;\n    },\n    // Internal\n    $_getTransportIndex: function $_getTransportIndex(_ref) {\n      var to = _ref.to,\n          from = _ref.from;\n\n      for (var i in this.transports[to]) {\n        if (this.transports[to][i].from === from) {\n          return +i;\n        }\n      }\n\n      return -1;\n    }\n  }\n});\nvar wormhole = new Wormhole(transports);\n\nvar _id = 1;\nvar Portal = Vue.extend({\n  name: 'portal',\n  props: {\n    disabled: {\n      type: Boolean\n    },\n    name: {\n      type: String,\n      default: function _default() {\n        return String(_id++);\n      }\n    },\n    order: {\n      type: Number,\n      default: 0\n    },\n    slim: {\n      type: Boolean\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'DIV'\n    },\n    to: {\n      type: String,\n      default: function _default() {\n        return String(Math.round(Math.random() * 10000000));\n      }\n    }\n  },\n  created: function created() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      wormhole.registerSource(_this.name, _this);\n    });\n  },\n  mounted: function mounted() {\n    if (!this.disabled) {\n      this.sendUpdate();\n    }\n  },\n  updated: function updated() {\n    if (this.disabled) {\n      this.clear();\n    } else {\n      this.sendUpdate();\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    wormhole.unregisterSource(this.name);\n    this.clear();\n  },\n  watch: {\n    to: function to(newValue, oldValue) {\n      oldValue && oldValue !== newValue && this.clear(oldValue);\n      this.sendUpdate();\n    }\n  },\n  methods: {\n    clear: function clear(target) {\n      var closer = {\n        from: this.name,\n        to: target || this.to\n      };\n      wormhole.close(closer);\n    },\n    normalizeSlots: function normalizeSlots() {\n      return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n    },\n    normalizeOwnChildren: function normalizeOwnChildren(children) {\n      return typeof children === 'function' ? children(this.slotProps) : children;\n    },\n    sendUpdate: function sendUpdate() {\n      var slotContent = this.normalizeSlots();\n\n      if (slotContent) {\n        var transport = {\n          from: this.name,\n          to: this.to,\n          passengers: _toConsumableArray(slotContent),\n          order: this.order\n        };\n        wormhole.open(transport);\n      } else {\n        this.clear();\n      }\n    }\n  },\n  render: function render(h) {\n    var children = this.$slots.default || this.$scopedSlots.default || [];\n    var Tag = this.tag;\n\n    if (children && this.disabled) {\n      return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n    } else {\n      return this.slim ? h() : h(Tag, {\n        class: {\n          'v-portal': true\n        },\n        style: {\n          display: 'none'\n        },\n        key: 'v-portal-placeholder'\n      });\n    }\n  }\n});\n\nvar PortalTarget = Vue.extend({\n  name: 'portalTarget',\n  props: {\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    name: {\n      type: String,\n      required: true\n    },\n    slim: {\n      type: Boolean,\n      default: false\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'div'\n    },\n    transition: {\n      type: [String, Object, Function]\n    }\n  },\n  data: function data() {\n    return {\n      transports: wormhole.transports,\n      firstRender: true\n    };\n  },\n  created: function created() {\n    var _this = this;\n\n    this.$nextTick(function () {\n      wormhole.registerTarget(_this.name, _this);\n    });\n  },\n  watch: {\n    ownTransports: function ownTransports() {\n      this.$emit('change', this.children().length > 0);\n    },\n    name: function name(newVal, oldVal) {\n      /**\r\n       * TODO\r\n       * This should warn as well ...\r\n       */\n      wormhole.unregisterTarget(oldVal);\n      wormhole.registerTarget(newVal, this);\n    }\n  },\n  mounted: function mounted() {\n    var _this2 = this;\n\n    if (this.transition) {\n      this.$nextTick(function () {\n        // only when we have a transition, because it causes a re-render\n        _this2.firstRender = false;\n      });\n    }\n  },\n  beforeDestroy: function beforeDestroy() {\n    wormhole.unregisterTarget(this.name);\n  },\n  computed: {\n    ownTransports: function ownTransports() {\n      var transports = this.transports[this.name] || [];\n\n      if (this.multiple) {\n        return transports;\n      }\n\n      return transports.length === 0 ? [] : [transports[transports.length - 1]];\n    },\n    passengers: function passengers() {\n      return combinePassengers(this.ownTransports, this.slotProps);\n    }\n  },\n  methods: {\n    // can't be a computed prop because it has to \"react\" to $slot changes.\n    children: function children() {\n      return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n    },\n    // can't be a computed prop because it has to \"react\" to this.children().\n    noWrapper: function noWrapper() {\n      var noWrapper = this.slim && !this.transition;\n\n      if (noWrapper && this.children().length > 1) {\n        console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n      }\n\n      return noWrapper;\n    }\n  },\n  render: function render(h) {\n    var noWrapper = this.noWrapper();\n    var children = this.children();\n    var Tag = this.transition || this.tag;\n    return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n      props: {\n        // if we have a transition component, pass the tag if it exists\n        tag: this.transition && this.tag ? this.tag : undefined\n      },\n      class: {\n        'vue-portal-target': true\n      }\n    }, children);\n  }\n});\n\nvar _id$1 = 0;\nvar portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\nvar targetProps = ['multiple', 'transition'];\nvar MountingPortal = Vue.extend({\n  name: 'MountingPortal',\n  inheritAttrs: false,\n  props: {\n    append: {\n      type: [Boolean, String]\n    },\n    bail: {\n      type: Boolean\n    },\n    mountTo: {\n      type: String,\n      required: true\n    },\n    // Portal\n    disabled: {\n      type: Boolean\n    },\n    // name for the portal\n    name: {\n      type: String,\n      default: function _default() {\n        return 'mounted_' + String(_id$1++);\n      }\n    },\n    order: {\n      type: Number,\n      default: 0\n    },\n    slim: {\n      type: Boolean\n    },\n    slotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    tag: {\n      type: String,\n      default: 'DIV'\n    },\n    // name for the target\n    to: {\n      type: String,\n      default: function _default() {\n        return String(Math.round(Math.random() * 10000000));\n      }\n    },\n    // Target\n    multiple: {\n      type: Boolean,\n      default: false\n    },\n    targetSlim: {\n      type: Boolean\n    },\n    targetSlotProps: {\n      type: Object,\n      default: function _default() {\n        return {};\n      }\n    },\n    targetTag: {\n      type: String,\n      default: 'div'\n    },\n    transition: {\n      type: [String, Object, Function]\n    }\n  },\n  created: function created() {\n    if (typeof document === 'undefined') return;\n    var el = document.querySelector(this.mountTo);\n\n    if (!el) {\n      console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n      return;\n    }\n\n    var props = this.$props; // Target already exists\n\n    if (wormhole.targets[props.name]) {\n      if (props.bail) {\n        console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n        Aborting because 'bail: true' is set\"));\n      } else {\n        this.portalTarget = wormhole.targets[props.name];\n      }\n\n      return;\n    }\n\n    var append = props.append;\n\n    if (append) {\n      var type = typeof append === 'string' ? append : 'DIV';\n      var mountEl = document.createElement(type);\n      el.appendChild(mountEl);\n      el = mountEl;\n    } // get props for target from $props\n    // we have to rename a few of them\n\n\n    var _props = pick(this.$props, targetProps);\n\n    _props.slim = this.targetSlim;\n    _props.tag = this.targetTag;\n    _props.slotProps = this.targetSlotProps;\n    _props.name = this.to;\n    this.portalTarget = new PortalTarget({\n      el: el,\n      parent: this.$parent || this,\n      propsData: _props\n    });\n  },\n  beforeDestroy: function beforeDestroy() {\n    var target = this.portalTarget;\n\n    if (this.append) {\n      var el = target.$el;\n      el.parentNode.removeChild(el);\n    }\n\n    target.$destroy();\n  },\n  render: function render(h) {\n    if (!this.portalTarget) {\n      console.warn(\"[portal-vue] Target wasn't mounted\");\n      return h();\n    } // if there's no \"manual\" scoped slot, so we create a <Portal> ourselves\n\n\n    if (!this.$scopedSlots.manual) {\n      var props = pick(this.$props, portalProps);\n      return h(Portal, {\n        props: props,\n        attrs: this.$attrs,\n        on: this.$listeners,\n        scopedSlots: this.$scopedSlots\n      }, this.$slots.default);\n    } // else, we render the scoped slot\n\n\n    var content = this.$scopedSlots.manual({\n      to: this.to\n    }); // if user used <template> for the scoped slot\n    // content will be an array\n\n    if (Array.isArray(content)) {\n      content = content[0];\n    }\n\n    if (!content) return h();\n    return content;\n  }\n});\n\nfunction install(Vue$$1) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  Vue$$1.component(options.portalName || 'Portal', Portal);\n  Vue$$1.component(options.portalTargetName || 'PortalTarget', PortalTarget);\n  Vue$$1.component(options.MountingPortalName || 'MountingPortal', MountingPortal);\n}\n\nvar index = {\n  install: install\n};\n\nexports.default = index;\nexports.Portal = Portal;\nexports.PortalTarget = PortalTarget;\nexports.MountingPortal = MountingPortal;\nexports.Wormhole = wormhole;\n//# sourceMappingURL=portal-vue.common.js.map\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n  var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n  return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","var baseGetTag = require('./_baseGetTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]';\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n  return isObjectLike(value) && baseGetTag(value) == regexpTag;\n}\n\nmodule.exports = baseIsRegExp;\n","import debounce from 'lodash/debounce';\nimport isFunction from 'lodash/isFunction';\nimport range from 'lodash/range';\nimport { breakpoints, GlBreakpointInstance } from '../../../utils/breakpoints';\nimport { alignOptions, resizeDebounceTime } from '../../../utils/constants';\nimport { translate, sprintf } from '../../../utils/i18n';\nimport GlIcon from '../icon/icon';\nimport GlLink from '../link/link';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\n//\nconst pageRange = (from, to) => range(from, to + 1, 1);\nvar script = {\n  name: 'Pagination',\n  components: {\n    GlLink,\n    GlIcon\n  },\n  model: {\n    prop: 'value',\n    event: 'input'\n  },\n  props: {\n    value: {\n      type: Number,\n      required: false,\n      default: 1,\n      validator: x => x > 0\n    },\n    /**\n     * Number of items per page\n     */\n    perPage: {\n      type: Number,\n      required: false,\n      default: 20,\n      validator: x => x > 0\n    },\n    /**\n     * Total number of items\n     */\n    totalItems: {\n      type: Number,\n      required: false,\n      default: 0\n    },\n    /**\n     * The object must contain the xs, sm, md and default keys\n     */\n    limits: {\n      type: Object,\n      required: false,\n      default: () => ({\n        xs: 0,\n        sm: 3,\n        md: 9,\n        default: 9\n      }),\n      validator: value => {\n        const missingSizes = Object.keys(breakpoints).filter(size => !value[size]).length;\n        return missingSizes === 0 ? true : value.default;\n      }\n    },\n    /**\n     * A function that receives the page number and that returns a string representing the page URL\n     */\n    linkGen: {\n      type: Function,\n      required: false,\n      default: null\n    },\n    /**\n     * When using the compact pagination, use this prop to pass the previous page number\n     */\n    prevPage: {\n      type: Number,\n      required: false,\n      default: null\n    },\n    /**\n     * Text for the previous button (overridden by \"previous\" slot)\n     */\n    prevText: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.prevText', 'Previous')\n    },\n    /**\n     * When using the compact pagination, use this prop to pass the next page number\n     */\n    nextPage: {\n      type: Number,\n      required: false,\n      default: null\n    },\n    /**\n     * Text for the next button (overridden by \"next\" slot)\n     */\n    nextText: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.nextText', 'Next')\n    },\n    /**\n     * Text for the ellipsis (overridden by \"ellipsis-left\" and \"ellipsis-right\" slots)\n     */\n    ellipsisText: {\n      type: String,\n      required: false,\n      default: '…'\n    },\n    /**\n     * aria-label for the nav\n     */\n    labelNav: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.nav', 'Pagination')\n    },\n    /**\n     * aria-label for the first page item\n     */\n    labelFirstPage: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.labelFirstPage', 'Go to first page')\n    },\n    /**\n     * aria-label for the previous page item\n     */\n    labelPrevPage: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.labelPrevPage', 'Go to previous page')\n    },\n    /**\n     * aria-label for the next page item\n     */\n    labelNextPage: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.labelNextPage', 'Go to next page')\n    },\n    /**\n     * aria-label for the last page item\n     */\n    labelLastPage: {\n      type: String,\n      required: false,\n      default: translate('GlPagination.labelLastPage', 'Go to last page')\n    },\n    /**\n     * aria-label getter for numbered page items, defaults to \"Go to page <page_number>\"\n     */\n    labelPage: {\n      // note: `Function` support is for legacy reasons\n      type: [Function, String],\n      required: false,\n      default: translate('GlPagination.labelPage', 'Go to page %{page}')\n    },\n    /**\n     * Controls the component\\'s horizontal alignment, value should be one of \"left\", \"center\", \"right\" or \"fill\"\n     */\n    align: {\n      type: String,\n      required: false,\n      default: alignOptions.left,\n      validator: value => Object.keys(alignOptions).includes(value)\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  data() {\n    return {\n      breakpoint: GlBreakpointInstance.getBreakpointSize(),\n      // If total pages count is below or equal to minTotalPagesToCollapse, collapsing is disabled\n      minTotalPagesToCollapse: 4\n    };\n  },\n  computed: {\n    isVisible() {\n      return this.totalPages > 1 || this.isCompactPagination;\n    },\n    isLinkBased() {\n      return isFunction(this.linkGen);\n    },\n    paginationLimit() {\n      return typeof this.limits[this.breakpoint] !== 'undefined' ? this.limits[this.breakpoint] : this.limits.default;\n    },\n    maxAdjacentPages() {\n      return Math.max(Math.ceil((this.paginationLimit - 1) / 2), 0);\n    },\n    totalPages() {\n      return Math.ceil(this.totalItems / this.perPage);\n    },\n    isFillAlign() {\n      return this.align === alignOptions.fill;\n    },\n    wrapperClasses() {\n      const classes = [];\n      if (this.align === alignOptions.center) {\n        classes.push('gl-justify-center');\n      }\n      if (this.align === alignOptions.right) {\n        classes.push('gl-justify-end');\n      }\n      if (this.isFillAlign) {\n        classes.push('gl-text-center');\n      }\n      return classes;\n    },\n    shouldCollapseLeftSide() {\n      const diff = this.value - this.maxAdjacentPages;\n\n      // Magic 3: prevents collapsing a single page on the left side\n      return diff >= this.maxAdjacentPages && diff > 3 && this.totalPages > this.minTotalPagesToCollapse;\n    },\n    shouldCollapseRightSide() {\n      // Magic 2: prevents collapsing a single page on the right side\n      const diff = this.totalPages - 2 - this.value;\n      return diff > this.maxAdjacentPages && this.totalPages > this.minTotalPagesToCollapse;\n    },\n    visibleItems() {\n      let items = [];\n      if (!this.isCompactPagination) {\n        let firstPage = this.shouldCollapseLeftSide ? this.value - this.maxAdjacentPages : 1;\n        // If we're on last page, show at least one page to the left\n        firstPage = Math.min(firstPage, this.totalPages - 1);\n        let lastPage = this.shouldCollapseRightSide ? this.value + this.maxAdjacentPages : this.totalPages;\n        // If we're on first page, show at least one page to the right\n        lastPage = Math.max(lastPage, 2);\n\n        // Default numbered items\n        items = pageRange(firstPage, lastPage).map(page => this.getPageItem(page));\n        if (this.shouldCollapseLeftSide) {\n          items.splice(0, 0, this.getPageItem(1, this.labelFirstPage), this.getEllipsisItem('left'));\n        }\n        if (this.shouldCollapseRightSide) {\n          items.push(this.getEllipsisItem('right'), this.getPageItem(this.totalPages, this.labelLastPage));\n        }\n      }\n      return items;\n    },\n    isCompactPagination() {\n      return Boolean(!this.totalItems && (this.prevPage || this.nextPage));\n    },\n    prevPageIsDisabled() {\n      return this.pageIsDisabled(this.value - 1);\n    },\n    nextPageIsDisabled() {\n      return this.pageIsDisabled(this.value + 1);\n    },\n    prevPageAriaLabel() {\n      return this.prevPageIsDisabled ? false : this.labelPrevPage || this.labelForPage(this.value - 1);\n    },\n    nextPageAriaLabel() {\n      return this.nextPageIsDisabled ? false : this.labelNextPage || this.labelForPage(this.value + 1);\n    },\n    prevPageHref() {\n      if (this.prevPageIsDisabled) return false;\n      if (this.isLinkBased) return this.linkGen(this.value - 1);\n      return '#';\n    },\n    nextPageHref() {\n      if (this.nextPageIsDisabled) return false;\n      if (this.isLinkBased) return this.linkGen(this.value + 1);\n      return '#';\n    }\n  },\n  created() {\n    window.addEventListener('resize', debounce(this.setBreakpoint, resizeDebounceTime));\n  },\n  beforeDestroy() {\n    window.removeEventListener('resize', debounce(this.setBreakpoint, resizeDebounceTime));\n  },\n  methods: {\n    labelForPage(page) {\n      if (isFunction(this.labelPage)) {\n        return this.labelPage(page);\n      }\n      return sprintf(this.labelPage, {\n        page\n      });\n    },\n    setBreakpoint() {\n      this.breakpoint = GlBreakpointInstance.getBreakpointSize();\n    },\n    pageIsDisabled(page) {\n      return this.disabled || page < 1 || this.isCompactPagination && page > this.value && !this.nextPage || !this.isCompactPagination && page > this.totalPages;\n    },\n    getPageItem(page) {\n      let label = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n      const commonAttrs = {\n        'aria-label': label || this.labelForPage(page),\n        href: '#',\n        class: []\n      };\n      const isActivePage = page === this.value;\n      const isDisabled = this.pageIsDisabled(page);\n      const attrs = {\n        ...commonAttrs\n      };\n      const listeners = {};\n      if (isActivePage) {\n        attrs.class.push('active');\n        attrs['aria-current'] = 'page';\n      }\n      // Disable previous and/or next buttons if needed\n      if (this.isLinkBased) {\n        attrs.href = this.linkGen(page);\n      }\n      listeners.click = e => this.handleClick(e, page);\n      return {\n        content: page,\n        component: isDisabled ? 'span' : GlLink,\n        disabled: isDisabled,\n        key: `page_${page}`,\n        slot: 'page-number',\n        slotData: {\n          page,\n          active: isActivePage,\n          disabled: isDisabled\n        },\n        attrs,\n        listeners\n      };\n    },\n    getEllipsisItem(side) {\n      return {\n        content: this.ellipsisText,\n        key: `ellipsis_${side}`,\n        slot: `ellipsis-${side}`,\n        component: 'span',\n        disabled: true,\n        slotData: {},\n        listeners: {}\n      };\n    },\n    handleClick(event, value) {\n      if (!this.isLinkBased) {\n        event.preventDefault();\n        /**\n         * Emitted when the page changes\n         * @event input\n         * @arg {number} value The page that just got loaded\n         */\n        this.$emit('input', value);\n      }\n    },\n    handlePrevious(event, value) {\n      this.handleClick(event, value);\n      /**\n       * Emitted when the \"previous\" button is clicked\n       * @event previous\n       */\n      this.$emit('previous');\n    },\n    handleNext(event, value) {\n      this.handleClick(event, value);\n      /**\n       * Emitted when the \"next\" button is clicked\n       * @event next\n       */\n      this.$emit('next');\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isVisible)?_c('nav',{staticClass:\"gl-pagination\",attrs:{\"aria-label\":_vm.labelNav}},[_c('ul',{class:_vm.wrapperClasses},[_c('li',{class:{\n        disabled: _vm.prevPageIsDisabled,\n        'gl-flex-auto': _vm.isFillAlign,\n      },attrs:{\"aria-disabled\":_vm.prevPageIsDisabled,\"aria-hidden\":_vm.prevPageIsDisabled,\"data-testid\":\"gl-pagination-li\"}},[_c(_vm.prevPageIsDisabled ? 'span' : 'a',{tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-prev\",\"aria-label\":_vm.prevPageAriaLabel,\"href\":_vm.prevPageHref},on:{\"click\":function($event){!_vm.prevPageIsDisabled ? _vm.handlePrevious($event, _vm.value - 1) : null;}}},[_vm._t(\"previous\",function(){return [_c('gl-icon',{attrs:{\"name\":\"chevron-left\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-hidden sm:gl-block\"},[_vm._v(_vm._s(_vm.prevText))])]},null,{ page: _vm.value - 1, disabled: _vm.prevPageIsDisabled })],2)],1),_vm._v(\" \"),_vm._l((_vm.visibleItems),function(item){return _c('li',{key:item.key,class:{\n        disabled: item.disabled,\n        'gl-flex-auto': _vm.isFillAlign,\n      },attrs:{\"data-testid\":\"gl-pagination-li\"}},[_c(item.component,_vm._g(_vm._b({tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-item\",\"size\":\"md\",\"aria-disabled\":item.disabled}},'component',item.attrs,false),item.listeners),[_vm._t(item.slot,function(){return [_vm._v(_vm._s(item.content))]},null,item.slotData)],2)],1)}),_vm._v(\" \"),_c('li',{class:{\n        disabled: _vm.nextPageIsDisabled,\n        'gl-flex-auto': _vm.isFillAlign,\n      },attrs:{\"aria-disabled\":_vm.nextPageIsDisabled,\"aria-hidden\":_vm.nextPageIsDisabled,\"data-testid\":\"gl-pagination-li\"}},[_c(_vm.nextPageIsDisabled ? 'span' : 'a',{tag:\"component\",staticClass:\"gl-pagination-item\",attrs:{\"data-testid\":\"gl-pagination-next\",\"aria-label\":_vm.nextPageAriaLabel,\"href\":_vm.nextPageHref},on:{\"click\":function($event){!_vm.nextPageIsDisabled ? _vm.handleNext($event, _vm.value + 1) : null;}}},[_vm._t(\"next\",function(){return [_c('span',{staticClass:\"gl-hidden sm:gl-block\"},[_vm._v(_vm._s(_vm.nextText))]),_vm._v(\" \"),_c('gl-icon',{attrs:{\"name\":\"chevron-right\"}})]},null,{ page: _vm.value + 1, disabled: _vm.nextPageIsDisabled })],2)],1)],2)]):_vm._e()};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import uniqueId from 'lodash/uniqueId';\nimport { offset, autoPlacement, shift, size, autoUpdate, computePosition } from '@floating-ui/dom';\nimport { buttonCategoryOptions, dropdownVariantOptions, buttonSizeOptions, dropdownPlacements, dropdownAllowedAutoPlacements } from '../../../../utils/constants';\nimport { POSITION_ABSOLUTE, POSITION_FIXED, GL_DROPDOWN_CONTENTS_CLASS, GL_DROPDOWN_BEFORE_CLOSE, GL_DROPDOWN_SHOWN, GL_DROPDOWN_HIDDEN, ENTER, SPACE, ARROW_DOWN, GL_DROPDOWN_FOCUS_CONTENT } from '../constants';\nimport { logWarning, isElementFocusable, isElementTabbable } from '../../../../utils/utils';\nimport { OutsideDirective } from '../../../../directives/outside/outside';\nimport GlButton from '../../button/button';\nimport GlIcon from '../../icon/icon';\nimport { DEFAULT_OFFSET, FIXED_WIDTH_CLASS } from './constants';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst BASE_DROPDOWN_CLASS = 'gl-new-dropdown';\nvar script = {\n  name: 'BaseDropdown',\n  BASE_DROPDOWN_CLASS,\n  components: {\n    GlButton,\n    GlIcon\n  },\n  directives: {\n    Outside: OutsideDirective\n  },\n  props: {\n    toggleText: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    textSrOnly: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    block: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    category: {\n      type: String,\n      required: false,\n      default: buttonCategoryOptions.primary,\n      validator: value => Object.keys(buttonCategoryOptions).includes(value)\n    },\n    variant: {\n      type: String,\n      required: false,\n      default: dropdownVariantOptions.default,\n      validator: value => Object.keys(dropdownVariantOptions).includes(value)\n    },\n    size: {\n      type: String,\n      required: false,\n      default: 'medium',\n      validator: value => Object.keys(buttonSizeOptions).includes(value)\n    },\n    icon: {\n      type: String,\n      required: false,\n      default: ''\n    },\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    loading: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    toggleClass: {\n      type: [String, Array, Object],\n      required: false,\n      default: null\n    },\n    noCaret: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    placement: {\n      type: String,\n      required: false,\n      default: 'bottom-start',\n      validator: value => {\n        if (['left', 'center', 'right'].includes(value)) {\n          logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: \"${value}\" placement is deprecated.\n            Use ${dropdownPlacements[value]} instead.`);\n        }\n        return Object.keys(dropdownPlacements).includes(value);\n      }\n    },\n    // ARIA props\n    ariaHaspopup: {\n      type: [String, Boolean],\n      required: false,\n      default: false,\n      validator: value => {\n        return ['menu', 'listbox', 'tree', 'grid', 'dialog', true, false].includes(value);\n      }\n    },\n    /**\n     * Id that will be referenced by `aria-labelledby` attribute of the dropdown content`\n     */\n    toggleId: {\n      type: String,\n      required: true\n    },\n    /**\n     * The `aria-labelledby` attribute value for the  toggle `button`\n     */\n    ariaLabelledby: {\n      type: String,\n      required: false,\n      default: null\n    },\n    /**\n     * Custom value to be passed to the offset middleware.\n     * https://floating-ui.com/docs/offset\n     */\n    offset: {\n      type: [Number, Object],\n      required: false,\n      default: () => ({\n        mainAxis: DEFAULT_OFFSET\n      })\n    },\n    fluidWidth: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * Strategy to be applied by computePosition. If this is set to fixed, the dropdown's position\n     * needs to be set to fixed in CSS as well.\n     * https://floating-ui.com/docs/computePosition#strategy\n     */\n    positioningStrategy: {\n      type: String,\n      required: false,\n      default: POSITION_ABSOLUTE,\n      validator: strategy => [POSITION_ABSOLUTE, POSITION_FIXED].includes(strategy)\n    }\n  },\n  data() {\n    return {\n      openedYet: false,\n      visible: false,\n      baseDropdownId: uniqueId('base-dropdown-')\n    };\n  },\n  computed: {\n    hasNoVisibleToggleText() {\n      var _this$toggleText;\n      return !((_this$toggleText = this.toggleText) !== null && _this$toggleText !== void 0 && _this$toggleText.length) || this.textSrOnly;\n    },\n    isIconOnly() {\n      return Boolean(this.icon && this.hasNoVisibleToggleText);\n    },\n    isEllipsisButton() {\n      return this.isIconOnly && this.icon === 'ellipsis_h';\n    },\n    isCaretOnly() {\n      return !this.noCaret && !this.icon && this.hasNoVisibleToggleText;\n    },\n    ariaAttributes() {\n      return {\n        'aria-haspopup': this.ariaHaspopup,\n        'aria-expanded': String(this.visible),\n        'aria-controls': this.baseDropdownId,\n        'aria-labelledby': this.toggleLabelledBy\n      };\n    },\n    toggleButtonClasses() {\n      return [this.toggleClass, {\n        'gl-new-dropdown-toggle': true,\n        'button-ellipsis-horizontal': this.isEllipsisButton,\n        'gl-new-dropdown-icon-only btn-icon': this.isIconOnly && !this.isEllipsisButton,\n        'gl-new-dropdown-toggle-no-caret': this.noCaret,\n        'gl-new-dropdown-caret-only btn-icon': this.isCaretOnly\n      }];\n    },\n    toggleButtonTextClasses() {\n      return this.block ? 'gl-w-full' : '';\n    },\n    toggleLabelledBy() {\n      return this.ariaLabelledby ? `${this.ariaLabelledby} ${this.toggleId}` : this.toggleId;\n    },\n    isDefaultToggle() {\n      return !this.$scopedSlots.toggle;\n    },\n    toggleOptions() {\n      if (this.isDefaultToggle) {\n        return {\n          is: GlButton,\n          icon: this.icon,\n          block: this.block,\n          buttonTextClasses: this.toggleButtonTextClasses,\n          category: this.category,\n          variant: this.variant,\n          size: this.size,\n          disabled: this.disabled,\n          loading: this.loading,\n          class: this.toggleButtonClasses,\n          ...this.ariaAttributes,\n          listeners: {\n            keydown: event => this.onKeydown(event),\n            click: event => this.toggle(event)\n          }\n        };\n      }\n      return {\n        is: 'div',\n        class: 'gl-new-dropdown-custom-toggle',\n        listeners: {\n          keydown: event => this.onKeydown(event),\n          click: event => this.toggle(event)\n        }\n      };\n    },\n    toggleListeners() {\n      return this.toggleOptions.listeners;\n    },\n    toggleAttributes() {\n      const {\n        listeners,\n        is,\n        ...attributes\n      } = this.toggleOptions;\n      return attributes;\n    },\n    toggleComponent() {\n      return this.toggleOptions.is;\n    },\n    toggleElement() {\n      var _this$$refs$toggle;\n      return this.$refs.toggle.$el || ((_this$$refs$toggle = this.$refs.toggle) === null || _this$$refs$toggle === void 0 ? void 0 : _this$$refs$toggle.firstElementChild);\n    },\n    panelClasses() {\n      return {\n        '!gl-block': this.visible,\n        [FIXED_WIDTH_CLASS]: !this.fluidWidth,\n        'gl-fixed': this.openedYet && this.isFixed,\n        'gl-absolute': this.openedYet && !this.isFixed\n      };\n    },\n    isFixed() {\n      return this.positioningStrategy === POSITION_FIXED;\n    },\n    floatingUIConfig() {\n      const placement = dropdownPlacements[this.placement];\n      const [, alignment] = placement.split('-');\n      return {\n        placement,\n        strategy: this.positioningStrategy,\n        middleware: [offset(this.offset), autoPlacement({\n          alignment,\n          allowedPlacements: dropdownAllowedAutoPlacements[this.placement]\n        }), shift(), size({\n          apply: _ref => {\n            var _this$nonScrollableCo;\n            let {\n              availableHeight,\n              elements\n            } = _ref;\n            const contentsEl = elements.floating.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);\n            if (!contentsEl) {\n              return;\n            }\n            const contentsAvailableHeight = availableHeight - ((_this$nonScrollableCo = this.nonScrollableContentHeight) !== null && _this$nonScrollableCo !== void 0 ? _this$nonScrollableCo : 0) - DEFAULT_OFFSET;\n            Object.assign(contentsEl.style, {\n              maxHeight: `${Math.max(contentsAvailableHeight, 0)}px`\n            });\n          }\n        })]\n      };\n    }\n  },\n  watch: {\n    ariaAttributes: {\n      deep: true,\n      handler(ariaAttributes) {\n        if (this.$scopedSlots.toggle) {\n          Object.keys(ariaAttributes).forEach(key => {\n            this.toggleElement.setAttribute(key, ariaAttributes[key]);\n          });\n        }\n      }\n    }\n  },\n  mounted() {\n    this.checkToggleFocusable();\n  },\n  beforeDestroy() {\n    this.stopFloating();\n  },\n  methods: {\n    checkToggleFocusable() {\n      if (!isElementFocusable(this.toggleElement) && !isElementTabbable(this.toggleElement)) {\n        logWarning(`GlDisclosureDropdown/GlCollapsibleListbox: Toggle is missing a 'tabindex' and cannot be focused.\n          Use 'a' or 'button' element instead or make sure to add 'role=\"button\"' along with 'tabindex' otherwise.`, this.$el);\n      }\n    },\n    async startFloating() {\n      this.calculateNonScrollableAreaHeight();\n      this.observer = new MutationObserver(this.calculateNonScrollableAreaHeight);\n      this.observer.observe(this.$refs.content, {\n        attributes: false,\n        childList: true,\n        subtree: true\n      });\n      this.stopAutoUpdate = autoUpdate(this.toggleElement, this.$refs.content, async () => {\n        const {\n          x,\n          y\n        } = await computePosition(this.toggleElement, this.$refs.content, this.floatingUIConfig);\n\n        /**\n         * Due to the asynchronous nature of computePosition, it's technically possible for the\n         * component to have been destroyed by the time the promise resolves. In such case, we exit\n         * early to prevent a TypeError.\n         */\n        if (!this.$refs.content) return;\n        Object.assign(this.$refs.content.style, {\n          left: `${x}px`,\n          top: `${y}px`\n        });\n      });\n    },\n    stopFloating() {\n      var _this$observer, _this$stopAutoUpdate;\n      (_this$observer = this.observer) === null || _this$observer === void 0 ? void 0 : _this$observer.disconnect();\n      (_this$stopAutoUpdate = this.stopAutoUpdate) === null || _this$stopAutoUpdate === void 0 ? void 0 : _this$stopAutoUpdate.call(this);\n    },\n    async toggle(event) {\n      if (event && this.visible) {\n        let prevented = false;\n        this.$emit(GL_DROPDOWN_BEFORE_CLOSE, {\n          originalEvent: event,\n          preventDefault() {\n            prevented = true;\n          }\n        });\n        if (prevented) return false;\n      }\n      this.visible = !this.visible;\n      if (this.visible) {\n        // The dropdown needs to be actually visible before we compute its position with Floating UI.\n        await this.$nextTick();\n        this.openedYet = true;\n        /**\n         * We wait until the dropdown's position has been computed before emitting the `shown` event.\n         * This ensures that, if the parent component attempts to focus an inner element, the dropdown\n         * is already properly placed in the page. Otherwise, the page would scroll back to the top.\n         */\n        this.startFloating();\n        this.$emit(GL_DROPDOWN_SHOWN);\n      } else {\n        this.stopFloating();\n        this.$emit(GL_DROPDOWN_HIDDEN);\n      }\n\n      // this is to check whether `toggle` was prevented or not\n      return true;\n    },\n    open() {\n      if (this.visible) {\n        return;\n      }\n      this.toggle();\n    },\n    close(event) {\n      if (!this.visible) {\n        return;\n      }\n      this.toggle(event);\n    },\n    /**\n     * Closes the dropdown and returns the focus to the toggle unless it has has moved outside\n     * of the dropdown, meaning that the consumer needed to put some other element in focus.\n     *\n     * @param {KeyboardEvent?} event The keyboard event that caused the dropdown to close.\n     */\n    async closeAndFocus(event) {\n      if (!this.visible) {\n        return;\n      }\n      const hadFocusWithin = this.$el.contains(document.activeElement);\n      const hasToggled = await this.toggle(event);\n      if (!hadFocusWithin) {\n        return;\n      }\n      if (hasToggled) {\n        this.focusToggle();\n      }\n    },\n    focusToggle() {\n      this.toggleElement.focus();\n    },\n    onKeydown(event) {\n      const {\n        code,\n        target: {\n          tagName\n        }\n      } = event;\n      let toggleOnEnter = true;\n      let toggleOnSpace = true;\n      if (tagName === 'BUTTON') {\n        toggleOnEnter = false;\n        toggleOnSpace = false;\n      } else if (tagName === 'A') {\n        toggleOnEnter = false;\n      }\n      if (code === ENTER && toggleOnEnter || code === SPACE && toggleOnSpace) {\n        this.toggle(event);\n      }\n      if (code === ARROW_DOWN) {\n        this.$emit(GL_DROPDOWN_FOCUS_CONTENT, event);\n      }\n    },\n    calculateNonScrollableAreaHeight() {\n      var _this$$refs$content;\n      const scrollableArea = (_this$$refs$content = this.$refs.content) === null || _this$$refs$content === void 0 ? void 0 : _this$$refs$content.querySelector(`.${GL_DROPDOWN_CONTENTS_CLASS}`);\n      if (!scrollableArea) return;\n      const floatingElementBoundingBox = this.$refs.content.getBoundingClientRect();\n      const scrollableAreaBoundingBox = scrollableArea.getBoundingClientRect();\n      this.nonScrollableContentHeight = floatingElementBoundingBox.height - scrollableAreaBoundingBox.height;\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"outside\",rawName:\"v-outside.click.focusin\",value:(_vm.close),expression:\"close\",modifiers:{\"click\":true,\"focusin\":true}}],class:[_vm.$options.BASE_DROPDOWN_CLASS, { '!gl-block': _vm.block }]},[_c(_vm.toggleComponent,_vm._g(_vm._b({ref:\"toggle\",tag:\"component\",attrs:{\"id\":_vm.toggleId,\"data-testid\":\"base-dropdown-toggle\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.close.apply(null, arguments)}}},'component',_vm.toggleAttributes,false),_vm.toggleListeners),[_vm._t(\"toggle\",function(){return [_c('span',{staticClass:\"gl-new-dropdown-button-text\",class:{ 'gl-sr-only': _vm.textSrOnly }},[_vm._v(\"\\n        \"+_vm._s(_vm.toggleText)+\"\\n      \")]),_vm._v(\" \"),(!_vm.noCaret)?_c('gl-icon',{staticClass:\"gl-button-icon gl-new-dropdown-chevron\",attrs:{\"name\":\"chevron-down\"}}):_vm._e()]})],2),_vm._v(\" \"),_c('div',{ref:\"content\",staticClass:\"gl-new-dropdown-panel\",class:_vm.panelClasses,attrs:{\"id\":_vm.baseDropdownId,\"data-testid\":\"base-dropdown-menu\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"])){ return null; }$event.stopPropagation();$event.preventDefault();return _vm.closeAndFocus.apply(null, arguments)}}},[_c('div',{staticClass:\"gl-new-dropdown-inner\"},[_vm._t(\"default\")],2)])],1)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\nexport { BASE_DROPDOWN_CLASS };\n","const FIXED_WIDTH_CLASS = '!gl-w-31';\nconst DEFAULT_OFFSET = 4;\n\nexport { DEFAULT_OFFSET, FIXED_WIDTH_CLASS };\n","var copyObject = require('./_copyObject'),\n    keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n  return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n  comparator = typeof comparator == 'function' ? comparator : undefined;\n  return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;\n","export const SET_MILESTONES_ENDPOINT = 'SET_MILESTONES_ENDPOINT';\nexport const SET_LABELS_ENDPOINT = 'SET_LABELS_ENDPOINT';\nexport const SET_GROUP_ENDPOINT = 'SET_GROUP_ENDPOINT';\nexport const SET_PROJECT_ENDPOINT = 'SET_PROJECT_ENDPOINT';\n\nexport const REQUEST_BRANCHES = 'REQUEST_BRANCHES';\nexport const RECEIVE_BRANCHES_SUCCESS = 'RECEIVE_BRANCHES_SUCCESS';\nexport const RECEIVE_BRANCHES_ERROR = 'RECEIVE_BRANCHES_ERROR';\n\nexport const REQUEST_MILESTONES = 'REQUEST_MILESTONES';\nexport const RECEIVE_MILESTONES_SUCCESS = 'RECEIVE_MILESTONES_SUCCESS';\nexport const RECEIVE_MILESTONES_ERROR = 'RECEIVE_MILESTONES_ERROR';\n\nexport const REQUEST_LABELS = 'REQUEST_LABELS';\nexport const RECEIVE_LABELS_SUCCESS = 'RECEIVE_LABELS_SUCCESS';\nexport const RECEIVE_LABELS_ERROR = 'RECEIVE_LABELS_ERROR';\n\nexport const REQUEST_AUTHORS = 'REQUEST_AUTHORS';\nexport const RECEIVE_AUTHORS_SUCCESS = 'RECEIVE_AUTHORS_SUCCESS';\nexport const RECEIVE_AUTHORS_ERROR = 'RECEIVE_AUTHORS_ERROR';\n\nexport const REQUEST_ASSIGNEES = 'REQUEST_ASSIGNEES';\nexport const RECEIVE_ASSIGNEES_SUCCESS = 'RECEIVE_ASSIGNEES_SUCCESS';\nexport const RECEIVE_ASSIGNEES_ERROR = 'RECEIVE_ASSIGNEES_ERROR';\n\nexport const SET_SELECTED_FILTERS = 'SET_SELECTED_FILTERS';\n","import Api from '~/api';\nimport { createAlert } from '~/alert';\nimport axios from '~/lib/utils/axios_utils';\nimport { __ } from '~/locale';\nimport * as types from './mutation_types';\n\nexport const setEndpoints = ({ commit }, params) => {\n  const { milestonesEndpoint, labelsEndpoint, groupEndpoint, projectEndpoint } = params;\n  commit(types.SET_MILESTONES_ENDPOINT, milestonesEndpoint);\n  commit(types.SET_LABELS_ENDPOINT, labelsEndpoint);\n  commit(types.SET_GROUP_ENDPOINT, groupEndpoint);\n  commit(types.SET_PROJECT_ENDPOINT, projectEndpoint);\n};\n\nexport function fetchBranches({ commit, state }, search = '') {\n  const { projectEndpoint } = state;\n  commit(types.REQUEST_BRANCHES);\n\n  return Api.branches(projectEndpoint, search)\n    .then((response) => {\n      commit(types.RECEIVE_BRANCHES_SUCCESS, response.data);\n      return response;\n    })\n    .catch(({ response }) => {\n      const { status } = response;\n      commit(types.RECEIVE_BRANCHES_ERROR, status);\n      createAlert({\n        message: __('Failed to load branches. Please try again.'),\n      });\n    });\n}\n\nexport const fetchMilestones = ({ commit, state }, searchTitle = '') => {\n  commit(types.REQUEST_MILESTONES);\n  const { milestonesEndpoint } = state;\n\n  return axios\n    .get(milestonesEndpoint, { params: { search_title: searchTitle } })\n    .then((response) => {\n      commit(types.RECEIVE_MILESTONES_SUCCESS, response.data);\n      return response;\n    })\n    .catch(({ response }) => {\n      const { status } = response;\n      commit(types.RECEIVE_MILESTONES_ERROR, status);\n      createAlert({\n        message: __('Failed to load milestones. Please try again.'),\n      });\n    });\n};\n\nexport const fetchLabels = ({ commit, state }, search = '') => {\n  commit(types.REQUEST_LABELS);\n\n  return axios\n    .get(state.labelsEndpoint, { params: { search } })\n    .then((response) => {\n      commit(types.RECEIVE_LABELS_SUCCESS, response.data);\n      return response;\n    })\n    .catch(({ response }) => {\n      const { status } = response;\n      commit(types.RECEIVE_LABELS_ERROR, status);\n      createAlert({\n        message: __('Failed to load labels. Please try again.'),\n      });\n    });\n};\n\nfunction fetchUser(options = {}) {\n  const { commit, projectEndpoint, groupEndpoint, query, action, errorMessage } = options;\n  commit(`REQUEST_${action}`);\n\n  let fetchUserPromise;\n  if (projectEndpoint) {\n    fetchUserPromise = Api.projectUsers(projectEndpoint, query).then((data) => ({ data }));\n  } else {\n    fetchUserPromise = Api.groupMembers(groupEndpoint, { query });\n  }\n\n  return fetchUserPromise\n    .then((response) => {\n      commit(`RECEIVE_${action}_SUCCESS`, response.data);\n      return response;\n    })\n    .catch(({ response }) => {\n      const { status } = response;\n      commit(`RECEIVE_${action}_ERROR`, status);\n      createAlert({\n        message: errorMessage,\n      });\n    });\n}\n\nexport const fetchAuthors = ({ commit, state }, query = '') => {\n  const { projectEndpoint, groupEndpoint } = state;\n\n  return fetchUser({\n    commit,\n    query,\n    projectEndpoint,\n    groupEndpoint,\n    action: 'AUTHORS',\n    errorMessage: __('Failed to load authors. Please try again.'),\n  });\n};\n\nexport const fetchAssignees = ({ commit, state }, query = '') => {\n  const { projectEndpoint, groupEndpoint } = state;\n\n  return fetchUser({\n    commit,\n    query,\n    projectEndpoint,\n    groupEndpoint,\n    action: 'ASSIGNEES',\n    errorMessage: __('Failed to load assignees. Please try again.'),\n  });\n};\n\nexport const setFilters = ({ commit, dispatch }, filters) => {\n  commit(types.SET_SELECTED_FILTERS, filters);\n\n  return dispatch('setFilters', filters, { root: true });\n};\n\nexport const initialize = ({ commit }, initialFilters) => {\n  commit(types.SET_SELECTED_FILTERS, initialFilters);\n};\n","import * as types from './mutation_types';\n\nexport default {\n  [types.SET_SELECTED_FILTERS](state, params) {\n    const {\n      selectedSourceBranch = null,\n      selectedSourceBranchList = [],\n      selectedTargetBranch = null,\n      selectedTargetBranchList = [],\n      selectedAuthor = null,\n      selectedAuthorList = [],\n      selectedMilestone = null,\n      selectedMilestoneList = [],\n      selectedAssignee = null,\n      selectedAssigneeList = [],\n      selectedLabel = null,\n      selectedLabelList = [],\n    } = params;\n    state.branches.source.selected = selectedSourceBranch;\n    state.branches.source.selectedList = selectedSourceBranchList;\n    state.branches.target.selected = selectedTargetBranch;\n    state.branches.target.selectedList = selectedTargetBranchList;\n    state.authors.selected = selectedAuthor;\n    state.authors.selectedList = selectedAuthorList;\n    state.assignees.selected = selectedAssignee;\n    state.assignees.selectedList = selectedAssigneeList;\n    state.milestones.selected = selectedMilestone;\n    state.milestones.selectedList = selectedMilestoneList;\n    state.labels.selected = selectedLabel;\n    state.labels.selectedList = selectedLabelList;\n  },\n  [types.SET_MILESTONES_ENDPOINT](state, milestonesEndpoint) {\n    state.milestonesEndpoint = milestonesEndpoint;\n  },\n  [types.SET_LABELS_ENDPOINT](state, labelsEndpoint) {\n    state.labelsEndpoint = labelsEndpoint;\n  },\n  [types.SET_GROUP_ENDPOINT](state, groupEndpoint) {\n    state.groupEndpoint = groupEndpoint;\n  },\n  [types.SET_PROJECT_ENDPOINT](state, projectEndpoint) {\n    state.projectEndpoint = projectEndpoint;\n  },\n  [types.REQUEST_MILESTONES](state) {\n    state.milestones.isLoading = true;\n  },\n  [types.RECEIVE_MILESTONES_SUCCESS](state, data) {\n    state.milestones.isLoading = false;\n    state.milestones.data = data;\n    state.milestones.errorCode = null;\n  },\n  [types.RECEIVE_MILESTONES_ERROR](state, errorCode) {\n    state.milestones.isLoading = false;\n    state.milestones.errorCode = errorCode;\n    state.milestones.data = [];\n  },\n  [types.REQUEST_LABELS](state) {\n    state.labels.isLoading = true;\n  },\n  [types.RECEIVE_LABELS_SUCCESS](state, data) {\n    state.labels.isLoading = false;\n    state.labels.data = data;\n    state.labels.errorCode = null;\n  },\n  [types.RECEIVE_LABELS_ERROR](state, errorCode) {\n    state.labels.isLoading = false;\n    state.labels.errorCode = errorCode;\n    state.labels.data = [];\n  },\n  [types.REQUEST_AUTHORS](state) {\n    state.authors.isLoading = true;\n  },\n  [types.RECEIVE_AUTHORS_SUCCESS](state, data) {\n    state.authors.isLoading = false;\n    state.authors.data = data;\n    state.authors.errorCode = null;\n  },\n  [types.RECEIVE_AUTHORS_ERROR](state, errorCode) {\n    state.authors.isLoading = false;\n    state.authors.errorCode = errorCode;\n    state.authors.data = [];\n  },\n  [types.REQUEST_ASSIGNEES](state) {\n    state.assignees.isLoading = true;\n  },\n  [types.RECEIVE_ASSIGNEES_SUCCESS](state, data) {\n    state.assignees.isLoading = false;\n    state.assignees.data = data;\n    state.assignees.errorCode = null;\n  },\n  [types.RECEIVE_ASSIGNEES_ERROR](state, errorCode) {\n    state.assignees.isLoading = false;\n    state.assignees.errorCode = errorCode;\n    state.assignees.data = [];\n  },\n  [types.REQUEST_BRANCHES](state) {\n    state.branches.isLoading = true;\n  },\n  [types.RECEIVE_BRANCHES_SUCCESS](state, data) {\n    state.branches.isLoading = false;\n    state.branches.data = data;\n    state.branches.errorCode = null;\n  },\n  [types.RECEIVE_BRANCHES_ERROR](state, errorCode) {\n    state.branches.isLoading = false;\n    state.branches.errorCode = errorCode;\n    state.branches.data = [];\n  },\n};\n","import * as actions from './actions';\nimport mutations from './mutations';\nimport state from './state';\n\nexport default {\n  namespaced: true,\n  actions,\n  mutations,\n  state: state(),\n};\n","export default () => ({\n  milestonesEndpoint: '',\n  labelsEndpoint: '',\n  groupEndpoint: '',\n  projectEndpoint: '',\n  branches: {\n    isLoading: false,\n    errorCode: null,\n    data: [],\n    source: {\n      selected: null,\n      selectedList: [],\n    },\n    target: {\n      selected: null,\n      selectedList: [],\n    },\n  },\n  milestones: {\n    isLoading: false,\n    errorCode: null,\n    data: [],\n    selected: null,\n    selectedList: [],\n  },\n  labels: {\n    isLoading: false,\n    errorCode: null,\n    data: [],\n    selected: null,\n    selectedList: [],\n  },\n  authors: {\n    isLoading: false,\n    errorCode: null,\n    data: [],\n    selected: null,\n    selectedList: [],\n  },\n  assignees: {\n    isLoading: false,\n    errorCode: null,\n    data: [],\n    selected: null,\n    selectedList: [],\n  },\n});\n","import { extend } from '../../../vue';\nimport { PROP_TYPE_STRING } from '../../../constants/props';\nimport { SLOT_NAME_TABLE_CAPTION } from '../../../constants/slots';\nimport { htmlOrText } from '../../../utils/html';\nimport { makeProp } from '../../../utils/props';\n\n// --- Props ---\n\nconst props = {\n  caption: makeProp(PROP_TYPE_STRING),\n  captionHtml: makeProp(PROP_TYPE_STRING)\n  // `caption-top` is part of table-render mixin (styling)\n  // captionTop: makeProp(PROP_TYPE_BOOLEAN, false)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst captionMixin = extend({\n  props,\n  computed: {\n    captionId() {\n      return this.isStacked ? this.safeId('_caption_') : null;\n    }\n  },\n  methods: {\n    renderCaption() {\n      const {\n        caption,\n        captionHtml\n      } = this;\n      const h = this.$createElement;\n      let $caption = h();\n      const hasCaptionSlot = this.hasNormalizedSlot(SLOT_NAME_TABLE_CAPTION);\n      if (hasCaptionSlot || caption || captionHtml) {\n        $caption = h('caption', {\n          attrs: {\n            id: this.captionId\n          },\n          domProps: hasCaptionSlot ? {} : htmlOrText(captionHtml, caption),\n          key: 'caption',\n          ref: 'caption'\n        }, this.normalizeSlot(SLOT_NAME_TABLE_CAPTION));\n      }\n      return $caption;\n    }\n  }\n});\n\nexport { captionMixin, props };\n","import { GlTooltipDirective } from '../../../directives/tooltip';\nimport GlClearIconButton from '../../shared_components/clear_icon_button/clear_icon_button';\nimport GlButton from '../button/button';\nimport GlDisclosureDropdown from '../new_dropdowns/disclosure/disclosure_dropdown';\nimport GlDisclosureDropdownItem from '../new_dropdowns/disclosure/disclosure_dropdown_item';\nimport GlFormInput from '../form/form_input/form_input';\nimport GlFormInputGroup from '../form/form_input_group/form_input_group';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlSearchboxByClick',\n  components: {\n    GlClearIconButton,\n    GlButton,\n    GlFormInput,\n    GlDisclosureDropdown,\n    GlDisclosureDropdownItem,\n    GlFormInputGroup\n  },\n  directives: {\n    GlTooltip: GlTooltipDirective\n  },\n  props: {\n    /**\n     * If provided, used as value of search input\n     */\n    value: {\n      required: false,\n      default: '',\n      // SearchBoxByClick could serve as a container for complex fields (see GlFilteredSearch)\n      // so we should not force any specific type for value here\n      validator: () => true\n    },\n    /**\n     * If provided, used as history items for this component\n     */\n    historyItems: {\n      type: Array,\n      required: false,\n      default: null\n    },\n    /**\n     * If provided, used as a placeholder for this component\n     */\n    placeholder: {\n      type: String,\n      required: false,\n      default: 'Search'\n    },\n    clearable: {\n      type: Boolean,\n      required: false,\n      default: true\n    },\n    /**\n     * If provided and true, disables the input and controls\n     */\n    disabled: {\n      type: Boolean,\n      required: false,\n      default: false\n    },\n    /**\n     * i18n for recent searches title within history dropdown\n     */\n    recentSearchesHeader: {\n      type: String,\n      required: false,\n      default: 'Recent searches'\n    },\n    /**\n     * i18n for clear button title\n     */\n    clearButtonTitle: {\n      type: String,\n      required: false,\n      default: 'Clear'\n    },\n    /**\n     * i18n for close button title within history dropdown\n     */\n    closeButtonTitle: {\n      type: String,\n      required: false,\n      default: 'Close'\n    },\n    /**\n     * i18n for recent searches clear text\n     */\n    clearRecentSearchesText: {\n      type: String,\n      required: false,\n      default: 'Clear recent searches'\n    },\n    noRecentSearchesText: {\n      type: String,\n      required: false,\n      default: \"You don't have any recent searches\"\n    },\n    /**\n     * Container for tooltip. Valid values: DOM node, selector string or `false` for default\n     */\n    tooltipContainer: {\n      required: false,\n      default: false,\n      validator: value => value === false || typeof value === 'string' || value instanceof HTMLElement\n    },\n    /**\n     * HTML attributes to add to the search button\n     */\n    searchButtonAttributes: {\n      type: Object,\n      required: false,\n      default: () => ({})\n    },\n    /**\n     * Display search button to perform a search.\n     *\n     * Note: it is required to ensure accessibility for WCAG 2.1 3.2.2: On Input.\n     * If the search button is hidden, a separate button should be provided for the same context.\n     */\n    showSearchButton: {\n      type: Boolean,\n      required: false,\n      default: true\n    }\n  },\n  data() {\n    return {\n      currentValue: null,\n      isFocused: false\n    };\n  },\n  computed: {\n    inputAttributes() {\n      const attributes = {\n        type: 'search',\n        placeholder: this.placeholder,\n        ...this.$attrs\n      };\n      if (!attributes['aria-label']) {\n        attributes['aria-label'] = attributes.placeholder;\n      }\n      return attributes;\n    },\n    hasValue() {\n      return Boolean(this.currentValue);\n    }\n  },\n  watch: {\n    value: {\n      handler(newValue) {\n        this.currentValue = newValue;\n      },\n      immediate: true\n    },\n    currentValue(newValue) {\n      if (newValue === this.value) return;\n      this.$emit('input', newValue);\n    }\n  },\n  methods: {\n    search(value) {\n      /**\n       * Emitted when search is submitted\n       * @property {*} value Search value\n       */\n      this.$emit('submit', value);\n    },\n    selectHistoryItem(item) {\n      this.currentValue = item;\n\n      /**\n       * Emitted when item from history is selected\n       * @property {*} item History item\n       */\n      this.$emit('history-item-selected', item);\n      setTimeout(() => {\n        document.activeElement.blur();\n      });\n    },\n    clearInput() {\n      this.currentValue = '';\n      /**\n       * Emitted when search is cleared\n       */\n      this.$emit('clear');\n      if (this.$refs.input) {\n        this.$refs.input.$el.focus();\n      }\n    },\n    emitClearHistory() {\n      /**\n       * Emitted when clear history button is clicked\n       */\n      this.$emit('clear-history');\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('gl-form-input-group',{staticClass:\"gl-search-box-by-click\",class:{ 'gl-search-box-by-click-with-search-button': _vm.showSearchButton },scopedSlots:_vm._u([(_vm.historyItems)?{key:\"prepend\",fn:function(){return [_c('gl-disclosure-dropdown',{ref:\"historyDropdown\",staticClass:\"gl-search-box-by-click-history\",attrs:{\"icon\":\"history\",\"category\":\"tertiary\",\"toggle-text\":\"Toggle history\",\"text-sr-only\":\"\",\"fluid-width\":\"\",\"disabled\":_vm.disabled},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('div',{staticClass:\"gl-search-box-by-click-history-header gl-flex gl-min-h-8 gl-grow gl-items-center gl-border-b-1 gl-border-b-dropdown !gl-p-4 gl-text-sm gl-font-bold gl-border-b-solid\"},[_vm._v(\"\\n          \"+_vm._s(_vm.recentSearchesHeader)+\"\\n        \")])]},proxy:true},(_vm.historyItems.length)?{key:\"footer\",fn:function(){return [_c('div',{staticClass:\"gl-flex gl-flex-col gl-border-t-1 gl-border-t-dropdown gl-p-2 gl-border-t-solid\"},[_c('gl-button',{ref:\"clearHistory\",staticClass:\"!gl-justify-start\",attrs:{\"category\":\"tertiary\"},on:{\"click\":_vm.emitClearHistory}},[_vm._v(\"\\n            \"+_vm._s(_vm.clearRecentSearchesText)+\"\\n          \")])],1)]},proxy:true}:null],null,true)},[_vm._v(\" \"),(_vm.historyItems.length)?_vm._l((_vm.historyItems),function(item,idx){return _c('gl-disclosure-dropdown-item',{key:idx,staticClass:\"gl-search-box-by-click-history-item\",on:{\"action\":function($event){return _vm.selectHistoryItem(item)}},scopedSlots:_vm._u([{key:\"list-item\",fn:function(){return [_vm._t(\"history-item\",function(){return [_vm._v(_vm._s(item))]},{\"historyItem\":item})]},proxy:true}],null,true)})}):_c('div',{staticClass:\"gl-px-4 gl-py-2 gl-text-sm gl-text-subtle\"},[_vm._v(\"\\n        \"+_vm._s(_vm.noRecentSearchesText)+\"\\n      \")])],2)]},proxy:true}:null,(_vm.showSearchButton)?{key:\"append\",fn:function(){return [_c('gl-button',_vm._b({ref:\"searchButton\",staticClass:\"gl-search-box-by-click-search-button\",attrs:{\"category\":\"tertiary\",\"icon\":\"search\",\"disabled\":_vm.disabled,\"aria-label\":\"Search\",\"data-testid\":\"search-button\"},on:{\"click\":function($event){return _vm.search(_vm.currentValue)}}},'gl-button',_vm.searchButtonAttributes,false))]},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._t(\"input\",function(){return [_c('gl-form-input',_vm._b({ref:\"input\",staticClass:\"gl-search-box-by-click-input\",class:{ '!gl-rounded-base': !_vm.showSearchButton },attrs:{\"disabled\":_vm.disabled},on:{\"focus\":function($event){_vm.isFocused = true;},\"blur\":function($event){_vm.isFocused = false;}},nativeOn:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.search(_vm.currentValue)}},model:{value:(_vm.currentValue),callback:function ($$v) {_vm.currentValue=$$v;},expression:\"currentValue\"}},'gl-form-input',_vm.inputAttributes,false))]}),_vm._v(\" \"),(_vm.clearable && _vm.hasValue && !_vm.disabled)?_c('gl-clear-icon-button',{staticClass:\"gl-search-box-by-click-icon-button gl-search-box-by-click-clear-button gl-clear-icon-button\",attrs:{\"title\":_vm.clearButtonTitle,\"tooltip-container\":_vm.tooltipContainer,\"data-testid\":\"filtered-search-clear-button\"},on:{\"click\":_vm.clearInput}}):_vm._e()],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n  let {\n    reference,\n    floating\n  } = _ref;\n  const sideAxis = getSideAxis(placement);\n  const alignmentAxis = getAlignmentAxis(placement);\n  const alignLength = getAxisLength(alignmentAxis);\n  const side = getSide(placement);\n  const isVertical = sideAxis === 'y';\n  const commonX = reference.x + reference.width / 2 - floating.width / 2;\n  const commonY = reference.y + reference.height / 2 - floating.height / 2;\n  const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n  let coords;\n  switch (side) {\n    case 'top':\n      coords = {\n        x: commonX,\n        y: reference.y - floating.height\n      };\n      break;\n    case 'bottom':\n      coords = {\n        x: commonX,\n        y: reference.y + reference.height\n      };\n      break;\n    case 'right':\n      coords = {\n        x: reference.x + reference.width,\n        y: commonY\n      };\n      break;\n    case 'left':\n      coords = {\n        x: reference.x - floating.width,\n        y: commonY\n      };\n      break;\n    default:\n      coords = {\n        x: reference.x,\n        y: reference.y\n      };\n  }\n  switch (getAlignment(placement)) {\n    case 'start':\n      coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n    case 'end':\n      coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n      break;\n  }\n  return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n  const {\n    placement = 'bottom',\n    strategy = 'absolute',\n    middleware = [],\n    platform\n  } = config;\n  const validMiddleware = middleware.filter(Boolean);\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n  let rects = await platform.getElementRects({\n    reference,\n    floating,\n    strategy\n  });\n  let {\n    x,\n    y\n  } = computeCoordsFromPlacement(rects, placement, rtl);\n  let statefulPlacement = placement;\n  let middlewareData = {};\n  let resetCount = 0;\n  for (let i = 0; i < validMiddleware.length; i++) {\n    const {\n      name,\n      fn\n    } = validMiddleware[i];\n    const {\n      x: nextX,\n      y: nextY,\n      data,\n      reset\n    } = await fn({\n      x,\n      y,\n      initialPlacement: placement,\n      placement: statefulPlacement,\n      strategy,\n      middlewareData,\n      rects,\n      platform,\n      elements: {\n        reference,\n        floating\n      }\n    });\n    x = nextX != null ? nextX : x;\n    y = nextY != null ? nextY : y;\n    middlewareData = {\n      ...middlewareData,\n      [name]: {\n        ...middlewareData[name],\n        ...data\n      }\n    };\n    if (reset && resetCount <= 50) {\n      resetCount++;\n      if (typeof reset === 'object') {\n        if (reset.placement) {\n          statefulPlacement = reset.placement;\n        }\n        if (reset.rects) {\n          rects = reset.rects === true ? await platform.getElementRects({\n            reference,\n            floating,\n            strategy\n          }) : reset.rects;\n        }\n        ({\n          x,\n          y\n        } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n      }\n      i = -1;\n    }\n  }\n  return {\n    x,\n    y,\n    placement: statefulPlacement,\n    strategy,\n    middlewareData\n  };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n  var _await$platform$isEle;\n  if (options === void 0) {\n    options = {};\n  }\n  const {\n    x,\n    y,\n    platform,\n    rects,\n    elements,\n    strategy\n  } = state;\n  const {\n    boundary = 'clippingAncestors',\n    rootBoundary = 'viewport',\n    elementContext = 'floating',\n    altBoundary = false,\n    padding = 0\n  } = evaluate(options, state);\n  const paddingObject = getPaddingObject(padding);\n  const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n  const element = elements[altBoundary ? altContext : elementContext];\n  const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n    element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n    boundary,\n    rootBoundary,\n    strategy\n  }));\n  const rect = elementContext === 'floating' ? {\n    x,\n    y,\n    width: rects.floating.width,\n    height: rects.floating.height\n  } : rects.reference;\n  const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n  const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n    x: 1,\n    y: 1\n  } : {\n    x: 1,\n    y: 1\n  };\n  const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n    elements,\n    rect,\n    offsetParent,\n    strategy\n  }) : rect);\n  return {\n    top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n    bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n    left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n    right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n  };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n  name: 'arrow',\n  options,\n  async fn(state) {\n    const {\n      x,\n      y,\n      placement,\n      rects,\n      platform,\n      elements,\n      middlewareData\n    } = state;\n    // Since `element` is required, we don't Partial<> the type.\n    const {\n      element,\n      padding = 0\n    } = evaluate(options, state) || {};\n    if (element == null) {\n      return {};\n    }\n    const paddingObject = getPaddingObject(padding);\n    const coords = {\n      x,\n      y\n    };\n    const axis = getAlignmentAxis(placement);\n    const length = getAxisLength(axis);\n    const arrowDimensions = await platform.getDimensions(element);\n    const isYAxis = axis === 'y';\n    const minProp = isYAxis ? 'top' : 'left';\n    const maxProp = isYAxis ? 'bottom' : 'right';\n    const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n    const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n    const startDiff = coords[axis] - rects.reference[axis];\n    const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n    let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n    // DOM platform can return `window` as the `offsetParent`.\n    if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n      clientSize = elements.floating[clientProp] || rects.floating[length];\n    }\n    const centerToReference = endDiff / 2 - startDiff / 2;\n\n    // If the padding is large enough that it causes the arrow to no longer be\n    // centered, modify the padding so that it is centered.\n    const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n    const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n    const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n    // Make sure the arrow doesn't overflow the floating element if the center\n    // point is outside the floating element's bounds.\n    const min$1 = minPadding;\n    const max = clientSize - arrowDimensions[length] - maxPadding;\n    const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n    const offset = clamp(min$1, center, max);\n\n    // If the reference is small enough that the arrow's padding causes it to\n    // to point to nothing for an aligned placement, adjust the offset of the\n    // floating element itself. To ensure `shift()` continues to take action,\n    // a single reset is performed when this is true.\n    const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n    const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n    return {\n      [axis]: coords[axis] + alignmentOffset,\n      data: {\n        [axis]: offset,\n        centerOffset: center - offset - alignmentOffset,\n        ...(shouldAddOffset && {\n          alignmentOffset\n        })\n      },\n      reset: shouldAddOffset\n    };\n  }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n  const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n  return allowedPlacementsSortedByAlignment.filter(placement => {\n    if (alignment) {\n      return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n    }\n    return true;\n  });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'autoPlacement',\n    options,\n    async fn(state) {\n      var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n      const {\n        rects,\n        middlewareData,\n        placement,\n        platform,\n        elements\n      } = state;\n      const {\n        crossAxis = false,\n        alignment,\n        allowedPlacements = placements,\n        autoAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n      const currentPlacement = placements$1[currentIndex];\n      if (currentPlacement == null) {\n        return {};\n      }\n      const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n      // Make `computeCoords` start from the right place.\n      if (placement !== currentPlacement) {\n        return {\n          reset: {\n            placement: placements$1[0]\n          }\n        };\n      }\n      const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n      const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n        placement: currentPlacement,\n        overflows: currentOverflows\n      }];\n      const nextPlacement = placements$1[currentIndex + 1];\n\n      // There are more placements to check.\n      if (nextPlacement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: nextPlacement\n          }\n        };\n      }\n      const placementsSortedByMostSpace = allOverflows.map(d => {\n        const alignment = getAlignment(d.placement);\n        return [d.placement, alignment && crossAxis ?\n        // Check along the mainAxis and main crossAxis side.\n        d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n        // Check only the mainAxis.\n        d.overflows[0], d.overflows];\n      }).sort((a, b) => a[1] - b[1]);\n      const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n      // Aligned placements should not check their opposite crossAxis\n      // side.\n      getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n      const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n      if (resetPlacement !== placement) {\n        return {\n          data: {\n            index: currentIndex + 1,\n            overflows: allOverflows\n          },\n          reset: {\n            placement: resetPlacement\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'flip',\n    options,\n    async fn(state) {\n      var _middlewareData$arrow, _middlewareData$flip;\n      const {\n        placement,\n        middlewareData,\n        rects,\n        initialPlacement,\n        platform,\n        elements\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true,\n        fallbackPlacements: specifiedFallbackPlacements,\n        fallbackStrategy = 'bestFit',\n        fallbackAxisSideDirection = 'none',\n        flipAlignment = true,\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n\n      // If a reset by the arrow was caused due to an alignment offset being\n      // added, we should skip any logic now since `flip()` has already done its\n      // work.\n      // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n      if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      const side = getSide(placement);\n      const initialSideAxis = getSideAxis(initialPlacement);\n      const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n      const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n      const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n      const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n      if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n        fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n      }\n      const placements = [initialPlacement, ...fallbackPlacements];\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const overflows = [];\n      let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n      if (checkMainAxis) {\n        overflows.push(overflow[side]);\n      }\n      if (checkCrossAxis) {\n        const sides = getAlignmentSides(placement, rects, rtl);\n        overflows.push(overflow[sides[0]], overflow[sides[1]]);\n      }\n      overflowsData = [...overflowsData, {\n        placement,\n        overflows\n      }];\n\n      // One or more sides is overflowing.\n      if (!overflows.every(side => side <= 0)) {\n        var _middlewareData$flip2, _overflowsData$filter;\n        const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n        const nextPlacement = placements[nextIndex];\n        if (nextPlacement) {\n          // Try next placement and re-run the lifecycle.\n          return {\n            data: {\n              index: nextIndex,\n              overflows: overflowsData\n            },\n            reset: {\n              placement: nextPlacement\n            }\n          };\n        }\n\n        // First, find the candidates that fit on the mainAxis side of overflow,\n        // then find the placement that fits the best on the main crossAxis side.\n        let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n        // Otherwise fallback.\n        if (!resetPlacement) {\n          switch (fallbackStrategy) {\n            case 'bestFit':\n              {\n                var _overflowsData$filter2;\n                const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n                  if (hasFallbackAxisSideDirection) {\n                    const currentSideAxis = getSideAxis(d.placement);\n                    return currentSideAxis === initialSideAxis ||\n                    // Create a bias to the `y` side axis due to horizontal\n                    // reading directions favoring greater width.\n                    currentSideAxis === 'y';\n                  }\n                  return true;\n                }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n                if (placement) {\n                  resetPlacement = placement;\n                }\n                break;\n              }\n            case 'initialPlacement':\n              resetPlacement = initialPlacement;\n              break;\n          }\n        }\n        if (placement !== resetPlacement) {\n          return {\n            reset: {\n              placement: resetPlacement\n            }\n          };\n        }\n      }\n      return {};\n    }\n  };\n};\n\nfunction getSideOffsets(overflow, rect) {\n  return {\n    top: overflow.top - rect.height,\n    right: overflow.right - rect.width,\n    bottom: overflow.bottom - rect.height,\n    left: overflow.left - rect.width\n  };\n}\nfunction isAnySideFullyClipped(overflow) {\n  return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'hide',\n    options,\n    async fn(state) {\n      const {\n        rects\n      } = state;\n      const {\n        strategy = 'referenceHidden',\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      switch (strategy) {\n        case 'referenceHidden':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              elementContext: 'reference'\n            });\n            const offsets = getSideOffsets(overflow, rects.reference);\n            return {\n              data: {\n                referenceHiddenOffsets: offsets,\n                referenceHidden: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        case 'escaped':\n          {\n            const overflow = await detectOverflow(state, {\n              ...detectOverflowOptions,\n              altBoundary: true\n            });\n            const offsets = getSideOffsets(overflow, rects.floating);\n            return {\n              data: {\n                escapedOffsets: offsets,\n                escaped: isAnySideFullyClipped(offsets)\n              }\n            };\n          }\n        default:\n          {\n            return {};\n          }\n      }\n    }\n  };\n};\n\nfunction getBoundingRect(rects) {\n  const minX = min(...rects.map(rect => rect.left));\n  const minY = min(...rects.map(rect => rect.top));\n  const maxX = max(...rects.map(rect => rect.right));\n  const maxY = max(...rects.map(rect => rect.bottom));\n  return {\n    x: minX,\n    y: minY,\n    width: maxX - minX,\n    height: maxY - minY\n  };\n}\nfunction getRectsByLine(rects) {\n  const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n  const groups = [];\n  let prevRect = null;\n  for (let i = 0; i < sortedRects.length; i++) {\n    const rect = sortedRects[i];\n    if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n      groups.push([rect]);\n    } else {\n      groups[groups.length - 1].push(rect);\n    }\n    prevRect = rect;\n  }\n  return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'inline',\n    options,\n    async fn(state) {\n      const {\n        placement,\n        elements,\n        rects,\n        platform,\n        strategy\n      } = state;\n      // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n      // ClientRect's bounds, despite the event listener being triggered. A\n      // padding of 2 seems to handle this issue.\n      const {\n        padding = 2,\n        x,\n        y\n      } = evaluate(options, state);\n      const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n      const clientRects = getRectsByLine(nativeClientRects);\n      const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n      const paddingObject = getPaddingObject(padding);\n      function getBoundingClientRect() {\n        // There are two rects and they are disjoined.\n        if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n          // Find the first rect in which the point is fully inside.\n          return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n        }\n\n        // There are 2 or more connected rects.\n        if (clientRects.length >= 2) {\n          if (getSideAxis(placement) === 'y') {\n            const firstRect = clientRects[0];\n            const lastRect = clientRects[clientRects.length - 1];\n            const isTop = getSide(placement) === 'top';\n            const top = firstRect.top;\n            const bottom = lastRect.bottom;\n            const left = isTop ? firstRect.left : lastRect.left;\n            const right = isTop ? firstRect.right : lastRect.right;\n            const width = right - left;\n            const height = bottom - top;\n            return {\n              top,\n              bottom,\n              left,\n              right,\n              width,\n              height,\n              x: left,\n              y: top\n            };\n          }\n          const isLeftSide = getSide(placement) === 'left';\n          const maxRight = max(...clientRects.map(rect => rect.right));\n          const minLeft = min(...clientRects.map(rect => rect.left));\n          const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n          const top = measureRects[0].top;\n          const bottom = measureRects[measureRects.length - 1].bottom;\n          const left = minLeft;\n          const right = maxRight;\n          const width = right - left;\n          const height = bottom - top;\n          return {\n            top,\n            bottom,\n            left,\n            right,\n            width,\n            height,\n            x: left,\n            y: top\n          };\n        }\n        return fallback;\n      }\n      const resetRects = await platform.getElementRects({\n        reference: {\n          getBoundingClientRect\n        },\n        floating: elements.floating,\n        strategy\n      });\n      if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n        return {\n          reset: {\n            rects: resetRects\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n  const {\n    placement,\n    platform,\n    elements\n  } = state;\n  const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n  const side = getSide(placement);\n  const alignment = getAlignment(placement);\n  const isVertical = getSideAxis(placement) === 'y';\n  const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n  const crossAxisMulti = rtl && isVertical ? -1 : 1;\n  const rawValue = evaluate(options, state);\n\n  // eslint-disable-next-line prefer-const\n  let {\n    mainAxis,\n    crossAxis,\n    alignmentAxis\n  } = typeof rawValue === 'number' ? {\n    mainAxis: rawValue,\n    crossAxis: 0,\n    alignmentAxis: null\n  } : {\n    mainAxis: rawValue.mainAxis || 0,\n    crossAxis: rawValue.crossAxis || 0,\n    alignmentAxis: rawValue.alignmentAxis\n  };\n  if (alignment && typeof alignmentAxis === 'number') {\n    crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n  }\n  return isVertical ? {\n    x: crossAxis * crossAxisMulti,\n    y: mainAxis * mainAxisMulti\n  } : {\n    x: mainAxis * mainAxisMulti,\n    y: crossAxis * crossAxisMulti\n  };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n  if (options === void 0) {\n    options = 0;\n  }\n  return {\n    name: 'offset',\n    options,\n    async fn(state) {\n      var _middlewareData$offse, _middlewareData$arrow;\n      const {\n        x,\n        y,\n        placement,\n        middlewareData\n      } = state;\n      const diffCoords = await convertValueToCoords(state, options);\n\n      // If the placement is the same and the arrow caused an alignment offset\n      // then we don't need to change the positioning coordinates.\n      if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n        return {};\n      }\n      return {\n        x: x + diffCoords.x,\n        y: y + diffCoords.y,\n        data: {\n          ...diffCoords,\n          placement\n        }\n      };\n    }\n  };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'shift',\n    options,\n    async fn(state) {\n      const {\n        x,\n        y,\n        placement\n      } = state;\n      const {\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = false,\n        limiter = {\n          fn: _ref => {\n            let {\n              x,\n              y\n            } = _ref;\n            return {\n              x,\n              y\n            };\n          }\n        },\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const crossAxis = getSideAxis(getSide(placement));\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      if (checkMainAxis) {\n        const minSide = mainAxis === 'y' ? 'top' : 'left';\n        const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n        const min = mainAxisCoord + overflow[minSide];\n        const max = mainAxisCoord - overflow[maxSide];\n        mainAxisCoord = clamp(min, mainAxisCoord, max);\n      }\n      if (checkCrossAxis) {\n        const minSide = crossAxis === 'y' ? 'top' : 'left';\n        const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n        const min = crossAxisCoord + overflow[minSide];\n        const max = crossAxisCoord - overflow[maxSide];\n        crossAxisCoord = clamp(min, crossAxisCoord, max);\n      }\n      const limitedCoords = limiter.fn({\n        ...state,\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      });\n      return {\n        ...limitedCoords,\n        data: {\n          x: limitedCoords.x - x,\n          y: limitedCoords.y - y,\n          enabled: {\n            [mainAxis]: checkMainAxis,\n            [crossAxis]: checkCrossAxis\n          }\n        }\n      };\n    }\n  };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    options,\n    fn(state) {\n      const {\n        x,\n        y,\n        placement,\n        rects,\n        middlewareData\n      } = state;\n      const {\n        offset = 0,\n        mainAxis: checkMainAxis = true,\n        crossAxis: checkCrossAxis = true\n      } = evaluate(options, state);\n      const coords = {\n        x,\n        y\n      };\n      const crossAxis = getSideAxis(placement);\n      const mainAxis = getOppositeAxis(crossAxis);\n      let mainAxisCoord = coords[mainAxis];\n      let crossAxisCoord = coords[crossAxis];\n      const rawOffset = evaluate(offset, state);\n      const computedOffset = typeof rawOffset === 'number' ? {\n        mainAxis: rawOffset,\n        crossAxis: 0\n      } : {\n        mainAxis: 0,\n        crossAxis: 0,\n        ...rawOffset\n      };\n      if (checkMainAxis) {\n        const len = mainAxis === 'y' ? 'height' : 'width';\n        const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n        const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n        if (mainAxisCoord < limitMin) {\n          mainAxisCoord = limitMin;\n        } else if (mainAxisCoord > limitMax) {\n          mainAxisCoord = limitMax;\n        }\n      }\n      if (checkCrossAxis) {\n        var _middlewareData$offse, _middlewareData$offse2;\n        const len = mainAxis === 'y' ? 'width' : 'height';\n        const isOriginSide = ['top', 'left'].includes(getSide(placement));\n        const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n        const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n        if (crossAxisCoord < limitMin) {\n          crossAxisCoord = limitMin;\n        } else if (crossAxisCoord > limitMax) {\n          crossAxisCoord = limitMax;\n        }\n      }\n      return {\n        [mainAxis]: mainAxisCoord,\n        [crossAxis]: crossAxisCoord\n      };\n    }\n  };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return {\n    name: 'size',\n    options,\n    async fn(state) {\n      var _state$middlewareData, _state$middlewareData2;\n      const {\n        placement,\n        rects,\n        platform,\n        elements\n      } = state;\n      const {\n        apply = () => {},\n        ...detectOverflowOptions\n      } = evaluate(options, state);\n      const overflow = await detectOverflow(state, detectOverflowOptions);\n      const side = getSide(placement);\n      const alignment = getAlignment(placement);\n      const isYAxis = getSideAxis(placement) === 'y';\n      const {\n        width,\n        height\n      } = rects.floating;\n      let heightSide;\n      let widthSide;\n      if (side === 'top' || side === 'bottom') {\n        heightSide = side;\n        widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n      } else {\n        widthSide = side;\n        heightSide = alignment === 'end' ? 'top' : 'bottom';\n      }\n      const maximumClippingHeight = height - overflow.top - overflow.bottom;\n      const maximumClippingWidth = width - overflow.left - overflow.right;\n      const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n      const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n      const noShift = !state.middlewareData.shift;\n      let availableHeight = overflowAvailableHeight;\n      let availableWidth = overflowAvailableWidth;\n      if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n        availableWidth = maximumClippingWidth;\n      }\n      if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n        availableHeight = maximumClippingHeight;\n      }\n      if (noShift && !alignment) {\n        const xMin = max(overflow.left, 0);\n        const xMax = max(overflow.right, 0);\n        const yMin = max(overflow.top, 0);\n        const yMax = max(overflow.bottom, 0);\n        if (isYAxis) {\n          availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n        } else {\n          availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n        }\n      }\n      await apply({\n        ...state,\n        availableWidth,\n        availableHeight\n      });\n      const nextDimensions = await platform.getDimensions(elements.floating);\n      if (width !== nextDimensions.width || height !== nextDimensions.height) {\n        return {\n          reset: {\n            rects: true\n          }\n        };\n      }\n      return {};\n    }\n  };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","import { extend } from '../../../vue';\nimport { PROP_TYPE_BOOLEAN, PROP_TYPE_BOOLEAN_STRING, PROP_TYPE_ARRAY_OBJECT_STRING, PROP_TYPE_STRING } from '../../../constants/props';\nimport { identity } from '../../../utils/identity';\nimport { isBoolean } from '../../../utils/inspect';\nimport { makeProp } from '../../../utils/props';\nimport { safeVueInstance } from '../../../utils/safe-vue-instance';\nimport { toString } from '../../../utils/string';\nimport { attrsMixin } from '../../../mixins/attrs';\n\n// Main `<table>` render mixin\n// Includes all main table styling options\n\n// --- Props ---\n\nconst props = {\n  bordered: makeProp(PROP_TYPE_BOOLEAN, false),\n  borderless: makeProp(PROP_TYPE_BOOLEAN, false),\n  captionTop: makeProp(PROP_TYPE_BOOLEAN, false),\n  dark: makeProp(PROP_TYPE_BOOLEAN, false),\n  fixed: makeProp(PROP_TYPE_BOOLEAN, false),\n  hover: makeProp(PROP_TYPE_BOOLEAN, false),\n  noBorderCollapse: makeProp(PROP_TYPE_BOOLEAN, false),\n  outlined: makeProp(PROP_TYPE_BOOLEAN, false),\n  responsive: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  small: makeProp(PROP_TYPE_BOOLEAN, false),\n  // If a string, it is assumed to be the table `max-height` value\n  stickyHeader: makeProp(PROP_TYPE_BOOLEAN_STRING, false),\n  striped: makeProp(PROP_TYPE_BOOLEAN, false),\n  tableClass: makeProp(PROP_TYPE_ARRAY_OBJECT_STRING),\n  tableVariant: makeProp(PROP_TYPE_STRING)\n};\n\n// --- Mixin ---\n\n// @vue/component\nconst tableRendererMixin = extend({\n  mixins: [attrsMixin],\n  provide() {\n    return {\n      getBvTable: () => this\n    };\n  },\n  // Don't place attributes on root element automatically,\n  // as table could be wrapped in responsive `<div>`\n  inheritAttrs: false,\n  props,\n  computed: {\n    isTableSimple() {\n      return false;\n    },\n    // Layout related computed props\n    isResponsive() {\n      const {\n        responsive\n      } = this;\n      return responsive === '' ? true : responsive;\n    },\n    isStickyHeader() {\n      let {\n        stickyHeader\n      } = this;\n      stickyHeader = stickyHeader === '' ? true : stickyHeader;\n      return this.isStacked ? false : stickyHeader;\n    },\n    wrapperClasses() {\n      const {\n        isResponsive\n      } = this;\n      return [this.isStickyHeader ? 'b-table-sticky-header' : '', isResponsive === true ? 'table-responsive' : isResponsive ? `table-responsive-${this.responsive}` : ''].filter(identity);\n    },\n    wrapperStyles() {\n      const {\n        isStickyHeader\n      } = this;\n      return isStickyHeader && !isBoolean(isStickyHeader) ? {\n        maxHeight: isStickyHeader\n      } : {};\n    },\n    tableClasses() {\n      let {\n        hover,\n        tableVariant,\n        selectableTableClasses,\n        stackedTableClasses,\n        tableClass,\n        computedBusy\n      } = safeVueInstance(this);\n      hover = this.isTableSimple ? hover : hover && this.computedItems.length > 0 && !computedBusy;\n      return [\n      // User supplied classes\n      tableClass,\n      // Styling classes\n      {\n        'table-striped': this.striped,\n        'table-hover': hover,\n        'table-dark': this.dark,\n        'table-bordered': this.bordered,\n        'table-borderless': this.borderless,\n        'table-sm': this.small,\n        // The following are b-table custom styles\n        'gl-border': this.outlined,\n        'b-table-fixed': this.fixed,\n        'b-table-caption-top': this.captionTop,\n        'b-table-no-border-collapse': this.noBorderCollapse\n      }, tableVariant ? `${this.dark ? 'bg' : 'table'}-${tableVariant}` : '',\n      // Stacked table classes\n      stackedTableClasses,\n      // Selectable classes\n      selectableTableClasses];\n    },\n    tableAttrs() {\n      const {\n        computedItems: items,\n        filteredItems,\n        computedFields: fields,\n        selectableTableAttrs,\n        computedBusy\n      } = safeVueInstance(this);\n      const ariaAttrs = this.isTableSimple ? {} : {\n        'aria-busy': toString(computedBusy),\n        'aria-colcount': toString(fields.length),\n        // Preserve user supplied `aria-describedby`, if provided\n        'aria-describedby': this.bvAttrs['aria-describedby'] || this.$refs.caption ? this.captionId : null\n      };\n      const rowCount = items && filteredItems && filteredItems.length > items.length ? toString(filteredItems.length) : null;\n      return {\n        // We set `aria-rowcount` before merging in `$attrs`,\n        // in case user has supplied their own\n        'aria-rowcount': rowCount,\n        // Merge in user supplied `$attrs` if any\n        ...this.bvAttrs,\n        // Now we can override any `$attrs` here\n        id: this.safeId(),\n        role: this.bvAttrs.role || 'table',\n        ...ariaAttrs,\n        ...selectableTableAttrs\n      };\n    }\n  },\n  render(h) {\n    const {\n      wrapperClasses,\n      renderCaption,\n      renderColgroup,\n      renderThead,\n      renderTbody,\n      renderTfoot\n    } = safeVueInstance(this);\n    const $content = [];\n    if (this.isTableSimple) {\n      $content.push(this.normalizeSlot());\n    } else {\n      // Build the `<caption>` (from caption mixin)\n      $content.push(renderCaption ? renderCaption() : null);\n\n      // Build the `<colgroup>`\n      $content.push(renderColgroup ? renderColgroup() : null);\n\n      // Build the `<thead>`\n      $content.push(renderThead ? renderThead() : null);\n\n      // Build the `<tbody>`\n      $content.push(renderTbody ? renderTbody() : null);\n\n      // Build the `<tfoot>`\n      $content.push(renderTfoot ? renderTfoot() : null);\n    }\n\n    // Assemble `<table>`\n    const $table = h('table', {\n      staticClass: 'table b-table',\n      class: this.tableClasses,\n      attrs: this.tableAttrs,\n      key: 'b-table'\n    }, $content.filter(identity));\n\n    // Add responsive/sticky wrapper if needed and return table\n    return wrapperClasses.length > 0 ? h('div', {\n      class: wrapperClasses,\n      style: this.wrapperStyles,\n      key: 'wrap'\n    }, [$table]) : $table;\n  }\n});\n\nexport { props, tableRendererMixin };\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var getTag = require('./_getTag'),\n    isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n  return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var createWrap = require('./_createWrap');\n\n/** Used to compose bitmasks for function metadata. */\nvar WRAP_ARY_FLAG = 128;\n\n/**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\nfunction ary(func, n, guard) {\n  n = guard ? undefined : n;\n  n = (func && n == null) ? func.length : n;\n  return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n}\n\nmodule.exports = ary;\n","import { extend } from '../../vue';\nimport { NAME_TABLE_LITE } from '../../constants/components';\nimport { sortKeys } from '../../utils/object';\nimport { makePropsConfigurable } from '../../utils/props';\nimport { attrsMixin } from '../../mixins/attrs';\nimport { hasListenerMixin } from '../../mixins/has-listener';\nimport { props as props$1, idMixin } from '../../mixins/id';\nimport { normalizeSlotMixin } from '../../mixins/normalize-slot';\nimport { props as props$2, captionMixin } from './helpers/mixin-caption';\nimport { props as props$3, colgroupMixin } from './helpers/mixin-colgroup';\nimport { props as props$4, itemsMixin } from './helpers/mixin-items';\nimport { props as props$5, stackedMixin } from './helpers/mixin-stacked';\nimport { props as props$6, tableRendererMixin } from './helpers/mixin-table-renderer';\nimport { props as props$7, tbodyMixin } from './helpers/mixin-tbody';\nimport { props as props$8, tfootMixin } from './helpers/mixin-tfoot';\nimport { props as props$9, theadMixin } from './helpers/mixin-thead';\n\n// --- Props ---\n\nconst props = makePropsConfigurable(sortKeys({\n  ...props$1,\n  ...props$2,\n  ...props$3,\n  ...props$4,\n  ...props$5,\n  ...props$6,\n  ...props$7,\n  ...props$8,\n  ...props$9\n}), NAME_TABLE_LITE);\n\n// --- Main component ---\n\n// @vue/component\nconst BTableLite = /*#__PURE__*/extend({\n  name: NAME_TABLE_LITE,\n  // Order of mixins is important!\n  // They are merged from first to last, followed by this component\n  mixins: [\n  // General mixins\n  attrsMixin, hasListenerMixin, idMixin, normalizeSlotMixin,\n  // Required table mixins\n  itemsMixin, tableRendererMixin, stackedMixin, theadMixin, tfootMixin, tbodyMixin,\n  // Table features mixins\n  // These are pretty lightweight, and are useful for lightweight tables\n  captionMixin, colgroupMixin],\n  props\n\n  // Render function is provided by `tableRendererMixin`\n});\n\nexport { BTableLite, props };\n","import { BTableLite } from '../../../vendor/bootstrap-vue/src/components/table/table-lite';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nconst {\n  tableClass\n} = BTableLite.options.props;\nvar script = {\n  name: 'GlTableLite',\n  components: {\n    BTableLite\n  },\n  inheritAttrs: false,\n  props: {\n    tableClass,\n    fields: {\n      type: Array,\n      required: false,\n      default: null\n    },\n    stickyHeader: {\n      type: Boolean,\n      default: false,\n      required: false\n    }\n  },\n  computed: {\n    stickyHeaderClass() {\n      return this.stickyHeader ? 'gl-table--sticky-header' : null;\n    },\n    localTableClass() {\n      return ['gl-table', this.tableClass, this.stickyHeaderClass];\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-table-lite',_vm._g(_vm._b({attrs:{\"table-class\":_vm.localTableClass,\"fields\":_vm.fields},scopedSlots:_vm._u([_vm._l((Object.keys(_vm.$scopedSlots)),function(slot){return {key:slot,fn:function(scope){return [_vm._t(slot,null,null,scope)]}}})],null,true)},'b-table-lite',_vm.$attrs,false),_vm.$listeners))};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n  var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n  result.lastIndex = regexp.lastIndex;\n  return result;\n}\n\nmodule.exports = cloneRegExp;\n","import GlIcon from '../../icon/icon';\nimport { ENTER, SPACE } from '../constants';\nimport { stopEvent } from '../../../../utils/utils';\nimport __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';\n\nvar script = {\n  name: 'GlListboxItem',\n  components: {\n    GlIcon\n  },\n  props: {\n    isSelected: {\n      type: Boolean,\n      default: false,\n      required: false\n    },\n    isFocused: {\n      type: Boolean,\n      default: false,\n      required: false\n    },\n    isCheckCentered: {\n      type: Boolean,\n      required: false,\n      default: false\n    }\n  },\n  computed: {\n    checkedClasses() {\n      if (this.isCheckCentered) {\n        return '';\n      }\n      return 'gl-mt-3 gl-self-start';\n    }\n  },\n  methods: {\n    toggleSelection() {\n      this.$emit('select', !this.isSelected);\n    },\n    onKeydown(event) {\n      const {\n        code\n      } = event;\n      if (code === ENTER || code === SPACE) {\n        stopEvent(event);\n        this.toggleSelection();\n      }\n    }\n  }\n};\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{staticClass:\"gl-new-dropdown-item\",attrs:{\"role\":\"option\",\"tabindex\":_vm.isFocused ? 0 : -1,\"aria-selected\":_vm.isSelected},on:{\"click\":_vm.toggleSelection,\"keydown\":_vm.onKeydown}},[_c('span',{staticClass:\"gl-new-dropdown-item-content\"},[_c('gl-icon',{class:[\n        'gl-new-dropdown-item-check-icon',\n        { 'gl-invisible': !_vm.isSelected },\n        _vm.checkedClasses ],attrs:{\"name\":\"mobile-issue-close\",\"data-testid\":\"dropdown-item-checkbox\"}}),_vm._v(\" \"),_c('span',{staticClass:\"gl-new-dropdown-item-text-wrapper\"},[_vm._t(\"default\")],2)],1)])};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = undefined;\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject */\n  \n  /* style inject SSR */\n  \n  /* style inject shadow dom */\n  \n\n  \n  const __vue_component__ = __vue_normalize__(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    false,\n    undefined,\n    undefined,\n    undefined\n  );\n\nexport default __vue_component__;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\nmodule.exports = baseSlice;\n"],"sourceRoot":""}