{"version":3,"file":"1269.6444517af691eec5.js","sources":["./src/app/components/aws-account-create-edit/aws-account-create-edit.component.html","./src/app/components/aws-account-create-edit/aws-account-create-edit.component.ts","./src/app/components/azure-account-create-edit/azure-account-create-edit.component.ts","./src/app/components/azure-account-create-edit/azure-account-create-edit.component.html","./src/app/components/create-vcs-account-integration/create-vcs-account-integration.component.html","./src/app/components/create-vcs-account-integration/create-vcs-account-integration.component.ts","./src/app/components/gcp-account-create-edit/gcp-account-create-edit.component.ts","./src/app/components/gcp-account-create-edit/gcp-account-create-edit.component.html","./src/app/components/smart-table-cell-with-ellipsis/smart-table-cell-with-ellipsis.component.html","./src/app/components/smart-table-cell-with-ellipsis/smart-table-cell-with-ellipsis.component.ts","./src/app/components/smart-table-timeago-tooltip/smart-table-timeago-tooltip.component.html","./src/app/components/smart-table-timeago-tooltip/smart-table-timeago-tooltip.component.ts","./node_modules/lodash/_baseTrim.js","./node_modules/lodash/_trimmedEndIndex.js","./node_modules/lodash/debounce.js","./node_modules/lodash/now.js","./node_modules/lodash/toNumber.js","./node_modules/uuid/dist/esm-browser/rng.js","./node_modules/uuid/dist/esm-browser/regex.js","./node_modules/uuid/dist/esm-browser/validate.js","./node_modules/uuid/dist/esm-browser/stringify.js","./node_modules/uuid/dist/esm-browser/v4.js"],"sourceRoot":"webpack:///","sourcesContent":["\n \n
\n
\n \n
\n
\n \n \n
\n\n
\n \n 0\"\n fieldNote\n >\n To Obtain the IAM Role, run the\n \n CF template\n \n \n \n
\n
\n
\n \n \n \n \n Cancel\n \n \n
\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { v4 as uuid } from 'uuid';\nimport { AwsAccount } from 'src/app/cc-api/models';\nimport {\n UiAccountsControllerService,\n UiMetaControllerService,\n} from 'src/app/cc-api/services';\nimport { whiteSpaceInputPattern } from 'src/app/constants/inputPatterns';\nimport { FacetsPage } from 'src/app/facets/facets-page/facets-page.component';\nimport { CustomToastService } from 'src/app/pages/custom-toast/custom-toast.service';\nimport { getToastSubTexts } from 'src/app/utils/toast.utils';\nimport { triggerAnalyticsEvent } from 'src/app/utils/analytics/trigger-analytics';\n\n@Component({\n selector: 'app-aws-account-create-edit',\n templateUrl: './aws-account-create-edit.component.html',\n styleUrls: ['./aws-account-create-edit.component.scss'],\n})\nexport class AwsAccountCreateEditComponent extends FacetsPage {\n @Input() mode: 'create' | 'edit';\n @Input() passedRef: any;\n\n @Input() accountDetails: AwsAccount;\n\n @Output() afterSaveAccount: EventEmitter = new EventEmitter();\n\n awsAccountForm: UntypedFormGroup = this.formBuilder.group({\n name: ['', [Validators.required, Validators.pattern('^[a-z0-9-]+$')]],\n externalId: [\n uuid(),\n [Validators.required, Validators.pattern(whiteSpaceInputPattern)],\n ],\n role: [\n '',\n [Validators.required, Validators.pattern(whiteSpaceInputPattern)],\n ],\n });\n\n readonly ACCOUNTS_WRITE = 'ACCOUNTS_WRITE';\n saveAccountInProgress: boolean = false;\n verifyInProgress: boolean = false;\n accountId: string = '';\n fetchingAccountId: boolean = false;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private formBuilder: UntypedFormBuilder,\n private accountControllerService: UiAccountsControllerService,\n private customToast: CustomToastService,\n private uiMetaControllerService: UiMetaControllerService,\n ) {\n super(activatedRoute);\n }\n\n get name() {\n return this.awsAccountForm.get('name');\n }\n get externalId() {\n return this.awsAccountForm.get('externalId');\n }\n get role() {\n return this.awsAccountForm.get('role');\n }\n\n OnPageLoad() {\n this.getAccountId();\n if (this.mode === 'edit') {\n this.awsAccountForm.patchValue({\n name: this.accountDetails?.name,\n externalId: this.accountDetails?.externalId,\n role: this.accountDetails?.iamRole,\n });\n }\n }\n\n getRequestPayload() {\n let accountName = this.awsAccountForm?.controls?.name?.value?.trim() || '';\n let externalId =\n this.awsAccountForm?.controls?.externalId?.value?.trim() || '';\n let role = this.awsAccountForm?.controls?.role?.value?.trim() || '';\n let accountParams: AwsAccount = {\n name: accountName,\n externalId: externalId,\n iamRole: role,\n accountType: 'CLOUD',\n provider: 'AWS',\n };\n return accountParams;\n }\n\n createEditAwsAccount() {\n let requestPayload = this.getRequestPayload();\n this.saveAccountInProgress = true;\n\n let httpReq;\n if (this.mode === 'create') {\n httpReq =\n this.accountControllerService.createAwsAccountUsingPOST(requestPayload);\n } else if (this.mode === 'edit') {\n httpReq = this.accountControllerService.updateAwsAccountUsingPUT({\n id: this.accountDetails?.id,\n awsAccountRequest: {\n ...requestPayload,\n id: this.accountDetails?.id,\n createdBy: this.accountDetails?.createdBy,\n creationDate: this.accountDetails?.creationDate,\n },\n });\n }\n\n let { successSubText, failureSubText } = getToastSubTexts(this.mode);\n httpReq.subscribe(\n (data) => {\n this.customToast.success(\n `Aws account ${data?.name} ${successSubText} successfully`,\n );\n this.afterSaveAccount.emit(data);\n triggerAnalyticsEvent(\n `ORG_SETTINGS_ACCOUNT_MANAGEMENT_${this.mode?.toUpperCase()}_SUCCESSFUL`,\n {\n accountName: this.name?.value,\n },\n );\n this.passedRef.close();\n this.saveAccountInProgress = false;\n this.awsAccountForm.reset();\n },\n (err) => {\n this.saveAccountInProgress = false;\n this.customToast.error(\n err?.error?.message || `Failed to ${failureSubText} Aws account`,\n );\n triggerAnalyticsEvent(\n `ORG_SETTINGS_ACCOUNT_MANAGEMENT_${this.mode?.toUpperCase()}_ERROR`,\n );\n },\n );\n }\n\n verifyAccount() {\n triggerAnalyticsEvent(\n `ORG_SETTINGS_ACCOUNT_MANAGEMENT_${this.mode?.toUpperCase()}_VERIFY_ACCOUNT`,\n );\n this.verifyInProgress = true;\n const requestPayload = this.getRequestPayload();\n this.accountControllerService\n .validateAwsAccountUsingPOST(requestPayload)\n .subscribe(\n (data) => {\n this.verifyInProgress = false;\n this.customToast.success(`This is a verified account`);\n },\n (error) => {\n this.verifyInProgress = false;\n this.customToast.error(\n error?.error?.message || `Failed to verify account`,\n );\n },\n );\n }\n getUrl() {\n return (\n 'https://console.aws.amazon.com/cloudformation/home?region=ap-south-1#/stacks/create/review?stackName=facets-' +\n 'cluster-role¶m_ExternalId=' +\n this.externalId.value +\n '¶m_AccountId=' +\n this.accountId +\n '&templateURL=https://facets-cf-templates.s3.amazonaws.com/facets-othercluster-iam-policy.json'\n );\n }\n getAccountId() {\n this.fetchingAccountId = true;\n this.uiMetaControllerService.getCPAccountUsingGET().subscribe({\n next: (res) => {\n this.accountId = res?.accountId;\n this.fetchingAccountId = false;\n },\n error: (res) => {\n this.accountId = '';\n this.fetchingAccountId = false;\n },\n });\n }\n\n onClickHandleCancel(passedRef: any) {\n triggerAnalyticsEvent(\n `ORG_SETTINGS_ACCOUNT_MANAGEMENT_${this.mode?.toUpperCase()}_CANCEL`,\n );\n passedRef.close();\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { UiAccountsControllerService } from 'src/app/cc-api/services';\nimport { CustomToastService } from 'src/app/pages/custom-toast/custom-toast.service';\nimport { whiteSpaceInputPattern } from 'src/app/constants/inputPatterns';\nimport { AzureAccount } from 'src/app/cc-api/models';\nimport { getToastSubTexts } from 'src/app/utils/toast.utils';\nimport { FacetsPage } from 'src/app/facets/facets-page/facets-page.component';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { triggerAnalyticsEvent } from 'src/app/utils/analytics/trigger-analytics';\n\n@Component({\n selector: 'app-azure-account-create-edit',\n templateUrl: './azure-account-create-edit.component.html',\n styleUrls: ['./azure-account-create-edit.component.scss'],\n})\nexport class AzureAccountCreateEditComponent extends FacetsPage {\n @Input() mode: 'create' | 'edit' = 'create';\n @Input() passedRef: any;\n @Input() accountDetails: AzureAccount;\n\n @Output() afterSaveAccount: EventEmitter = new EventEmitter();\n azureAccountForm: UntypedFormGroup = this.formBuilder.group({\n name: ['', [Validators.required, Validators.pattern('^[a-z0-9-]+$')]],\n subscriptionId: [\n '',\n [Validators.required, Validators.pattern(whiteSpaceInputPattern)],\n ],\n tenantId: [\n '',\n [Validators.required, Validators.pattern(whiteSpaceInputPattern)],\n ],\n clientId: [\n '',\n [Validators.required, Validators.pattern(whiteSpaceInputPattern)],\n ],\n clientSecret: [\n '',\n [Validators.required, Validators.pattern(whiteSpaceInputPattern)],\n ],\n });\n\n readonly ACCOUNTS_WRITE = 'ACCOUNTS_WRITE';\n saveAccountInProgress: boolean = false;\n verifyInProgress: boolean = false;\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private formBuilder: UntypedFormBuilder,\n private accountControllerService: UiAccountsControllerService,\n private customToast: CustomToastService,\n ) {\n super(activatedRoute);\n }\n\n OnPageLoad(p: Params): void {\n if (this.mode === 'edit') {\n this.azureAccountForm.patchValue({\n name: this.accountDetails?.name,\n subscriptionId: this.accountDetails?.subscriptionId,\n tenantId: this.accountDetails?.tenantId,\n clientId: this.accountDetails?.clientId,\n clientSecret: this.accountDetails?.clientSecret,\n });\n }\n }\n\n get name() {\n return this.azureAccountForm.get('name');\n }\n get subscriptionId() {\n return this.azureAccountForm.get('subscriptionId');\n }\n get tenantId() {\n return this.azureAccountForm.get('tenantId');\n }\n get clientId() {\n return this.azureAccountForm.get('clientId');\n }\n get clientSecret() {\n return this.azureAccountForm.get('clientSecret');\n }\n\n getAzureAccountVariables() {\n let accountName =\n this.azureAccountForm?.controls?.name?.value?.trim() || '';\n let subscriptionId =\n this.azureAccountForm?.controls?.subscriptionId?.value?.trim() || '';\n let tenantId =\n this.azureAccountForm?.controls?.tenantId?.value?.trim() || '';\n let clientId =\n this.azureAccountForm?.controls?.clientId?.value?.trim() || '';\n let clientSecret =\n this.azureAccountForm?.controls?.clientSecret?.value?.trim() || '';\n return {\n accountName,\n subscriptionId,\n tenantId,\n clientId,\n clientSecret,\n };\n }\n\n getRequestPayload() {\n const { accountName, subscriptionId, tenantId, clientId, clientSecret } =\n this.getAzureAccountVariables();\n let accountParams: AzureAccount = {\n name: accountName,\n subscriptionId: subscriptionId,\n tenantId: tenantId,\n clientId: clientId,\n clientSecret: clientSecret,\n accountType: 'CLOUD',\n provider: 'AZURE',\n };\n\n return accountParams;\n }\n createEditAzureAccount() {\n let requestPayload = this.getRequestPayload();\n const isCreateMode = this.mode === 'create';\n this.saveAccountInProgress = true;\n\n let httpReq;\n if (isCreateMode) {\n httpReq =\n this.accountControllerService.createAzureAccountUsingPOST(\n requestPayload,\n );\n } else if (this.mode === 'edit') {\n httpReq = this.accountControllerService.updateAzureAccountUsingPUT({\n id: this.accountDetails?.id,\n azureAccountRequest: {\n ...requestPayload,\n id: this.accountDetails?.id,\n createdBy: this.accountDetails?.createdBy,\n creationDate: this.accountDetails?.creationDate,\n },\n });\n }\n\n let { successSubText, failureSubText } = getToastSubTexts(this.mode);\n httpReq.subscribe(\n (data) => {\n this.customToast.success(\n `Azure account ${data?.name} ${successSubText} successfully`,\n );\n this.afterSaveAccount.emit(data);\n triggerAnalyticsEvent(\n `ORG_SETTINGS_ACCOUNT_MANAGEMENT_${this.mode?.toUpperCase()}_SUCCESSFUL`,\n );\n this.passedRef.close();\n this.saveAccountInProgress = false;\n this.azureAccountForm.reset();\n },\n (err) => {\n this.saveAccountInProgress = false;\n this.customToast.error(\n err?.error?.message || ` Failed to ${failureSubText} Azure account`,\n );\n triggerAnalyticsEvent(\n `ORG_SETTINGS_ACCOUNT_MANAGEMENT_${this.mode?.toUpperCase()}_ERROR`,\n );\n },\n );\n }\n\n verifyAccount() {\n this.verifyInProgress = true;\n const requestPayload = this.getRequestPayload();\n this.accountControllerService\n .validateAzureAccountUsingPOST(requestPayload)\n .subscribe(\n (data) => {\n this.verifyInProgress = false;\n this.customToast.success(`This is a verified account`);\n triggerAnalyticsEvent(\n `ORG_SETTINGS_ACCOUNT_MANAGEMENT_VERIFY_ACCOUNT_SUCCESSFUL`,\n );\n },\n (error) => {\n this.verifyInProgress = false;\n this.customToast.error(\n error?.error?.message || `Failed to verify account`,\n );\n triggerAnalyticsEvent(\n `ORG_SETTINGS_ACCOUNT_MANAGEMENT_VERIFY_ACCOUNT_ERROR`,\n );\n },\n );\n }\n\n onClickHandleCancel(ref: any) {\n triggerAnalyticsEvent(\n `ORG_SETTINGS_ACCOUNT_MANAGEMENT_${this.mode?.toUpperCase()}_CANCEL`,\n );\n ref.close();\n }\n}\n","\n \n \n Create a\n \n service principal\n \n within Azure Active Directory with \"owner\" rights and whose authentication\n tokens can be used\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n \n \n Cancel\n \n \n
\n","\n \n

\n Step 1: Link your\n {{ vcsAccountType | titlecase }} Account which can be used while creating\n projects or launching the environments.\n

\n \n \n
\n

\n Step 2: Generate Personal Access Token.\n Copy and paste the generated Personal Access Token (PAT) here to connect\n your {{ vcsAccountType | titlecase }} account with Facets\n

\n
\n \n Generate Token\n \n
\n \n
\n \n \n \n \n {{ option === 'PERSONAL' ? 'Personal Account' : option }}\n \n \n
\n
\n \n \n
\n \n
\n \n \n \n \n {{ alertDescription?.length && !creationError ? 'Done' : 'Cancel' }}\n \n
\n \n \n Link using {{ account?.label }} App\n \n \n \n
\n","import {\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n ViewChild,\n} from '@angular/core';\nimport {\n UntypedFormBuilder,\n UntypedFormControl,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { triggerAnalyticsEvent } from 'src/app/utils/analytics/trigger-analytics';\nimport { UiAccountsControllerService } from 'src/app/cc-api/services';\nimport { FacetsPage } from 'src/app/facets/facets-page/facets-page.component';\nimport { NbPopoverDirective } from '@nebular/theme';\nimport { whiteSpaceInputPattern } from '../../constants/inputPatterns';\nimport { vcsAccountIcons } from './accounts-constants';\nimport { TokenExpiryService } from 'src/app/services/token-expiry.service';\nimport debounce from 'lodash/debounce';\n\n@Component({\n selector: 'app-create-vcs-account-integration',\n templateUrl: './create-vcs-account-integration.component.html',\n styleUrls: ['./create-vcs-account-integration.component.scss'],\n})\nexport class CreateVcsAccountIntegrationComponent extends FacetsPage {\n @Output() afterSaveAccount: EventEmitter = new EventEmitter();\n @Output() afterChangeIntegration: EventEmitter = new EventEmitter();\n @ViewChild(NbPopoverDirective) popover: NbPopoverDirective; //copy popover\n @Input() passedRef: any;\n @Input() vcsAccountType: any;\n @Input() allowCancel: boolean = true;\n vcsAccountIcons = vcsAccountIcons;\n accountForm: UntypedFormGroup = this.fb.group({\n accountName: [\n '',\n [Validators.required, Validators.pattern('^[a-z0-9-]+$')],\n ],\n hostedOn: ['github.com'],\n accessToken: [''],\n selectedOrgName: new UntypedFormControl(''),\n });\n readonly ACCOUNTS_WRITE = 'ACCOUNTS_WRITE';\n alertTitle: string;\n alertType: string;\n alertDescription: string;\n creatingVcsAccount: boolean = false;\n creationError: boolean = false;\n enableStepTwo: boolean = false;\n vcsAccounts = [\n { type: 'GITHUB', label: 'Git' },\n { type: 'GITLAB', label: 'GitLab' },\n { type: 'BITBUCKET', label: 'Bitbucket' },\n ];\n\n loadingOrgNames: boolean = false;\n orgNames: string[] = [];\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private accountControllerService: UiAccountsControllerService,\n private fb: UntypedFormBuilder,\n private tokenExpiryService: TokenExpiryService,\n ) {\n super(activatedRoute);\n }\n\n get accountName() {\n return this.accountForm.get('accountName');\n }\n\n get accessToken() {\n return this.accountForm.get('accessToken');\n }\n\n get hostedOn() {\n return this.accountForm.get('hostedOn');\n }\n\n get selectedOrgName() {\n return this.accountForm.get('selectedOrgName');\n }\n\n OnPageLoad(p: Params): void {\n this.alertDescription = '';\n this.enableStepTwo = false;\n this.creationError = false;\n if (this.vcsAccountType === 'GITHUB') {\n this.hostedOn.addValidators([Validators.required]);\n }\n if (this.vcsAccountType === 'GITLAB') {\n this.hostedOn.setValue('gitlab.com');\n }\n }\n\n /*\n * Clicking on Next button will have 2 conditions.\n 1. When step 2 is not shown to the user, then show step 2 with token generation instruction and input field\n 2. When step 2 is shown to the user, submit the account and show success or error message to the user\n\n * While saving the account input fields needs to be disabled and they should stay disabled when success message is shown\n */\n showNextStep() {\n if (!this.enableStepTwo) {\n this.enableStepTwo = true;\n this.accountName?.disable();\n this.hostedOn.disable();\n this.cleanHostedOn();\n this.accessToken.addValidators([\n Validators.required,\n Validators.pattern(whiteSpaceInputPattern),\n ]);\n triggerAnalyticsEvent(`ORG_SETTINGS_ACCOUNT_MANAGEMENT_ADDITION_NEXT`);\n } else {\n this.submitVcsAccount();\n }\n }\n\n submitVcsAccount() {\n this.creatingVcsAccount = true;\n this.creationError = false;\n this.alertDescription = '';\n this.alertTitle = '';\n this.accessToken?.disable();\n this.selectedOrgName?.disable();\n let accountName = this.accountName?.value?.trim() || '';\n let token = this.accessToken?.value?.trim() || '';\n let enterpriseHost = this.hostedOn?.value;\n let selectedOrgName = this.selectedOrgName?.value?.trim();\n let accountParams: any = {\n accessToken: token,\n name: accountName,\n accountType: 'VERSION_CONTROL',\n provider: this.vcsAccountType,\n orgName: selectedOrgName === 'PERSONAL' ? null : selectedOrgName,\n };\n let httpRequest = null;\n if (this.vcsAccountType === 'GITHUB') {\n accountParams.enterpriseHostName = enterpriseHost;\n httpRequest =\n this.accountControllerService.createGitHubAccountUsingPOST(\n accountParams,\n );\n } else if (this.vcsAccountType === 'GITLAB') {\n accountParams.enterpriseHostName = enterpriseHost;\n httpRequest =\n this.accountControllerService.createGitLabAccountUsingPOST(\n accountParams,\n );\n } else if (this.vcsAccountType === 'BITBUCKET') {\n httpRequest =\n this.accountControllerService.createBitBucketAccountUsingPOST(\n accountParams,\n );\n }\n httpRequest.subscribe(\n (account) => {\n this.creatingVcsAccount = false;\n this.onAccountCreateSuccess(account);\n triggerAnalyticsEvent(\n `ORG_SETTINGS_ACCOUNT_MANAGEMENT_ADDITION_SUCCESSFUL`,\n {\n accountName: this.accountName?.value,\n accountType: this.vcsAccountType,\n },\n );\n },\n (error) => {\n this.creatingVcsAccount = false;\n this.onAccountCreateFailure(error);\n triggerAnalyticsEvent(`ORG_SETTINGS_ACCOUNT_MANAGEMENT_ADDITION_ERROR`);\n },\n );\n }\n\n onClickHandleCancel(ref: any) {\n triggerAnalyticsEvent(`ORG_SETTINGS_ACCOUNT_MANAGEMENT_ADDITION_CANCEL`);\n ref.close();\n }\n\n async onAccountCreateSuccess(account) {\n this.alertType = 'success';\n this.alertTitle = `Success! Your ${account?.name} account is now linked with Facets Cloud`;\n this.alertDescription =\n \"You're all set to harness the full power of our platform.\";\n this.afterSaveAccount.emit(account);\n await this.tokenExpiryService.extractExpiringAndExpiredVCSAccounts();\n }\n\n onAccountCreateFailure(error) {\n this.resetInputFields();\n this.creationError = true;\n this.alertType = 'danger';\n this.alertTitle = `Account linking failed`;\n this.alertDescription =\n error?.error?.message ||\n 'Please re-enter the correct token and try again.';\n }\n\n get isDisabled() {\n if (this.vcsAccountType === 'GITHUB') {\n return !this.hostedOn?.value?.length || !this.accountName?.value?.length;\n } else if (this.vcsAccountType === 'GITLAB') {\n return !this.hostedOn?.value?.length || !this.accountName?.value?.length;\n }\n return false;\n }\n\n cleanHostedOn() {\n this.hostedOn.setValue(\n this.hostedOn?.value\n ?.trim()\n ?.replace(/^https?:\\/\\//, '')\n ?.replace(/\\/$/, '') || 'gitlab.com',\n );\n }\n\n generateTokenUrl() {\n triggerAnalyticsEvent(`ORG_SETTINGS_ACCOUNT_MANAGEMENT_GENERATE_TOKEN`, {\n accountType: this.vcsAccountType,\n });\n const tokenLinkMap = {\n GITHUB: `https://${this.hostedOn?.value}/settings/tokens/new?description=${this.accountName?.value}&scopes=repo,read:packages,read:org,workflow,read:user`,\n GITLAB: `https://${\n this.hostedOn?.value || 'gitlab.com'\n }/-/user_settings/personal_access_tokens?name=${\n this.accountName?.value\n }&scopes=api,read_user,read_registry,create_runner`,\n BITBUCKET:\n 'https://support.atlassian.com/bitbucket-cloud/docs/app-passwords/',\n };\n window.open(tokenLinkMap[this.vcsAccountType], '_blank');\n }\n\n onChangePAT = debounce((event) => {\n if (typeof event === 'string' && event?.length) {\n this.selectedOrgName.reset();\n this.orgNames = [];\n this.getOrgsBasedOnPAT();\n }\n }, 500);\n\n getOrgsBasedOnPAT() {\n this.loadingOrgNames = true;\n this.accountControllerService\n .getVCSOrganisationsUsingPOST({\n vcsType: this.vcsAccountType,\n accessToken: this.accessToken?.value,\n enterpriseHostName:\n this.hostedOn?.value?.trim() === 'github.com'\n ? null\n : this.hostedOn?.value,\n })\n .subscribe(\n (response) => {\n this.loadingOrgNames = false;\n this.orgNames = ['PERSONAL', ...response];\n this.selectedOrgName.setValue('PERSONAL');\n },\n () => {\n this.loadingOrgNames = false;\n },\n );\n }\n\n resetInputFields() {\n this.accountName.enable();\n this.hostedOn.enable();\n this.accessToken.enable();\n this.selectedOrgName.enable();\n }\n\n resetInputs() {\n this.resetInputFields();\n this.accessToken.clearValidators();\n this.accessToken.updateValueAndValidity();\n this.accessToken.markAsUntouched();\n\n this.selectedOrgName.clearValidators();\n this.selectedOrgName.updateValueAndValidity();\n this.selectedOrgName.markAsUntouched();\n\n this.enableStepTwo = false;\n this.alertDescription = '';\n this.alertTitle = '';\n this.creationError = false;\n }\n\n changeIntegrationMethod() {\n this.afterChangeIntegration.emit('APP');\n }\n}\n","import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport {\n UntypedFormBuilder,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { GcpAccount } from 'src/app/cc-api/models';\nimport { UiAccountsControllerService } from 'src/app/cc-api/services';\nimport { whiteSpaceInputPattern } from 'src/app/constants/inputPatterns';\nimport { FacetsPage } from 'src/app/facets/facets-page/facets-page.component';\nimport { CustomToastService } from 'src/app/pages/custom-toast/custom-toast.service';\nimport { triggerAnalyticsEvent } from 'src/app/utils/analytics/trigger-analytics';\nimport { getToastSubTexts } from 'src/app/utils/toast.utils';\n\n@Component({\n selector: 'app-gcp-account-create-edit',\n templateUrl: './gcp-account-create-edit.component.html',\n styleUrls: ['./gcp-account-create-edit.component.scss'],\n})\nexport class GcpAccountCreateEditComponent extends FacetsPage {\n @Input() mode: 'create' | 'edit' = 'create';\n @Input() passedRef: any;\n @Input() accountDetails: GcpAccount;\n @Output() afterSaveAccount: EventEmitter = new EventEmitter();\n\n saveAccountInProgress: boolean = false;\n verifyInProgress: boolean = false;\n gcpAccountForm: UntypedFormGroup = this.formBuilder.group({\n name: ['', [Validators.required, Validators.pattern('^[a-z0-9-]+$')]],\n serviceKey: [\n '',\n [Validators.required, Validators.pattern(whiteSpaceInputPattern)],\n ],\n projectId: [\n '',\n [Validators.required, Validators.pattern(whiteSpaceInputPattern)],\n ],\n });\n\n readonly ACCOUNTS_WRITE = 'ACCOUNTS_WRITE';\n\n constructor(\n private activatedRoute: ActivatedRoute,\n private formBuilder: UntypedFormBuilder,\n private accountControllerService: UiAccountsControllerService,\n private customToast: CustomToastService,\n ) {\n super(activatedRoute);\n }\n\n OnPageLoad(p: Params): void {\n if (this.mode === 'edit') {\n this.gcpAccountForm?.patchValue({\n name: this.accountDetails?.name,\n serviceKey: this.accountDetails?.serviceAccountKey,\n projectId: this.accountDetails?.project,\n });\n }\n }\n\n get name() {\n return this.gcpAccountForm?.get('name');\n }\n get serviceKey() {\n return this.gcpAccountForm?.get('serviceKey');\n }\n get projectId() {\n return this.gcpAccountForm?.get('projectId');\n }\n\n getRequestPayload() {\n let accountName = this.gcpAccountForm?.controls?.name?.value?.trim() || '';\n let serviceKey =\n this.gcpAccountForm?.controls?.serviceKey?.value?.trim() || '';\n let projectId =\n this.gcpAccountForm?.controls?.projectId?.value?.trim() || '';\n let accountParams: GcpAccount = {\n name: accountName,\n accountType: 'CLOUD',\n provider: 'GCP',\n serviceAccountKey: btoa(serviceKey),\n project: projectId,\n };\n return accountParams;\n }\n\n createEditGcpAccount() {\n let requestPayload = this.getRequestPayload();\n const isCreateMode = this.mode === 'create';\n this.saveAccountInProgress = true;\n\n let httpReq;\n if (isCreateMode) {\n httpReq =\n this.accountControllerService.createGcpAccountUsingPOST(requestPayload);\n } else if (this.mode === 'edit') {\n httpReq = this.accountControllerService.updateGcpAccountUsingPUT({\n id: this.accountDetails?.id,\n gcpAccountRequest: {\n ...requestPayload,\n id: this.accountDetails?.id,\n createdBy: this.accountDetails?.createdBy,\n creationDate: this.accountDetails?.creationDate,\n },\n });\n }\n\n let { successSubText, failureSubText } = getToastSubTexts(this.mode);\n httpReq.subscribe(\n (data) => {\n this.customToast.success(\n `GCP account ${data?.name} ${successSubText} successfully`,\n );\n this.afterSaveAccount.emit(data);\n triggerAnalyticsEvent(\n `ORG_SETTINGS_ACCOUNT_MANAGEMENT_${this.mode?.toUpperCase()}_SUCCESSFUL`,\n );\n this.passedRef.close();\n this.saveAccountInProgress = false;\n this.gcpAccountForm.reset();\n },\n (err) => {\n this.saveAccountInProgress = false;\n this.customToast.error(\n err?.error?.message || ` Failed to ${failureSubText} GCP account`,\n );\n triggerAnalyticsEvent(\n `ORG_SETTINGS_ACCOUNT_MANAGEMENT_${this.mode?.toUpperCase()}_ERROR`,\n );\n },\n );\n }\n\n verifyAccount() {\n triggerAnalyticsEvent(\n `ORG_SETTINGS_ACCOUNT_MANAGEMENT_${this.mode?.toUpperCase()}_VERIFY_ACCOUNT`,\n );\n this.verifyInProgress = true;\n const requestPayload = this.getRequestPayload();\n this.accountControllerService\n .validateGcpAccountUsingPOST(requestPayload)\n .subscribe(\n (data) => {\n this.verifyInProgress = false;\n this.customToast.success(`This is a verified account`);\n },\n (error) => {\n this.verifyInProgress = false;\n this.customToast.error(\n error?.error?.message || `Failed to verify account`,\n );\n },\n );\n }\n onClickHandleCancel(ref: any) {\n triggerAnalyticsEvent(\n `ORG_SETTINGS_MANAGEMENT_${this.mode?.toUpperCase()}_CANCEL`,\n );\n ref.close();\n }\n}\n","\n \n \n Create service account\n \n here\n \n with Owner permissions in the GCP project and create a new key for the\n service account and paste the contents below.\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n \n \n Cancel\n \n \n
\n","\n \n \n
\n \n {{ noDataMessage }}\n \n
\n
\n \n \n \n {{\n dataObject ? row?.name : row\n }}\n \n \n \n \n \n & {{ rowValue?.hide?.length }} more\n\n \n \n \n
\n\n\n \n
\n \n \n {{\n dataObject ? row?.name : row\n }}\n \n \n \n
\n \n
\n","import {\n Component,\n HostListener,\n Input,\n OnInit,\n Output,\n EventEmitter,\n} from '@angular/core';\nimport { ViewCell } from 'ng2-smart-table';\n@Component({\n selector: 'app-smart-table-cell-with-ellipsis',\n templateUrl: './smart-table-cell-with-ellipsis.component.html',\n styleUrls: ['./smart-table-cell-with-ellipsis.component.scss'],\n})\nexport class SmartTableCellWithEllipsisComponent implements ViewCell, OnInit {\n @Input() value: any; // Value which comes in from the parent component, needs to be parsed\n @Output() byLinkClick = new EventEmitter();\n @Output() byLinkClickRowDataEmit = new EventEmitter();\n rowData: any; // Data for row\n rowValue: { display: string[]; hide: string[] } = { display: [], hide: [] }; // Row value stores some values to display and others to hide\n decorate: boolean = false; // If decorate is true: items would go inside badge-pills\n isRowList: boolean = false;\n defaultDisplay: number = 2;\n truncateAfter: number = 15;\n status: string = 'primary'; //Primary will be set by default\n noDataMessage: string = 'N/A';\n showAsLink: boolean = false;\n extraData: {} = {};\n dataObject: boolean = false;\n url: string = '';\n allURLs: string[];\n linkUnderline: boolean = false;\n linkClass: string = '';\n removeTagTopSpacing: boolean = false;\n nonLinkClass: string = '';\n wrapContent: boolean = false;\n openDialog: boolean = false;\n\n // Parse the input value and initialize rowData and decorate flag\n ngOnInit() {\n try {\n let parsedValue = JSON.parse(this.value);\n this.decorate = parsedValue?.decorate;\n this.rowData = parsedValue?.data;\n this.noDataMessage = parsedValue?.noDataMessage || 'N/A';\n this.truncateAfter = parsedValue?.truncateAfter;\n if (parsedValue?.defaultDisplay) {\n this.defaultDisplay = parsedValue?.defaultDisplay;\n }\n if (parsedValue?.allURLs) {\n this.allURLs = parsedValue?.allURLs;\n }\n this.status = parsedValue?.status || 'primary';\n this.showAsLink = parsedValue?.showAsLink || false;\n this.extraData = parsedValue?.extraData || {};\n this.dataObject = parsedValue?.dataObject || false;\n this.isRowList = Array.isArray(this.rowData);\n this.isRowList\n ? this.buildRows(this.defaultDisplay)\n : this.buildSingleEntry(this.truncateAfter);\n this.linkUnderline = parsedValue?.linkUnderline || false;\n this.linkClass = parsedValue?.linkClass || '';\n this.removeTagTopSpacing = parsedValue?.removeTagTopSpacing;\n this.url = parsedValue?.url;\n this.nonLinkClass = parsedValue?.nonLinkClass || '';\n this.wrapContent = parsedValue?.wrapContent || false;\n this.openDialog = parsedValue?.openDialog || false;\n } catch (error) {}\n }\n\n // Puts first X entries in display and others in hidden\n // [Can add host listener in future and update defaultDisplay value with changing width of screen]\n buildRows(defaultDisplay) {\n for (let i = 0; i < this.rowData?.length; i++) {\n if (i < defaultDisplay) {\n if (\n !this.decorate &&\n i != defaultDisplay - 1 &&\n i != this.rowData?.length - 1\n ) {\n !this.dataObject ? (this.rowData[i] += ', ') : null;\n }\n this.rowValue.display.push(this.rowData[i]);\n } else {\n if (!this.decorate && i != this.rowData?.length - 1) {\n !this.dataObject ? (this.rowData[i] += ', ') : null;\n }\n this.rowValue.hide.push(this.rowData[i]);\n }\n }\n }\n\n buildSingleEntry(truncateAfter = 15) {\n this.rowValue.display = [\n (this.rowData as string)?.substring(0, truncateAfter),\n ];\n if (this.rowData?.length > truncateAfter) {\n this.rowValue.hide = [(this.rowData as string).substring(0)];\n } else {\n this.rowValue.hide = [''];\n }\n }\n\n navigateEvent(row) {\n this.byLinkClick.emit(row);\n let updatedValue = {\n ...JSON.parse(this.value),\n clickedItem: row,\n };\n this.byLinkClickRowDataEmit.emit(updatedValue);\n }\n\n @Output() byMoreClick = new EventEmitter();\n onMoreClick(event) {\n if (this.openDialog) {\n event.stopPropagation();\n this.byMoreClick.emit(this.extraData);\n }\n }\n}\n","
\n {{\n labelText | timeago\n }}\n {{ emptyStateLabelText || '-' }}\n
\n\n
\n
\n

\n \n {{ user }}\n \n \n \n

\n \n {{ labelText | timeago }}\n

\n
\n
\n","import { Component, Input, OnInit } from '@angular/core';\nimport { ActivatedRoute, Params } from '@angular/router';\nimport { FacetsPage } from 'src/app/facets/facets-page/facets-page.component';\nimport moment from 'moment/moment';\n\n@Component({\n selector: 'app-smart-table-timeago-tooltip',\n templateUrl: './smart-table-timeago-tooltip.component.html',\n styleUrls: ['./smart-table-timeago-tooltip.component.scss'],\n})\nexport class SmartTableTimeagoTooltipComponent extends FacetsPage {\n @Input() value: any; // Value which comes in from the parent component, needs to be parsed.\n labelText;\n tooltipText: Date = null;\n user: string;\n icon: string = 'person-outline';\n emptyStateLabelText;\n showBadge: boolean = false;\n badgeConfig: { text: string; color: string; background: string };\n constructor(activatedRoute: ActivatedRoute) {\n super(activatedRoute);\n }\n\n OnPageLoad(p: Params): void {\n try {\n const parsedValue = JSON.parse(this.value);\n this.labelText = parsedValue?.label;\n this.user = parsedValue?.user;\n this.emptyStateLabelText = parsedValue?.emptyStateLabelText;\n this.showBadge = parsedValue?.showBadge;\n this.badgeConfig = parsedValue?.badgeConfig;\n if (this.user == 'Deployer') {\n this.user = 'Bot';\n this.icon = 'headphones-outline';\n }\n this.tooltipText = new Date(this.labelText);\n } catch (error) {\n console.log('Error in SmartTableTimeagoTooltipComponent', error);\n }\n }\n}\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","var root = require('./_root');\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;"],"names":["i0","AwsAccountCreateEditComponent","FacetsPage","constructor","activatedRoute","formBuilder","accountControllerService","customToast","uiMetaControllerService","super","this","EventEmitter","group","name","Validators","externalId","uuid","whiteSpaceInputPattern","role","awsAccountForm","get","OnPageLoad","getAccountId","mode","patchValue","accountDetails","iamRole","getRequestPayload","controls","value","trim","accountType","provider","createEditAwsAccount","httpReq","requestPayload","saveAccountInProgress","createAwsAccountUsingPOST","updateAwsAccountUsingPUT","id","awsAccountRequest","createdBy","creationDate","successSubText","failureSubText","getToastSubTexts","subscribe","data","success","afterSaveAccount","emit","triggerAnalyticsEvent","toUpperCase","accountName","passedRef","close","reset","err","error","message","verifyAccount","verifyInProgress","validateAwsAccountUsingPOST","getUrl","accountId","fetchingAccountId","getCPAccountUsingGET","next","res","onClickHandleCancel","static","_angular_core__WEBPACK_IMPORTED_MODULE_4__","selectors","ctx","AzureAccountCreateEditComponent","subscriptionId","tenantId","clientId","clientSecret","p","azureAccountForm","getAzureAccountVariables","createEditAzureAccount","isCreateMode","createAzureAccountUsingPOST","updateAzureAccountUsingPUT","azureAccountRequest","validateAzureAccountUsingPOST","ref","_angular_core__WEBPACK_IMPORTED_MODULE_6__","CreateVcsAccountIntegrationComponent","fb","tokenExpiryService","vcsAccountIcons","hostedOn","accessToken","selectedOrgName","UntypedFormControl","type","label","debounce","event","length","orgNames","getOrgsBasedOnPAT","accountForm","alertDescription","enableStepTwo","creationError","vcsAccountType","addValidators","setValue","showNextStep","submitVcsAccount","disable","cleanHostedOn","creatingVcsAccount","alertTitle","token","enterpriseHost","accountParams","orgName","httpRequest","enterpriseHostName","createGitHubAccountUsingPOST","createGitLabAccountUsingPOST","createBitBucketAccountUsingPOST","account","onAccountCreateSuccess","onAccountCreateFailure","_this","alertType","extractExpiringAndExpiredVCSAccounts","resetInputFields","isDisabled","replace","generateTokenUrl","window","open","GITHUB","GITLAB","BITBUCKET","loadingOrgNames","getVCSOrganisationsUsingPOST","vcsType","response","enable","resetInputs","clearValidators","updateValueAndValidity","markAsUntouched","changeIntegrationMethod","afterChangeIntegration","_angular_core__WEBPACK_IMPORTED_MODULE_7__","NbPopoverDirective","GcpAccountCreateEditComponent","serviceKey","projectId","gcpAccountForm","serviceAccountKey","project","btoa","createEditGcpAccount","createGcpAccountUsingPOST","updateGcpAccountUsingPUT","gcpAccountRequest","validateGcpAccountUsingPOST","SmartTableCellWithEllipsisComponent","display","hide","ngOnInit","parsedValue","JSON","parse","decorate","rowData","noDataMessage","truncateAfter","defaultDisplay","allURLs","status","showAsLink","extraData","dataObject","isRowList","Array","isArray","buildRows","buildSingleEntry","linkUnderline","linkClass","removeTagTopSpacing","url","nonLinkClass","wrapContent","openDialog","i","rowValue","push","substring","navigateEvent","row","byLinkClick","updatedValue","clickedItem","byLinkClickRowDataEmit","onMoreClick","stopPropagation","byMoreClick","SmartTableTimeagoTooltipComponent","labelText","user","emptyStateLabelText","showBadge","badgeConfig","icon","tooltipText","Date","console","log","_angular_core__WEBPACK_IMPORTED_MODULE_0__","trimmedEndIndex","require","reTrimStart","module","exports","baseTrim","string","slice","reWhitespace","index","test","charAt","isObject","now","toNumber","nativeMax","Math","max","nativeMin","min","func","wait","options","lastArgs","lastThis","maxWait","result","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","TypeError","invokeFunc","time","args","thisArg","undefined","apply","shouldInvoke","timeSinceLastCall","timerExpired","trailingEdge","setTimeout","remainingWait","timeWaiting","debounced","isInvoking","arguments","leadingEdge","clearTimeout","cancel","flush","root","isSymbol","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","other","valueOf","isBinary","getRandomValues","rnds8","Uint8Array","rng","crypto","bind","msCrypto","Error","esm_browser_validate","validate","REGEX","byteToHex","toString","substr","esm_browser_v4","v4","buf","offset","rnds","random","stringify","arr","toLowerCase"],"mappings":";;2SAqDUA,YAIEA,6CACAA,gBAAyC,OACpCA,uBAAWA,UAElBA,8BAHKA,yCClCR,IAAMC,EAA8B,MAArC,MAAOA,UAAsCC,IA0BjDC,YACUC,EACAC,EACAC,EACAC,EACAC,GAERC,MAAML,GANEM,sBACAA,mBACAA,gCACAA,mBACAA,+BAzBAA,sBAAsC,IAAIC,MAEpDD,oBAAmCA,KAAKL,YAAYO,MAAM,CACxDC,KAAM,CAAC,GAAI,CAACC,cAAqBA,aAAmB,kBACpDC,WAAY,IACVC,OACA,CAACF,cAAqBA,aAAmBG,QAE3CC,KAAM,CACJ,GACA,CAACJ,cAAqBA,aAAmBG,UAIpCP,oBAAiB,iBAC1BA,4BAAiC,EACjCA,uBAA4B,EAC5BA,eAAoB,GACpBA,wBAA6B,CAU7B,CAEIG,WACF,OAAOH,KAAKS,eAAeC,IAAI,OACjC,CACIL,iBACF,OAAOL,KAAKS,eAAeC,IAAI,aACjC,CACIF,WACF,OAAOR,KAAKS,eAAeC,IAAI,OACjC,CAEAC,aACEX,KAAKY,eACa,SAAdZ,KAAKa,MACPb,KAAKS,eAAeK,WAAW,CAC7BX,KAAMH,KAAKe,gBAAgBZ,KAC3BE,WAAYL,KAAKe,gBAAgBV,WACjCG,KAAMR,KAAKe,gBAAgBC,SAGjC,CAEAC,oBAYE,MAPgC,CAC9Bd,KALgBH,KAAKS,gBAAgBS,UAAUf,MAAMgB,OAAOC,QAAU,GAMtEf,WAJAL,KAAKS,gBAAgBS,UAAUb,YAAYc,OAAOC,QAAU,GAK5DJ,QAJShB,KAAKS,gBAAgBS,UAAUV,MAAMW,OAAOC,QAAU,GAK/DC,YAAa,QACbC,SAAU,MAGd,CAEAC,uBACE,IAGIC,EAHAC,EAAiBzB,KAAKiB,oBAC1BjB,KAAK0B,uBAAwB,EAGX,WAAd1B,KAAKa,KACPW,EACExB,KAAKJ,yBAAyB+B,0BAA0BF,GACnC,SAAdzB,KAAKa,OACdW,EAAUxB,KAAKJ,yBAAyBgC,yBAAyB,CAC/DC,GAAI7B,KAAKe,gBAAgBc,GACzBC,kBAAmB,IACdL,EACHI,GAAI7B,KAAKe,gBAAgBc,GACzBE,UAAW/B,KAAKe,gBAAgBgB,UAChCC,aAAchC,KAAKe,gBAAgBiB,iBAKzC,IAAMC,iBAAgBC,mBAAc,EAAKC,KAAiBnC,KAAKa,MAC/DW,EAAQY,UACLC,IACCrC,KAAKH,YAAYyC,QACf,eAAeD,GAAMlC,QAAQ8B,kBAE/BjC,KAAKuC,iBAAiBC,KAAKH,IAAI,EAC/BI,KACE,mCAAmCzC,KAAKa,MAAM6B,2BAC9C,CACEC,YAAa3C,KAAKG,MAAMgB,QAG5BnB,KAAK4C,UAAUC,QACf7C,KAAK0B,uBAAwB,EAC7B1B,KAAKS,eAAeqC,OAAK,EAE1BC,IACC/C,KAAK0B,uBAAwB,EAC7B1B,KAAKH,YAAYmD,MACfD,GAAKC,OAAOC,SAAW,aAAaf,kBAA4B,EAElEO,KACE,mCAAmCzC,KAAKa,MAAM6B,sBAAqB,EAI3E,CAEAQ,iBACET,OACE,mCAAmCzC,KAAKa,MAAM6B,gCAEhD1C,KAAKmD,kBAAmB,EACxB,MAAM1B,EAAiBzB,KAAKiB,oBAC5BjB,KAAKJ,yBACFwD,4BAA4B3B,GAC5BW,UACEC,IACCrC,KAAKmD,kBAAmB,EACxBnD,KAAKH,YAAYyC,QAAQ,6BAA4B,EAEtDU,IACChD,KAAKmD,kBAAmB,EACxBnD,KAAKH,YAAYmD,MACfA,GAAOA,OAAOC,SAAW,2BAA0B,EAI7D,CACAI,SACE,MACE,6IAEArD,KAAKK,WAAWc,MAChB,oBACAnB,KAAKsD,UACL,+FAEJ,CACA1C,eACEZ,KAAKuD,mBAAoB,EACzBvD,KAAKF,wBAAwB0D,uBAAuBpB,UAAU,CAC5DqB,KAAOC,IACL1D,KAAKsD,UAAYI,GAAKJ,UACtBtD,KAAKuD,mBAAoB,GAE3BP,MAAQU,IACN1D,KAAKsD,UAAY,GACjBtD,KAAKuD,mBAAoB,IAG/B,CAEAI,oBAAoBf,IAClBH,OACE,mCAAmCzC,KAAKa,MAAM6B,wBAEhDE,EAAUC,OACZ,CAACe,kDA3KUrE,GAA6BsE,iGAA7BtE,EAA6BuE,8hDDxB1CxE,mBAAS,mBAATA,CAAS,WAATA,CAAS,WAIDA,qCAaFA,QACAA,iBACEA,qCAeFA,QAEAA,iBAA4B,+BAiBxBA,gCASFA,cAINA,6BAAiC,wBAQ7BA,kCAAWyE,wBAAsB,GAClCzE,QACDA,8BAOEA,kCAAWyE,iBAAe,GAE3BzE,QACDA,sBAIEA,gCAASyE,kCAA8B,GAEvCzE,qBACFA,mBA3FmBA,6CAIbA,8BAAiB,uBAAjBA,CAAiB,4BAejBA,8BAAiB,uBAAjBA,CAAiB,iCAAjBA,CAAiB,gEAkBjBA,8BAAiB,uBAAjBA,CAAiB,2BAAjBA,CAAiB,qGAedA,0HAcPA,4DAAiD,0BAAjDA,CAAiD,kCAAjDA,CAAiD,8DASjDA,yCAA0B,6BAA1BA,CAA0B,uICrDnBC,CAA8B,sMCJpC,IAAMyE,EAAgC,MAAvC,MAAOA,UAAwCxE,IA8BnDC,YACUC,EACAC,EACAC,EACAC,GAERE,MAAML,GALEM,sBACAA,mBACAA,gCACAA,mBAjCDA,UAA0B,SAIzBA,sBAAsC,IAAIC,MACpDD,sBAAqCA,KAAKL,YAAYO,MAAM,CAC1DC,KAAM,CAAC,GAAI,CAACC,cAAqBA,aAAmB,kBACpD6D,eAAgB,CACd,GACA,CAAC7D,cAAqBA,aAAmBG,QAE3C2D,SAAU,CACR,GACA,CAAC9D,cAAqBA,aAAmBG,QAE3C4D,SAAU,CACR,GACA,CAAC/D,cAAqBA,aAAmBG,QAE3C6D,aAAc,CACZ,GACA,CAAChE,cAAqBA,aAAmBG,UAIpCP,oBAAiB,iBAC1BA,4BAAiC,EACjCA,uBAA4B,CAS5B,CAEAW,WAAW0D,GACS,SAAdrE,KAAKa,MACPb,KAAKsE,iBAAiBxD,WAAW,CAC/BX,KAAMH,KAAKe,gBAAgBZ,KAC3B8D,eAAgBjE,KAAKe,gBAAgBkD,eACrCC,SAAUlE,KAAKe,gBAAgBmD,SAC/BC,SAAUnE,KAAKe,gBAAgBoD,SAC/BC,aAAcpE,KAAKe,gBAAgBqD,cAGzC,CAEIjE,WACF,OAAOH,KAAKsE,iBAAiB5D,IAAI,OACnC,CACIuD,qBACF,OAAOjE,KAAKsE,iBAAiB5D,IAAI,iBACnC,CACIwD,eACF,OAAOlE,KAAKsE,iBAAiB5D,IAAI,WACnC,CACIyD,eACF,OAAOnE,KAAKsE,iBAAiB5D,IAAI,WACnC,CACI0D,mBACF,OAAOpE,KAAKsE,iBAAiB5D,IAAI,eACnC,CAEA6D,2BAWE,MAAO,CACL5B,YAVA3C,KAAKsE,kBAAkBpD,UAAUf,MAAMgB,OAAOC,QAAU,GAWxD6C,eATAjE,KAAKsE,kBAAkBpD,UAAU+C,gBAAgB9C,OAAOC,QAAU,GAUlE8C,SARAlE,KAAKsE,kBAAkBpD,UAAUgD,UAAU/C,OAAOC,QAAU,GAS5D+C,SAPAnE,KAAKsE,kBAAkBpD,UAAUiD,UAAUhD,OAAOC,QAAU,GAQ5DgD,aANApE,KAAKsE,kBAAkBpD,UAAUkD,cAAcjD,OAAOC,QAAU,GAQpE,CAEAH,oBACE,MAAQ0B,cAAasB,iBAAgBC,WAAUC,WAAUC,gBACvDpE,KAAKuE,2BAWP,MAVkC,CAChCpE,KAAMwC,EACNsB,eAAgBA,EAChBC,SAAUA,EACVC,SAAUA,EACVC,aAAcA,EACd/C,YAAa,QACbC,SAAU,QAId,CACAkD,yBACE,IAAI/C,EAAiBzB,KAAKiB,oBAC1B,MAAMwD,EAA6B,WAAdzE,KAAKa,KAG1B,IAAIW,EAFJxB,KAAK0B,uBAAwB,EAGzB+C,EACFjD,EACExB,KAAKJ,yBAAyB8E,4BAC5BjD,GAEmB,SAAdzB,KAAKa,OACdW,EAAUxB,KAAKJ,yBAAyB+E,2BAA2B,CACjE9C,GAAI7B,KAAKe,gBAAgBc,GACzB+C,oBAAqB,IAChBnD,EACHI,GAAI7B,KAAKe,gBAAgBc,GACzBE,UAAW/B,KAAKe,gBAAgBgB,UAChCC,aAAchC,KAAKe,gBAAgBiB,iBAKzC,IAAMC,iBAAgBC,mBAAc,EAAKC,KAAiBnC,KAAKa,MAC/DW,EAAQY,UACLC,IACCrC,KAAKH,YAAYyC,QACf,iBAAiBD,GAAMlC,QAAQ8B,kBAEjCjC,KAAKuC,iBAAiBC,KAAKH,IAAI,EAC/BI,KACE,mCAAmCzC,KAAKa,MAAM6B,4BAEhD1C,KAAK4C,UAAUC,QACf7C,KAAK0B,uBAAwB,EAC7B1B,KAAKsE,iBAAiBxB,OAAK,EAE5BC,IACC/C,KAAK0B,uBAAwB,EAC7B1B,KAAKH,YAAYmD,MACfD,GAAKC,OAAOC,SAAW,cAAcf,oBAA8B,EAErEO,KACE,mCAAmCzC,KAAKa,MAAM6B,sBAAqB,EAI3E,CAEAQ,gBACElD,KAAKmD,kBAAmB,EACxB,MAAM1B,EAAiBzB,KAAKiB,oBAC5BjB,KAAKJ,yBACFiF,8BAA8BpD,GAC9BW,UACEC,IACCrC,KAAKmD,kBAAmB,EACxBnD,KAAKH,YAAYyC,QAAQ,+BAA4B,EACrDG,KACE,4DAA2D,EAG9DO,IACChD,KAAKmD,kBAAmB,EACxBnD,KAAKH,YAAYmD,MACfA,GAAOA,OAAOC,SAAW,6BAA0B,EAErDR,KACE,uDAAsD,EAIhE,CAEAkB,oBAAoBmB,IAClBrC,OACE,mCAAmCzC,KAAKa,MAAM6B,wBAEhDoC,EAAIjC,OACN,CAACe,kDArLUI,GAA+Be,qFAA/Bf,EAA+BF,o8ECpB5CxE,mBAAS,mBAATA,CAAS,2BAGHA,sBACAA,eAKEA,+BACFA,QACAA,2GAEFA,QACAA,kBAAmE,WAE/DA,qCAaFA,QACAA,kBACEA,sCAcFA,QACAA,kBACEA,sCAcFA,QACAA,kBACEA,sCAcFA,QACAA,kBACEA,uCAgBFA,YAGJA,8BAAiC,yBAQ7BA,kCAAWyE,0BAAwB,GACpCzE,QACDA,+BAOEA,kCAAWyE,iBAAe,GAE3BzE,QACDA,sBAIEA,gCAASyE,kCAA8B,GAEvCzE,qBACFA,mBA/GmBA,+CAIbA,8BAAiB,uBAAjBA,CAAiB,4BAejBA,8BAAiB,uBAAjBA,CAAiB,qCAAjBA,CAAiB,kDAgBjBA,8BAAiB,uBAAjBA,CAAiB,+BAAjBA,CAAiB,yCAgBjBA,8BAAiB,uBAAjBA,CAAiB,+BAAjBA,CAAiB,yCAgBjBA,8BAAiB,uBAAjBA,CAAiB,oCAmBrBA,4DAAiD,0BAAjDA,CAAiD,kCAAjDA,CAAiD,gEASjDA,yCAA0B,6BAA1BA,CAA0B,wIDzFnB0E,CAAgC,kREGzC1E,2HAgBEA,qLAdAA,0FAIC,uCAJDA,CAIC,uBAJDA,CAIC,0DAuEGA,wBACEA,SACFA,kCAF2CA,iBACzCA,sFAxBNA,kBACEA,oCAQAA,wBAcEA,8BAGFA,iCAxBEA,4FAGAA,8BAKAA,gDAA+B,qEAA/BA,CAA+B,8BAA/BA,CAA+B,6HAA/BA,CAA+B,kFAaDA,8EAzDpCA,eAA2B,MAA3BA,CAA2B,YAEEA,mBAAOA,QAAQA,8BAG1CA,QACAA,kBAAkB,eAQdA,yDAASA,2BAAkB,GAE3BA,4BACFA,UAEFA,sCAaEA,2DAAUA,uBAAmB,GAC9BA,QACDA,yBA4BFA,gCA5D4CA,sLAWtCA,wCAQFA,8BAAiB,uBAAjBA,CAAiB,mCAaUA,6FA6B/BA,uDAEEA,0BAAkB,qBAAlBA,CAAkB,2EAUlBA,8BAQEA,2DAAWA,uBAAc,GAC1BA,gCAPCA,6CAAyC,0BAAzCA,CAAyC,+BAAzCA,CAAyC,iGAS3CA,8BAMEA,2DAAWA,sBAAa,GACzBA,iDACDA,qBAQEA,yDAASA,yCAA8B,GAEvCA,SACFA,gCAREA,0GAOAA,uJAIFA,gBAOEA,0DAASA,kCAAyB,GAElCA,SACFA,0CADEA,sFAVJA,SACEA,sBAWFA,4CAVKA,+GC3HF,IAAM0F,EAAqC,MAA5C,MAAOA,UAA6CxF,IAiCxDC,YACUC,EACAE,EACAqF,EACAC,GAERnF,MAAML,GALEM,sBACAA,gCACAA,UACAA,0BApCAA,sBAAsC,IAAIC,MAC1CD,4BAA4C,IAAIC,MAIjDD,kBAAuB,EAChCA,qBAAkBmF,IAClBnF,iBAAgCA,KAAKiF,GAAG/E,MAAM,CAC5CyC,YAAa,CACX,GACA,CAACvC,cAAqBA,aAAmB,kBAE3CgF,SAAU,CAAC,cACXC,YAAa,CAAC,IACdC,gBAAiB,IAAIC,KAAmB,MAEjCvF,oBAAiB,iBAI1BA,yBAA8B,EAC9BA,oBAAyB,EACzBA,oBAAyB,EACzBA,iBAAc,CACZ,CAAEwF,KAAM,SAAUC,MAAO,OACzB,CAAED,KAAM,SAAUC,MAAO,UACzB,CAAED,KAAM,YAAaC,MAAO,cAG9BzF,sBAA2B,EAC3BA,cAAqB,GAkLrBA,iBAAc0F,IAAUC,IACD,iBAAVA,GAAsBA,GAAOC,SACtC5F,KAAKsF,gBAAgBxC,QACrB9C,KAAK6F,SAAW,GAChB7F,KAAK8F,oBAAiB,EAEvB,IA/KH,CAEInD,kBACF,OAAO3C,KAAK+F,YAAYrF,IAAI,cAC9B,CAEI2E,kBACF,OAAOrF,KAAK+F,YAAYrF,IAAI,cAC9B,CAEI0E,eACF,OAAOpF,KAAK+F,YAAYrF,IAAI,WAC9B,CAEI4E,sBACF,OAAOtF,KAAK+F,YAAYrF,IAAI,kBAC9B,CAEAC,WAAW0D,GACTrE,KAAKgG,iBAAmB,GACxBhG,KAAKiG,eAAgB,EACrBjG,KAAKkG,eAAgB,EACO,WAAxBlG,KAAKmG,gBACPnG,KAAKoF,SAASgB,cAAc,CAAChG,gBAEH,WAAxBJ,KAAKmG,gBACPnG,KAAKoF,SAASiB,SAAS,aAE3B,CASAC,eACOtG,KAAKiG,cAWRjG,KAAKuG,oBAVLvG,KAAKiG,eAAgB,EACrBjG,KAAK2C,aAAa6D,UAClBxG,KAAKoF,SAASoB,UACdxG,KAAKyG,gBACLzG,KAAKqF,YAAYe,cAAc,CAC7BhG,cACAA,aAAmBG,SACpB,EACDkC,KAAsB,iDAI1B,CAEA8D,mBACEvG,KAAK0G,oBAAqB,EAC1B1G,KAAKkG,eAAgB,EACrBlG,KAAKgG,iBAAmB,GACxBhG,KAAK2G,WAAa,GAClB3G,KAAKqF,aAAamB,UAClBxG,KAAKsF,iBAAiBkB,UACtB,IAAI7D,EAAc3C,KAAK2C,aAAaxB,OAAOC,QAAU,GACjDwF,EAAQ5G,KAAKqF,aAAalE,OAAOC,QAAU,GAC3CyF,EAAiB7G,KAAKoF,UAAUjE,MAChCmE,EAAkBtF,KAAKsF,iBAAiBnE,OAAOC,OAC/C0F,EAAqB,CACvBzB,YAAauB,EACbzG,KAAMwC,EACNtB,YAAa,kBACbC,SAAUtB,KAAKmG,eACfY,QAA6B,aAApBzB,EAAiC,KAAOA,GAE/C0B,EAAc,KACU,WAAxBhH,KAAKmG,gBACPW,EAAcG,mBAAqBJ,EACnCG,EACEhH,KAAKJ,yBAAyBsH,6BAC5BJ,IAE6B,WAAxB9G,KAAKmG,gBACdW,EAAcG,mBAAqBJ,EACnCG,EACEhH,KAAKJ,yBAAyBuH,6BAC5BL,IAE6B,cAAxB9G,KAAKmG,iBACda,EACEhH,KAAKJ,yBAAyBwH,gCAC5BN,IAGNE,EAAY5E,UACTiF,IACCrH,KAAK0G,oBAAqB,EAC1B1G,KAAKsH,uBAAuBD,IAAO,EACnC5E,KACE,sDACA,CACEE,YAAa3C,KAAK2C,aAAaxB,MAC/BE,YAAarB,KAAKmG,gBACnB,EAGJnD,IACChD,KAAK0G,oBAAqB,EAC1B1G,KAAKuH,uBAAuBvE,IAAK,EACjCP,KAAsB,iDAAgD,EAG5E,CAEAkB,oBAAoBmB,IAClBrC,OAAsB,mDACtBqC,EAAIjC,OACN,CAEMyE,uBAAuBD,GAAO,qCAClCG,EAAKC,UAAY,UACjBD,EAAKb,WAAa,iBAAiBU,GAASlH,+CAC5CqH,EAAKxB,iBACH,4DACFwB,EAAKjF,iBAAiBC,KAAK6E,SACrBG,EAAKtC,mBAAmBwC,sCAAuC,EANnC,EAOpC,CAEAH,uBAAuBvE,GACrBhD,KAAK2H,mBACL3H,KAAKkG,eAAgB,EACrBlG,KAAKyH,UAAY,SACjBzH,KAAK2G,WAAa,yBAClB3G,KAAKgG,iBACHhD,GAAOA,OAAOC,SACd,kDACJ,CAEI2E,iBACF,QAA4B,WAAxB5H,KAAKmG,gBAE0B,WAAxBnG,KAAKmG,gBADNnG,KAAKoF,UAAUjE,OAAOyE,QAAW5F,KAAK2C,aAAaxB,OAAOyE,OAKtE,CAEAa,gBACEzG,KAAKoF,SAASiB,SACZrG,KAAKoF,UAAUjE,OACXC,QACAyG,QAAQ,eAAgB,KACxBA,QAAQ,MAAO,KAAO,aAE9B,CAEAC,oBACErF,OAAsB,iDAAkD,CACtEpB,YAAarB,KAAKmG,iBAYpB4B,OAAOC,KAVc,CACnBC,OAAQ,WAAWjI,KAAKoF,UAAUjE,yCAAyCnB,KAAK2C,aAAaxB,8DAC7F+G,OAAQ,WACNlI,KAAKoF,UAAUjE,OAAS,4DAExBnB,KAAK2C,aAAaxB,yDAEpBgH,UACE,qEAEqBnI,KAAKmG,gBAAiB,SACjD,CAUAL,oBACE9F,KAAKoI,iBAAkB,EACvBpI,KAAKJ,yBACFyI,6BAA6B,CAC5BC,QAAStI,KAAKmG,eACdd,YAAarF,KAAKqF,aAAalE,MAC/B8F,mBACmC,eAAjCjH,KAAKoF,UAAUjE,OAAOC,OAClB,KACApB,KAAKoF,UAAUjE,QAEtBiB,UACEmG,IACCvI,KAAKoI,iBAAkB,EACvBpI,KAAK6F,SAAW,CAAC,cAAe0C,GAChCvI,KAAKsF,gBAAgBe,SAAS,WAAU,EAE1C,KACErG,KAAKoI,iBAAkB,GAG/B,CAEAT,mBACE3H,KAAK2C,YAAY6F,SACjBxI,KAAKoF,SAASoD,SACdxI,KAAKqF,YAAYmD,SACjBxI,KAAKsF,gBAAgBkD,QACvB,CAEAC,cACEzI,KAAK2H,mBACL3H,KAAKqF,YAAYqD,kBACjB1I,KAAKqF,YAAYsD,yBACjB3I,KAAKqF,YAAYuD,kBAEjB5I,KAAKsF,gBAAgBoD,kBACrB1I,KAAKsF,gBAAgBqD,yBACrB3I,KAAKsF,gBAAgBsD,kBAErB5I,KAAKiG,eAAgB,EACrBjG,KAAKgG,iBAAmB,GACxBhG,KAAK2G,WAAa,GAClB3G,KAAKkG,eAAgB,CACvB,CAEA2C,0BACE7I,KAAK8I,uBAAuBtG,KAAK,MACnC,CAACoB,kDAzQUoB,GAAoC+D,qFAApC/D,EAAoClB,wFAGpCkF,MAAkB,6rFDhC/B1J,mBAAS,mBAATA,CAAS,MAATA,CAAS,YAGsBA,mBAAOA,QAAQA,8BAG1CA,QACAA,+EAgBAA,6CAoBAA,yBA+DAA,wCAOFA,QACAA,6BAEC,UAEGA,oCAWAA,oCAQAA,2BAYFA,QACAA,kCAaFA,sBAhK4CA,gJAcxCA,0FAAuE,yIARvEA,qBAAiB,uBAAjBA,CAAiB,mCAehBA,0FAmBGA,uCAgEHA,kGAYEA,+FAWAA,+FAQAA,qCAY6BA,wPCzHzB0F,CAAqC,iNCT3C,IAAMiE,EAA8B,MAArC,MAAOA,UAAsCzJ,IAsBjDC,YACUC,EACAC,EACAC,EACAC,GAERE,MAAML,GALEM,sBACAA,mBACAA,gCACAA,mBAzBDA,UAA0B,SAGzBA,sBAAsC,IAAIC,MAEpDD,4BAAiC,EACjCA,uBAA4B,EAC5BA,oBAAmCA,KAAKL,YAAYO,MAAM,CACxDC,KAAM,CAAC,GAAI,CAACC,cAAqBA,aAAmB,kBACpD8I,WAAY,CACV,GACA,CAAC9I,cAAqBA,aAAmBG,QAE3C4I,UAAW,CACT,GACA,CAAC/I,cAAqBA,aAAmBG,UAIpCP,oBAAiB,gBAS1B,CAEAW,WAAW0D,GACS,SAAdrE,KAAKa,MACPb,KAAKoJ,gBAAgBtI,WAAW,CAC9BX,KAAMH,KAAKe,gBAAgBZ,KAC3B+I,WAAYlJ,KAAKe,gBAAgBsI,kBACjCF,UAAWnJ,KAAKe,gBAAgBuI,SAGtC,CAEInJ,WACF,OAAOH,KAAKoJ,gBAAgB1I,IAAI,OAClC,CACIwI,iBACF,OAAOlJ,KAAKoJ,gBAAgB1I,IAAI,aAClC,CACIyI,gBACF,OAAOnJ,KAAKoJ,gBAAgB1I,IAAI,YAClC,CAEAO,oBACE,IAAI0B,EAAc3C,KAAKoJ,gBAAgBlI,UAAUf,MAAMgB,OAAOC,QAAU,GACpE8H,EACFlJ,KAAKoJ,gBAAgBlI,UAAUgI,YAAY/H,OAAOC,QAAU,GAC1D+H,EACFnJ,KAAKoJ,gBAAgBlI,UAAUiI,WAAWhI,OAAOC,QAAU,GAQ7D,MAPgC,CAC9BjB,KAAMwC,EACNtB,YAAa,QACbC,SAAU,MACV+H,kBAAmBE,KAAKL,GACxBI,QAASH,EAGb,CAEAK,uBACE,IAAI/H,EAAiBzB,KAAKiB,oBAC1B,MAAMwD,EAA6B,WAAdzE,KAAKa,KAG1B,IAAIW,EAFJxB,KAAK0B,uBAAwB,EAGzB+C,EACFjD,EACExB,KAAKJ,yBAAyB6J,0BAA0BhI,GACnC,SAAdzB,KAAKa,OACdW,EAAUxB,KAAKJ,yBAAyB8J,yBAAyB,CAC/D7H,GAAI7B,KAAKe,gBAAgBc,GACzB8H,kBAAmB,IACdlI,EACHI,GAAI7B,KAAKe,gBAAgBc,GACzBE,UAAW/B,KAAKe,gBAAgBgB,UAChCC,aAAchC,KAAKe,gBAAgBiB,iBAKzC,IAAMC,iBAAgBC,mBAAc,EAAKC,KAAiBnC,KAAKa,MAC/DW,EAAQY,UACLC,IACCrC,KAAKH,YAAYyC,QACf,eAAeD,GAAMlC,QAAQ8B,kBAE/BjC,KAAKuC,iBAAiBC,KAAKH,IAAI,EAC/BI,KACE,mCAAmCzC,KAAKa,MAAM6B,4BAEhD1C,KAAK4C,UAAUC,QACf7C,KAAK0B,uBAAwB,EAC7B1B,KAAKoJ,eAAetG,OAAK,EAE1BC,IACC/C,KAAK0B,uBAAwB,EAC7B1B,KAAKH,YAAYmD,MACfD,GAAKC,OAAOC,SAAW,cAAcf,kBAA4B,EAEnEO,KACE,mCAAmCzC,KAAKa,MAAM6B,sBAAqB,EAI3E,CAEAQ,iBACET,OACE,mCAAmCzC,KAAKa,MAAM6B,gCAEhD1C,KAAKmD,kBAAmB,EACxB,MAAM1B,EAAiBzB,KAAKiB,oBAC5BjB,KAAKJ,yBACFgK,4BAA4BnI,GAC5BW,UACEC,IACCrC,KAAKmD,kBAAmB,EACxBnD,KAAKH,YAAYyC,QAAQ,6BAA4B,EAEtDU,IACChD,KAAKmD,kBAAmB,EACxBnD,KAAKH,YAAYmD,MACfA,GAAOA,OAAOC,SAAW,2BAA0B,EAI7D,CACAU,oBAAoBmB,IAClBrC,OACE,2BAA2BzC,KAAKa,MAAM6B,wBAExCoC,EAAIjC,OACN,CAACe,kDA5IUqF,GAA6BlE,qFAA7BkE,EAA6BnF,0qDCpB1CxE,mBAAS,mBAATA,CAAS,2BAGHA,oCACAA,eAKEA,kBACFA,QACAA,kIAEFA,QACAA,kBAAiE,WAE7DA,qCAaFA,QACAA,kBACEA,qCAcFA,QACAA,kBACEA,sCAcFA,YAGJA,6BAAiC,wBAQ7BA,kCAAWyE,wBAAsB,GAClCzE,QACDA,+BAOEA,kCAAWyE,iBAAe,GAE3BzE,QACDA,sBAIEA,gCAASyE,kCAA8B,GAEvCzE,qBACFA,mBA7EmBA,6CAIbA,8BAAiB,uBAAjBA,CAAiB,4BAejBA,8BAAiB,uBAAjBA,CAAiB,iCAAjBA,CAAiB,qCAgBjBA,8BAAiB,uBAAjBA,CAAiB,gCAAjBA,CAAiB,0CAiBrBA,4DAAiD,0BAAjDA,CAAiD,kCAAjDA,CAAiD,8DASjDA,yCAA0B,6BAA1BA,CAA0B,0IDvDnB2J,CAA8B,qKEfvC3J,SACEA,iBAAwC,UAEpCA,SACFA,UAEJA,8BALOA,gDAEDA,kEAkBFA,gBAAiDA,SAE/CA,kDAFIA,sBAA2CA,qLAGjDA,+FAEEA,2cAnBNA,SAEEA,mBAUEA,qEAASA,yBAAkB,GAE3BA,wBAGAA,8CAWFA,QACFA,wDA1BIA,gPAW8BA,qCAI3BA,mHA0BLA,oBAOEA,2DAASA,uBAAmB,GAE5BA,SAAmCA,iCAPnCA,mDAOAA,wHAGFA,yCA1BFA,qBAcEA,0BAYAA,sBAIFA,yCAtBEA,qBAWGA,0GASAA,2IA0BCA,gBAAiDA,SAE/CA,mDAFIA,sBAA2CA,uMAGjDA,gGAEEA,4eAdNA,SACEA,mBAMEA,sEAASA,yBAAkB,GAE3BA,wBAGAA,8CAgBFA,QACFA,+CA3BIA,gHAO8BA,qCAI3BA,8DAvBXA,sBAQC,YAEGA,gCA8BFA,gCA9BgCA,oKCzE7B,IAAMuK,EAAmC,MAA1C,MAAOA,EALbpK,cAOYO,iBAAc,IAAIC,MAClBD,4BAAyB,IAAIC,MAEvCD,cAAkD,CAAE8J,QAAS,GAAIC,KAAM,IACvE/J,eAAoB,EACpBA,gBAAqB,EACrBA,oBAAyB,EACzBA,mBAAwB,GACxBA,YAAiB,UACjBA,mBAAwB,MACxBA,iBAAsB,EACtBA,eAAgB,GAChBA,iBAAsB,EACtBA,SAAc,GAEdA,oBAAyB,EACzBA,eAAoB,GACpBA,0BAA+B,EAC/BA,kBAAuB,GACvBA,kBAAuB,EACvBA,iBAAsB,EA4EZA,iBAAc,IAAIC,MAzE5B+J,WACE,IACE,IAAIC,EAAcC,KAAKC,MAAMnK,KAAKmB,OAClCnB,KAAKoK,SAAWH,GAAaG,SAC7BpK,KAAKqK,QAAUJ,GAAa5H,KAC5BrC,KAAKsK,cAAgBL,GAAaK,eAAiB,MACnDtK,KAAKuK,cAAgBN,GAAaM,cAC9BN,GAAaO,iBACfxK,KAAKwK,eAAiBP,GAAaO,gBAEjCP,GAAaQ,UACfzK,KAAKyK,QAAUR,GAAaQ,SAE9BzK,KAAK0K,OAAST,GAAaS,QAAU,UACrC1K,KAAK2K,WAAaV,GAAaU,aAAc,EAC7C3K,KAAK4K,UAAYX,GAAaW,WAAa,GAC3C5K,KAAK6K,WAAaZ,GAAaY,aAAc,EAC7C7K,KAAK8K,UAAYC,MAAMC,QAAQhL,KAAKqK,SACpCrK,KAAK8K,UACD9K,KAAKiL,UAAUjL,KAAKwK,gBACpBxK,KAAKkL,iBAAiBlL,KAAKuK,eAC/BvK,KAAKmL,cAAgBlB,GAAakB,gBAAiB,EACnDnL,KAAKoL,UAAYnB,GAAamB,WAAa,GAC3CpL,KAAKqL,oBAAsBpB,GAAaoB,oBACxCrL,KAAKsL,IAAMrB,GAAaqB,IACxBtL,KAAKuL,aAAetB,GAAasB,cAAgB,GACjDvL,KAAKwL,YAAcvB,GAAauB,cAAe,EAC/CxL,KAAKyL,WAAaxB,GAAawB,aAAc,CAC/B,QAClB,CAIAR,UAAUT,GACR,QAASkB,EAAI,EAAGA,EAAI1L,KAAKqK,SAASzE,OAAQ8F,IACpCA,EAAIlB,IAEHxK,KAAKoK,UACNsB,GAAKlB,EAAiB,GACtBkB,GAAK1L,KAAKqK,SAASzE,OAAS,IAE3B5F,KAAK6K,aAAc7K,KAAKqK,QAAQqB,IAAM,OAEzC1L,KAAK2L,SAAS7B,QAAQ8B,KAAK5L,KAAKqK,QAAQqB,OAEnC1L,KAAKoK,UAAYsB,GAAK1L,KAAKqK,SAASzE,OAAS,IAC/C5F,KAAK6K,aAAc7K,KAAKqK,QAAQqB,IAAM,OAEzC1L,KAAK2L,SAAS5B,KAAK6B,KAAK5L,KAAKqK,QAAQqB,IAG3C,CAEAR,iBAAiBX,EAAgB,IAC/BvK,KAAK2L,SAAS7B,QAAU,CACrB9J,KAAKqK,SAAoBwB,UAAU,EAAGtB,IAGvCvK,KAAK2L,SAAS5B,KADZ/J,KAAKqK,SAASzE,OAAS2E,EACJ,CAAEvK,KAAKqK,QAAmBwB,UAAU,IAEpC,CAAC,GAE1B,CAEAC,cAAcC,GACZ/L,KAAKgM,YAAYxJ,KAAKuJ,GACtB,IAAIE,EAAe,IACd/B,KAAKC,MAAMnK,KAAKmB,OACnB+K,YAAaH,GAEf/L,KAAKmM,uBAAuB3J,KAAKyJ,EACnC,CAGAG,YAAYzG,GACN3F,KAAKyL,aACP9F,EAAM0G,kBACNrM,KAAKsM,YAAY9J,KAAKxC,KAAK4K,WAE/B,CAAChH,kDAxGUiG,EAAmC,sCAAnCA,EAAmC/F,kvCDdhDxE,SACEA,iBAIEA,gCAOAA,iCA8BAA,0BA+BFA,QACFA,QAEAA,iDA1EIA,gDAAwD,8CAGzCA,4DAOeA,6CAiC3BA,k/CC/BMuK,CAAmC,kJCb9CvK,kBAAsDA,4BAEpDA,+BAFsBA,iCAA8BA,iEAGtDA,gBAAyBA,SAAgCA,+BAAhCA,qEAJ3BA,eACEA,wBAGAA,wBACFA,8BAJSA,mCAGAA,8DAQHA,SACEA,sBAQFA,+BANIA,qEAAkC,+DAAlCA,CAAkC,wBADlCA,oFASNA,eAKEA,4BACFA,+BAJEA,iCAGAA,yEApBJA,eAAkB,SAEdA,qBACAA,SACAA,gCAUFA,QACAA,qBAOFA,8BApBaA,8BACTA,+BACeA,mCAYdA,oCCdA,IAAMiN,EAAkC,MAAzC,MAAOA,UAA0C/M,IASrDC,YAAYC,GACVK,MAAML,GAPRM,iBAAoB,KAEpBA,UAAe,iBAEfA,gBAAqB,CAIrB,CAEAW,WAAW0D,GACT,IACE,MAAM4F,EAAcC,KAAKC,MAAMnK,KAAKmB,OACpCnB,KAAKwM,UAAYvC,GAAaxE,MAC9BzF,KAAKyM,KAAOxC,GAAawC,KACzBzM,KAAK0M,oBAAsBzC,GAAayC,oBACxC1M,KAAK2M,UAAY1C,GAAa0C,UAC9B3M,KAAK4M,YAAc3C,GAAa2C,YACf,YAAb5M,KAAKyM,OACPzM,KAAKyM,KAAO,MACZzM,KAAK6M,KAAO,sBAEd7M,KAAK8M,YAAc,IAAIC,KAAK/M,KAAKwM,iBAC1BxJ,GACPgK,QAAQC,IAAI,6CAA8CjK,GAE9D,CAACY,kDA7BU2I,GAAiCW,kDAAjCX,EAAiCzI,0bDV9CxE,uBAOAA,iBACEA,uBAuBFA,eA/BMA,sBAQEA,oFCEKiN,CAAkC,qBCV/C,IAAIY,EAAkBC,EAAQ,OAG1BC,EAAc,OAelBC,EAAOC,QANP,SAASC,EAASC,GAChB,OAAOA,GACHA,EAAOC,MAAM,EAAGP,EAAgBM,GAAU,GAAG5F,QAAQwF,EAAa,GAExE,aCfA,IAAIM,EAAe,KAiBnBL,EAAOC,QAPP,SAASJ,EAAgBM,GAGvB,QAFIG,EAAQH,EAAO7H,OAEZgI,KAAWD,EAAaE,KAAKJ,EAAOK,OAAOF,MAClD,OAAOA,CACT,kBChBA,IAAIG,EAAWX,EAAQ,OACnBY,EAAMZ,EAAQ,OACda,EAAWb,EAAQ,OAMnBc,EAAYC,KAAKC,IACjBC,EAAYF,KAAKG,IAqLrBhB,EAAOC,QA7HP,SAAS7H,EAAS6I,EAAMC,EAAMC,GAC5B,IAAIC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACTC,GAAW,EAEf,GAAmB,mBAARZ,EACT,MAAM,IAAIa,UAzEQ,uBAmFpB,SAASC,EAAWC,GAClB,IAAIC,EAAOb,EACPc,EAAUb,EAEdD,SAAWC,OAAWc,EACtBT,EAAiBM,EACjBT,EAASN,EAAKmB,MAAMF,EAASD,EAE/B,CAqBA,SAASI,EAAaL,GACpB,IAAIM,EAAoBN,EAAOP,EAM/B,YAAyBU,IAAjBV,GAA+Ba,GAAqBpB,GACzDoB,EAAoB,GAAOV,GANJI,EAAON,GAM8BJ,CACjE,CAEA,SAASiB,IACP,IAAIP,EAAOtB,IACX,GAAI2B,EAAaL,GACf,OAAOQ,EAAaR,GAGtBR,EAAUiB,WAAWF,EA3BvB,SAASG,EAAcV,GACrB,IAEIW,EAAczB,GAFMc,EAAOP,GAI/B,OAAOG,EACHb,EAAU4B,EAAarB,GAJDU,EAAON,IAK7BiB,CACN,CAmBqCD,CAAcV,GACnD,CAEA,SAASQ,EAAaR,GAKpB,OAJAR,OAAUW,EAINN,GAAYT,EACPW,EAAWC,IAEpBZ,EAAWC,OAAWc,EACfZ,EACT,CAcA,SAASqB,IACP,IAAIZ,EAAOtB,IACPmC,EAAaR,EAAaL,GAM9B,GAJAZ,EAAW0B,UACXzB,EAAW3O,KACX+O,EAAeO,EAEXa,EAAY,CACd,QAAgBV,IAAZX,EACF,OAzEN,SAASuB,EAAYf,GAEnBN,SAAiBM,EAEjBR,EAAUiB,WAAWF,EAAcrB,GAE5BS,EAAUI,EAAWC,GAAQT,CACtC,CAkEawB,CAAYtB,GAErB,GAAIG,EAEFoB,oBAAaxB,GACbA,EAAUiB,WAAWF,EAAcrB,GAC5Ba,EAAWN,EAAY,CAGlC,YAAgBU,IAAZX,IACFA,EAAUiB,WAAWF,EAAcrB,IAE9BK,CACT,CACAqB,OAzGA1B,EAAOP,EAASO,IAAS,EACrBT,EAASU,KACXQ,IAAYR,EAAQQ,QAEpBL,GADAM,EAAS,YAAaT,GACHP,EAAUD,EAASQ,EAAQG,UAAY,EAAGJ,GAAQI,EACrEO,EAAW,aAAcV,IAAYA,EAAQU,SAAWA,GAoG1De,EAAUK,OApCV,SAASA,SACSd,IAAZX,GACFwB,aAAaxB,GAEfE,EAAiB,EACjBN,EAAWK,EAAeJ,EAAWG,OAAUW,CACjD,EA+BAS,EAAUM,MA7BV,SAASA,IACP,YAAmBf,IAAZX,EAAwBD,EAASiB,EAAa9B,IACvD,EA4BOkC,CACT,mBC5LA,IAAIO,EAAOrD,EAAQ,OAsBnBE,EAAOC,QAJG,WACR,OAAOkD,EAAK1D,KAAKiB,KACnB,mBCpBA,IAAIR,EAAWJ,EAAQ,MACnBW,EAAWX,EAAQ,OACnBsD,EAAWtD,EAAQ,OAMnBuD,EAAa,qBAGbC,EAAa,aAGbC,EAAY,cAGZC,EAAeC,SA8CnBzD,EAAOC,QArBP,SAASU,EAAS9M,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIuP,EAASvP,GACX,OA1CM,IA4CR,GAAI4M,EAAS5M,GAAQ,CACnB,IAAI6P,EAAgC,mBAAjB7P,EAAM8P,QAAwB9P,EAAM8P,UAAY9P,EACnEA,EAAQ4M,EAASiD,GAAUA,EAAQ,GAAMA,EAE3C,GAAoB,iBAAT7P,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQqM,EAASrM,GACjB,IAAI+P,EAAWN,EAAW/C,KAAK1M,GAC/B,OAAQ+P,GAAYL,EAAUhD,KAAK1M,GAC/B2P,EAAa3P,EAAMuM,MAAM,GAAIwD,EAAW,EAAI,GAC3CP,EAAW9C,KAAK1M,GAvDb,KAuD6BA,CACvC,iDC1DA,IAAIgQ,EACAC,EAAQ,IAAIC,WAAW,IACZ,SAASC,IAEtB,IAAKH,KAGHA,SAAyBI,OAAW,KAAeA,OAAOJ,iBAAmBI,OAAOJ,gBAAgBK,KAAKD,gBAAkBE,SAAa,KAAmD,mBAA7BA,SAASN,iBAAkCM,SAASN,gBAAgBK,KAAKC,WAGrO,MAAM,IAAIC,MAAM,4GAIpB,OAAOP,EAAgBC,EACzB,CClBA,QAAe,sHCMfO,EAJA,SAASC,EAAStR,GAChB,MAAuB,iBAATA,GAAqBuR,OAAWvR,EAChD,ECIA,QAFIwR,EAAY,GAEPpG,EAAI,EAAGA,EAAI,MAAOA,EACzBoG,EAAUlG,MAAMF,EAAI,KAAOqG,SAAS,IAAIC,OAAO,IAoBjD,MCNAC,EApBA,SAASC,EAAGzD,EAAS0D,EAAKC,GAExB,IAAIC,GADJ5D,EAAUA,GAAW,CAAC,GACH6D,SAAW7D,EAAQ6C,KAAOA,KAK7C,GAHAe,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvBF,EAAK,CACPC,EAASA,GAAU,EAEnB,QAAS1G,EAAI,EAAGA,EAAI,KAAMA,EACxByG,EAAIC,EAAS1G,GAAK2G,EAAK3G,GAGzB,OAAOyG,EAGT,ODRF,SAASI,EAAUC,GACjB,IAAIJ,EAAShC,UAAUxK,OAAS,QAAsB6J,IAAjBW,UAAU,GAAmBA,UAAU,GAAK,EAG7E9P,GAAQwR,EAAUU,EAAIJ,EAAS,IAAMN,EAAUU,EAAIJ,EAAS,IAAMN,EAAUU,EAAIJ,EAAS,IAAMN,EAAUU,EAAIJ,EAAS,IAAM,IAAMN,EAAUU,EAAIJ,EAAS,IAAMN,EAAUU,EAAIJ,EAAS,IAAM,IAAMN,EAAUU,EAAIJ,EAAS,IAAMN,EAAUU,EAAIJ,EAAS,IAAM,IAAMN,EAAUU,EAAIJ,EAAS,IAAMN,EAAUU,EAAIJ,EAAS,IAAM,IAAMN,EAAUU,EAAIJ,EAAS,KAAON,EAAUU,EAAIJ,EAAS,KAAON,EAAUU,EAAIJ,EAAS,KAAON,EAAUU,EAAIJ,EAAS,KAAON,EAAUU,EAAIJ,EAAS,KAAON,EAAUU,EAAIJ,EAAS,MAAMK,cAMzf,IAAKb,EAAStR,GACZ,MAAM8O,UAAU,+BAGlB,OAAO9O,CACT,CCPSiS,CAAUF,EACnB","debug_id":"604a81cb-ba29-50b8-a966-2f8bee080b9c"}