{"version":3,"sources":["webpack:///../../../src/components/VGrid/VRow.ts","webpack:///./src/mixins/shared/searchable/searchableMixin.js","webpack:///./src/views/folder/FolderDrawer.vue","webpack:///./src/mixins/folder/drawer/folderDrawerMixin.js","webpack:///src/views/folder/FolderDrawer.vue","webpack:///./src/views/folder/FolderDrawer.vue?496a","webpack:///./src/views/folder/FolderDrawer.vue?a034","webpack:///./src/mixins/shared/user/userMixin.js","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///./src/mixins/field/moreFieldsMixin.js","webpack:///../../src/util/mergeData.ts","webpack:///./src/model/document/documentModel.js","webpack:///./src/model/common/dataTable/dataTableConst.js"],"names":["breakpoints","ALIGNMENT","makeProps","prefix","def","reduce","props","val","upperFirst","alignValidator","str","includes","alignProps","type","String","default","validator","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","Object","keys","justify","alignContent","classMap","breakpointClass","prop","className","breakpoint","replace","toLowerCase","cache","Map","Vue","extend","name","functional","tag","dense","Boolean","noGutters","render","h","data","children","cacheKey","classList","get","forEach","value","push","set","mergeData","staticClass","class","searchableMixin","mixins","menuItemSettingsMixin","recordIconMixin","moreFieldsMixin","userMixin","isSearching","isApplyingSearch","categorySearchableFields","recordTypes","recordStates","filterError","undefined","filterFieldsCount","menuFilterVisible","selectedFlyingFields","iconArrowDownDrop","iconHint","fieldRecordId","this","createSearchableField","findSearchableProperty","searchableProperty","id","fieldRecordName","fieldRecordOwner","owner","fieldRecordCreator","creator","fieldRecordExtension","extension","fieldRecordVersion","version","fieldRecordPages","pages","fieldCreatedFrom","createdDateFrom","fieldCreatedTo","createdDateTo","fieldModifiedFrom","modifiedDateFrom","fieldModifiedTo","modifiedDateTo","fieldRecordType","typeId","fieldRecordState","stateId","fieldRecordCategory","categoryId","fieldChildrenOnly","childrenOnly","fieldFullText","createFullTextField","fieldUniversalSearch","createUniversalSearchField","userFieldModel","enableUniversalSearch","headerColor","colorTheme","warning","iconWarning","computed","searchValue","selectedCategory","categoryFields","_this$selectedCategor","_this$selectedCategor2","fields","selectedRecordCategoryId","_this$fieldRecordCate","_this$fieldRecordCate2","selectedRecordTypeIcon","_this$fieldRecordType","_this$fieldRecordType2","recordTypeIcon","recordType","RECORD","recordProps","field","mappingHeaderNames","fieldName","createdBy","creationDate","modificationDate","state","pageCount","searchableRecordProperties","_this$recordProps","console","log","rp","include","hasSearchableValue","operator","searchableRecordFields","searchableFields","searchableRecordFieldsCriteria","el","find","sf","Id","rangeFields","filter","rf","isRange","length","isRangeFromOperator","Operator","Include","Value","visibleSearchFileProperties","FILE","searchableRecordTypes","searchableRecordStates","_this$fieldRecordType3","recordTypeId","searchableNumericFieldValue","recordTypeStates","recordCategorySearchCriteria","_this$selectedCategor3","_this$selectedCategor4","searchOperators","searchOperator","equal","includableRecordFields","_this$categorySearcha","_this$categorySearcha2","_this$selectedFlyingF","_this$selectedFlyingF2","flyingFields","_this$selectedFlyingF3","_this$selectedFlyingF4","fieldModel","createQueryFieldModel","searchCategoryFields","searchFlyingFields","showFilterError","isEmpty","dismissibleFilterError","hasFilter","searchCriteriaCount","filterTooltip","visibleFilterBadge","filterBadgeMessage","filterBadgeColorClass","getSuccessColorClass","getSecondaryLightColorClass","filterSearchableRecordProps","_this$recordProps2","_rp$field","hasSearchableRecordProps","_this$filterSearchabl","_this$filterSearchabl2","filterAdvancedSearchableRecordProps","_this$recordProps3","_rp$field2","_rp$field3","_rp$field4","hasAdvancedSearchableRecordProps","_this$filterAdvancedS","_this$filterAdvancedS2","hasFullTextCriteria","hasUniversalSearchCriteria","filterSearchableRecordCategoryFields","_this$categorySearcha3","_this$categorySearcha4","fld","hasSearchableRecordCategoryFields","_this$filterSearchabl3","_this$filterSearchabl4","filterAdvancedSearchableRecordCategoryFields","_this$recordProps4","searchableRecordProps","_rp$field5","map","hasAdvancedSearchableRecordCategoryFields","_this$filterAdvancedS3","_this$filterAdvancedS4","filterSearchableFlyingFields","_this$selectedFlyingF5","hasSearchableFlyingFields","_this$filterSearchabl5","_this$filterSearchabl6","filterHeaderRecord","filterHeaderFullText","filterHeaderUniversalSearch","filterHeaderCategoryFields","filterHeaderMoreFields","commandSearchLabel","commandApplyLabel","commandSearchReset","commandSearchCancelLabel","commandCloseSearchDialogTooltip","commandBrowseTooltip","commandSaveTooltip","commandResetTooltip","commandSearchLabelTooltip","commandApplyLabelTooltip","filterHeaderMore","isPerformingSearch","_this$searchCriteriaL","_this$searchCriteriaL2","searchCriteriaList","canSearchWithinRecord","criteria","srp","recordPropCriteriaToString","fullTextCriteriaToString","fieldCriteriaToString","universalSearchCriteriaToString","advancedCriteriaList","advancedCriteria","indexToRemove","findIndex","splice","getDisabledSearchReason","reasonBuilder","join","methods","isValidMoreField","_this$selectedFlyingF6","isAllowedViewField","isFlyingField","countSearchableFilterProps","itemCount","p","_p$value$toString","_p$value","toString","countSearchableFilterFields","_fields$filter$length","_fields$filter","f","setSearchCategory","warn","resetSearchableRecordProperties","e","error","loadSearchRecordProps","_prop$include","_prop$value","op","operators","defaultSearchOperator","fieldDataType","globalSearchProp","_this$fieldUniversalS","_globalSearchProp$val","defaultSearchableRecordProps","defaultHeaders","headers","visible","headerName","actions","vh","hrp","mapHeadersSearchableRecordProps","headerValue","sp","propName","loadSearchRecordFields","_fields$find","_fullText$Value","_fields$filter2","$options","fullText","_fieldsById$length","_fieldFrom$Value","_fieldFrom$Include","_fieldFrom$Operator","fieldsById","fieldFrom","isFieldRangeSearchable","_fieldTo$Value","_fieldTo$Include","_fieldTo$Operator","fieldTo","defaultSearchRangeToOperator","sff","userField","findUserField","isAddFlyingField","existsSelectedFlyingField","_fields$length","_fieldFrom$Value2","_fieldFrom$Include2","_fieldFrom$Operator2","sffEl","flyingField","label","getSearchOperators","_fields$length2","_fieldTo$Value2","_fieldTo$Include2","_fieldTo$Operator2","flyingFieldTo","recordPropertySearchCriteria","propId","_this$recordProps5","searchableFieldValue","fieldValue","rangeTo","_field$lookup","_field$searchOperator3","selectOperator","_field$searchOperator","_field$searchOperator2","lookup","databaseLookup","enforce","items","foundOperator","rangeToOperators","_findFieldType$search","_findFieldType","fieldType","TEXT","findFieldType","_findFieldType$search2","_findFieldType2","_field$fieldDataType","isRangeSearchable","getRangeToField","fieldTypeId","ft","fieldTypes","_this$selectedFlyingF7","_this$selectedFlyingF8","onRemoveFlyingField","index","indexOf","fieldIds","_fieldIds$filter","_ids$length","addMoreFieldsError","ids","count","addFlyingField","visibleMoreFields","_formField$lookup$dat","_formField","_formField$lookup$enf","_formField2","_formField$lookup$ite","_formField3","formField","findFormField","setFormField","buildSearchPayload","withInId","pageNumber","isCategoryModule","_this$perPageCount","Name","Owner","Creator","CreatedDateFrom","CreatedDateTo","ModifiedDateFrom","ModifiedDateTo","TypeId","StateId","Extension","Version","Pages","CategoryId","Fields","WithInId","ChildrenOnly","StartPage","CountPerPage","perPageCount","hasSearchCriteria","excludeWithInId","insertIncludableRecordFields","i","text","setRecordPropertyHeadersVisibility","header","findHeader","panelHeaderClass","strong","Text","mdMenuItemColor","fontEmphasis","bold","regular","getClassText","_ref","_prop$field$label","_prop$field$value","category","findCategory","formatSearchCriteria","_prop$field$value2","rt","findRecordType","_prop$field$value3","rs","findRecordState","categoryCriteriaToString","populateUserSearchTemplateData","model","_model$Id$Value","_model$Id","_this$fieldRecordId$i","_this$fieldRecordId","_model$Id$Operator","_model$Id2","_model$Name$Value","_model$Name","_this$fieldRecordName","_this$fieldRecordName2","_model$Name$Operator","_model$Owner$Value","_model$Owner","_this$fieldRecordOwne","_this$fieldRecordOwne2","_model$Owner$Operator","_model$Creator$Value","_model$Creator","_this$fieldRecordCrea","_this$fieldRecordCrea2","_model$Creator$Operat","_model$Extension$Valu","_model$Extension","_this$fieldRecordExte","_this$fieldRecordExte2","_model$Extension$Oper","_model$Version$Value","_model$Version","_this$fieldRecordVers","_this$fieldRecordVers2","_model$Version$Operat","_model$Pages$Value","_model$Pages","_this$fieldRecordPage","_this$fieldRecordPage2","_model$Pages$Operator","_model$CreatedDateFro","_model$CreatedDateFro2","_this$fieldCreatedFro","_this$fieldCreatedFro2","_model$CreatedDateFro3","_model$CreatedDateFro4","_model$CreatedDateTo$","_model$CreatedDateTo","_this$fieldCreatedTo$","_this$fieldCreatedTo","_model$CreatedDateTo$2","_model$CreatedDateTo2","_model$ModifiedDateFr","_model$ModifiedDateFr2","_this$fieldModifiedFr","_this$fieldModifiedFr2","_model$ModifiedDateFr3","_model$ModifiedDateFr4","_model$ModifiedDateTo","_model$ModifiedDateTo2","_this$fieldModifiedTo","_this$fieldModifiedTo2","_model$ModifiedDateTo3","_model$ModifiedDateTo4","_model$TypeId$Value","_model$TypeId","_this$fieldRecordType4","_this$fieldRecordType5","_model$TypeId$Operato","_model$TypeId2","_model$StateId$Value","_model$StateId","_this$fieldRecordStat","_this$fieldRecordStat2","_model$StateId$Operat","_model$StateId2","_model$CategoryId$Val","_model$CategoryId","_this$fieldRecordCate3","_this$fieldRecordCate4","_model$CategoryId$Ope","_model$CategoryId2","_model$GlobalSearch","polishUserModel","GlobalSearch","key","populateSearchField","_this$fieldRecordName3","_this$fieldRecordName4","nameFieldValue","_this$fieldRecordName5","search","updateEnableUniversalSearch","some","buildUniversalSearchPayload","payload","watch","handler","async","_this$categoryFields","immediate","fn","_c","attrs","callback","searchDrawerItemName","expression","enableDisplayMore","$event","scopedSlots","proxy","_vm","closeMoveRecordDialog","onCopyRecordAction","visibleCopyRecordDialog","on","visibleDialogDelete","visibleReferDialog","agendaItemTemplates","visibleDeferDialog","visibleUploadLocalFileDialog","onUploadLocalFile","close","visibleDialogPasteShortcut","onPasteShortcutRecordAction","visibleBatchMoveRecordsDialog","batchMoveOperation","closeBatchMoveRecordsDialog","closeBatchMoveItemsDialog","onItemsSubmitRecall","closeSubmitRecallAgendaItemsDialog","snackbarTop","snackbarVisible","snackbarText","staticRenderFns","mapState","mapMutations","mapGetters","mapActions","createNamespacedHelpers","folderDrawerMixin","moduleItemsDrawerMixin","browsableFolderMixin","badgeableRecordMixin","records","breadcrumbs","record","movedRecord","movedRecords","recordMode","recordDeleted","fetchRecordListById","_this$records2","_this$records","defaultSelectModuleItemId","lastBreadcrumbId","setChildRecords","setBreadcrumbs","setParentBreadcrumbs","moveRecord","moveMeetingContents","moveBackupMaterial","copyRecord","moveRecordShortcut","copyRecordShortcut","deleteRecord","referAgendaItem","deferAgendaItem","uploadFile","checkInFile","pasteRecordShortcut","deleteRecordShortcut","setSearchedChildRecords","submitMeetingAgendaItems","submitSectionAgendaItems","recallMeetingAgendaItems","recallSectionAgendaItems","setDrawerMini","SET_DRAWER_MINI","setMovedRecord","SET_MOVED_RECORD","setMovedRecords","SET_MOVED_RECORDS","setLocalUploadedFile","SET_LOCAL_UPLOADED_FILE","setRecords","SET_RECORDS","appendRecords","APPEND_RECORDS","setRecordDeleteStatus","SET_RECORD_DELETE_STATUS","updateRecordListById","UPDATE_RECORD_LIST_BY_ID","getStoredSelectedModuleItemId","getStoredSelectedModuleExpandedId","_this$startIndex","_this$recordsFetchCou","_this$record","_this$$router$current","_this$$router","clearError","isLoading","recordIndex","startIndex","recordsFetchCount","parentId","Number","$router","currentRoute","params","expandedId","handleError","loading","serverSearchPerformed","components","ParentRecordNavigator","RecordList","component","principalMixin","currentUser","repositories","categoryTypes","actorName","userCategories","userFields","formFields","countUserFields","isPersistentField","isSystemField","countUserCategories","createRecordCategories","createRecordCategoriesByCategoryType","updateRecordCategories","updateRecordCategoriesByCategoryType","isAllowedModifyField","isAllowedSystemOperation","isUserLoggedIn","repository","allowedAccessWFProjects","systemOperations","accessWFProjects","allowedAccessClerkModule","accessClerkModule","breakpointProps","offsetProps","orderProps","col","offset","order","cols","alignSelf","parent","hasColClasses","startsWith","iconAdd","moreFields","_this$userFields","availableFields","validFields","onSelectMoreFieldsCancel","onSelectMoreFieldsOk","pattern","styleList","styleProp","parseStyle","style","styleMap","s","split","trim","camelize","mergeTarget","arguments","mergeClasses","mergeStyles","mergeListeners","target","source","wrapInArray","concat","args","dest","arg","event","freeze","flags","hasImage","versionDate","fieldLabel","isPublicAccess","headerText","sortable","fieldDownloadType","asItIs","asPdf"],"mappings":"yMAOA,MAAMA,EAAc,CAAC,KAAM,KAAM,KAAM,MAEjCC,EAAY,CAAC,QAAS,MAAO,UAEnC,SAASC,EAAWC,EAAgBC,GAClC,OAAOJ,EAAYK,OAAO,CAACC,EAAOC,KAChCD,EAAMH,EAASK,eAAWD,IAAQH,IAC3BE,GACN,IAGL,MAAMG,EAAkBC,GAAa,IAAIT,EAAW,WAAY,WAAWU,SAASD,GAC9EE,EAAaV,EAAU,QAAS,KAAM,CAC1CW,KAAMC,OACNC,QAAS,KACTC,UAAWP,KAGPQ,EAAoBP,GAAa,IAAIT,EAAW,gBAAiB,gBAAgBU,SAASD,GAC1FQ,EAAehB,EAAU,UAAW,KAAM,CAC9CW,KAAMC,OACNC,QAAS,KACTC,UAAWC,KAGPE,EAAyBT,GAAa,IAAIT,EAAW,gBAAiB,eAAgB,WAAWU,SAASD,GAC1GU,EAAoBlB,EAAU,eAAgB,KAAM,CACxDW,KAAMC,OACNC,QAAS,KACTC,UAAWG,KAGPE,EAAU,CACdC,MAAOC,OAAOC,KAAKZ,GACnBa,QAASF,OAAOC,KAAKN,GACrBQ,aAAcH,OAAOC,KAAKJ,IAGtBO,EAAW,CACfL,MAAO,QACPG,QAAS,UACTC,aAAc,iBAGhB,SAASE,EAAiBf,EAA4BgB,EAActB,GAClE,IAAIuB,EAAYH,EAASd,GACzB,GAAW,MAAPN,EAAJ,CAGA,GAAIsB,EAAM,CAER,MAAME,EAAaF,EAAKG,QAAQnB,EAAM,IACtCiB,GAAa,IAAIC,EAInB,OADAD,GAAa,IAAIvB,EACVuB,EAAUG,eAGnB,MAAMC,EAAQ,IAAIC,IAEHC,cAAIC,OAAO,CACxBC,KAAM,QACNC,YAAY,EACZjC,MAAO,CACLkC,IAAK,CACH3B,KAAMC,OACNC,QAAS,OAEX0B,MAAOC,QACPC,UAAWD,QACXpB,MAAO,CACLT,KAAMC,OACNC,QAAS,KACTC,UAAWP,MAEVG,EACHa,QAAS,CACPZ,KAAMC,OACNC,QAAS,KACTC,UAAWC,MAEVC,EACHQ,aAAc,CACZb,KAAMC,OACNC,QAAS,KACTC,UAAWG,MAEVC,GAELwB,OAAQC,GAAG,MAAEvC,EAAF,KAASwC,EAAT,SAAeC,IAExB,IAAIC,EAAW,GACf,IAAK,MAAMnB,KAAQvB,EACjB0C,GAAYlC,OAAQR,EAAcuB,IAEpC,IAAIoB,EAAYf,EAAMgB,IAAIF,GAE1B,IAAKC,EAAW,CAGd,IAAIpC,EACJ,IAAKA,KAHLoC,EAAY,GAGC5B,EACXA,EAAQR,GAAMsC,QAAQtB,IACpB,MAAMuB,EAAiB9C,EAAcuB,GAC/BC,EAAYF,EAAgBf,EAAMgB,EAAMuB,GAC1CtB,GAAWmB,EAAWI,KAAKvB,KAInCmB,EAAUI,KAAK,CACb,aAAc/C,EAAMqC,UACpB,aAAcrC,EAAMmC,MACpB,CAAC,SAASnC,EAAMgB,OAAUhB,EAAMgB,MAChC,CAAC,WAAWhB,EAAMmB,SAAYnB,EAAMmB,QACpC,CAAC,iBAAiBnB,EAAMoB,cAAiBpB,EAAMoB,eAGjDQ,EAAMoB,IAAIN,EAAUC,GAGtB,OAAOJ,EACLvC,EAAMkC,IACNe,eAAUT,EAAM,CACdU,YAAa,MACbC,MAAOR,IAETF,O,gPCvEC,MAAMW,EAAkB,CAC7BC,OAAQ,CAACC,OAAuBC,OAAiBC,OAAiBC,QAClEjB,OACE,MAAO,CACLkB,aAAa,EACbC,kBAAkB,EAClBC,yBAA0B,GAC1BC,YAAaA,OACbC,aAAcA,OAGdC,iBAAaC,EACbC,kBAAmB,EACnBC,mBAAmB,EAGnBC,qBAAsB,GAGtBC,kBAAmBA,OACnBC,SAAUA,QAOVC,cAAeC,KAAKC,sBAClBC,eAAuBC,OAAmBC,KAE5CC,gBAAiBL,KAAKC,sBACpBC,eAAuBC,OAAmB1C,OAE5C6C,iBAAkBN,KAAKC,sBACrBC,eAAuBC,OAAmBI,QAE5CC,mBAAoBR,KAAKC,sBACvBC,eAAuBC,OAAmBM,UAE5CC,qBAAsBV,KAAKC,sBACzBC,eAAuBC,OAAmBQ,YAE5CC,mBAAoBZ,KAAKC,sBACvBC,eAAuBC,OAAmBU,UAE5CC,iBAAkBd,KAAKC,sBACrBC,eAAuBC,OAAmBY,QAE5CC,iBAAkBhB,KAAKC,sBACrBC,eAAuBC,OAAmBc,iBAC1C,MACA,GACA,EACA,MAEFC,eAAgBlB,KAAKC,sBACnBC,eAAuBC,OAAmBgB,eAC1C,MACA,GACA,EACA,MAEFC,kBAAmBpB,KAAKC,sBACtBC,eAAuBC,OAAmBkB,kBAC1C,MACA,GACA,EACA,MAEFC,gBAAiBtB,KAAKC,sBACpBC,eAAuBC,OAAmBoB,gBAC1C,MACA,GACA,EACA,MAEFC,gBAAiBxB,KAAKC,sBACpBC,eAAuBC,OAAmBsB,SAE5CC,iBAAkB1B,KAAKC,sBACrBC,eAAuBC,OAAmBwB,UAK5CC,oBAAqB5B,KAAKC,sBACxBC,eAAuBC,OAAmB0B,aAE5CC,kBAAmB9B,KAAKC,sBACtBC,eAAuBC,OAAmB4B,eAK5CC,cAAehC,KAAKiC,sBACpBC,qBAAsBlC,KAAKmC,6BAC3BC,oBAAgB3C,EAChB4C,uBAAuB,EACvBC,YAAaC,OAAWC,QACxBC,YAAaA,UAGjBC,SAAU,CAKRC,cACE,OAAO3C,KAAKqC,2BACR5C,EACAO,KAAKkC,qBAAqB3D,OAOhCqE,qBAOAC,iBAAiB,IAAAC,EAAAC,EACf,OAAoC,QAApCD,EAA4B,QAA5BC,EAAO/C,KAAK4C,wBAAgB,IAAAG,OAAA,EAArBA,EAAuBC,cAAM,IAAAF,IAAI,IAM1CG,2BAA2B,IAAAC,EAAAC,EACzB,OAAsC,QAAtCD,EAA+B,QAA/BC,EAAOnD,KAAK4B,2BAAmB,IAAAuB,OAAA,EAAxBA,EAA0B5E,aAAK,IAAA2E,KAAK,GAM7CE,yBAAyB,IAAAC,EAAAC,EACvB,OAAOtD,KAAKuD,eACiB,QADHF,EACJ,QADIC,EACxBtD,KAAKwB,uBAAe,IAAA8B,OAAA,EAApBA,EAAsB/E,aAAK,IAAA8E,IAAIG,OAAWC,SAO9CC,cACE,MAAO,CACL,CAAEjG,KAAM0C,OAAmBC,GAAIuD,MAAO3D,KAAKD,eAC3C,CAAEtC,KAAM0C,OAAmB1C,KAAMkG,MAAO3D,KAAKK,iBAC7C,CAAE5C,KAAM0C,OAAmBI,MAAOoD,MAAO3D,KAAKM,kBAC9C,CAAE7C,KAAM0C,OAAmBM,QAASkD,MAAO3D,KAAKQ,oBAChD,CACE/C,KAAM0C,OAAmBc,gBACzB0C,MAAO3D,KAAKgB,kBAEd,CAAEvD,KAAM0C,OAAmBgB,cAAewC,MAAO3D,KAAKkB,gBACtD,CACEzD,KAAM0C,OAAmBkB,iBACzBsC,MAAO3D,KAAKoB,mBAEd,CACE3D,KAAM0C,OAAmBoB,eACzBoC,MAAO3D,KAAKsB,iBAEd,CAAE7D,KAAM0C,OAAmBsB,OAAQkC,MAAO3D,KAAKwB,iBAC/C,CAAE/D,KAAM0C,OAAmBwB,QAASgC,MAAO3D,KAAK0B,kBAChD,CACEjE,KAAM0C,OAAmBQ,UACzBgD,MAAO3D,KAAKU,sBAEd,CAAEjD,KAAM0C,OAAmBU,QAAS8C,MAAO3D,KAAKY,oBAChD,CAAEnD,KAAM0C,OAAmBY,MAAO4C,MAAO3D,KAAKc,kBAC9C,CACErD,KAAM0C,OAAmB0B,WACzB8B,MAAO3D,KAAK4B,qBAEd,CAAEnE,KAAM0C,OAAmB4B,aAAc4B,MAAO3D,KAAK8B,qBAOzD8B,qBACE,MAAO,CACL,CAAEnG,KAAMoG,OAAUL,WAAYG,MAAO3D,KAAKwB,iBAC1C,CAAE/D,KAAMoG,OAAUzD,GAAIuD,MAAO3D,KAAKD,eAClC,CAAEtC,KAAMoG,OAAUtD,MAAOoD,MAAO3D,KAAKM,kBACrC,CAAE7C,KAAMoG,OAAUC,UAAWH,MAAO3D,KAAKQ,oBACzC,CAAE/C,KAAMoG,OAAUE,aAAcJ,MAAO3D,KAAKgB,kBAC5C,CAAEvD,KAAMoG,OAAUG,iBAAkBL,MAAO3D,KAAKoB,mBAChD,CAAE3D,KAAMoG,OAAUI,MAAON,MAAO3D,KAAK0B,kBACrC,CAAEjE,KAAMoG,OAAUK,UAAWP,MAAO3D,KAAKc,kBACzC,CAAErD,KAAMoG,OAAUlD,UAAWgD,MAAO3D,KAAKU,sBACzC,CAAEjD,KAAMoG,OAAUhD,QAAS8C,MAAO3D,KAAKY,sBAO3CuD,6BAA6B,IAAAC,EAC3B,MAAM3I,EAAQ,GA4Bd,OA1BA4I,QAAQC,IACN,iDACAtE,KAAK0D,aAGS,QAAhBU,EAAApE,KAAK0D,mBAAW,IAAAU,GAAhBA,EAAkB9F,QAAQiG,KACpBA,EAAGZ,MAAMa,SAAWC,eAAmBF,EAAGZ,SAC5ClI,EAAM+C,KAAK,CACTf,KAAM8G,EAAG9G,KACT+G,QAASD,EAAGZ,MAAMa,QAClBE,SAAUH,EAAGZ,MAAMe,SACnBnG,MAAOgG,EAAGZ,MAAMpF,UAMlByB,KAAKkC,qBAAqB3D,OAC5B9C,EAAM+C,KAAK,CACTf,KAAMuC,KAAKkC,qBAAqBzE,KAChC+G,QAASxE,KAAKkC,qBAAqBsC,QACnCE,SAAU1E,KAAKkC,qBAAqBwC,SACpCnG,MAAOyB,KAAKkC,qBAAqB3D,QAI9B9C,GAETkJ,yBACE,MAAMC,EAAmB,GACnB5B,EAAShD,KAAK6E,gCAAkC,GAqDtD,OAlDM,OAAN7B,QAAM,IAANA,KAAQ1E,QAAQwG,IACd,IAAKF,EAAiBG,KAAKC,GAAMA,EAAGC,KAAOH,EAAGG,IAAK,CACjD,MAAMC,EAAclC,EAAOmC,OAAOC,GAAMA,EAAGH,KAAOH,EAAGG,KAAO,GACtDI,EACJH,EAAYI,OAAS,GACrBC,eAAoBL,EAAY,GAAGM,UAEjCH,EACFH,EAAY5G,QAAQ8G,IAClBR,EAAiBpG,KAAK4G,KAGpBF,EAAYI,OAAS,GACvBV,EAAiBpG,KAAK0G,EAAY,OAO1ClF,KAAKJ,qBAAqBtB,QAAQwG,IAChC,IAAKF,EAAiBG,KAAKC,GAAMA,EAAGC,KAAOH,EAAG1E,IAAK,CACjD,MAAM8E,EACJlF,KAAKJ,qBAAqBuF,OAAOC,GAAMA,EAAGhF,KAAO0E,EAAG1E,KAAO,GACvDiF,EACJH,EAAYI,OAAS,GACrBC,eAAoBL,EAAY,GAAGR,UAEjCW,EACFH,EAAY5G,QAAQ8G,IAClBR,EAAiBpG,KAAK,CACpByG,GAAIG,EAAGhF,GACPqF,QAASL,EAAGZ,QACZkB,MAAON,EAAG7G,MACViH,SAAUJ,EAAGV,aAIbQ,EAAYI,OAAS,GACvBV,EAAiBpG,KAAK,CACpByG,GAAIC,EAAY,GAAG9E,GACnBqF,QAASP,EAAY,GAAGV,QACxBkB,MAAOR,EAAY,GAAG3G,MACtBiH,SAAUN,EAAY,GAAGR,cAO5BE,GAETe,8BACE,OAAO3F,KAAKwB,gBAAgBjD,QAAUiF,OAAWoC,MAEnDC,wBACE,OAAO7F,KAAKV,aAMdwG,yBAAyB,IAAAC,EACvB,MAAMC,EAAeC,eACC,QAD0BF,EAC9C/F,KAAKwB,uBAAe,IAAAuE,OAAA,EAApBA,EAAsBxH,OAGxB,OAAOyH,GAAgB,EACnBE,eAAiBF,GACjBhG,KAAKT,cAMX4G,+BAA+B,IAAAC,EAAAC,EAC7B,MAAO,CACLb,SAAUc,OAAgBC,OAAeC,OAAO9B,UAAY,GAC5DgB,MAAgC,QAA3BU,EAAuB,QAAvBC,EAAErG,KAAK4C,wBAAgB,IAAAyD,OAAA,EAArBA,EAAuBjG,UAAE,IAAAgG,KAAK,IAOzCK,yBAAyB,IAAAC,EAAAC,EAAAC,EAAAC,EACvB,MAAM7D,EAAS,GAGTH,EACmD,QADrC6D,EACW,QADXC,EAClB3G,KAAKX,gCAAwB,IAAAsH,OAAA,EAA7BA,EAA+BxB,OAAOL,GAAMA,EAAGN,gBAAQ,IAAAkC,IAAI,GAE7D7D,EAAevE,QAAQqF,IACrBX,EAAOxE,KAAKmF,EAAMvD,MAIpB,MAAM0G,EAC+C,QADnCF,EACS,QADTC,EAChB7G,KAAKJ,4BAAoB,IAAAiH,OAAA,EAAzBA,EAA2B1B,OAAOL,GAAMA,EAAGN,gBAAQ,IAAAoC,IAAI,GAMzD,OAJAE,EAAaxI,QAAQqF,IACnBX,EAAOxE,KAAKmF,EAAMvD,MAGb4C,GAMT6B,iCAAiC,IAAAkC,EAAAC,EAK/B,MAAMhE,EAAS,GAGf,GAAIhD,KAAKgC,cAAczD,MAAO,CAC5B,MAAM0I,EAAaC,eACjBlH,KAAKgC,cAAc5B,GACnBJ,KAAKgC,cAAcwC,QACnBxE,KAAKgC,cAAc0C,SACnB1E,KAAKgC,cAAczD,OAErByE,EAAOxE,KAAKyI,GAId,MAAME,EACJnH,KAAKX,yBAAyB8F,OAAOL,GAAMA,EAAGvG,OAASuG,EAAGN,UAC1D,GAEF2C,EAAqB7I,QAAQqF,IAC3B,MAAMsD,EAAaC,eACjBvD,EAAMvD,GACNuD,EAAMa,QACNb,EAAMe,SACNf,EAAMpF,OAERyE,EAAOxE,KAAKyI,KAId,MAAMG,EAC2D,QADzCL,EACG,QADHC,EACtBhH,KAAKJ,4BAAoB,IAAAoH,OAAA,EAAzBA,EAA2B7B,OAAOL,GAAMA,EAAGvG,OAASuG,EAAGN,gBAAQ,IAAAuC,IAAI,GAYrE,OAVAK,EAAmB9I,QAAQqF,IACzB,MAAMsD,EAAaC,eACjBvD,EAAMvD,GACNuD,EAAMa,QACNb,EAAMe,SACNf,EAAMpF,OAERyE,EAAOxE,KAAKyI,KAGPjE,GAETqE,gBAAiB,CACfhJ,MACE,OAAQiJ,eAAQtH,KAAKR,cAEvBf,IAAIF,GACGA,IACHyB,KAAKR,YAAc,MAIzB+H,yBACE,OAAO,GAOTC,YACE,OAAOxH,KAAKyH,oBAAsB,GAOpCC,gBACE,MAAO,wBAAwB1H,KAAKyH,qBAOtCE,qBACE,OAAO,GAOTC,qBACE,MAAO,GAAG5H,KAAKyH,qBAQjBI,wBACE,OAAO7H,KAAKyH,oBAAsB,EAC9BK,iBACAC,kBAENC,8BAA8B,IAAAC,EAC5B,OAAuB,QAAvBA,EAAOjI,KAAK0D,mBAAW,IAAAuE,OAAA,EAAhBA,EAAkB9C,OACvBZ,IAAE,IAAA2D,EAAA,OACE,OAAF3D,QAAE,IAAFA,GAAS,QAAP2D,EAAF3D,EAAIZ,aAAK,IAAAuE,OAAA,EAATA,EAAWzK,QAAS0C,OAAmB4B,cACvC0C,eAAmBF,EAAGZ,UAG5BwE,2BAA2B,IAAAC,EAAAC,EACzB,OAAiD,QAA1CD,EAAK,OAAJpI,WAAI,IAAJA,MAAiC,QAA7BqI,EAAJrI,KAAMgI,mCAA2B,IAAAK,OAAA,EAAjCA,EAAmC/C,cAAM,IAAA8C,IAAI,GAAK,GAO5DE,sCAAsC,IAAAC,EACpC,OAAuB,QAAvBA,EAAOvI,KAAK0D,mBAAW,IAAA6E,OAAA,EAAhBA,EAAkBpD,OACvBZ,IAAE,IAAAiE,EAAAC,EAAAC,EAAA,OACE,OAAFnE,QAAE,IAAFA,GAAS,QAAPiE,EAAFjE,EAAIZ,aAAK,IAAA6E,OAAA,EAATA,EAAW/K,QAAS0C,OAAmB4B,eACrC,OAAFwC,QAAE,IAAFA,GAAS,QAAPkE,EAAFlE,EAAIZ,aAAK,IAAA8E,OAAA,EAATA,EAAWhL,QAAS0C,OAAmB0B,aACrC,OAAF0C,QAAE,IAAFA,GAAS,QAAPmE,EAAFnE,EAAIZ,aAAK,IAAA+E,OAAA,EAATA,EAAWjL,QAAS0C,OAAmB1C,MACvCgH,eAAmBF,EAAGZ,UAK5BgF,mCAAmC,IAAAC,EAAAC,EACjC,OAAyD,QAAlDD,EAAK,OAAJ5I,WAAI,IAAJA,MAAyC,QAArC6I,EAAJ7I,KAAMsI,2CAAmC,IAAAO,OAAA,EAAzCA,EAA2CvD,cAAM,IAAAsD,IAAI,GAAK,GAEpEE,sBACE,OAAQxB,eAAQtH,KAAKgC,cAAczD,QAErCwK,6BACE,OAAQzB,eAAQtH,KAAKkC,qBAAqB3D,QAE5CyK,uCAAuC,IAAAC,EAAAC,EACrC,OACuE,QADvED,EAC+B,QAD/BC,EACElJ,KAAKX,gCAAwB,IAAA6J,OAAA,EAA7BA,EAA+B/D,OAAOgE,GAAO1E,eAAmB0E,WAAK,IAAAF,IACrE,IAGJG,oCAAoC,IAAAC,EAAAC,EAClC,OAAyD,QAAlDD,EAA0C,QAA1CC,EAACtJ,KAAKgJ,4CAAoC,IAAAM,OAAA,EAAzCA,EAA2ChE,cAAM,IAAA+D,IAAI,GAAK,GAOpEE,+CAA+C,IAAAC,EAC7C,MAAMC,EAAwC,QAAnBD,EAAGxJ,KAAK0D,mBAAW,IAAA8F,OAAA,EAAhBA,EAC1BrE,OACAZ,IAAE,IAAAmF,EAAA,OACE,OAAFnF,QAAE,IAAFA,GAAS,QAAPmF,EAAFnF,EAAIZ,aAAK,IAAA+F,OAAA,EAATA,EAAWjM,QAAS0C,OAAmB0B,YACvC4C,eAAmBF,EAAGZ,SAEzBgG,IAAIpF,GAAMA,EAAGZ,OAChB,MAAO,IACF3D,KAAKgJ,wCACLS,IAKPG,4CAA4C,IAAAC,EAAAC,EAC1C,OAC4D,QAA1DD,EAAkD,QAAlDC,EAAC9J,KAAKuJ,oDAA4C,IAAAO,OAAA,EAAjDA,EAAmDxE,cAAM,IAAAuE,IAAI,GAAK,GAGvEE,+BAA+B,IAAAC,EAC7B,OAAgC,QAAhCA,EAAOhK,KAAKJ,4BAAoB,IAAAoK,OAAA,EAAzBA,EAA2B7E,OAAOgE,GAAO1E,eAAmB0E,KAErEc,4BAA4B,IAAAC,EAAAC,EAC1B,OAAkD,QAA3CD,EAAK,OAAJlK,WAAI,IAAJA,MAAkC,QAA9BmK,EAAJnK,KAAM+J,oCAA4B,IAAAI,OAAA,EAAlCA,EAAoC7E,cAAM,IAAA4E,IAAI,GAAK,GAG7DE,mBAAoBA,IAAM,oBAC1BC,qBAAsBA,IAAM,YAC5BC,4BAA6BA,IAAM,SACnCC,2BAA4BA,IAAM,WAClCC,uBAAwBA,IAAM,cAC9BC,mBAAoBA,IAAM,KAC1BC,kBAAmBA,IAAM,QACzBC,mBAAoBA,IAAM,QAC1BC,yBAA0BA,IAAM,SAChCC,gCAAiCA,IAAM,sBACvCC,qBAAsBA,IAAM,yBAC5BC,mBAAoBA,IAAM,uBAC1BC,oBAAqBA,IAAM,sBAC3BC,0BAA2BA,IAAM,gCACjCC,yBAA0BA,IAAM,sBAChCC,iBAAkBA,IAAM,OAMxBC,qBACE,OAAOpL,KAAKb,aAAea,KAAKZ,kBAOlCqI,sBAAsB,IAAA4D,EAAAC,EACpB,OAAsC,QAAtCD,EAA8B,QAA9BC,EAAOtL,KAAKuL,0BAAkB,IAAAD,OAAA,EAAvBA,EAAyBhG,cAAM,IAAA+F,IAAI,GAO5CG,wBACE,OAAO,GAOTD,qBACE,MAAME,EAAW,GAiEjB,OA9DIzL,KAAKwL,sBAOLxL,KAAKmI,0BACPnI,KAAKgI,4BAA4B1J,QAAQoN,IACvCD,EAASjN,KAAK,CACZf,KAAMiO,EAAIjO,KACVc,MAAOyB,KAAK2L,2BAA2BD,OAMzC1L,KAAK8I,qBACP2C,EAASjN,KAAK,CACZf,KAAMuC,KAAKgC,cAAcvE,KACzBc,MAAOyB,KAAK4L,6BAIhBvH,QAAQC,IACN,qCACAtE,KAAKoJ,mCAEP/E,QAAQC,IACN,wCACAtE,KAAKgJ,sCAIHhJ,KAAKoJ,mCACPpJ,KAAKgJ,qCAAqC1K,QAAQqF,IAChD8H,EAASjN,KAAK,CACZf,KAAMkG,EAAMlG,KACZc,MAAOyB,KAAK6L,sBAAsBlI,OAMpC3D,KAAKiK,2BACPjK,KAAK+J,6BAA6BzL,QAAQqF,IACxC8H,EAASjN,KAAK,CACZf,KAAMkG,EAAMlG,KACZc,MAAOyB,KAAK6L,sBAAsBlI,OAMpC3D,KAAKqC,uBACHrC,KAAK+I,4BACP0C,EAASjN,KAAK,CACZf,KAAMuC,KAAKkC,qBAAqBzE,KAChCc,MAAOyB,KAAK8L,oCAIXL,GAOTM,uBACE,MAAMC,EAAmB,IAAIhM,KAAKuL,oBAE5BU,EAAgBD,EAAiBE,UACrCT,GAAYA,EAAShO,OAASuC,KAAKkC,qBAAqBzE,MAQ1D,OAJuB,IAAnBwO,GACFD,EAAiBG,OAAOF,EAAe,GAGlCD,GAOTI,0BACE,MAAMC,EAAgB,GAkCtB,OAhCKrM,KAAKqC,wBACRgK,EAAc7N,KAAK,qCAEnBwB,KAAKgI,4BAA4B1J,QAAQoN,IACnCA,EAAIjO,OAAS0C,OAAmB1C,MAClC4O,EAAc7N,KAAK,gBAAgBkN,EAAI/H,MAAMpF,OAG3CmN,EAAIjO,OAAS0C,OAAmBgB,eAClCkL,EAAc7N,KAAK,kBAAkBkN,EAAI/H,MAAMpF,OAG7CmN,EAAIjO,OAAS0C,OAAmBc,iBAClCoL,EAAc7N,KAAK,kBAAkBkN,EAAI/H,MAAMpF,SAI/CyB,KAAK8I,qBACPuD,EAAc7N,KAAK,eAAewB,KAAKgC,cAAczD,OAGvDyB,KAAKgJ,qCAAqC1K,QAAQqF,IAChD0I,EAAc7N,KAAK,KAAKmF,EAAMlG,SAASkG,EAAMpF,WAG/CyB,KAAK+J,6BAA6BzL,QAAQqF,IACxC0I,EAAc7N,KAAK,KAAKmF,EAAMlG,SAASkG,EAAMpF,WAG/C8N,EAAc7N,KAAK,kBAGd6N,EAAcC,KAAK,MAG9BC,QAAS,CAMPC,iBAAiBpM,GAAI,IAAAqM,EACnB,OACErM,EAAK,GACLJ,KAAK0M,mBAAmBtM,IACxBJ,KAAK2M,cAAcvM,MACO,QAA1BqM,EAACzM,KAAKJ,4BAAoB,IAAA6M,GAAzBA,EAA2B1H,KAAKC,GAAMA,EAAG5E,KAAOA,KAGrDwM,2BAA2BnR,GACzB,OAAyB,IAArBoR,eAAUpR,GACL,EAGFA,EAAM0J,OAAO2H,IAAC,IAAAC,EAAAC,EAAA,SAA0B,QAArBD,EAAS,QAATC,EAAEF,EAAEvO,aAAK,IAAAyO,OAAA,EAAPA,EAASC,kBAAU,IAAAF,SAAItN,KAAY6F,QAEjE4H,4BAA4BlK,GAAQ,IAAAmK,EAAAC,EAClC,OAA0B,IAAtBP,eAAU7J,GACL,EAG+C,QAAxDmK,EAAgD,QAAhDC,EAAOpK,EAAOmC,OAAOkI,GAAK5I,eAAmB4I,WAAG,IAAAD,OAAA,EAAzCA,EAA2C9H,cAAM,IAAA6H,IAAI,GAM9DG,kBAAkBlN,GAChBiE,QAAQkJ,KAAK,8CAA8CnN,OAG7DoN,kCACE,IACExN,KAAKD,cAAgBC,KAAKC,sBACxBC,eAAuBC,OAAmBC,KAG5CJ,KAAKK,gBAAkBL,KAAKC,sBAC1BC,eAAuBC,OAAmB1C,OAE5CuC,KAAKM,iBAAmBN,KAAKC,sBAC3BC,eAAuBC,OAAmBI,QAE5CP,KAAKQ,mBAAqBR,KAAKC,sBAC7BC,eAAuBC,OAAmBM,UAE5CT,KAAKU,qBAAuBV,KAAKC,sBAC/BC,eAAuBC,OAAmBQ,YAE5CX,KAAKY,mBAAqBZ,KAAKC,sBAC7BC,eAAuBC,OAAmBU,UAE5Cb,KAAKc,iBAAmBd,KAAKC,sBAC3BC,eAAuBC,OAAmBY,QAG5Cf,KAAKgB,iBAAmBhB,KAAKC,sBAC3BC,eAAuBC,OAAmBc,iBAC1C,MACA,GACA,EACA,MAGFjB,KAAKkB,eAAiBlB,KAAKC,sBACzBC,eAAuBC,OAAmBgB,eAC1C,MACA,GACA,EACA,MAEFnB,KAAKoB,kBAAoBpB,KAAKC,sBAC5BC,eAAuBC,OAAmBkB,kBAC1C,MACA,GACA,EACA,MAEFrB,KAAKsB,gBAAkBtB,KAAKC,sBAC1BC,eAAuBC,OAAmBoB,gBAC1C,MACA,GACA,EACA,MAEFvB,KAAKwB,gBAAkBxB,KAAKC,sBAC1BC,eAAuBC,OAAmBsB,SAE5CzB,KAAK0B,iBAAmB1B,KAAKC,sBAC3BC,eAAuBC,OAAmBwB,UAK5C3B,KAAK4B,oBAAsB5B,KAAKC,sBAC9BC,eAAuBC,OAAmB0B,aAE5C7B,KAAK8B,kBAAoB9B,KAAKC,sBAC5BC,eAAuBC,OAAmB4B,eAK5C/B,KAAKgC,cAAgBhC,KAAKiC,sBAK1BjC,KAAKkC,qBAAuBlC,KAAKmC,6BACjC,MAAOsL,GACPpJ,QAAQqJ,MAAMD,KAQlBE,sBAAsBlS,GACpB,KAAMoR,eAAUpR,GAAS,GAAKoR,eAAU7M,KAAK0D,aAAe,GAC1D,OAGF1D,KAAK0D,YAAYpF,QAAQiG,IAAM,IAAAqJ,EAAAC,EAC7B,MAAM7Q,EAAOvB,EAAMsJ,KAAK+H,GAAKA,EAAErP,OAAS8G,EAAG9G,MAE3C,GAAIT,EAAM,CACR,MAAM8Q,EAAKvJ,EAAGZ,MAAMoK,UAAUhJ,KAC5B+I,GAAMA,EAAGpJ,WAAa1H,EAAK0H,UAE7BH,EAAGZ,MAAMe,SAAWoJ,EAChBA,EAAGpJ,SACHsJ,eAAsBzJ,EAAGZ,MAAMsK,oBAEnC1J,EAAGZ,MAAMe,SAAWsJ,eAAsBzJ,EAAGZ,MAAMsK,eAGrD1J,EAAGZ,MAAMa,QAAuB,QAAhBoJ,EAAO,OAAJ5Q,QAAI,IAAJA,OAAI,EAAJA,EAAMwH,eAAO,IAAAoJ,KAChCrJ,EAAGZ,MAAMpF,MAAmB,QAAdsP,EAAO,OAAJ7Q,QAAI,IAAJA,OAAI,EAAJA,EAAMuB,aAAK,IAAAsP,IAAI,OAIlC,MAAMK,EAAmBzS,EAAMsJ,KAC7B+H,IAAC,IAAAqB,EAAA,OAAIrB,EAAErP,QAAkC,QAA9B0Q,EAAKnO,KAAKkC,4BAAoB,IAAAiM,OAAA,EAAzBA,EAA2B1Q,QAEvB,IAAA2Q,EAAlBF,IACFlO,KAAKkC,qBAAqB3D,MAA+B,QAA1B6P,EAAmB,OAAhBF,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkB3P,aAAK,IAAA6P,IAAI,KAOjEC,6BAA6BC,GAC3B,MAAM7S,EAAQ,GAER8S,EAAUD,EAAenJ,OAC7BnH,KAAOA,EAAEwQ,SAAWxQ,EAAEO,QAAUkQ,OAAWC,SA6B7C,OA1BAH,EAAQjQ,QAAQqQ,IACd,MAAMC,EAAMC,OAAgC9J,KAC1C6J,GAAOA,EAAIE,cAAgBH,EAAGpQ,OAEhC,GAAIqQ,EAAK,CACP,MAAMG,EAAK7O,eAAuB0O,EAAII,UACtC,GAAID,EAAI,CACN,MAAM/R,EAAO,CACXS,KAAMsR,EAAGtR,KACT+G,QAASmK,EAAGH,QACZ9J,SAAUqK,EAAGzI,gBAAgB,GAAG5B,SAChCnG,MAAO,IAET9C,EAAM+C,KAAKxB,QAEXqH,QAAQkJ,KACN,uDAAuDqB,EAAII,eAI/D3K,QAAQkJ,KACN,uDAAuDoB,EAAGpQ,SAKzD9C,GAMTwT,uBAAuBjM,GAAQ,IAAAkM,EAAAC,EAAAC,EAE7BpP,KAAKX,yBAA2B,GAChCW,KAAKJ,qBAAuB,GAC5BI,KAAKgC,cAAczD,MAAQ,GAE3B8F,QAAQC,IACHtE,KAAKqP,SAAS5R,KAAjB,oCACAuF,GAIF,MAAMsM,EAA0C,QAAlCJ,EAAS,OAANlM,QAAM,IAANA,OAAM,EAANA,EAAQ+B,KAAKD,GAAgB,IAAVA,EAAGG,WAAS,IAAAiK,IAAI,GACpDlP,KAAKgC,cAAczD,MAAuB,QAAlB4Q,EAAW,OAARG,QAAQ,IAARA,OAAQ,EAARA,EAAU5J,aAAK,IAAAyJ,IAAI,GAG9CnP,KAAK6C,eAAevE,QAAQqF,IAAS,IAAA4L,EAAAC,EAAAC,EAAAC,EACnC,MAAMC,EAAa3M,EACfA,EAAOmC,OAAOL,GAAMA,EAAGG,KAAOtB,EAAMvD,IACpC,KACEwP,GAA+B,QAAnBL,EAAW,OAAVI,QAAU,IAAVA,OAAU,EAAVA,EAAYrK,cAAM,IAAAiK,IAAI,IAAM,EAAII,EAAW,GAAK,KAYnE,GAVA3P,KAAKX,yBAAyBb,KAC5BwB,KAAKC,sBACH0D,EACgB,QADX6L,EACI,OAATI,QAAS,IAATA,OAAS,EAATA,EAAWlK,aAAK,IAAA8J,IAAI,MACpB,EACkB,QADbC,EACI,OAATG,QAAS,IAATA,OAAS,EAATA,EAAWnK,eAAO,IAAAgK,KACC,QADQC,EAClB,OAATE,QAAS,IAATA,OAAS,EAATA,EAAWpK,gBAAQ,IAAAkK,IAAI1B,eAAsBrK,EAAMsK,iBAInDjO,KAAK6P,uBAAuBlM,GAAQ,KAAAmM,EAAAC,EAAAC,EACtC,MAAMC,EACJN,GAAcA,EAAWrK,QAAU,EAAIqK,EAAW,GAAK,KAEzD3P,KAAKX,yBAAyBb,KAC5BwB,KAAKC,sBACH0D,EACc,QADTmM,EACE,OAAPG,QAAO,IAAPA,OAAO,EAAPA,EAASvK,aAAK,IAAAoK,IAAI,MAClB,EACgB,QADZC,EACG,OAAPE,QAAO,IAAPA,OAAO,EAAPA,EAASxK,eAAO,IAAAsK,KACC,QADQC,EAClB,OAAPC,QAAO,IAAPA,OAAO,EAAPA,EAASzK,gBAAQ,IAAAwK,IAAIE,YAS7B,MAAMpJ,EAC2C,QAD/BsI,EACV,OAANpM,QAAM,IAANA,OAAM,EAANA,EAAQmC,OAAOL,GAAM9E,KAAK2M,cAAc7H,EAAGG,YAAI,IAAAmK,IAAI,GAErDtI,EAAaxI,QAAQ6R,IACnB,MAAMC,EAAYpQ,KAAKqQ,cAAcF,EAAIlL,IACnCqL,EACJF,IAAcpQ,KAAKuQ,0BAA0BJ,EAAIlL,IAEnD,GAAIqL,EAAkB,KAAAE,EAAAC,EAAAC,EAAAC,EACpB,MAAM3N,EAAqB,OAAZ8D,QAAY,IAAZA,OAAY,EAAZA,EAAc3B,OAAOyL,GAASA,EAAM3L,KAAOkL,EAAIlL,IACxD2K,GAA2B,QAAfY,EAAO,OAANxN,QAAM,IAANA,OAAM,EAANA,EAAQsC,cAAM,IAAAkL,IAAI,IAAM,EAAIxN,EAAO,GAAK,KAErD6N,EAAc,CAClBzQ,GAAIgQ,EAAUhQ,GACd3C,KAAM2S,EAAU3S,KAChBqT,MAAOV,EAAU3S,KACjBwQ,cAAemC,EAAUnC,cACzB3H,gBAAiBtG,KAAK+Q,mBAAmBX,EAAUnC,gBAcrD,GAXAjO,KAAKJ,qBAAqBpB,KACxBwB,KAAKC,sBACH4Q,EACgB,QADLJ,EACF,OAATb,QAAS,IAATA,OAAS,EAATA,EAAWlK,aAAK,IAAA+K,IAAI,MACpB,EACkB,QADbC,EACI,OAATd,QAAS,IAATA,OAAS,EAATA,EAAWnK,eAAO,IAAAiL,KACC,QADQC,EAClB,OAATf,QAAS,IAATA,OAAS,EAATA,EAAWpK,gBAAQ,IAAAmL,IACjB3C,eAAsBoC,EAAUnC,iBAIlCjO,KAAK6P,uBAAuBgB,GAAc,KAAAG,EAAAC,EAAAC,EAAAC,EAC5C,MAAMlB,GAAyB,QAAfe,EAAO,OAANhO,QAAM,IAANA,OAAM,EAANA,EAAQsC,cAAM,IAAA0L,IAAI,GAAK,GAAK,EAAIhO,EAAO,GAAK,KAEvDoO,EAAgBpR,KAAKC,sBACzB4Q,EACc,QADHI,EACJ,OAAPhB,QAAO,IAAPA,OAAO,EAAPA,EAASvK,aAAK,IAAAuL,IAAI,MAClB,EACgB,QADZC,EACG,OAAPjB,QAAO,IAAPA,OAAO,EAAPA,EAASxK,eAAO,IAAAyL,KACC,QADQC,EAClB,OAAPlB,QAAO,IAAPA,OAAO,EAAPA,EAASzK,gBAAQ,IAAA2L,IAAIjB,QAGvBlQ,KAAKJ,qBAAqBpB,KAAK4S,QAUvCC,6BAA6BC,GAAQ,IAAAC,EACnC,MAAMvU,EAAW,OAAJgD,WAAI,IAAJA,MAAiB,QAAbuR,EAAJvR,KAAM0D,mBAAW,IAAA6N,OAAA,EAAjBA,EAAmBxM,KAAKR,GAAMA,EAAG9G,OAAS6T,GAEvD,OAAKtU,EAQE,CACLwI,SAAUxI,EAAK2G,MAAMe,SACrBgB,MAAO8L,eAAqBxU,EAAK2G,SATjCU,QAAQkJ,KAAK,sBAAuB+D,GAC7B,CACL5L,MAAO,KACPF,SAAUc,OAAgBC,OAAeC,OAAO9B,YAmBtDzE,sBACE0D,EACA8N,EACAC,GAAU,EACVlN,GAAU,EACVE,EAAW,MACX,IAAAiN,EAAAC,EACA,IAAIC,EAAiBnN,EAIZ,IAAAoN,EAAAC,EAHJF,IACCH,EACFG,EAAiB3B,QAEkB,QAA/B4B,EAAM,OAALnO,QAAK,IAALA,GAAsB,QAAjBoO,EAALpO,EAAO2C,uBAAe,IAAAyL,OAAA,EAAtBA,EAAwBzM,cAAM,IAAAwM,IAAI,GAAK,IAC1CD,EACElO,EAAMlG,OAAS0C,OAAmB1C,KAC9BkG,EAAM2C,gBAAgB,GAAG5B,SACzBf,EAAM2C,gBAAgB,GAAG5B,WAKhCmN,GACHxN,QAAQkJ,KAAK,8BAA+BsE,GAM9C,MAAMG,EAAsB,QAAhBL,EAAQ,OAALhO,QAAK,IAALA,OAAK,EAALA,EAAOqO,cAAM,IAAAL,IAAI,CAC9BK,OAAQ,CACNC,gBAAgB,EAChBC,SAAS,EACTC,MAAO,KAIX,IAAIC,EAAqB,OAALzO,QAAK,IAALA,GAAsB,QAAjBiO,EAALjO,EAAO2C,uBAAe,IAAAsL,OAAA,EAAtBA,EAAwB7M,KAC1CD,IAAQ,OAAFA,QAAE,IAAFA,OAAE,EAAFA,EAAIJ,YAAamN,GAOzB,OAJKO,GACH/N,QAAQkJ,KAAK,8BAA+BsE,GAGvC,CACLzR,GAAIuD,EAAMvD,GACV3C,KAAMkG,EAAMlG,KACZqT,MAAOnN,EAAMmN,MACb7C,cAAetK,EAAMsK,cACrBF,UAAW2D,EAAUW,OAAmB1O,EAAM2C,gBAC9C/H,MAAOkT,EACP/M,SAAUmN,EACVH,QAASA,EACTlN,QAASA,EACTwN,OAAQA,IAGZ/P,sBAAsB,IAAAqQ,EAAAC,EACpB,MAAM5O,EAAQ,CACZvD,GAAI,EACJ3C,KAAM,WACNqT,MAAO,WACP7C,cAAeuE,OAAUC,KACzBnM,gBAA+D,QAAhDgM,EAA+B,QAA/BC,EAAEG,eAAcF,OAAUC,aAAK,IAAAF,OAAA,EAA7BA,EAA+BjM,uBAAe,IAAAgM,IAAI,IAGrE,OAAOtS,KAAKC,sBAAsB0D,IAGpCxB,6BAA6B,IAAAwQ,EAAAC,EAC3B,MAAMjP,EAAQ,CACZvD,GAAI,EACJ3C,KAAM,gBACNqT,MAAO,kBACP7C,cAAeuE,OAAUC,KACzBnM,gBAA+D,QAAhDqM,EAA+B,QAA/BC,EAAEF,eAAcF,OAAUC,aAAK,IAAAG,OAAA,EAA7BA,EAA+BtM,uBAAe,IAAAqM,IAAI,IAGrE,OAAO3S,KAAKC,sBAAsB0D,IAQpCqK,sBAAsBrK,GACpB,OAAOqK,eAAsBrK,EAAMsK,gBAErC4B,uBAAuBlM,GAAO,IAAAkP,EAC5B,OAAOC,eAAsC,QAArBD,EAAM,OAALlP,QAAK,IAALA,OAAK,EAALA,EAAOsK,qBAAa,IAAA4E,KAAK,IAEpDlG,cAAcvM,GACZ,OAAIyM,eAA4C,IAAlC7M,KAAKX,4BAKR,IAAPe,IAIIJ,KAAKX,yBAAyB0F,KAAKD,GAAMA,EAAG1E,KAAOA,KAE7D2S,gBAAgB/P,EAAQW,GACtB,OAAKX,GAAWW,EAETX,EAAO+B,KAAKD,GAAMA,EAAG1E,KAAOuD,EAAMvD,IAAM0E,EAAG4M,SAFpB,MAIhCX,mBAAmBiC,GACjB,MAAMC,EAAKC,OAAWnO,KAAKD,GAAMA,EAAG1E,KAAO4S,GAE3C,OAAOC,EAAKA,EAAG3M,gBAAkB,IAEnCiK,0BAA0BnQ,GAAI,IAAA+S,EAAAC,EAC5B,OAA0D,QAA1DD,EAAgC,QAAhCC,EAAOpT,KAAKJ,4BAAoB,IAAAwT,OAAA,EAAzBA,EAA2BrO,KAAKD,GAAMA,EAAG1E,KAAOA,UAAG,IAAA+S,MAE5DE,oBAAoB1P,GAClB,IACE,MAAMX,EAAShD,KAAKJ,qBAChBI,KAAKJ,qBAAqBuF,OAAOL,GAAMA,EAAG1E,KAAOuD,EAAMvD,IACvD,GAEJ4C,EAAO1E,QAAQwG,IACb,MAAMwO,EAAQtT,KAAKJ,qBAAqB2T,QAAQzO,GAE5CwO,GAAS,GACXtT,KAAKJ,qBAAqBuM,OAAOmH,EAAO,KAG5C,MAAO7F,GACPpJ,QAAQqJ,MAAMD,KAOlB,2BAA2B+F,GACzB,IAAI,IAAAC,EAAAC,EACF1T,KAAK2T,wBAAqBlU,EAE1B4E,QAAQC,IAAI,mCAAoCkP,GAEhD,MAAMI,EACqD,QADlDH,EACC,OAARD,QAAQ,IAARA,OAAQ,EAARA,EAAUrO,OAAOkI,IAAMrN,KAAKuQ,0BAA0BlD,WAAG,IAAAoG,IAAI,GACzDI,EAAmB,QAAdH,EAAM,OAAHE,QAAG,IAAHA,OAAG,EAAHA,EAAKtO,cAAM,IAAAoO,IAAI,EAC7B,GAAc,IAAVG,EACF,OAGF,IAAK,MAAMzT,KAAMwT,EAAK,CACpB,MAAMjQ,EAAQ3D,KAAKqQ,cAAcjQ,GAC7BuD,SACI3D,KAAK8T,eAAenQ,GAI9B3D,KAAK+T,mBAAoB,EACzB,MAAOtG,GACPpJ,QAAQqJ,MAAMD,GACdzN,KAAK2T,mBAAqBlG,EAAER,aAShC,qBAAqBtJ,GAAO,IAAAqQ,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAC1B,IAAK1Q,EACH,KAAM,yCAKR,IAAI2Q,EAAYtU,KAAKuU,cAAc5Q,EAAMvD,IACpCkU,UACGtU,KAAKwU,aAAa7Q,EAAMvD,IAC9BkU,EAAYtU,KAAKuU,cAAc5Q,EAAMvD,KAKvC,MAAMyQ,EAAc,CAClBzQ,GAAIuD,EAAMvD,GACV3C,KAAMkG,EAAMlG,KACZqT,MAAOnN,EAAMlG,KACbwQ,cAAetK,EAAMsK,cACrB3H,gBAAiBtG,KAAK+Q,mBAAmBpN,EAAMsK,eAC/C+D,OAAQ,CACNC,eAAiD,QAAnC+B,EAAW,QAAXC,EAAEK,SAAS,IAAAL,GAAQ,QAARA,EAATA,EAAWjC,cAAM,IAAAiC,OAAA,EAAjBA,EAAmBhC,sBAAc,IAAA+B,KACjD9B,QAAmC,QAA5BgC,EAAW,QAAXC,EAAEG,SAAS,IAAAH,GAAQ,QAARA,EAATA,EAAWnC,cAAM,IAAAmC,OAAA,EAAjBA,EAAmBjC,eAAO,IAAAgC,KACnC/B,MAA+B,QAA1BiC,EAAW,QAAXC,EAAEC,SAAS,IAAAD,GAAQ,QAARA,EAATA,EAAWrC,cAAM,IAAAqC,OAAA,EAAjBA,EAAmBlC,aAAK,IAAAiC,IAAI,KAMvCpU,KAAKJ,qBAAqBpB,KACxBwB,KAAKC,sBACH4Q,EACA,MACA,GACA,EACA7C,eAAsBrK,EAAMsK,iBAI5BjO,KAAK6P,uBAAuBgB,IAC9B7Q,KAAKJ,qBAAqBpB,KACxBwB,KAAKC,sBACH4Q,EACA,MACA,GACA,EACAX,UAaRuE,mBACEC,GAAW,EACXC,EAAa,EACbC,GAAmB,GACnB,IAAAC,EACA,MAAO,CACL5P,GAAI,CAACjF,KAAKqR,6BAA6BlR,OAAmBC,KAC1D0U,KAAM9U,KAAKqR,6BAA6BlR,OAAmB1C,MAC3DsX,MAAO/U,KAAKqR,6BAA6BlR,OAAmBI,OAC5DyU,QAAShV,KAAKqR,6BAA6BlR,OAAmBM,SAC9DwU,gBAAiBjV,KAAKqR,6BACpBlR,OAAmBc,iBAErBiU,cAAelV,KAAKqR,6BAClBlR,OAAmBgB,eAErBgU,iBAAkBnV,KAAKqR,6BACrBlR,OAAmBkB,kBAErB+T,eAAgBpV,KAAKqR,6BACnBlR,OAAmBoB,gBAErB8T,OAAQrV,KAAKqR,6BAA6BlR,OAAmBsB,QAC7D6T,QAAStV,KAAKqR,6BAA6BlR,OAAmBwB,SAC9D4T,UAAWvV,KAAKqR,6BACdlR,OAAmBQ,WAErB6U,QAASxV,KAAKqR,6BAA6BlR,OAAmBU,SAC9D4U,MAAOzV,KAAKqR,6BAA6BlR,OAAmBY,OAC5D2U,WAAYd,EACR5U,KAAKmG,6BACLnG,KAAKqR,6BAA6BlR,OAAmB0B,YACzD8T,OAAQ3V,KAAK6E,+BACb+Q,SAAUlB,EACVmB,cAAc,EAIdC,UAAWnB,EACXoB,aAA+B,QAAnBlB,EAAE7U,KAAKgW,oBAAY,IAAAnB,IAAI,KAGvCoB,kBAAkBxK,EAAUyK,GAAkB,GAC5C,OAAOD,eAAkBxK,EAAUyK,IAMrCC,6BAA6B5H,GAC3B,GAA2B,IAAvB1B,eAAU0B,GACZ,OAGF,MAAMvL,EAAShD,KAAKyG,uBACpB,GAA0B,IAAtBoG,eAAU7J,GACZ,OAGF,IAAIoT,EAAI,EACRpT,EAAO1E,QAAQ8B,IACb,MAAMkT,EAAQ/E,EAAQjJ,OAAS,EACzB3B,EAAQ3D,KAAKqQ,cAAcjQ,GACjCmO,EAAQpC,OAAOmH,EAAO,EAAG,CACvB+C,KAAM1S,EAAQA,EAAMlG,KAAO,SAAS2C,EACpC7B,MAAO,gBAAgB6X,WACvB5H,SAAS,IAEX4H,OAOJE,mCAAmC/H,GACjCvO,KAAK4D,mBAAmBtF,QAAQwG,IAC9B,MAAMyR,EAASvW,KAAKwW,WAAWjI,EAASzJ,EAAGrH,MACvC8Y,EACFA,EAAO/H,QAAU1J,EAAGnB,MAAMa,QAE1BH,QAAQkJ,KAAK,2CAA2CzI,EAAGrH,SAUjE+Y,WAAWjI,EAAShQ,GAClB,OAAOsO,eAAU0B,GAAW,EACxBA,EAAQxJ,KAAKD,GAAMA,EAAGvG,QAAUA,QAChCkB,GAONgX,iBAAiBC,GACf,OAAO,IAAIC,OACTD,EAAS1W,KAAK4W,qBAAkBnX,OAChCA,EACAiX,EAASG,OAAaC,KAAOD,OAAaE,SAC1CC,gBAOJrL,2BAA2B3O,GAAM,IAAAia,EAAAC,EAC/B,GAAS,OAAJla,QAAI,IAAJA,MAAM2G,MAAO,MAAO,GAEzB,MAAMmN,EAA2C,QAAtCmG,EAAmB,QAAnBC,EAAGla,EAAK2G,MAAMmN,aAAK,IAAAoG,IAAIla,EAAK2G,MAAMlG,YAAI,IAAAwZ,IAAI,GAGrD,GAAIja,EAAK2G,MAAMlG,OAAS0C,OAAmB0B,WAAY,KAAAsV,EACrD,MAAM/W,EAAK6F,eAA4C,QAAjBkR,EAACna,EAAK2G,MAAMpF,aAAK,IAAA4Y,KAAK,GACtDC,EAAWpX,KAAKqX,aAAajX,GAEnC,OAAOgX,EACH,cAAqB,OAARA,QAAQ,IAARA,OAAQ,EAARA,EAAU3Z,MACvB6Z,eAAqBxG,EAAO9T,EAAK2G,MAAMe,SAAUtE,GAIvD,GAAIpD,EAAK2G,MAAMlG,OAAS0C,OAAmBsB,OAAQ,KAAA8V,EACjD,MAAM9V,EAASwE,eAA4C,QAAjBsR,EAACva,EAAK2G,MAAMpF,aAAK,IAAAgZ,KAAK,GAC1DC,EAAKC,eAAehW,GAE1B,OAAO+V,EACHF,eAAqBxG,EAAO9T,EAAK2G,MAAMe,SAAU8S,EAAG/Z,MACpD6Z,eAAqBxG,EAAO9T,EAAK2G,MAAMe,SAAUjD,GAIvD,GAAIzE,EAAK2G,MAAMlG,OAAS0C,OAAmBwB,QAAS,KAAA+V,EAClD,MAAM/V,EAAUsE,eAA4C,QAAjByR,EAAC1a,EAAK2G,MAAMpF,aAAK,IAAAmZ,KAAK,GAC3DC,EAAKC,eAAgBjW,GAE3B,OAAOgW,EACHL,eAAqBxG,EAAO9T,EAAK2G,MAAMe,SAAUiT,EAAGla,MACpD6Z,eAAqBxG,EAAO9T,EAAK2G,MAAMe,SAAU/C,GAGvD,OAAO2V,eAAqBxG,EAAO9T,EAAK2G,MAAMe,SAAU1H,EAAK2G,MAAMpF,QAQrEsZ,yBAAyBlU,GACvB,OAAOA,EAAMlG,OAAS0C,OAAmB0B,WACrC7B,KAAK2L,2BAA2B,CAC9BlO,KAAM0C,OAAmB0B,WACzB8B,MAAOA,IAET3D,KAAK6L,sBAAsBlI,IAQjCkI,sBAAsBlI,GACpB,OAAOkI,eAAsBlI,IAG/BiI,2BACE,MAAO,aAAa5L,KAAKgC,cAAczD,OAGzCuN,kCACE,MAAO,WAAW9L,KAAKkC,qBAAqB3D,OAQ9CuZ,+BAA+BC,GAC7B/X,KAAKoC,oBAAiB3C,EACtB,IAAI,IAAAuY,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GAAAC,GACF9c,KAAK+c,gBAAgBhF,GAErB/X,KAAKD,cAAgBC,KAAKC,sBACxBC,eAAuBC,OAAmBC,IAC1B,QAD6B4X,EACxC,OAALD,QAAK,IAALA,GAAS,QAAJE,EAALF,EAAO9S,UAAE,IAAAgT,OAAA,EAATA,EAAWvS,aAAK,IAAAsS,SAAIvY,GACpB,EAC2B,QADtByY,EACa,QADbC,EACLnY,KAAKD,qBAAa,IAAAoY,OAAA,EAAlBA,EAAoB3T,eAAO,IAAA0T,KACR,QADiBE,EAC/B,OAALL,QAAK,IAALA,GAAS,QAAJM,EAALN,EAAO9S,UAAE,IAAAoT,OAAA,EAATA,EAAW7S,gBAAQ,IAAA4S,IAAI,MAGzBpY,KAAKK,gBAAkBL,KAAKC,sBAC1BC,eAAuBC,OAAmB1C,MACxB,QAD6B6a,EAC1C,OAALP,QAAK,IAALA,GAAW,QAANQ,EAALR,EAAOjD,YAAI,IAAAyD,OAAA,EAAXA,EAAa7S,aAAK,IAAA4S,SAAI7Y,GACtB,EAC6B,QADxB+Y,EACe,QADfC,EACLzY,KAAKK,uBAAe,IAAAoY,OAAA,EAApBA,EAAsBjU,eAAO,IAAAgU,KACT,QADkBE,EACjC,OAALX,QAAK,IAALA,OAAK,EAALA,EAAOjD,KAAKtP,gBAAQ,IAAAkT,IAAI,MAG1B1Y,KAAKM,iBAAmBN,KAAKC,sBAC3BC,eAAuBC,OAAmBI,OACvB,QAD6BoY,EAC3C,OAALZ,QAAK,IAALA,GAAY,QAAPa,EAALb,EAAOhD,aAAK,IAAA6D,OAAA,EAAZA,EAAclT,aAAK,IAAAiT,SAAIlZ,GACvB,EAC8B,QADzBoZ,EACgB,QADhBC,EACL9Y,KAAKM,wBAAgB,IAAAwY,OAAA,EAArBA,EAAuBtU,eAAO,IAAAqU,KACT,QADkBE,EAClC,OAALhB,QAAK,IAALA,OAAK,EAALA,EAAOhD,MAAMvP,gBAAQ,IAAAuT,IAAI,MAG3B/Y,KAAKQ,mBAAqBR,KAAKC,sBAC7BC,eAAuBC,OAAmBM,SACrB,QAD6BuY,EAC7C,OAALjB,QAAK,IAALA,GAAc,QAATkB,EAALlB,EAAO/C,eAAO,IAAAiE,OAAA,EAAdA,EAAgBvT,aAAK,IAAAsT,SAAIvZ,GACzB,EACgC,QAD3ByZ,EACkB,QADlBC,EACLnZ,KAAKQ,0BAAkB,IAAA2Y,OAAA,EAAvBA,EAAyB3U,eAAO,IAAA0U,KACT,QADkBE,EACpC,OAALrB,QAAK,IAALA,OAAK,EAALA,EAAO/C,QAAQxP,gBAAQ,IAAA4T,IAAI,MAG7BpZ,KAAKU,qBAAuBV,KAAKC,sBAC/BC,eAAuBC,OAAmBQ,WACnB,QAD6B0Y,EAC/C,OAALtB,QAAK,IAALA,GAAgB,QAAXuB,EAALvB,EAAOxC,iBAAS,IAAA+D,OAAA,EAAhBA,EAAkB5T,aAAK,IAAA2T,SAAI5Z,GAC3B,EACkC,QAD7B8Z,EACoB,QADpBC,EACLxZ,KAAKU,4BAAoB,IAAA8Y,OAAA,EAAzBA,EAA2BhV,eAAO,IAAA+U,KACT,QADkBE,EACtC,OAAL1B,QAAK,IAALA,OAAK,EAALA,EAAOxC,UAAU/P,gBAAQ,IAAAiU,IAAI,MAG/BzZ,KAAKY,mBAAqBZ,KAAKC,sBAC7BC,eAAuBC,OAAmBU,SACrB,QAD6B6Y,EAC7C,OAAL3B,QAAK,IAALA,GAAc,QAAT4B,EAAL5B,EAAOvC,eAAO,IAAAmE,OAAA,EAAdA,EAAgBjU,aAAK,IAAAgU,SAAIja,GACzB,EACgC,QAD3Bma,EACkB,QADlBC,EACL7Z,KAAKY,0BAAkB,IAAAiZ,OAAA,EAAvBA,EAAyBrV,eAAO,IAAAoV,KACT,QADkBE,EACpC,OAAL/B,QAAK,IAALA,OAAK,EAALA,EAAOvC,QAAQhQ,gBAAQ,IAAAsU,IAAI,MAG7B9Z,KAAKc,iBAAmBd,KAAKC,sBAC3BC,eAAuBC,OAAmBY,OACvB,QAD6BgZ,EAC3C,OAALhC,QAAK,IAALA,GAAY,QAAPiC,EAALjC,EAAOtC,aAAK,IAAAuE,OAAA,EAAZA,EAActU,aAAK,IAAAqU,SAAIta,GACvB,EAC8B,QADzBwa,EACgB,QADhBC,EACLla,KAAKc,wBAAgB,IAAAoZ,OAAA,EAArBA,EAAuB1V,eAAO,IAAAyV,KACT,QADkBE,EAClC,OAALpC,QAAK,IAALA,OAAK,EAALA,EAAOtC,MAAMjQ,gBAAQ,IAAA2U,IAAI,MAG3Bna,KAAKgB,iBAAmBhB,KAAKC,sBAC3BC,eAAuBC,OAAmBc,iBACb,QAD6BmZ,EACrD,OAALrC,QAAK,IAALA,GAAsB,QAAjBsC,EAALtC,EAAO9C,uBAAe,IAAAoF,OAAA,EAAtBA,EAAwB3U,aAAK,IAAA0U,SAAI3a,GACjC,EAC8B,QADzB6a,EACgB,QADhBC,EACLva,KAAKgB,wBAAgB,IAAAuZ,OAAA,EAArBA,EAAuB/V,eAAO,IAAA8V,KACE,QADOE,EAClC,OAALzC,QAAK,IAALA,GAAsB,QAAjB0C,EAAL1C,EAAO9C,uBAAe,IAAAwF,OAAA,EAAtBA,EAAwBjV,gBAAQ,IAAAgV,IAAI,MAGtCxa,KAAKkB,eAAiBlB,KAAKC,sBACzBC,eAAuBC,OAAmBgB,eACf,QAD6BuZ,EACnD,OAAL3C,QAAK,IAALA,GAAoB,QAAf4C,EAAL5C,EAAO7C,qBAAa,IAAAyF,OAAA,EAApBA,EAAsBjV,aAAK,IAAAgV,SAAIjb,GAC/B,EAC4B,QADxBmb,EACe,QADfC,EACJ7a,KAAKkB,sBAAc,IAAA2Z,OAAA,EAAnBA,EAAqBrW,eAAO,IAAAoW,KACE,QADOE,EAChC,OAAL/C,QAAK,IAALA,GAAoB,QAAfgD,EAALhD,EAAO7C,qBAAa,IAAA6F,OAAA,EAApBA,EAAsBvV,gBAAQ,IAAAsV,IAAI,MAGpC9a,KAAKoB,kBAAoBpB,KAAKC,sBAC5BC,eAAuBC,OAAmBkB,kBACZ,QAD6B2Z,EACtD,OAALjD,QAAK,IAALA,GAAuB,QAAlBkD,EAALlD,EAAO5C,wBAAgB,IAAA8F,OAAA,EAAvBA,EAAyBvV,aAAK,IAAAsV,SAAIvb,GAClC,EAC+B,QAD1Byb,EACiB,QADjBC,EACLnb,KAAKoB,yBAAiB,IAAA+Z,OAAA,EAAtBA,EAAwB3W,eAAO,IAAA0W,KACE,QADOE,GACnC,OAALrD,QAAK,IAALA,GAAuB,QAAlBsD,GAALtD,EAAO5C,wBAAgB,IAAAkG,QAAA,EAAvBA,GAAyB7V,gBAAQ,IAAA4V,MAAI,MAGvCpb,KAAKsB,gBAAkBtB,KAAKC,sBAC1BC,eAAuBC,OAAmBoB,gBACd,QAD6B+Z,GACpD,OAALvD,QAAK,IAALA,GAAqB,QAAhBwD,GAALxD,EAAO3C,sBAAc,IAAAmG,QAAA,EAArBA,GAAuB7V,aAAK,IAAA4V,WAAI7b,GAChC,EAC6B,QADzB+b,GACgB,QADhBC,GACJzb,KAAKsB,uBAAe,IAAAma,QAAA,EAApBA,GAAsBjX,eAAO,IAAAgX,OACE,QADOE,GACjC,OAAL3D,QAAK,IAALA,GAAqB,QAAhB4D,GAAL5D,EAAO3C,sBAAc,IAAAuG,QAAA,EAArBA,GAAuBnW,gBAAQ,IAAAkW,MAAI,MAGrC1b,KAAKwB,gBAAkBxB,KAAKC,sBAC1BC,eAAuBC,OAAmBsB,QACtB,QAD6Bma,GAC5C,OAAL7D,QAAK,IAALA,GAAa,QAAR8D,GAAL9D,EAAO1C,cAAM,IAAAwG,QAAA,EAAbA,GAAenW,aAAK,IAAAkW,WAAInc,GACxB,EAC6B,QADxBqc,GACe,QADfC,GACL/b,KAAKwB,uBAAe,IAAAua,QAAA,EAApBA,GAAsBvX,eAAO,IAAAsX,OACN,QADeE,GACjC,OAALjE,QAAK,IAALA,GAAa,QAARkE,GAALlE,EAAO1C,cAAM,IAAA4G,QAAA,EAAbA,GAAezW,gBAAQ,IAAAwW,MAAI,MAG7Bhc,KAAK0B,iBAAmB1B,KAAKC,sBAC3BC,eAAuBC,OAAmBwB,SACrB,QAD6Bua,GAC7C,OAALnE,QAAK,IAALA,GAAc,QAAToE,GAALpE,EAAOzC,eAAO,IAAA6G,QAAA,EAAdA,GAAgBzW,aAAK,IAAAwW,WAAIzc,GACzB,EAC8B,QADzB2c,GACgB,QADhBC,GACLrc,KAAK0B,wBAAgB,IAAA2a,QAAA,EAArBA,GAAuB7X,eAAO,IAAA4X,OACN,QADeE,GAClC,OAALvE,QAAK,IAALA,GAAc,QAATwE,GAALxE,EAAOzC,eAAO,IAAAiH,QAAA,EAAdA,GAAgB/W,gBAAQ,IAAA8W,MAAI,MAG9Btc,KAAK4B,oBAAsB5B,KAAKC,sBAC9BC,eAAuBC,OAAmB0B,YAClB,QAD6B2a,GAChD,OAALzE,QAAK,IAALA,GAAiB,QAAZ0E,GAAL1E,EAAOrC,kBAAU,IAAA+G,QAAA,EAAjBA,GAAmB/W,aAAK,IAAA8W,WAAI/c,GAC5B,EACiC,QAD5Bid,GACmB,QADnBC,GACL3c,KAAK4B,2BAAmB,IAAA+a,QAAA,EAAxBA,GAA0BnY,eAAO,IAAAkY,OACN,QADeE,GACrC,OAAL7E,QAAK,IAALA,GAAiB,QAAZ8E,GAAL9E,EAAOrC,kBAAU,IAAAmH,QAAA,EAAjBA,GAAmBrX,gBAAQ,IAAAoX,MAAI,MAGjC5c,KAAKkC,qBACgB,QADI4a,GAClB,OAAL/E,QAAK,IAALA,OAAK,EAALA,EAAOiF,oBAAY,IAAAF,MAAI9c,KAAKmC,6BAY9BnC,KAAKoC,eAAiB2V,EAAMpC,OAC5B3V,KAAKiP,uBAAuBjP,KAAKoC,gBACjC,MAAOqL,IACPpJ,QAAQqJ,MAAMD,MASlBsP,gBAAgBhF,GACd,IAAK,IAAIkF,KAAOlF,GACY,IAAtBA,EAAMkF,GAAKvX,QACbqS,EAAMkF,GAAKvX,MAAQ,OAQzBwX,sBAAsB,IAAAC,EAAAC,EACpB,MAAMC,EAA4C,QAA9BF,EAAuB,QAAvBC,EAAGpd,KAAKK,uBAAe,IAAA+c,OAAA,EAApBA,EAAsB7e,aAAK,IAAA4e,SAAI1d,EAClC,IAAA6d,EAAhBD,IACFrd,KAAKud,OACgC,OAAf,QAApBD,EAAAtd,KAAKK,uBAAe,IAAAid,OAAA,EAApBA,EAAsB5Y,UAAmB2Y,EAAiBrd,KAAKud,SAOrEC,8BAEExd,KAAKqC,uBACFrC,KAAKgI,4BAA4ByV,KAAKzgB,IAE/B,OAAJA,QAAI,IAAJA,OAAI,EAAJA,EAAMS,QAAS0C,OAAmB1C,OAC9B,OAAJT,QAAI,IAAJA,OAAI,EAAJA,EAAMS,QAAS0C,OAAmBgB,gBAC9B,OAAJnE,QAAI,IAAJA,OAAI,EAAJA,EAAMS,QAAS0C,OAAmBc,mBAGrCjB,KAAKgJ,qCAAqC1D,SAC1CtF,KAAK+J,6BAA6BzE,SAClCtF,KAAK8I,qBAOV4U,4BAA4BC,GAC1BA,EAAQ7I,KAAKtP,SAAW,IACxBmY,EAAQ7I,KAAKpP,MAAQ1F,KAAKkC,qBAAqB3D,MAE/Cof,EAAQ1Y,GAAGzG,KAAK,CACdgH,SAAU,IACVE,OAAQ,MAIdkY,MAAO,CAML3a,yBAA0B,CACxB4a,QAASC,eAAe1d,GACtB,IAAI,IAAA2d,EACF,IAAK/d,KAAKL,kBACR,aAEIK,KAAKsN,kBAAkBrH,eAA4B7F,IAGzDJ,KAAKX,yBAA2B,GACb,QAAnB0e,EAAA/d,KAAK6C,sBAAc,IAAAkb,GAAnBA,EAAqBzf,QAAQqF,IAC3B3D,KAAKX,yBAAyBb,KAC5BwB,KAAKC,sBAAsB0D,IAGzB3D,KAAK6P,uBAAuBlM,IAC9B3D,KAAKX,yBAAyBb,KAC5BwB,KAAKC,sBAAsB0D,EAAO,MAAM,MAK1C3D,KAAKoC,iBACPpC,KAAKiP,uBAAuBjP,KAAKoC,gBACjCpC,KAAKoC,oBAAiB3C,GAYxB,MAAOgO,GACPpJ,QAAQqJ,MAAMD,KAGlBuQ,WAAW,GAMbre,oBACEK,KAAKR,iBAAcC,GAIrBuI,4BAA6B,CAC3B6V,UACE7d,KAAKwd,+BAEPQ,WAAW,GAIbhV,qCAAsC,CACpC6U,UACE7d,KAAKwd,+BAEPQ,WAAW,GAIbjU,6BAA8B,CAC5B8T,UACE7d,KAAKwd,+BAEPQ,WAAW,GAIblV,oBAAqB,CACnB+U,UACE7d,KAAKwd,+BAEPQ,WAAW,GAIbhd,iBAAkB,CAChB6c,UACE7d,KAAKwd,+BAEPQ,WAAW,GAIb9c,eAAgB,CACd2c,UACE7d,KAAKwd,+BAEPQ,WAAW,GAIb3b,wBACOrC,KAAKqC,0B,+FClxDiG,W,IAA6B,OAAwB,EAAC,W,OAAI,qC,MAAC,CAAsD,gBAAkB,WAAsB,sB,GAAsB4a,CAAcgB,uBAAa,2B,iBAAY,oB,YAAkC,MAAa,C,kCAAmI,6BAAkC,CAAiC,OAAIC,YAAe,EAAG,YAA4DC,yBAAM,6BAAC,8BAAuB,0BAAC,mCAAwB,kCAAQ,EAAC,4D,MAAC,CAAoC,oBAACpG,yBAAM,G,GAAkCqG,C,eAA6BC,kB,MAA0BC,CAAiC,6BAAI,SAAQJ,SAAG,GAAeC,EAAM,wBAAqB,sCAAmH,wB,MAAmF,CAA+B,UAAe,MAAkB,4DAAG,yBAAC,0BAAC,mCAAiC,8CAAC,eAAe,EAAI,YAAe,gCAA0D,GAAC,CAAC,8BAAM,cAAC,gBAAM,yD,OAAoDA,G,KAAgB,S,GAAG,W,MAAgCxf,UAAY,CAAO,MAAK,CAASA,WAA0B,QAAO,OAAI,U,YAAM,QAAG,WAAE,YAAO4f,OAA6CJ,MAAM,CAAC,UAAsB,S,CAAK,oBAAiBK,EAAO,uB,MAAC,CAA4B,mBAAGC,IAAqBxB,MAAI,SAAW,GAAG,OAAC,EAAAgB,oB,YAAwE,OAAK,IAAC,YAAChB,GAAG,WAAa,MAAC,MAAU,oCAAyD,OAAC,GAACyB,CAAY,IAAC,UAAwB,GAAI,WAAwB,mDAAa,WAAO,sBAA4B,wBAAuC,cAA4E,uBAAsBC,C,MAAqB,CAAyC,UAAaA,wBAAuB,+BAAG,qBAAC,oBAAC,sBAAYC,mBAAqB,uCAAIV,aAAG,sB,GAA6B,CAAsC,iCAA4E,uBAAiBW,CAAkB,MAAC,CAAG,QAAC,0BAAC,gBAAQ,EAASL,a,qBAAYM,oBAA+B,mCAAI,GAAG,CAAyBX,MAAM,YAAC,2BAA2B,MAAuE,0BAACY,MAAG,CAAC,OAAQ,iB,QAAqBC,sBAA2B,mCAAI,GAAG,CAA6Bb,MAAM,YAAC,uBAAcc,MAA+F,6BAA4BC,C,MAAoB,CAA8B,6BAAG,gBAAC,eAAC,qBAAiBV,EAAM,kB,wBAAyB,EAAE,oBAAK,6BAAI,GAAG,CAA6BL,MAAM,YAAC,sBAAcgB,MAA+F,6BAA4BD,C,MAAoB,CAA8B,6BAAG,gBAAC,eAAC,qBAAiBV,EAAM,kB,wBAAyB,EAAE,oBAAK,6BAAI,GAAG,CAA6BL,MAAM,YAAC,sBAAciB,MAAqG,6BAAmBC,CAAiB,MAAC,CAAG,QAAC,+BAAC,aAAQ,EAAAC,Y,qBAAqBF,oBAAoC,oCAAI,GAAG,CAAiCjB,MAAM,YAAC,gCAAcoB,MAAuG,iCAAkBC,CAA2B,MAAC,CAAG,QAAC,6BAAC,gBAAQ,EAAShB,a,qBAAYe,oBAAkC,6CAAI,GAAG,CAA8BpB,MAAM,YAAC,8BAAcsB,MAA2G,8BAAqBC,C,MAAmB,CAAmC,wCAA4C,gCAAG,qBAAC,oBAAC,iBAAYC,qBAA2B,iCAAIzB,uBAAG,EAAyB,kB,GAAS,CAA0C,QAAa,+BAAgE,4BAA4BgB,C,MAAoB,CAAwC,UAAaP,4BAA2B,gCAA4C,yCAAG,wBAAC,sBAAC,iBAAYiB,qBAAyB,sCAAI1B,uBAAG,oB,GAA4C,CAA4B,MAAS,EAACS,6BAA2E,sCAAqBkB,CAAmB,MAAC,CAAG,OAAC,iBAAC,QAAQlB,EAAImB,qCAAkC,gCAAI5B,iBAAc,uB,GAAQ,CAA0B,MAAMS,EAAIoB,sCAA0C,aAAapB,CAAqB,MAAC,CAAG,MAAC,gBAAC,IAAO,EAACA,YAAkB,0BAAC5G,aAAM,qB,GAA6BqG,C,MAA6B4B,iB,MAAqB1B,CAA4B,wBAAIK,SAAU,SAAQsB,GAC7+J,qBAGD,WAAiBC,oB,4HCIjB,MAAM,SACJC,EAAQ,aACRC,EAAY,WACZC,EAAU,WACVC,GACEC,eAAwB,UAuBfC,EAAoB,CAC/B1hB,OAAQ,CACN2hB,OACAC,OACAC,OACA9hB,QAEF6D,SAAU,IACLyd,EAAS,CACVS,QAAS,UACTC,YAAa,cACbC,OAAQ,SACRC,YAAa,cACbC,aAAc,oBACdC,WAAY,aACZC,cAAe,gBACfC,oBAAqB,2BAMpBd,EAAW,CAAC,aAAc,yBAM7BlO,QAAQ,IAAAiP,EACyBC,EAA/B,OAAIrhB,KAAKqe,qBACY,QAAnBgD,EAAOrhB,KAAK4gB,eAAO,IAAAS,OAAA,EAAZA,EAAclc,OAAOL,GACnBA,EAAGrH,KACPL,cACAtB,SAASkE,KAAKqe,qBAAqBjhB,gBAIvB,QAAnBgkB,EAAOphB,KAAK4gB,eAAO,IAAAQ,IAAI,IAOzBE,4BACE,OAAOthB,KAAKuhB,kBAAoB,EAC5BvhB,KAAKuhB,iBACLvhB,KAAK6M,UAAY,EACjB7M,KAAKmS,MAAM,GAAG/R,GACd,IAGRmM,QAAS,IACJ+T,EAAW,CACZkB,gBAAiB,kBACjBC,eAAgB,iBAChBC,qBAAsB,uBACtBC,WAAY,aACZC,oBAAqB,sBACrBC,mBAAoB,qBACpBC,WAAY,aACZC,mBAAoB,qBACpBC,mBAAoB,qBACpBC,aAAc,eACdC,gBAAiB,kBACjBC,gBAAiB,kBACjBC,WAAY,aACZC,YAAa,cACbC,oBAAqB,iBACrBC,qBAAsB,uBACtBC,wBAAyB,0BACzBC,yBAA0B,2BAC1BC,yBAA0B,2BAC1BC,yBAA0B,2BAC1BC,yBAA0B,gCAMzBxC,EAAa,CACdyC,cAAeC,OACfC,eAAgBC,OAChBC,gBAAiBC,OACjBC,qBAAsBC,OACtBC,WAAYC,OACZC,cAAeC,OACfC,sBAAuBC,OACvBC,qBAAsBC,SAQxBC,8BAA+BA,IAAMA,iBAMrCC,kCAAmCA,IACjCA,iBAOF,gBAAgB1jB,GACd,IAAI,IAAA2jB,EAAAC,EAAAC,EAAAC,EAAAC,EACFnkB,KAAKokB,aACLpkB,KAAKqkB,WAAY,EACjB,MAAM1G,EAAU,CACdvd,GAAIA,EACJkkB,YAA4B,QAAjBP,EAAE/jB,KAAKukB,kBAAU,IAAAR,IAAI,EAChClQ,MAA6B,QAAxBmQ,EAAEhkB,KAAKwkB,yBAAiB,IAAAR,IAAI,UAE7BhkB,KAAKwhB,gBAAgB7D,IAOd,QAAXsG,EAAAjkB,KAAK8gB,cAAM,IAAAmD,OAAA,EAAXA,EAAaQ,YACbC,OAAqD,QAA/CR,EAAa,QAAbC,EAACnkB,KAAK2kB,eAAO,IAAAR,GAAc,QAAdA,EAAZA,EAAcS,oBAAY,IAAAT,GAAQ,QAARA,EAA1BA,EAA4BU,cAAM,IAAAV,OAAA,EAAlCA,EAAoCW,kBAAU,IAAAZ,KAAK,IAE1DlkB,KAAKujB,cAAc,CAACvjB,KAAK8gB,SAC3B,MAAOrT,GACPzN,KAAK+kB,YAAYtX,GACjB,QACAzN,KAAKqkB,WAAY,EACjBrkB,KAAKglB,SAAU,IAQnB,uBACE,IAOE,GANAhlB,KAAKokB,aACL/f,QAAQC,IACN,sBAAsBtE,KAAKqe,qBAC3Bre,KAAKshB,2BAGHthB,KAAKqe,qBAAsB,CAC7Bre,KAAKqkB,WAAY,EACjBrkB,KAAKilB,uBAAwB,EAC7BjlB,KAAKqkB,WAAY,EACjB,MAAM1G,EAAU3d,KAAKyU,mBACnBzU,KAAKshB,0BACL,GACA,GAEF3D,EAAQ7I,KAAKpP,MAAQ1F,KAAKqe,qBAC1BV,EAAQ7I,KAAKtP,SAAW,UAClBxF,KAAKwiB,wBAAwB7E,IAErC,MAAOlQ,GACPzN,KAAK+kB,YAAYtX,GACjB,QACAzN,KAAKqkB,WAAY,EACjBrkB,KAAKglB,SAAU,MCbR,OACfvnB,KAAA,eACAqB,OAAA,CAAA0hB,GACA0E,WAAA,CACAC,0BACA,gDACAC,eAAA,kDCpMoW,I,YCOhWC,EAAY,eACd,EACA,EACAnF,GACA,EACA,KACA,KACA,MAIa,aAAAmF,E,2CClBf,0EAEA,MAAM,SAAElF,EAAQ,WAAEE,EAAU,WAAEC,GAAeC,eAAwB,QAQxDrhB,EAAY,CACvBJ,OAAQ,CAACwmB,QACT5iB,SAAU,IACLyd,EAAS,CACVoF,YAAa,OACbC,aAAc,eACdC,cAAe,qBAEdpF,EAAW,CACZqF,UAAW,YACXC,eAAgB,aAChBC,WAAY,SACZC,WAAY,aACZxV,cAAe,YACfkE,cAAe,gBACfuR,gBAAiB,cACjBC,kBAAmB,oBACnBC,cAAe,gBACfC,oBAAqB,kBACrB5O,aAAc,eACd3K,mBAAoB,qBACpBwZ,uBAAwB,yBACxBC,qCACE,uCACFC,uBAAwB,yBACxBC,qCACE,uCACFC,qBAAsB,uBACtBC,yBAA0B,2BAC1BC,eAAgB,iBAChBC,WAAY,eAOdC,0BACE,QAAS1mB,KAAKumB,yBAAyBI,OAAiBC,mBAO1DC,2BACE,QAAS7mB,KAAKumB,yBACZI,OAAiBG,qBASvBva,QAAS,IACJ+T,EAAW,CAAE9L,aAAc,oB,mIC5DlC,MAAMrZ,EAAc,CAAC,KAAM,KAAM,KAAM,MAEjC4rB,EAAkB,KACf5rB,EAAYK,OAAO,CAACC,EAAOC,KAChCD,EAAMC,GAAO,CACXM,KAAM,CAAC6B,QAAS5B,OAAQyoB,QACxBxoB,SAAS,GAEJT,GACN,IAPmB,GAUlBurB,EAAc,KACX7rB,EAAYK,OAAO,CAACC,EAAOC,KAChCD,EAAM,SAAWE,eAAWD,IAAQ,CAClCM,KAAM,CAACC,OAAQyoB,QACfxoB,QAAS,MAEJT,GACN,IAPe,GAUdwrB,EAAa,KACV9rB,EAAYK,OAAO,CAACC,EAAOC,KAChCD,EAAM,QAAUE,eAAWD,IAAQ,CACjCM,KAAM,CAACC,OAAQyoB,QACfxoB,QAAS,MAEJT,GACN,IAPc,GAUbe,EAAU,CACd0qB,IAAKxqB,OAAOC,KAAKoqB,GACjBI,OAAQzqB,OAAOC,KAAKqqB,GACpBI,MAAO1qB,OAAOC,KAAKsqB,IAGrB,SAASlqB,EAAiBf,EAA4BgB,EAActB,GAClE,IAAIuB,EAAYjB,EAChB,GAAW,MAAPN,IAAuB,IAARA,EAAnB,CAGA,GAAIsB,EAAM,CACR,MAAME,EAAaF,EAAKG,QAAQnB,EAAM,IACtCiB,GAAa,IAAIC,EAKnB,MAAa,QAATlB,GAA2B,KAARN,IAAsB,IAARA,GAKrCuB,GAAa,IAAIvB,EACVuB,EAAUG,eAJRH,EAAUG,eAOrB,MAAMC,EAAQ,IAAIC,IAEHC,cAAIC,OAAO,CACxBC,KAAM,QACNC,YAAY,EACZjC,MAAO,CACL4rB,KAAM,CACJrrB,KAAM,CAAC6B,QAAS5B,OAAQyoB,QACxBxoB,SAAS,MAER6qB,EACHI,OAAQ,CACNnrB,KAAM,CAACC,OAAQyoB,QACfxoB,QAAS,SAER8qB,EACHI,MAAO,CACLprB,KAAM,CAACC,OAAQyoB,QACfxoB,QAAS,SAER+qB,EACHK,UAAW,CACTtrB,KAAMC,OACNC,QAAS,KACTC,UAAYN,GAAa,CAAC,OAAQ,QAAS,MAAO,SAAU,WAAY,WAAWC,SAASD,IAE9F8B,IAAK,CACH3B,KAAMC,OACNC,QAAS,QAGb6B,OAAQC,GAAG,MAAEvC,EAAF,KAASwC,EAAT,SAAeC,EAAf,OAAyBqpB,IAElC,IAAIppB,EAAW,GACf,IAAK,MAAMnB,KAAQvB,EACjB0C,GAAYlC,OAAQR,EAAcuB,IAEpC,IAAIoB,EAAYf,EAAMgB,IAAIF,GAE1B,IAAKC,EAAW,CAGd,IAAIpC,EACJ,IAAKA,KAHLoC,EAAY,GAGC5B,EACXA,EAAQR,GAAMsC,QAAQtB,IACpB,MAAMuB,EAAoC9C,EAAcuB,GAClDC,EAAYF,EAAgBf,EAAMgB,EAAMuB,GAC1CtB,GAAWmB,EAAWI,KAAKvB,KAInC,MAAMuqB,EAAgBppB,EAAUqf,KAAKxgB,GAAaA,EAAUwqB,WAAW,SAEvErpB,EAAUI,KAAK,CAEb0oB,KAAMM,IAAkB/rB,EAAM4rB,KAC9B,CAAC,OAAO5rB,EAAM4rB,MAAS5rB,EAAM4rB,KAC7B,CAAC,UAAU5rB,EAAM0rB,QAAW1rB,EAAM0rB,OAClC,CAAC,SAAS1rB,EAAM2rB,OAAU3rB,EAAM2rB,MAChC,CAAC,cAAc3rB,EAAM6rB,WAAc7rB,EAAM6rB,YAG3CjqB,EAAMoB,IAAIN,EAAUC,GAGtB,OAAOJ,EAAEvC,EAAMkC,IAAKe,eAAUT,EAAM,CAAEW,MAAOR,IAAcF,O,sHC1HxD,MAAMe,EAAkB,CAC7BH,OAAQ,CAACI,QACTjB,OACE,MAAO,CACLypB,QAASA,OACT3T,mBAAmB,EACnBJ,wBAAoBlU,IAGxBiD,SAAU,CAKRilB,aAAa,IAAAC,EACX,MAAMC,EAAkB,GAExB,GAA6B,IAAzB7nB,KAAK8lB,gBACP,OAAO+B,EAGT,MAAMC,EAA6B,QAAlBF,EAAG5nB,KAAK4lB,kBAAU,IAAAgC,OAAA,EAAfA,EAAiBziB,OAAOL,GAC1C9E,KAAKwM,iBAAiB1H,EAAG1E,KAsB3B,OAnBA8S,OAAW5U,QAAQ2U,IAAM,IAAAzC,EACvB,MAAMxN,EAAoB,OAAX8kB,QAAW,IAAXA,OAAW,EAAXA,EAAa3iB,OAC1BxB,GAASA,EAAMsK,gBAAkBgF,EAAG7S,KAGnB,QAAfoQ,EAAO,OAANxN,QAAM,IAANA,OAAM,EAANA,EAAQsC,cAAM,IAAAkL,IAAI,GAAK,GAC1BqX,EAAgBrpB,KAAK,CACnB4B,GAAc,IAAV6S,EAAG7S,IAAY,KAAO6S,EAAG7S,GAC7B3C,KAAMwV,EAAGnC,MACT5S,SAAU8E,EAAO2G,IAAI0D,IACZ,CACLjN,GAAIiN,EAAEjN,GACN3C,KAAM4P,EAAE5P,YAOXoqB,IAGXtb,QAAS,CAMPC,iBAAiBpM,GAEf,OADAiE,QAAQkJ,KAAK,iDAAiDnN,IACvD,GAKT2nB,2BACE/nB,KAAK+T,mBAAoB,GAM3BiU,qBAAqBxU,GACnBnP,QAAQkJ,KACN,2DAA2DiG,KAIjEoK,MAAO,CACL7J,oBACE/T,KAAK2T,wBAAqBlU,M,kCC7EhC,wJAEA,MAAMwoB,EAAU,CACdC,UAAW,gBACXC,UAAW,SAGb,SAASC,EAAYC,GACnB,MAAMC,EAA4B,GAElC,IAAK,MAAMC,KAAKF,EAAMG,MAAMP,EAAQC,WAAY,CAC9C,IAAKjL,EAAKvhB,GAAO6sB,EAAEC,MAAMP,EAAQE,WACjClL,EAAMA,EAAIwL,OACLxL,IAIc,kBAARvhB,IACTA,EAAMA,EAAI+sB,QAEZH,EAASI,eAASzL,IAAQvhB,GAG5B,OAAO4sB,EASK,SAAU5pB,IACtB,MAAMiqB,EAA2C,GACjD,IACI3rB,EADAoZ,EAAYwS,UAAUtjB,OAI1B,MAAO8Q,IAGL,IAAKpZ,KAAQN,OAAOC,KAAKisB,UAAUxS,IACjC,OAAQpZ,GAEN,IAAK,QACL,IAAK,aACC4rB,UAAUxS,GAAGpZ,KACf2rB,EAAY3rB,GAAQ6rB,EAAaF,EAAY3rB,GAAO4rB,UAAUxS,GAAGpZ,KAEnE,MACF,IAAK,QACC4rB,UAAUxS,GAAGpZ,KACf2rB,EAAY3rB,GAAQ8rB,EAAYH,EAAY3rB,GAAO4rB,UAAUxS,GAAGpZ,KAElE,MAEF,IAAK,cACH,IAAK4rB,UAAUxS,GAAGpZ,GAChB,WAEwByC,IAAtBkpB,EAAY3rB,KACd2rB,EAAY3rB,GAAQ,IAElB2rB,EAAY3rB,KAEd2rB,EAAY3rB,IAAS,KAEvB2rB,EAAY3rB,IAAS4rB,UAAUxS,GAAGpZ,GAAMyrB,OACxC,MAMF,IAAK,KACL,IAAK,WACCG,UAAUxS,GAAGpZ,KACf2rB,EAAY3rB,GAAQ+rB,EAAeJ,EAAY3rB,GAAO4rB,UAAUxS,GAAGpZ,KAErE,MAEF,IAAK,QACL,IAAK,QACL,IAAK,WACL,IAAK,cACL,IAAK,cACL,IAAK,OACL,IAAK,aACH,IAAK4rB,UAAUxS,GAAGpZ,GAChB,MAEG2rB,EAAY3rB,KACf2rB,EAAY3rB,GAAQ,IAEtB2rB,EAAY3rB,GAAQ,IAAK4rB,UAAUxS,GAAGpZ,MAAU2rB,EAAY3rB,IAC5D,MAEF,QACO2rB,EAAY3rB,KACf2rB,EAAY3rB,GAAQ4rB,UAAUxS,GAAGpZ,IAM3C,OAAO2rB,EAGH,SAAUG,EACdE,EACAC,GAEA,OAAKD,EACAC,GAELD,EAASE,eAA8B,kBAAXF,EAAsBZ,EAAWY,GAAUA,GAE/DA,EAAoBG,OAAyB,kBAAXF,EAAsBb,EAAWa,GAAUA,IAJjED,EADAC,EAQhB,SAAUJ,EAAcG,EAAaC,GACzC,OAAKA,EACAD,GAEEA,EAASE,eAAYF,GAAQG,OAAOF,GAFvBA,EADAD,EAMhB,SAAUD,KAAmBK,GAIjC,IAAKA,EAAK,GAAI,OAAOA,EAAK,GAC1B,IAAKA,EAAK,GAAI,OAAOA,EAAK,GAE1B,MAAMC,EAAiD,GAEvD,IAAK,IAAIjT,EAAI,EAAGA,KAAM,CACpB,MAAMkT,EAAMF,EAAKhT,GACjB,IAAK,MAAMmT,KAASD,EACbA,EAAIC,KAELF,EAAKE,GAGPF,EAAKE,GAAU,GAAkBJ,OAAOG,EAAIC,GAAQF,EAAKE,IAGzDF,EAAKE,GAASD,EAAIC,IAKxB,OAAOF,I,kCC/JT,gLAaA,MAAMxlB,EAAYnH,OAAO8sB,OAAO,CAC9BppB,GAAI,KACJ3C,KAAM,OACN2Z,SAAU,WACVtT,UAAW,YACXC,aAAc,eACdC,iBAAkB,mBAClBrD,UAAW,YACX8oB,MAAO,QACPC,SAAU,WACVnpB,MAAO,QACP2D,UAAW,YACXV,WAAY,aACZwC,aAAc,eACd/B,MAAO,QACPpD,QAAS,UACT8oB,YAAa,gBAOTC,EAAaltB,OAAO8sB,OAAO,CAC/BppB,GAAI,KACJ3C,KAAM,OACN2Z,SAAU,WACVtT,UAAW,aACXC,aAAc,aACdC,iBAAkB,cAClBrD,UAAW,YACX8oB,MAAO,QACPC,SAAU,YACVnpB,MAAO,QACP2D,UAAW,QACXV,WAAY,OACZwC,aAAc,UACd/B,MAAO,QACPpD,QAAS,UACT8oB,YAAa,iBAOT9a,EAAkCnS,OAAO8sB,OAAO,CACpD,CAAE1a,YAAajL,EAAUL,WAAYwL,SAAU7O,OAAmBsB,QAClE,CAAEqN,YAAajL,EAAUzD,GAAI4O,SAAU7O,OAAmBC,IAC1D,CAAE0O,YAAajL,EAAUpG,KAAMuR,SAAU7O,OAAmB1C,MAC5D,CAAEqR,YAAajL,EAAUK,UAAW8K,SAAU7O,OAAmBY,OACjE,CACE+N,YAAajL,EAAUE,aACvBiL,SAAU7O,OAAmBc,iBAE/B,CAAE6N,YAAajL,EAAUC,UAAWkL,SAAU7O,OAAmBM,SACjE,CACEqO,YAAajL,EAAUG,iBACvBgL,SAAU7O,OAAmBkB,kBAE/B,CAAEyN,YAAajL,EAAUtD,MAAOyO,SAAU7O,OAAmBI,OAC7D,CAAEuO,YAAajL,EAAUlD,UAAWqO,SAAU7O,OAAmBQ,WACjE,CAAEmO,YAAajL,EAAUhD,QAASmO,SAAU7O,OAAmBU,SAC/D,CAAEiO,YAAajL,EAAUI,MAAO+K,SAAU7O,OAAmBwB,WAOzD4M,EAAU7R,OAAO8sB,OAAO,CAC5B,CACEnT,KAAMuT,EAAWpmB,WACjBjF,MAAOsF,EAAUL,WACjBgL,SAAS,GAEX,CACE6H,KAAMuT,EAAWxpB,GACjB7B,MAAOsF,EAAUzD,GACjBoO,SAAS,GAEX,CACE6H,KAAMuT,EAAWnsB,KACjBc,MAAOsF,EAAUpG,KACjB+Q,SAAS,GAEX,CACE6H,KAAMuT,EAAW/oB,QACjBtC,MAAOsF,EAAUhD,QACjB2N,SAAS,GAEX,CACE6H,KAAMuT,EAAW1lB,UACjB3F,MAAOsF,EAAUK,UACjBsK,SAAS,GAEX,CACE6H,KAAMuT,EAAW7lB,aACjBxF,MAAOsF,EAAUE,aACjByK,SAAS,GAEX,CACE6H,KAAMuT,EAAW9lB,UACjBvF,MAAOsF,EAAUC,UACjB0K,SAAUqb,QAEZ,CACExT,KAAMuT,EAAW5lB,iBACjBzF,MAAOsF,EAAUG,iBACjBwK,SAAS,GAEX,CACE6H,KAAMuT,EAAWrpB,MACjBhC,MAAOsF,EAAUtD,MACjBiO,SAAUqb,QAEZ,CACExT,KAAMuT,EAAWjpB,UACjBpC,MAAOsF,EAAUlD,UACjB6N,SAAS,GAEX,CACE6H,KAAMuT,EAAW3lB,MACjB1F,MAAOsF,EAAUI,MACjBuK,SAAS,GAEX,CACE6H,KAAMyT,OAAWpb,QACjBnQ,MAAOkQ,OAAWC,QAClBqb,UAAU,EACVttB,MAAO,MACP+R,SAAS,KAIPwb,EAAoBttB,OAAO8sB,OAAO,CACtCS,OAAQ,SACRC,MAAO,W,kCCtJT,oEAIA,MAAMzb,EAAa/R,OAAO8sB,OAAO,CAC/B9a,QAAS,YAOLob,EAAaptB,OAAO8sB,OAAO,CAC/B9a,QAAS","file":"js/chunk-3e3f81db.8dfc7d97.js","sourcesContent":["import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","// Using Java Script ECMAScript 2021\r\n\r\n// utils\r\nimport { isEmpty, itemCount } from \"@/utils\";\r\n\r\n// design\r\nimport {\r\n getSuccessColorClass,\r\n getSecondaryLightColorClass,\r\n colorTheme\r\n} from \"@/design/colors/Color\";\r\nimport { fontEmphasis, Text } from \"@/design/text/Text\";\r\n\r\n// model\r\nimport {\r\n defaultSearchOperator,\r\n defaultSearchRangeToOperator,\r\n fieldType,\r\n fieldTypes,\r\n findFieldType,\r\n isRangeFromOperator,\r\n isRangeSearchable,\r\n rangeToOperators,\r\n searchOperator,\r\n searchOperators\r\n} from \"@/model/field/fieldModel\";\r\nimport {\r\n findRecordState,\r\n findRecordType,\r\n findSearchableProperty,\r\n recordStates,\r\n recordType,\r\n recordTypes,\r\n recordTypeStates,\r\n searchableProperty\r\n} from \"@/model/record/recordModel\";\r\nimport { fieldName } from \"@/model/document/documentModel\";\r\nimport { headerName } from \"@/model/common/dataTable/dataTableConst\";\r\n\r\nimport {\r\n iconArrowDownDrop,\r\n iconHint,\r\n iconWarning\r\n} from \"@/design/icon/iconConst\";\r\n\r\n// services\r\nimport { mapHeadersSearchableRecordProps } from \"@/model/document/documentModel\";\r\nimport {\r\n createQueryFieldModel,\r\n fieldCriteriaToString,\r\n formatSearchCriteria,\r\n hasSearchableValue,\r\n hasSearchCriteria,\r\n searchableFieldValue,\r\n searchableNumericFieldValue\r\n} from \"@/services/query/queryService\";\r\n\r\n// mixins\r\nimport { menuItemSettingsMixin } from \"@/mixins/shared/base/settings/menuItemSettingsMixin\";\r\nimport { recordIconMixin } from \"@/mixins/shared/record/recordIconMixin\";\r\nimport { moreFieldsMixin } from \"@/mixins/field/moreFieldsMixin\";\r\nimport { userMixin } from \"@/mixins/shared/user/userMixin\";\r\n\r\nexport const searchableMixin = {\r\n mixins: [menuItemSettingsMixin, recordIconMixin, moreFieldsMixin, userMixin],\r\n data() {\r\n return {\r\n isSearching: false,\r\n isApplyingSearch: false,\r\n categorySearchableFields: [],\r\n recordTypes: recordTypes,\r\n recordStates: recordStates,\r\n\r\n // Filter\r\n filterError: undefined,\r\n filterFieldsCount: 0,\r\n menuFilterVisible: false,\r\n\r\n // MoreFields\r\n selectedFlyingFields: [],\r\n //\r\n // Icons\r\n iconArrowDownDrop: iconArrowDownDrop,\r\n iconHint: iconHint,\r\n //\r\n // Searchable Record Properties\r\n //\r\n /**\r\n * @type {{name: string, id: number, label: string, value: undefined, fieldDataType: number, operator: string, include: boolean, lookup: (*|{lookup: {databaseLookup: boolean, enforce: boolean, items: *[]}}), rangeTo: boolean, operators: {description: string, operator: string}[]}}\r\n */\r\n fieldRecordId: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.id)\r\n ),\r\n fieldRecordName: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.name)\r\n ),\r\n fieldRecordOwner: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.owner)\r\n ),\r\n fieldRecordCreator: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.creator)\r\n ),\r\n fieldRecordExtension: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.extension)\r\n ),\r\n fieldRecordVersion: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.version)\r\n ),\r\n fieldRecordPages: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.pages)\r\n ),\r\n fieldCreatedFrom: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.createdDateFrom),\r\n null,\r\n false,\r\n false,\r\n null\r\n ),\r\n fieldCreatedTo: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.createdDateTo),\r\n null,\r\n true,\r\n false,\r\n null\r\n ),\r\n fieldModifiedFrom: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.modifiedDateFrom),\r\n null,\r\n false,\r\n false,\r\n null\r\n ),\r\n fieldModifiedTo: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.modifiedDateTo),\r\n null,\r\n true,\r\n false,\r\n null\r\n ),\r\n fieldRecordType: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.typeId)\r\n ),\r\n fieldRecordState: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.stateId)\r\n ),\r\n /**\r\n * @type {{id:number, name:string, label:string, fieldDataType:number, operators: {description: string, operator: string}[], value:any, operator:string, include:boolean}}\r\n */\r\n fieldRecordCategory: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.categoryId)\r\n ),\r\n fieldChildrenOnly: this.createSearchableField(\r\n findSearchableProperty(searchableProperty.childrenOnly)\r\n ),\r\n //\r\n // Full-Text Search\r\n //\r\n fieldFullText: this.createFullTextField(),\r\n fieldUniversalSearch: this.createUniversalSearchField(),\r\n userFieldModel: undefined,\r\n enableUniversalSearch: true,\r\n headerColor: colorTheme.warning,\r\n iconWarning: iconWarning\r\n };\r\n },\r\n computed: {\r\n /**\r\n * Search Value for Table\r\n * @return {*}\r\n */\r\n searchValue() {\r\n return this.enableUniversalSearch\r\n ? undefined\r\n : this.fieldUniversalSearch.value;\r\n },\r\n /**\r\n * Selected Category\r\n * Abstract computed\r\n * @return {{id:number, name:string, formId:number, flags:number, categoryType: number, categoryTypeName: string, fields: {id: number, name: string, label: string, fieldDataType: number, fieldDataTypeName: string, flags:number, immutable: boolean, isPersistentField: boolean, isRequired: boolean, isSystemCategoryType: boolean, isSystemField: boolean, isVolatile: boolean, requiredForAutoFiling: boolean, sequence: number, unselectable: boolean, searchOperators: {description: string, operator: string}[]}[]}}\r\n */\r\n selectedCategory() {\r\n return undefined;\r\n },\r\n /**\r\n * Get selected Category Fields\r\n * @return {{id: number, name: string, label: string, fieldDataType: number, fieldDataTypeName: string, flags: number, immutable: boolean, isPersistentField: boolean, isRequired: boolean, isSystemCategoryType: boolean, isSystemField: boolean, isVolatile: boolean, requiredForAutoFiling: boolean, sequence: number, unselectable: boolean, searchOperators: {description: string, operator: string}[]}[]|*[]}\r\n */\r\n categoryFields() {\r\n return this.selectedCategory?.fields ?? [];\r\n },\r\n /**\r\n * Selected Record Category id\r\n * @return {*|number}\r\n */\r\n selectedRecordCategoryId() {\r\n return this.fieldRecordCategory?.value ?? -1;\r\n },\r\n /**\r\n * Get selected Record Type Icon\r\n * @return {string}\r\n */\r\n selectedRecordTypeIcon() {\r\n return this.recordTypeIcon(\r\n this.fieldRecordType?.value ?? recordType.RECORD\r\n );\r\n },\r\n /**\r\n * Record Properties\r\n * @return {Array <{name:string, field:{id:number, name:string, label:string, fieldDataType:number, operators: {description: string, operator: string}[], value:any, operator:string, include:boolean}}>}\r\n */\r\n recordProps() {\r\n return [\r\n { name: searchableProperty.id, field: this.fieldRecordId },\r\n { name: searchableProperty.name, field: this.fieldRecordName },\r\n { name: searchableProperty.owner, field: this.fieldRecordOwner },\r\n { name: searchableProperty.creator, field: this.fieldRecordCreator },\r\n {\r\n name: searchableProperty.createdDateFrom,\r\n field: this.fieldCreatedFrom\r\n },\r\n { name: searchableProperty.createdDateTo, field: this.fieldCreatedTo },\r\n {\r\n name: searchableProperty.modifiedDateFrom,\r\n field: this.fieldModifiedFrom\r\n },\r\n {\r\n name: searchableProperty.modifiedDateTo,\r\n field: this.fieldModifiedTo\r\n },\r\n { name: searchableProperty.typeId, field: this.fieldRecordType },\r\n { name: searchableProperty.stateId, field: this.fieldRecordState },\r\n {\r\n name: searchableProperty.extension,\r\n field: this.fieldRecordExtension\r\n },\r\n { name: searchableProperty.version, field: this.fieldRecordVersion },\r\n { name: searchableProperty.pages, field: this.fieldRecordPages },\r\n {\r\n name: searchableProperty.categoryId,\r\n field: this.fieldRecordCategory\r\n },\r\n { name: searchableProperty.childrenOnly, field: this.fieldChildrenOnly }\r\n ];\r\n },\r\n /**\r\n * Mapping Header Names and Record Property Fields\r\n * @return {{name:string, field: {id:number, name:string, label:string, fieldDataType:number, operators: {description: string, operator: string}[], value:any, operator:string, include:boolean}} []}\r\n */\r\n mappingHeaderNames() {\r\n return [\r\n { name: fieldName.recordType, field: this.fieldRecordType },\r\n { name: fieldName.id, field: this.fieldRecordId },\r\n { name: fieldName.owner, field: this.fieldRecordOwner },\r\n { name: fieldName.createdBy, field: this.fieldRecordCreator },\r\n { name: fieldName.creationDate, field: this.fieldCreatedFrom },\r\n { name: fieldName.modificationDate, field: this.fieldModifiedFrom },\r\n { name: fieldName.state, field: this.fieldRecordState },\r\n { name: fieldName.pageCount, field: this.fieldRecordPages },\r\n { name: fieldName.extension, field: this.fieldRecordExtension },\r\n { name: fieldName.version, field: this.fieldRecordVersion }\r\n ];\r\n },\r\n /**\r\n * Compute searchable Record Properties\r\n * @return {{name: string, include: boolean, operator: string, value: string}[]}\r\n */\r\n searchableRecordProperties() {\r\n const props = [];\r\n\r\n console.log(\r\n `searchableRecordProperties() this.recordProps:`,\r\n this.recordProps\r\n );\r\n\r\n this.recordProps?.forEach(rp => {\r\n if (rp.field.include || hasSearchableValue(rp.field)) {\r\n props.push({\r\n name: rp.name,\r\n include: rp.field.include,\r\n operator: rp.field.operator,\r\n value: rp.field.value\r\n });\r\n }\r\n });\r\n\r\n // Global Search\r\n if (this.fieldUniversalSearch.value) {\r\n props.push({\r\n name: this.fieldUniversalSearch.name,\r\n include: this.fieldUniversalSearch.include,\r\n operator: this.fieldUniversalSearch.operator,\r\n value: this.fieldUniversalSearch.value\r\n });\r\n }\r\n\r\n return props;\r\n },\r\n searchableRecordFields() {\r\n const searchableFields = [];\r\n const fields = this.searchableRecordFieldsCriteria || [];\r\n\r\n // Save Category Form Fields\r\n fields?.forEach(el => {\r\n if (!searchableFields.find(sf => sf.Id === el.Id)) {\r\n const rangeFields = fields.filter(rf => rf.Id === el.Id) || [];\r\n const isRange =\r\n rangeFields.length > 0 &&\r\n isRangeFromOperator(rangeFields[0].Operator);\r\n\r\n if (isRange) {\r\n rangeFields.forEach(rf => {\r\n searchableFields.push(rf);\r\n });\r\n } else {\r\n if (rangeFields.length > 0) {\r\n searchableFields.push(rangeFields[0]);\r\n }\r\n }\r\n }\r\n });\r\n\r\n // Save flying Fields\r\n this.selectedFlyingFields.forEach(el => {\r\n if (!searchableFields.find(sf => sf.Id === el.id)) {\r\n const rangeFields =\r\n this.selectedFlyingFields.filter(rf => rf.id === el.id) || [];\r\n const isRange =\r\n rangeFields.length > 0 &&\r\n isRangeFromOperator(rangeFields[0].operator);\r\n\r\n if (isRange) {\r\n rangeFields.forEach(rf => {\r\n searchableFields.push({\r\n Id: rf.id,\r\n Include: rf.include,\r\n Value: rf.value,\r\n Operator: rf.operator\r\n });\r\n });\r\n } else {\r\n if (rangeFields.length > 0) {\r\n searchableFields.push({\r\n Id: rangeFields[0].id,\r\n Include: rangeFields[0].include,\r\n Value: rangeFields[0].value,\r\n Operator: rangeFields[0].operator\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n return searchableFields;\r\n },\r\n visibleSearchFileProperties() {\r\n return this.fieldRecordType.value === recordType.FILE;\r\n },\r\n searchableRecordTypes() {\r\n return this.recordTypes;\r\n },\r\n /**\r\n * Get Searchable Record States\r\n * @return {unknown[]}\r\n */\r\n searchableRecordStates() {\r\n const recordTypeId = searchableNumericFieldValue(\r\n this.fieldRecordType?.value\r\n );\r\n\r\n return recordTypeId >= 0\r\n ? recordTypeStates(recordTypeId)\r\n : this.recordStates;\r\n },\r\n /**\r\n * Get record Category Search Criteria\r\n * @return {{Value:number, Operator:string}}\r\n */\r\n recordCategorySearchCriteria() {\r\n return {\r\n Operator: searchOperators[searchOperator.equal].operator || \"\",\r\n Value: this.selectedCategory?.id ?? -1\r\n };\r\n },\r\n /**\r\n * Compute Includable Record Fields\r\n * @return {string[]}\r\n */\r\n includableRecordFields() {\r\n const fields = [];\r\n\r\n // Record Category Fields\r\n const categoryFields =\r\n this.categorySearchableFields?.filter(el => el.include) ?? [];\r\n\r\n categoryFields.forEach(field => {\r\n fields.push(field.id);\r\n });\r\n\r\n // Flying (additional to category's fields) Fields\r\n const flyingFields =\r\n this.selectedFlyingFields?.filter(el => el.include) ?? [];\r\n\r\n flyingFields.forEach(field => {\r\n fields.push(field.id);\r\n });\r\n\r\n return fields;\r\n },\r\n /**\r\n * Compute searchable Record Fields Criteria\r\n * @return {{Id:number, Include:boolean, Value:any, Operator:string}[]}\r\n */\r\n searchableRecordFieldsCriteria() {\r\n /**\r\n * Get Query Field Models\r\n * @type {{Id:number, Include:boolean, Operator:string, Value:any }[]}\r\n */\r\n const fields = [];\r\n\r\n // Full Text\r\n if (this.fieldFullText.value) {\r\n const fieldModel = createQueryFieldModel(\r\n this.fieldFullText.id,\r\n this.fieldFullText.include,\r\n this.fieldFullText.operator,\r\n this.fieldFullText.value\r\n );\r\n fields.push(fieldModel);\r\n }\r\n\r\n // Category Form Fields\r\n const searchCategoryFields =\r\n this.categorySearchableFields.filter(el => el.value || el.include) ||\r\n [];\r\n\r\n searchCategoryFields.forEach(field => {\r\n const fieldModel = createQueryFieldModel(\r\n field.id,\r\n field.include,\r\n field.operator,\r\n field.value\r\n );\r\n fields.push(fieldModel);\r\n });\r\n\r\n // Additional 'flying' Fields\r\n const searchFlyingFields =\r\n this.selectedFlyingFields?.filter(el => el.value || el.include) ?? [];\r\n\r\n searchFlyingFields.forEach(field => {\r\n const fieldModel = createQueryFieldModel(\r\n field.id,\r\n field.include,\r\n field.operator,\r\n field.value\r\n );\r\n fields.push(fieldModel);\r\n });\r\n\r\n return fields;\r\n },\r\n showFilterError: {\r\n get() {\r\n return !isEmpty(this.filterError);\r\n },\r\n set(value) {\r\n if (!value) {\r\n this.filterError = \"\";\r\n }\r\n }\r\n },\r\n dismissibleFilterError() {\r\n return true;\r\n },\r\n\r\n /**\r\n * has Search Filter\r\n * @return {boolean} returns true if Search Filter Criteria Count is bigger then 0\r\n */\r\n hasFilter() {\r\n return this.searchCriteriaCount > 0;\r\n },\r\n\r\n /**\r\n * Search filter Tooltip\r\n * @return {string} returns a useful user-friendly Search filter tooltip\r\n */\r\n filterTooltip() {\r\n return `Search Filter Count: ${this.searchCriteriaCount}`;\r\n },\r\n\r\n /**\r\n * Is visible Filter Badge\r\n * @return {boolean} returns true if Filter Badge is visible, else returns false\r\n */\r\n visibleFilterBadge() {\r\n return true;\r\n },\r\n\r\n /**\r\n * filter Badge Message\r\n * @return {string} returns formatted filter Badge Message\r\n */\r\n filterBadgeMessage() {\r\n return `${this.searchCriteriaCount}`;\r\n },\r\n\r\n /**\r\n * filter Badge Color class\r\n * @return {string|*} returns filter Badge Color class\r\n * based on search Criteria Count\r\n */\r\n filterBadgeColorClass() {\r\n return this.searchCriteriaCount > 0\r\n ? getSuccessColorClass()\r\n : getSecondaryLightColorClass();\r\n },\r\n filterSearchableRecordProps() {\r\n return this.recordProps?.filter(\r\n rp =>\r\n rp?.field?.name !== searchableProperty.childrenOnly &&\r\n hasSearchableValue(rp.field)\r\n );\r\n },\r\n hasSearchableRecordProps() {\r\n return (this?.filterSearchableRecordProps?.length ?? 0) > 0;\r\n },\r\n\r\n /**\r\n * Used for Search Filter UI - SearchableRecordProps\r\n * @return {unknown[] | undefined}\r\n */\r\n filterAdvancedSearchableRecordProps() {\r\n return this.recordProps?.filter(\r\n rp =>\r\n rp?.field?.name !== searchableProperty.childrenOnly &&\r\n rp?.field?.name !== searchableProperty.categoryId &&\r\n rp?.field?.name !== searchableProperty.name &&\r\n hasSearchableValue(rp.field)\r\n );\r\n },\r\n\r\n // Used for Search Filter UI - SearchableRecordProps\r\n hasAdvancedSearchableRecordProps() {\r\n return (this?.filterAdvancedSearchableRecordProps?.length ?? 0) > 0;\r\n },\r\n hasFullTextCriteria() {\r\n return !isEmpty(this.fieldFullText.value);\r\n },\r\n hasUniversalSearchCriteria() {\r\n return !isEmpty(this.fieldUniversalSearch.value);\r\n },\r\n filterSearchableRecordCategoryFields() {\r\n return (\r\n this.categorySearchableFields?.filter(fld => hasSearchableValue(fld)) ??\r\n []\r\n );\r\n },\r\n hasSearchableRecordCategoryFields() {\r\n return (this.filterSearchableRecordCategoryFields?.length ?? 0) > 0;\r\n },\r\n\r\n /**\r\n * Used for Search Filter UI - RecordCategoryFields\r\n * @return {*[]}\r\n */\r\n filterAdvancedSearchableRecordCategoryFields() {\r\n const searchableRecordProps = this.recordProps\r\n ?.filter(\r\n rp =>\r\n rp?.field?.name === searchableProperty.categoryId &&\r\n hasSearchableValue(rp.field)\r\n )\r\n .map(rp => rp.field);\r\n return [\r\n ...this.filterSearchableRecordCategoryFields,\r\n ...searchableRecordProps\r\n ];\r\n },\r\n\r\n //Used for Search Filter UI - RecordCategoryFields\r\n hasAdvancedSearchableRecordCategoryFields() {\r\n return (\r\n (this.filterAdvancedSearchableRecordCategoryFields?.length ?? 0) > 0\r\n );\r\n },\r\n filterSearchableFlyingFields() {\r\n return this.selectedFlyingFields?.filter(fld => hasSearchableValue(fld));\r\n },\r\n hasSearchableFlyingFields() {\r\n return (this?.filterSearchableFlyingFields?.length ?? 0) > 0;\r\n },\r\n\r\n filterHeaderRecord: () => `Record Properties`,\r\n filterHeaderFullText: () => `Full Text`,\r\n filterHeaderUniversalSearch: () => `Search`,\r\n filterHeaderCategoryFields: () => `Category`,\r\n filterHeaderMoreFields: () => `More Fields`,\r\n commandSearchLabel: () => `OK`,\r\n commandApplyLabel: () => `Apply`,\r\n commandSearchReset: () => `Clear`,\r\n commandSearchCancelLabel: () => \"Cancel\",\r\n commandCloseSearchDialogTooltip: () => \"Close Search Dialog\",\r\n commandBrowseTooltip: () => \"Browse Search Template\",\r\n commandSaveTooltip: () => \"Save Search Template\",\r\n commandResetTooltip: () => \"Clear Search Filter\",\r\n commandSearchLabelTooltip: () => \"Apply Search Filter and Close\",\r\n commandApplyLabelTooltip: () => \"Apply Search Filter\",\r\n filterHeaderMore: () => `More`,\r\n\r\n /**\r\n * Compute if Performing Search;\r\n * @return {boolean}\r\n */\r\n isPerformingSearch() {\r\n return this.isSearching || this.isApplyingSearch;\r\n },\r\n\r\n /**\r\n * Compute Search Criteria Count\r\n * @return {number|number}\r\n */\r\n searchCriteriaCount() {\r\n return this.searchCriteriaList?.length ?? 0;\r\n },\r\n\r\n /**\r\n * Can Search within a record\r\n * @return {boolean} returns whether search can be performed within a record\r\n */\r\n canSearchWithinRecord() {\r\n return false;\r\n },\r\n\r\n /**\r\n * search Criteria To String Array\r\n * @return {{string}[]} String Array of search criteria\r\n */\r\n searchCriteriaList() {\r\n const criteria = [];\r\n\r\n // child Records\r\n if (this.canSearchWithinRecord) {\r\n // if (this.childRecordsCriteriaToString) {\r\n // criteria.push(this.childRecordsCriteriaToString());\r\n // }\r\n }\r\n\r\n // Records Properties\r\n if (this.hasSearchableRecordProps) {\r\n this.filterSearchableRecordProps.forEach(srp => {\r\n criteria.push({\r\n name: srp.name,\r\n value: this.recordPropCriteriaToString(srp)\r\n });\r\n });\r\n }\r\n\r\n // Full Text\r\n if (this.hasFullTextCriteria) {\r\n criteria.push({\r\n name: this.fieldFullText.name,\r\n value: this.fullTextCriteriaToString()\r\n });\r\n }\r\n\r\n console.log(\r\n `hasSearchableRecordCategoryFields:`,\r\n this.hasSearchableRecordCategoryFields\r\n );\r\n console.log(\r\n `filterSearchableRecordCategoryFields:`,\r\n this.filterSearchableRecordCategoryFields\r\n );\r\n\r\n // Records Category Fields\r\n if (this.hasSearchableRecordCategoryFields) {\r\n this.filterSearchableRecordCategoryFields.forEach(field => {\r\n criteria.push({\r\n name: field.name,\r\n value: this.fieldCriteriaToString(field)\r\n });\r\n });\r\n }\r\n\r\n // Flying Fields\r\n if (this.hasSearchableFlyingFields) {\r\n this.filterSearchableFlyingFields.forEach(field => {\r\n criteria.push({\r\n name: field.name,\r\n value: this.fieldCriteriaToString(field)\r\n });\r\n });\r\n }\r\n\r\n //Universal/Global Search\r\n if (this.enableUniversalSearch) {\r\n if (this.hasUniversalSearchCriteria) {\r\n criteria.push({\r\n name: this.fieldUniversalSearch.name,\r\n value: this.universalSearchCriteriaToString()\r\n });\r\n }\r\n }\r\n return criteria;\r\n },\r\n\r\n /**\r\n * search Criteria To String Array for More (expansion panel) in Search Filter\r\n * @return {{string}[]} String Array of search criteria\r\n */\r\n advancedCriteriaList() {\r\n const advancedCriteria = [...this.searchCriteriaList];\r\n\r\n const indexToRemove = advancedCriteria.findIndex(\r\n criteria => criteria.name === this.fieldUniversalSearch.name\r\n );\r\n\r\n // If the object was found, remove it\r\n if (indexToRemove !== -1) {\r\n advancedCriteria.splice(indexToRemove, 1);\r\n }\r\n\r\n return advancedCriteria;\r\n },\r\n\r\n /**\r\n * Build and Get Disabled Universal Search Reason\r\n * @return {string}\r\n */\r\n getDisabledSearchReason() {\r\n const reasonBuilder = [];\r\n\r\n if (!this.enableUniversalSearch) {\r\n reasonBuilder.push(\"Search Anything Disabled because \");\r\n\r\n this.filterSearchableRecordProps.forEach(srp => {\r\n if (srp.name === searchableProperty.name) {\r\n reasonBuilder.push(`Record Name: ${srp.field.value}`);\r\n }\r\n\r\n if (srp.name === searchableProperty.createdDateTo) {\r\n reasonBuilder.push(`Created Date : ${srp.field.value}`);\r\n }\r\n\r\n if (srp.name === searchableProperty.createdDateFrom) {\r\n reasonBuilder.push(`Created Date : ${srp.field.value}`);\r\n }\r\n });\r\n\r\n if (this.hasFullTextCriteria) {\r\n reasonBuilder.push(`, OCR Text: ${this.fieldFullText.value}`);\r\n }\r\n\r\n this.filterSearchableRecordCategoryFields.forEach(field => {\r\n reasonBuilder.push(`, ${field.name}: ${field.value}`);\r\n });\r\n\r\n this.filterSearchableFlyingFields.forEach(field => {\r\n reasonBuilder.push(`, ${field.name}: ${field.value}`);\r\n });\r\n\r\n reasonBuilder.push(\" Is Provided.\");\r\n }\r\n\r\n return reasonBuilder.join(\"\");\r\n }\r\n },\r\n methods: {\r\n /**\r\n * overwrite moreFieldsMixin.isValidMoreField\r\n * @param {number} id\r\n * @return {boolean}\r\n */\r\n isValidMoreField(id) {\r\n return (\r\n id > 0 &&\r\n this.isAllowedViewField(id) &&\r\n this.isFlyingField(id) &&\r\n !this.selectedFlyingFields?.find(sf => sf.id === id)\r\n );\r\n },\r\n countSearchableFilterProps(props) {\r\n if (itemCount(props) === 0) {\r\n return 0;\r\n }\r\n\r\n return props.filter(p => !!(p.value?.toString() ?? undefined)).length;\r\n },\r\n countSearchableFilterFields(fields) {\r\n if (itemCount(fields) === 0) {\r\n return 0;\r\n }\r\n\r\n return fields.filter(f => hasSearchableValue(f))?.length ?? 0;\r\n },\r\n /**\r\n * Abstract method: Set Search Category to be implemented by client\r\n * @param {number}id\r\n */\r\n setSearchCategory(id) {\r\n console.warn(`Not implemented setSearchCategory(id) (id: ${id})`);\r\n },\r\n\r\n resetSearchableRecordProperties() {\r\n try {\r\n this.fieldRecordId = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.id)\r\n );\r\n\r\n this.fieldRecordName = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.name)\r\n );\r\n this.fieldRecordOwner = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.owner)\r\n );\r\n this.fieldRecordCreator = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.creator)\r\n );\r\n this.fieldRecordExtension = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.extension)\r\n );\r\n this.fieldRecordVersion = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.version)\r\n );\r\n this.fieldRecordPages = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.pages)\r\n );\r\n\r\n this.fieldCreatedFrom = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.createdDateFrom),\r\n null,\r\n false,\r\n false,\r\n null\r\n );\r\n\r\n this.fieldCreatedTo = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.createdDateTo),\r\n null,\r\n true,\r\n false,\r\n null\r\n );\r\n this.fieldModifiedFrom = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.modifiedDateFrom),\r\n null,\r\n false,\r\n false,\r\n null\r\n );\r\n this.fieldModifiedTo = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.modifiedDateTo),\r\n null,\r\n true,\r\n false,\r\n null\r\n );\r\n this.fieldRecordType = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.typeId)\r\n );\r\n this.fieldRecordState = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.stateId)\r\n );\r\n /**\r\n * @type {{id:number, name:string, label:string, fieldDataType:number, operators: {description: string, operator: string}[], value:any, operator:string, include:boolean}}\r\n */\r\n this.fieldRecordCategory = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.categoryId)\r\n );\r\n this.fieldChildrenOnly = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.childrenOnly)\r\n );\r\n //\r\n // Full-Text Search\r\n //\r\n this.fieldFullText = this.createFullTextField();\r\n\r\n //\r\n // Global Field\r\n //\r\n this.fieldUniversalSearch = this.createUniversalSearchField();\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n /**\r\n * Load Search Record Properties\r\n * @param {{name: string, include: boolean, operator: string, value: string}[]} props\r\n */\r\n loadSearchRecordProps(props) {\r\n if (!(itemCount(props) > 0 && itemCount(this.recordProps) > 0)) {\r\n return;\r\n }\r\n\r\n this.recordProps.forEach(rp => {\r\n const prop = props.find(p => p.name === rp.name);\r\n\r\n if (prop) {\r\n const op = rp.field.operators.find(\r\n op => op.operator === prop.operator\r\n );\r\n rp.field.operator = op\r\n ? op.operator\r\n : defaultSearchOperator(rp.field.fieldDataType);\r\n } else {\r\n rp.field.operator = defaultSearchOperator(rp.field.fieldDataType);\r\n }\r\n\r\n rp.field.include = prop?.include ?? false;\r\n rp.field.value = prop?.value ?? null;\r\n });\r\n\r\n // Global Search\r\n const globalSearchProp = props.find(\r\n p => p.name === this.fieldUniversalSearch?.name\r\n );\r\n if (globalSearchProp) {\r\n this.fieldUniversalSearch.value = globalSearchProp?.value ?? \"\";\r\n }\r\n },\r\n /**\r\n * default Searchable Record Properties\r\n * @param {{text: string, value: string, visible: boolean}[]} defaultHeaders\r\n */\r\n defaultSearchableRecordProps(defaultHeaders) {\r\n const props = [];\r\n\r\n const headers = defaultHeaders.filter(\r\n h => !!h.visible && h.value !== headerName.actions\r\n );\r\n\r\n headers.forEach(vh => {\r\n const hrp = mapHeadersSearchableRecordProps.find(\r\n hrp => hrp.headerValue === vh.value\r\n );\r\n if (hrp) {\r\n const sp = findSearchableProperty(hrp.propName);\r\n if (sp) {\r\n const prop = {\r\n name: sp.name,\r\n include: vh.visible,\r\n operator: sp.searchOperators[0].operator,\r\n value: \"\"\r\n };\r\n props.push(prop);\r\n } else {\r\n console.warn(\r\n `Couldn't find Searchable Property by Property Name: ${hrp.propName}`\r\n );\r\n }\r\n } else {\r\n console.warn(\r\n `Couldn't find header by Searchable Record Property: ${vh.value}`\r\n );\r\n }\r\n });\r\n\r\n return props;\r\n },\r\n /**\r\n * lLad Search Record Fields\r\n * @param {{Id:number, Include:boolean, Value:any, Operator:string}[]} fields\r\n */\r\n loadSearchRecordFields(fields) {\r\n // Clear relevant fields\r\n this.categorySearchableFields = [];\r\n this.selectedFlyingFields = [];\r\n this.fieldFullText.value = \"\";\r\n\r\n console.log(\r\n `${this.$options.name}.loadSearchRecordFields() fields:`,\r\n fields\r\n );\r\n\r\n // Full Text\r\n const fullText = fields?.find(el => el.Id === 0) ?? \"\";\r\n this.fieldFullText.value = fullText?.Value ?? \"\";\r\n\r\n // Set Category Searchable Fields\r\n this.categoryFields.forEach(field => {\r\n const fieldsById = fields\r\n ? fields.filter(el => el.Id === field.id)\r\n : null;\r\n const fieldFrom = (fieldsById?.length ?? 0) >= 1 ? fieldsById[0] : null;\r\n\r\n this.categorySearchableFields.push(\r\n this.createSearchableField(\r\n field,\r\n fieldFrom?.Value ?? null,\r\n false,\r\n fieldFrom?.Include ?? false,\r\n fieldFrom?.Operator ?? defaultSearchOperator(field.fieldDataType)\r\n )\r\n );\r\n\r\n if (this.isFieldRangeSearchable(field)) {\r\n const fieldTo =\r\n fieldsById && fieldsById.length >= 2 ? fieldsById[1] : null;\r\n\r\n this.categorySearchableFields.push(\r\n this.createSearchableField(\r\n field,\r\n fieldTo?.Value ?? null,\r\n true,\r\n fieldTo?.Include ?? false,\r\n fieldTo?.Operator ?? defaultSearchRangeToOperator\r\n )\r\n );\r\n }\r\n });\r\n\r\n //\r\n // Set Flying Searchable Fields\r\n //\r\n const flyingFields =\r\n fields?.filter(el => this.isFlyingField(el.Id)) ?? [];\r\n\r\n flyingFields.forEach(sff => {\r\n const userField = this.findUserField(sff.Id);\r\n const isAddFlyingField =\r\n userField && !this.existsSelectedFlyingField(sff.Id);\r\n\r\n if (isAddFlyingField) {\r\n const fields = flyingFields?.filter(sffEl => sffEl.Id === sff.Id);\r\n const fieldFrom = (fields?.length ?? 0) >= 1 ? fields[0] : null;\r\n\r\n const flyingField = {\r\n id: userField.id,\r\n name: userField.name,\r\n label: userField.name,\r\n fieldDataType: userField.fieldDataType,\r\n searchOperators: this.getSearchOperators(userField.fieldDataType)\r\n };\r\n\r\n this.selectedFlyingFields.push(\r\n this.createSearchableField(\r\n flyingField,\r\n fieldFrom?.Value ?? null,\r\n false,\r\n fieldFrom?.Include ?? false,\r\n fieldFrom?.Operator ??\r\n defaultSearchOperator(userField.fieldDataType)\r\n )\r\n );\r\n\r\n if (this.isFieldRangeSearchable(flyingField)) {\r\n const fieldTo = (fields?.length ?? 0) > 0 >= 2 ? fields[1] : null;\r\n\r\n const flyingFieldTo = this.createSearchableField(\r\n flyingField,\r\n fieldTo?.Value ?? null,\r\n true,\r\n fieldTo?.Include ?? false,\r\n fieldTo?.Operator ?? defaultSearchRangeToOperator\r\n );\r\n\r\n this.selectedFlyingFields.push(flyingFieldTo);\r\n }\r\n }\r\n });\r\n },\r\n /**\r\n * Get Record Property Search Criteria\r\n * @param {string} propId\r\n * @return {{Operator:string, Value:any}} propId\r\n */\r\n recordPropertySearchCriteria(propId) {\r\n const prop = this?.recordProps?.find(rp => rp.name === propId);\r\n\r\n if (!prop) {\r\n console.warn(`Cannot find propId:`, propId);\r\n return {\r\n Value: null,\r\n Operator: searchOperators[searchOperator.equal].operator\r\n };\r\n }\r\n\r\n return {\r\n Operator: prop.field.operator,\r\n Value: searchableFieldValue(prop.field)\r\n };\r\n },\r\n\r\n /**\r\n * Create Searchable Field\r\n * @param {{id:number, name:string, label:string, fieldDataType:number, searchOperators: {description: string, operator: string}[]}} field\r\n * @param {any} fieldValue\r\n * @param {boolean} rangeTo\r\n * @param {boolean} include\r\n * @param operator\r\n * @return {{include: boolean, lookup: (*|{lookup: {databaseLookup: boolean, enforce: boolean, items: *[]}}), rangeTo: boolean, operators: {description: string, operator: string}[], name: string, id: number, label: string, value: undefined, fieldDataType: number, operator: string|*}}\r\n */\r\n createSearchableField(\r\n field,\r\n fieldValue = undefined,\r\n rangeTo = false,\r\n include = false,\r\n operator = null\r\n ) {\r\n let selectOperator = operator;\r\n if (!selectOperator) {\r\n if (rangeTo) {\r\n selectOperator = defaultSearchRangeToOperator;\r\n } else {\r\n if ((field?.searchOperators?.length ?? 0) > 0) {\r\n selectOperator =\r\n field.name === searchableProperty.name\r\n ? field.searchOperators[1].operator\r\n : field.searchOperators[0].operator;\r\n }\r\n }\r\n }\r\n\r\n if (!selectOperator) {\r\n console.warn(`Not found default Operator:`, selectOperator);\r\n }\r\n\r\n // console.log(\"createSearchableField() field:\", field);\r\n // console.log(\"selectOperator:\", selectOperator);\r\n\r\n const lookup = field?.lookup ?? {\r\n lookup: {\r\n databaseLookup: false,\r\n enforce: false,\r\n items: []\r\n }\r\n };\r\n\r\n let foundOperator = field?.searchOperators?.find(\r\n el => el?.operator === selectOperator\r\n );\r\n\r\n if (!foundOperator) {\r\n console.warn(`NOT VALID default Operator:`, selectOperator);\r\n }\r\n\r\n return {\r\n id: field.id,\r\n name: field.name,\r\n label: field.label,\r\n fieldDataType: field.fieldDataType,\r\n operators: rangeTo ? rangeToOperators : field.searchOperators,\r\n value: fieldValue,\r\n operator: selectOperator,\r\n rangeTo: rangeTo,\r\n include: include,\r\n lookup: lookup\r\n };\r\n },\r\n createFullTextField() {\r\n const field = {\r\n id: 0,\r\n name: \"FullText\",\r\n label: \"OCR Text\",\r\n fieldDataType: fieldType.TEXT,\r\n searchOperators: findFieldType(fieldType.TEXT)?.searchOperators ?? []\r\n };\r\n\r\n return this.createSearchableField(field);\r\n },\r\n\r\n createUniversalSearchField() {\r\n const field = {\r\n id: 1,\r\n name: \"Global Search\",\r\n label: \"Search Anything\",\r\n fieldDataType: fieldType.TEXT,\r\n searchOperators: findFieldType(fieldType.TEXT)?.searchOperators ?? []\r\n };\r\n\r\n return this.createSearchableField(field);\r\n },\r\n\r\n /**\r\n * get default Search Operator\r\n * @param {{id: number, name: string, label: string, fieldDataType: number, fieldDataTypeName: string, flags:number, immutable: boolean, isPersistentField: boolean, isRequired: boolean, isSystemCategoryType: boolean, isSystemField: boolean, isVolatile: boolean, requiredForAutoFiling: boolean, sequence: number, unselectable: boolean, searchOperators: {description: string, operator: string}[]}} field\r\n * @return {string}\r\n */\r\n defaultSearchOperator(field) {\r\n return defaultSearchOperator(field.fieldDataType);\r\n },\r\n isFieldRangeSearchable(field) {\r\n return isRangeSearchable(field?.fieldDataType ?? -1);\r\n },\r\n isFlyingField(id) {\r\n if (itemCount(this.categorySearchableFields === 0)) {\r\n return false;\r\n }\r\n\r\n // OCR Text field id = 0\r\n if (id === 0) {\r\n return false;\r\n }\r\n\r\n return !this.categorySearchableFields.find(el => el.id === id);\r\n },\r\n getRangeToField(fields, field) {\r\n if (!fields || !field) return null;\r\n\r\n return fields.find(el => el.id === field.id && el.rangeTo);\r\n },\r\n getSearchOperators(fieldTypeId) {\r\n const ft = fieldTypes.find(el => el.id === fieldTypeId);\r\n\r\n return ft ? ft.searchOperators : [];\r\n },\r\n existsSelectedFlyingField(id) {\r\n return this.selectedFlyingFields?.find(el => el.id === id) ?? false;\r\n },\r\n onRemoveFlyingField(field) {\r\n try {\r\n const fields = this.selectedFlyingFields\r\n ? this.selectedFlyingFields.filter(el => el.id === field.id)\r\n : [];\r\n\r\n fields.forEach(el => {\r\n const index = this.selectedFlyingFields.indexOf(el);\r\n\r\n if (index >= 0) {\r\n this.selectedFlyingFields.splice(index, 1);\r\n }\r\n });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n /**\r\n * onSelectMoreFieldsOk\r\n * @param {number[]} fieldIds\r\n */\r\n async onSelectMoreFieldsOk(fieldIds) {\r\n try {\r\n this.addMoreFieldsError = undefined;\r\n\r\n console.log(`onSelectMoreFieldsOk() fieldIds:`, fieldIds);\r\n\r\n const ids =\r\n fieldIds?.filter(f => !this.existsSelectedFlyingField(f)) ?? [];\r\n const count = ids?.length ?? 0;\r\n if (count === 0) {\r\n return;\r\n }\r\n\r\n for (const id of ids) {\r\n const field = this.findUserField(id);\r\n if (field) {\r\n await this.addFlyingField(field);\r\n }\r\n }\r\n\r\n this.visibleMoreFields = false;\r\n } catch (e) {\r\n console.error(e);\r\n this.addMoreFieldsError = e.toString();\r\n }\r\n },\r\n\r\n /**\r\n * add Flying Field\r\n * @param {{id:number, name:string, fieldDataType:number, fieldDataTypeName:string, flags:number, immutable:boolean, unselectable:boolean, isPersistentField:boolean, isSystemCategoryType:boolean, isSystemField:boolean, unselectable:boolean, operations: {name:string, allowed:boolean, valid:boolean}}} field\r\n * @return {Promise}\r\n */\r\n async addFlyingField(field) {\r\n if (!field) {\r\n throw \"Couldn't add field. Field not provided\";\r\n }\r\n\r\n // console.log(`addFlyingField() field:`, field);\r\n\r\n let formField = this.findFormField(field.id);\r\n if (!formField) {\r\n await this.setFormField(field.id);\r\n formField = this.findFormField(field.id);\r\n }\r\n\r\n // console.log(`addFlyingField() formField:`, formField);\r\n\r\n const flyingField = {\r\n id: field.id,\r\n name: field.name,\r\n label: field.name,\r\n fieldDataType: field.fieldDataType,\r\n searchOperators: this.getSearchOperators(field.fieldDataType),\r\n lookup: {\r\n databaseLookup: formField?.lookup?.databaseLookup ?? false,\r\n enforce: formField?.lookup?.enforce ?? false,\r\n items: formField?.lookup?.items ?? []\r\n }\r\n };\r\n\r\n // console.log(`addFlyingField() formField:`, flyingField);\r\n\r\n this.selectedFlyingFields.push(\r\n this.createSearchableField(\r\n flyingField,\r\n null,\r\n false,\r\n false,\r\n defaultSearchOperator(field.fieldDataType)\r\n )\r\n );\r\n\r\n if (this.isFieldRangeSearchable(flyingField)) {\r\n this.selectedFlyingFields.push(\r\n this.createSearchableField(\r\n flyingField,\r\n null,\r\n true,\r\n false,\r\n defaultSearchRangeToOperator\r\n )\r\n );\r\n }\r\n },\r\n\r\n /**\r\n * Build Search Payload\r\n * @param {number} withInId\r\n * @param {number} pageNumber\r\n * @param {Boolean} isCategoryModule\r\n * @return {{CategoryId: ({Value: number, Operator: string}|{Operator: string, Value: *}), TypeId: {Operator: string, Value: *}, Owner: {Operator: string, Value: *}, CreatedDateTo: {Operator: string, Value: *}, WithInId: number, ChildrenOnly: boolean, StateId: {Operator: string, Value: *}, Creator: {Operator: string, Value: *}, Name: {Operator: string, Value: *}, Extension: {Operator: string, Value: *}, Pages: {Operator: string, Value: *}, Fields: {Id: number, Include: boolean, Value: *, Operator: string}[], StartPage: number, Version: {Operator: string, Value: *}, CreatedDateFrom: {Operator: string, Value: *}, ModifiedDateTo: {Operator: string, Value: *}, Id: {Operator: string, Value: *}[], ModifiedDateFrom: {Operator: string, Value: *}, CountPerPage: ((function(): (Number|number))|*|number)}}\r\n */\r\n buildSearchPayload(\r\n withInId = -1,\r\n pageNumber = 1,\r\n isCategoryModule = false\r\n ) {\r\n return {\r\n Id: [this.recordPropertySearchCriteria(searchableProperty.id)],\r\n Name: this.recordPropertySearchCriteria(searchableProperty.name),\r\n Owner: this.recordPropertySearchCriteria(searchableProperty.owner),\r\n Creator: this.recordPropertySearchCriteria(searchableProperty.creator),\r\n CreatedDateFrom: this.recordPropertySearchCriteria(\r\n searchableProperty.createdDateFrom\r\n ),\r\n CreatedDateTo: this.recordPropertySearchCriteria(\r\n searchableProperty.createdDateTo\r\n ),\r\n ModifiedDateFrom: this.recordPropertySearchCriteria(\r\n searchableProperty.modifiedDateFrom\r\n ),\r\n ModifiedDateTo: this.recordPropertySearchCriteria(\r\n searchableProperty.modifiedDateTo\r\n ),\r\n TypeId: this.recordPropertySearchCriteria(searchableProperty.typeId),\r\n StateId: this.recordPropertySearchCriteria(searchableProperty.stateId),\r\n Extension: this.recordPropertySearchCriteria(\r\n searchableProperty.extension\r\n ),\r\n Version: this.recordPropertySearchCriteria(searchableProperty.version),\r\n Pages: this.recordPropertySearchCriteria(searchableProperty.pages),\r\n CategoryId: isCategoryModule\r\n ? this.recordCategorySearchCriteria\r\n : this.recordPropertySearchCriteria(searchableProperty.categoryId),\r\n Fields: this.searchableRecordFieldsCriteria,\r\n WithInId: withInId,\r\n ChildrenOnly: false,\r\n // ChildrenOnly: this.recordPropertySearchCriteria(\r\n // searchableProperty.childrenOnly\r\n // ),\r\n StartPage: pageNumber,\r\n CountPerPage: this.perPageCount ?? 50 // can be configurable\r\n };\r\n },\r\n hasSearchCriteria(criteria, excludeWithInId = true) {\r\n return hasSearchCriteria(criteria, excludeWithInId);\r\n },\r\n /**\r\n * Insert Includable Record Fields to dataTable headers\r\n * @param {{text: string, value: string, visible: boolean}[]} headers\r\n */\r\n insertIncludableRecordFields(headers) {\r\n if (itemCount(headers) === 0) {\r\n return;\r\n }\r\n\r\n const fields = this.includableRecordFields;\r\n if (itemCount(fields) === 0) {\r\n return;\r\n }\r\n\r\n let i = 0;\r\n fields.forEach(id => {\r\n const index = headers.length - 1;\r\n const field = this.findUserField(id);\r\n headers.splice(index, 0, {\r\n text: field ? field.name : `Field ${id}`,\r\n value: `searchFields[${i}].value`,\r\n visible: true\r\n });\r\n i++;\r\n });\r\n },\r\n /**\r\n * Set Record Property Headers Visibility\r\n * @param {{text: string, value: string, visible: boolean}[]} headers\r\n */\r\n setRecordPropertyHeadersVisibility(headers) {\r\n this.mappingHeaderNames.forEach(el => {\r\n const header = this.findHeader(headers, el.name);\r\n if (header) {\r\n header.visible = el.field.include;\r\n } else {\r\n console.warn(`Couldn't find DataTable header by name: ${el.name}`);\r\n }\r\n });\r\n },\r\n /**\r\n * Find Header\r\n * @param {{text: string, value: string, visible: boolean}[]} headers\r\n * @param {string} value\r\n * @return {{text: string, value: string, visible: boolean}}\r\n */\r\n findHeader(headers, value) {\r\n return itemCount(headers) > 0\r\n ? headers.find(el => el.value === value)\r\n : undefined;\r\n },\r\n /**\r\n * Expansion panel Header Class\r\n * @param {boolean} strong\r\n * @return {string}\r\n */\r\n panelHeaderClass(strong) {\r\n return new Text(\r\n strong ? this.mdMenuItemColor : undefined,\r\n undefined,\r\n strong ? fontEmphasis.bold : fontEmphasis.regular\r\n ).getClassText();\r\n },\r\n /**\r\n * record Prop Criteria To String\r\n * @param {{name:string, field:{id:number, name:string, label:string, fieldDataType:number, operators: {description: string, operator: string}[], value:any, operator:string, include:boolean}}} prop\r\n * @return {string}\r\n */\r\n recordPropCriteriaToString(prop) {\r\n if (!prop?.field) return \"\";\r\n\r\n const label = prop.field.label ?? prop.field.name ?? \"\";\r\n\r\n // category Id\r\n if (prop.field.name === searchableProperty.categoryId) {\r\n const id = searchableNumericFieldValue(prop.field.value ?? -1);\r\n const category = this.findCategory(id);\r\n\r\n return category\r\n ? `Category: ${category?.name}`\r\n : formatSearchCriteria(label, prop.field.operator, id);\r\n }\r\n\r\n // Record type id\r\n if (prop.field.name === searchableProperty.typeId) {\r\n const typeId = searchableNumericFieldValue(prop.field.value ?? -1);\r\n const rt = findRecordType(typeId);\r\n\r\n return rt\r\n ? formatSearchCriteria(label, prop.field.operator, rt.name)\r\n : formatSearchCriteria(label, prop.field.operator, typeId);\r\n }\r\n\r\n // state Id\r\n if (prop.field.name === searchableProperty.stateId) {\r\n const stateId = searchableNumericFieldValue(prop.field.value ?? -1);\r\n const rs = findRecordState(stateId);\r\n\r\n return rs\r\n ? formatSearchCriteria(label, prop.field.operator, rs.name)\r\n : formatSearchCriteria(label, prop.field.operator, stateId);\r\n }\r\n\r\n return formatSearchCriteria(label, prop.field.operator, prop.field.value);\r\n },\r\n\r\n /**\r\n * Get Category Criteria To String - Search Filter UI\r\n * @param field\r\n * @return {string}\r\n */\r\n categoryCriteriaToString(field) {\r\n return field.name === searchableProperty.categoryId\r\n ? this.recordPropCriteriaToString({\r\n name: searchableProperty.categoryId,\r\n field: field\r\n })\r\n : this.fieldCriteriaToString(field);\r\n },\r\n\r\n /**\r\n * Field Criteria To String\r\n * @param {{id:number, name:string, label:string, fieldDataType:number, operators: {description: string, operator: string}[], value:any, operator:string, include:boolean}} field\r\n * @return {string}\r\n */\r\n fieldCriteriaToString(field) {\r\n return fieldCriteriaToString(field);\r\n },\r\n\r\n fullTextCriteriaToString() {\r\n return `OCR Text: ${this.fieldFullText.value}`;\r\n },\r\n\r\n universalSearchCriteriaToString() {\r\n return `Search: ${this.fieldUniversalSearch.value}`;\r\n },\r\n\r\n /**\r\n * Fill the search filter with user-defined model\r\n * Populates Data as well as fields\r\n * @param model {{CategoryId: {Value: number, Operator: string}, TypeId: {Operator: string, Value: *}, Owner: {Operator: string, Value: *}, CreatedDateTo: {Operator: string, Value: *}, StateId: {Operator: string, Value: *}, Creator: {Operator: string, Value: *}, Name: {Operator: string, Value: *}, Extension: {Operator: string, Value: *}, Pages: {Operator: string, Value: *}, Fields: {Id: number, Include: boolean, Value: *, Operator: string}[], StartPage: number, Version: {Operator: string, Value: *}, CreatedDateFrom: {Operator: string, Value: *}, ModifiedDateTo: {Operator: string, Value: *}, Id: {Operator: string, Value: *}, ModifiedDateFrom: {Operator: string, Value: *}, ChildrenOnly: {Value: number, Operator: string}, WithInId:number, CountPerPage: number, GlobalSearch: Object}}\r\n */\r\n populateUserSearchTemplateData(model) {\r\n this.userFieldModel = undefined;\r\n try {\r\n this.polishUserModel(model);\r\n\r\n this.fieldRecordId = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.id),\r\n model?.Id?.Value ?? undefined,\r\n false,\r\n this.fieldRecordId?.include ?? false,\r\n model?.Id?.Operator ?? null\r\n );\r\n\r\n this.fieldRecordName = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.name),\r\n model?.Name?.Value ?? undefined,\r\n false,\r\n this.fieldRecordName?.include ?? false,\r\n model?.Name.Operator ?? null\r\n );\r\n\r\n this.fieldRecordOwner = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.owner),\r\n model?.Owner?.Value ?? undefined,\r\n false,\r\n this.fieldRecordOwner?.include ?? false,\r\n model?.Owner.Operator ?? null\r\n );\r\n\r\n this.fieldRecordCreator = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.creator),\r\n model?.Creator?.Value ?? undefined,\r\n false,\r\n this.fieldRecordCreator?.include ?? false,\r\n model?.Creator.Operator ?? null\r\n );\r\n\r\n this.fieldRecordExtension = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.extension),\r\n model?.Extension?.Value ?? undefined,\r\n false,\r\n this.fieldRecordExtension?.include ?? false,\r\n model?.Extension.Operator ?? null\r\n );\r\n\r\n this.fieldRecordVersion = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.version),\r\n model?.Version?.Value ?? undefined,\r\n false,\r\n this.fieldRecordVersion?.include ?? false,\r\n model?.Version.Operator ?? null\r\n );\r\n\r\n this.fieldRecordPages = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.pages),\r\n model?.Pages?.Value ?? undefined,\r\n false,\r\n this.fieldRecordPages?.include ?? false,\r\n model?.Pages.Operator ?? null\r\n );\r\n\r\n this.fieldCreatedFrom = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.createdDateFrom),\r\n model?.CreatedDateFrom?.Value ?? undefined,\r\n false,\r\n this.fieldCreatedFrom?.include ?? false,\r\n model?.CreatedDateFrom?.Operator ?? null\r\n );\r\n\r\n this.fieldCreatedTo = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.createdDateTo),\r\n model?.CreatedDateTo?.Value ?? undefined,\r\n true,\r\n this.fieldCreatedTo?.include ?? false,\r\n model?.CreatedDateTo?.Operator ?? null\r\n );\r\n\r\n this.fieldModifiedFrom = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.modifiedDateFrom),\r\n model?.ModifiedDateFrom?.Value ?? undefined,\r\n false,\r\n this.fieldModifiedFrom?.include ?? false,\r\n model?.ModifiedDateFrom?.Operator ?? null\r\n );\r\n\r\n this.fieldModifiedTo = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.modifiedDateTo),\r\n model?.ModifiedDateTo?.Value ?? undefined,\r\n true,\r\n this.fieldModifiedTo?.include ?? false,\r\n model?.ModifiedDateTo?.Operator ?? null\r\n );\r\n\r\n this.fieldRecordType = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.typeId),\r\n model?.TypeId?.Value ?? undefined,\r\n false,\r\n this.fieldRecordType?.include ?? false,\r\n model?.TypeId?.Operator ?? null\r\n );\r\n\r\n this.fieldRecordState = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.stateId),\r\n model?.StateId?.Value ?? undefined,\r\n false,\r\n this.fieldRecordState?.include ?? false,\r\n model?.StateId?.Operator ?? null\r\n );\r\n\r\n this.fieldRecordCategory = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.categoryId),\r\n model?.CategoryId?.Value ?? undefined,\r\n false,\r\n this.fieldRecordCategory?.include ?? false,\r\n model?.CategoryId?.Operator ?? null\r\n );\r\n\r\n this.fieldUniversalSearch =\r\n model?.GlobalSearch ?? this.createUniversalSearchField();\r\n\r\n // TODO: Determine whether this field should be filled when importing search template\r\n /* this.fieldChildrenOnly = this.createSearchableField(\r\n findSearchableProperty(searchableProperty.childrenOnly),\r\n model?.ChildrenOnly?.Value ?? undefined,\r\n false,\r\n false,\r\n model?.ChildrenOnly?.Operator\r\n );*/\r\n\r\n // This will populate all the form fields from user-defined template\r\n this.userFieldModel = model.Fields;\r\n this.loadSearchRecordFields(this.userFieldModel);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n /**\r\n * Sets all the unset value to null from default -1\r\n * -1 looks ugly\r\n * @param model\r\n */\r\n polishUserModel(model) {\r\n for (let key in model) {\r\n if (model[key].Value === -1) {\r\n model[key].Value = null;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Populate Search Toolbar if condition met\r\n */\r\n populateSearchField() {\r\n const nameFieldValue = this.fieldRecordName?.value ?? undefined;\r\n if (nameFieldValue) {\r\n this.search =\r\n this.fieldRecordName?.operator === \"*\" ? nameFieldValue : this.search;\r\n }\r\n },\r\n\r\n /**\r\n * Method to update enableUniversalSearch based on all conditions\r\n */\r\n updateEnableUniversalSearch() {\r\n // Check all conditions and update enableUniversalSearch accordingly\r\n this.enableUniversalSearch =\r\n !this.filterSearchableRecordProps.some(prop => {\r\n return (\r\n prop?.name === searchableProperty.name ||\r\n prop?.name === searchableProperty.createdDateTo ||\r\n prop?.name === searchableProperty.createdDateFrom\r\n );\r\n }) &&\r\n !this.filterSearchableRecordCategoryFields.length &&\r\n !this.filterSearchableFlyingFields.length &&\r\n !this.hasFullTextCriteria;\r\n },\r\n\r\n /**\r\n * Adjust Payload to accommodate Universal Search\r\n * @param payload\r\n */\r\n buildUniversalSearchPayload(payload) {\r\n payload.Name.Operator = \"*\";\r\n payload.Name.Value = this.fieldUniversalSearch.value;\r\n\r\n payload.Id.push({\r\n Operator: \"=\",\r\n Value: -2\r\n });\r\n }\r\n },\r\n watch: {\r\n /**\r\n * Watch changes of selectedRecordCategoryId\r\n * @param id\r\n * @return {Promise}\r\n */\r\n selectedRecordCategoryId: {\r\n handler: async function(id) {\r\n try {\r\n if (!this.menuFilterVisible) {\r\n return;\r\n }\r\n await this.setSearchCategory(searchableNumericFieldValue(id));\r\n\r\n // Set Category Searchable Fields\r\n this.categorySearchableFields = [];\r\n this.categoryFields?.forEach(field => {\r\n this.categorySearchableFields.push(\r\n this.createSearchableField(field)\r\n );\r\n\r\n if (this.isFieldRangeSearchable(field)) {\r\n this.categorySearchableFields.push(\r\n this.createSearchableField(field, null, true)\r\n );\r\n }\r\n });\r\n\r\n if (this.userFieldModel) {\r\n this.loadSearchRecordFields(this.userFieldModel);\r\n this.userFieldModel = undefined;\r\n }\r\n\r\n // console.log(\r\n // `${this.$options.name} this.categoryFields:`,\r\n // this.categoryFields\r\n // );\r\n // console.log(\r\n // `${this.$options.name} this.categorySearchableFields:`,\r\n // this.categorySearchableFields\r\n // );\r\n // console.log(`${this.$options.name} this.formFields:`, this.formFields);\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n immediate: true // This ensures that the watcher is called immediately when selectedRecordCategoryId changes\r\n },\r\n\r\n /**\r\n * Watch menuFilterVisible, and perform actions correspondingly (cleanup, ...)\r\n */\r\n menuFilterVisible() {\r\n this.filterError = undefined;\r\n },\r\n\r\n // Watcher for filterSearchableRecordProps\r\n filterSearchableRecordProps: {\r\n handler() {\r\n this.updateEnableUniversalSearch();\r\n },\r\n immediate: true // Ensure it's called initially\r\n },\r\n\r\n // Watcher for filterSearchableRecordCategoryFields\r\n filterSearchableRecordCategoryFields: {\r\n handler() {\r\n this.updateEnableUniversalSearch();\r\n },\r\n immediate: true\r\n },\r\n\r\n // Watcher for filterSearchableFlyingFields\r\n filterSearchableFlyingFields: {\r\n handler() {\r\n this.updateEnableUniversalSearch();\r\n },\r\n immediate: true\r\n },\r\n\r\n // Watcher for hasFullTextCriteria\r\n hasFullTextCriteria: {\r\n handler() {\r\n this.updateEnableUniversalSearch();\r\n },\r\n immediate: true\r\n },\r\n\r\n // Watcher for fieldCreatedFrom\r\n fieldCreatedFrom: {\r\n handler() {\r\n this.updateEnableUniversalSearch();\r\n },\r\n immediate: true\r\n },\r\n\r\n // Watcher for fieldCreatedFrom\r\n fieldCreatedTo: {\r\n handler() {\r\n this.updateEnableUniversalSearch();\r\n },\r\n immediate: true\r\n },\r\n\r\n // Watcher for enableUniversalSearch\r\n enableUniversalSearch() {\r\n if (!this.enableUniversalSearch) {\r\n //this.fieldUniversalSearch = this.createUniversalSearchField(); //reset global search field if universal search disabled\r\n }\r\n }\r\n }\r\n};\r\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('core-navigation-drawer',{attrs:{\"drawer-mini\":_vm.drawerMini,\"error\":_vm.currentError},on:{\"alertVisibilityChanged\":_vm.onAlertVisibilityChanged,\"toggleMiniDrawer\":_vm.toggleMiniDrawer},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('parent-record-navigator',{attrs:{\"breadcrumbs\":_vm.breadcrumbs,\"route-to-parent-folder\":_vm.buildRouteToParentFolder(),\"can-navigate-to-module-item\":_vm.canNavigateToModuleItem,\"create-module-item-content-route\":_vm.createModuleItemContentRoute}}),_c('v-divider'),_c('base-nav-list',[_c('v-list-item',[_c('search-text-field',{attrs:{\"loading\":_vm.isLoading,\"visible-search-button\":true},on:{\"onSearchAction\":_vm.onSearchAction},model:{value:(_vm.searchDrawerItemName),callback:function ($$v) {_vm.searchDrawerItemName=$$v},expression:\"searchDrawerItemName\"}})],1)],1),_c('record-list',{attrs:{\"records\":_vm.items,\"create-record-target-route\":_vm.createModuleItemContentRoute,\"can-navigate-to-record\":_vm.canNavigateToModuleItem,\"create-child-record-target-route\":_vm.createModuleChildRecordContentRouteLocation,\"moved-record\":_vm.movedRecord,\"moved-records\":_vm.movedRecords},on:{\"onRecordMoved\":_vm.onRecordMoved,\"onFileDropped\":_vm.onFileDropped,\"performContextMenuAction\":_vm.performContextMenuAction}})]},proxy:true},{key:\"append\",fn:function(){return [_c('v-divider',{attrs:{\"dark\":\"\"}}),(_vm.items.length)?_c('v-row',{staticClass:\"mt-1\"},[_c('v-col',{staticClass:\"mt-2\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[(_vm.enableDisplayMore)?_c('base-tooltip-button',{attrs:{\"loading\":_vm.loading},on:{\"click\":function($event){return _vm.loadMoreRecords()}},scopedSlots:_vm._u([{key:\"icon-name\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.iconFetchRecords)+\" \")]},proxy:true},{key:\"toolTip\",fn:function(){return [_vm._v(\" \"+_vm._s(_vm.fetchRecordsTooltip)+\" \")]},proxy:true}],null,false,1163842243)}):_vm._e()],1)],1):_vm._e()]},proxy:true}])}),_c('move-record-dialog',{attrs:{\"visible\":_vm.visibleMoveRecordDialog,\"source-record\":_vm.sourceRecord,\"destination-record\":_vm.destinationRecord,\"is-move-by-position\":_vm.isMoveByPosition,\"insert-position\":_vm.insertTreePosition,\"move-event\":_vm.onMoveRecordAction},on:{\"close\":_vm.closeMoveRecordDialog}}),_c('copy-record-dialog',{attrs:{\"visible\":_vm.visibleCopyRecordDialog,\"source-record\":_vm.sourceRecord,\"destination-record\":_vm.destinationRecord,\"copy-event\":_vm.onCopyRecordAction},on:{\"close\":function($event){_vm.visibleCopyRecordDialog = false}}}),_c('delete-record-dialog',{attrs:{\"record\":_vm.selectedRecord,\"visible\":_vm.visibleDialogDelete,\"perform-action\":_vm.onRecordDelete},on:{\"close\":function($event){_vm.visibleDialogDelete = false}}}),_c('agenda-item-refer-dialog',{attrs:{\"visible\":_vm.visibleReferDialog,\"source-record\":_vm.sourceRecord,\"destination-record\":_vm.destinationRecord,\"agenda-item-templates\":_vm.agendaItemTemplates,\"refer-event\":_vm.onItemRefer},on:{\"close\":function($event){_vm.visibleReferDialog = false}}}),_c('agenda-item-defer-dialog',{attrs:{\"visible\":_vm.visibleDeferDialog,\"source-record\":_vm.sourceRecord,\"destination-record\":_vm.destinationRecord,\"agenda-item-templates\":_vm.agendaItemTemplates,\"defer-event\":_vm.onItemDefer},on:{\"close\":function($event){_vm.visibleDeferDialog = false}}}),_c('upload-local-file-dialog',{attrs:{\"visible\":_vm.visibleUploadLocalFileDialog,\"local-file\":_vm.draggedFile,\"destination-record\":_vm.destinationRecord,\"upload-event\":_vm.onUploadLocalFile},on:{\"close\":function($event){_vm.visibleUploadLocalFileDialog = false}}}),_c('paste-shortcut-record-dialog',{attrs:{\"visible\":_vm.visibleDialogPasteShortcut,\"source-record\":_vm.sourceRecord,\"destination-record\":_vm.destinationRecord,\"paste-event\":_vm.onPasteShortcutRecordAction},on:{\"close\":function($event){_vm.visibleDialogPasteShortcut = false}}}),_c('batch-move-records-dialog',{attrs:{\"visible\":_vm.visibleBatchMoveRecordsDialog,\"record-list\":_vm.batchRecordList,\"destination-record\":_vm.destinationRecord,\"move-operation\":_vm.batchMoveOperation,\"move-event\":_vm.onBatchMoveAction,\"move-event-completed\":_vm.clearSavedRecord},on:{\"close\":_vm.closeBatchMoveRecordsDialog}}),_c('batch-move-items-dialog',{attrs:{\"visible\":_vm.visibleBatchMoveItemsDialog,\"record-list\":_vm.batchRecordList,\"destination-record\":_vm.destinationRecord,\"agenda-item-templates\":_vm.agendaItemTemplates,\"move-operation\":_vm.batchMoveOperation,\"move-event\":_vm.onBatchMoveItemsAction,\"move-event-completed\":_vm.clearSavedRecord},on:{\"close\":_vm.closeBatchMoveItemsDialog}}),_c('submit-recall-agenda-items-dialog',{attrs:{\"record\":_vm.selectedRecord,\"visible\":_vm.visibleSubmitRecallAgendaItemsDialog,\"is-recall\":_vm.isRecallOperation,\"perform-action\":_vm.onItemsSubmitRecall},on:{\"close\":_vm.closeSubmitRecallAgendaItemsDialog}}),_c('snackbar',{attrs:{\"color\":_vm.snackbarColor,\"top\":_vm.snackbarTop,\"timeout\":_vm.snackbarTimeout,\"multi-line\":_vm.snackbarMultiLine},on:{\"close\":_vm.closeSnackbar},model:{value:(_vm.snackbarVisible),callback:function ($$v) {_vm.snackbarVisible=$$v},expression:\"snackbarVisible\"}},[_vm._v(_vm._s(_vm.snackbarText))])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// services\r\nimport {\r\n getStoredSelectedModuleItemId,\r\n getStoredSelectedModuleExpandedId\r\n} from \"@/services/folder/folderModuleService\";\r\n\r\n// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst {\r\n mapState,\r\n mapMutations,\r\n mapGetters,\r\n mapActions\r\n} = createNamespacedHelpers(\"folder\");\r\n\r\n// store\r\nimport {\r\n APPEND_RECORDS,\r\n SET_DRAWER_MINI,\r\n SET_LOCAL_UPLOADED_FILE,\r\n SET_MOVED_RECORD,\r\n SET_MOVED_RECORDS,\r\n SET_RECORD_DELETE_STATUS,\r\n SET_RECORDS,\r\n UPDATE_RECORD_LIST_BY_ID\r\n} from \"@/store/shared/mutationTypes/record/record-mutation-types\";\r\n\r\n// mixins\r\nimport { moduleItemsDrawerMixin } from \"../../shared/base/drawer/moduleItemsDrawerMixin\";\r\nimport { browsableFolderMixin } from \"../../shared/browsable/browsableFolderMixin\";\r\nimport { badgeableRecordMixin } from \"../../shared/record/badgeableRecordMixin\";\r\nimport { searchableMixin } from \"@/mixins/shared/searchable/searchableMixin\";\r\n\r\n/**\r\n * folderDrawerMixin\r\n */\r\nexport const folderDrawerMixin = {\r\n mixins: [\r\n moduleItemsDrawerMixin,\r\n browsableFolderMixin,\r\n badgeableRecordMixin,\r\n searchableMixin\r\n ],\r\n computed: {\r\n ...mapState({\r\n records: \"records\",\r\n breadcrumbs: \"breadcrumbs\",\r\n record: \"record\",\r\n movedRecord: \"movedRecord\",\r\n movedRecords: \"batchMovedRecords\",\r\n recordMode: \"recordMode\",\r\n recordDeleted: \"recordDeleted\",\r\n fetchRecordListById: \"fetchRecordListById\"\r\n }),\r\n\r\n /**\r\n * Overwrite moduleItemsDrawerMixin Getters\r\n */\r\n ...mapGetters([\"drawerMini\", \"selectedModuleItemId\"]),\r\n\r\n /**\r\n * Overwrite (record) items\r\n * @return {{id:number, name:string, categoryId:number, recordTypeId:number, recordType: string, parentId:number, children:number, createdBy:string, creationDate:string, modificationDate:string, extension:string, isComposite:boolean, isLink:boolean, isReadOnly:boolean, isDeleted: boolean, isDraft: boolean, isLink: boolean, isLocked: boolean, stateId:number, state:string, owner:string, stateOwnerId:number, pageCount:number, version:number, versionDate:string, versionOwner:string, fileSize:number, comments:string, flags:number, ancestor: {id: number, name: string, categoryId: number, code: number, flags: number, isComposite:boolean, isDeleted: boolean, isDraft:boolean, isHidden:boolean, isLocked:boolean, isOnHold: boolean, isReadOnly: boolean, isRetained: boolean, recordType: {id:number, name: string}, createdBy: {id:number, name: string}, updatedBy: {id:number, name: string}}, localFile: {hasFile:boolean, isModified:boolean, pageCount:Number, extension: {type:number, extensions:Array, description:string}}, operations: {name: string, allowed: boolean, valid: boolean}[], agendaItemOperations: {name: string, allowed: boolean, valid: boolean}[], meetingOperations: {name: string, allowed: boolean, valid: boolean}[]}[]}\r\n */\r\n items() {\r\n if (this.searchDrawerItemName) {\r\n return this.records?.filter(el => {\r\n return el.name\r\n .toLowerCase()\r\n .includes(this.searchDrawerItemName.toLowerCase());\r\n });\r\n }\r\n\r\n return this.records ?? [];\r\n },\r\n\r\n /**\r\n * Overwrite suggested Select (Record) Module Item id\r\n * @return {Number|number}\r\n */\r\n defaultSelectModuleItemId() {\r\n return this.lastBreadcrumbId >= 0\r\n ? this.lastBreadcrumbId\r\n : this.itemCount > 0\r\n ? this.items[0].id\r\n : 0;\r\n }\r\n },\r\n methods: {\r\n ...mapActions({\r\n setChildRecords: \"setChildRecords\",\r\n setBreadcrumbs: \"setBreadcrumbs\",\r\n setParentBreadcrumbs: \"setParentBreadcrumbs\",\r\n moveRecord: \"moveRecord\",\r\n moveMeetingContents: \"moveMeetingContents\",\r\n moveBackupMaterial: \"moveBackupMaterial\",\r\n copyRecord: \"copyRecord\",\r\n moveRecordShortcut: \"moveRecordShortcut\",\r\n copyRecordShortcut: \"copyRecordShortcut\",\r\n deleteRecord: \"deleteRecord\",\r\n referAgendaItem: \"referAgendaItem\",\r\n deferAgendaItem: \"deferAgendaItem\",\r\n uploadFile: \"uploadFile\",\r\n checkInFile: \"checkInFile\",\r\n pasteRecordShortcut: \"createShortcut\",\r\n deleteRecordShortcut: \"deleteRecordShortcut\",\r\n setSearchedChildRecords: \"setSearchedChildRecords\",\r\n submitMeetingAgendaItems: \"submitMeetingAgendaItems\",\r\n submitSectionAgendaItems: \"submitSectionAgendaItems\",\r\n recallMeetingAgendaItems: \"recallMeetingAgendaItems\",\r\n recallSectionAgendaItems: \"recallSectionAgendaItems\"\r\n }),\r\n\r\n /**\r\n * Overwrite moduleItemsDrawerMixin Mutations\r\n */\r\n ...mapMutations({\r\n setDrawerMini: SET_DRAWER_MINI,\r\n setMovedRecord: SET_MOVED_RECORD,\r\n setMovedRecords: SET_MOVED_RECORDS,\r\n setLocalUploadedFile: SET_LOCAL_UPLOADED_FILE,\r\n setRecords: SET_RECORDS,\r\n appendRecords: APPEND_RECORDS,\r\n setRecordDeleteStatus: SET_RECORD_DELETE_STATUS,\r\n updateRecordListById: UPDATE_RECORD_LIST_BY_ID\r\n }),\r\n\r\n /**\r\n * Get Stored Selected Module Item id (Record id)\r\n * Overwrites moduleItemsDrawerMixin.getStoredSelectedModuleItemId\r\n * @returns {Number|number}\r\n */\r\n getStoredSelectedModuleItemId: () => getStoredSelectedModuleItemId(),\r\n\r\n /**\r\n * get Stored Selected Module Expanded id\r\n * @return {Number|number}\r\n */\r\n getStoredSelectedModuleExpandedId: () =>\r\n getStoredSelectedModuleExpandedId(),\r\n\r\n /**\r\n * list (child record) Items\r\n * @param {Number|number} id\r\n * @return {Promise}\r\n */\r\n async listItems(id) {\r\n try {\r\n this.clearError();\r\n this.isLoading = true;\r\n const payload = {\r\n id: id,\r\n recordIndex: this.startIndex ?? 1,\r\n count: this.recordsFetchCount ?? 50\r\n };\r\n await this.setChildRecords(payload);\r\n\r\n /**\r\n * append already selected Record to folder Drawer List\r\n * This makes the record visible/selected even when not fetched\r\n */\r\n if (\r\n this.record?.parentId ===\r\n Number(this.$router?.currentRoute?.params?.expandedId ?? -2) //Condition makes sure only child is appended to list\r\n )\r\n this.appendRecords([this.record]);\r\n } catch (e) {\r\n this.handleError(e);\r\n } finally {\r\n this.isLoading = false;\r\n this.loading = false;\r\n }\r\n },\r\n\r\n /**\r\n * Event on Search Action\r\n * @return {Promise}\r\n */\r\n async onSearchAction() {\r\n try {\r\n this.clearError();\r\n console.log(\r\n `Searched Record is ${this.searchDrawerItemName}`,\r\n this.defaultSelectModuleItemId\r\n );\r\n\r\n if (this.searchDrawerItemName) {\r\n this.isLoading = true;\r\n this.serverSearchPerformed = true;\r\n this.isLoading = true;\r\n const payload = this.buildSearchPayload(\r\n this.defaultSelectModuleItemId,\r\n 1,\r\n true\r\n );\r\n payload.Name.Value = this.searchDrawerItemName;\r\n payload.Name.Operator = \"*\";\r\n await this.setSearchedChildRecords(payload);\r\n }\r\n } catch (e) {\r\n this.handleError(e);\r\n } finally {\r\n this.isLoading = false;\r\n this.loading = false;\r\n }\r\n }\r\n }\r\n};\r\n","\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FolderDrawer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FolderDrawer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FolderDrawer.vue?vue&type=template&id=41793a8a\"\nimport script from \"./FolderDrawer.vue?vue&type=script&lang=js\"\nexport * from \"./FolderDrawer.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","// vuex\r\nimport { createNamespacedHelpers } from \"vuex\";\r\nconst { mapState, mapGetters, mapActions } = createNamespacedHelpers(\"user\");\r\n\r\nimport { principalMixin } from \"@/mixins/shared/user/principalMixin\";\r\nimport { systemOperations } from \"@/model/user/userModel\";\r\n\r\n/**\r\n * Encapsulate Questys current user\r\n */\r\nexport const userMixin = {\r\n mixins: [principalMixin],\r\n computed: {\r\n ...mapState({\r\n currentUser: \"user\",\r\n repositories: \"repositories\",\r\n categoryTypes: \"categoryTypes\"\r\n }),\r\n ...mapGetters({\r\n actorName: \"actorName\",\r\n userCategories: \"categories\",\r\n userFields: \"fields\",\r\n formFields: \"formFields\",\r\n findUserField: \"findField\",\r\n findFormField: \"findFormField\",\r\n countUserFields: \"countFields\",\r\n isPersistentField: \"isPersistentField\",\r\n isSystemField: \"isSystemField\",\r\n countUserCategories: \"countCategories\",\r\n findCategory: \"findCategory\",\r\n isAllowedViewField: \"isAllowedViewField\",\r\n createRecordCategories: \"createRecordCategories\",\r\n createRecordCategoriesByCategoryType:\r\n \"createRecordCategoriesByCategoryType\",\r\n updateRecordCategories: \"updateRecordCategories\",\r\n updateRecordCategoriesByCategoryType:\r\n \"updateRecordCategoriesByCategoryType\",\r\n isAllowedModifyField: \"isAllowedModifyField\",\r\n isAllowedSystemOperation: \"isAllowedSystemOperation\",\r\n isUserLoggedIn: \"isUserLoggedIn\",\r\n repository: \"repository\"\r\n }),\r\n\r\n /**\r\n * compute whether current user is allowed Access WF Projects\r\n * @return {boolean} true if current user is allowed to Access/Mange workflow Projects\r\n */\r\n allowedAccessWFProjects() {\r\n return !!this.isAllowedSystemOperation(systemOperations.accessWFProjects);\r\n },\r\n\r\n /**\r\n * compute whether current user is allowed to access Agenda Clerk Module\r\n * @return {boolean} true if current user is allowed to access/Mange workflow Projects\r\n */\r\n allowedAccessClerkModule() {\r\n return !!this.isAllowedSystemOperation(\r\n systemOperations.accessClerkModule\r\n );\r\n }\r\n\r\n /**\r\n * insert here allowed systemOperations on demand\r\n * ...\r\n */\r\n },\r\n methods: {\r\n ...mapActions({ setFormField: \"setFormField\" })\r\n }\r\n};\r\n","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","// model\r\nimport { fieldTypes } from \"@/model/field/fieldModel\";\r\n\r\n// design\r\nimport { iconAdd } from \"@/design/icon/iconConst\";\r\n\r\n// mixins\r\nimport { userMixin } from \"@/mixins/shared/user/userMixin\";\r\n\r\nexport const moreFieldsMixin = {\r\n mixins: [userMixin],\r\n data() {\r\n return {\r\n iconAdd: iconAdd,\r\n visibleMoreFields: false,\r\n addMoreFieldsError: undefined\r\n };\r\n },\r\n computed: {\r\n /**\r\n * Get available more user's fields\r\n * @return {{id: number, name: string, children: {id:number, name:string}}[]}\r\n */\r\n moreFields() {\r\n const availableFields = [];\r\n\r\n if (this.countUserFields === 0) {\r\n return availableFields;\r\n }\r\n\r\n const validFields = this.userFields?.filter(el =>\r\n this.isValidMoreField(el.id)\r\n );\r\n\r\n fieldTypes.forEach(ft => {\r\n const fields = validFields?.filter(\r\n field => field.fieldDataType === ft.id\r\n );\r\n\r\n if ((fields?.length ?? 0) > 0) {\r\n availableFields.push({\r\n id: ft.id === 0 ? -100 : -ft.id,\r\n name: ft.label,\r\n children: fields.map(f => {\r\n return {\r\n id: f.id,\r\n name: f.name\r\n };\r\n })\r\n });\r\n }\r\n });\r\n\r\n return availableFields;\r\n }\r\n },\r\n methods: {\r\n /**\r\n * Abstract isValidMoreField\r\n * @param {number} id\r\n * @return {boolean}\r\n */\r\n isValidMoreField(id) {\r\n console.warn(`Abstract method isValidMoreField() called. id=${id}`);\r\n return true;\r\n },\r\n /**\r\n * onSelectMoreFieldsCancel event handler of MoreField\r\n */\r\n onSelectMoreFieldsCancel() {\r\n this.visibleMoreFields = false;\r\n },\r\n /**\r\n * Abstract onSelectMoreFieldsOk\r\n * @param {number[]} fieldIds\r\n */\r\n onSelectMoreFieldsOk(fieldIds) {\r\n console.warn(\r\n `Abstract method onSelectMoreFieldsOk() called. fieldIds=${fieldIds}`\r\n );\r\n }\r\n },\r\n watch: {\r\n visibleMoreFields() {\r\n this.addMoreFieldsError = undefined;\r\n }\r\n }\r\n};\r\n","/**\n * @copyright 2017 Alex Regan\n * @license MIT\n * @see https://github.com/alexsasharegan/vue-functional-data-merge\n */\n/* eslint-disable max-statements */\nimport { VNodeData } from 'vue'\nimport { camelize, wrapInArray } from './helpers'\n\nconst pattern = {\n styleList: /;(?![^(]*\\))/g,\n styleProp: /:(.*)/,\n} as const\n\nfunction parseStyle (style: string) {\n const styleMap: Dictionary = {}\n\n for (const s of style.split(pattern.styleList)) {\n let [key, val] = s.split(pattern.styleProp)\n key = key.trim()\n if (!key) {\n continue\n }\n // May be undefined if the `key: value` pair is incomplete.\n if (typeof val === 'string') {\n val = val.trim()\n }\n styleMap[camelize(key)] = val\n }\n\n return styleMap\n}\n\n/**\n * Intelligently merges data for createElement.\n * Merges arguments left to right, preferring the right argument.\n * Returns new VNodeData object.\n */\nexport default function mergeData (...vNodeData: VNodeData[]): VNodeData\nexport default function mergeData (): VNodeData {\n const mergeTarget: VNodeData & Dictionary = {}\n let i: number = arguments.length\n let prop: string\n\n // Allow for variadic argument length.\n while (i--) {\n // Iterate through the data properties and execute merge strategies\n // Object.keys eliminates need for hasOwnProperty call\n for (prop of Object.keys(arguments[i])) {\n switch (prop) {\n // Array merge strategy (array concatenation)\n case 'class':\n case 'directives':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeClasses(mergeTarget[prop], arguments[i][prop])\n }\n break\n case 'style':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeStyles(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Space delimited string concatenation strategy\n case 'staticClass':\n if (!arguments[i][prop]) {\n break\n }\n if (mergeTarget[prop] === undefined) {\n mergeTarget[prop] = ''\n }\n if (mergeTarget[prop]) {\n // Not an empty string, so concatenate\n mergeTarget[prop] += ' '\n }\n mergeTarget[prop] += arguments[i][prop].trim()\n break\n // Object, the properties of which to merge via array merge strategy (array concatenation).\n // Callback merge strategy merges callbacks to the beginning of the array,\n // so that the last defined callback will be invoked first.\n // This is done since to mimic how Object.assign merging\n // uses the last given value to assign.\n case 'on':\n case 'nativeOn':\n if (arguments[i][prop]) {\n mergeTarget[prop] = mergeListeners(mergeTarget[prop], arguments[i][prop])\n }\n break\n // Object merge strategy\n case 'attrs':\n case 'props':\n case 'domProps':\n case 'scopedSlots':\n case 'staticStyle':\n case 'hook':\n case 'transition':\n if (!arguments[i][prop]) {\n break\n }\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = {}\n }\n mergeTarget[prop] = { ...arguments[i][prop], ...mergeTarget[prop] }\n break\n // Reassignment strategy (no merge)\n default: // slot, key, ref, tag, show, keepAlive\n if (!mergeTarget[prop]) {\n mergeTarget[prop] = arguments[i][prop]\n }\n }\n }\n }\n\n return mergeTarget\n}\n\nexport function mergeStyles (\n target: undefined | string | object[] | object,\n source: undefined | string | object[] | object\n) {\n if (!target) return source\n if (!source) return target\n\n target = wrapInArray(typeof target === 'string' ? parseStyle(target) : target)\n\n return (target as object[]).concat(typeof source === 'string' ? parseStyle(source) : source)\n}\n\nexport function mergeClasses (target: any, source: any) {\n if (!source) return target\n if (!target) return source\n\n return target ? wrapInArray(target).concat(source) : source\n}\n\nexport function mergeListeners (...args: [\n { [key: string]: Function | Function[] } | undefined,\n { [key: string]: Function | Function[] } | undefined\n]) {\n if (!args[0]) return args[1]\n if (!args[1]) return args[0]\n\n const dest: { [key: string]: Function | Function[] } = {}\n\n for (let i = 2; i--;) {\n const arg = args[i]\n for (const event in arg) {\n if (!arg[event]) continue\n\n if (dest[event]) {\n // Merge current listeners before (because we are iterating backwards).\n // Note that neither \"target\" or \"source\" must be altered.\n dest[event] = ([] as Function[]).concat(arg[event], dest[event])\n } else {\n // Straight assign.\n dest[event] = arg[event]\n }\n }\n }\n\n return dest\n}\n","import {\r\n headerName,\r\n headerText\r\n} from \"@/model/common/dataTable/dataTableConst\";\r\n\r\nimport { searchableProperty } from \"@/model/record/recordModel\";\r\n\r\nimport { isPublicAccess } from \"@/services/config/configService\";\r\n\r\n/**\r\n * Field Name\r\n * @type {Readonly<{extension: string, flags: string, hasImage: string, recordTypeId: string, recordType: string, creationDate: string, modificationDate:string, version: string, versionDate: string, pageCount: string, owner: string, createdBy: string, name: string, id: string, category: string}>}\r\n */\r\nconst fieldName = Object.freeze({\r\n id: \"id\",\r\n name: \"name\",\r\n category: \"category\",\r\n createdBy: \"createdBy\",\r\n creationDate: \"creationDate\",\r\n modificationDate: \"modificationDate\",\r\n extension: \"extension\",\r\n flags: \"flags\",\r\n hasImage: \"hasImage\",\r\n owner: \"owner\",\r\n pageCount: \"pageCount\",\r\n recordType: \"recordType\",\r\n recordTypeId: \"recordTypeId\",\r\n state: \"state\",\r\n version: \"version\",\r\n versionDate: \"versionDate\"\r\n});\r\n\r\n/**\r\n * Field Label\r\n * @type {Readonly<{extension: string, flags: string, hasImage: string, recordType: string, creationDate: string, modificationDate: string, version: string, versionDate: string, pageCount: string, owner: string, createdBy: string, name: string, id: string, category: string}>}\r\n */\r\nconst fieldLabel = Object.freeze({\r\n id: \"Id\",\r\n name: \"Name\",\r\n category: \"Category\",\r\n createdBy: \"Created By\",\r\n creationDate: \"Created On\",\r\n modificationDate: \"Modified On\",\r\n extension: \"Extension\",\r\n flags: \"Flags\",\r\n hasImage: \"Has Image\",\r\n owner: \"Owner\",\r\n pageCount: \"Pages\",\r\n recordType: \"Type\",\r\n recordTypeId: \"Type Id\",\r\n state: \"State\",\r\n version: \"Version\",\r\n versionDate: \"Version Date\"\r\n});\r\n\r\n/**\r\n * Map of Documents' Headers & Searchable Record Properties\r\n * @type {{headerValue: string, propName: string}[]}\r\n */\r\nconst mapHeadersSearchableRecordProps = Object.freeze([\r\n { headerValue: fieldName.recordType, propName: searchableProperty.typeId },\r\n { headerValue: fieldName.id, propName: searchableProperty.id },\r\n { headerValue: fieldName.name, propName: searchableProperty.name },\r\n { headerValue: fieldName.pageCount, propName: searchableProperty.pages },\r\n {\r\n headerValue: fieldName.creationDate,\r\n propName: searchableProperty.createdDateFrom\r\n },\r\n { headerValue: fieldName.createdBy, propName: searchableProperty.creator },\r\n {\r\n headerValue: fieldName.modificationDate,\r\n propName: searchableProperty.modifiedDateFrom\r\n },\r\n { headerValue: fieldName.owner, propName: searchableProperty.owner },\r\n { headerValue: fieldName.extension, propName: searchableProperty.extension },\r\n { headerValue: fieldName.version, propName: searchableProperty.version },\r\n { headerValue: fieldName.state, propName: searchableProperty.stateId }\r\n]);\r\n\r\n/**\r\n * DataTable Documents headers\r\n * @type {{text: string, value: string, visible: boolean}[]}\r\n */\r\nconst headers = Object.freeze([\r\n {\r\n text: fieldLabel.recordType,\r\n value: fieldName.recordType,\r\n visible: true\r\n },\r\n {\r\n text: fieldLabel.id,\r\n value: fieldName.id,\r\n visible: false\r\n },\r\n {\r\n text: fieldLabel.name,\r\n value: fieldName.name,\r\n visible: true\r\n },\r\n {\r\n text: fieldLabel.version,\r\n value: fieldName.version,\r\n visible: false\r\n },\r\n {\r\n text: fieldLabel.pageCount,\r\n value: fieldName.pageCount,\r\n visible: true\r\n },\r\n {\r\n text: fieldLabel.creationDate,\r\n value: fieldName.creationDate,\r\n visible: true\r\n },\r\n {\r\n text: fieldLabel.createdBy,\r\n value: fieldName.createdBy,\r\n visible: !isPublicAccess\r\n },\r\n {\r\n text: fieldLabel.modificationDate,\r\n value: fieldName.modificationDate,\r\n visible: false\r\n },\r\n {\r\n text: fieldLabel.owner,\r\n value: fieldName.owner,\r\n visible: !isPublicAccess\r\n },\r\n {\r\n text: fieldLabel.extension,\r\n value: fieldName.extension,\r\n visible: false\r\n },\r\n {\r\n text: fieldLabel.state,\r\n value: fieldName.state,\r\n visible: false\r\n },\r\n {\r\n text: headerText.actions,\r\n value: headerName.actions,\r\n sortable: false,\r\n align: \"end\",\r\n visible: true\r\n }\r\n]);\r\n\r\nconst fieldDownloadType = Object.freeze({\r\n asItIs: \"asItIs\",\r\n asPdf: \"asPdf\"\r\n});\r\n\r\nexport {\r\n fieldName,\r\n fieldLabel,\r\n fieldDownloadType,\r\n headers,\r\n mapHeadersSearchableRecordProps\r\n};\r\n","/**\r\n * DataTable actions header Name\r\n * @type {Readonly<{actions: string}>}\r\n */\r\nconst headerName = Object.freeze({\r\n actions: \"actions\"\r\n});\r\n\r\n/**\r\n * DataTable actions header Text\r\n * @type {Readonly<{actions: string}>}\r\n */\r\nconst headerText = Object.freeze({\r\n actions: \"Actions\"\r\n});\r\n\r\nexport { headerName, headerText };\r\n"],"sourceRoot":""}